Created
February 4, 2015 16:50
-
-
Save raidenz/ba30c7366d1209ad8e80 to your computer and use it in GitHub Desktop.
plugin_setup.class.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
#PLUGIN CONFIG | |
class hslider_setup{ | |
#CLASS VARS | |
private $capability = 'publish_posts'; | |
private $plugin_name; | |
private $plugin_friendly_name; | |
private $plugin_version; | |
private $plugin_prefix; | |
private $plugin_dir; | |
private $plugin_url; | |
private $first_release; | |
private $last_update; | |
private $plugin_friendly_description; | |
private $display; | |
#CONSTRUCT | |
public function __construct($plugin_name,$plugin_dir,$plugin_url,$plugin_friendly_name,$plugin_version,$plugin_prefix,$first_release,$last_update,$plugin_friendly_description){ | |
//define class vars | |
$this->plugin_name = $plugin_name; | |
$this->plugin_dir = $plugin_dir; | |
$this->plugin_url = $plugin_url; | |
$this->plugin_friendly_name = $plugin_friendly_name; | |
$this->plugin_version = $plugin_version; | |
$this->plugin_prefix = $plugin_prefix; | |
$this->first_release = $first_release; | |
$this->last_update = $last_update; | |
$this->plugin_friendly_description = $plugin_friendly_description; | |
//construct admin menu | |
add_action('admin_menu', array($this, 'construct_admin_menu')); | |
//add meta | |
add_action('admin_head',array($this,'add_admin_meta')); | |
//load javascript | |
//$this->load_admin_javascript(); | |
//denadd admin enqueue | |
add_action( 'admin_enqueue_scripts', array($this, 'load_admin_javascript')); | |
//load css | |
//$this->load_admin_css(); | |
//denadd admin enqueue | |
add_action( 'admin_enqueue_scripts', array($this, 'load_admin_css')); | |
//denadd test register all script and styles early; | |
add_action( 'wp_enqueue_scripts', array($this, 'load_all_front_script')); | |
//instantiate display class | |
$this->display = new hslider_display($this->plugin_dir); | |
//initialise shortcode listener | |
$shortcode = new hslider_shortcodes($this->plugin_name,$this->plugin_dir,$this->plugin_url); | |
add_action('init', array(&$shortcode,'initialise_shortcode_listener')); | |
} | |
//denadd register early | |
public function load_all_front_script(){ | |
wp_register_style($this->plugin_prefix .'userstyles', $this->plugin_url .'assets/css/user_styles.css'); | |
wp_enqueue_style($this->plugin_prefix .'userstyles'); | |
wp_register_script($this->plugin_prefix .'css_plugin', $this->plugin_url .'assets/js/plugins/CSSPlugin.js'); | |
wp_enqueue_script($this->plugin_prefix .'css_plugin'); | |
wp_register_script($this->plugin_prefix .'easepack', $this->plugin_url .'assets/js/easing/EasePack.js'); | |
wp_enqueue_script($this->plugin_prefix .'easepack'); | |
wp_register_script($this->plugin_prefix .'tweenlite', $this->plugin_url .'assets/js/TweenLite.js'); | |
wp_enqueue_script($this->plugin_prefix .'tweenlite'); | |
} | |
#PAGE LOADER | |
public function load_page(){ | |
//get menu slug | |
$menu_slug = $_GET['page']; | |
$page = $this->plugin_dir .'/views/'. $menu_slug .'.php'; | |
//load page content | |
if(file_exists($page)){ | |
$this->display->output_admin($page,$this->plugin_friendly_name,$this->plugin_version,$this->plugin_url,$this->first_release,$this->last_update, $this->plugin_friendly_description); | |
}else{ | |
echo 'The page '. $page .' does not exist.'; //unable to locate page | |
} | |
} | |
#CONSTRUCT ADMIN MENU FROM XML | |
public function construct_admin_menu(){ | |
//path to XML | |
$path_to_xml = $this->plugin_dir .'/xml/admin_menu.xml'; | |
if(file_exists($path_to_xml)){ //check if file exists | |
$xml = simplexml_load_file($path_to_xml); //load xml | |
//place main menu | |
$main_menu_slug; | |
foreach($xml->menu_item as $menu_item){ | |
if($menu_item['type'] == 'main'){ | |
add_menu_page($this->plugin_friendly_name .' | '. $menu_item->title, $menu_item->name , $this->capability, $menu_item->page, array(&$this,'load_page'), $this->plugin_url .$menu_item->icon); | |
$main_menu_slug = $menu_item->page; | |
break; | |
} | |
} | |
//place submenu | |
foreach($xml->menu_item as $menu_item){ | |
if($menu_item['type'] != 'main'){ | |
if($menu_item['type'] == 'hidden'){ | |
$slug = ''; | |
}else{ | |
$slug = $main_menu_slug; | |
} | |
add_submenu_page($slug, $menu_item->title, $menu_item->name, $this->capability, $menu_item->page, array(&$this,'load_page')); | |
} | |
} | |
}else{ | |
echo 'The file '. $path_to_xml .' does not exist.'; //unable to locate admin menu xml file | |
} | |
} | |
#ADD META TO ADMIN | |
public function add_admin_meta(){ | |
//load global helper | |
global $hslider_helper; | |
if(is_admin() && $hslider_helper->onAdmin()){ //admin panel | |
echo "<meta name='robots' content='noindex, nofollow' />\n"; | |
} | |
} | |
#LOAD JAVASCRIPT | |
public function load_admin_javascript(){ | |
//load global helper | |
global $hslider_helper; | |
//load jQuery | |
wp_enqueue_script('jquery'); | |
wp_enqueue_script('jquery-ui'); | |
wp_enqueue_script('jquery-effects-core'); | |
//load plugin js | |
if(is_admin() && $hslider_helper->onAdmin()){ //admin panel | |
//admin panel scripts | |
wp_register_script($this->plugin_prefix .'css_plugin', $this->plugin_url .'assets/js/plugins/CSSPlugin.js'); | |
wp_register_script($this->plugin_prefix .'easepack', $this->plugin_url .'assets/js/easing/EasePack.js'); | |
wp_register_script($this->plugin_prefix .'tweenlite', $this->plugin_url .'assets/js/TweenLite.js'); | |
//jQuery UI | |
wp_register_script('jQueryUI', '//code.jquery.com/ui/1.10.3/jquery-ui.js'); | |
wp_enqueue_script('jQueryUI'); | |
wp_enqueue_script($this->plugin_prefix .'css_plugin'); | |
wp_enqueue_script($this->plugin_prefix .'easepack'); | |
wp_enqueue_script($this->plugin_prefix .'tweenlite'); | |
} | |
} | |
#LOAD STYLES | |
public function load_admin_css(){ | |
//load global helper | |
global $hslider_helper; | |
//load plugin css | |
if(is_admin() && $hslider_helper->onAdmin()){ //admin panel | |
wp_register_style($this->plugin_prefix .'googlefonts', '//fonts.googleapis.com/css?family=Muli:300,400,300italic,400italic'); | |
wp_enqueue_style($this->plugin_prefix .'googlefonts'); | |
//admin panel css | |
wp_register_style($this->plugin_prefix .'adminstyles', $this->plugin_url .'assets/css/admin_styles.css'); | |
wp_enqueue_style($this->plugin_prefix .'adminstyles'); | |
//backend css | |
wp_register_style($this->plugin_prefix .'backendstyles', $this->plugin_url .'assets/css/backend_styles.css'); | |
wp_enqueue_style($this->plugin_prefix .'backendstyles'); | |
//jQuery UI | |
wp_register_style('jQueryUIcss', '//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css'); | |
wp_enqueue_style('jQueryUIcss'); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment