full name. */ public $tables; /** @var assignment_desk_install $installer handles install-time tasks. */ public $installer; /** * @var assignment_desk_index_controller $index_controller serves the activity feed views. */ public $index_controller; /** * @var assignment_desk_contributor_controller $contributor_controller serves * the contributor profile and assignment views. */ public $contributor_controller; /** * @var assignment_desk_dashboard_widgets $dashboard_widgets provides the widget. */ public $dashboard_widgets; /** * @var ad_settings provides all of the settings views */ public $settings; /** * Assignment Desk Constructor */ function __construct(){ global $wpdb; // Language Setup $locale = get_locale(); $mo = dirname(__FILE__) . "/languages/" . $this->localizationDomain . "-".$locale.".mo"; load_textdomain($this->localizationDomain, $mo); /** * Instantiate all of our classes before running initialization on each! * @todo All initialization should be abstracted to an 'init' function instead of in the constructor */ $this->custom_taxonomies = new ad_custom_taxonomies(); $this->user = new ad_user(); $this->post = new ad_post(); $this->manage_posts = new ad_manage_posts(); $this->settings = new ad_settings(); $this->public_views = new ad_public_views(); $this->general_options = get_option($this->get_plugin_option_fullname('general')); /** * Initialize various bits and pieces of functionality * @todo Should these be interchangeable and not have internal dependencies? */ $this->custom_taxonomies->init(); $this->user->init_user(); } function init() { if ( is_admin() ) { add_action( 'admin_menu', array(&$this, 'add_admin_menu_items')); add_action( 'admin_menu', array(&$this->custom_taxonomies, 'remove_assignment_status_post_meta_box') ); $this->manage_posts->init(); } else if (!is_admin()) { $this->public_views->init(); } } /** * Initialize the plugin for the admin */ function admin_init() { $this->add_admin_assets(); $this->settings->init(); } // Actions that happen only on activate. function activate_plugin() { $this->installer->setup_db(); } /** * Utility function */ function get_plugin_option_fullname( $name ) { return $this->options_group . $name; } /** * Check to see if Edit Flow is activated */ function edit_flow_exists() { if ( class_exists('edit_flow') ) { return true; } else { return false; } } /** * Check to see if Co-Authors Plus is activated */ function coauthors_plus_exists() { if ( class_exists('coauthors_plus') ) { return true; } else { return false; } } /** * Adds our CSS to the admin pages */ function add_admin_assets() { // Enqueue stylesheets wp_enqueue_style('ad-admin-css', ASSIGNMENT_DESK_URL.'css/admin.css', null, ASSIGMENT_DESK_VERSION, 'all'); // Enqueue necessary scripts wp_enqueue_script('tiny_mce'); wp_enqueue_script('wp-ajax-response'); wp_enqueue_script('jquery-truncator-js', ASSIGNMENT_DESK_URL .'js/jquery.truncator.js', array('jquery')); wp_enqueue_script('jquery-autocomplete-js', ASSIGNMENT_DESK_URL .'js/jquery.autocomplete.min.js', array('jquery')); } /** * Adds menu items for the plugin */ function add_admin_menu_items() { /** * Top-level Assignment Desk menu goes to Settings * @permissions Edit posts or higher */ add_menu_page('Assignment Desk', 'Assignment Desk', $this->define_admin_permissions, $this->top_level_page, array(&$this->settings, 'general_settings')); /** * WordPress taxonomy view for editing Pitch Statuses */ add_submenu_page($this->top_level_page, 'Assignment Statuses', 'Assignment Statuses', $this->define_editor_permissions, 'edit-tags.php?taxonomy='.$this->custom_taxonomies->assignment_status_label); /** * WordPress taxonomy view for editing User Types */ add_submenu_page($this->top_level_page, 'User Types', 'User Types', $this->define_editor_permissions, 'edit-tags.php?taxonomy='.$this->custom_taxonomies->user_type_label); /** * WordPress taxonomy view for editing User Roles */ add_submenu_page($this->top_level_page, 'User Roles', 'User Roles', $this->define_editor_permissions, 'edit-tags.php?taxonomy='.$this->custom_taxonomies->user_role_label); } } //End Class } //End if class exists statement global $assignment_desk; $assignment_desk = new assignment_desk(); // Core hooks to initialize the plugin add_action('init', array(&$assignment_desk,'init')); add_action('admin_init', array(&$assignment_desk,'admin_init')); // Hook to perform action when plugin activated register_activation_hook(ASSIGNMENT_DESK_FILE_PATH, array(&$assignment_desk, 'activate_plugin'));