Ejemplo n.º 1
0
 /**
  * Load project
  */
 public function loadAction()
 {
     $file = Request::post('file', 'string', false);
     try {
         $project = Designer_Factory::loadProject($this->_config, $file);
     } catch (Exception $e) {
         Response::jsonError($this->_lang->WRONG_REQUEST);
     }
     $this->_session->set('loaded', true);
     $this->_session->set('project', serialize($project));
     $this->_session->set('file', $file);
     Response::jsonSuccess();
 }
Ejemplo n.º 2
0
 /**
  * Get related projects
  * @param Designer_Project $project
  * @param array & $list - result
  */
 protected function getRelatedProjects($project, &$list)
 {
     $projectConfig = $project->getConfig();
     if (isset($projectConfig['files']) && !empty($projectConfig['files'])) {
         foreach ($projectConfig['files'] as $file) {
             if (File::getExt($file) === '.js' || File::getExt($file) === '.css') {
                 continue;
             }
             $projectFile = $this->_config->get('configs') . $file;
             $subProject = Designer_Factory::loadProject($this->_config, $projectFile);
             $list[] = array('project' => $subProject, 'file' => $file);
             $this->getRelatedProjects($subProject, $list);
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * Gel list of JS files to include
  * (load and render designer project)
  * @param string $cacheKey
  * @param Designer_Project $project
  * @param boolean $selfInclude
  * @param array $replace
  * @return array
  */
 public static function getProjectIncludes($cacheKey, Designer_Project $project, $selfInclude = true, $replace = array())
 {
     $applicationConfig = Registry::get('main', 'config');
     $designerConfig = Config::factory(Config::File_Array, $applicationConfig->get('configs') . 'designer.php');
     $projectConfig = $project->getConfig();
     $includes = array();
     // include langs
     if (isset($projectConfig['langs']) && !empty($projectConfig['langs'])) {
         $language = Lang::getDefaultDictionary();
         $lansPath = $designerConfig->get('langs_path');
         $langsUrl = $designerConfig->get('langs_url');
         foreach ($projectConfig['langs'] as $k => $file) {
             $file = $language . '/' . $file . '.js';
             if (file_exists($lansPath . $file)) {
                 $includes[] = $langsUrl . $file . '?' . filemtime($lansPath . $file);
             }
         }
     }
     if (isset($projectConfig['files']) && !empty($projectConfig['files'])) {
         foreach ($projectConfig['files'] as $file) {
             $ext = File::getExt($file);
             if ($ext === '.js' || $ext === '.css') {
                 $includes[] = $designerConfig->get('js_url') . $file;
             } else {
                 $projectFile = $designerConfig->get('configs') . $file;
                 $subProject = Designer_Factory::loadProject($designerConfig, $projectFile);
                 $projectKey = self::getProjectCacheKey($projectFile);
                 $files = self::getProjectIncludes($projectKey, $subProject, true, $replace);
                 unset($subProject);
                 if (!empty($files)) {
                     $includes = array_merge($includes, $files);
                 }
             }
         }
     }
     Ext_Code::setRunNamespace($projectConfig['runnamespace']);
     Ext_Code::setNamespace($projectConfig['namespace']);
     if ($selfInclude) {
         $layoutCacheFile = Utils::createCachePath($applicationConfig->get('jsCacheSysPath'), $cacheKey . '.js');
         /**
          * @todo remove slow operation
          */
         if (!file_exists($layoutCacheFile)) {
             file_put_contents($layoutCacheFile, Code_Js_Minify::minify($project->getCode($replace)));
         }
         $includes[] = str_replace('./', '/', $layoutCacheFile);
     }
     /*
      * Project actions
      */
     $actionFile = $project->getActionsFile();
     /**
      * @todo slow operation
      */
     $mTime = 0;
     if (file_exists('.' . $actionFile)) {
         $mTime = filemtime('.' . $actionFile);
     }
     $includes[] = $actionFile . '?' . $mTime;
     return $includes;
 }