]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - ModuleInstall/PackageManager/tpls/PackageManagerScripts.tpl
Release 6.1.4
[Github/sugarcrm.git] / ModuleInstall / PackageManager / tpls / PackageManagerScripts.tpl
1 {*
2 /*********************************************************************************
3  * SugarCRM is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
5  * 
6  * This program is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  * 
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
16  * details.
17  * 
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  * 
23  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25  * 
26  * The interactive user interfaces in modified source and object code versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  * 
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the "Powered by
32  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33  * technical reasons, the Appropriate Legal Notices must display the words
34  * "Powered by SugarCRM".
35  ********************************************************************************/
36
37 *}
38 {literal}
39 <script type="text/javascript" src="include/javascript/sugar_grp_yui_widgets.js"></script>
40 <script>
41  /*
42         *  a reference to an instance of PackageManagerGrid
43         */
44         var _pmg;
45
46 if(typeof PackageManager == 'undefined') {
47         PackageManager = function() {
48                 var MAX_HEIGHT = 300;
49         var MIN_HEIGHT = 0;
50         var _treeHeight;
51         var _listHeight;
52         var _attributes = {
53                         height: { to: MAX_HEIGHT }
54             };
55         var _anim;
56         var keys = [ "local_upload","server_upload"];
57         var tabPreviousKey = '';
58         /*
59         *  Maintain an array to hold which packages we would like to download
60         */
61         var _packages;
62         /*
63         *       Keep track of the current number of packages that have successfully
64         *       downloaded
65         */
66                 var _numDownloadsComplete = 0;
67                 /*
68                 *       The number of downloads we have to retrieve
69                 */
70                 var _numPackagesToDownload = 0;
71         var _loginPanel;
72         var _tabs;
73         var _loadingBar;
74
75             return {
76                 search: function() {
77                         PackageManager.showWaiting();
78                         var searchTerm = document.getElementById('search_term').value;
79                         postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=performBasicSearch&search_term=' + searchTerm;
80                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
81                                                                   {success: PackageManager.completeSearch, failure: PackageManager.completeSearch}, postData);
82                 },
83                 initWorkingDiv : function(){
84                         statusDiv = document.getElementById('workingStatusDiv');
85                                 statusDiv.className = 'dataLabel';
86                                 statusDiv.style.position = 'absolute';
87                                 var fileview = document.getElementById('treeview');
88                                 var top = fileview.offsetTop;
89                                 var height = fileview.offsetHeight;
90                                 var left = fileview.offsetLeft;
91                                 var width = fileview.offsetWidth;
92                                 statusDiv.style.top = (top+(height/2));
93                                 statusDiv.style.left = (left+(width/2));
94                 },
95                 initDocumentationDiv : function(){
96                         documentationDiv = document.createElement('div');
97                                 //documentationDiv.className = 'dataLabel';
98                                 //documentationDiv.style.background = '#ffffff';
99                                 documentationDiv.style.position = 'absolute';
100                                 var fileview = document.getElementById('catview');
101                                 var top = fileview.offsetTop;
102                                 var height = fileview.offsetHeight;
103                                 var left = fileview.offsetLeft;
104                                 var width = fileview.offsetWidth;
105                                 documentationDiv.style.top = (top+(height/2));
106                                 documentationDiv.style.left = (left+(width/2));
107                                 documentationDiv.id = 'documentation-div';
108                                 documentationDiv.style.display = 'block';
109                                 formDiv = document.createElement('form');
110                                 documentationDiv.appendChild(formDiv);
111                                 document.body.appendChild(documentationDiv);
112                 },
113                 initPMG: function(){
114
115
116
117                         //PackageManager.showLoginDialog();
118                          {/literal}{if $module_load == 'true'}{literal}
119                          PackageManager.initTabs();
120                          _pmg = new PackageManagerGrid();
121                          _pmg.renderAll();
122                         //PackageManager.initWorkingDiv();
123                         //PackageManager.initDocumentationDiv();
124                         {/literal}{elseif $IS_ALIVE == 'true'}{literal}
125                                                                                         _loadingBar =
126                                                         new YAHOO.widget.Panel("wait",
127                                                                                                                         { width:"240px",
128                                                                                                                           fixedcenter:true,
129                                                                                                                           close:false,
130                                                                                                                           draggable:false,
131                                                                                                                           modal:true,
132                                                                                                                           visible:false,
133                                                                                                                           effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.5}
134                                                                                                                         }
135                                                                                                                 );
136
137                                         _loadingBar.setHeader("{/literal}{$MOD.SEARCHING_UPDATES}{literal}");
138                                         _loadingBar.setBody("<img src=\"include/javascript/yui/assets/rel_interstitial_loading.gif\"/>");
139                                         _loadingBar.render(document.body);
140                                         _loadingBar.show();
141                                 _pmg = new PackageManagerGrid();
142                                 PackageManager.refreshGrid();
143                                 _pmg.renderAll();
144                          {/literal}{/if}{literal}
145                         //PackageManager.initLicenseDiv();
146                         //PackageManager.initModuleStaging();
147
148                         var tabView = new YAHOO.widget.TabView('demo');
149                                 PackageManager.checkForUpdates();
150                 },
151                 download : function(){
152                         if(confirm('{/literal}{$MOD.DOWNLOAD_QUESTION}{literal}')){
153
154                                 _numDownloadsComplete = 0;
155                                 _numPackagesToDownload = 0;
156                                 var tree = YAHOO.widget.TreeView.getTree('treeview');
157                                 var nodes = tree.getNodesByProperty('isSelected', true);
158
159                                 //var nodes = YAHOO.widget.TreeView.getNode(treeid, index);
160                                 if(nodes){
161                                         PackageManager.showWaiting();
162                                                                                                 _loadingBar =
163                                                         new YAHOO.widget.Panel("wait",
164                                                                                                                         { width:"240px",
165                                                                                                                           fixedcenter:true,
166                                                                                                                           close:false,
167                                                                                                                           draggable:false,
168                                                                                                                           modal:true,
169                                                                                                                           visible:false,
170                                                                                                                           effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.5}
171                                                                                                                         }
172                                                                                                                 );
173
174                                         _loadingBar.setHeader("{/literal}{$MOD.DOWNLOADING}{literal}");
175                                         _loadingBar.setBody("<img src=\"include/javascript/yui/assets/rel_interstitial_loading.gif\"/>");
176                                         _loadingBar.render(document.body);
177                                         _loadingBar.show();
178                                         //_numPackagesToDownload = nodes.length;
179                                         var count = nodes.length;
180                                         for(j = 0; j < count; j++){
181                                                         if(nodes[j].type == 'release'){
182                                                                 _numPackagesToDownload++;
183                                                         }
184                                                 }
185                                         _loadingBar.setHeader("{/literal}{$MOD.DL_PACKAGES_DOWNLOADING}{literal} "+_numPackagesToDownload+" {/literal}{$MOD.DL_PACKAGES_PACKAGES}{literal}");
186
187
188                                         for (i = 0; i < count; i++){
189                                                         var release_id = -1;
190                                                 var package_id = -1;
191                                                         var category_id = -1;
192
193                                                         if(nodes[i].type == 'package'){
194                                                                 var package_id = nodes[i].data.id;
195                                                                 var category_id = nodes[i].category_id;
196                                                         }else if(nodes[i].type == 'release'){
197                                                                 var release_id = nodes[i].data.id;
198                                                                 var package_id = nodes[i].package_id;
199                                                                 var category_id = nodes[i].category_id;
200                                                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=download&release_id=' + release_id + '&package_id=' + package_id + '&category_id=' + category_id;
201                                                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
202                                                                         {success: PackageManager.downloadComplete, failure: PackageManager.downloadComplete}, postData);
203                                                         }
204                                                 }
205                                         }//fi
206                         }
207                 },
208                 downloadComplete : function(data){
209
210                 PackageManager.hideWaiting();
211                         eval(data.responseText);
212                         if(typeof result != 'undefined') {
213                                 _numDownloadsComplete++;
214                                         _loadingBar.setHeader("{/literal}{$MOD.DL_PACKAGES_DOWNLOADING}{literal} "+_numDownloadsComplete+" {/literal}{$MOD.DL_PACKAGES_OF}{literal} "+_numPackagesToDownload+ " {/literal}{$MOD.DL_PACKAGES_PACKAGES}{literal}");
215                                 if(_numPackagesToDownload == _numDownloadsComplete){
216                                                 _loadingBar.hide();
217                                         if(!{/literal}{$INSTALLATION}{literal}){
218                                                 PackageManager.getPackagesInStaging();
219                                         }else{
220                                                 document.installForm.run.value = '';
221                                                 document.installForm.mode.value = 'noop';
222                                                 document.installForm.submit();
223                                         }
224                                 }
225                                 }
226
227                 },
228                 getPackagesInStaging : function(){
229                         postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=getPackagesInStaging';
230                                                         var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
231                                                         {success: PackageManager.populateGrid, failure: PackageManager.populateGrid}, postData);
232                 },
233                 buildListView : function(result, showDownloadButton){
234                         var result_div = document.getElementById('search_results_div');
235                                 display = "<table class='list view' width='100%'  cellpadding='0' cellspacing='0' width='100%' border='0'>";
236                         display += "<tr><th align=left class='listViewThLinkS1'>{/literal}{$MOD.LBL_ML_NAME}{literal}</th><th align=left class='listViewThLinkS1'>{/literal}{$MOD.LBL_ML_TYPE}{literal}</th><th align=left class='listViewThLinkS1'>{/literal}{$MOD.LBL_ML_VERSION}{literal}</th><th align=left class='listViewThLinkS1'>{/literal}{$MOD.LBL_ML_PUBLISHED}{literal}</th><th class='listViewThLinkS1'>{/literal}{$MOD.LBL_ML_DESCRIPTION}{literal}</th><th class='listViewThLinkS1'>{/literal}{$MOD.LBL_ML_ACTION}{literal}</th></tr>";
237                         for (var x = 0; x < result['packages'].length; x++)
238                                 {
239                                         var class_css = "oddListRowS1";
240                         if((x % 2) == 0){
241                         class_css = "evenListRowS1";
242                         }
243                                         install_link = '';
244                                         if(showDownloadButton){
245                                 install_link += "<input type=submit class='button' name=\"btn_mode\" onclick=\"this.form.mode.value='Install';this.form.package_id.value="+result['packages'][x]['id']+";this.form.submit();\" value=\"{/literal}{$MOD.LBL_UW_BTN_DOWNLOAD}{literal}\" />";
246                         }
247                         display += "<tr class=\""+class_css+"\"><td nowrap=\"nowrap\">"+result['packages'][x]['name']+"</td><td nowrap=\"nowrap\">"+result['packages'][x]['type']+"</td><td nowrap=\"nowrap\">"+result['packages'][x]['version']+"</td><td nowrap=\"nowrap\">"+result['packages'][x]['date_published']+"</td><td nowrap=\"nowrap\">"+result['packages'][x]['description']+"</td><td nowrap=\"nowrap\">"+install_link+"</td></tr>";
248                                 }//rof
249                                 display += "</table>";
250                                 return display;
251                 },
252                 showStatusMessages: function(message){
253                         if(message != '')
254                                 ajaxStatus.flashStatus(message, 5000);
255                 },
256                 populateGrid : function(data){
257                     eval(data.responseText);
258                     if(typeof result != 'undefined') {
259                                 //uncheck all treenodes
260                                 var tree = YAHOO.widget.TreeView.getTree('treeview');
261                                 var root = tree.getRoot();
262
263                                 PackageManager.uncheckAll(root);
264                                 _pmg.clearGrid();
265                                         for (var x = 0; x < result['packages'].length; x++){
266                                                 _pmg.addData(result['packages'][x]);
267                                         }
268                                 }
269                 },
270                 uncheckAll : function(node){
271                         var topNodes = node.children;
272                         for(var i=0; i< topNodes.length; ++i) {
273                                 if(topNodes[i].checked){
274                                 topNodes[i].uncheck();
275                         }
276                         PackageManager.uncheckAll(topNodes[i]);
277                         }
278                 },
279                 completeSearch: function(data){
280
281                         eval(data.responseText);
282
283                         if(typeof result != 'undefined') {
284                                 PackageManager.populateGrid(result);
285                                 }
286                                 PackageManager.hideWaiting();
287                 },
288                 toggleLowerDiv: function(outer_div, animate_div){
289                 var show_img = "<img src='{sugar_getimagepath file='advanced_search.gif'}' width='8' height='8' alt='Expand' border='0'>";
290                 var hide_img = "<img src='{sugar_getimagepath file='basic_search.gif'}' width='8' height='8' alt='Collapse' border='0'>";
291
292                 var spn = document.getElementById(outer_div);
293                 var anim_div = document.getElementById(animate_div);
294
295                 if(anim_div.style.display == 'block'){
296                         anim_div.style.display = 'none';
297                 }else{
298                         anim_div.style.display = 'block';
299                 }
300                 spn.innerHTML =(anim_div.style.display == 'none') ? show_img+"&nbsp;Expand" : hide_img+"&nbsp;Collapse";
301             },
302             toggleDiv: function(outer_div, animate_div){
303                 var show_img = "<img src='{sugar_getimagepath file='advanced_search.gif'}' width='8' height='8' alt='Expand' border='0'>";
304                 var hide_img = "<img src='{sugar_getimagepath file='basic_search.gif'}' width='8' height='8' alt='Collapse' border='0'>";
305
306                 var spn = document.getElementById(outer_div);
307                 var anim_div = document.getElementById(animate_div);
308                 _attributes.height.to = (_attributes.height.to == MAX_HEIGHT) ? MIN_HEIGHT : MAX_HEIGHT;
309                 if(!_anim){
310                         MAX_HEIGHT = anim_div.offsetHeight;
311                     _attributes.height.to = MIN_HEIGHT;
312                 }
313                 _anim = new YAHOO.util.Anim(animate_div, _attributes, 0.5, YAHOO.util.Easing.bounceOut);
314                 if(_attributes.height.to == MIN_HEIGHT){
315                         anim_div.style.display = 'none';
316                 }else{
317                         anim_div.style.display = 'block';
318                 }
319                   spn.innerHTML =(_attributes.height.to == MIN_HEIGHT) ? show_img+"&nbsp;Expand" : hide_img+"&nbsp;Collapse";
320                 _anim.attributes = _attributes;
321
322                  _anim.animate();
323
324             },
325             toggleView: function(type){
326                 var treeview = document.getElementById('treeview');
327                 var searchview = document.getElementById('searchview');
328                if(type == 'browse'){
329                 treeview.style.display = 'block';
330                 searchview.style.display = 'none';
331                }else{
332                 treeview.style.display = 'none';
333                 searchview.style.display = 'block';
334                }
335             },
336             selectTabCSS: function(key){
337                 for( var i=0; i<keys.length;i++)
338                 {
339                         var liclass = '';
340                         var linkclass = '';
341
342                         if ( key == keys[i])
343                         {
344                         var liclass = 'active';
345                         var linkclass = 'current';
346                         document.getElementById(keys[i]+'_div').style.display = 'block';
347                         }else{
348                         document.getElementById(keys[i]+'_div').style.display = 'none';
349                         }
350                         document.getElementById(keys[i]+'_li').className = liclass;
351                         document.getElementById(keys[i]+'_link').className = linkclass;
352                 }
353                 tabPreviousKey = key;
354             },
355             loadDataForNodeForPackage : function(node, onCompleteCallback){
356                                 PackageManager.showWaiting();
357                 var id= node.data.id;
358                                 var callback =  {
359                                         success: function(data) {
360                                         eval(data.responseText);
361                                         if(typeof result != 'undefined') {
362                                                         var tmpNode = node;
363                                                         for ( key in result['nodes'] ) {
364                                                                 if(result['nodes'][key]['type']){
365
366                                                                         var myobj = { label: result['nodes'][key]['label'], id:result['nodes'][key]['id']};
367                                                                         tmpNode= new YAHOO.widget.TextNode(myobj, node, false);
368                                                                         tmpNode.href = "javascript:PackageManager.catClick('treeview',"+tmpNode.index+");";
369                                                                         tmpNode.setDynamicLoad(PackageManager.loadDataForNodeForPackage);
370                                                                         tmpNode.data['description'] = result['nodes'][key]['description'];
371                                                                 }else{
372                                                                         tmpNode = node;
373                                                                 }
374                                                                 if(result['nodes'][key]['packages']){
375                                                                         for(pKey in result['nodes'][key]['packages']){
376
377                                                                                 if(result['nodes'][key]['packages'][pKey]['releases'] && !result['nodes'][key]['packages'][pKey]['releases'].length && result['nodes'][key]['packages'][pKey]['releases'].length != 0){
378                                                                                         var myobj = { label: result['nodes'][key]['packages'][pKey]['label'], id:result['nodes'][key]['packages'][pKey]['id']};
379                                                                                         var tmpNodePackage = new YAHOO.widget.TaskNode(myobj, tmpNode, true);
380                                                                                         tmpNodePackage.href = "javascript:PackageManager.packageClick('treeview',"+tmpNodePackage.index+");"
381                                                                                         tmpNodePackage.description = result['nodes'][key]['packages'][pKey]['description']
382                                                                                         tmpNodePackage.type = 'package';
383                                                                                         tmpNodePackage.category_id = result['nodes'][key]['id'];
384                                                                                         tmpNodePackage.onCheckClick = function(){
385                                                                                                                                                         this.data['isSelected'] = this.checked;
386                                                                                                                                                         for (var i=0; i<this.children.length; ++i) {
387                                                                                                                                                 this.children[i].data['isSelected'] = this.checked;
388                                                                                                                                                 }
389                                                                                                                                                   };
390                                                                                         if(result['nodes'][key]['packages'][pKey]['releases']){
391                                                                                                 for(releaseKey in result['nodes'][key]['packages'][pKey]['releases']){
392                                                                                                         var myobj = { label: result['nodes'][key]['packages'][pKey]['releases'][releaseKey]['label'], id:result['nodes'][key]['packages'][pKey]['releases'][releaseKey]['id']};
393
394                                                                                                         if(result['nodes'][key]['packages'][pKey]['releases'][releaseKey]['enable'] == true){
395                                                                                                                 var tmpNodeRelease = new YAHOO.widget.TaskNode(myobj, tmpNodePackage, false);
396                                                                                                                 tmpNodeRelease.setDynamicLoad(PackageManager.loadDataForNodeForRelease);
397                                                                                                                 tmpNodeRelease.onCheckClick = function(){this.data['isSelected'] = this.checked;};
398                                                                                                         }else{
399                                                                                                                 var tmpNodeRelease = new YAHOO.widget.TextNode(myobj, tmpNodePackage, true);
400                                                                                                         }
401                                                                                                         tmpNodeRelease.version = result['nodes'][key]['packages'][pKey]['releases'][releaseKey]['version']
402                                                                                                         tmpNodeRelease.href = "javascript:PackageManager.releaseClick('treeview',"+tmpNodeRelease.index+");"
403                                                                                                         tmpNodeRelease.type = 'release';
404                                                                                                         tmpNodeRelease.category_id = tmpNode.data.id;
405                                                                                                         tmpNodeRelease.package_id = result['nodes'][key]['packages'][pKey]['id'];
406                                                                                                 }//rof
407                                                                                         }//fi
408                                                                                         //tmpNodePackage.setDynamicLoad(PackageManager.loadDataForNodeForPackage);
409                                                                                 }//fi
410                                                                         }//rof
411                                                                 }//fi
412                                                         }//rof
413                                                 }//fi
414                                         PackageManager.hideWaiting();
415                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
416                                         },
417                                         failure: function(data) {if (typeof onCompleteCallback == 'function') onCompleteCallback();}
418                                 }
419
420                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=getNodes&category_id=' + id;
421                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
422                                                                   callback, postData);
423
424             },
425             showWaiting : function(text){
426                                 ajaxStatus.showStatus(text);
427             },
428             hideWaiting : function(text){
429                                 ajaxStatus.hideStatus();
430             },
431             node_click : function(treeid){
432                                 node=YAHOO.namespace(treeid).selectednode;
433                                 //request url.
434                                 document.installForm.mode.value='Install';
435                                 document.installForm.package_id.value=node.data.id;
436                                 document.installForm.submit();
437             },
438             installPackage : function(file){
439                                 PackageManager.showWaiting();
440                                 //get the list of packages that belong to this node
441                                 var callback =  {
442                                         success: function(data) {
443                                         eval(data.responseText);
444                                         if(typeof result != 'undefined') {
445                                                 eval(data.responseText);
446
447                                                 if(typeof result != 'undefined') {
448                                                                 var licenseDiv = document.getElementById('licenseDiv');
449                                                                 licenseDiv.style.display = 'block';
450                                                                 licenseDiv.innerHTML = result['license_display'];
451                                                         }
452                                                 }//fi
453                                         PackageManager.hideWaiting();
454                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
455                                         },
456                                         failure: function(data) { if (typeof onCompleteCallback == 'function') onCompleteCallback();}
457                                 }
458
459                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=getLicenseText&file='+file;
460                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
461                                                                   callback, postData);
462             },
463             deletePackagae : function(package_id){
464                                 alert(package_id);
465             },
466                         toggle_div : function toggle_div(id)
467                         {
468                                 var show_img = "<img src='{sugar_getimagepath file='advanced_search.gif'}' width='8' height='8' alt='Show' border='0'>";
469                                 var hide_img = "<img src='{sugar_getimagepath file='basic_search.gif'}' width='8' height='8' alt='Hide' border='0'>";
470                                 var dv = document.getElementById("release_table_"+id);
471                                 var spn = document.getElementById("span_toggle_package_"+id);
472                                 dv.style.display =(dv.style.display == 'none') ? 'block' : 'none';
473
474                                 spn.innerHTML =(dv.style.display == 'none') ? show_img+"&nbsp;" : hide_img+"&nbsp;";
475                         },
476             processLicense : function(file){
477                 var licenseDiv = document.getElementById('licenseDiv');
478                                                                 licenseDiv.style.display = 'none';
479                                 PackageManager.showWaiting();
480                                 //get the list of packages that belong to this node
481                                 var callback =  {
482                                         success: function(data) {
483                                         eval(data.responseText);
484                                         if(typeof result != 'undefined') {
485                                                 eval(data.responseText);
486
487                                                 if(typeof result != 'undefined') {
488
489                                                         }
490                                                 }//fi
491                                         PackageManager.hideWaiting();
492                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
493                                         },
494                                         failure: function(data) { if (typeof onCompleteCallback == 'function') onCompleteCallback();}
495                                 }
496
497                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=performInstall&file='+file;
498                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
499                                                                   callback, postData);
500             },
501             getDocumentation : function(package_id, release_id){
502                 PackageManager.showWaiting();
503                 //var documentationWorkingDiv = document.getElementById('documentationWorkingDiv');
504                 //documentationWorkingDiv.style.display = 'block';
505                         //var documentationDiv = document.getElementById('Documentation');
506                                 //get the list of packages that belong to this node
507                                 var callback =  {
508                                         success: function(data) {
509
510                                         eval(data.responseText);
511                                         if(typeof result != 'undefined') {
512                                         var screenshot_count = 0;
513                                                 var screenshot_html = "<table><tr>";
514                                                 var html = "<table><tr><th>Name</th><th>Description</th></tr>";
515                                                 for (var x = 0; x < result['documents'].length; x++){
516
517                                                         if(result['documents'][x]['type'] == 'image'){
518
519                                                                 if((screenshot_count % 3) == 0){
520                                                                         screenshot_html += "<tr>";
521                                                                 }
522                                                                 var url = result['documents'][x]['url'];
523                                                                 if(result['documents'][x]['preview_url']){
524                                                                         url = result['documents'][x]['preview_url'];
525                                                                 }
526                                                                 screenshot_html += "<td><a href='"+result['documents'][x]['url']+"' border='0' target='blank'><img src='"+url+"'></a></td>";
527                                                                 if((screenshot_count % 3) == 0 && screenshot_count > 0){
528                                                                         screenshot_html += "</tr>";
529                                                                 }
530                                                                 screenshot_count++;
531                                                         }else{
532                                                                 html += "<tr>";
533                                                                 html += "<td><a href='"+result['documents'][x]['url']+"' onClick='PackageManager.downloadedDocumentation("+result['documents'][x]['id']+");' target='blank'>"+result['documents'][x]['name']+"</a></td>";
534                                                                 html += "<td>"+result['documents'][x]['description']+"</td>";
535                                                                 html += "</tr>";
536                                                         }
537                                                 }//rof
538                                                 html += "</table>";
539                                                 screenshot_html += "</table>";
540                                                 var detailsTab = _tabs.getTab(1);
541                                                 detailsTab.setContent(html, false);
542                                                 var screenShotTab = _tabs.getTab(2);
543                                                 screenShotTab.setContent(screenshot_html, false);
544                                                 //detailsTab.activate();
545                                                         //documentationDiv.innerHTML = html;
546                                                         //documentationWorkingDiv.style.display = 'none';
547                                                         PackageManager.hideWaiting();
548                                                 }//fi
549                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
550                                         },
551                                         failure: function(data) { documentationWorkingDiv.style.display = 'none'; PackageManager.hideWaiting();if (typeof onCompleteCallback == 'function') onCompleteCallback();}
552                                 }
553
554                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=getDocumentation&package_id='+package_id+'&release_id='+release_id;
555                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
556                                                                   callback, postData);
557                 },
558                 downloadedDocumentation : function(document_id){
559                                 var callback =  {
560                                         success: function(data) {
561                                                 if (typeof onCompleteCallback == 'function') onCompleteCallback();
562                                         },
563                                         failure: function(data) { if (typeof onCompleteCallback == 'function') onCompleteCallback();}
564                                 }
565
566                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=downloadedDocumentation&document_id='+document_id;
567                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
568                                                                   callback, postData);
569             },
570             packageClick : function(treeid, index){
571
572                                 node=YAHOO.widget.TreeView.getNode(treeid, index);
573                                 //var dt = document.getElementById('Details');
574                                 var html ="<table>";
575                                 html += "<tr><td>Name:</td><td>"+node.label+"</td></tr>";
576                                 html += "<tr><td>Description:</td><td>"+node.description+"</td></tr>";
577                                 html += "</table>";
578                                 //dt.innerHTML = html;
579                                 PackageManager.getDocumentation(node.data.id, '');
580                                 var detailsTab = _tabs.getTab(0);
581                         detailsTab.setContent(html, false);
582                         detailsTab.activate();
583             },
584             releaseClick : function(treeid, index){
585                                 node=YAHOO.widget.TreeView.getNode(treeid, index);
586                                 //var dt = document.getElementById('Details');
587                                 var html ="<table>";
588                                 html += "<tr><td>Description:</td><td>"+node.label+"</td></tr>";
589                                 html += "<tr><td>Version:</td><td>"+node.version+"</td></tr>";
590                                 html += "</table>";
591                                 //dt.innerHTML = html;
592                                 var detailsTab = _tabs.getTab(0);
593                         detailsTab.setContent(html, false);
594                         detailsTab.activate();
595                                 PackageManager.getDocumentation('', node.data.id);
596
597             },
598             catClick : function(treeid, index){
599                         var node = YAHOO.namespace(treeid).selectednode;
600                                 //var dt = document.getElementById('Details');
601                                 var html ="<table>";
602                                 html += "<tr><td>Name:</td><td>"+node.label+"</td></tr>";
603                                 html += "<tr><td>Description:</td><td>"+node.data['description']+"</td></tr>";
604                                 html += "</table>";
605                                 //dt.innerHTML = html;
606                                 var detailsTab = _tabs.getTab(0);
607                         detailsTab.setContent(html, false);
608                         detailsTab.activate();
609             },
610             select_package : function(package_id){
611                 var dv = document.getElementById("package_tr_"+package_id);
612                 dv.style.display='none';
613                 var downloadTable = document.getElementById('filedownloadtable');
614                 var tr = document.createElement('tr');
615                 tr.innerHTML = dv.innerHTML
616                 downloadTable.appendChild(tr);
617                 var table = document.getElementById('fileviewtable');
618                 table.deleteRow(0);
619
620             },
621             showErrors : function(errors){
622                  dialog = new YAHOO.ext.BasicDialog("loginView", {
623                         //modal:true,
624                         autoTabs:true,
625                         width:500,
626                         height:300,
627                         shadow:true,
628                         minWidth:300,
629                         minHeight:250,
630                         proxyDrag: true
631                 });
632                 dialog.addKeyListener(27, dialog.hide, dialog);
633                 dialog.addButton('Close', dialog.hide, dialog);
634                 dialog.addButton('Submit', dialog.hide, dialog).disable();
635                 dialog.show();
636             },
637             select_release : function(release_id){
638                 var dv = document.getElementById("release_tr_"+release_id);
639             },
640                         checkForUpdates : function(){
641                                 PackageManager.showWaiting();
642                                 var callback =  {
643                                         success: function(data) {
644                                         eval(data.responseText);
645                                                 if(typeof result != 'undefined') {
646                                                         var tree = YAHOO.widget.TreeView.getTree('treeview');
647                                                                 var root = tree.getRoot();
648                                                                 var myobj = { label: 'Updates', id:'updates'};
649                                                                 tmpNode = tree.getNodeByProperty('id', 'updates');
650                                                                 if(!tmpNode){
651                                                                         tmpNode= new YAHOO.widget.TextNode(myobj, root, false);
652                                                                         tmpNode.data['description'] = 'Updates Found';
653                                                                 }else{
654                                                                         tree.removeChildren(tmpNode);
655                                                                 }
656                                                                 tmpNode.expanded = true;
657
658                                                                 for (var x = 0; x < result['updates'].length; x++){
659                                                                         var myobj = { label: result['updates'][x]['label'], id:result['updates'][x]['id']};
660                                                                         var tmpNodeRelease = new YAHOO.widget.TaskNode(myobj, tmpNode, false);
661                                                                         tmpNodeRelease.version = result['updates'][x]['version'];
662                                                                         tmpNodeRelease.href = "javascript:PackageManager.releaseClick('treeview',"+tmpNodeRelease.index+");"
663                                                                         tmpNodeRelease.setDynamicLoad(PackageManager.loadDataForNodeForRelease);
664                                                                         if(result['updates'][x]['type'] == 'patch'){
665                                                                                 tmpNodeRelease.onCheckClick = function(){this.uncheck();if(confirm('{/literal}{$MOD.MI_REDIRECT_TO_UPGRADE_WIZARD}{literal}')){location.href = '{/literal}{$UPGARDE_WIZARD_URL}{literal}'}};
666                                                                         }else{
667                                                                                 tmpNodeRelease.onCheckClick = function(){this.data['isSelected'] = this.checked;};
668                                                                         }
669                                                                         tmpNodeRelease.type = 'release';
670                                                                         tmpNodeRelease.category_id = '';
671                                                                         tmpNodeRelease.package_id = '';
672                                                                 }//rof
673                                                                 tree.draw();
674                                                         }//fi
675                                     if (typeof onCompleteCallback == 'function') onCompleteCallback();
676                                         },
677                                         failure: function(data) { if (typeof onCompleteCallback == 'function') onCompleteCallback();}
678                                 }
679                                 PackageManager.hideWaiting();
680                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=checkForUpdates&type=modules';
681                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
682                                                                   callback, postData);
683                         },
684                         showLoginDialog : function(show){
685                                 var loginView =  document.getElementById('loginView');
686                                 var selectView =  document.getElementById('selectView');
687                                 var collapseLink =  document.getElementById('span_animate_server_div');
688                                 var credentialBtn =  document.getElementById('modifCredentialsBtn');
689                                 var loginStyle = (show ? 'block' : 'none');
690                                 var selectStyle = (show ? 'none' : 'block');
691                                 var collapseStyle = (show ? 'none' : '');
692                                 if(_attributes.height.to == MIN_HEIGHT){
693                                     MAX_HEIGHT=300;
694                                     PackageManager.toggleDiv('span_animate_server_div', 'catview');
695                                 }
696                                 loginView.style.display = loginStyle;
697                                 selectView.style.display = selectStyle;
698                                 collapseLink.style.display = collapseStyle;
699                                 credentialBtn.style.display = collapseStyle;
700                         },
701                         refreshTreeRoot : function(){
702                                 PackageManager.showWaiting();
703                                 _loadingBar.setHeader("{/literal}{$MOD.LOADING_CATEGORIES}{literal}");
704                                 var callback =  {
705                                         success: function(data) {
706                                                 _loadingBar.hide();
707                                         eval(data.responseText);
708                                         if(typeof result != 'undefined') {
709                                                 var tree = new YAHOO.widget.TreeView('treeview');
710
711                                                         var node = tree.getRoot();
712                                                         for (var x = 0; x < result['nodes'].length; x++){
713
714                                                                 var myobj = { label: result['nodes'][x]['label'], id:result['nodes'][x]['id']};
715                                                                 tmpNode= new YAHOO.widget.TextNode(myobj, node, false);
716                                                                 tmpNode.href = "javascript:PackageManager.catClick('treeview',"+tmpNode.index+");";
717                                                                 tmpNode.setDynamicLoad(PackageManager.loadDataForNodeForPackage);
718                                                                 tmpNode.data['description'] = result['nodes'][x]['description'];
719
720                                                         }
721                                                         tree.draw();
722                                                 }//fi
723                                         PackageManager.hideWaiting();
724                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
725                                         },
726                                         failure: function(data) {_loadingBar.hide();if (typeof onCompleteCallback == 'function') onCompleteCallback();}
727                                 }
728
729                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=getCategories';
730                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
731                                                                   callback, postData);
732                         },
733                         refreshGrid : function(){
734                                 PackageManager.showWaiting();
735                                 _loadingBar.setHeader("{/literal}{$MOD.SEARCHING_PACKAGES}{literal}");
736                                 var callback =  {
737                                         success: function(data) {
738                                         _loadingBar.hide();
739                                         eval(data.responseText);
740                                         if(typeof result != 'undefined') {
741                                                 _pmg.clearGrid();
742
743                                                         for (var x = 0; x < result['releases'].length; x++){
744                                                                 var row = new Array();
745                                                                 row[0] = result['releases'][x]['description'];
746                                                                 row[1] = result['releases'][x]['version'];
747                                                                 row[2] = result['releases'][x]['build_number'];
748                                                                 row[3] = result['releases'][x]['id'];
749                                                                 _pmg.addData(row);
750                                                         }//rof
751
752                                                 }//fi
753                                         PackageManager.hideWaiting();
754                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
755                                         },
756                                         failure: function(data) {_loadingBar.hide();if (typeof onCompleteCallback == 'function') onCompleteCallback();}
757                                 }
758                                 var types = "{/literal}{$GRID_TYPE}{literal}";
759                                 //postData = 'to_pdf=1&module=Administration&action=HandleAjaxCall&method=getReleases&types='+types;
760                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=checkForUpdates&type=modules';
761                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
762                                                                   callback, postData);
763                         },
764                         refreshHeader : function(){
765                                 PackageManager.showWaiting();
766                                 var callback =  {
767                                         success: function(data) {
768                                         eval(data.responseText);
769                                         if(typeof result != 'undefined') {
770                                                 var header_div = document.getElementById('span_display_html');
771                                                 header_div.innerHTML = result['promotion'];
772                                                 }//fi
773                                         PackageManager.hideWaiting();
774                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
775                                         },
776                                         failure: function(data) {if (typeof onCompleteCallback == 'function') onCompleteCallback();}
777                                 }
778
779                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=getPromotion';
780                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
781                                                                   callback, postData);
782                         },
783                         initTabs : function(){
784                                 /*_tabs = new YAHOO.ext.TabPanel('tabs1');
785                                 var detailTab = _tabs.addTab('details', "{/literal}{$MOD.ML_LBL_DETAIILS}{literal}");
786                                 detailTab.setContent('{/literal}{$MOD.ML_DESC_DOCUMENTATION}{literal}', false);
787                         _tabs.addTab('documentation', "{/literal}{$MOD.ML_LBL_DOCUMENTATION}{literal}");
788                         _tabs.addTab('screenshots', "{/literal}{$MOD.ML_LBL_SCREENSHOTS}{literal}");
789                         _tabs.addTab('reviews', "{/literal}{$MOD.ML_LBL_REVIEWS}{literal}");
790                         _tabs.activate('details');*/
791                         },
792                         remove : function(file){
793                                 if(confirm('{/literal}{$MOD.REMOVE_QUESTION}{literal}')){
794                                 //PackageManager.showWaiting();
795                                 var callback =  {
796                                         success: function(data) {
797                                         eval(data.responseText);
798                                                 if(typeof result != 'undefined') {
799                                                                 PackageManager.getPackagesInStaging();
800                                                         }
801                                         PackageManager.hideWaiting();
802                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
803                                         },
804                                         failure: function(data) {if (typeof onCompleteCallback == 'function') onCompleteCallback();}
805                                 }
806
807                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=remove&file='+file
808                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
809                                                                   callback, postData);
810                                 }//fi
811                         },
812                         authenticate : function(username, password, servername){
813                         //rrs
814                                                                 _loadingBar =
815                                                         new YAHOO.widget.Panel("wait",
816                                                                                                                         { width:"240px",
817                                                                                                                           fixedcenter:true,
818                                                                                                                           close:false,
819                                                                                                                           draggable:false,
820                                                                                                                           modal:true,
821                                                                                                                           visible:false,
822                                                                                                                           effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.5}
823                                                                                                                         }
824                                                                                                                 );
825
826                                         _loadingBar.setHeader("{/literal}{$MOD.AUTHENTICATING}{literal}");
827                                         _loadingBar.setBody("<img src=\"include/javascript/yui/assets/rel_interstitial_loading.gif\"/>");
828                                         _loadingBar.render(document.body);
829                                         _loadingBar.show();
830                                 //PackageManager.showWaiting();
831                                 var btn = document.getElementById('panel_login_button');
832                                 var cbTerms = document.getElementById('cb_terms');
833                                 btn.value = 'Checking...';
834                                 btn.disabled = true;
835                                 var callback =  {
836                                         success: function(data) {
837                                                 btn.value = 'Login';
838                                                 btn.disabled = false;
839                                         eval(data.responseText);
840                                                 if(typeof result != 'undefined') {
841                                                                 if(result['status'] == 'success'){
842                                                                         PackageManager.showLoginDialog(false);
843                                                                         var header_div = document.getElementById('span_display_html');
844                                                                 if(header_div)
845                                                                         header_div.innerHTML = '';
846                                                                          {/literal}{if $module_load == 'true'}{literal}
847
848                                                                                 PackageManager.refreshTreeRoot();
849                                                                          {/literal}{else}{literal}
850                                                                         _pmg = new PackageManagerGrid();
851
852                                                                                 PackageManager.refreshGrid();
853                                                                                 _pmg.renderAll();
854                                                                           {/literal}{/if}{literal}
855                                                                 }else{
856                                                                         _loadingBar.hide();
857                                                                         alert(result['status']);
858                                                                 }
859                                                         }
860                                         //PackageManager.hideWaiting();
861                                         if (typeof onCompleteCallback == 'function') onCompleteCallback();
862                                         },
863                                         failure: function(data) { _loadingBar.hide();btn.value = 'Login';btn.disabled = false;if (typeof onCompleteCallback == 'function') onCompleteCallback();}
864                                 }
865
866                                 postData = 'entryPoint=HandleAjaxCall&to_pdf=1&module=Administration&action=HandleAjaxCall&method=authenticate&username='+username+'&password='+password + '&servername=' + servername + '&terms_checked=' + cbTerms.value;
867                                 var cObj = YAHOO.util.Connect.asyncRequest('POST','index.php',
868                                                                   callback, postData);
869                         }
870             };
871         }();
872 }
873
874 var _fileGrid;
875 var _fileDownloadGrid;
876 var _fileGridInstalled;
877 {/literal}{$PATCHES}{literal}
878 {/literal}{$INSTALLED_MODULES}{literal}
879 PackageManagerGrid = function(){
880 {/literal}{if $module_load == 'true'}{literal}
881         YAHOO.widget.DataTable.MSG_EMPTY = "Empty1";
882         YAHOO.widget.DataTable.CLASS_EMPTY = "CLASS EMPT";
883         YAHOO.widget.ScrollingDataTable.MSG_EMPTY = "Empty2";
884         YAHOO.widget.ScrollingDataTable.CLASS_EMPTY = "EMPTYMORE";
885         YAHOO.util.DataSource.MSG_EMPTY = "empty_3";
886         var moduleTitleEl = YAHOO.util.Dom.getElementsByClassName("moduleTitle")[0];
887         var patch_downloads_tableWidth = moduleTitleEl.clientWidth - 2+ "px";
888                 var patch_downloads_minWidth = moduleTitleEl.clientWidth / 8.5;
889                 _fileGrid = new YAHOO.widget.ScrollingDataTable(
890                 'patch_downloads',
891                 [
892                                         {key:'name', label: '{/literal}{$ML_FILEGRID_COLUMN.Name}{literal}', minWidth: Math.round(patch_downloads_minWidth*1.5), sortable: true, resizeable: true},
893                     {key:'file', label: '{/literal}{$ML_FILEGRID_COLUMN.Install}{literal}', minWidth: Math.round(patch_downloads_minWidth/1.5), formatter: this.renderInstallButton, resizeable: true},
894                     {key:'unFile', label: '{/literal}{$ML_FILEGRID_COLUMN.Delete}{literal}', minWidth: Math.round(patch_downloads_minWidth), formatter: this.renderDeleteButton, resizeable: true},
895                             {key:'type', label: '{/literal}{$ML_FILEGRID_COLUMN.Type}{literal}', minWidth: Math.round(patch_downloads_minWidth/1.5)},
896                             {key:'version', label: '{/literal}{$ML_FILEGRID_COLUMN.Version}{literal}', minWidth: Math.round(patch_downloads_minWidth)},
897                             {key:'date', label: '{/literal}{$ML_FILEGRID_COLUMN.Published}{literal}', minWidth: Math.round(patch_downloads_minWidth)},
898                             {key:'uninstallable',  label: '{/literal}{$ML_FILEGRID_COLUMN.Uninstallable}{literal}', minWidth: Math.round(patch_downloads_minWidth/1.5)},
899                             {key:'description',label: '{/literal}{$ML_FILEGRID_COLUMN.Description}{literal}', minWidth: Math.round(patch_downloads_minWidth*1.5), sortable: true}
900                         ],
901                         new YAHOO.util.LocalDataSource(mti_data, {
902                         responseSchema: {fields: ['name', 'file', 'unFile', 'type', 'version', 'date', 'uninstallable', 'description', 'upload_file'] },
903                         height: "190px"
904                         }),
905                 {
906                     MSG_EMPTY: "", 
907                     width : (YAHOO.util.Selector.query('table','content',true).clientWidth - 15) + "px",
908                     height: (document.getElementById("patch_downloads").clientHeight - 25 ) + "px"
909                 }
910             );
911         _fileGrid.autoSizeColumns = true;
912         _fileGrid.MSG_EMPTY = "empty4";
913         _fileGrid.subscribe("beforeWidthChange", function() {
914                         if (mti_data.length <= 0) {
915                                 return false;
916                         }
917                 }
918         );
919         _fileGrid.getColumn = YAHOO.SUGAR.SelectionGrid.prototype.getColumn;
920         //Hack to fix  rendering bug in IE7:
921         _fileGrid.on("renderEvent", function(){
922             if (mti_data.length > 0)
923                 setTimeout("if (_fileGrid.getFirstTrEl()) _fileGrid.getFirstTrEl().style.width='100%';", 1000);
924             else {
925                 _fileGrid.getBdTableEl().style.display = "none";
926                 _fileGrid.getHdTableEl().style.width = "100%";
927             }
928         });
929
930         var moduleTitleEl2 = YAHOO.util.Dom.getElementsByClassName("moduleTitle")[0];
931         var installed_grid_tableWidth = moduleTitleEl2.clientWidth - 2+ "px";
932                 var minWidth = moduleTitleEl2.clientWidth / 7.45;
933             _fileGridInstalled = new YAHOO.widget.ScrollingDataTable('installed_grid',
934             [
935                             {key:'name', label: '{/literal}{$ML_FILEGRIDINSTALLED_COLUMN.Name}{literal}', sortable: true, 'minWidth' : Math.round(minWidth*1.5)},
936                 {key:'unFile', label: '{/literal}{$ML_FILEGRIDINSTALLED_COLUMN.Action}{literal}', formatter: this.renderUninstallButton, 'minWidth' : Math.round(minWidth/1.5)},
937                 {key:'state_file', label: '{/literal}{$ML_FILEGRIDINSTALLED_COLUMN.Enable_Or_Disable}{literal}',formatter: this.renderEnableDisableButton, 'minWidth' : Math.round(minWidth/1.5)},
938                     {key:'type', label: '{/literal}{$ML_FILEGRIDINSTALLED_COLUMN.Type}{literal}', 'minWidth' : Math.round(minWidth/1.5)},
939                     {key:'version', label: '{/literal}{$ML_FILEGRIDINSTALLED_COLUMN.Version}{literal}', 'minWidth' : Math.round(minWidth)},
940                     {key:'date', label: '{/literal}{$ML_FILEGRIDINSTALLED_COLUMN.Date_Installed}{literal}', 'minWidth' : Math.round(minWidth)},
941                     {key:'description', label: '{/literal}{$ML_FILEGRIDINSTALLED_COLUMN.Description}{literal}', sortable: true, 'minWidth' : Math.round(minWidth*1.5)}
942                 ],
943                 new YAHOO.util.LocalDataSource(mti_installed_data, {
944                         responseSchema: {fields: ['name', 'file', 'unFile', 'state_file', 'type', 'version', 'date', 'uninstallable', 'description'] }, 
945                     height: "200px"}), 
946             {
947                    MSG_EMPTY: "", 
948                    width : (YAHOO.util.Selector.query('table','content',true).clientWidth - 15 ) + "px",
949                    height: (document.getElementById("installed_grid").clientHeight - 20 ) + "px"
950                 }
951         );
952
953             _fileGridInstalled.autoSizeColumns = true;
954         _fileGridInstalled.MSG_EMPTY = "empty5";
955         //bugfix for http://yuilibrary.com/projects/yui2/ticket/2528034
956         _fileGridInstalled.getColumn = YAHOO.SUGAR.SelectionGrid.prototype.getColumn;
957         
958         _fileGridInstalled.on("renderEvent", function(){
959                 if (mti_installed_data.length > 0)
960                 setTimeout("if(_fileGridInstalled.getFirstTrEl()) _fileGridInstalled.getFirstTrEl().style.width='100%';", 1000);
961             else {
962                 _fileGridInstalled.getBdTableEl().style.display = "none";
963                 _fileGridInstalled.getHdTableEl().style.width = "100%";
964             }
965         });
966
967 {/literal}{else}{literal}
968                 _fileGrid = new YAHOO.ext.grid.DDGrid(
969                 'patch_downloads',
970                 new YAHOO.ext.grid.DefaultDataModel([]),
971                 new YAHOO.ext.grid.DefaultColumnModel([
972                                         {label: '{/literal}{$ML_FILEGRID_COLUMN.Description}{literal}', width: 215},
973                             {label: '{/literal}{$ML_FILEGRID_COLUMN.Version}{literal}', width: 72},
974                             {label: '{/literal}{$ML_FILEGRID_COLUMN.Build}{literal}', width: 80, sortable: true, sortType: sort.asUCString},
975                             {label: '{/literal}{$ML_FILEGRID_COLUMN.Action}{literal}', width: 90, renderer: this.renderButtons}
976                         ])
977             );
978             _fileGrid.autoSizeColumns = true;
979         _fileGrid.autoSizeHeaders = true;
980         {/literal}{/if}{literal}
981         PackageManager.showStatusMessages('{/literal}{$ML_STATUS_MESSAGE}{literal}');
982 }
983
984 PackageManagerGrid.prototype.renderModuleButtons = function(file){
985         var output =  '<table border=0 cellpadding=0 cellspacing=0><tr><td><form action="index.php?module=Administration&view=module&action=UpgradeWizard_prepare" method="post">';
986         output += '<input type=submit class=\'button\' name="btn_mode" onclick="this.form.mode.value=\'Install\';this.form.submit();" value="{/literal}{$MOD.LBL_UW_BTN_INSTALL}{literal}" />';
987         output += '<input type=hidden name="install_file" value="'+file+'" />';
988                 output += '<input type=hidden name="mode"/>';
989         output += '</form></td><td>&nbsp;</td>';
990
991         output += '<td><form action="index.php?module=Administration&view=module&action=UpgradeWizard" method="post">';
992         output += '<input type=submit class=\'button\' name="run" value="{/literal}{$MOD.LBL_UW_BTN_DELETE_PACKAGE}{literal}" />';
993         output += '<input type=hidden name="install_file" value="'+file+'" />';
994         output += '</form></td></tr></table>';
995         elCell.innerHTML = output;
996 }
997
998 PackageManagerGrid.prototype.renderInstallButton = function(elCell, oRecord, col, data) {
999         var file = oRecord.getData().file;
1000         if(file.indexOf('errors_') == 0){
1001                 var output = "<input type='button' class='button' value='Errors' onClick='javascript:alert(\""+file.substring(7)+"\");'>";
1002         }else{
1003                 var output =  '<span style="text-align:center;"><form action="index.php?module=Administration&view=module&action=UpgradeWizard_prepare" method="post">';
1004         output += '<input type=submit class=\'button\' name="btn_mode" onclick="this.form.mode.value=\'Install\';this.form.submit();" value="{/literal}{$MOD.LBL_UW_BTN_INSTALL}{literal}" />';
1005         output += '<input type=hidden name="install_file" value="'+file+'" />';
1006                 output += '<input type=hidden name="mode"/>';
1007         output += '</form></span>';
1008     }
1009         elCell.innerHTML = output;
1010 }
1011 PackageManagerGrid.prototype.renderUninstallButton = function(elCell, oRecord, col, data) {
1012     var file = oRecord.getData().file;
1013         if(file.indexOf('errors_') == 0){
1014                 var output = "<input type='button' class='button' value='Errors' onClick='javascript:alert(\""+file.substring(7)+"\");'>";
1015         }else if(file.indexOf('UNINSTALLABLE') == 0){
1016                 var output = '';
1017         }else{
1018                 var output =  '<span style="text-align:center;"><form action="index.php?module=Administration&view=module&action=UpgradeWizard_prepare" method="post">';
1019         output += '<input type=submit class=\'button\' name="btn_mode" onclick="this.form.mode.value=\'Uninstall\';this.form.submit();" value="{/literal}{$MOD.LBL_UW_UNINSTALL}{literal}" />';
1020         output += '<input type=hidden name="install_file" value="'+file+'" />';
1021                 output += '<input type=hidden name="mode"/>';
1022         output += '</form></span>';
1023     }
1024     
1025         elCell.innerHTML = output;
1026 }
1027
1028 PackageManagerGrid.prototype.renderEnableDisableButton = function(elCell, oRecord, col, data) {
1029         var state_file = oRecord.getData().state_file;
1030         if(state_file.indexOf('ENABLED_') == 0){
1031                 //enabled
1032                 var output = '<span style="text-align:center;"><form action="index.php?module=Administration&view=module&action=UpgradeWizard_prepare" method="post">';
1033                 file = state_file.substring(8);
1034                 output += '<input type=submit class=\'button\' name="btn_mode" onclick="this.form.mode.value=\'Disable\';this.form.submit();" value="{/literal}{$MOD.LBL_UW_DISABLE}{literal}" />';
1035                  output += '<input type=hidden name="install_file" value="'+file+'" />';
1036                 output += '<input type=hidden name="mode"/>';
1037         output += '</form></span>';
1038         }else if(state_file.indexOf('UNINSTALLABLE') == 0){
1039                 var output = '';
1040         }else{
1041                 var output = '<span style="text-align:center;"><form action="index.php?module=Administration&view=module&action=UpgradeWizard_prepare" method="post">';
1042                 file = state_file.substring(9);
1043         output += '<input type=submit class=\'button\' name="btn_mode" onclick="this.form.mode.value=\'Enable\';this.form.submit();" value="{/literal}{$MOD.LBL_UW_ENABLE}{literal}" />';
1044         output += '<input type=hidden name="install_file" value="'+file+'" />';
1045                 output += '<input type=hidden name="mode"/>';
1046         output += '</form></span>';
1047     }
1048
1049         elCell.innerHTML = output;
1050 }
1051
1052 PackageManagerGrid.prototype.renderDeleteButton = function(elCell, oRecord, col, file) {
1053         
1054         var upload_file = oRecord.getData().upload_file;
1055 var output = "<span style='text-align:center;'><input type='button' class='button' value='{/literal}{$MOD.LBL_UW_BTN_DELETE_PACKAGE}{literal}' onClick='PackageManager.remove(\""+file+"\");'></span>";
1056                 //var output = '<form action="index.php?module=Administration&view=module&action=UpgradeWizard" method="post">';
1057        // output += '<input type=submit class=\'button\' name="run" value="{/literal}{$MOD.LBL_UW_BTN_DELETE_PACKAGE}{literal}" />';
1058         //output += '<input type=hidden name="install_file" value="'+file+'" />';
1059         //output += '</form>';
1060
1061     elCell.innerHTML = output;
1062 }
1063
1064 PackageManagerGrid.prototype.renderButtons = function(packageID){
1065         var output = "<input type='button' value='Download' class='button' onClick=\"{/literal}{if $INSTALLATION != 0}{literal}this.form.run.value='upload';{/literal}{/if}{literal}this.form.release_id.value='"+packageID+"';this.form.submit();\">";
1066     return output;
1067 }
1068 PackageManagerGrid.prototype.renderErrorLink = function(show){
1069         var output = "<a href='#'>Errors</a>";
1070     return output;
1071 }
1072 PackageManagerGrid.prototype.clearGrid = function(){
1073     _fileGrid.deleteRows(0, _fileGrid.getRecordSet().getLength())
1074 }
1075 PackageManagerGrid.prototype.renderAll = function(){
1076    // _fileGrid.render();
1077 }
1078
1079 PackageManagerGrid.prototype.addData = function(data){
1080     _fileGrid.addRow(data);
1081 }
1082
1083 YAHOO.util.Event.on(window, 'load', PackageManager.initPMG, PackageManager, true);
1084 </script>
1085 {/literal}