Files
trestle/includes/admin/admin.php
T

288 lines
9.5 KiB
PHP
Raw Normal View History

<?php
/**
2014-10-16 11:28:58 -07:00
* Trestle admin functions.
*
* @since 1.0.0
*
* @package Trestle
*/
/**
2015-05-11 17:09:22 -07:00
* Set up Trestle default settings.
*
2015-05-11 17:09:22 -07:00
* @since 2.0.0
*
2015-03-19 15:11:50 -07:00
* @return array Genesis settings updated to include Trestle defaults.
*/
function trestle_settings_defaults() {
2015-03-19 15:11:50 -07:00
2015-04-30 13:00:21 -07:00
// Trestle default key/value pairs.
$trestle_defaults = array(
2015-04-30 15:11:54 -07:00
'layout' => 'solid',
'logo_id' => '',
'logo_id_mobile' => '',
2015-04-30 15:11:54 -07:00
'favicon_url' => '',
'nav_primary_location' => 'full',
2015-05-22 12:19:57 -07:00
'mobile_nav_toggle' => 'small-icon',
2015-04-30 15:11:54 -07:00
'search_in_nav' => '',
'read_more_text' => __( 'Read&nbsp;More&nbsp;&raquo;', 'trestle' ),
'revisions_number' => 3,
'footer_widgets_number' => 3,
'external_link_icons' => 0,
'email_link_icons' => 0,
'pdf_link_icons' => 0,
'doc_link_icons' => 0,
);
2015-04-30 13:00:21 -07:00
// Populate Trestle settings with default values if they don't yet exist.
$options = get_option( TRESTLE_SETTINGS_FIELD );
2015-04-30 13:00:21 -07:00
// Set up an empty array if we're running for the first time.
if ( ! $options ) {
$options = array();
}
// Bail early if the settings match the defaults.
if ( $options === $trestle_defaults ) {
return;
}
2015-03-19 15:11:50 -07:00
2015-04-30 13:00:21 -07:00
// Populate any defaults that are missing.
foreach ( $trestle_defaults as $k => $v ) {
2015-04-30 13:00:21 -07:00
// Check each key to only add the missing settings.
if ( ! array_key_exists( $k, $options ) ) {
$options[$k] = $v;
2015-04-30 13:00:21 -07:00
}
}
2015-04-30 13:00:21 -07:00
// Update options with defaults.
update_option( TRESTLE_SETTINGS_FIELD, $options );
2015-05-11 17:09:22 -07:00
}
/**
* Wrapper function to get Trestle options.
*
* @since 2.0.0
* @uses genesis_get_option()
*
* @return mixed Trestle option value.
*/
function trestle_get_option( $key, $setting = null, $use_cache = true ) {
// Set default to TRESTLE_SETTINGS_FIELD.
$setting = $setting ? $setting : TRESTLE_SETTINGS_FIELD;
return genesis_get_option( $key, $setting, false );
}
add_action( 'admin_enqueue_scripts', 'trestle_admin_actions' );
/**
* Loads admin scripts and styles.
*
* @since 1.0.0
*/
function trestle_admin_actions() {
2015-05-14 00:58:14 -07:00
// Google fonts.
$font_url = str_replace( ',', '%2C', '//fonts.googleapis.com/css?family=Lato:300,400,700' );
add_editor_style( $font_url );
// Include the main stylesheet in the editor.
2015-05-11 17:09:22 -07:00
add_editor_style( get_stylesheet_uri() );
}
add_filter( 'tiny_mce_before_init', 'trestle_tiny_mce_before_init' );
/**
* Add custom classes to the body of TinyMCE previews.
*
2015-06-23 12:32:11 -07:00
* @since 2.2.0
*/
function trestle_tiny_mce_before_init( $init_array ) {
global $post;
$screen = get_current_screen();
// If we're on an edit screen, add an appropriate 'post-id-XX' or 'page-id-XX'.
if ( 'edit' == $screen->parent_base ) {
// Custom post types always use 'post', so we only need to handle pages.
$post_type = ( 'page' == $post->post_type ) ? 'page' : 'post';
$init_array['body_class'] .= sprintf( ' %s-id-%s',
$post_type,
$post->ID
);
}
return $init_array;
}
2014-10-16 11:28:58 -07:00
add_action( 'tgmpa_register', 'trestle_register_required_plugins' );
/**
* Loads required & recommended plugins.
*
2015-03-19 15:11:50 -07:00
* Utilizes TGM Plugin Activation class:
* https://github.com/thomasgriffin/TGM-Plugin-Activation
*
* @since 1.0.0
*
2014-10-16 11:28:58 -07:00
* @see tgmpa() in /includes/classes/class-tgm-plugin-activation.php
*/
function trestle_register_required_plugins() {
2015-03-19 15:11:50 -07:00
$plugins = array(
// Required plugins
array(
'name' => 'Better Font Awesome',
'slug' => 'better-font-awesome',
'required' => true,
),
array(
'name' => 'Respond.js',
'slug' => 'respondjs',
'required' => true,
),
// Optional plugins
array(
'name' => 'Black Studio TinyMCE Widget',
'slug' => 'black-studio-tinymce-widget',
'required' => false,
),
2015-04-21 12:05:22 -07:00
array(
2015-06-08 16:41:26 -07:00
'name' => 'Easy FancyBox',
'slug' => 'easy-fancybox',
'required' => false,
2015-04-21 12:05:22 -07:00
),
array(
2015-06-08 16:41:26 -07:00
'name' => 'Equal Height Columns',
'slug' => 'equal-height-columns',
'required' => false,
),
array(
'name' => 'Exclude Pages',
'slug' => 'exclude-pages',
'required' => false,
),
array(
'name' => 'Genesis Simple Edits',
'slug' => 'genesis-simple-edits',
'required' => false,
),
array(
'name' => 'Google Analytics for WordPress',
'slug' => 'google-analytics-for-wordpress',
'required' => false,
),
array(
'name' => 'My Page Order',
'slug' => 'my-page-order',
'required' => false,
),
array(
'name' => 'Post Thumbnail Editor',
'slug' => 'post-thumbnail-editor',
'required' => false,
),
array(
'name' => 'Post Types Order',
'slug' => 'post-types-order',
'required' => false,
),
array(
'name' => 'Responsive Video Embeds',
'slug' => 'responsive-video-embeds',
'required' => false,
),
array(
'name' => 'Widget Context',
'slug' => 'widget-context',
'required' => false,
),
array(
'name' => 'Simple Image Sizes',
'slug' => 'simple-image-sizes',
'required' => false,
),
array(
'name' => 'Simple Section Navigation',
'slug' => 'simple-section-navigation',
'required' => false,
),
array(
'name' => 'Types - Custom Fields and Custom Post Types Management',
'slug' => 'types',
'required' => false,
),
array(
2015-06-08 16:41:26 -07:00
'name' => 'WordPress SEO by Yoast',
'slug' => 'wordpress-seo',
'required' => false,
),
2015-06-08 16:41:26 -07:00
);
2015-04-30 13:00:21 -07:00
// Change this to your theme text domain, used for internationalising strings.
2015-06-08 16:41:26 -07:00
$theme_text_domain = 'trestle';
/**
* Array of configuration settings. Amend each line as needed.
* If you want the default strings to be available under your own theme domain,
* leave the strings uncommented.
* Some of the strings are added into a sprintf, so see the comments at the
* end of each line for what each argument will be.
*/
$config = array(
'domain' => $theme_text_domain, // Text domain - likely want to be the same as your theme.
'default_path' => '', // Default absolute path to pre-packaged plugins
'parent_menu_slug' => 'themes.php', // Default parent menu slug
'parent_url_slug' => 'themes.php', // Default parent URL slug
'menu' => 'install-required-plugins', // Menu slug
'has_notices' => true, // Show admin notices or not
'is_automatic' => true, // Automatically activate plugins after installation or not
'message' => '', // Message to output right before the plugins table
'strings' => array(
'page_title' => __( 'Install Required Plugins', $theme_text_domain ),
'menu_title' => __( 'Install Plugins', $theme_text_domain ),
'installing' => __( 'Installing Plugin: %s', $theme_text_domain ), // %1$s = plugin name
'oops' => __( 'Something went wrong with the plugin API.', $theme_text_domain ),
'notice_can_install_required' => _n_noop( 'This theme requires the following plugin: %1$s.', 'This theme requires the following plugins: %1$s.' ), // %1$s = plugin name(s)
'notice_can_install_recommended' => _n_noop( 'Recommended plugin: %1$s.', 'Recommended plugins: %1$s.' ), // %1$s = plugin name(s)
'notice_cannot_install' => _n_noop( 'Sorry, but you do not have the correct permissions to install the %s plugin. Contact the administrator of this site for help on getting the plugin installed.', 'Sorry, but you do not have the correct permissions to install the %s plugins. Contact the administrator of this site for help on getting the plugins installed.' ), // %1$s = plugin name(s)
'notice_can_activate_required' => _n_noop( 'The following required plugin is currently inactive: %1$s.', 'The following required plugins are currently inactive: %1$s.' ), // %1$s = plugin name(s)
'notice_can_activate_recommended' => _n_noop( 'The following recommended plugin is currently inactive: %1$s.', 'The following recommended plugins are currently inactive: %1$s.' ), // %1$s = plugin name(s)
'notice_cannot_activate' => _n_noop( 'Sorry, but you do not have the correct permissions to activate the %s plugin. Contact the administrator of this site for help on getting the plugin activated.', 'Sorry, but you do not have the correct permissions to activate the %s plugins. Contact the administrator of this site for help on getting the plugins activated.' ), // %1$s = plugin name(s)
'notice_ask_to_update' => _n_noop( 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.' ), // %1$s = plugin name(s)
'notice_cannot_update' => _n_noop( 'Sorry, but you do not have the correct permissions to update the %s plugin. Contact the administrator of this site for help on getting the plugin updated.', 'Sorry, but you do not have the correct permissions to update the %s plugins. Contact the administrator of this site for help on getting the plugins updated.' ), // %1$s = plugin name(s)
'install_link' => _n_noop( 'Begin installing plugin', 'Begin installing plugins' ),
'activate_link' => _n_noop( 'Activate installed plugin', 'Activate installed plugins' ),
'return' => __( 'Return to Required Plugins Installer', $theme_text_domain ),
'plugin_activated' => __( 'Plugin activated successfully.', $theme_text_domain ),
'complete' => __( 'All plugins installed and activated successfully. %s', $theme_text_domain ), // %1$s = dashboard link
'nag_type' => 'updated' // Determines admin notice type - can only be 'updated' or 'error'
)
);
tgmpa( $plugins, $config );
2015-05-14 00:58:14 -07:00
}