Example #1
0
 /**
  * Builds up module client cache files
  *
  * @param array $platforms A list of platforms to build for. Uses the first
  *                         platform in the list as the platform.
  * @param string $type     The type of file to create the cache for.
  * @param array $modules   The module to create the cache for.
  * @param MetaDataContextInterface|null $context Metadata context
  */
 public static function buildModuleClientCache($platforms, $type, $modules = array(), MetaDataContextInterface $context = null, $noCache = false)
 {
     if (is_string($modules)) {
         // They just want one module
         $modules = array($modules);
     } elseif (count($modules) == 0) {
         // They want all of the modules
         $modules = array_keys($GLOBALS['app_list_strings']['moduleList']);
     }
     if (!$context) {
         $context = new MetaDataContextDefault();
     }
     foreach ($modules as $module) {
         $seed = BeanFactory::getBean($module);
         $fileList = self::getClientFiles($platforms, $type, $module, $context, $seed);
         $moduleResults = self::getClientFileContents($fileList, $type, $module, $seed);
         if ($type == "view") {
             foreach ($moduleResults as $view => $defs) {
                 if (!is_array($defs) || empty($seed) || empty($seed->field_defs)) {
                     continue;
                 }
                 $meta = !empty($defs['meta']) ? $defs['meta'] : array();
                 $deps = array_merge(DependencyManager::getDependenciesForFields($seed->field_defs, ucfirst($view) . "View"), DependencyManager::getDependenciesForView($meta, ucfirst($view) . "View", $module));
                 if (!empty($deps)) {
                     if (!isset($meta['dependencies']) || !is_array($meta['dependencies'])) {
                         $moduleResults[$view]['meta']['dependencies'] = array();
                     }
                     foreach ($deps as $dep) {
                         $moduleResults[$view]['meta']['dependencies'][] = $dep->getDefinition();
                     }
                 }
             }
         }
         if ($noCache) {
             return $moduleResults;
         } else {
             $basePath = sugar_cached('modules/' . $module . '/clients/' . $platforms[0]);
             sugar_mkdir($basePath, null, true);
             $output = "<?php\n\$clientCache['" . $module . "']['" . $platforms[0] . "']['" . $type . "'] = " . var_export($moduleResults, true) . ";\n\n";
             sugar_file_put_contents_atomic($basePath . '/' . $type . '.php', $output);
         }
     }
 }
Example #2
0
 /**
  * createDependencyJavascript
  * Builds the javascript required to execute calculated/dependent fields
  * and module-view dependences.
  *
  * @param array $fieldDefs The fields defs for the current module.
  * @param array $viewDefs the viewdefs for the current view.
  * @param string $view the current view type.
  */
 function createDependencyJavascript($fieldDefs, $viewDefs, $view, $module = null)
 {
     //Use a doWhen to wait for the page to be fulled loaded (!SUGAR.util.ajaxCallInProgress())
     // TODO check if this isn't broken...
     $js = "<script type=text/javascript>\n" . "SUGAR.util.doWhen('!SUGAR.util.ajaxCallInProgress()', function(){\n" . "SUGAR.forms.AssignmentHandler.registerView('{$view}');\n";
     if ($view == 'ConvertLead') {
         $fieldDefs = $this->prepareCalculationFields($fieldDefs, $module);
     }
     $js .= DependencyManager::getLinkFields($fieldDefs, $view);
     $dependencies = array_merge(DependencyManager::getDependenciesForFields($fieldDefs, $view), DependencyManager::getDependenciesForView($viewDefs, $view, $module));
     foreach ($dependencies as $dep) {
         $js .= $dep->getJavascript($view);
     }
     //Detail views do not use the view name as the input ID.
     $viewId = $view == "DetailView" ? "{$module}_detailview_tabs" : $view;
     $js .= "\nYAHOO.util.Event.onContentReady('{$viewId}', SUGAR.forms.AssignmentHandler.loadComplete);";
     $js .= "});</script>";
     return $js;
 }