Skip to content

Instantly share code, notes, and snippets.

@raidenz
Created February 4, 2015 16:50
Show Gist options
  • Save raidenz/ba30c7366d1209ad8e80 to your computer and use it in GitHub Desktop.
Save raidenz/ba30c7366d1209ad8e80 to your computer and use it in GitHub Desktop.
plugin_setup.class.php
<?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