<?php class PhpCodeForPosts_Menu { const MENU_PAGE_TITLE = 'PHP Code For Posts'; const MENU_TITLE = 'PHP Code'; const MENU_CAPABILITY = 'manage_options'; const MENU_SLUG = 'phppc_menu'; const MENU_ICON_URL = 'php-icon.png'; public function __construct() { if (!is_admin()) return; add_action( 'admin_menu' , array( __CLASS__ , 'add_menu_page' ) ); add_action( 'wp_enqueue_scripts', array( __CLASS__ , 'add_menu_scripts' ) ); add_action( 'wp_enqueue_styles', array( __CLASS__ , 'add_menu_styles' ) ); } static function get_menu_page_title() { return __("PHP Code For Posts", "phpcodeforposts"); } static function get_menu_title() { return __("PHP Code", "phpcodeforposts"); } public static function add_menu_page() { $menu_position = PhpCodeForPosts::$options->get_option(PhpCodeForPosts_Options::OPTION_MENUPOSITION); if ( $menu_position == PhpCodeForPosts_Options::VALUE_MENUPOSITION_TOP ) { $menu_page = add_menu_page( self::get_menu_page_title(), self::get_menu_title(), self::MENU_CAPABILITY, self::MENU_SLUG, array( __CLASS__, 'show_menu_page' ), PhpCodeForPosts::web_path_it( self::MENU_ICON_URL ) ); } elseif ( $menu_position == PhpCodeForPosts_Options::VALUE_MENUPOSITION_SUB ) { $menu_page = add_submenu_page( 'tools.php', self::get_menu_page_title(), self::get_menu_title(), self::MENU_CAPABILITY, self::MENU_SLUG, array( __CLASS__, 'show_menu_page' ) ); } self::add_menu_styles($menu_page); self::add_menu_scripts($menu_page); } public static function add_menu_styles() { wp_register_style( 'phppc_styles', PhpCodeForPosts::web_path_it( 'style.css' ) ); wp_enqueue_style( 'phppc_styles' ); if( PhpCodeForPosts::$options->get_option( 'enable_richeditor' ) ) { wp_register_style( 'phppc_codemirror', PhpCodeForPosts::web_path_it( 'Codemirror/lib/codemirror.css' ) ); wp_enqueue_style( 'phppc_codemirror' ); } } public static function add_menu_scripts() { wp_register_script( 'phppc_script', PhpCodeForPosts::web_path_it( 'PHPPostCode.js' ), array( 'jquery' ) ); wp_enqueue_script( 'phppc_script' ); if( PhpCodeForPosts::$options->get_option( 'enable_richeditor' ) ) { wp_register_script( 'Codemirror_lang_clike', PhpCodeForPosts::web_path_it( 'Codemirror/lang/clike.js' ) ); wp_register_script( 'Codemirror_lang_css', PhpCodeForPosts::web_path_it( 'Codemirror/lang/css.js' ) ); wp_register_script( 'Codemirror_lang_htmlmixed', PhpCodeForPosts::web_path_it( 'Codemirror/lang/htmlmixed.js' ) ); wp_register_script( 'Codemirror_lang_javascript', PhpCodeForPosts::web_path_it( 'Codemirror/lang/javascript.js' ) ); wp_register_script( 'Codemirror_lang_php', PhpCodeForPosts::web_path_it( 'Codemirror/lang/php.js' ) ); wp_register_script( 'Codemirror_lang_xml', PhpCodeForPosts::web_path_it( 'Codemirror/lang/xml.js' ) ); wp_register_script( 'Codemirror_addon_matchbrackets', PhpCodeForPosts::web_path_it( 'Codemirror/addon/matchbrackets.js' ) ); wp_register_script( 'Codemirror', PhpCodeForPosts::web_path_it( 'Codemirror/lib/codemirror.js' ) ); wp_enqueue_script( 'Codemirror' ); wp_enqueue_script( 'Codemirror_lang_clike' ); wp_enqueue_script( 'Codemirror_lang_css' ); wp_enqueue_script( 'Codemirror_lang_htmlmixed' ); wp_enqueue_script( 'Codemirror_lang_javascript' ); wp_enqueue_script( 'Codemirror_lang_php' ); wp_enqueue_script( 'Codemirror_lang_xml' ); wp_enqueue_script( 'Codemirror_addon_matchbrackets' ); } } public static function show_menu_page() { $action = isset( $_GET['action'] ) ? $_GET['action'] : ''; switch( $action ) { case 'dismissmultisitemessage': PhpCodeForPosts::$options->set_option( 'multisite_setup', 1 ); PhpCodeForPosts::$options->save_options(); case '': case 'delete': include PhpCodeForPosts::directory_path_it( 'templates/admin-index-top.tpl' ); self::show_menu_page_default(); break; case 'edit': case 'add': if ( PhpCodeForPosts::$options->snippet_modifications_allowed() ) { include PhpCodeForPosts::directory_path_it( 'templates/admin-index-top-edit.tpl' ); self::show_menu_page_edit(); break; } self::show_menu_page_notallowed(); } include PhpCodeForPosts::directory_path_it( 'templates/admin-index-bottom.tpl' ); } public static function show_menu_page_default() { if(! PhpCodeForPosts_Install::check_plugin_table_exists() ) { PhpCodeForPosts_Install::upgrade_table(); } include PhpCodeForPosts::directory_path_it( 'templates/admin-index-default.tpl' ); } public static function show_menu_page_edit() { if(! PhpCodeForPosts::check_nonce( $_REQUEST['actioncode'], $_REQUEST['item'], $_REQUEST['action'] ) ) { echo 'An Error Occured'; return ; } if ($_REQUEST['item'] == 0) { $snippet = new PhpCodeForPosts_Snippet(); } else { $snippet = PhpCodeForPosts_Database::load_single_snippet( $_REQUEST['item'] ); } include PhpCodeForPosts::directory_path_it( 'templates/admin-index-edit.tpl' ); } public static function show_menu_page_notallowed() { include PhpCodeForPosts::directory_path_it( 'templates/admin-index-top-notallowed.tpl' ); include PhpCodeForPosts::directory_path_it( 'templates/admin-index-notallowed.tpl' ); } }