20 Commits

Author SHA1 Message Date
Nathan Rice 357bc65a70 Only allow alphanumeric characters in IDs. fixes #10. 2017-03-01 19:48:53 -05:00
Nathan Rice 4e5bfa7caf Remove errors when no ID is passed. see #11. 2017-03-01 19:28:32 -05:00
Nathan Rice f96e67d4df Allow for empty ID. fixes #11. 2017-03-01 19:27:10 -05:00
Nathan Rice fde95b0dd7 Add header widget area support. fixes #7. 2017-03-01 18:48:22 -05:00
Nathan Rice 76e5f73e28 Begine updating readme.txt. 2017-03-01 18:17:23 -05:00
Nathan Rice 5a1b4bec6e Make ID field readonly. 2017-03-01 18:16:49 -05:00
Nathan Rice 2f6eb81ed6 Rewrite based on plugin boilerplate. 2017-03-01 17:38:34 -05:00
Nathan Rice 13505bdc2b Fix errors associated with variables not being set. see #8, #17. 2016-04-21 11:32:39 -04:00
Nathan Rice ed788e7432 Merge branch 'develop' 2015-09-29 17:19:05 -04:00
Nathan Rice 5d5b60de23 Grunt, POT. 2015-09-29 17:18:50 -04:00
Nick Croft 7395bd6db3 don't show metabox if both sidebars disabled
addresses #9
2014-06-25 13:10:30 -04:00
Nick Croft ee29d99335 Revert "Updated to simplify admin load"
This reverts commit 5300ec9601.
2014-06-20 10:22:55 -04:00
Nick Croft 5300ec9601 Updated to simplify admin load
added a class exist check before requiring the admin.php file to ensure
that the class will exist and removed the genesis_admin_menu hook to
simplify issues when working with the global admin class object.
2014-06-20 09:59:55 -04:00
Nick Croft ff6077078d Merge branch 'develop' 2014-06-10 10:57:54 -04:00
Nick Croft 8d371db957 Make admin object global
To make it easier to alter the admin behavior the admin object should
be made into a global variable. This addresses that.
2014-06-09 11:45:48 -04:00
Nathan Rice 4b8381b9ca Comment standard. 2013-08-26 20:10:32 -04:00
Nathan Rice 4ab113f4a8 Sync with develop. 2013-08-26 20:05:25 -04:00
Nathan Rice eeddc174f8 sweep. 2013-08-26 20:03:20 -04:00
Nathan Rice 62da09e2df Merge to master. 2013-08-26 15:08:01 -04:00
Nathan Rice 160fe214ed Clean slate. 2013-08-09 13:04:24 -04:00
23 changed files with 1249 additions and 670 deletions
+14
View File
@@ -0,0 +1,14 @@
# Default behavior
* text=auto
# Text files
*.php text
*.css text
*.js text
*.md text
# Binary files
*.png binary
*.jpg binary
*.gif binary
*.ico binary
+4
View File
@@ -0,0 +1,4 @@
.DS_Store
Thumbs.db
.svn
node_modules/
+5
View File
@@ -0,0 +1,5 @@
.git
.gitignore
.gitattributes
.svnignore
node_modules
+101
View File
@@ -0,0 +1,101 @@
'use strict';
module.exports = function(grunt) {
// Load tasks
require('load-grunt-tasks')(grunt);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
// Dependencies
// PHP
// Lint .php files for syntax errors
phplint: {
all: [ '*.php', 'lib/**/*.php' ]
},
// I18n
// Add text domain as last argument of i18n functions
addtextdomain: {
php: {
options: {
updateDomains: true
},
target: {
files: {
src: [
'*.php',
'lib/**/*.php'
]
}
}
}
},
// Check text domain is last argument of i18n functions
checktextdomain: {
options: {
text_domain: '<%= pkg.name %>',
keywords: [
'__:1,2d',
'_e:1,2d',
'_x:1,2c,3d',
'_ex:1,2c,3d',
'_n:1,2,4d',
'_nx:1,2,4c,5d',
'_n_noop:1,2,3d',
'_nx_noop:1,2,3c,4d',
'esc_attr__:1,2d',
'esc_html__:1,2d',
'esc_attr_e:1,2d',
'esc_html_e:1,2d',
'esc_attr_x:1,2c,3d',
'esc_html_x:1,2c,3d'
]
},
files: {
expand: true,
src: [
'*.php',
'includes/**/*.php'
]
}
},
// Build language .pot file
makepot: {
plugin: {
options: {
domainPath: '/languages',
processPot: function( pot ) {
pot.headers['report-msgid-bugs-to'] = 'StudioPress <translations@studiopress.com>';
pot.headers['last-translator'] = 'StudioPress <translations@studiopress.com>';
pot.headers['language-team'] = 'English <translations@studiopress.com>';
pot.headers['plural-forms'] = 'nplurals=2; plural=n != 1;';
pot.headers['x-generator'] = 'grunt-wp-i18n 0.4.4';
pot.headers['x-poedit-basepath'] = '.';
pot.headers['x-poedit-language'] = 'English';
pot.headers['x-poedit-country'] = 'UNITED STATES';
pot.headers['x-poedit-sourcecharset'] = 'utf-8';
pot.headers['x-poedit-keywordslist'] = '__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;';
pot.headers['x-poedit-bookmarks'] = '';
pot.headers['x-poedit-searchpath-0'] = '.';
pot.headers['x-textdomain-support'] = 'yes';
return pot;
},
type: 'wp-plugin'
}
}
},
});
};
+187
View File
@@ -0,0 +1,187 @@
<?php
class Genesis_Simple_Sidebars {
/**
* Plugin version
*/
public $plugin_version = '2.1.0';
/**
* Minimum WordPress version.
*/
public $min_wp_version = '4.7.2';
/**
* Minimum Genesis version.
*/
public $min_genesis_version = '2.4.2';
/**
* The plugin textdomain, for translations.
*/
public $plugin_textdomain = 'genesis-simple-sidebars';
/**
* The url to the plugin directory.
*/
public $plugin_dir_url;
/**
* The path to the plugin directory.
*/
public $plugin_dir_path;
/**
* The main settings field for this plugin.
*/
public $settings_field = 'ss-settings';
/**
* Core functions of sidebar registration and output.
*/
public $core;
/**
* Admin menu and settings page.
*/
public $admin;
/**
* Entry settings and metadata.
*/
public $entry;
/**
* Constructor.
*
* @since 2.1.0
*/
public function __construct() {
$this->plugin_dir_url = plugin_dir_url( __FILE__ );
$this->plugin_dir_path = plugin_dir_path( __FILE__ );
// For backward compatibility
define( 'SS_PLUGIN_DIR', $this->plugin_dir_path );
}
/**
* Initialize.
*
* @since 2.1.0
*/
public function init() {
register_activation_hook( __FILE__, array( $this, 'activation' ) );
$this->load_plugin_textdomain();
$this->includes();
$this->instantiate();
}
/**
* Plugin activation hook. Runs when plugin is activated.
*
* @since 2.1.0
*/
public function activation() {
if ( ! defined( 'PARENT_THEME_VERSION' ) || ! version_compare( PARENT_THEME_VERSION, $this->min_genesis_version, '>=' ) ) {
deactivate_plugins( plugin_basename( __FILE__ ) );
wp_die( sprintf( __( 'Sorry, you cannot run Genesis Simple Sidebars without WordPress %s and <a href="%s">Genesis %s</a>, or greater.', 'genesis-simple-sidebars' ), $this->min_wp_version, 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa', $this->min_genesis_version ) );
}
}
/**
* Load the plugin textdomain, for translation.
*
* @since 2.1.0
*/
public function load_plugin_textdomain() {
load_plugin_textdomain( $this->plugin_textdomain, false, $this->plugin_dir_path . 'languages/' );
}
/**
* All general includes.
*
* @since 2.1.0
*/
public function includes() {
//require_once( $this->plugin_dir_path . 'includes/functions.php' );
//require_once( $this->plugin_dir_path . 'includes/deprecated.php' );
}
/**
* Include the class file, instantiate the classes, create objects.
*
* @since 2.1.0
*/
public function instantiate() {
add_action( 'genesis_setup', array( $this, 'genesis_dependencies' ) );
}
/**
* Load and instantiate any Genesis dependencies.
*
* @since 2.1.0
*/
public function genesis_dependencies() {
require_once( $this->plugin_dir_path . 'includes/class-genesis-simple-sidebars-core.php' );
$this->core = new Genesis_Simple_Sidebars_Core;
$this->core->init();
// Anything beyond this point should only be loaded if in the admin.
if ( ! is_admin() ) {
return;
}
require_once( $this->plugin_dir_path . 'includes/class-genesis-simple-sidebars-entry.php' );
$this->entry = new Genesis_Simple_Sidebars_Entry;
$this->entry->init();
require_once( $this->plugin_dir_path . 'includes/class-genesis-simple-sidebars-term.php' );
$this->term = new Genesis_Simple_Sidebars_Term;
$this->term->init();
require_once( $this->plugin_dir_path . 'includes/class-genesis-simple-sidebars-admin.php' );
$this->admin = new Genesis_Simple_Sidebars_Admin;
$this->admin->admin_menu();
// For backward compatibility
global $_genesis_simple_sidebars;
$_genesis_simple_sidebars = $this->admin;
}
}
/**
* Helper function to retrieve the static object without using globals.
*
* @since 2.1.0
*/
function Genesis_Simple_Sidebars() {
static $object;
if ( null == $object ) {
$object = new Genesis_Simple_Sidebars;
}
return $object;
}
/**
* Initialize the object on `plugins_loaded`.
*/
add_action( 'plugins_loaded', array( Genesis_Simple_Sidebars(), 'init' ) );
@@ -13,6 +13,25 @@
*/
class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
/**
* Settings field.
*
* @since 2.1.0
*/
public $settings_field;
/**
* Constructor.
*/
public function __construct() {
$this->settings_field = Genesis_Simple_Sidebars()->settings_field;
// For backward compatibility
define( 'SS_SETTINGS_FIELD', $this->settings_field );
}
/**
* Create an admin menu item and settings page.
*
@@ -22,26 +41,24 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
*
* @see Genesis_Admin_Import_Export::actions() Handle creating, editing, and deleting sidebars.
*/
public function __construct() {
public function admin_menu() {
$page_id = 'simple-sidebars';
$menu_ops = array(
'submenu' => array(
'parent_slug' => 'genesis',
'page_title' => __( 'Genesis - Simple Sidebars', 'ss' ),
'menu_title' => __( 'Simple Sidebars', 'ss' )
'page_title' => __( 'Genesis - Simple Sidebars', 'genesis-simple-sidebars' ),
'menu_title' => __( 'Simple Sidebars', 'genesis-simple-sidebars' )
)
);
//* Empty, as we'll be building the page manually
// Empty, as we'll be building the page manually
$page_ops = array();
$settings_field = SS_SETTINGS_FIELD;
$this->create( $page_id, $menu_ops, $page_ops, $this->settings_field );
$this->create( $page_id, $menu_ops, $page_ops, $settings_field );
//* Simpe Sidebar actions (create, edit, or delete)
// Simpe Sidebar actions (create, edit, or delete)
add_action( 'admin_init', array( $this, 'actions' ) );
}
@@ -56,14 +73,14 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
*/
public function admin() {
$_sidebars = get_option( $this->settings_field );
echo '<div class="wrap">';
if ( isset( $_REQUEST['action'] ) && 'edit' == $_REQUEST['action'] )
require_once( SS_PLUGIN_DIR . '/includes/views/edit.php' );
else
require_once( SS_PLUGIN_DIR . '/includes/views/main.php' );
if ( isset( $_REQUEST['action'] ) && 'edit' == $_REQUEST['action'] ) {
require_once( Genesis_Simple_Sidebars()->plugin_dir_path . '/includes/views/admin-edit.php' );
}
else {
require_once( Genesis_Simple_Sidebars()->plugin_dir_path . '/includes/views/admin-main.php' );
}
echo '</div>';
@@ -104,8 +121,8 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
<?php if ( $is_editable ) : ?>
<br />
<div class="row-actions">
<span class="edit"><a href="<?php echo admin_url('admin.php?page=simple-sidebars&amp;action=edit&amp;id=' . esc_html( $id ) ); ?>"><?php _e('Edit', 'ss'); ?></a> | </span>
<span class="delete"><a class="delete-tag" href="<?php echo wp_nonce_url( admin_url( 'admin.php?page=simple-sidebars&amp;action=delete&amp;id=' . esc_html( $id ) ), 'simple-sidebars-action_delete-sidebar' ); ?>"><?php _e('Delete', 'ss'); ?></a></span>
<span class="edit"><a href="<?php echo admin_url('admin.php?page=simple-sidebars&amp;action=edit&amp;id=' . esc_html( $id ) ); ?>"><?php _e('Edit', 'genesis-simple-sidebars'); ?></a> | </span>
<span class="delete"><a class="delete-tag" href="<?php echo wp_nonce_url( admin_url( 'admin.php?page=simple-sidebars&amp;action=delete&amp;id=' . esc_html( $id ) ), 'simple-sidebars-action_delete-sidebar' ); ?>"><?php _e('Delete', 'genesis-simple-sidebars'); ?></a></span>
</div>
<?php endif; ?>
@@ -129,8 +146,9 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
*/
public function actions() {
if ( ! genesis_is_menu_page( 'simple-sidebars' ) )
if ( ! genesis_is_menu_page( 'simple-sidebars' ) ) {
return;
}
/**
* This section handles the data if a new sidebar is created
@@ -164,23 +182,24 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
*/
public function notices() {
if ( ! genesis_is_menu_page( 'simple-sidebars' ) )
if ( ! genesis_is_menu_page( 'simple-sidebars' ) ) {
return;
}
$pattern = '<div id="message" class="updated"><p><strong>%s</strong></p></div>';
if ( isset( $_REQUEST['created'] ) && 'true' === $_REQUEST['created'] ) {
printf( $pattern, __( 'New sidebar successfully created!', 'ss' ) );
printf( $pattern, __( 'New sidebar successfully created!', 'genesis-simple-sidebars' ) );
return;
}
if ( isset( $_REQUEST['edited'] ) && 'true' === $_REQUEST['edited'] ) {
printf( $pattern, __( 'Sidebar successfully edited!', 'ss' ) );
printf( $pattern, __( 'Sidebar successfully edited!', 'genesis-simple-sidebars' ) );
return;
}
if ( isset( $_REQUEST['deleted'] ) && 'true' === $_REQUEST['deleted'] ) {
printf( $pattern, __( 'Sidebar successfully deleted.', 'ss' ) );
printf( $pattern, __( 'Sidebar successfully deleted.', 'genesis-simple-sidebars' ) );
return;
}
@@ -196,34 +215,39 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
*/
protected function create_sidebar( $args = array() ) {
if ( empty( $args['name'] ) || empty( $args['id'] ) ) {
if ( empty( $args['name'] ) ) {
wp_die( $this->error( 1 ) );
exit;
}
//* nonce verification
// nonce verification
check_admin_referer( 'simple-sidebars-action_create-sidebar' );
//* WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
if ( is_numeric( $args['id'] ) )
$args['id'] = sanitize_title_with_dashes( $args['name'] );
// Change empty or numeric IDs to the name, lowercased and separated by dashes.
if ( empty( $args['id'] ) || is_numeric( $args['id'] ) ) {
$args['id'] = $args['name'];
}
// Strip all but alphanumeric, sanitize with dashes.
$id = preg_replace( "/[^a-zA-Z0-9 -]+/", "", sanitize_title_with_dashes( $args['id'] ) );
$db = (array) get_option( $this->settings_field );
$db = (array) get_option( SS_SETTINGS_FIELD );
$new = array(
sanitize_title_with_dashes( $args['id'] ) => array(
'name' => esc_html( $args['name'] ),
$id => array(
'name' => esc_html( $args['name'] ),
'description' => esc_html( $args['description'] )
)
),
);
if ( array_key_exists( $args['id'], $db ) ) {
if ( array_key_exists( $id, $db ) ) {
wp_die( $this->error( 2 ) );
exit;
}
$_sidebars = wp_parse_args( $new, $db );
update_option( SS_SETTINGS_FIELD, $_sidebars );
update_option( $this->settings_field, $_sidebars );
wp_redirect( admin_url( 'admin.php?page=simple-sidebars&created=true' ) );
exit;
@@ -242,17 +266,13 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
exit;
}
//* nonce verification
// nonce verification
check_admin_referer( 'simple-sidebars-action_edit-sidebar' );
//* WP changes a numeric sidebar id to sidebar-id which makes it inaccessible to the user
if ( is_numeric( $args['id'] ) )
$args['id'] = sanitize_title_with_dashes( $args['name'] );
$db = (array) get_option( SS_SETTINGS_FIELD );
$db = (array) get_option( $this->settings_field );
$new = array(
sanitize_title_with_dashes( $args['id'] ) => array(
'name' => esc_html( $args['name'] ),
$args['id'] => array(
'name' => esc_html( $args['name'] ),
'description' => esc_html( $args['description'] )
)
);
@@ -264,7 +284,7 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
$_sidebars = wp_parse_args( $new, $db );
update_option( SS_SETTINGS_FIELD, $_sidebars );
update_option( $this->settings_field, $_sidebars );
wp_redirect( admin_url( 'admin.php?page=simple-sidebars&edited=true' ) );
exit;
@@ -283,10 +303,10 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
exit;
}
//* nonce verification
// nonce verification
check_admin_referer( 'simple-sidebars-action_delete-sidebar' );
$_sidebars = (array) get_option( SS_SETTINGS_FIELD );
$_sidebars = (array) get_option( $this->settings_field );
if ( ! isset( $_sidebars[$id] ) ) {
wp_die( $this->error( 4 ) );
@@ -295,7 +315,7 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
unset( $_sidebars[$id] );
update_option( SS_SETTINGS_FIELD, $_sidebars );
update_option( $this->settings_field, $_sidebars );
wp_redirect( admin_url( 'admin.php?page=simple-sidebars&deleted=true' ) );
exit;
@@ -316,34 +336,22 @@ class Genesis_Simple_Sidebars_Admin extends Genesis_Admin_Basic {
switch( (int) $error ) {
case 1:
return __( 'Oops! Please choose a valid Name and ID for this sidebar', 'ss' );
return __( 'Oops! Please choose a valid Name for this sidebar', 'genesis-simple-sidebars' );
break;
case 2:
return __( 'Oops! That sidebar ID already exists', 'ss' );
return __( 'Oops! That sidebar ID already exists', 'genesis-simple-sidebars' );
break;
case 3:
return __( 'Oops! You are trying to edit a sidebar that does not exist, or is not editable', 'ss' );
return __( 'Oops! You are trying to edit a sidebar that does not exist, or is not editable', 'genesis-simple-sidebars' );
break;
case 4:
return __( 'Oops! You are trying to delete a sidebar that does not exist, or cannot be deleted', 'ss' );
return __( 'Oops! You are trying to delete a sidebar that does not exist, or cannot be deleted', 'genesis-simple-sidebars' );
break;
default:
return __( 'Oops! Something went wrong. Try again.', 'ss' );
return __( 'Oops! Something went wrong. Try again.', 'genesis-simple-sidebars' );
}
}
}
add_action( 'genesis_admin_menu', 'simplesidebars_settings_menu' );
/**
* Instantiate the class to create the menu.
*
* @since 1.0.0
*/
function simplesidebars_settings_menu() {
new Genesis_Simple_Sidebars_Admin;
}
@@ -0,0 +1,223 @@
<?php
/**
* Controls the core functions of registration and output of Sidebars
*
* @since 2.1.0
*/
class Genesis_Simple_Sidebars_Core {
/**
* The created sidebars.
*/
private $sidebars;
/**
* Public taxonomies.
*/
private $public_taxonomies;
/**
* Initialize the class.
*/
public function init() {
add_action( 'widgets_init', array( $this, 'register_sidebars' ) );
add_action( 'get_header', array( $this, 'swap_sidebars' ) );
}
/**
* Take created sidebars and register them with WordPress.
*
* @since 2.1.0
*/
public function register_sidebars() {
$sidebars = Genesis_Simple_Sidebars()->core->get_sidebars();
if ( ! $sidebars ) {
return;
}
// Cycle through created sidebars, register them as widget areas
foreach ( (array) $sidebars as $id => $info ) {
if ( ! isset( $info['name'] ) || ! isset( $info['description'] ) ) {
continue;
}
genesis_register_sidebar( array(
'name' => esc_html( $info['name'] ),
'id' => $id,
'description' => esc_html( $info['description'] ),
'editable' => 1,
) );
}
}
/**
* Remove default sidebars and inject custom sidebars.
*
* @since 2.1.0
*/
public function swap_sidebars() {
// Header
if ( is_registered_sidebar( 'header-right' ) ) {
global $wp_registered_sidebars;
$wp_registered_sidebars['ss-header-right-temp'] = $wp_registered_sidebars['header-right'];
unset( $wp_registered_sidebars['header-right'] );
add_action( 'genesis_header_right', array( $this, 'do_header_right' ) );
}
// Sidebars
remove_action( 'genesis_sidebar', 'genesis_do_sidebar' );
remove_action( 'genesis_sidebar_alt', 'genesis_do_sidebar_alt' );
add_action( 'genesis_sidebar', array( $this, 'do_primary_sidebar' ) );
add_action( 'genesis_sidebar_alt', array( $this, 'do_secondary_sidebar' ) );
}
/**
* Output custom header widget area, if one is set. Otherwise output default.
*
* @since 2.1.0
*/
public function do_header_right() {
global $wp_registered_sidebars;
if ( ! $this->do_sidebar( '_ss_header' ) ) {
$wp_registered_sidebars['header-right'] = $wp_registered_sidebars['ss-header-right-temp'];
}
unset( $wp_registered_sidebars['ss-header-right-temp'] );
}
/**
* Output custom primary sidebar, if one is set. Otherwise output default.
*
* @since 2.1.0
*/
public function do_primary_sidebar() {
if ( ! $this->do_sidebar( '_ss_sidebar' ) ) {
genesis_do_sidebar();
}
}
/**
* Output custom secondary sidebar, if one is set. Otherwise output default.
*
* @since 2.1.0
*/
public function do_secondary_sidebar() {
if ( ! $this->do_sidebar( '_ss_sidebar_alt' ) ) {
genesis_do_sidebar_alt();
}
}
/**
* Show widgets in a particular sidebar.
*
* @param string $key sidebar id you wish to output.
*
* @since 2.1.0
*/
public function do_sidebar( $key ) {
if ( is_singular() && $key = genesis_get_custom_field( $key ) ) {
if ( dynamic_sidebar( $key ) ) {
return true;
}
}
if ( is_tax() || is_category() || is_tag() ) {
if ( $key = get_term_meta( get_queried_object()->term_id, $key, true ) ) {
dynamic_sidebar( $key );
return true;
}
}
return false;
}
/**
* Get all custom registered sidebars.
*
* @since 2.1.0
*/
public function get_sidebars( $cache = true ) {
if ( ! $cache ) {
return stripslashes_deep( get_option( Genesis_Simple_Sidebars()->settings_field ) );
}
if ( is_null( $this->sidebars ) ) {
$this->sidebars = stripslashes_deep( get_option( Genesis_Simple_Sidebars()->settings_field ) );
}
return $this->sidebars;
}
/**
* Return taxonomy ids.
*
* Helper function to return the array keys from a taxonomy query.
*
* @since 2.1.0
*/
public function get_public_taxonomies() {
if ( is_null( $this->public_taxonomies ) ) {
$this->public_taxonomies = get_taxonomies( array(
'show_ui' => true,
'public' => true,
) );
}
$this->public_taxonomies = apply_filters( 'genesis_simple_sidebars_taxonomies', array_keys( $this->public_taxonomies ) );
return $this->public_taxonomies;
}
/**
* Determines if this site has disabled 3 column layouts or not.
*
* @since 2.1.0
*/
public function has_3_column_layout() {
$layouts = genesis_get_layouts();
$three_column_layouts = array(
'content-sidebar-sidebar',
'sidebar-content-sidebar',
'sidebar-sidebar-content',
);
foreach ( $three_column_layouts as $layout ) {
if ( array_key_exists( $layout, $layouts ) ) {
return true;
}
}
return false;
}
}
@@ -0,0 +1,63 @@
<?php
class Genesis_Simple_Sidebars_Entry {
public function init() {
add_action( 'admin_menu', array( $this, 'add_metaboxes' ) );
add_action( 'save_post', array( $this, 'metabox_save' ), 1, 2 );
}
/**
* Cycle through supported post types and add metaboxes.
*
* @since 2.1.0
*/
public function add_metaboxes() {
foreach ( (array) get_post_types( array( 'public' => true ) ) as $type ) {
if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) {
add_meta_box( 'ss_inpost_metabox', __( 'Sidebar Selection', 'genesis-simple-sidebars' ), array( $this, 'metabox_content' ), $type, 'side', 'low' );
}
}
}
/**
* Include the metabox content.
*
* @since 2.1.0
*/
public function metabox_content() {
require_once( Genesis_Simple_Sidebars()->plugin_dir_path . 'includes/views/entry-metabox-content.php' );
print_r( get_post_meta( get_the_ID() ) );
}
/**
* Save the metabox fields when the entry is saved.
*
* @since 2.1.0
*/
public function metabox_save( $post_id, $post ) {
if ( ! isset( $_POST['genesis_simple_sidebars'] ) ) {
return;
}
$data = wp_parse_args( $_POST['genesis_simple_sidebars'], array(
'_ss_header' => '',
'_ss_sidebar' => '',
'_ss_sidebar_alt' => '',
) );
genesis_save_custom_fields( $data, 'genesis-simple-sidebars-save-entry', 'genesis-simple-sidebars-save-entry-nonce', $post );
}
}
@@ -0,0 +1,31 @@
<?php
class Genesis_Simple_Sidebars_Term {
public function init() {
add_action( 'init', array( $this, 'add_term_fields' ) );
}
public function add_term_fields() {
$taxonomies = Genesis_Simple_Sidebars()->core->get_public_taxonomies();
if ( ! empty( $taxonomies ) && is_admin() && is_array( $taxonomies ) ) {
foreach ( $taxonomies as $tax ) {
add_action( "{$tax}_edit_form", array( $this, 'term_sidebar_form' ), 9, 2 );
}
}
}
public function term_sidebar_form( $tag, $taxonomy ) {
require_once( Genesis_Simple_Sidebars()->plugin_dir_path . 'includes/views/term-edit-sidebar-form.php' );
}
}
+161
View File
@@ -0,0 +1,161 @@
<?php
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_activation_check() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 1.0.0
* @deprecated 2.1.0
*/
function ss_deactivate() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_genesis_init() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_register_sidebars() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_sidebars_init() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_do_sidebar() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_do_sidebar_alt() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_do_one_sidebar() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_get_taxonomies() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.2
* @deprecated 2.1.0
*/
function ss_has_3_column_layouts() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 1.0.0
* @deprecated 2.1.0
*/
function simplesidebars_settings_menu() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_add_inpost_metabox() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_inpost_metabox() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_inpost_metabox_save() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_term_edit_init() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
/**
* Deprecated.
*
* @since 0.9.0
* @deprecated 2.1.0
*/
function ss_term_sidebar() {
_deprecated_function( __FUNCTION__, '2.1.0' );
}
-102
View File
@@ -1,102 +0,0 @@
<?php
add_action('admin_menu', 'ss_add_inpost_metabox');
/**
* This bit of code registers the meta box on posts/pages,
* so that users can choose what sidebar to use.
*/
function ss_add_inpost_metabox() {
foreach ( (array) get_post_types( array( 'public' => true ) ) as $type ) {
if ( post_type_supports( $type, 'genesis-simple-sidebars' ) || $type == 'post' || $type == 'page' ) {
add_meta_box( 'ss_inpost_metabox', __( 'Sidebar Selection', 'ss' ), 'ss_inpost_metabox', $type, 'side', 'low' );
}
}
}
function ss_inpost_metabox() {
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
global $wp_registered_sidebars;
?>
<input type="hidden" name="ss_inpost_nonce" value="<?php echo wp_create_nonce( plugin_basename( __FILE__ ) ); ?>" />
<?php
if( isset( $wp_registered_sidebars['sidebar'] ) ) {
?>
<p>
<label class="howto" for="_ss_sidebar"><span><?php echo esc_attr( $wp_registered_sidebars['sidebar']['name'] ); ?><span></label>
<select name="_ss_sidebar" id="_ss_sidebar" style="width: 99%">
<option value=""><?php _e( 'Default', 'ss' ); ?></option>
<?php
foreach ( (array) $_sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, genesis_get_custom_field( '_ss_sidebar' ), false), esc_html( $info['name'] ) );
}
?>
</select>
</p>
<?php
}
if( isset( $wp_registered_sidebars['sidebar-alt'] ) ) {
?>
<p>
<label class="howto" for="_ss_sidebar_alt"><span><?php echo esc_attr( $wp_registered_sidebars['sidebar-alt']['name'] ); ?><span></label>
<select name="_ss_sidebar_alt" id="_ss_sidebar_alt" style="width: 99%">
<option value=""><?php _e( 'Default', 'ss' ); ?></option>
<?php
foreach ( (array) $_sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, genesis_get_custom_field( '_ss_sidebar_alt' ), false ), esc_html( $info['name'] ) );
}
?>
</select>
</p>
<?php
}
}
add_action( 'save_post', 'ss_inpost_metabox_save', 1, 2 );
/**
* This bit of code saves the sidebars chosen as post meta.
*/
function ss_inpost_metabox_save( $post_id, $post ) {
//* verify the nonce
if ( !isset($_POST['ss_inpost_nonce']) || !wp_verify_nonce( $_POST['ss_inpost_nonce'], plugin_basename(__FILE__) ) )
return $post->ID;
//* don't try to save the data under autosave, ajax, or future post.
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
if ( defined('DOING_AJAX') && DOING_AJAX ) return;
if ( defined('DOING_CRON') && DOING_CRON ) return;
//* is the user allowed to edit the post or page?
if ( ( 'page' == $_POST['post_type'] && ! current_user_can( 'edit_page', $post->ID ) ) || ! current_user_can( 'edit_post', $post->ID ) )
return $post->ID;
$_sidebars = array(
'_ss_sidebar' => $_POST['_ss_sidebar'],
'_ss_sidebar_alt' => $_POST['_ss_sidebar_alt'],
);
//* store the custom fields
foreach ( $_sidebars as $key => $value ) {
//* don't try to store data during revision save
if ( 'revision' === $post->post_type )
return;
if ( $value ) {
update_post_meta($post->ID, $key, $value);
} else {
delete_post_meta($post->ID, $key);
}
}
}
-69
View File
@@ -1,69 +0,0 @@
<?php
/**
* This function, hooked to display on the category/tag edit forms,
* adds new fields to select a sidebar. The variables $tag and $taxonomy
* are passed via the hook so that we can use them.
*/
function ss_term_edit_init() {
$taxonomies = ss_get_taxonomies();
if ( ! empty( $taxonomies ) && is_admin() && is_array( $taxonomies ) ) {
foreach( $taxonomies as $tax )
add_action( "{$tax}_edit_form", 'ss_term_sidebar', 9, 2 );
}
}
function ss_term_sidebar($tag, $taxonomy) {
// Merge Defaults to prevent notices
$tag->meta = wp_parse_args( $tag->meta, array( '_ss_sidebar' => '', '_ss_sidebar_alt' => '' ) );
// Pull custom sidebars
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
?>
<h3><?php _e( 'Sidebar Options', 'ss' ); ?></h3>
<table class="form-table">
<tr class="form-field">
<th scope="row" valign="top"><label for="genesis-meta[_ss_sidebar]"><?php _e( 'Primary Sidebar', 'ss' ); ?></label></th>
<td>
<select name="genesis-meta[_ss_sidebar]" id="genesis-meta[_ss_sidebar]" style="padding-right: 10px;">
<option value=""><?php _e( 'Default', 'ss' ); ?></option>
<?php
foreach ( (array) $_sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, $tag->meta['_ss_sidebar'] , false), esc_html( $info['name'] ) );
}
?>
</select>
</td>
</tr>
<?php
// don't show the option if there are no 3 column layouts registered
if ( ss_has_3_column_layouts() ) {
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="genesis-meta[_ss_sidebar_alt]"><?php _e( 'Secondary Sidebar', 'ss' ); ?></label></th>
<td>
<select name="genesis-meta[_ss_sidebar_alt]" id="genesis-meta[_ss_sidebar_alt]" style="padding-right: 10px;">
<option value=""><?php _e( 'Default', 'ss' ); ?></option>
<?php
foreach ( (array) $_sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, $tag->meta['_ss_sidebar_alt'] , false), esc_html( $info['name'] ) );
}
?>
</select>
</td>
</tr>
<?php
}
?>
</table>
<?php
}
@@ -1,12 +1,13 @@
<?php
if ( array_key_exists( $_REQUEST['id'], (array) $_sidebars ) ) {
$_sidebar = stripslashes_deep( $_sidebars[$_REQUEST['id']] );
} else {
wp_die( __( 'Nice try, partner. But that sidebar doesn\'t exist. Click back and try again.', 'ss' ) );
}
$sidebars = Genesis_Simple_Sidebars()->core->get_sidebars();
screen_icon( 'themes' ); ?>
<h2><?php _e( 'Edit Sidebar', 'ss' ); ?></h2>
if ( array_key_exists( $_REQUEST['id'], (array) $sidebars ) ) {
$sidebar = stripslashes_deep( $sidebars[ $_REQUEST['id'] ] );
} else {
wp_die( __( 'Nice try, partner. But that sidebar doesn\'t exist. Click back and try again.', 'genesis-simple-sidebars' ) );
}
?>
<h1><?php _e( 'Edit Sidebar', 'genesis-simple-sidebars' ); ?></h1>
<form method="post" action="<?php echo admin_url( 'admin.php?page=simple-sidebars&amp;action=edit' ); ?>">
<?php wp_nonce_field( 'simple-sidebars-action_edit-sidebar' ); ?>
@@ -14,26 +15,26 @@ screen_icon( 'themes' ); ?>
<table class="form-table">
<tr class="form-field">
<th scope="row" valign="top"><label for="edit_sidebar[name]"><?php _e( 'Name', 'ss' ); ?></label></th>
<td><input name="edit_sidebar[name]" id="edit_sidebar[name]" type="text" value="<?php echo esc_html( $_sidebar['name'] ); ?>" size="40" />
<p class="description"><?php _e( 'A recognizable name for your new sidebar widget area', 'ss' ); ?></p></td>
<th scope="row" valign="top"><label for="edit_sidebar[name]"><?php _e( 'Name', 'genesis-simple-sidebars' ); ?></label></th>
<td><input name="edit_sidebar[name]" id="edit_sidebar[name]" type="text" value="<?php echo esc_html( $sidebar['name'] ); ?>" size="40" />
<p class="description"><?php _e( 'A recognizable name for your new sidebar widget area', 'genesis-simple-sidebars' ); ?></p></td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="edit_sidebar[id]"><?php _e( 'ID', 'ss' ); ?></label></th>
<th scope="row" valign="top"><label for="edit_sidebar[id]"><?php _e( 'ID', 'genesis-simple-sidebars' ); ?></label></th>
<td>
<input type="text" value="<?php echo esc_html( $_REQUEST['id'] ); ?>" size="40" disabled="disabled" />
<input type="text" value="<?php echo esc_html( $_REQUEST['id'] ); ?>" size="40" readonly />
<input name="edit_sidebar[id]" id="edit_sidebar[id]" type="hidden" value="<?php echo esc_html( $_REQUEST['id'] ); ?>" size="40" />
<p class="description"><?php _e( 'The unique ID is used to register the sidebar widget area (cannot be changed)', 'ss' ); ?></p></td>
<p class="description"><?php _e( 'The unique ID is used to register the sidebar widget area (cannot be changed)', 'genesis-simple-sidebars' ); ?></p></td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="edit_sidebar[description]"><?php _e( 'Description', 'ss' ); ?></label></th>
<td><textarea name="edit_sidebar[description]" id="edit_sidebar[description]" rows="3" cols="50" style="width: 97%;"><?php echo esc_html( $_sidebar['description'] ); ?></textarea></td>
<th scope="row" valign="top"><label for="edit_sidebar[description]"><?php _e( 'Description', 'genesis-simple-sidebars' ); ?></label></th>
<td><textarea name="edit_sidebar[description]" id="edit_sidebar[description]" rows="3" cols="50" style="width: 97%;"><?php echo esc_html( $sidebar['description'] ); ?></textarea></td>
</tr>
</table>
<p class="submit"><input type="submit" class="button-primary" name="submit" value="<?php _e( 'Update', 'ss' ); ?>" /></p>
<p class="submit"><input type="submit" class="button-primary" name="submit" value="<?php _e( 'Update', 'genesis-simple-sidebars' ); ?>" /></p>
</form>
@@ -1,26 +1,25 @@
<?php screen_icon( 'themes' ); ?>
<h2><?php _e( 'Genesis - Simple Sidebars', 'ss' ); ?></h2>
<h1><?php _e( 'Genesis - Simple Sidebars', 'genesis-simple-sidebars' ); ?></h1>
<div id="col-container">
<div id="col-right">
<div class="col-wrap">
<h3><?php _e( 'Current Sidebars', 'ss' ); ?></h3>
<h3><?php _e( 'Current Sidebars', 'genesis-simple-sidebars' ); ?></h3>
<table class="widefat tag fixed" cellspacing="0">
<thead>
<tr>
<th scope="col" id="name" class="manage-column column-name"><?php _e( 'Name', 'ss' ); ?></th>
<th scope="col" class="manage-column column-slug"><?php _e( 'ID', 'ss' ); ?></th>
<th scope="col" id="description" class="manage-column column-description"><?php _e( 'Description', 'ss' ); ?></th>
<th scope="col" id="name" class="manage-column column-name"><?php _e( 'Name', 'genesis-simple-sidebars' ); ?></th>
<th scope="col" class="manage-column column-slug"><?php _e( 'ID', 'genesis-simple-sidebars' ); ?></th>
<th scope="col" id="description" class="manage-column column-description"><?php _e( 'Description', 'genesis-simple-sidebars' ); ?></th>
</tr>
</thead>
<tfoot>
<tr>
<th scope="col" class="manage-column column-name"><?php _e( 'Name', 'ss' ); ?></th>
<th scope="col" class="manage-column column-slug"><?php _e( 'ID', 'ss' ); ?></th>
<th scope="col" class="manage-column column-description"><?php _e( 'Description', 'ss' ); ?></th>
<th scope="col" class="manage-column column-name"><?php _e( 'Name', 'genesis-simple-sidebars' ); ?></th>
<th scope="col" class="manage-column column-slug"><?php _e( 'ID', 'genesis-simple-sidebars' ); ?></th>
<th scope="col" class="manage-column column-description"><?php _e( 'Description', 'genesis-simple-sidebars' ); ?></th>
</tr>
</tfoot>
@@ -39,32 +38,32 @@
<div class="form-wrap">
<h3><?php _e( 'Add New Sidebar', 'ss' ); ?></h3>
<h3><?php _e( 'Add New Sidebar', 'genesis-simple-sidebars' ); ?></h3>
<form method="post" action="<?php echo admin_url( 'admin.php?page=simple-sidebars&amp;action=create' ); ?>">
<?php wp_nonce_field( 'simple-sidebars-action_create-sidebar' ); ?>
<div class="form-field form-required">
<label for="sidebar-name"><?php _e( 'Name', 'ss' ); ?></label>
<label for="sidebar-name"><?php _e( 'Name', 'genesis-simple-sidebars' ); ?></label>
<input name="new_sidebar[name]" id="sidebar-name" type="text" value="" size="40" aria-required="true" />
<p><?php _e( 'A recognizable name for your new sidebar widget area', 'ss' ); ?></p>
<p><?php _e( 'A recognizable name for your new sidebar widget area', 'genesis-simple-sidebars' ); ?></p>
</div>
<div class="form-field">
<label for="sidebar-id"><?php _e( 'ID', 'ss' ); ?></label>
<label for="sidebar-id"><?php _e( 'ID', 'genesis-simple-sidebars' ); ?></label>
<input name="new_sidebar[id]" id="sidebar-id" type="text" value="" size="40" />
<p><?php _e( 'The unique ID is used to register the sidebar widget area', 'ss' ); ?></p>
<p><?php _e( 'The unique ID is used to register the sidebar widget area', 'genesis-simple-sidebars' ); ?></p>
</div>
<div class="form-field">
<label for="sidebar-description"><?php _e( 'Description', 'ss' ); ?></label>
<label for="sidebar-description"><?php _e( 'Description', 'genesis-simple-sidebars' ); ?></label>
<textarea name="new_sidebar[description]" id="sidebar-description" rows="5" cols="40"></textarea>
</div>
<p class="submit"><input type="submit" class="button" name="submit" id="submit" value="<?php _e( 'Add New Sidebar', 'ss' ); ?>" /></p>
<p class="submit"><input type="submit" class="button" name="submit" id="submit" value="<?php _e( 'Add New Sidebar', 'genesis-simple-sidebars' ); ?>" /></p>
</form></div>
</div>
</div><!-- /col-left -->
</div><!-- /col-container -->
</div><!-- /col-container -->
+46
View File
@@ -0,0 +1,46 @@
<?php
$sidebars = Genesis_Simple_Sidebars()->core->get_sidebars();
global $wp_registered_sidebars;
wp_nonce_field( 'genesis-simple-sidebars-save-entry', 'genesis-simple-sidebars-save-entry-nonce' );
if ( is_registered_sidebar( 'header-right' ) ) : ?>
<p>
<label class="howto" for="genesis_simple_sidebars[_ss_header]"><span><?php echo esc_attr( $wp_registered_sidebars['header-right']['name'] ); ?><span></label>
<select name="genesis_simple_sidebars[_ss_header]" id="genesis_simple_sidebars[_ss_header]" style="width: 99%">
<option value=""><?php _e( 'Default', 'genesis-simple-sidebars' ); ?></option>
<?php
foreach ( (array) $sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, genesis_get_custom_field( '_ss_header' ), false), esc_html( $info['name'] ) );
}
?>
</select>
</p>
<?php endif;
if ( is_registered_sidebar( 'sidebar' ) ) : ?>
<p>
<label class="howto" for="genesis_simple_sidebars[_ss_sidebar]"><span><?php echo esc_attr( $wp_registered_sidebars['sidebar']['name'] ); ?><span></label>
<select name="genesis_simple_sidebars[_ss_sidebar]" id="genesis_simple_sidebars[_ss_sidebar]" style="width: 99%">
<option value=""><?php _e( 'Default', 'genesis-simple-sidebars' ); ?></option>
<?php
foreach ( (array) $sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, genesis_get_custom_field( '_ss_sidebar' ), false), esc_html( $info['name'] ) );
}
?>
</select>
</p>
<?php endif;
if ( is_registered_sidebar( 'sidebar-alt' ) ) : ?>
<p>
<label class="howto" for="genesis_simple_sidebars[_ss_sidebar_alt]"><span><?php echo esc_attr( $wp_registered_sidebars['sidebar-alt']['name'] ); ?><span></label>
<select name="genesis_simple_sidebars[_ss_sidebar_alt]" id="genesis_simple_sidebars[_ss_sidebar_alt]" style="width: 99%">
<option value=""><?php _e( 'Default', 'genesis-simple-sidebars' ); ?></option>
<?php
foreach ( (array) $sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, genesis_get_custom_field( '_ss_sidebar_alt' ), false ), esc_html( $info['name'] ) );
}
?>
</select>
</p>
<?php endif;
+51
View File
@@ -0,0 +1,51 @@
<?php $sidebars = Genesis_Simple_Sidebars()->core->get_sidebars(); ?>
<h3><?php _e( 'Sidebar Options', 'genesis-simple-sidebars' ); ?></h3>
<table class="form-table">
<?php if ( is_registered_sidebar( 'header-right' ) ) : ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="genesis-meta[_ss_header]"><?php _e( 'Header Right', 'genesis-simple-sidebars' ); ?></label></th>
<td>
<select name="genesis-meta[_ss_header]" id="genesis-meta[_ss_header]" style="padding-right: 10px;">
<option value=""><?php _e( 'Default', 'genesis-simple-sidebars' ); ?></option>
<?php
foreach ( (array) $sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, get_term_meta( $tag->term_id, '_ss_header', true ), false), esc_html( $info['name'] ) );
}
?>
</select>
</td>
</tr>
<?php endif; ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="genesis-meta[_ss_sidebar]"><?php _e( 'Primary Sidebar', 'genesis-simple-sidebars' ); ?></label></th>
<td>
<select name="genesis-meta[_ss_sidebar]" id="genesis-meta[_ss_sidebar]" style="padding-right: 10px;">
<option value=""><?php _e( 'Default', 'genesis-simple-sidebars' ); ?></option>
<?php
foreach ( (array) $sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, get_term_meta( $tag->term_id, '_ss_sidebar', true ), false), esc_html( $info['name'] ) );
}
?>
</select>
</td>
</tr>
<?php if ( Genesis_Simple_Sidebars()->core->has_3_column_layout() ) : ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="genesis-meta[_ss_sidebar_alt]"><?php _e( 'Secondary Sidebar', 'genesis-simple-sidebars' ); ?></label></th>
<td>
<select name="genesis-meta[_ss_sidebar_alt]" id="genesis-meta[_ss_sidebar_alt]" style="padding-right: 10px;">
<option value=""><?php _e( 'Default', 'genesis-simple-sidebars' ); ?></option>
<?php
foreach ( (array) $sidebars as $id => $info ) {
printf( '<option value="%s" %s>%s</option>', esc_html( $id ), selected( $id, get_term_meta( $tag->term_id, '_ss_sidebar_alt', true ) , false), esc_html( $info['name'] ) );
}
?>
</select>
</td>
</tr>
<?php endif; ?>
</table>
+175
View File
@@ -0,0 +1,175 @@
# Copyright (C) 2015 Nathan Rice
# This file is distributed under the GNU General Public License v2.0 (or later).
msgid ""
msgstr ""
"Project-Id-Version: Genesis Simple Sidebars 2.0.2\n"
"Report-Msgid-Bugs-To: StudioPress <translations@studiopress.com>\n"
"POT-Creation-Date: 2015-09-29 20:53:32+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
"Last-Translator: StudioPress <translations@studiopress.com>\n"
"Language-Team: English <translations@studiopress.com>\n"
"X-Generator: grunt-wp-i18n 0.4.4\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-Language: English\n"
"X-Poedit-Country: UNITED STATES\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-KeywordsList: "
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
"X-Poedit-Bookmarks: \n"
"X-Poedit-SearchPath-0: .\n"
"X-Textdomain-Support: yes\n"
#: includes/admin.php:32 includes/views/main.php:2
msgid "Genesis - Simple Sidebars"
msgstr ""
#: includes/admin.php:33
msgid "Simple Sidebars"
msgstr ""
#: includes/admin.php:107
msgid "Edit"
msgstr ""
#: includes/admin.php:108
msgid "Delete"
msgstr ""
#: includes/admin.php:173
msgid "New sidebar successfully created!"
msgstr ""
#: includes/admin.php:178
msgid "Sidebar successfully edited!"
msgstr ""
#: includes/admin.php:183
msgid "Sidebar successfully deleted."
msgstr ""
#: includes/admin.php:319
msgid "Oops! Please choose a valid Name and ID for this sidebar"
msgstr ""
#: includes/admin.php:322
msgid "Oops! That sidebar ID already exists"
msgstr ""
#: includes/admin.php:325
msgid ""
"Oops! You are trying to edit a sidebar that does not exist, or is not "
"editable"
msgstr ""
#: includes/admin.php:328
msgid ""
"Oops! You are trying to delete a sidebar that does not exist, or cannot be "
"deleted"
msgstr ""
#: includes/admin.php:331
msgid "Oops! Something went wrong. Try again."
msgstr ""
#: includes/inpost.php:12
msgid "Sidebar Selection"
msgstr ""
#: includes/inpost.php:35 includes/inpost.php:50 includes/term.php:37
#: includes/term.php:54
msgid "Default"
msgstr ""
#: includes/term.php:30
msgid "Sidebar Options"
msgstr ""
#: includes/term.php:34
msgid "Primary Sidebar"
msgstr ""
#: includes/term.php:51
msgid "Secondary Sidebar"
msgstr ""
#: includes/views/edit.php:5
msgid "Nice try, partner. But that sidebar doesn't exist. Click back and try again."
msgstr ""
#: includes/views/edit.php:9
msgid "Edit Sidebar"
msgstr ""
#: includes/views/edit.php:17 includes/views/main.php:13
#: includes/views/main.php:21 includes/views/main.php:48
msgid "Name"
msgstr ""
#: includes/views/edit.php:19 includes/views/main.php:50
msgid "A recognizable name for your new sidebar widget area"
msgstr ""
#: includes/views/edit.php:23 includes/views/main.php:14
#: includes/views/main.php:22 includes/views/main.php:54
msgid "ID"
msgstr ""
#: includes/views/edit.php:27
msgid ""
"The unique ID is used to register the sidebar widget area (cannot be "
"changed)"
msgstr ""
#: includes/views/edit.php:31 includes/views/main.php:15
#: includes/views/main.php:23 includes/views/main.php:60
msgid "Description"
msgstr ""
#: includes/views/edit.php:37
msgid "Update"
msgstr ""
#: includes/views/main.php:9
msgid "Current Sidebars"
msgstr ""
#: includes/views/main.php:42 includes/views/main.php:64
msgid "Add New Sidebar"
msgstr ""
#: includes/views/main.php:56
msgid "The unique ID is used to register the sidebar widget area"
msgstr ""
#: plugin.php:48
msgid ""
"Sorry, you cannot run Simple Sidebars without WordPress %s and <a "
"href=\"%s\">Genesis %s</a>, or greater."
msgstr ""
#. Plugin Name of the plugin/theme
msgid "Genesis Simple Sidebars"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "http://www.studiopress.com/plugins/simple-sidebars"
msgstr ""
#. Description of the plugin/theme
msgid ""
"Genesis Simple Sidebars allows you to easily create and use new sidebar "
"widget areas."
msgstr ""
#. Author of the plugin/theme
msgid "Nathan Rice"
msgstr ""
#. Author URI of the plugin/theme
msgid "http://www.nathanrice.net/"
msgstr ""
-148
View File
@@ -1,148 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-08-06 21:23-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: admin.php:17
msgid "Simple Sidebars"
msgstr ""
#: admin.php:66
msgid ""
"Nice try, partner. But that sidebar doesn't exist. Click back and try again."
msgstr ""
#: admin.php:72
msgid "Edit Sidebar"
msgstr ""
#: admin.php:79 admin.php:117 admin.php:125 admin.php:152
msgid "Name"
msgstr ""
#: admin.php:81 admin.php:154
msgid "A recognizable name for your new sidebar widget area"
msgstr ""
#: admin.php:85 admin.php:118 admin.php:126 admin.php:158
msgid "ID"
msgstr ""
#: admin.php:89
msgid ""
"The unique ID is used to register the sidebar widget area (cannot be changed)"
msgstr ""
#: admin.php:93 admin.php:119 admin.php:127 admin.php:164
msgid "Description"
msgstr ""
#: admin.php:99
msgid "Update"
msgstr ""
#: admin.php:106
msgid "Genesis - Simple Sidebars"
msgstr ""
#: admin.php:113
msgid "Current Sidebars"
msgstr ""
#: admin.php:146 admin.php:168
msgid "Add New Sidebar"
msgstr ""
#: admin.php:160
msgid "The unique ID is used to register the sidebar widget area"
msgstr ""
#: functions.php:28
msgid "Edit"
msgstr ""
#: functions.php:29
msgid "Delete"
msgstr ""
#: functions.php:137
msgid "Oops! Please choose a valid Name and ID for this sidebar"
msgstr ""
#: functions.php:140
msgid "Oops! That sidebar ID already exists"
msgstr ""
#: functions.php:143
msgid ""
"Oops! You are trying to edit a sidebar that does not exist, or is not "
"editable"
msgstr ""
#: functions.php:146
msgid ""
"Oops! You are trying to delete a sidebar that does not exist, or cannot be "
"deleted"
msgstr ""
#: functions.php:149
msgid "Oops! Something went wrong. Try again."
msgstr ""
#: functions.php:165
msgid "New sidebar successfully created!"
msgstr ""
#: functions.php:170
msgid "Sidebar successfully edited!"
msgstr ""
#: functions.php:175
msgid "Sidebar successfully deleted."
msgstr ""
#: inpost.php:10
msgid "Sidebar Selection"
msgstr ""
#: inpost.php:22 term.php:29
msgid "Primary Sidebar"
msgstr ""
#: inpost.php:24 inpost.php:36 term.php:32 term.php:46
msgid "Default"
msgstr ""
#: inpost.php:34 term.php:43
msgid "Secondary Sidebar"
msgstr ""
#: plugin.php:21
#, php-format
msgid ""
"Sorry, you can't activate unless you have installed <a href=\"%s\">Genesis</"
"a>"
msgstr ""
#: plugin.php:26
#, php-format
msgid ""
"Sorry, you cannot activate without <a href=\"%s\">Genesis %s</a> or greater"
msgstr ""
#: term.php:25
msgid "Sidebar Options"
msgstr ""
+37
View File
@@ -0,0 +1,37 @@
{
"name": "genesis-simple-sidebars",
"description": "Development files for the Genesis Simple Sidebars plugin.",
"repository": {
"type": "git",
"url": "https://github.com/copyblogger/genesis-simple-sidebars"
},
"dependencies": {},
"devDependencies": {
"grunt": "^0.4.5",
"grunt-autoprefixer": "^0.8.1",
"grunt-checktextdomain": "^0.1.1",
"grunt-contrib-cssmin": "^0.10.0",
"grunt-contrib-imagemin": "^0.7.1",
"grunt-contrib-jshint": "^0.10.0",
"grunt-contrib-uglify": "^0.5.0",
"grunt-contrib-watch": "^0.6.1",
"grunt-csscomb": "~2.0.1",
"grunt-jsbeautifier": "^0.2.7",
"grunt-jsvalidate": "^0.2.2",
"grunt-phplint": "0.0.5",
"grunt-styledocco": "^0.1.4",
"grunt-wp-i18n": "^0.4.7",
"load-grunt-tasks": "^0.6.0"
},
"plugin": {
"name": "Genesis Simple Sidebars",
"uri": "https://github.com/copyblogger/genesis-simple-sidebars",
"description": "Genesis Simple Sidebars allows you to easily create and use new sidebar widget areas.",
"author": "StudioPress",
"authoruri": "http://www.studiopress.com/",
"version": "2.0.2",
"license": "GPL-2.0+",
"licenseuri": "http://www.gnu.org/licenses/gpl-2.0.html",
"textdomain": "genesis-simple-sidebars"
}
}
+6 -225
View File
@@ -2,238 +2,19 @@
/*
Plugin Name: Genesis Simple Sidebars
Plugin URI: http://www.studiopress.com/plugins/simple-sidebars
Description: Genesis Simple Sidebars allows you to easily create and use new sidebar widget areas.
Author: Nathan Rice
Author URI: http://www.nathanrice.net/
Text Domain: ss
Domain Path: /languages/
Version: 2.1.0
Version: 2.0.1
Text Domain: genesis-simple-sidebars
Domain Path: /languages/
License: GNU General Public License v2.0 (or later)
License URI: http://www.opensource.org/licenses/gpl-license.php
*/
/** Define our constants */
define( 'SS_SETTINGS_FIELD', 'ss-settings' );
define( 'SS_PLUGIN_DIR', dirname( __FILE__ ) );
register_activation_hook( __FILE__, 'ss_activation_check' );
/**
* Activation hook callback.
*
* This functions runs when the plugin is activated. It checks to make sure the user is running
* a minimum Genesis version, so there are no conflicts or fatal errors.
*
* @since 0.9.0
*/
function ss_activation_check() {
if ( ! defined( 'PARENT_THEME_VERSION' ) || ! version_compare( PARENT_THEME_VERSION, '2.0.0', '>=' ) )
ss_deactivate( '2.0.0', '3.6' );
}
/**
* Deactivate Simple Sidebars.
*
* This function deactivates Simple Sidebars.
*
* @since 1.0.0
*/
function ss_deactivate( $genesis_version = '1.8.0', $wp_version = '3.3' ) {
deactivate_plugins( plugin_basename( __FILE__ ) );
wp_die( sprintf( __( 'Sorry, you cannot run Simple Sidebars without WordPress %s and <a href="%s">Genesis %s</a>, or greater.', 'ss' ), $wp_version, 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa', $genesis_version ) );
}
add_action( 'genesis_init', 'ss_genesis_init', 12 );
/**
* Plugin initialization.
*
* Initialize the plugin, set the constants, hook callbacks to actions, and include the plugin library.
*
* @since 0.9.0
*/
function ss_genesis_init() {
//* Deactivate if not running Genesis 1.8.0 or greater
if ( ! class_exists( 'Genesis_Admin_Boxes' ) )
add_action( 'admin_init', 'ss_deactivate', 10, 0 );
//* Load translations
load_plugin_textdomain( 'ss', false, 'genesis-simple-sidebars/languages' );
//* required hooks
add_action( 'get_header', 'ss_sidebars_init' );
add_action( 'widgets_init', 'ss_register_sidebars' );
//* The rest is admin stuff, so load only if we're in the admin area
if ( ! is_admin() )
return;
//* Include admin files
require_once( SS_PLUGIN_DIR . '/includes/admin.php' );
require_once( SS_PLUGIN_DIR . '/includes/inpost.php' );
require_once( SS_PLUGIN_DIR . '/includes/term.php' );
//* let the child theme hook the genesis_simple_sidebars_taxonomies filter before hooking term edit
add_action( 'init', 'ss_term_edit_init' );
}
/**
* Register widget areas.
*
* This function registers the created sidebars as widget areas
*
* @since 0.9.0
*/
function ss_register_sidebars() {
$_sidebars = stripslashes_deep( get_option( SS_SETTINGS_FIELD ) );
//* If no sidebars have been created, do nothing
if ( ! $_sidebars )
return;
//* Cycle through created sidebars, register them as widget areas
foreach ( (array) $_sidebars as $id => $info ) {
genesis_register_sidebar( array(
'name' => esc_html( $info['name'] ),
'id' => $id,
'description' => esc_html( $info['description'] ),
'editable' => 1,
) );
}
}
/**
* Use custom sidebars.
*
* Remove the default sidebars, run some conditional logic,
* use alternate sidebars if necessary, else fallback on default sidebars.
*
* @since 0.9.0
*/
function ss_sidebars_init() {
remove_action( 'genesis_sidebar', 'genesis_do_sidebar' );
remove_action( 'genesis_sidebar_alt', 'genesis_do_sidebar_alt' );
add_action( 'genesis_sidebar', 'ss_do_sidebar' );
add_action( 'genesis_sidebar_alt', 'ss_do_sidebar_alt' );
}
/**
* Display primary sidebar.
*
* Display custom sidebar if one exists, else display default primary sidebar.
*
* @since 0.9.0
*/
function ss_do_sidebar() {
if ( ! ss_do_one_sidebar( '_ss_sidebar' ) )
genesis_do_sidebar();
}
/**
* Display secondary sidebar.
*
* Display custom sidebar if one exists, else display default secondary sidebar.
*
* @since 0.9.0
*/
function ss_do_sidebar_alt() {
if ( ! ss_do_one_sidebar( '_ss_sidebar_alt' ) )
genesis_do_sidebar_alt();
}
/**
* Sidebar widget area output.
*
* Helper function to show widgets in a particular sidebar.
*
* @param string $sidebar_key sidebar id you wish to output.
*
* @since 0.9.0
*
*/
function ss_do_one_sidebar( $sidebar_key = '_ss_sidebar' ) {
static $taxonomies = null;
if ( is_singular() && $sidebar_key = genesis_get_custom_field( $sidebar_key ) ) {
if ( dynamic_sidebar( $sidebar_key ) ) return true;
}
if ( is_category() ) {
$term = get_term( get_query_var( 'cat' ), 'category' );
if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
}
if ( is_tag() ) {
$term = get_term( get_query_var( 'tag_id' ), 'post_tag' );
if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
}
if ( is_tax() ) {
if ( null === $taxonomies )
$taxonomies = ss_get_taxonomies();
foreach ( $taxonomies as $tax ) {
if ( 'post_tag' == $tax || 'category' == $tax )
continue;
if ( is_tax( $tax ) ) {
$obj = get_queried_object();
$term = get_term( $obj->term_id, $tax );
if ( isset( $term->meta[$sidebar_key] ) && dynamic_sidebar( $term->meta[$sidebar_key] ) ) return true;
break;
}
}
}
return false;
}
/**
* Return taxonomy ids.
*
* Helper function to return the array keys from a taxonomy query.
*
* @since 0.9.0
*/
function ss_get_taxonomies() {
$taxonomies = get_taxonomies( array( 'show_ui' => true, 'public' => true ) );
return apply_filters( 'genesis_simple_sidebars_taxonomies', array_keys( $taxonomies ) );
}
/**
* Does this Genesis install have the 3 column layouts deactivated?
*
* This function checks to see if the Genesis install still has active 3 column layouts. Since
* child themes and plugins can deregister layouts, we need to know if they have deregistered the 3 column layouts.
*
* @since 0.9.2
*/
function ss_has_3_column_layouts() {
$_layouts = (array) genesis_get_layouts();
$_layouts = array_keys( $_layouts );
$_3_column = array_intersect( $_layouts, array( 'content-sidebar-sidebar', 'sidebar-content-sidebar', 'sidebar-sidebar-content' ) );
return ! empty( $_3_column );
}
require_once( plugin_dir_path( __FILE__ ) . 'genesis-simple-sidebars.php' );
+43 -32
View File
@@ -3,8 +3,8 @@ Contributors: nathanrice, wpmuguru
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5553118
Tags: hooks, genesis, genesiswp, studiopress
Requires at least: 3.6
Tested up to: 3.6
Stable tag: 2.0.1
Tested up to: 4.5
Stable tag: 2.1.0
This plugin allows you to create multiple, dynamic widget areas, and assign those widget areas to sidebar locations within the Genesis Framework on a per post, per page, or per tag/category archive basis.
@@ -37,37 +37,48 @@ Not in the way you're probably thinking. The markup surrounding the widget area
== Changelog ==
= 0.1 =
* Initial Alpha Release
= 2.1.0 =
* Rewrite based on new plugin boilerplate.
= 0.9 =
* Fixed "is not array" errors reported by users
* Added nonce verification for security purposes
* Added error and success messages
* Bump to pre-release 0.9 branch
= 2.0.3 =
* Fix warnings and notices.
= 0.9.1 =
* Added support for custom post types
= 0.9.2 =
* Added support for custom taxonomies
* Added translation support
* bug fix to prevent invalid sidebar creation
= 0.9.2.1 =
* Restore default tag/category support
* Default custom taxonomy support to on for public taxonomies
* Remove secondary selection when no 3 column layouts are enabled
= 1.0.0 =
* Reorganize theme files
* Standards
= 2.0.0 =
* Compatibility with Genesis 2.0
* Standards
= 2.0.2 =
* Change text domain, update POT file.
= 2.0.1 =
* Genesis 2.0.1 compatibility with term meta keys
* Use actual sidebar name, instead of hard coded names
* Fix incorrect textdomain
* Genesis 2.0.1 compatibility with term meta keys.
* Use actual sidebar name, instead of hard coded names.
* Fix incorrect textdomain.
= 2.0.0 =
* Compatibility with Genesis 2.0.0.
* Standards.
= 1.0.0 =
* Reorganize theme files.
* Standards
= 0.9.2.1 =
* Restore default tag/category support.
* Default custom taxonomy support to on for public taxonomies.
* Remove secondary selection when no 3 column layouts are enabled.
= 0.9.2 =
* Added support for custom taxonomies.
* Added translation support.
* bug fix to prevent invalid sidebar creation.
= 0.9.1 =
* Added support for custom post types.
= 0.9 =
* Fixed "is not array" errors reported by users.
* Added nonce verification for security purposes.
* Added error and success messages.
* Bump to pre-release 0.9 branch.
= 0.1 =
* Initial Alpha Release.