2014-01-16 13:40:07 -08:00
< ? php
/**
2014-10-16 11:28:58 -07:00
* Trestle admin functions.
2014-01-16 13:40:07 -08:00
*
* @since 1.0.0
*
* @package Trestle
*/
/**
2015-05-11 17:09:22 -07:00
* Set up Trestle default settings.
2014-01-16 13:40:07 -08:00
*
2015-05-11 17:09:22 -07:00
* @since 2.0.0
2014-01-16 13:40:07 -08:00
*
2015-03-19 15:11:50 -07:00
* @return array Genesis settings updated to include Trestle defaults.
2014-01-16 13:40:07 -08:00
*/
2015-04-30 12:24:30 -07:00
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.
2015-04-30 12:24:30 -07:00
$trestle_defaults = array (
2015-04-30 15:11:54 -07:00
'layout' => 'solid' ,
2015-06-30 20:19:35 -07:00
'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 More »' , 'trestle' ),
'revisions_number' => 3 ,
'footer_widgets_number' => 3 ,
'external_link_icons' => 0 ,
'email_link_icons' => 0 ,
'pdf_link_icons' => 0 ,
'doc_link_icons' => 0 ,
2014-01-16 13:40:07 -08:00
);
2015-04-30 13:00:21 -07:00
// Populate Trestle settings with default values if they don't yet exist.
2015-04-30 12:24:30 -07:00
$options = get_option ( TRESTLE_SETTINGS_FIELD );
2014-01-16 13:40:07 -08:00
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 ) {
2014-01-16 13:40:07 -08:00
2015-04-30 13:00:21 -07:00
// Check each key to only add the missing settings.
if ( ! array_key_exists ( $k , $options ) ) {
2014-01-16 13:40:07 -08:00
$options [ $k ] = $v ;
2015-04-30 13:00:21 -07:00
}
2014-01-16 13:40:07 -08:00
}
2015-04-30 13:00:21 -07:00
// Update options with defaults.
2015-04-30 12:24:30 -07:00
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 () );
2014-01-16 13:40:07 -08:00
}
2015-05-27 14:38:05 -07:00
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
2015-05-27 14:38:05 -07:00
*/
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' );
2014-01-16 13:40:07 -08:00
/**
* Loads required & recommended plugins.
*
2015-03-19 15:11:50 -07:00
* Utilizes TGM Plugin Activation class:
2014-01-16 13:40:07 -08:00
* 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
2014-01-16 13:40:07 -08:00
*/
function trestle_register_required_plugins () {
2015-03-19 15:11:50 -07:00
2014-01-16 13:40:07 -08:00
$plugins = array (
// Required plugins
array (
2014-04-07 15:09:20 -07:00
'name' => 'Better Font Awesome' ,
'slug' => 'better-font-awesome' ,
2014-01-16 13:40:07 -08:00
'required' => true ,
),
2014-01-20 10:27:30 -08:00
array (
'name' => 'Respond.js' ,
'slug' => 'respondjs' ,
'required' => true ,
),
2014-01-16 13:40:07 -08:00
// 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
),
2014-01-16 13:40:07 -08:00
array (
2015-06-08 16:41:26 -07:00
'name' => 'Equal Height Columns' ,
'slug' => 'equal-height-columns' ,
2014-01-16 13:40:07 -08:00
'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 ,
),
2014-03-21 10:50:33 -07:00
array (
'name' => 'My Page Order' ,
'slug' => 'my-page-order' ,
'required' => false ,
),
2014-01-16 13:40:07 -08:00
array (
'name' => 'Post Thumbnail Editor' ,
'slug' => 'post-thumbnail-editor' ,
'required' => false ,
),
array (
2014-03-21 10:50:33 -07:00
'name' => 'Post Types Order' ,
'slug' => 'post-types-order' ,
2014-01-16 13:40:07 -08:00
'required' => false ,
),
2014-03-25 12:20:50 -07:00
array (
'name' => 'Responsive Video Embeds' ,
'slug' => 'responsive-video-embeds' ,
'required' => false ,
2015-06-30 20:53:35 -07:00
),
array (
'name' => 'RICG Responsive Images' ,
'slug' => 'ricg-responsive-images' ,
'required' => false ,
2014-03-25 12:20:50 -07:00
),
2014-01-16 13:40:07 -08:00
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' ,
2014-01-16 13:40:07 -08:00
'required' => false ,
),
2015-06-08 16:41:26 -07:00
2014-01-16 13:40:07 -08: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' ;
2014-01-16 13:40:07 -08:00
/**
* 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
}