Пример #1
0
 /**
  * Renders and caches the JavaScript for a builder layout.
  *
  * @since 1.0
  * @return void
  */
 public static function render_js()
 {
     // Delete the old file.
     FLBuilderModel::delete_asset_cache('js');
     // Get info on the new file.
     $nodes = FLBuilderModel::get_categorized_nodes();
     $global_settings = FLBuilderModel::get_global_settings();
     $rows = FLBuilderModel::get_nodes('row');
     $asset_info = FLBuilderModel::get_asset_info();
     $compiled = array();
     $js = '';
     // Layout config object.
     ob_start();
     include FL_BUILDER_DIR . 'includes/layout-js-config.php';
     $js .= ob_get_clean();
     // Main JS
     $js .= file_get_contents(FL_BUILDER_DIR . 'js/fl-builder-layout.js');
     // Loop through the rows.
     foreach ($nodes['rows'] as $row) {
         // Setup row vars
         $settings = $row->settings;
         $id = $row->node;
         // Include the row instance JS
         ob_start();
         include FL_BUILDER_DIR . 'includes/row-js.php';
         $js .= ob_get_clean();
     }
     // Loop through the modules.
     foreach ($nodes['modules'] as $module) {
         // Global module JS
         $file = $module->dir . 'js/frontend.js';
         if (file_exists($file) && !in_array($module->settings->type, $compiled)) {
             $js .= "\n" . file_get_contents($file);
             $compiled[] = $module->settings->type;
         }
         // Instance module JS
         $file = $module->dir . 'includes/frontend.js.php';
         $settings = $module->settings;
         $id = $module->node;
         if (file_exists($file)) {
             ob_start();
             include $file;
             $js .= ob_get_clean();
         }
     }
     // Add the path legacy vars (FLBuilderLayoutConfig.paths should be used instead).
     $js .= "var wpAjaxUrl = '" . admin_url('admin-ajax.php') . "';";
     $js .= "var flBuilderUrl = '" . FL_BUILDER_URL . "';";
     // Call the FLBuilder._renderLayoutComplete method if we're currently editing.
     if (stristr($asset_info['js'], '-draft.js') || stristr($asset_info['js'], '-preview.js')) {
         $js .= "; if(typeof FLBuilder !== 'undefined' && typeof FLBuilder._renderLayoutComplete !== 'undefined') FLBuilder._renderLayoutComplete();";
     }
     // Include FLJSMin
     if (!class_exists('FLJSMin')) {
         include FL_BUILDER_DIR . 'classes/class-fl-jsmin.php';
     }
     // Save the js
     if (!empty($js)) {
         file_put_contents($asset_info['js'], FLJSMin::minify($js));
     }
 }
 /**
  * Checks to see if all modules in a node support partial refresh.
  *
  * @since 1.7
  * @access private
  * @param object $node The node to check.
  * @return bool
  */
 private static function node_modules_support_partial_refresh($node)
 {
     $nodes = FLBuilderModel::get_categorized_nodes();
     if ('row' == $node->type) {
         $template_post_id = FLBuilderModel::is_node_global($node);
         foreach ($nodes['groups'] as $group) {
             if ($node->node == $group->parent || $template_post_id && $node->template_node_id == $group->parent) {
                 foreach ($nodes['columns'] as $column) {
                     if ($group->node == $column->parent) {
                         foreach ($nodes['modules'] as $module) {
                             if ($column->node == $module->parent) {
                                 if (!$module->partial_refresh) {
                                     return false;
                                 }
                             }
                         }
                     }
                 }
             }
         }
     } else {
         if ('column-group' == $node->type) {
             foreach ($nodes['columns'] as $column) {
                 if ($node->node == $column->parent) {
                     foreach ($nodes['modules'] as $module) {
                         if ($column->node == $module->parent) {
                             if (!$module->partial_refresh) {
                                 return false;
                             }
                         }
                     }
                 }
             }
         } else {
             if ('column' == $node->type) {
                 foreach ($nodes['modules'] as $module) {
                     if ($node->node == $module->parent) {
                         if (!$module->partial_refresh) {
                             return false;
                         }
                     }
                 }
             }
         }
     }
     return true;
 }
Пример #3
0
 /**
  * Renders the JavaScript for all modules in a single column.
  *
  * @since 1.7
  * @param string|object $col_id A column ID or object.
  * @return string
  */
 public static function render_column_modules_js($col_id)
 {
     $col = is_object($col_id) ? $col_id : FLBuilderModel::get_node($col_id);
     $nodes = FLBuilderModel::get_categorized_nodes();
     $compiled = array();
     $js = '';
     // Render the JS.
     foreach ($nodes['modules'] as $module) {
         if ($col->node == $module->parent) {
             $js .= self::render_module_js($module, $compiled);
         }
     }
     // Return the JS.
     return $js;
 }