/** !! * Sets up the html for the entire page. It starts by creating an array of all * modules that are present on the page and updates the array with the data for * the modules including name, type and placement. It then reviews settings for * the page based on page name and id. It then checks for administrator * permission. Finally it gets server data and calls { @link set_inner_template() } * and { @link generate_inner_html() } to create the page. * @param string $request_method if this is GET, get server information and * initialize the page * @param array $request_data contains information on what to display on the page */ function initializeModule($request_method, $request_data) { global $error_msg, $settings_new; $this->id = !empty($request_data['id']) ? $request_data['id'] : 0; $this->module = !empty($request_data['module']) ? $request_data['module'] : null; $mod_info = new ModulesInfo(array(PA::$core_dir . DIRECTORY_SEPARATOR . PA::$blockmodule_path, PA::$project_dir . DIRECTORY_SEPARATOR . PA::$blockmodule_path)); $condition = ModulesInfo::USER_MODULES_FILTER . " || " . ModulesInfo::GROUP_MODULES_FILTER . " || " . ModulesInfo::NETWORK_MODULES_FILTER; $modules = $mod_info->getModulesByCondition($condition); $module_info = null; $mod_selected = null; $mod_select_options = array(); $mod_select_options[" "] = " "; foreach ($modules as $module) { $mod_select_options[$module['name']] = $module['name']; if (@$request_data['module'] == $module['name']) { $mod_selected = $module['name']; $module_info['name'] = $module['name']; $module_info['module_type'] = $module['module_type']; $module_info['module_placement'] = $module['module_placement']; $module_info['status_points'] = 0; if (!empty($module['architecture_info']['has_init_module'])) { $module_info['status_points'] += 33; } if (!empty($module['architecture_info']['has_action_handler'])) { $module_info['status_points'] += 33; } if (!empty($module['architecture_info']['has_set_inner_tpl'])) { $module_info['status_points'] += 33; } } } asort($mod_select_options); $mod_tag_attrs = array('name' => "form_data[module]", 'onchange' => "javascript: document.location='" . PA_ROUTE_CREATE_DYN_PAGE . "?action=edit&id={$this->id}&module='+this.value"); $mod_select_tag = xHtml::selectTag($mod_select_options, $mod_tag_attrs, $mod_selected); $pages_default_setting = ModuleSetting::get_pages_default_setting('network'); $selected = null; $current_selecion = null; $select_options = array(); $select_options[" "] = "0"; foreach ($pages_default_setting as $page_details) { $select_options[$page_details->page_name] = $page_details->page_id; if (@$request_data['id'] == $page_details->page_id) { $selected = $page_details->page_id; $current_selection = $page_details; $restore_settings = $page_details->getPageSettings(); } } $tag_attrs = array('name' => "form_data[page_id]", 'onchange' => "javascript: document.location='" . PA_ROUTE_CREATE_DYN_PAGE . "?action=edit&module={$this->module}&id='+this.value"); $select_tag = xHtml::selectTag($select_options, $tag_attrs, $selected); $this->outer_template = 'outer_public_center_module.tpl'; // $this->shared_data['OVO_JE_DODANO'] = "Ovo je dodano unutar modula!"; $task_obj = Tasks::get_instance(); $tasks = $task_obj->get_tasks(); $permiss = array(); $permiss[] = 'configure_system'; // NOTE: system administrator permissions!! foreach ($tasks as $task) { $permiss[] = $task->task_value; } $this->adm_permissions = implode(', ', $permiss); if ($request_method == 'GET') { if (!empty($request_data['action']) && !empty($request_data['id']) && $request_data['action'] == 'edit') { $this->page = new DynamicPage((int) $request_data['id'], $settings_new); if (!empty($request_data['add'])) { $this->page->addModule($request_data['add'], $this->module); } $this->page->initialize(); } } $this->set_inner_template('center_inner_public.tpl'); // initial template $this->inner_HTML = $this->generate_inner_html(array('page_id' => $this->page_id, 'page' => $this->page, 'select_tag' => $select_tag, 'type' => 'theme', 'base_url' => PA_ROUTE_CREATE_DYN_PAGE, 'mod_select_tag' => $mod_select_tag, 'module_info' => $module_info, 'adm_permissions' => $this->adm_permissions)); }
/** !! * Gather all modules and their current status (active/inactive and where). * Also check to see if { @link restore_module_settings } is true in which * case return to the past settings by setting values to null. Once all the * data for the different objects to be displayed on the page has been * gathered pass the information into { @link generate_inner_html() }. * @param array $request_data contains the different selected Modules */ private function setupCustomizeModuleSettings($request_data) { $page_templates = $this->page_templates; $this->template_selected = !empty($request_data['page_template']) ? $request_data['page_template'] : null; $this->side_selected = !empty($request_data['side_module']) ? $request_data['side_module'] : null; $this->middle_selected = !empty($request_data['middle_module']) ? $request_data['middle_module'] : null; $module_settings = ModuleSetting::load_setting($this->pid, $this->assoc_id, $this->settings_type); // @todo: Should we enable restore defaults from XML for user and group pages ? $from_XML = $this->settings_type == 'network' ? true : false; $pages_default_setting = ModuleSetting::get_pages_default_setting($this->settings_type, true, $from_XML); $selected = null; $current_selecion = null; $select_options = array(); if ($this->settings_type == 'user') { $user_configurable_pages = array(PAGE_USER_PRIVATE, PAGE_USER_PUBLIC); foreach ($pages_default_setting as $page_details) { if (in_array($page_details->page_id, $user_configurable_pages)) { $select_options[$page_details->page_name] = $page_details->page_id; if ($this->pid == $page_details->page_id) { $selected = $page_details->page_id; $current_selection = $page_details; $restore_settings = $page_details->getPageSettings(); } } } } else { foreach ($pages_default_setting as $page_details) { $select_options[$page_details->page_name] = $page_details->page_id; if ($this->pid == $page_details->page_id) { $selected = $page_details->page_id; $current_selection = $page_details; $restore_settings = $page_details->getPageSettings(); } } } if ($this->restore_module_settings) { $module_settings = $restore_settings; $this->template_selected = null; $this->side_selected = null; $this->middle_selected = null; } $tag_attrs = array('name' => "form_data[page_id]", 'onchange' => "javascript: document.location='" . $this->url . "&pid='+this.value"); $select_tag = xHtml::selectTag($select_options, $tag_attrs, $selected); if (empty($module_settings['left'])) { $module_settings['left'] = array(); } if (empty($module_settings['middle'])) { $module_settings['middle'] = array(); } if (empty($module_settings['right'])) { $module_settings['right'] = array(); } if ($this->template_selected) { $selected_template = $this->template_selected; } else { $page_tmpl = trim($module_settings['page_template']); $available_templates = array_flip($this->page_templates); if (array_key_exists($page_tmpl, $available_templates)) { $selected_template = $available_templates[$page_tmpl]; } } $template_tag_attrs = array('name' => "form_data[page_template]", 'onchange' => "javascript: document.location='" . $this->url . "&pid={$this->pid}&page_template='+this.value"); $template_select_tag = xHtml::selectTag(array_flip($page_templates), $template_tag_attrs, $selected_template); $mod_info = new ModulesInfo(array(PA::$project_dir . DIRECTORY_SEPARATOR . PA::$blockmodule_path, PA::$core_dir . DIRECTORY_SEPARATOR . PA::$blockmodule_path)); $side_modules = $mod_info->getModulesByCondition($this->side_modules_condition); $middle_modules = $mod_info->getModulesByCondition($this->middle_modules_condition); $side_selected = null; $side_current_selecion = null; $side_select_options = array(); foreach ($side_modules as $s_module) { $side_select_options[$s_module['name']] = $s_module['name']; if (@$this->side_selected == $s_module['name']) { $side_selected = $s_module['name']; } } $side_select_options[" "] = " "; ksort($side_select_options); $side_tag_attrs = array('name' => "add_side_module", 'onchange' => "javascript: document.location='" . $this->url . "&pid={$this->pid}&page_template={$this->template_selected}&side_module='+this.value"); $side_select_tag = xHtml::selectTag($side_select_options, $side_tag_attrs, $side_selected); $middle_selected = null; $middle_current_selecion = null; $middle_select_options = array(); foreach ($middle_modules as $s_module) { $middle_select_options[$s_module['name']] = $s_module['name']; if (@$this->middle_selected == $s_module['name']) { $middle_selected = $s_module['name']; } } $middle_select_options[" "] = " "; ksort($middle_select_options); $middle_tag_attrs = array('name' => "add_middle_module", 'onchange' => "javascript: document.location='" . $this->url . "&pid={$this->pid}&page_template={$this->template_selected}&middle_module='+this.value"); $middle_select_tag = xHtml::selectTag($middle_select_options, $middle_tag_attrs, $middle_selected); if (!is_null($this->middle_selected)) { array_push($module_settings['middle'], $this->middle_selected); } if (!is_null($this->side_selected)) { array_push($module_settings['left'], $this->side_selected); } $side_dissabled = 'none'; switch ($selected_template) { case 'one': unset($module_settings['left']); unset($module_settings['right']); $side_dissabled = 'both'; $show_columns = array('middle'); break; case 'two': case 'two_l': case 'two_r': /* $all_modules = array_merge($module_settings['left'], $module_settings['right']); unset($module_settings['right']); $module_settings['left'] = $all_modules; $side_dissabled = 'right'; $show_columns = array('left', 'middle'); */ $show_columns = array('left', 'middle', 'right'); break; case 'three': $show_columns = array('left', 'middle', 'right'); break; } $this->set_inner_template('module_selector.tpl'); $this->inner_HTML = $this->generate_inner_html(array('page_id' => $this->pid, 'page_url' => $this->url, 'base_url' => $this->base_url, 'uid' => $this->uid, 'gid' => $this->gid, 'module_settings' => $module_settings, 'pages_default_setting' => $pages_default_setting, 'type' => 'module', 'settings_type' => $this->settings_type, 'select_tag' => $select_tag, 'template_select_tag' => $template_select_tag, 'side_select_tag' => $side_select_tag, 'middle_select_tag' => $middle_select_tag, 'current_selection' => $current_selection, 'side_dissabled' => $side_dissabled, 'show_columns' => $show_columns)); }