/** * Renders the layout data for a new module. * * @since 1.7 * @param string $parent_id A column node ID. * @param int $position The new module position. * @param string $type The type of module. * @param string $template_id The ID of a module template to render. * @return array */ public static function render_new_module($parent_id, $position = false, $type = null, $template_id = null) { // Add a module template? if ($template_id) { $module = FLBuilderModel::apply_node_template($template_id, $parent_id, $position); } else { $module = FLBuilderModel::add_default_module($parent_id, $type, $position); } // Render the new module's settings. $settings = FLBuilder::render_module_settings($module->node, $module->settings->type, $module->parent, false); // Maybe render the module's parent for a partial refresh? if ($module->partial_refresh) { // Get the new module parent. $parent = !$parent_id ? null : FLBuilderModel::get_node($parent_id); // Get the node to render. if (!$parent) { $row = FLBuilderModel::get_module_parent('row', $module); $render_id = $row->node; } else { if ($parent->type == 'row') { $col = FLBuilderModel::get_module_parent('column-group', $module); $render_id = $col->node; } else { $render_id = $module->node; } } } else { $render_id = null; } // Return the response. return array('layout' => self::render($render_id), 'settings' => $settings['settings']); }