. */ class module_builder extends abstract_module { public static $oTools; public static $sLayout; public static function setLayout($sLayout) { if (!in_array($sLayout, array('templateProjet', 'templateProjetLight'))) { return; } self::$sLayout = $sLayout; } public static function getTools() { return self::$oTools; } public function before() { self::$oTools = new module_builderTools(); $this->oLayout = new _layout('template1'); $this->oLayout->addModule('menu', 'menu::index'); } private function getList() { $oProjetModel = new model_mkfbuilderprojet; $tProjet = $oProjetModel->findAll(); sort($tProjet); //tri par ordre alphabetique $oTpl = new _tpl('builder::list'); $oTpl->tProjet = $tProjet; return $oTpl; } public function _index() { _root::redirect('builder::new'); } public function _list() { $oTpl = $this->getList(); $this->oLayout->add('main', $oTpl); } public function _new() { if (_root::getRequest()->isPost()) { $sProject = _root::getParam('projet'); $sOpt = _root::getParam('opt'); if ($sOpt == 'withexamples') { model_mkfbuilderprojet::getInstance()->create(_root::getParam('projet')); self::getTools()->updateLayoutTitle(_root::getParam('projet')); } else if ($sOpt == 'withBootstrap') { model_mkfbuilderprojet::getInstance()->createEmpty($sProject); //copy bootstrap model_mkfbuilderprojet::getInstance()->copyFromTo('data/sources/fichiers/layout/bootstrap.php', _root::getConfigVar('path.generation') . $sProject . '/layout/bootstrap.php'); //update title self::getTools()->updateFile(_root::getParam('projet'), array('examplesite' => $sProject), 'layout/bootstrap.php'); //update layout self::getTools()->updateFile(_root::getParam('projet'), array('template1' => 'bootstrap'), 'module/default/main.php'); } else if ($sOpt == 'scWithBootstrap') { model_mkfbuilderprojet::getInstance()->createScWithBootstrap($sProject); } else { model_mkfbuilderprojet::getInstance()->createEmpty(_root::getParam('projet')); self::getTools()->updateLayoutTitle(_root::getParam('projet')); } _root::redirect('builder::list'); } $oTpl = new _tpl('builder::new'); $oTpl->iswritable = is_writable(_root::getConfigVar('path.generation')); $this->oLayout->add('main', $oTpl); } public function _marketBuilder() { $this->oLayout->addModule('main', 'mods_builder_market::menu'); $this->oLayout->addModule('main', 'mods_builder_market::index'); } public function _export() { $tReturn = $this->processExport(); $this->oLayout->setLayout('templateProjet'); $oTplList = $this->getList(); $this->oLayout->add('list', $oTplList); $this->oLayout->addModule('nav', 'menu::export'); $oTpl = new _tpl('builder::export'); $oTpl->tReturn = $tReturn; $this->oLayout->add('main', $oTpl); } private function processExport() { if (!_root::getRequest()->isPost()) { return array(); } $sFrom = _root::getConfigVar('path.generation') . _root::getParam('from') . '/'; $sTo = _root::getParam('to') . '/' . _root::getParam('from'); $oDir = new _dir($sTo); if ($oDir->exist()) { return array('error' => 'Repertoire ' . $sTo . ' existe deja'); } if (!in_array(_root::getParam('lib'), array('link', 'copy'))) { return array('error' => 'Veuillez sélectionner un choix pour la librairie du framework'); } $oModelProject = model_mkfbuilderprojet::getInstance()->copyFromTo($sFrom, $sTo); if (_root::getParam('lib') == 'link') { $sLib = __DIR__; $sLib = str_replace('module/builder', 'lib/framework/', $sLib); $this->updateLibPathInConf($sTo, $sLib); $detail = 'Projet crée dans ' . $sTo; $detail .= '
Dans votre projet, la librairie du framework pointe sur ' . $sLib; return array('ok' => 'Projet bien exporté sur ' . $sTo, 'detail' => $detail); } else if (_root::getParam('lib') == 'copy') { $oDir = new _dir($sTo . '/lib/'); $oDir->save(); //copy du framework $oModelProject = model_mkfbuilderprojet::getInstance()->copyFromTo('lib/framework', $sTo . '/lib/mkframework'); $sLib = '../lib/mkframework/'; $this->updateLibPathInConf($sTo, $sLib); $detail = 'Projet crée dans ' . $sTo; $detail .= '
Dans votre projet, la librairie du framework a ete copie dans ' . $sLib; return array('ok' => 'Projet bien exporté sur ' . $sTo, 'detail' => $detail); } } private function updateLibPathInConf($sProject, $sLib) { //replace link library $oIniFile = new _file($sProject . '/conf/site.ini.php'); $tIni = $oIniFile->getTab(); $tNewIni = array(); $bSection = 0; foreach ($tIni as $line) { if (preg_match('/\[path\]/', $line)) { $bSection = 1; } else if ($bSection && substr($line, 0, 3) == 'lib') { $line = 'lib=' . $sLib; } $tNewIni[] = $line; } $oIniFile->setContent(implode($tNewIni, "")); $oIniFile->save(); } public function _edit() { self::setLayout('templateProjet'); //$this->oLayout->setLayout('templateProjet'); //$oTplList=$this->getList(); //$this->oLayout->add('list',$oTplList); $this->oLayout->addModule('nav', 'mods_builder_menu::project'); if (_root::getParam('action')) { $oTpl = new _tpl('builder::edit'); $this->oLayout->add('main', $oTpl); } if (_root::getParam('action')) { $this->oLayout->addModule('main', _root::getParam('action')); } $this->oLayout->setLayout(self::$sLayout); } public function _editembedded() { $this->oLayout->setLayout('templateProjetEmbedded'); $this->oLayout->addModule('nav', 'menu::projetEmbedded'); $oTpl = new _tpl('builder::edit'); $this->oLayout->add('main', $oTpl); if (_root::getParam('action')) { $this->oLayout->addModule('main', _root::getParam('action')); } } public function _lang() { $sLang = _root::getParam('switch'); $bChange = false; $iswritable = true; $messageOK = null; $messageNOK = null; $message = null; if (_root::getConfigVar('language.default') != $sLang) { $bChange = true; $ret = "\n"; $sContent = null; $sContent .= '[language]' . $ret; $sContent .= ';fr / en...' . $ret; $sContent .= 'default=' . $sLang . $ret; $sContent .= 'allow=fr,en' . $ret; //check writable $iswritable = is_writable(_root::getConfigVar('path.conf') . 'language.ini.php'); if ($iswritable) { file_put_contents(_root::getConfigVar('path.conf') . 'language.ini.php', $sContent); _root::redirect('builder::new'); } else { $messageNOK = sprintf(tr('builder::new_errorVotreRepertoirePasInscriptible'), _root::getConfigVar('path.conf') . 'language.ini.php'); $message = sprintf(tr('builder::langVousPouvezEcrire'), $sContent, _root::getConfigVar('path.conf') . 'language.ini.php'); } } else { $message = sprintf(tr('builder::langVotreLangueEstDeja'), $sLang); } $oTpl = new _tpl('builder::lang'); $oTpl->bChange = $bChange; $oTpl->messageOK = $messageOK; $oTpl->messageNOK = $messageNOK; $oTpl->message = $message; $this->oLayout->add('main', $oTpl); } public function after() { $this->oLayout->show(); } //------------------------------------------------ } ?>