/** * setup form fields */ public function setUp() { $current_module_tab = hw__get('module'); //get current module setting tab $_GET['tab']==$_GET['module'] if (HW_HOANGWEB::is_current_screen(self::PAGE_SLUG) && hw__get('tab') && $current_module_tab && (!HW_Module::is_active($current_module_tab) || isset(self::$modules[$current_module_tab]) && !self::$modules[$current_module_tab]->option('enable_tab_settings'))) { wp_die('Xin lỗi: Module này chưa kích hoạt hoặc không có form cài đặt.'); } // Set the root menu (http://admin-page-framework.michaeluno.jp/en/v2/classes/AdminPageFramework_Menu.html) #$this->setRootMenuPage( 'Settings' ); // specifies to which parent menu to add. $this->setRootMenuPage('(H) Cấu hình modules', HW_HOANGWEB_URL . '/images/ie-gear-icon.png'); // Add the sub menus and the pages/ addSubMenuItems $this->addSubMenuItem(array('title' => 'Cấu hình modules', 'page_slug' => self::PAGE_SLUG)); /*$this->addSubMenuItem(array( 'title' => 'sdf', 'href' => self::get_module_setting_page('abc'), #'page_slug' => self::PAGE_SLUG ));*/ //define tabs $this->addInPageTabs(self::PAGE_SLUG, array('tab_slug' => 'modules-config', 'title' => __('Cấu hình chung'))); //add more tabs foreach (self::$modules as $name => $inst) { $info = HW_Plugins_Manager::get_module($name); if (!empty($info) && $inst->option('enable_tab_settings')) { $this->addInPageTab(array('tab_slug' => $name, 'title' => $info['name'])); // load + page slug + tab slug add_action('load_' . self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, '_replyToAddFormElements')); //triggered before rendering the page. add_action('do_before_' . self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'do_before_tab_hook')); // triggered in the middle of rendering the page. add_action('do_' . self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'do_tab_hook')); //triggered after rendering the page add_action('do_after_' . self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'do_after_tab_hook')); /** * filters */ //receives the output of the middle part of the page including form input fields. add_filter('content_' . self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'content_tab_filter')); /* ==> find in : hw-hoangweb\lib\admin-page-framework\development //receives the output of the top part of the page. add_filter('head_'. self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'head_tab_filter')); // receives the output of the bottom part of the page. add_filter('foot_'. self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'foot_tab_filter')); //receives the exporting array sent from the tab page. add_filter('export_'. self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'export_tab_filter')); //receives the importing array submitted from the tab page. add_filter('import_'. self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'import_tab_filter')); */ #add_filter(''. self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'tab_filter')); //receives the output of the CSS rules applied to the tab page of the slug. add_filter('style_' . self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'print_styles')); //receives the output of the JavaScript script applied to the tab page of the slug. add_filter('script_' . self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, 'print_scripts')); //receives the form submission values as array. The first parameter: submitted input array. The second parameter: the original array stored in the database. add_filter('validation_' . self::PAGE_SLUG . '_' . self::valid_tab_slug($name), array($inst, '_validation_tab_filter')); } } $this->setInPageTabTag('h2'); // sets the tag used for in-page tabs //submit button /*$this->addSettingFields( array( 'field_id' => 'submit_button', 'type' => 'submit', 'show_title_column' => false, ) );*/ }
/** * init module */ public static final function init() { $class = get_called_class(); if ($class) { $inst = new $class(); if (!$inst instanceof HW_Module) { return; } //get file name where a Class was Defined $reflector = new ReflectionClass($class); //path variables $inst->option('module_path', dirname($reflector->getFileName())); $module_slug = basename($inst->option('module_path')); $inst->option('module_name', $module_slug); $modules = HW_TGM_Module_Activation::get_register_modules(); if (isset($modules[$module_slug])) { $info = array_filter(HW_Plugins_Manager::get_module_info($reflector->getFileName())); //migrate module information if (!empty($info)) { $modules[$module_slug] = array_merge($modules[$module_slug], $info); } HW_Plugins_Manager::register_module($modules[$module_slug]); //update module data $inst->option('module_info', $modules[$module_slug]); } $inst->option('module_url', HW_HOANGWEB_PLUGINS_URL . '/' . $module_slug); HW_Module_Settings_page::add_module($module_slug, $inst); //setup actions belong to current module instance self::setup_actions($inst); //occur after all modules loaded add_action('hw_modules_loaded', array($inst, 'modules_loaded')); //after the module loaded if (method_exists($inst, 'module_loaded')) { $inst->module_loaded(); } //load cli class for the module $command = $inst->get_module_cli_path(); if (!empty($command) && defined('WP_CLI') && WP_CLI) { include_once $command; $cli_class = 'HW_CLI_' . HW_Validation::valid_objname($module_slug); //command line class WP_CLI::add_command($module_slug, strtoupper($cli_class)); //WP_CLI::get_command(); #wrong //add module commands to manager HW_CLI_Command_Utilities::get_instance()->register_cli_cmds($module_slug, HW_Core::get_child_class_methods($cli_class, ReflectionMethod::IS_PUBLIC)); } //load oher cli class for module $cli_files = $inst->get_commands(); if (is_array($cli_files)) { foreach ($cli_files as $cli) { //not found file to process command line, if (!$cli) { continue; } //!isset($cli['file']) purpose for module->register_cli that more cli class write in one file if (isset($cli['file'])) { include_once $cli['file']; } if (class_exists($cli['class'], false)) { WP_CLI::add_command($cli['command'], $cli['class']); //add module commands to manager HW_CLI_Command_Utilities::get_instance()->register_cli_cmds($cli['command'], HW_Core::get_child_class_methods($cli['class'], ReflectionMethod::IS_PUBLIC)); } } } } }