]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - modules/ModuleBuilder/views/view.package.php
Release 6.5.0
[Github/sugarcrm.git] / modules / ModuleBuilder / views / view.package.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2012 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 require_once('modules/ModuleBuilder/MB/AjaxCompose.php');
38 require_once('modules/ModuleBuilder/MB/ModuleBuilder.php');
39 class Viewpackage extends SugarView
40 {
41         /**
42          * @see SugarView::_getModuleTitleParams()
43          */
44         protected function _getModuleTitleParams($browserTitle = false)
45         {
46             global $mod_strings;
47             
48         return array(
49            translate('LBL_MODULE_NAME','Administration'),
50            ModuleBuilderController::getModuleTitle(),
51            );
52     }
53
54         function display()
55         {
56                 global $mod_strings;
57                 $smarty = new Sugar_Smarty();
58                 $mb = new ModuleBuilder();
59                 //if (!empty($_REQUEST['package'])) {
60                 if (empty($_REQUEST['package']) && empty($_REQUEST['new'])) {
61                         $this->generatePackageButtons($mb->getPackageList());
62
63                         $smarty->assign('buttons', $this->buttons);
64                         $smarty->assign('title', $GLOBALS['mod_strings']['LBL_MODULEBUILDER']);
65                         $smarty->assign("question", $GLOBALS['mod_strings']['LBL_QUESTION_PACKAGE']);
66                         $smarty->assign("defaultHelp", "mbHelp");
67
68                         $ajax = new AjaxCompose();
69                         $ajax->addCrumb($GLOBALS['mod_strings']['LBL_MODULEBUILDER'], 'ModuleBuilder.getContent("module=ModuleBuilder&action=package")');
70                         $ajax->addCrumb($GLOBALS['mod_strings']['LBL_PACKAGE_LIST'],'');
71                         $ajax->addSection('center', $GLOBALS['mod_strings']['LBL_PACKAGE_LIST'], $smarty->fetch('modules/ModuleBuilder/tpls/wizard.tpl'));
72                         echo $ajax->getJavascript();
73                 }
74                 else {
75                         
76                         $name = (!empty($_REQUEST['package']))?$_REQUEST['package']:'';
77                         $mb->getPackage($name);
78                         
79             require_once ('modules/ModuleBuilder/MB/MBPackageTree.php') ;
80             $mbt = new MBPackageTree();
81             $nodes = $mbt->fetchNodes();
82             
83                         $package_labels = array();
84                         if(!empty($nodes['tree_data']['nodes']))
85                         {
86                                 foreach($nodes['tree_data']['nodes'] as $entry) 
87                                 {
88                                         if(!empty($entry['data']['label']) && $name != $entry['data']['label'])
89                                         {
90                                                 $package_labels[] = strtoupper($entry['data']['label']);
91                                         }
92                                 }
93                         }
94                         
95                         $json = getJSONobj();
96                         $smarty->assign('package_labels', $json->encode($package_labels));              
97                         
98                         $this->package =& $mb->packages[$name];
99                         $this->loadModuleTypes();
100                         $this->loadPackageHelp($name);
101                         $this->package->date_modified = $GLOBALS['timedate']->to_display_date_time($this->package->date_modified);
102                         $smarty->assign('package', $this->package);
103                         $smarty->assign('mod_strings',$mod_strings);
104                         $smarty->assign('package_already_deployed', 'false');
105             foreach($this->package->modules as $a_module){
106                 if(in_array($a_module->key_name, $GLOBALS['moduleList'])){
107                                 $smarty->assign('package_already_deployed', 'true');
108                     break;
109                 }
110             }
111
112                         $ajax = new AjaxCompose();
113                         $ajax->addCrumb($GLOBALS['mod_strings']['LBL_MODULEBUILDER'], 'ModuleBuilder.getContent("module=ModuleBuilder&action=package")');
114                         if(empty($name))$name = $mod_strings['LBL_NEW_PACKAGE'];
115                         $ajax->addCrumb($name,'');
116                         $html=$smarty->fetch('modules/ModuleBuilder/tpls/MBPackage/package.tpl');
117                         if(!empty($_REQUEST['action']) && $_REQUEST['action']=='SavePackage')
118                                 $html.="<script>ModuleBuilder.treeRefresh('ModuleBuilder')</script>";
119                         $ajax->addSection('center', translate('LBL_SECTION_PACKAGE', 'ModuleBuilder'), $html);
120                         echo $ajax->getJavascript();
121                 }
122         }
123
124         function loadModuleTypes()
125         {
126                 $this->package->moduleTypes = array();
127                 $this->package->loadModules();
128                 foreach(array_keys($this->package->modules) as $name){
129                         foreach($this->package->modules[$name]->config['templates'] as $template=>$var){
130
131                                         $this->package->moduleTypes[$name] = $template;
132
133                         }
134                 }
135         }
136         function loadPackageHelp(
137             $name
138             )
139         {
140                         $this->package->help['default'] = (empty($name))?'create':'modify';
141                         $this->package->help['group'] = 'package';
142         }
143
144         function generatePackageButtons(
145             $packages
146             )
147         {
148                 global $mod_strings;
149                 $this->buttons[$mod_strings['LBL_NEW_PACKAGE']] = array(
150                                                                                 'action' => "module=ModuleBuilder&action=package&new=1",
151                                                                                 'imageTitle' => 'package_create',
152                                                                                 'size' => '64',
153                                                                                 'help' => 'newPackage',
154                                         'linkId' => 'newPackageLink'
155                                                                                 );
156                 foreach($packages as $package) {
157                         $this->buttons[$package] = array(
158                                                                                 'action' =>"module=ModuleBuilder&action=package&package={$package}",
159                                                                                 'imageTitle' => 'package',
160                                                                                 'size' => '64',
161                                                                                 );
162                 }
163         }
164 }