public function __toString() { $this->_convertListeners(); $combo = Ext_Factory::object('Form_Field_Combobox'); $combo->setName($this->getName()); Ext_Factory::copyProperties($this, $combo); if ($this->isValidProperty('dictionary') && strlen($this->dictionary)) { $dM = new Dictionary_Manager(); if ($dM->isValidDictionary($this->dictionary)) { $allowBlank = false; if ($this->_config->allowBlank && !$this->_config->showAll) { $allowBlank = true; } if ($this->_config->isValidProperty('showAll') && !empty($this->_config->showAllText)) { $allText = $this->_config->showAllText; } else { $allText = false; } $data = Dictionary::getInstance($this->dictionary)->__toJs($this->_config->showAll, $allowBlank, $allText); if (strlen($data)) { $combo->store = 'Ext.create("Ext.data.Store",{ model:"app.comboStringModel", data: ' . $data . ' })'; } } } return $combo->getConfig()->__toString(); }
/** * Get list of existing ORM dictionaries */ public function listdictionariesAction() { $manager = new Dictionary_Manager(); $list = $manager->getList(); $data = array(); if (!empty($list)) { foreach ($list as $k => $v) { $data[] = array('id' => $v, 'title' => $v); } } Response::jsonArray($data); }
/** * Get list of dictionaries * return array */ public function getList() { if (!is_null(self::$_list)) { return array_keys(self::$_list); } $files = File::scanFiles($this->_path, array('.php'), false, File::Files_Only); $list = array(); if (!empty($files)) { foreach ($files as $path) { $name = substr(basename($path), 0, -4); $list[$name] = $path; } } $external = Dictionary::getExternal(); if (!empty($external)) { $list = array_merge($list, $external); } self::$_list = $list; if ($this->_cache) { $this->_cache->save($list, self::CACHE_KEY_LIST); } return array_keys($list); }
/** * Save changes * @return boolean */ public function saveChanges() { if (!$this->_data->save()) { return false; } $dm = new Dictionary_Manager(); $dm->resetCache(); return true; }
/** * Calculate cache key for Designer Project file * @param string $projectFile * @return string */ public static function getProjectCacheKey($projectFile) { /** * @todo remove slow operation */ $dManager = new Dictionary_Manager(); return md5(@filemtime($projectFile) . $projectFile . $dManager->getDataHash()); }
public function indexAction() { if (!$this->_session->keyExists('loaded') || !$this->_session->get('loaded')) { Response::put(''); exit; } $designerConfig = Config::factory(Config::File_Array, $this->_configMain['configs'] . 'designer.php'); $res = Resource::getInstance(); $res->addJs('/js/lib/jquery.js', 0); Model::factory('Medialib')->includeScripts(); $res->addJs('/js/app/system/SearchPanel.js'); $res->addJs('/js/app/system/HistoryPanel.js', 0); $res->addJs('/js/lib/ext_ux/RowExpander.js', 0); $res->addJs('/js/app/system/RevisionPanel.js', 1); $res->addJs('/js/app/system/EditWindow.js', 2); $res->addJs('/js/app/system/ContentWindow.js', 3); $res->addJs('/js/app/system/designer/viewframe/main.js', 4); $res->addJs('/js/app/system/designer/lang/' . $designerConfig['lang'] . '.js', 5); $project = $this->_getProject(); $projectCfg = $project->getConfig(); Ext_Code::setRunNamespace($projectCfg['runnamespace']); Ext_Code::setNamespace($projectCfg['namespace']); $grids = $project->getGrids(); if (!empty($grids)) { foreach ($grids as $name => $object) { if ($object->isInstance()) { continue; } $cols = $object->getColumns(); if (!empty($cols)) { foreach ($cols as $column) { $column['data']->itemId = $column['id']; } } $object->addListener('columnresize', '{ fn:function( ct, column, width,eOpts){ app.application.onGridColumnResize("' . $name . '", ct, column, width, eOpts); } }'); $object->addListener('columnmove', '{ fn:function(ct, column, fromIdx, toIdx, eOpts){ app.application.onGridColumnMove("' . $name . '", ct, column, fromIdx, toIdx, eOpts); } }'); } } $dManager = new Dictionary_Manager(); $key = 'vf_' . md5($dManager->getDataHash() . serialize($project)); $templates = $designerConfig->get('templates'); $replaces = array(array('tpl' => $templates['wwwroot'], 'value' => $this->_configMain->get('wwwroot')), array('tpl' => $templates['adminpath'], 'value' => $this->_configMain->get('adminPath')), array('tpl' => $templates['urldelimiter'], 'value' => $this->_configMain->get('urlDelimiter'))); $includes = Designer_Factory::getProjectIncludes($key, $project, true, $replaces); if (!empty($includes)) { foreach ($includes as $file) { if (File::getExt($file) == '.css') { $res->addCss($file, false); } else { $res->addJs($file, false, false); } } } $names = $project->getRootPanels(); $basePaths = array(); $parts = explode('/', $this->_configMain->get('wwwroot')); if (is_array($parts) && !empty($parts)) { foreach ($parts as $item) { if (!empty($item)) { $basePaths[] = $item; } } } $basePaths[] = $this->_configMain['adminPath']; $basePaths[] = 'designer'; $basePaths[] = 'sub'; //' . $project->getCode($replaces) . ' $initCode = ' app.delimiter = "' . $this->_configMain['urlDelimiter'] . '"; app.admin = "' . $this->_configMain->get('wwwroot') . $this->_configMain->get('adminPath') . '"; app.wwwRoot = "' . $this->_configMain->get('wwwroot') . '"; var applicationClassesNamespace = "' . $projectCfg['namespace'] . '"; var applicationRunNamespace = "' . $projectCfg['runnamespace'] . '"; var designerUrlPaths = ["' . implode('","', $basePaths) . '"]; var canDelete = true; var canPublish = true; var canEdit = true; Ext.onReady(function(){ app.application.mainUrl = app.createUrl(designerUrlPaths); '; if (!empty($names)) { foreach ($names as $name) { if ($project->getObject($name)->isExtendedComponent()) { if ($project->getObject($name)->getConfig()->defineOnly) { continue; } $initCode .= Ext_Code::appendRunNamespace($name) . ' = Ext.create("' . Ext_Code::appendNamespace($name) . '",{});'; } $initCode .= ' app.viewFrame.add(' . Ext_Code::appendRunNamespace($name) . '); '; } } $initCode .= ' app.application.fireEvent("projectLoaded"); });'; $res->addInlineJs($initCode); $tpl = new Template(); $tpl->lang = $this->_configMain['language']; $tpl->development = $this->_configMain['development']; $tpl->resource = $res; $tpl->useCSRFToken = Registry::get('backend', 'config')->get('use_csrf_token'); Response::put($tpl->render(Application::getTemplatesPath() . 'designer/viewframe.php')); }