Version Description
- Fixed a problem with saving an entry sidebars replacement.
- Added ability to allow change sidebars by an entry author.
Download this release
Release Info
| Developer | iworks |
| Plugin | |
| Version | 3.1.5 |
| Comparing to | |
| See all releases | |
Code changes from version 3.1.4 to 3.1.5
- assets/css/cs-cloning.min.css +1 -1
- assets/css/cs-scan.min.css +1 -1
- assets/css/cs-visibility.min.css +1 -1
- assets/css/cs.min.css +1 -1
- assets/js/cs-cloning.js +1 -1
- assets/js/cs-cloning.min.js +1 -1
- assets/js/cs-visibility.js +1 -1
- assets/js/cs-visibility.min.js +1 -1
- assets/js/cs.js +25 -9
- assets/js/cs.min.js +2 -2
- customsidebars.php +1 -1
- inc/class-custom-sidebars-editor.php +100 -165
- inc/class-custom-sidebars.php +1 -1
- languages/custom-sidebars.pot +42 -34
- readme.txt +9 -9
assets/css/cs-cloning.min.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
assets/css/cs-scan.min.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
assets/css/cs-visibility.min.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
assets/css/cs.min.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
assets/js/cs-cloning.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
/*global jQuery:false */
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
/*global jQuery:false */
|
assets/js/cs-cloning.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
assets/js/cs-visibility.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
/*global jQuery:false */
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
/*global jQuery:false */
|
assets/js/cs-visibility.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
assets/js/cs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
/*global window:false */
|
|
@@ -1605,6 +1605,22 @@ jQuery.fn.sortElements = (function(){
|
|
| 1605 |
})();
|
| 1606 |
|
| 1607 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1608 |
/*global console:false */
|
| 1609 |
/*global document:false */
|
| 1610 |
/*global ajaxurl:false */
|
|
@@ -1615,13 +1631,13 @@ jQuery.fn.sortElements = (function(){
|
|
| 1615 |
*/
|
| 1616 |
(function($){
|
| 1617 |
jQuery(document).ready( function($) {
|
| 1618 |
-
$('#screen-options-wrap .cs-
|
| 1619 |
var data = {
|
| 1620 |
-
'action': '
|
| 1621 |
-
'_wpnonce': $('#
|
| 1622 |
'fields': {}
|
| 1623 |
};
|
| 1624 |
-
$('#screen-options-wrap .cs-
|
| 1625 |
data.fields[$(this).val()] = this.checked;
|
| 1626 |
});
|
| 1627 |
$.post( ajaxurl, data );
|
|
@@ -1639,13 +1655,13 @@ jQuery.fn.sortElements = (function(){
|
|
| 1639 |
*/
|
| 1640 |
(function($){
|
| 1641 |
jQuery(document).ready( function($) {
|
| 1642 |
-
$('#screen-options-wrap .cs-
|
| 1643 |
var data = {
|
| 1644 |
-
'action': '
|
| 1645 |
-
'_wpnonce': $('#
|
| 1646 |
'fields': {}
|
| 1647 |
};
|
| 1648 |
-
$('#screen-options-wrap .cs-
|
| 1649 |
data.fields[$(this).val()] = this.checked;
|
| 1650 |
});
|
| 1651 |
$.post( ajaxurl, data );
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
/*global window:false */
|
| 1605 |
})();
|
| 1606 |
|
| 1607 |
|
| 1608 |
+
/*global console:false */
|
| 1609 |
+
/*global document:false */
|
| 1610 |
+
/*global ajaxurl:false */
|
| 1611 |
+
(function($){
|
| 1612 |
+
jQuery(document).ready( function($) {
|
| 1613 |
+
$('#screen-options-wrap .cs-allow-author input[type=checkbox]').on( 'change', function() {
|
| 1614 |
+
var data = {
|
| 1615 |
+
'action': 'custom_sidebars_allow_author',
|
| 1616 |
+
'_wpnonce': $('#custom_sidebars_allow_author').val(),
|
| 1617 |
+
'value': this.checked
|
| 1618 |
+
};
|
| 1619 |
+
$.post( ajaxurl, data );
|
| 1620 |
+
});
|
| 1621 |
+
});
|
| 1622 |
+
})(jQuery);
|
| 1623 |
+
|
| 1624 |
/*global console:false */
|
| 1625 |
/*global document:false */
|
| 1626 |
/*global ajaxurl:false */
|
| 1631 |
*/
|
| 1632 |
(function($){
|
| 1633 |
jQuery(document).ready( function($) {
|
| 1634 |
+
$('#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]').on( 'change', function() {
|
| 1635 |
var data = {
|
| 1636 |
+
'action': 'custom_sidebars_metabox_custom_taxonomies',
|
| 1637 |
+
'_wpnonce': $('#custom_sidebars_custom_taxonomies').val(),
|
| 1638 |
'fields': {}
|
| 1639 |
};
|
| 1640 |
+
$('#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]').each( function() {
|
| 1641 |
data.fields[$(this).val()] = this.checked;
|
| 1642 |
});
|
| 1643 |
$.post( ajaxurl, data );
|
| 1655 |
*/
|
| 1656 |
(function($){
|
| 1657 |
jQuery(document).ready( function($) {
|
| 1658 |
+
$('#screen-options-wrap .cs-roles input[type=checkbox]').on( 'change', function() {
|
| 1659 |
var data = {
|
| 1660 |
+
'action': 'custom_sidebars_metabox_roles',
|
| 1661 |
+
'_wpnonce': $('#custom_sidebars_metabox_roles').val(),
|
| 1662 |
'fields': {}
|
| 1663 |
};
|
| 1664 |
+
$('#screen-options-wrap .cs-roles input[type=checkbox]').each( function() {
|
| 1665 |
data.fields[$(this).val()] = this.checked;
|
| 1666 |
});
|
| 1667 |
$.post( ajaxurl, data );
|
assets/js/cs.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
-
/*! Custom Sidebars - v3.1.
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
| 5 |
-
function trim(a){a=a.replace(/^\s\s*/,"");for(var b=a.length-1;b>=0;b--)if(/\S/.test(a.charAt(b))){a=a.substring(0,b+1);break}return a}function CsSidebar(a,b){var c;this.id=a.split("%").join("\\%"),this.type=b,this.sb=jQuery("#"+this.id),this.widgets="",this.name=trim(this.sb.find(".sidebar-name h2").text()),this.description=trim(this.sb.find(".sidebar-description").text()),c="custom"===b?window.csSidebars.extras.find(".cs-custom-sidebar").clone():window.csSidebars.extras.find(".cs-theme-sidebar").clone(),this.sb.parent().append(c),c.find("label").each(function(){var b=jQuery(this);window.csSidebars.addIdToLabel(b,a)})}CsSidebar.prototype.getID=function(){return this.id.split("\\").join("")},window.csSidebars=null,function(a){window.csSidebars={sidebars:[],sidebar_prefix:"cs-",edit_form:null,delete_form:null,export_form:null,location_form:null,right:null,extras:null,action_handlers:{},init:function(){"undefined"!=typeof csSidebarsData&&csSidebars.initControls().initTopTools().initSidebars().initToolbars().initColumns()},initControls:function(){return csSidebars.right=jQuery("#widgets-right"),csSidebars.extras=jQuery("#cs-widgets-extra"),null===csSidebars.edit_form&&(csSidebars.edit_form=csSidebars.extras.find(".cs-editor").clone(),csSidebars.extras.find(".cs-editor").remove()),null===csSidebars.delete_form&&(csSidebars.delete_form=csSidebars.extras.find(".cs-delete").clone(),csSidebars.extras.find(".cs-delete").remove()),null===csSidebars.export_form&&(csSidebars.export_form=csSidebars.extras.find(".cs-export").clone(),csSidebars.extras.find(".cs-export").remove()),null===csSidebars.location_form&&(csSidebars.location_form=csSidebars.extras.find(".cs-location").clone(),csSidebars.extras.find(".cs-location").remove()),jQuery("#cs-title-options").detach().prependTo(csSidebars.right),csSidebars},initColumns:function(){function a(){var a=jQuery(this),b=a.closest(".sidebars-column-1, .sidebars-column-2"),c=b.data("sort-dir");c="asc"===c?"desc":"asc",csSidebars.sort_sidebars(b,c)}var b=csSidebars.right.find(".sidebars-column-1"),c=csSidebars.right.find(".sidebars-column-2"),d=jQuery('<div class="cs-title"><h2></h2></div>'),e=csSidebars.right.find(".widgets-holder-wrap");c.length||(c=jQuery('<div class="sidebars-column-2"></div>'),c.appendTo(csSidebars.right)),d.find("h2").append('<span class="cs-title-val"></span><i class="cs-icon dashicons dashicons-sort"></i>').css({cursor:"pointer"}),d.clone().prependTo(b).click(a).find(".cs-title-val").text(csSidebarsData.custom_sidebars),d.clone().prependTo(c).click(a).find(".cs-title-val").text(csSidebarsData.theme_sidebars),b=jQuery('<div class="inner"></div>').appendTo(b),c=jQuery('<div class="inner"></div>').appendTo(c),e.each(function(){var a=jQuery(this),d=a.find(".widgets-sortables");csSidebars.isCustomSidebar(d)?a.appendTo(b):a.appendTo(c)})},initSidebars:function(){return csSidebars.right.find(".widgets-sortables").each(function(){var a,b,c=!1,d=jQuery(this),e=d.attr("id");if(!0!==d.data("cs-init"))if(d.data("cs-init",!0),csSidebars.isCustomSidebar(this))b=csSidebars.add(e,"custom");else{b=csSidebars.add(e,"theme");for(a in csSidebarsData.replaceable)if(csSidebarsData.replaceable.hasOwnProperty(a)&&csSidebarsData.replaceable[a]===e){c=!0;break}csSidebars.setReplaceable(b,c,!1)}}),csSidebars},initTopTools:function(){var a=jQuery(".btn-create-sidebar"),b=jQuery(".btn-export"),c=jQuery(".cs-options"),d=jQuery('<input type="search" class="cs-filter" />'),e={};return a.click(function(){e.id="",e.title=csSidebarsData.title_new,e.button=csSidebarsData.btn_new,e.description="",e.name="",csSidebars.showEditor(e)}),b.click(csSidebars.showExport),d.appendTo(c).attr("placeholder",csSidebarsData.filter).keyup(csSidebars.filter_sidebars).on("search",csSidebars.filter_sidebars),csSidebars},initToolbars:function(){function a(a){var b=jQuery(a.target).closest(".cs-tool"),c=b.data("action"),d=csSidebars.getIdFromEditbar(b),e=csSidebars.find(d);return!csSidebars.handleAction(c,e)}return csSidebars.registerAction("edit",csSidebars.showEditor),csSidebars.registerAction("location",csSidebars.showLocations),csSidebars.registerAction("delete",csSidebars.showRemove),csSidebars.registerAction("replaceable",csSidebars.setReplaceable),csSidebars.right.on("click",".cs-tool",a),csSidebars},handleAction:function(a,b){return"function"==typeof csSidebars.action_handlers[a]&&!!csSidebars.action_handlers[a](b)},registerAction:function(a,b){csSidebars.action_handlers[a]=b},showAjaxError:function(a){var b={};b.message=csSidebarsData.ajax_error,b.details=a,b.parent="#widgets-right",b.insert_after="#cs-title-options",b.id="editor",b.type="err",wpmUi.message(b)},sort_sidebars:function(a,b){var c=a.find(".widgets-holder-wrap"),d=a.find(".cs-title .cs-icon");c.sortElements(function(a,c){var d=jQuery(a).find(".sidebar-name h2").text(),e=jQuery(c).find(".sidebar-name h2").text();return"asc"===b?d>e?1:-1:d<e?1:-1}),a.data("sort-dir",b),"asc"===b?d.removeClass("dashicons-arrow-down dashicons-sort").addClass("dashicons-arrow-up"):d.removeClass("dashicons-arrow-up dashicons-sort").addClass("dashicons-arrow-down")},filter_sidebars:function(a){var b=jQuery("input.cs-filter").val().toLowerCase();csSidebars.right.find(".widgets-holder-wrap").each(function(){var a=jQuery(this);-1!==a.find(".sidebar-name h2").text().toLowerCase().indexOf(b)?a.show():a.hide()}),jQuery(window).trigger("cs-resize")},showEditor:function(b){function c(){i.$().removeClass("csb-has-more"),i.size(782,215)}function d(){i.$().addClass("csb-has-more"),i.size(782,545)}function e(){jQuery(this).prop("checked")?d():c()}function f(a,b,c){return i.loading(!1),!!a&&(b?(a.sidebar&&(a=a.sidebar),a.id&&i.$().find("#csb-id").val(a.id),a.name&&i.$().find("#csb-name").val(a.name),a.description&&i.$().find("#csb-description").val(a.description),a.before_title&&i.$().find("#csb-before-title").val(a.before_title),a.after_title&&i.$().find("#csb-after-title").val(a.after_title),a.before_widget&&i.$().find("#csb-before-widget").val(a.before_widget),a.after_widget&&i.$().find("#csb-after-widget").val(a.after_widget),a.button&&i.$().find(".btn-save").text(a.button),void(a.advance&&(i.$().find("#csb-more").prop("checked",!0),d()))):(i.destroy(),csSidebars.showAjaxError(a),!1))}function g(b,c,d){var e,f={};i.loading(!1),i.destroy(),f.message=b.message,f.parent="#widgets-right",f.insert_after="#cs-title-options",f.id="editor",c?"update"===b.action?(e=csSidebars.find(b.data.id),csSidebars.updateSidebar(e,b.data)):"insert"===b.action&&(csSidebars.insertSidebar(b.data),a(".cs-wrap .custom-sidebars-add-new").detach()):f.type="err",wpmUi.message(f)}function h(){var a=i.$().find("form");return 0<i.$("#csb-more:checked").length&&jQuery("<input>").attr({type:"hidden",value:"show",name:"advance"}).appendTo(a),i.loading(!0),j.reset().data(a).ondone(g).load_json(),!1}var i=null,j=null;return b instanceof CsSidebar&&(b={id:b.getID(),title:csSidebarsData.title_edit.replace("[Sidebar]",b.name),button:csSidebarsData.btn_edit}),i=wpmUi.popup().modal(!0).title(b.title).onshow(c).content(csSidebars.edit_form),c(),f(b,!0,null),j=wpmUi.ajax(null,"cs-ajax"),b.id&&(i.loading(!0),j.reset().data({do:"get",sb:b.id,_wpnonce:csSidebarsData._wpnonce_get}).ondone(f).load_json()),i.show(),i.$().find("#csb-name").focus(),i.$().on("keypress","#csb-name",function(b){13===b.keyCode&&0<a(this).val().length&&a("#csb-description").focus()}),i.$().on("keypress","#csb-description",function(a){13===a.keyCode&&i.$(".btn-save").click()}),i.$().on("click","#csb-more",e),i.$().on("click",".btn-save",h),i.$().on("click",".btn-cancel",i.destroy),!0},updateSidebar:function(a,b){return a.sb.find(".sidebar-name h2").text(b.name),a.sb.find(".sidebar-description").html('<p class="description"></p>').find(".description").text(b.description),csSidebars},insertSidebar:function(a){var b=jQuery('<div class="widgets-holder-wrap"></div>'),c=jQuery('<div class="widgets-sortables ui-sortable"></div>'),d=jQuery('<div class="sidebar-name"><div class="sidebar-name-arrow"><br></div><h2></h2></div>'),e=jQuery('<div class="sidebar-description"></div>'),f=csSidebars.right.find(".sidebars-column-1 > .inner:first");return c.attr("id",a.id),d.find("h2").text(a.name),e.html('<p class="description"></p>').find(".description").text(a.description),d.appendTo(c),e.appendTo(c),c.appendTo(b),b.prependTo(f),jQuery("#widgets-right .sidebar-name").unbind("click"),jQuery("#widgets-left .sidebar-name").unbind("click"),jQuery(document.body).unbind("click.widgets-toggle"),jQuery(".widgets-chooser").off("click.widgets-chooser").off("keyup.widgets-chooser"),jQuery("#available-widgets .widget .widget-title").off("click.widgets-chooser"),jQuery(".widgets-chooser-sidebars").empty(),window.wpWidgets.init(),csSidebars.initSidebars(),csSidebars},showExport:function(){function a(a){var b=jQuery(this).closest("form");return h.reset().data(b).load_http(),g.destroy(),a.preventDefault(),!1}function b(a,b,c){var d={};g.loading(!1),b?g.size(900,600).content(a.html):(d.message=a.message,d.parent=g.$().find(".wpmui-wnd-content"),d.insert_after=!1,d.id="export",d.class="wpmui-wnd-err",d.type="err",wpmUi.message(d))}function c(a){var c=jQuery(this).closest("form");return g.loading(!0),h.reset().data(c).ondone(b).load_json("cs-ajax"),a.preventDefault(),!1}function d(){var a=jQuery(this),b=a.prop("checked"),c=g.$().find(".column-widgets, .import-widgets");b?c.show():c.hide()}function e(){g.size(782,480),g.content(csSidebars.export_form)}function f(){var a=g.$().find(".frm-import");g.loading(!0),h.reset().data(a).load_http("_self")}var g=null,h=null;return g=wpmUi.popup().modal(!0).size(782,480).title(csSidebarsData.title_export).content(csSidebars.export_form).show(),h=wpmUi.ajax(null,"cs-ajax"),g.$().on("submit",".frm-export",a),g.$().on("submit",".frm-preview-import",c),g.$().on("change","#import-widgets",d),g.$().on("click",".btn-cancel",e),g.$().on("click",".btn-import",f),!0},showRemove:function(b){function c(a){a.find(".name").text(j)}function d(){g.loading(!1),g.destroy()}function e(a,b,c){var d={};g.loading(!1),g.destroy(),d.message=a.message,d.parent="#widgets-right",d.insert_after="#cs-title-options",d.id="editor",b?(csSidebars.right.find("#"+i).closest(".widgets-holder-wrap").remove(),csSidebars.remove(i),"delete"===a.action&&window.csSidebars.showGetStartedBox()):d.type="err",wpmUi.message(d)}function f(){g.loading(!0),h.reset().data({do:"delete",sb:i,_wpnonce:a("#_wp_nonce_cs_delete_sidebar").val()}).ondone(e).load_json()}var g=null,h=null,i=b.getID(),j=b.name;return g=wpmUi.popup().modal(!0).size(560,160).title(csSidebarsData.title_delete).content(csSidebars.delete_form).onshow(c).show(),h=wpmUi.ajax(null,"cs-ajax"),g.$().on("click",".btn-cancel",d),g.$().on("click",".btn-delete",f),!0},showLocations:function(b){function c(b,c,d){function e(a,b,c){var d=jQuery("<option></option>");d.attr("value",c).text(a.name),b.append(d)}function f(a,b,c,d){var e=d.closest(".cs-replaceable").filter("."+b),f=e.find('option[value="'+c+'"]'),g=e.find("optgroup.used"),h=e.find(".detail-toggle");a===k?(f.prop("selected",!0),!0!==h.prop("checked")&&(h.prop("checked",!0),e.addClass("open"),wpmUi.upgrade_multiselect(e))):(g.length||(g=jQuery('<optgroup class="used">').attr("label",e.data("lbl-used")).appendTo(e.find(".details select"))),f.detach().appendTo(g))}var h,i,j;if(g.loading(!1),!c)return g.destroy(),void csSidebars.showAjaxError(b);g.$().find(".sb-name").text(b.sidebar.name);var k=b.sidebar.id;g.$().find(".message.no-sidebars").hide();var l=0,m=g.$().find(".cs-replaceable");m.hide(),b.replaceable=wpmUi.obj(b.replaceable);for(var n in b.replaceable)b.replaceable.hasOwnProperty(n)&&(m.filter("."+b.replaceable[n]).show(),l++);0===l&&(g.$().find(".wpmui-box, .message, .button-primary").hide(),g.$().find(".message.no-sidebars").show().parent().addClass("notice notice-error").removeClass("hidden"));var o=g.$().find(".cs-datalist.cs-cat"),p=g.$().find(".cs-datalist.cs-arc-cat"),q=b.categories;p.empty(),o.empty();for(var r in q)e(q[r],p,r),e(q[r],o,r);for(var s in q){if(q[s].single)for(h in q[s].single)f(q[s].single[h],h,s,o);if(q[s].archive)for(h in q[s].archive)f(q[s].archive[h],h,s,p)}var t=g.$().find(".cs-datalist.cs-pt"),u=b.posttypes;t.empty();for(var v in u)i=jQuery("<option></option>"),j=u[v].name,i.attr("value",v).text(j),t.append(i);for(var w in u)if(u[w].single)for(h in u[w].single)f(u[w].single[h],h,w,t);var x=g.$().find(".cs-datalist.cs-arc"),y=b.archives;x.empty();for(var z in y)i=jQuery("<option></option>"),j=y[z].name,i.attr("value",z).text(j),x.append(i);for(var A in y)if(y[A].archive)for(h in y[A].archive)f(y[A].archive[h],h,A,x);var B=g.$().find(".cs-datalist.cs-arc-aut"),C=b.authors;B.empty();for(var D in C)i=jQuery("<option></option>"),j=C[D].name,i.attr("value",D).text(j),B.append(i);for(var E in C)if(C[E].archive)for(h in C[E].archive)f(C[E].archive[h],h,E,B);g.$().find(".cs-3rd-part .cs-datalist").each(function(){var c=b[a(this).data("id")];a(this).empty();for(var d in c)i=jQuery("<option></option>"),j=c[d].name,i.attr("value",d).text(j),a(this).append(i);for(var e in c)if(c[e].archive)for(h in c[e].archive)f(c[e].archive[h],h,e,a(this))}),g.$().find(".cf-custom-taxonomies .cs-datalist").each(function(){var c=b[a(this).data("id")];a(this).empty();for(var d in c)i=jQuery("<option></option>"),j=c[d].name,i.attr("value",d).text(j),a(this).append(i);for(var e in c)if(c[e].single)for(h in c[e].single)f(c[e].single[h],h,e,a(this))})}function d(a){var b=jQuery(this),c=b.closest(".cs-replaceable"),d=c.find("select");b.prop("checked")?(c.addClass("open"),wpmUi.upgrade_multiselect(c),d.trigger("change.select2")):(c.removeClass("open"),d.val([]))}function e(a,b,c){var d={};g.loading(!1),g.destroy(),d.message=a.message,d.parent="#widgets-right",d.insert_after="#cs-title-options",d.id="editor",b||(d.type="err"),wpmUi.message(d)}function f(){g.loading(!0),h.reset().data(i).ondone(e).load_json()}var g=null,h=null,i=null,j=b.getID();return g=wpmUi.popup().modal(!0).size(782,560).title(csSidebarsData.title_location).content(csSidebars.location_form).show(),g.loading(!0),i=g.$().find(".frm-location"),i.find(".sb-id").val(j),h=wpmUi.ajax(null,"cs-ajax"),h.reset().data({do:"get-location",sb:j}).ondone(c).load_json(),g.$().on("click",".detail-toggle",d),g.$().on("click",".btn-save",f),g.$().on("click",".btn-cancel",g.destroy),!0},setReplaceable:function(a,b,c){function d(a,b,c){a instanceof Object&&"object"==typeof a.replaceable&&(csSidebarsData.replaceable=wpmUi.obj(a.replaceable),f.find(".widgets-sortables").each(function(){var a=!1,b=jQuery(this),c=b.attr("id"),d=csSidebars.find(c);for(var e in csSidebarsData.replaceable)if(csSidebarsData.replaceable.hasOwnProperty(e)&&csSidebarsData.replaceable[e]===c){a=!0;break}csSidebars.setReplaceable(d,a,!1)})),f.find(".cs-toolbar .chk-replaceable").prop("disabled",!1),f.find(".cs-toolbar .btn-replaceable").removeClass("wpmui-loading")}var e,f=csSidebars.right.find(".sidebars-column-2 .widgets-holder-wrap"),g=jQuery(a.sb).closest(".widgets-holder-wrap"),h=g.find(".cs-toolbar .chk-replaceable"),i=g.find(".replace-marker");g.find(".cs-toolbar .btn-replaceable");return void 0===b&&(b=h.prop("checked")),void 0===c&&(c=!0),h.data("active")!==b&&(h.data("active",b),h.prop("checked",b),b?(i.length||jQuery("<div></div>").appendTo(g).attr("data-label",csSidebarsData.lbl_replaceable).addClass("replace-marker"),g.addClass("replaceable")):(i.remove(),g.removeClass("replaceable")),c&&(f.find(".cs-toolbar .chk-replaceable").prop("disabled",!0),f.find(".cs-toolbar .btn-replaceable").addClass("wpmui-loading"),e=wpmUi.ajax(null,"cs-ajax"),e.reset().data({do:"replaceable",state:b,sb:a.getID()}).ondone(d).load_json()),!1)},find:function(a){return csSidebars.sidebars[a]},add:function(a,b){return csSidebars.sidebars[a]=new CsSidebar(a,b),csSidebars.sidebars[a]},remove:function(a){delete csSidebars.sidebars[a]},isCustomSidebar:function(a){return jQuery(a).attr("id").substr(0,csSidebars.sidebar_prefix.length)===csSidebars.sidebar_prefix},addIdToLabel:function(a,b){if(!0!==a.data("label-done")){var c=a.attr("for");a.attr("for",c+b),a.find(".has-label").attr("id",c+b),a.data("label-done",!0)}},getIdFromEditbar:function(a){return a.closest(".widgets-holder-wrap").find(".widgets-sortables:first").attr("id")},showGetStartedBox:function(){if(0===a(".sidebars-column-1 .inner .widgets-holder-wrap").length){var b=wp.template("custom-sidebars-new");a(".sidebars-column-1 .inner").before(b()),a(".custom-sidebars-add-new").on("click",function(){a("button.btn-create-sidebar").click()})}}},jQuery(function(a){a("#csfooter").hide(),a("#widgets-right").length>0&&csSidebars.init(),a(".defaultsContainer").hide(),a("#widgets-right .widgets-sortables").on("sort",function(b,c){a("#widgets-right").top;c.position.top=-a("#widgets-right").css("top")})}),jQuery(document).ready(function(a){window.setTimeout(function(){window.csSidebars.showGetStartedBox()},1e3)})}(jQuery),jQuery.fn.sortElements=function(){var a=[].sort;return function(b,c){c=c||function(){return this};var d=this.map(function(){var a=c.call(this),b=a.parentNode,d=b.insertBefore(document.createTextNode(""),a.nextSibling);return function(){if(b===this)throw new Error("You can't sort elements if any one is a descendant of another.");b.insertBefore(this,d),b.removeChild(d)}});return a.call(this,b).each(function(a){d[a].call(c.call(this))})}}(),function(a){jQuery(document).ready(function(a){a("#screen-options-wrap .cs-roles input[type=checkbox]").on("change",function(){var b={action:"custom_sidebars_metabox_roles",_wpnonce:a("#custom_sidebars_metabox_roles").val(),fields:{}};a("#screen-options-wrap .cs-roles input[type=checkbox]").each(function(){b.fields[a(this).val()]=this.checked}),a.post(ajaxurl,b)})})}(jQuery),function(a){jQuery(document).ready(function(a){a("#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]").on("change",function(){var b={action:"custom_sidebars_metabox_custom_taxonomies",_wpnonce:a("#custom_sidebars_custom_taxonomies").val(),fields:{}};a("#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]").each(function(){b.fields[a(this).val()]=this.checked}),a.post(ajaxurl,b)})})}(jQuery);
|
| 1 |
+
/*! Custom Sidebars - v3.1.5-beta.1
|
| 2 |
* https://premium.wpmudev.org/project/custom-sidebars-pro/
|
| 3 |
* Copyright (c) 2018; * Licensed GPLv2+ */
|
| 4 |
|
| 5 |
+
function trim(a){a=a.replace(/^\s\s*/,"");for(var b=a.length-1;b>=0;b--)if(/\S/.test(a.charAt(b))){a=a.substring(0,b+1);break}return a}function CsSidebar(a,b){var c;this.id=a.split("%").join("\\%"),this.type=b,this.sb=jQuery("#"+this.id),this.widgets="",this.name=trim(this.sb.find(".sidebar-name h2").text()),this.description=trim(this.sb.find(".sidebar-description").text()),c="custom"===b?window.csSidebars.extras.find(".cs-custom-sidebar").clone():window.csSidebars.extras.find(".cs-theme-sidebar").clone(),this.sb.parent().append(c),c.find("label").each(function(){var b=jQuery(this);window.csSidebars.addIdToLabel(b,a)})}CsSidebar.prototype.getID=function(){return this.id.split("\\").join("")},window.csSidebars=null,function(a){window.csSidebars={sidebars:[],sidebar_prefix:"cs-",edit_form:null,delete_form:null,export_form:null,location_form:null,right:null,extras:null,action_handlers:{},init:function(){"undefined"!=typeof csSidebarsData&&csSidebars.initControls().initTopTools().initSidebars().initToolbars().initColumns()},initControls:function(){return csSidebars.right=jQuery("#widgets-right"),csSidebars.extras=jQuery("#cs-widgets-extra"),null===csSidebars.edit_form&&(csSidebars.edit_form=csSidebars.extras.find(".cs-editor").clone(),csSidebars.extras.find(".cs-editor").remove()),null===csSidebars.delete_form&&(csSidebars.delete_form=csSidebars.extras.find(".cs-delete").clone(),csSidebars.extras.find(".cs-delete").remove()),null===csSidebars.export_form&&(csSidebars.export_form=csSidebars.extras.find(".cs-export").clone(),csSidebars.extras.find(".cs-export").remove()),null===csSidebars.location_form&&(csSidebars.location_form=csSidebars.extras.find(".cs-location").clone(),csSidebars.extras.find(".cs-location").remove()),jQuery("#cs-title-options").detach().prependTo(csSidebars.right),csSidebars},initColumns:function(){function a(){var a=jQuery(this),b=a.closest(".sidebars-column-1, .sidebars-column-2"),c=b.data("sort-dir");c="asc"===c?"desc":"asc",csSidebars.sort_sidebars(b,c)}var b=csSidebars.right.find(".sidebars-column-1"),c=csSidebars.right.find(".sidebars-column-2"),d=jQuery('<div class="cs-title"><h2></h2></div>'),e=csSidebars.right.find(".widgets-holder-wrap");c.length||(c=jQuery('<div class="sidebars-column-2"></div>'),c.appendTo(csSidebars.right)),d.find("h2").append('<span class="cs-title-val"></span><i class="cs-icon dashicons dashicons-sort"></i>').css({cursor:"pointer"}),d.clone().prependTo(b).click(a).find(".cs-title-val").text(csSidebarsData.custom_sidebars),d.clone().prependTo(c).click(a).find(".cs-title-val").text(csSidebarsData.theme_sidebars),b=jQuery('<div class="inner"></div>').appendTo(b),c=jQuery('<div class="inner"></div>').appendTo(c),e.each(function(){var a=jQuery(this),d=a.find(".widgets-sortables");csSidebars.isCustomSidebar(d)?a.appendTo(b):a.appendTo(c)})},initSidebars:function(){return csSidebars.right.find(".widgets-sortables").each(function(){var a,b,c=!1,d=jQuery(this),e=d.attr("id");if(!0!==d.data("cs-init"))if(d.data("cs-init",!0),csSidebars.isCustomSidebar(this))b=csSidebars.add(e,"custom");else{b=csSidebars.add(e,"theme");for(a in csSidebarsData.replaceable)if(csSidebarsData.replaceable.hasOwnProperty(a)&&csSidebarsData.replaceable[a]===e){c=!0;break}csSidebars.setReplaceable(b,c,!1)}}),csSidebars},initTopTools:function(){var a=jQuery(".btn-create-sidebar"),b=jQuery(".btn-export"),c=jQuery(".cs-options"),d=jQuery('<input type="search" class="cs-filter" />'),e={};return a.click(function(){e.id="",e.title=csSidebarsData.title_new,e.button=csSidebarsData.btn_new,e.description="",e.name="",csSidebars.showEditor(e)}),b.click(csSidebars.showExport),d.appendTo(c).attr("placeholder",csSidebarsData.filter).keyup(csSidebars.filter_sidebars).on("search",csSidebars.filter_sidebars),csSidebars},initToolbars:function(){function a(a){var b=jQuery(a.target).closest(".cs-tool"),c=b.data("action"),d=csSidebars.getIdFromEditbar(b),e=csSidebars.find(d);return!csSidebars.handleAction(c,e)}return csSidebars.registerAction("edit",csSidebars.showEditor),csSidebars.registerAction("location",csSidebars.showLocations),csSidebars.registerAction("delete",csSidebars.showRemove),csSidebars.registerAction("replaceable",csSidebars.setReplaceable),csSidebars.right.on("click",".cs-tool",a),csSidebars},handleAction:function(a,b){return"function"==typeof csSidebars.action_handlers[a]&&!!csSidebars.action_handlers[a](b)},registerAction:function(a,b){csSidebars.action_handlers[a]=b},showAjaxError:function(a){var b={};b.message=csSidebarsData.ajax_error,b.details=a,b.parent="#widgets-right",b.insert_after="#cs-title-options",b.id="editor",b.type="err",wpmUi.message(b)},sort_sidebars:function(a,b){var c=a.find(".widgets-holder-wrap"),d=a.find(".cs-title .cs-icon");c.sortElements(function(a,c){var d=jQuery(a).find(".sidebar-name h2").text(),e=jQuery(c).find(".sidebar-name h2").text();return"asc"===b?d>e?1:-1:d<e?1:-1}),a.data("sort-dir",b),"asc"===b?d.removeClass("dashicons-arrow-down dashicons-sort").addClass("dashicons-arrow-up"):d.removeClass("dashicons-arrow-up dashicons-sort").addClass("dashicons-arrow-down")},filter_sidebars:function(a){var b=jQuery("input.cs-filter").val().toLowerCase();csSidebars.right.find(".widgets-holder-wrap").each(function(){var a=jQuery(this);-1!==a.find(".sidebar-name h2").text().toLowerCase().indexOf(b)?a.show():a.hide()}),jQuery(window).trigger("cs-resize")},showEditor:function(b){function c(){i.$().removeClass("csb-has-more"),i.size(782,215)}function d(){i.$().addClass("csb-has-more"),i.size(782,545)}function e(){jQuery(this).prop("checked")?d():c()}function f(a,b,c){return i.loading(!1),!!a&&(b?(a.sidebar&&(a=a.sidebar),a.id&&i.$().find("#csb-id").val(a.id),a.name&&i.$().find("#csb-name").val(a.name),a.description&&i.$().find("#csb-description").val(a.description),a.before_title&&i.$().find("#csb-before-title").val(a.before_title),a.after_title&&i.$().find("#csb-after-title").val(a.after_title),a.before_widget&&i.$().find("#csb-before-widget").val(a.before_widget),a.after_widget&&i.$().find("#csb-after-widget").val(a.after_widget),a.button&&i.$().find(".btn-save").text(a.button),void(a.advance&&(i.$().find("#csb-more").prop("checked",!0),d()))):(i.destroy(),csSidebars.showAjaxError(a),!1))}function g(b,c,d){var e,f={};i.loading(!1),i.destroy(),f.message=b.message,f.parent="#widgets-right",f.insert_after="#cs-title-options",f.id="editor",c?"update"===b.action?(e=csSidebars.find(b.data.id),csSidebars.updateSidebar(e,b.data)):"insert"===b.action&&(csSidebars.insertSidebar(b.data),a(".cs-wrap .custom-sidebars-add-new").detach()):f.type="err",wpmUi.message(f)}function h(){var a=i.$().find("form");return 0<i.$("#csb-more:checked").length&&jQuery("<input>").attr({type:"hidden",value:"show",name:"advance"}).appendTo(a),i.loading(!0),j.reset().data(a).ondone(g).load_json(),!1}var i=null,j=null;return b instanceof CsSidebar&&(b={id:b.getID(),title:csSidebarsData.title_edit.replace("[Sidebar]",b.name),button:csSidebarsData.btn_edit}),i=wpmUi.popup().modal(!0).title(b.title).onshow(c).content(csSidebars.edit_form),c(),f(b,!0,null),j=wpmUi.ajax(null,"cs-ajax"),b.id&&(i.loading(!0),j.reset().data({do:"get",sb:b.id,_wpnonce:csSidebarsData._wpnonce_get}).ondone(f).load_json()),i.show(),i.$().find("#csb-name").focus(),i.$().on("keypress","#csb-name",function(b){13===b.keyCode&&0<a(this).val().length&&a("#csb-description").focus()}),i.$().on("keypress","#csb-description",function(a){13===a.keyCode&&i.$(".btn-save").click()}),i.$().on("click","#csb-more",e),i.$().on("click",".btn-save",h),i.$().on("click",".btn-cancel",i.destroy),!0},updateSidebar:function(a,b){return a.sb.find(".sidebar-name h2").text(b.name),a.sb.find(".sidebar-description").html('<p class="description"></p>').find(".description").text(b.description),csSidebars},insertSidebar:function(a){var b=jQuery('<div class="widgets-holder-wrap"></div>'),c=jQuery('<div class="widgets-sortables ui-sortable"></div>'),d=jQuery('<div class="sidebar-name"><div class="sidebar-name-arrow"><br></div><h2></h2></div>'),e=jQuery('<div class="sidebar-description"></div>'),f=csSidebars.right.find(".sidebars-column-1 > .inner:first");return c.attr("id",a.id),d.find("h2").text(a.name),e.html('<p class="description"></p>').find(".description").text(a.description),d.appendTo(c),e.appendTo(c),c.appendTo(b),b.prependTo(f),jQuery("#widgets-right .sidebar-name").unbind("click"),jQuery("#widgets-left .sidebar-name").unbind("click"),jQuery(document.body).unbind("click.widgets-toggle"),jQuery(".widgets-chooser").off("click.widgets-chooser").off("keyup.widgets-chooser"),jQuery("#available-widgets .widget .widget-title").off("click.widgets-chooser"),jQuery(".widgets-chooser-sidebars").empty(),window.wpWidgets.init(),csSidebars.initSidebars(),csSidebars},showExport:function(){function a(a){var b=jQuery(this).closest("form");return h.reset().data(b).load_http(),g.destroy(),a.preventDefault(),!1}function b(a,b,c){var d={};g.loading(!1),b?g.size(900,600).content(a.html):(d.message=a.message,d.parent=g.$().find(".wpmui-wnd-content"),d.insert_after=!1,d.id="export",d.class="wpmui-wnd-err",d.type="err",wpmUi.message(d))}function c(a){var c=jQuery(this).closest("form");return g.loading(!0),h.reset().data(c).ondone(b).load_json("cs-ajax"),a.preventDefault(),!1}function d(){var a=jQuery(this),b=a.prop("checked"),c=g.$().find(".column-widgets, .import-widgets");b?c.show():c.hide()}function e(){g.size(782,480),g.content(csSidebars.export_form)}function f(){var a=g.$().find(".frm-import");g.loading(!0),h.reset().data(a).load_http("_self")}var g=null,h=null;return g=wpmUi.popup().modal(!0).size(782,480).title(csSidebarsData.title_export).content(csSidebars.export_form).show(),h=wpmUi.ajax(null,"cs-ajax"),g.$().on("submit",".frm-export",a),g.$().on("submit",".frm-preview-import",c),g.$().on("change","#import-widgets",d),g.$().on("click",".btn-cancel",e),g.$().on("click",".btn-import",f),!0},showRemove:function(b){function c(a){a.find(".name").text(j)}function d(){g.loading(!1),g.destroy()}function e(a,b,c){var d={};g.loading(!1),g.destroy(),d.message=a.message,d.parent="#widgets-right",d.insert_after="#cs-title-options",d.id="editor",b?(csSidebars.right.find("#"+i).closest(".widgets-holder-wrap").remove(),csSidebars.remove(i),"delete"===a.action&&window.csSidebars.showGetStartedBox()):d.type="err",wpmUi.message(d)}function f(){g.loading(!0),h.reset().data({do:"delete",sb:i,_wpnonce:a("#_wp_nonce_cs_delete_sidebar").val()}).ondone(e).load_json()}var g=null,h=null,i=b.getID(),j=b.name;return g=wpmUi.popup().modal(!0).size(560,160).title(csSidebarsData.title_delete).content(csSidebars.delete_form).onshow(c).show(),h=wpmUi.ajax(null,"cs-ajax"),g.$().on("click",".btn-cancel",d),g.$().on("click",".btn-delete",f),!0},showLocations:function(b){function c(b,c,d){function e(a,b,c){var d=jQuery("<option></option>");d.attr("value",c).text(a.name),b.append(d)}function f(a,b,c,d){var e=d.closest(".cs-replaceable").filter("."+b),f=e.find('option[value="'+c+'"]'),g=e.find("optgroup.used"),h=e.find(".detail-toggle");a===k?(f.prop("selected",!0),!0!==h.prop("checked")&&(h.prop("checked",!0),e.addClass("open"),wpmUi.upgrade_multiselect(e))):(g.length||(g=jQuery('<optgroup class="used">').attr("label",e.data("lbl-used")).appendTo(e.find(".details select"))),f.detach().appendTo(g))}var h,i,j;if(g.loading(!1),!c)return g.destroy(),void csSidebars.showAjaxError(b);g.$().find(".sb-name").text(b.sidebar.name);var k=b.sidebar.id;g.$().find(".message.no-sidebars").hide();var l=0,m=g.$().find(".cs-replaceable");m.hide(),b.replaceable=wpmUi.obj(b.replaceable);for(var n in b.replaceable)b.replaceable.hasOwnProperty(n)&&(m.filter("."+b.replaceable[n]).show(),l++);0===l&&(g.$().find(".wpmui-box, .message, .button-primary").hide(),g.$().find(".message.no-sidebars").show().parent().addClass("notice notice-error").removeClass("hidden"));var o=g.$().find(".cs-datalist.cs-cat"),p=g.$().find(".cs-datalist.cs-arc-cat"),q=b.categories;p.empty(),o.empty();for(var r in q)e(q[r],p,r),e(q[r],o,r);for(var s in q){if(q[s].single)for(h in q[s].single)f(q[s].single[h],h,s,o);if(q[s].archive)for(h in q[s].archive)f(q[s].archive[h],h,s,p)}var t=g.$().find(".cs-datalist.cs-pt"),u=b.posttypes;t.empty();for(var v in u)i=jQuery("<option></option>"),j=u[v].name,i.attr("value",v).text(j),t.append(i);for(var w in u)if(u[w].single)for(h in u[w].single)f(u[w].single[h],h,w,t);var x=g.$().find(".cs-datalist.cs-arc"),y=b.archives;x.empty();for(var z in y)i=jQuery("<option></option>"),j=y[z].name,i.attr("value",z).text(j),x.append(i);for(var A in y)if(y[A].archive)for(h in y[A].archive)f(y[A].archive[h],h,A,x);var B=g.$().find(".cs-datalist.cs-arc-aut"),C=b.authors;B.empty();for(var D in C)i=jQuery("<option></option>"),j=C[D].name,i.attr("value",D).text(j),B.append(i);for(var E in C)if(C[E].archive)for(h in C[E].archive)f(C[E].archive[h],h,E,B);g.$().find(".cs-3rd-part .cs-datalist").each(function(){var c=b[a(this).data("id")];a(this).empty();for(var d in c)i=jQuery("<option></option>"),j=c[d].name,i.attr("value",d).text(j),a(this).append(i);for(var e in c)if(c[e].archive)for(h in c[e].archive)f(c[e].archive[h],h,e,a(this))}),g.$().find(".cf-custom-taxonomies .cs-datalist").each(function(){var c=b[a(this).data("id")];a(this).empty();for(var d in c)i=jQuery("<option></option>"),j=c[d].name,i.attr("value",d).text(j),a(this).append(i);for(var e in c)if(c[e].single)for(h in c[e].single)f(c[e].single[h],h,e,a(this))})}function d(a){var b=jQuery(this),c=b.closest(".cs-replaceable"),d=c.find("select");b.prop("checked")?(c.addClass("open"),wpmUi.upgrade_multiselect(c),d.trigger("change.select2")):(c.removeClass("open"),d.val([]))}function e(a,b,c){var d={};g.loading(!1),g.destroy(),d.message=a.message,d.parent="#widgets-right",d.insert_after="#cs-title-options",d.id="editor",b||(d.type="err"),wpmUi.message(d)}function f(){g.loading(!0),h.reset().data(i).ondone(e).load_json()}var g=null,h=null,i=null,j=b.getID();return g=wpmUi.popup().modal(!0).size(782,560).title(csSidebarsData.title_location).content(csSidebars.location_form).show(),g.loading(!0),i=g.$().find(".frm-location"),i.find(".sb-id").val(j),h=wpmUi.ajax(null,"cs-ajax"),h.reset().data({do:"get-location",sb:j}).ondone(c).load_json(),g.$().on("click",".detail-toggle",d),g.$().on("click",".btn-save",f),g.$().on("click",".btn-cancel",g.destroy),!0},setReplaceable:function(a,b,c){function d(a,b,c){a instanceof Object&&"object"==typeof a.replaceable&&(csSidebarsData.replaceable=wpmUi.obj(a.replaceable),f.find(".widgets-sortables").each(function(){var a=!1,b=jQuery(this),c=b.attr("id"),d=csSidebars.find(c);for(var e in csSidebarsData.replaceable)if(csSidebarsData.replaceable.hasOwnProperty(e)&&csSidebarsData.replaceable[e]===c){a=!0;break}csSidebars.setReplaceable(d,a,!1)})),f.find(".cs-toolbar .chk-replaceable").prop("disabled",!1),f.find(".cs-toolbar .btn-replaceable").removeClass("wpmui-loading")}var e,f=csSidebars.right.find(".sidebars-column-2 .widgets-holder-wrap"),g=jQuery(a.sb).closest(".widgets-holder-wrap"),h=g.find(".cs-toolbar .chk-replaceable"),i=g.find(".replace-marker");g.find(".cs-toolbar .btn-replaceable");return void 0===b&&(b=h.prop("checked")),void 0===c&&(c=!0),h.data("active")!==b&&(h.data("active",b),h.prop("checked",b),b?(i.length||jQuery("<div></div>").appendTo(g).attr("data-label",csSidebarsData.lbl_replaceable).addClass("replace-marker"),g.addClass("replaceable")):(i.remove(),g.removeClass("replaceable")),c&&(f.find(".cs-toolbar .chk-replaceable").prop("disabled",!0),f.find(".cs-toolbar .btn-replaceable").addClass("wpmui-loading"),e=wpmUi.ajax(null,"cs-ajax"),e.reset().data({do:"replaceable",state:b,sb:a.getID()}).ondone(d).load_json()),!1)},find:function(a){return csSidebars.sidebars[a]},add:function(a,b){return csSidebars.sidebars[a]=new CsSidebar(a,b),csSidebars.sidebars[a]},remove:function(a){delete csSidebars.sidebars[a]},isCustomSidebar:function(a){return jQuery(a).attr("id").substr(0,csSidebars.sidebar_prefix.length)===csSidebars.sidebar_prefix},addIdToLabel:function(a,b){if(!0!==a.data("label-done")){var c=a.attr("for");a.attr("for",c+b),a.find(".has-label").attr("id",c+b),a.data("label-done",!0)}},getIdFromEditbar:function(a){return a.closest(".widgets-holder-wrap").find(".widgets-sortables:first").attr("id")},showGetStartedBox:function(){if(0===a(".sidebars-column-1 .inner .widgets-holder-wrap").length){var b=wp.template("custom-sidebars-new");a(".sidebars-column-1 .inner").before(b()),a(".custom-sidebars-add-new").on("click",function(){a("button.btn-create-sidebar").click()})}}},jQuery(function(a){a("#csfooter").hide(),a("#widgets-right").length>0&&csSidebars.init(),a(".defaultsContainer").hide(),a("#widgets-right .widgets-sortables").on("sort",function(b,c){a("#widgets-right").top;c.position.top=-a("#widgets-right").css("top")})}),jQuery(document).ready(function(a){window.setTimeout(function(){window.csSidebars.showGetStartedBox()},1e3)})}(jQuery),jQuery.fn.sortElements=function(){var a=[].sort;return function(b,c){c=c||function(){return this};var d=this.map(function(){var a=c.call(this),b=a.parentNode,d=b.insertBefore(document.createTextNode(""),a.nextSibling);return function(){if(b===this)throw new Error("You can't sort elements if any one is a descendant of another.");b.insertBefore(this,d),b.removeChild(d)}});return a.call(this,b).each(function(a){d[a].call(c.call(this))})}}(),function(a){jQuery(document).ready(function(a){a("#screen-options-wrap .cs-allow-author input[type=checkbox]").on("change",function(){var b={action:"custom_sidebars_allow_author",_wpnonce:a("#custom_sidebars_allow_author").val(),value:this.checked};a.post(ajaxurl,b)})})}(jQuery),function(a){jQuery(document).ready(function(a){a("#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]").on("change",function(){var b={action:"custom_sidebars_metabox_custom_taxonomies",_wpnonce:a("#custom_sidebars_custom_taxonomies").val(),fields:{}};a("#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]").each(function(){b.fields[a(this).val()]=this.checked}),a.post(ajaxurl,b)})})}(jQuery),function(a){jQuery(document).ready(function(a){a("#screen-options-wrap .cs-roles input[type=checkbox]").on("change",function(){var b={action:"custom_sidebars_metabox_roles",_wpnonce:a("#custom_sidebars_metabox_roles").val(),fields:{}};a("#screen-options-wrap .cs-roles input[type=checkbox]").each(function(){b.fields[a(this).val()]=this.checked}),a.post(ajaxurl,b)})})}(jQuery);
|
customsidebars.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
* Plugin Name: Custom Sidebars
|
| 4 |
* Plugin URI: https://wordpress.org/plugins/custom-sidebars/
|
| 5 |
* Description: Allows you to create widgetized areas and custom sidebars. Replace whole sidebars or single widgets for specific posts and pages.
|
| 6 |
-
* Version: 3.1.
|
| 7 |
* Author: WPMU DEV
|
| 8 |
* Author URI: http://premium.wpmudev.org/
|
| 9 |
* Textdomain: custom-sidebars
|
| 3 |
* Plugin Name: Custom Sidebars
|
| 4 |
* Plugin URI: https://wordpress.org/plugins/custom-sidebars/
|
| 5 |
* Description: Allows you to create widgetized areas and custom sidebars. Replace whole sidebars or single widgets for specific posts and pages.
|
| 6 |
+
* Version: 3.1.5
|
| 7 |
* Author: WPMU DEV
|
| 8 |
* Author URI: http://premium.wpmudev.org/
|
| 9 |
* Textdomain: custom-sidebars
|
inc/class-custom-sidebars-editor.php
CHANGED
|
@@ -9,6 +9,13 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 9 |
|
| 10 |
private $modifiable = null;
|
| 11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
/**
|
| 13 |
* Metabox roles name
|
| 14 |
*
|
|
@@ -23,6 +30,13 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 23 |
*/
|
| 24 |
private $custom_taxonomies_name = 'custom_sidebars_custom_taxonomies';
|
| 25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
/**
|
| 27 |
* Returns the singleton object.
|
| 28 |
*
|
|
@@ -46,23 +60,11 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 46 |
return;
|
| 47 |
}
|
| 48 |
// Add the sidebar metabox to posts.
|
| 49 |
-
add_action(
|
| 50 |
-
'add_meta_boxes',
|
| 51 |
-
array( $this, 'add_meta_box' )
|
| 52 |
-
);
|
| 53 |
-
|
| 54 |
// Save the options from the sidebars-metabox.
|
| 55 |
-
add_action(
|
| 56 |
-
'save_post',
|
| 57 |
-
array( $this, 'store_replacements' )
|
| 58 |
-
);
|
| 59 |
-
|
| 60 |
// Handle ajax requests.
|
| 61 |
-
add_action(
|
| 62 |
-
'cs_ajax_request',
|
| 63 |
-
array( $this, 'handle_ajax' )
|
| 64 |
-
);
|
| 65 |
-
|
| 66 |
add_action( 'admin_init', array( $this, 'settings' ) );
|
| 67 |
}
|
| 68 |
|
|
@@ -78,47 +80,32 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 78 |
add_filter( 'screen_settings', array( $this, 'add_capabilities_select_box' ), 10, 2 );
|
| 79 |
add_action( 'wp_ajax_custom_sidebars_metabox_roles', array( $this, 'update_custom_sidebars_metabox_roles' ) );
|
| 80 |
add_action( 'wp_ajax_custom_sidebars_metabox_custom_taxonomies', array( $this, 'update_custom_sidebars_metabox_custom_taxonomies' ) );
|
| 81 |
-
|
| 82 |
/**
|
| 83 |
* Check user privileges
|
| 84 |
*/
|
| 85 |
$user_can_save = $this->current_user_can_update_custom_sidebars();
|
| 86 |
-
|
| 87 |
if ( ! $user_can_save ) {
|
| 88 |
return;
|
| 89 |
}
|
| 90 |
// Add a custom column to post list.
|
| 91 |
$posttypes = self::get_post_types( 'objects' );
|
| 92 |
foreach ( $posttypes as $pt ) {
|
| 93 |
-
add_filter(
|
| 94 |
-
|
| 95 |
-
array( $this, 'post_columns' )
|
| 96 |
-
);
|
| 97 |
-
|
| 98 |
-
add_action(
|
| 99 |
-
'manage_' . $pt->name . '_posts_custom_column',
|
| 100 |
-
array( $this, 'post_column_content' ),
|
| 101 |
-
10, 2
|
| 102 |
);
|
| 103 |
}
|
| 104 |
/** This action is documented in wp-admin/includes/screen.php */
|
| 105 |
add_filter( 'default_hidden_columns', array( $this, 'default_hidden_columns' ), 10, 2 );
|
| 106 |
-
|
| 107 |
add_action( 'quick_edit_custom_box', array( $this, 'post_quick_edit' ), 10, 2 );
|
| 108 |
add_action( 'bulk_edit_custom_box', array( $this, 'post_bulk_edit' ), 10, 2 );
|
| 109 |
-
|
| 110 |
-
add_action(
|
| 111 |
-
'admin_footer',
|
| 112 |
-
array( $this, 'post_quick_edit_js' )
|
| 113 |
-
);
|
| 114 |
-
|
| 115 |
/**
|
| 116 |
* Bulk Edit save
|
| 117 |
*
|
| 118 |
* @since 3.0.8
|
| 119 |
*/
|
| 120 |
add_action( 'save_post', array( $this, 'bulk_edit_save' ) );
|
| 121 |
-
|
| 122 |
}
|
| 123 |
|
| 124 |
/**
|
|
@@ -132,11 +119,9 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 132 |
$handle_it = false;
|
| 133 |
$view_file = '';
|
| 134 |
$sb_id = '';
|
| 135 |
-
|
| 136 |
if ( isset( $_POST['sb'] ) ) {
|
| 137 |
$sb_id = $_POST['sb'];
|
| 138 |
}
|
| 139 |
-
|
| 140 |
switch ( $action ) {
|
| 141 |
case 'get':
|
| 142 |
case 'save':
|
|
@@ -150,14 +135,11 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 150 |
$req->id = $sb_id;
|
| 151 |
break;
|
| 152 |
}
|
| 153 |
-
|
| 154 |
// The ajax request was not meant for us...
|
| 155 |
if ( ! $handle_it ) {
|
| 156 |
return false;
|
| 157 |
}
|
| 158 |
-
|
| 159 |
$sb_data = self::get_sidebar( $sb_id );
|
| 160 |
-
|
| 161 |
if ( ! current_user_can( self::$cap_required ) ) {
|
| 162 |
$req = self::req_err(
|
| 163 |
$req,
|
|
@@ -190,37 +172,31 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 190 |
$req->sidebar = $sb_data;
|
| 191 |
}
|
| 192 |
break;
|
| 193 |
-
|
| 194 |
// Save or insert the specified sidebar.
|
| 195 |
case 'save':
|
| 196 |
$req = $this->save_item( $req, $_POST );
|
| 197 |
break;
|
| 198 |
-
|
| 199 |
// Delete the specified sidebar.
|
| 200 |
case 'delete':
|
| 201 |
$req->sidebar = $sb_data;
|
| 202 |
$req = $this->delete_item( $req, $_POST );
|
| 203 |
break;
|
| 204 |
-
|
| 205 |
// Get the location data.
|
| 206 |
case 'get-location':
|
| 207 |
$req->sidebar = $sb_data;
|
| 208 |
$req = $this->get_location_data( $req );
|
| 209 |
break;
|
| 210 |
-
|
| 211 |
// Update the location data.
|
| 212 |
case 'set-location':
|
| 213 |
$req->sidebar = $sb_data;
|
| 214 |
$req = $this->set_location_data( $req );
|
| 215 |
break;
|
| 216 |
-
|
| 217 |
// Toggle theme sidebar replaceable-flag.
|
| 218 |
case 'replaceable':
|
| 219 |
$req = $this->set_replaceable( $req );
|
| 220 |
break;
|
| 221 |
}
|
| 222 |
}
|
| 223 |
-
|
| 224 |
// Make the ajax response either as JSON or plain text.
|
| 225 |
if ( $is_json ) {
|
| 226 |
self::json_response( $req );
|
|
@@ -228,7 +204,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 228 |
ob_start();
|
| 229 |
include CSB_VIEWS_DIR . $view_file;
|
| 230 |
$resp = ob_get_clean();
|
| 231 |
-
|
| 232 |
self::plain_response( $resp );
|
| 233 |
}
|
| 234 |
}
|
|
@@ -256,30 +231,24 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 256 |
__( 'You have no permission to do this operation.', 'custom-sidebars' )
|
| 257 |
);
|
| 258 |
}
|
| 259 |
-
|
| 260 |
$sidebars = self::get_custom_sidebars();
|
| 261 |
$sb_id = $req->id;
|
| 262 |
-
|
| 263 |
$sb_desc = '';
|
| 264 |
if ( isset( $data['description'] ) ) {
|
| 265 |
$sb_desc = stripslashes( trim( $data['description'] ) );
|
| 266 |
}
|
| 267 |
-
|
| 268 |
$sb_name = isset( $data['name'] )? $data['name']:'';
|
| 269 |
-
|
| 270 |
if ( function_exists( 'mb_substr' ) ) {
|
| 271 |
$sb_name = mb_substr( stripslashes( trim( $sb_name ) ), 0, 40 );
|
| 272 |
} else {
|
| 273 |
$sb_name = substr( stripslashes( trim( $sb_name ) ), 0, 40 );
|
| 274 |
}
|
| 275 |
-
|
| 276 |
if ( empty( $sb_name ) ) {
|
| 277 |
return self::req_err(
|
| 278 |
$req,
|
| 279 |
__( 'Sidebar-name cannot be empty', 'custom-sidebars' )
|
| 280 |
);
|
| 281 |
}
|
| 282 |
-
|
| 283 |
if ( empty( $sb_id ) ) {
|
| 284 |
// Create a new sidebar.
|
| 285 |
$action = 'insert';
|
|
@@ -288,7 +257,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 288 |
$num += 1;
|
| 289 |
$sb_id = self::$sidebar_prefix . $num;
|
| 290 |
} while ( self::get_sidebar( $sb_id, 'cust' ) );
|
| 291 |
-
|
| 292 |
$sidebar = array(
|
| 293 |
'id' => $sb_id,
|
| 294 |
);
|
|
@@ -296,7 +264,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 296 |
// Update existing sidebar
|
| 297 |
$action = 'update';
|
| 298 |
$sidebar = self::get_sidebar( $sb_id, 'cust' );
|
| 299 |
-
|
| 300 |
if ( ! $sidebar ) {
|
| 301 |
return self::req_err(
|
| 302 |
$req,
|
|
@@ -304,7 +271,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 304 |
);
|
| 305 |
}
|
| 306 |
}
|
| 307 |
-
|
| 308 |
if ( function_exists( 'mb_strlen' ) ) {
|
| 309 |
if ( mb_strlen( $sb_desc ) > 200 ) {
|
| 310 |
$sb_desc = mb_substr( $sb_desc, 0, 200 );
|
|
@@ -314,7 +280,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 314 |
$sb_desc = substr( $sb_desc, 0, 200 );
|
| 315 |
}
|
| 316 |
}
|
| 317 |
-
|
| 318 |
// Populate the sidebar object.
|
| 319 |
if ( 'insert' == $action || self::wpml_is_default_lang() ) {
|
| 320 |
$sidebar['name'] = $sb_name;
|
|
@@ -323,7 +288,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 323 |
$sidebar['name_lang'] = $sb_name;
|
| 324 |
$sidebar['description_lang'] = $sb_desc;
|
| 325 |
}
|
| 326 |
-
|
| 327 |
foreach ( array( 'before', 'after' ) as $prefix ) {
|
| 328 |
foreach ( array( 'widget', 'title' ) as $sufix ) {
|
| 329 |
$name = sprintf( '%s_%s', $prefix, $sufix );
|
|
@@ -333,7 +297,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 333 |
}
|
| 334 |
}
|
| 335 |
}
|
| 336 |
-
|
| 337 |
if ( 'insert' == $action ) {
|
| 338 |
$sidebars[] = $sidebar;
|
| 339 |
$req->message = sprintf(
|
|
@@ -360,18 +323,14 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 360 |
);
|
| 361 |
}
|
| 362 |
}
|
| 363 |
-
|
| 364 |
// Save the changes.
|
| 365 |
self::set_custom_sidebars( $sidebars );
|
| 366 |
self::refresh_sidebar_widgets();
|
| 367 |
-
|
| 368 |
$req->data = $sidebar;
|
| 369 |
$req->action = $action;
|
| 370 |
-
|
| 371 |
// Allow user to translate sidebar name/description via WPML.
|
| 372 |
self::wpml_update( $sidebars );
|
| 373 |
$req->data = self::wpml_translate( $sidebar );
|
| 374 |
-
|
| 375 |
/**
|
| 376 |
* save user preferences (advance).
|
| 377 |
*
|
|
@@ -386,7 +345,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 386 |
$advance[ $req->data['id'] ] = isset( $_POST['advance'] ) && 'show' === $_POST['advance'];
|
| 387 |
update_user_option( $user_id, 'custom-sidebars-editor-advance', $advance );
|
| 388 |
}
|
| 389 |
-
|
| 390 |
return $req;
|
| 391 |
}
|
| 392 |
|
|
@@ -415,14 +373,12 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 415 |
}
|
| 416 |
$sidebars = self::get_custom_sidebars();
|
| 417 |
$sidebar = self::get_sidebar( $req->id, 'cust' );
|
| 418 |
-
|
| 419 |
if ( ! $sidebar ) {
|
| 420 |
return self::req_err(
|
| 421 |
$req,
|
| 422 |
__( 'The sidebar does not exist', 'custom-sidebars' )
|
| 423 |
);
|
| 424 |
}
|
| 425 |
-
|
| 426 |
$found = false;
|
| 427 |
foreach ( $sidebars as $ind => $item ) {
|
| 428 |
if ( $item['id'] == $req->id ) {
|
|
@@ -435,18 +391,15 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 435 |
break;
|
| 436 |
}
|
| 437 |
}
|
| 438 |
-
|
| 439 |
if ( ! $found ) {
|
| 440 |
return self::req_err(
|
| 441 |
$req,
|
| 442 |
__( 'The sidebar was not found', 'custom-sidebars' )
|
| 443 |
);
|
| 444 |
}
|
| 445 |
-
|
| 446 |
// Save the changes.
|
| 447 |
self::set_custom_sidebars( $sidebars );
|
| 448 |
self::refresh_sidebar_widgets();
|
| 449 |
-
|
| 450 |
return $req;
|
| 451 |
}
|
| 452 |
|
|
@@ -477,7 +430,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 477 |
$options['modifiable'] = array_values( $options['modifiable'] );
|
| 478 |
self::set_options( $options );
|
| 479 |
$req->replaceable = (object) $options['modifiable'];
|
| 480 |
-
|
| 481 |
return $req;
|
| 482 |
}
|
| 483 |
|
|
@@ -498,7 +450,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 498 |
'_builtin' => self::get_taxonomies( 'objects', true ),
|
| 499 |
'custom' => self::get_taxonomies( 'objects', false ),
|
| 500 |
);
|
| 501 |
-
|
| 502 |
$archive_type = array(
|
| 503 |
'_blog' => __( 'Front Page', 'custom-sidebars' ),
|
| 504 |
'_search' => __( 'Search Results', 'custom-sidebars' ),
|
|
@@ -506,7 +457,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 506 |
'_authors' => __( 'Any Author Archive', 'custom-sidebars' ),
|
| 507 |
'_date' => __( 'Date Archives', 'custom-sidebars' ),
|
| 508 |
);
|
| 509 |
-
|
| 510 |
/**
|
| 511 |
* taxonomies
|
| 512 |
*
|
|
@@ -529,7 +479,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 529 |
break;
|
| 530 |
}
|
| 531 |
}
|
| 532 |
-
|
| 533 |
foreach ( $raw_taxonomies['custom'] as $taxonomy ) {
|
| 534 |
if ( in_array( $taxonomy->labels->singular_name, $default_taxonomies ) ) {
|
| 535 |
$archive_type[ '_taxonomy_'.$taxonomy->name ] = sprintf( __( '%s Archives', 'custom-sidebars' ), ucfirst( $taxonomy->name ) );
|
|
@@ -537,12 +486,10 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 537 |
$archive_type[ '_taxonomy_'.$taxonomy->name ] = sprintf( __( '%s Archives', 'custom-sidebars' ), $taxonomy->labels->singular_name );
|
| 538 |
}
|
| 539 |
}
|
| 540 |
-
|
| 541 |
/**
|
| 542 |
* sort array by values
|
| 543 |
*/
|
| 544 |
asort( $archive_type );
|
| 545 |
-
|
| 546 |
$raw_authors = array();
|
| 547 |
$raw_authors = get_users(
|
| 548 |
array(
|
|
@@ -551,24 +498,20 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 551 |
'who' => 'authors',
|
| 552 |
)
|
| 553 |
);
|
| 554 |
-
|
| 555 |
// Collect required data for all posttypes.
|
| 556 |
$posttypes = array();
|
| 557 |
foreach ( $raw_posttype as $item ) {
|
| 558 |
$sel_single = @$defaults['post_type_single'][ $item->name ];
|
| 559 |
-
|
| 560 |
$posttypes[ $item->name ] = array(
|
| 561 |
'name' => $item->labels->name,
|
| 562 |
'single' => self::get_array( $sel_single ),
|
| 563 |
);
|
| 564 |
}
|
| 565 |
-
|
| 566 |
// Extract the data from categories list that we need.
|
| 567 |
$categories = array();
|
| 568 |
foreach ( $raw_cat as $item ) {
|
| 569 |
$sel_single = @$defaults['category_single'][ $item->term_id ];
|
| 570 |
$sel_archive = @$defaults['category_archive'][ $item->term_id ];
|
| 571 |
-
|
| 572 |
$categories[ $item->term_id ] = array(
|
| 573 |
'name' => $item->name,
|
| 574 |
'count' => $item->count,
|
|
@@ -576,7 +519,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 576 |
'archive' => self::get_array( $sel_archive ),
|
| 577 |
);
|
| 578 |
}
|
| 579 |
-
|
| 580 |
// Build a list of archive types.
|
| 581 |
$archives = array(); // Start with a copy of the posttype list.
|
| 582 |
foreach ( $raw_posttype as $item ) {
|
|
@@ -589,24 +531,19 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 589 |
$item->labels->singular_name
|
| 590 |
);
|
| 591 |
}
|
| 592 |
-
|
| 593 |
$sel_archive = @$defaults['post_type_archive'][ $item->name ];
|
| 594 |
-
|
| 595 |
$archives[ $item->name ] = array(
|
| 596 |
'name' => $label,
|
| 597 |
'archive' => self::get_array( $sel_archive ),
|
| 598 |
);
|
| 599 |
}
|
| 600 |
-
|
| 601 |
foreach ( $archive_type as $key => $name ) {
|
| 602 |
$sel_archive = @$defaults[ substr( $key, 1 ) ];
|
| 603 |
-
|
| 604 |
$archives[ $key ] = array(
|
| 605 |
'name' => $name,
|
| 606 |
'archive' => self::get_array( $sel_archive ),
|
| 607 |
);
|
| 608 |
}
|
| 609 |
-
|
| 610 |
/**
|
| 611 |
* Custom taxonomies archive
|
| 612 |
*
|
|
@@ -630,7 +567,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 630 |
);
|
| 631 |
}
|
| 632 |
}
|
| 633 |
-
|
| 634 |
/**
|
| 635 |
* Custom taxonomies taxes
|
| 636 |
*
|
|
@@ -681,7 +617,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 681 |
}
|
| 682 |
}
|
| 683 |
}
|
| 684 |
-
|
| 685 |
// Build a list of authors.
|
| 686 |
$authors = array();
|
| 687 |
foreach ( $raw_authors as $user ) {
|
|
@@ -692,7 +627,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 692 |
);
|
| 693 |
}
|
| 694 |
$req->authors = $authors;
|
| 695 |
-
|
| 696 |
$req->replaceable = $defaults['modifiable'];
|
| 697 |
$req->posttypes = $posttypes;
|
| 698 |
$req->categories = $categories;
|
|
@@ -738,18 +672,15 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 738 |
$raw_taxonomies = array(
|
| 739 |
'custom' => self::get_taxonomies( 'names', false ),
|
| 740 |
);
|
| 741 |
-
|
| 742 |
foreach ( $_POST as $key => $value ) {
|
| 743 |
if ( strlen( $key ) > 8 && '___cs___' == substr( $key, 0, 8 ) ) {
|
| 744 |
list( $prefix, $id ) = explode( '___', substr( $key, 8 ) );
|
| 745 |
-
|
| 746 |
if ( ! isset( $data[ $prefix ] ) ) {
|
| 747 |
$data[ $prefix ] = array();
|
| 748 |
}
|
| 749 |
$data[ $prefix ][ $id ] = $value;
|
| 750 |
}
|
| 751 |
}
|
| 752 |
-
|
| 753 |
$special_arc = array(
|
| 754 |
'blog',
|
| 755 |
'404',
|
|
@@ -758,7 +689,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 758 |
'search',
|
| 759 |
'date',
|
| 760 |
);
|
| 761 |
-
|
| 762 |
$raw_authors = array();
|
| 763 |
$raw_authors = get_users(
|
| 764 |
array(
|
|
@@ -783,7 +713,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 783 |
) {
|
| 784 |
unset( $options['post_type_single'][ $pt ][ $sb_id ] );
|
| 785 |
}
|
| 786 |
-
|
| 787 |
if (
|
| 788 |
is_array( @$data['arc'][ $sb_id ] ) &&
|
| 789 |
in_array( $pt, $data['arc'][ $sb_id ] )
|
|
@@ -796,7 +725,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 796 |
unset( $options['post_type_archive'][ $pt ][ $sb_id ] );
|
| 797 |
}
|
| 798 |
}
|
| 799 |
-
|
| 800 |
// Category settings.
|
| 801 |
foreach ( $raw_cat as $item ) {
|
| 802 |
$cat = $item->term_id;
|
|
@@ -811,7 +739,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 811 |
) {
|
| 812 |
unset( $options['category_single'][ $cat ][ $sb_id ] );
|
| 813 |
}
|
| 814 |
-
|
| 815 |
if (
|
| 816 |
is_array( @$data['arc-cat'][ $sb_id ] ) &&
|
| 817 |
in_array( $cat, $data['arc-cat'][ $sb_id ] )
|
|
@@ -824,7 +751,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 824 |
unset( $options['category_archive'][ $cat ][ $sb_id ] );
|
| 825 |
}
|
| 826 |
}
|
| 827 |
-
|
| 828 |
foreach ( $special_arc as $key ) {
|
| 829 |
if (
|
| 830 |
is_array( @$data['arc'][ $sb_id ] ) &&
|
|
@@ -838,7 +764,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 838 |
unset( $options[ $key ][ $sb_id ] );
|
| 839 |
}
|
| 840 |
}
|
| 841 |
-
|
| 842 |
// Author settings.
|
| 843 |
foreach ( $raw_authors as $user ) {
|
| 844 |
$key = $user->ID;
|
|
@@ -854,7 +779,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 854 |
unset( $options['author_archive'][ $key ][ $sb_id ] );
|
| 855 |
}
|
| 856 |
}
|
| 857 |
-
|
| 858 |
/**
|
| 859 |
* Custom taxonomies
|
| 860 |
*
|
|
@@ -899,7 +823,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 899 |
}
|
| 900 |
}
|
| 901 |
}
|
| 902 |
-
|
| 903 |
/**
|
| 904 |
* category Archive
|
| 905 |
*
|
|
@@ -918,7 +841,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 918 |
unset( $options['category_archive'][ $sb_id ] );
|
| 919 |
}
|
| 920 |
}
|
| 921 |
-
|
| 922 |
$req->message = sprintf(
|
| 923 |
__( 'Updated sidebar <strong>%1$s</strong> settings.', 'custom-sidebars' ),
|
| 924 |
esc_html( $req->sidebar['name'] )
|
|
@@ -943,11 +865,20 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 943 |
*/
|
| 944 |
public function add_meta_box() {
|
| 945 |
global $post;
|
| 946 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 947 |
$post_type = get_post_type( $post );
|
| 948 |
-
if ( ! $post_type ) {
|
| 949 |
-
|
| 950 |
-
|
|
|
|
|
|
|
|
|
|
| 951 |
/**
|
| 952 |
* Option that can be set in wp-config.php to remove the custom sidebar
|
| 953 |
* meta box for certain post types.
|
|
@@ -962,12 +893,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 962 |
) {
|
| 963 |
return false;
|
| 964 |
}
|
| 965 |
-
|
| 966 |
-
$show_meta_box = $this->current_user_can_update_custom_sidebars();
|
| 967 |
-
if ( ! $show_meta_box ) {
|
| 968 |
-
return false;
|
| 969 |
-
}
|
| 970 |
-
|
| 971 |
$pt_obj = get_post_type_object( $post_type );
|
| 972 |
if ( $pt_obj->publicly_queryable || $pt_obj->public ) {
|
| 973 |
add_meta_box(
|
|
@@ -1003,13 +928,12 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1003 |
*/
|
| 1004 |
protected function print_sidebars_form( $post_id, $type = 'metabox' ) {
|
| 1005 |
/**
|
| 1006 |
-
*
|
| 1007 |
*/
|
| 1008 |
-
$
|
| 1009 |
-
if ( ! $
|
| 1010 |
return;
|
| 1011 |
}
|
| 1012 |
-
|
| 1013 |
global $wp_registered_sidebars;
|
| 1014 |
$available = CustomSidebars::sort_sidebars_by_name( $wp_registered_sidebars );
|
| 1015 |
$replacements = self::get_replacements( $post_id );
|
|
@@ -1024,23 +948,19 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1024 |
}
|
| 1025 |
}
|
| 1026 |
}
|
| 1027 |
-
|
| 1028 |
switch ( $type ) {
|
| 1029 |
case 'col-sidebars':
|
| 1030 |
include CSB_VIEWS_DIR . 'col-sidebars.php';
|
| 1031 |
break;
|
| 1032 |
-
|
| 1033 |
case 'quick-edit':
|
| 1034 |
include CSB_VIEWS_DIR . 'quick-edit.php';
|
| 1035 |
break;
|
| 1036 |
-
|
| 1037 |
case 'bulk-edit':
|
| 1038 |
/**
|
| 1039 |
* @since 3.0.8
|
| 1040 |
*/
|
| 1041 |
include CSB_VIEWS_DIR . 'bulk-edit.php';
|
| 1042 |
break;
|
| 1043 |
-
|
| 1044 |
default:
|
| 1045 |
include CSB_VIEWS_DIR . 'metabox.php';
|
| 1046 |
break;
|
|
@@ -1049,11 +969,13 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1049 |
|
| 1050 |
public function store_replacements( $post_id ) {
|
| 1051 |
global $action;
|
| 1052 |
-
|
| 1053 |
-
|
|
|
|
|
|
|
|
|
|
| 1054 |
return;
|
| 1055 |
}
|
| 1056 |
-
|
| 1057 |
/*
|
| 1058 |
* Verify if this is an auto save routine. If it is our form has not
|
| 1059 |
* been submitted, so we dont want to do anything
|
|
@@ -1062,7 +984,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1062 |
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
|
| 1063 |
return $post_id;
|
| 1064 |
}
|
| 1065 |
-
|
| 1066 |
/*
|
| 1067 |
* 'editpost' .. Saved from full Post-Editor screen.
|
| 1068 |
* 'inline-save' .. Saved via the quick-edit form.
|
|
@@ -1070,20 +991,10 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1070 |
if ( ( isset( $_REQUEST['action'] ) && 'inline-save' != $_REQUEST['action'] ) && 'editpost' != $action ) {
|
| 1071 |
return $post_id;
|
| 1072 |
}
|
| 1073 |
-
|
| 1074 |
-
/**
|
| 1075 |
-
* Check settings
|
| 1076 |
-
*/
|
| 1077 |
-
$user_can_save = $this->current_user_can_update_custom_sidebars();
|
| 1078 |
-
if ( ! $user_can_save ) {
|
| 1079 |
-
return $post_id;
|
| 1080 |
-
}
|
| 1081 |
-
|
| 1082 |
// Make sure meta is added to the post, not a revision.
|
| 1083 |
if ( $the_post = wp_is_post_revision( $post_id ) ) {
|
| 1084 |
$post_id = $the_post;
|
| 1085 |
}
|
| 1086 |
-
|
| 1087 |
$sidebars = self::get_options( 'modifiable' );
|
| 1088 |
$data = array();
|
| 1089 |
if ( ! empty( $sidebars ) ) {
|
|
@@ -1096,12 +1007,10 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1096 |
}
|
| 1097 |
}
|
| 1098 |
}
|
| 1099 |
-
|
| 1100 |
self::set_post_meta( $post_id, $data );
|
| 1101 |
}
|
| 1102 |
|
| 1103 |
// ========== WPML support.
|
| 1104 |
-
|
| 1105 |
/**
|
| 1106 |
* Updates the WPML string register with the current sidebar string so the
|
| 1107 |
* user can translate the sidebar details using the WPML string translation.
|
|
@@ -1111,19 +1020,15 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1111 |
*/
|
| 1112 |
static protected function wpml_update( $custom_sidebars ) {
|
| 1113 |
if ( ! function_exists( 'icl_register_string' ) ) { return false; }
|
| 1114 |
-
|
| 1115 |
$theme_sidebars = self::get_sidebars();
|
| 1116 |
-
|
| 1117 |
// This is used to identify the sidebar-translations by WPML.
|
| 1118 |
$context = 'Sidebar';
|
| 1119 |
-
|
| 1120 |
// First do the theme sidebars, so they will be displayed in the
|
| 1121 |
// *bottom* of the translations list.
|
| 1122 |
foreach ( $theme_sidebars as $fields ) {
|
| 1123 |
self::wpml_update_field( $context, $fields['id'] . '-name', @$fields['name'], false );
|
| 1124 |
self::wpml_update_field( $context, $fields['id'] . '-description', @$fields['description'], false );
|
| 1125 |
}
|
| 1126 |
-
|
| 1127 |
foreach ( $custom_sidebars as $fields ) {
|
| 1128 |
$name = isset( $fields['name_lang'] ) ? $fields['name_lang'] : $fields['name'];
|
| 1129 |
$description = isset( $fields['description_lang'] ) ? $fields['description_lang'] : $fields['description'];
|
|
@@ -1144,34 +1049,26 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1144 |
*/
|
| 1145 |
static protected function wpml_update_field( $context, $field, $value, $update_string = true ) {
|
| 1146 |
global $sitepress, $sitepress_settings;
|
| 1147 |
-
|
| 1148 |
if ( empty( $sitepress ) || empty( $sitepress_settings ) ) { return false; }
|
| 1149 |
if ( ! function_exists( 'icl_t' ) ) { return false; }
|
| 1150 |
-
|
| 1151 |
if ( ! icl_st_is_registered_string( $context, $field ) ) {
|
| 1152 |
// Register the field if it does not exist.
|
| 1153 |
icl_register_string( $context, $field, $value, false );
|
| 1154 |
-
|
| 1155 |
$active_languages = $sitepress->get_active_languages();
|
| 1156 |
-
|
| 1157 |
foreach ( $active_languages as $lang => $data ) {
|
| 1158 |
icl_update_string_translation( $field, $lang, $value, ICL_STRING_TRANSLATION_COMPLETE );
|
| 1159 |
}
|
| 1160 |
-
|
| 1161 |
$default_language = ! empty( $sitepress_settings['st']['strings_language'] )
|
| 1162 |
? $sitepress_settings['st']['strings_language']
|
| 1163 |
: $sitepress->get_default_language();
|
| 1164 |
icl_update_string_translation( $field, $default_language, $value, ICL_STRING_TRANSLATION_COMPLETE );
|
| 1165 |
-
|
| 1166 |
} else if ( $update_string ) {
|
| 1167 |
-
|
| 1168 |
// Add translation.
|
| 1169 |
if ( defined( 'DOING_AJAX' ) ) {
|
| 1170 |
$current_language = $sitepress->get_language_cookie();
|
| 1171 |
} else {
|
| 1172 |
$current_language = $sitepress->get_current_language();
|
| 1173 |
}
|
| 1174 |
-
|
| 1175 |
icl_update_string_translation( $field, $current_language, $value, ICL_STRING_TRANSLATION_COMPLETE );
|
| 1176 |
}
|
| 1177 |
}
|
|
@@ -1186,17 +1083,14 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1186 |
global $sitepress, $sitepress_settings;
|
| 1187 |
if ( empty( $sitepress ) || empty( $sitepress_settings ) ) { return true; }
|
| 1188 |
if ( ! function_exists( 'icl_t' ) ) { return true; }
|
| 1189 |
-
|
| 1190 |
if ( defined( 'DOING_AJAX' ) ) {
|
| 1191 |
$current_language = $sitepress->get_language_cookie();
|
| 1192 |
} else {
|
| 1193 |
$current_language = $sitepress->get_current_language();
|
| 1194 |
}
|
| 1195 |
-
|
| 1196 |
$default_language = ! empty( $sitepress_settings['st']['strings_language'] )
|
| 1197 |
? $sitepress_settings['st']['strings_language']
|
| 1198 |
: $sitepress->get_default_language();
|
| 1199 |
-
|
| 1200 |
return $default_language == $current_language;
|
| 1201 |
}
|
| 1202 |
|
|
@@ -1223,7 +1117,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1223 |
} else {
|
| 1224 |
$sidebar['description'] = icl_t( $context, $sidebar['id'] . '-description', $sidebar['description'] );
|
| 1225 |
}
|
| 1226 |
-
|
| 1227 |
return $sidebar;
|
| 1228 |
}
|
| 1229 |
|
|
@@ -1231,7 +1124,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1231 |
// ========== Custom column an Quick-Edit fields for post list.
|
| 1232 |
// http://shibashake.com/wordpress-theme/expand-the-wordpress-quick-edit-menu
|
| 1233 |
//
|
| 1234 |
-
|
| 1235 |
/**
|
| 1236 |
* Adds a custom column to post-types that support custom sidebars.
|
| 1237 |
*
|
|
@@ -1244,17 +1136,14 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1244 |
$insert = array(
|
| 1245 |
'cs_replacement' => _x( 'Custom Sidebars', 'Column name on entries list.', 'custom-sidebars' ),
|
| 1246 |
);
|
| 1247 |
-
|
| 1248 |
// Column is added after column 'title'.
|
| 1249 |
$insert_after = 'title';
|
| 1250 |
-
|
| 1251 |
$pos = array_search( $insert_after, array_keys( $columns ) ) + 1;
|
| 1252 |
$columns = array_merge(
|
| 1253 |
array_slice( $columns, 0, $pos ),
|
| 1254 |
$insert,
|
| 1255 |
array_slice( $columns, $pos )
|
| 1256 |
);
|
| 1257 |
-
|
| 1258 |
return $columns;
|
| 1259 |
}
|
| 1260 |
|
|
@@ -1282,7 +1171,6 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1282 |
*/
|
| 1283 |
public function post_quick_edit( $column_name, $post_type ) {
|
| 1284 |
if ( ! self::supported_post_type( $post_type ) ) { return false; }
|
| 1285 |
-
|
| 1286 |
switch ( $column_name ) {
|
| 1287 |
case 'cs_replacement':
|
| 1288 |
$this->print_metabox_quick();
|
|
@@ -1301,46 +1189,35 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1301 |
*/
|
| 1302 |
public function post_quick_edit_js() {
|
| 1303 |
global $current_screen;
|
| 1304 |
-
|
| 1305 |
if ( ( $current_screen->base != 'edit' ) ) { return false; }
|
| 1306 |
if ( ! self::supported_post_type( $current_screen->post_type ) ) { return false; }
|
| 1307 |
-
|
| 1308 |
?>
|
| 1309 |
<script type="text/javascript">
|
| 1310 |
<!--
|
| 1311 |
jQuery(function() {
|
| 1312 |
// we create a copy of the WP inline edit post function
|
| 1313 |
var wp_inline_edit = inlineEditPost.edit;
|
| 1314 |
-
|
| 1315 |
// and then we overwrite the function with our own code
|
| 1316 |
inlineEditPost.edit = function( id ) {
|
| 1317 |
-
|
| 1318 |
// "call" the original WP edit function
|
| 1319 |
// we don't want to leave WordPress hanging
|
| 1320 |
wp_inline_edit.apply( this, arguments );
|
| 1321 |
-
|
| 1322 |
// now we take care of our business.
|
| 1323 |
-
|
| 1324 |
// get the post ID
|
| 1325 |
var post_id = 0;
|
| 1326 |
if ( typeof( id ) == 'object' ) {
|
| 1327 |
post_id = parseInt( this.getId( id ) );
|
| 1328 |
}
|
| 1329 |
-
|
| 1330 |
if ( post_id > 0 ) {
|
| 1331 |
-
|
| 1332 |
// define the edit row
|
| 1333 |
var edit_row = jQuery( '#edit-' + post_id );
|
| 1334 |
var post_row = jQuery( '#post-' + post_id );
|
| 1335 |
-
|
| 1336 |
// Our custom column
|
| 1337 |
var sidebar_col = post_row.find( '.cs_replacement' );
|
| 1338 |
-
|
| 1339 |
sidebar_col.find( '[data-sidebar]' ).each(function() {
|
| 1340 |
var key = jQuery( this ).attr( 'data-sidebar' ),
|
| 1341 |
val = jQuery( this ).attr( 'data-replaced' ),
|
| 1342 |
hide = 'yes' === jQuery( this ).attr( 'data-cshide' );
|
| 1343 |
-
|
| 1344 |
if ( hide ) {
|
| 1345 |
edit_row.find( '.cs-replacement-field.' + key ).val( val ).parent().hide();
|
| 1346 |
} else {
|
|
@@ -1460,6 +1337,20 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1460 |
}
|
| 1461 |
}
|
| 1462 |
$screen_settings .= '</fieldset>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1463 |
/**
|
| 1464 |
* Custom taxonomies
|
| 1465 |
*/
|
|
@@ -1534,6 +1425,31 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1534 |
wp_send_json_success();
|
| 1535 |
}
|
| 1536 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1537 |
/**
|
| 1538 |
* Check ability to save sidebars
|
| 1539 |
*
|
|
@@ -1567,4 +1483,23 @@ class CustomSidebarsEditor extends CustomSidebars {
|
|
| 1567 |
}
|
| 1568 |
return $value;
|
| 1569 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1570 |
};
|
| 9 |
|
| 10 |
private $modifiable = null;
|
| 11 |
|
| 12 |
+
/**
|
| 13 |
+
* Capability required to use *any* of the plugin features. If user does not
|
| 14 |
+
* have this capability then he will not see any change on admin dashboard.
|
| 15 |
+
* @var string
|
| 16 |
+
*/
|
| 17 |
+
static protected $cap_required = 'edit_theme_options';
|
| 18 |
+
|
| 19 |
/**
|
| 20 |
* Metabox roles name
|
| 21 |
*
|
| 30 |
*/
|
| 31 |
private $custom_taxonomies_name = 'custom_sidebars_custom_taxonomies';
|
| 32 |
|
| 33 |
+
/**
|
| 34 |
+
* Allow author to change sidebars
|
| 35 |
+
*
|
| 36 |
+
* @since 3.1.5
|
| 37 |
+
*/
|
| 38 |
+
private $allow_author_name = 'custom_sidebars_allow_author';
|
| 39 |
+
|
| 40 |
/**
|
| 41 |
* Returns the singleton object.
|
| 42 |
*
|
| 60 |
return;
|
| 61 |
}
|
| 62 |
// Add the sidebar metabox to posts.
|
| 63 |
+
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
// Save the options from the sidebars-metabox.
|
| 65 |
+
add_action( 'save_post', array( $this, 'store_replacements' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
// Handle ajax requests.
|
| 67 |
+
add_action( 'cs_ajax_request', array( $this, 'handle_ajax' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
add_action( 'admin_init', array( $this, 'settings' ) );
|
| 69 |
}
|
| 70 |
|
| 80 |
add_filter( 'screen_settings', array( $this, 'add_capabilities_select_box' ), 10, 2 );
|
| 81 |
add_action( 'wp_ajax_custom_sidebars_metabox_roles', array( $this, 'update_custom_sidebars_metabox_roles' ) );
|
| 82 |
add_action( 'wp_ajax_custom_sidebars_metabox_custom_taxonomies', array( $this, 'update_custom_sidebars_metabox_custom_taxonomies' ) );
|
| 83 |
+
add_action( 'wp_ajax_custom_sidebars_allow_author', array( $this, 'update_custom_sidebars_allow_author' ) );
|
| 84 |
/**
|
| 85 |
* Check user privileges
|
| 86 |
*/
|
| 87 |
$user_can_save = $this->current_user_can_update_custom_sidebars();
|
|
|
|
| 88 |
if ( ! $user_can_save ) {
|
| 89 |
return;
|
| 90 |
}
|
| 91 |
// Add a custom column to post list.
|
| 92 |
$posttypes = self::get_post_types( 'objects' );
|
| 93 |
foreach ( $posttypes as $pt ) {
|
| 94 |
+
add_filter( 'manage_' . $pt->name . '_posts_columns', array( $this, 'post_columns' ));
|
| 95 |
+
add_action( 'manage_' . $pt->name . '_posts_custom_column', array( $this, 'post_column_content' ), 10, 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
);
|
| 97 |
}
|
| 98 |
/** This action is documented in wp-admin/includes/screen.php */
|
| 99 |
add_filter( 'default_hidden_columns', array( $this, 'default_hidden_columns' ), 10, 2 );
|
|
|
|
| 100 |
add_action( 'quick_edit_custom_box', array( $this, 'post_quick_edit' ), 10, 2 );
|
| 101 |
add_action( 'bulk_edit_custom_box', array( $this, 'post_bulk_edit' ), 10, 2 );
|
| 102 |
+
add_action( 'admin_footer', array( $this, 'post_quick_edit_js' ));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 103 |
/**
|
| 104 |
* Bulk Edit save
|
| 105 |
*
|
| 106 |
* @since 3.0.8
|
| 107 |
*/
|
| 108 |
add_action( 'save_post', array( $this, 'bulk_edit_save' ) );
|
|
|
|
| 109 |
}
|
| 110 |
|
| 111 |
/**
|
| 119 |
$handle_it = false;
|
| 120 |
$view_file = '';
|
| 121 |
$sb_id = '';
|
|
|
|
| 122 |
if ( isset( $_POST['sb'] ) ) {
|
| 123 |
$sb_id = $_POST['sb'];
|
| 124 |
}
|
|
|
|
| 125 |
switch ( $action ) {
|
| 126 |
case 'get':
|
| 127 |
case 'save':
|
| 135 |
$req->id = $sb_id;
|
| 136 |
break;
|
| 137 |
}
|
|
|
|
| 138 |
// The ajax request was not meant for us...
|
| 139 |
if ( ! $handle_it ) {
|
| 140 |
return false;
|
| 141 |
}
|
|
|
|
| 142 |
$sb_data = self::get_sidebar( $sb_id );
|
|
|
|
| 143 |
if ( ! current_user_can( self::$cap_required ) ) {
|
| 144 |
$req = self::req_err(
|
| 145 |
$req,
|
| 172 |
$req->sidebar = $sb_data;
|
| 173 |
}
|
| 174 |
break;
|
|
|
|
| 175 |
// Save or insert the specified sidebar.
|
| 176 |
case 'save':
|
| 177 |
$req = $this->save_item( $req, $_POST );
|
| 178 |
break;
|
|
|
|
| 179 |
// Delete the specified sidebar.
|
| 180 |
case 'delete':
|
| 181 |
$req->sidebar = $sb_data;
|
| 182 |
$req = $this->delete_item( $req, $_POST );
|
| 183 |
break;
|
|
|
|
| 184 |
// Get the location data.
|
| 185 |
case 'get-location':
|
| 186 |
$req->sidebar = $sb_data;
|
| 187 |
$req = $this->get_location_data( $req );
|
| 188 |
break;
|
|
|
|
| 189 |
// Update the location data.
|
| 190 |
case 'set-location':
|
| 191 |
$req->sidebar = $sb_data;
|
| 192 |
$req = $this->set_location_data( $req );
|
| 193 |
break;
|
|
|
|
| 194 |
// Toggle theme sidebar replaceable-flag.
|
| 195 |
case 'replaceable':
|
| 196 |
$req = $this->set_replaceable( $req );
|
| 197 |
break;
|
| 198 |
}
|
| 199 |
}
|
|
|
|
| 200 |
// Make the ajax response either as JSON or plain text.
|
| 201 |
if ( $is_json ) {
|
| 202 |
self::json_response( $req );
|
| 204 |
ob_start();
|
| 205 |
include CSB_VIEWS_DIR . $view_file;
|
| 206 |
$resp = ob_get_clean();
|
|
|
|
| 207 |
self::plain_response( $resp );
|
| 208 |
}
|
| 209 |
}
|
| 231 |
__( 'You have no permission to do this operation.', 'custom-sidebars' )
|
| 232 |
);
|
| 233 |
}
|
|
|
|
| 234 |
$sidebars = self::get_custom_sidebars();
|
| 235 |
$sb_id = $req->id;
|
|
|
|
| 236 |
$sb_desc = '';
|
| 237 |
if ( isset( $data['description'] ) ) {
|
| 238 |
$sb_desc = stripslashes( trim( $data['description'] ) );
|
| 239 |
}
|
|
|
|
| 240 |
$sb_name = isset( $data['name'] )? $data['name']:'';
|
|
|
|
| 241 |
if ( function_exists( 'mb_substr' ) ) {
|
| 242 |
$sb_name = mb_substr( stripslashes( trim( $sb_name ) ), 0, 40 );
|
| 243 |
} else {
|
| 244 |
$sb_name = substr( stripslashes( trim( $sb_name ) ), 0, 40 );
|
| 245 |
}
|
|
|
|
| 246 |
if ( empty( $sb_name ) ) {
|
| 247 |
return self::req_err(
|
| 248 |
$req,
|
| 249 |
__( 'Sidebar-name cannot be empty', 'custom-sidebars' )
|
| 250 |
);
|
| 251 |
}
|
|
|
|
| 252 |
if ( empty( $sb_id ) ) {
|
| 253 |
// Create a new sidebar.
|
| 254 |
$action = 'insert';
|
| 257 |
$num += 1;
|
| 258 |
$sb_id = self::$sidebar_prefix . $num;
|
| 259 |
} while ( self::get_sidebar( $sb_id, 'cust' ) );
|
|
|
|
| 260 |
$sidebar = array(
|
| 261 |
'id' => $sb_id,
|
| 262 |
);
|
| 264 |
// Update existing sidebar
|
| 265 |
$action = 'update';
|
| 266 |
$sidebar = self::get_sidebar( $sb_id, 'cust' );
|
|
|
|
| 267 |
if ( ! $sidebar ) {
|
| 268 |
return self::req_err(
|
| 269 |
$req,
|
| 271 |
);
|
| 272 |
}
|
| 273 |
}
|
|
|
|
| 274 |
if ( function_exists( 'mb_strlen' ) ) {
|
| 275 |
if ( mb_strlen( $sb_desc ) > 200 ) {
|
| 276 |
$sb_desc = mb_substr( $sb_desc, 0, 200 );
|
| 280 |
$sb_desc = substr( $sb_desc, 0, 200 );
|
| 281 |
}
|
| 282 |
}
|
|
|
|
| 283 |
// Populate the sidebar object.
|
| 284 |
if ( 'insert' == $action || self::wpml_is_default_lang() ) {
|
| 285 |
$sidebar['name'] = $sb_name;
|
| 288 |
$sidebar['name_lang'] = $sb_name;
|
| 289 |
$sidebar['description_lang'] = $sb_desc;
|
| 290 |
}
|
|
|
|
| 291 |
foreach ( array( 'before', 'after' ) as $prefix ) {
|
| 292 |
foreach ( array( 'widget', 'title' ) as $sufix ) {
|
| 293 |
$name = sprintf( '%s_%s', $prefix, $sufix );
|
| 297 |
}
|
| 298 |
}
|
| 299 |
}
|
|
|
|
| 300 |
if ( 'insert' == $action ) {
|
| 301 |
$sidebars[] = $sidebar;
|
| 302 |
$req->message = sprintf(
|
| 323 |
);
|
| 324 |
}
|
| 325 |
}
|
|
|
|
| 326 |
// Save the changes.
|
| 327 |
self::set_custom_sidebars( $sidebars );
|
| 328 |
self::refresh_sidebar_widgets();
|
|
|
|
| 329 |
$req->data = $sidebar;
|
| 330 |
$req->action = $action;
|
|
|
|
| 331 |
// Allow user to translate sidebar name/description via WPML.
|
| 332 |
self::wpml_update( $sidebars );
|
| 333 |
$req->data = self::wpml_translate( $sidebar );
|
|
|
|
| 334 |
/**
|
| 335 |
* save user preferences (advance).
|
| 336 |
*
|
| 345 |
$advance[ $req->data['id'] ] = isset( $_POST['advance'] ) && 'show' === $_POST['advance'];
|
| 346 |
update_user_option( $user_id, 'custom-sidebars-editor-advance', $advance );
|
| 347 |
}
|
|
|
|
| 348 |
return $req;
|
| 349 |
}
|
| 350 |
|
| 373 |
}
|
| 374 |
$sidebars = self::get_custom_sidebars();
|
| 375 |
$sidebar = self::get_sidebar( $req->id, 'cust' );
|
|
|
|
| 376 |
if ( ! $sidebar ) {
|
| 377 |
return self::req_err(
|
| 378 |
$req,
|
| 379 |
__( 'The sidebar does not exist', 'custom-sidebars' )
|
| 380 |
);
|
| 381 |
}
|
|
|
|
| 382 |
$found = false;
|
| 383 |
foreach ( $sidebars as $ind => $item ) {
|
| 384 |
if ( $item['id'] == $req->id ) {
|
| 391 |
break;
|
| 392 |
}
|
| 393 |
}
|
|
|
|
| 394 |
if ( ! $found ) {
|
| 395 |
return self::req_err(
|
| 396 |
$req,
|
| 397 |
__( 'The sidebar was not found', 'custom-sidebars' )
|
| 398 |
);
|
| 399 |
}
|
|
|
|
| 400 |
// Save the changes.
|
| 401 |
self::set_custom_sidebars( $sidebars );
|
| 402 |
self::refresh_sidebar_widgets();
|
|
|
|
| 403 |
return $req;
|
| 404 |
}
|
| 405 |
|
| 430 |
$options['modifiable'] = array_values( $options['modifiable'] );
|
| 431 |
self::set_options( $options );
|
| 432 |
$req->replaceable = (object) $options['modifiable'];
|
|
|
|
| 433 |
return $req;
|
| 434 |
}
|
| 435 |
|
| 450 |
'_builtin' => self::get_taxonomies( 'objects', true ),
|
| 451 |
'custom' => self::get_taxonomies( 'objects', false ),
|
| 452 |
);
|
|
|
|
| 453 |
$archive_type = array(
|
| 454 |
'_blog' => __( 'Front Page', 'custom-sidebars' ),
|
| 455 |
'_search' => __( 'Search Results', 'custom-sidebars' ),
|
| 457 |
'_authors' => __( 'Any Author Archive', 'custom-sidebars' ),
|
| 458 |
'_date' => __( 'Date Archives', 'custom-sidebars' ),
|
| 459 |
);
|
|
|
|
| 460 |
/**
|
| 461 |
* taxonomies
|
| 462 |
*
|
| 479 |
break;
|
| 480 |
}
|
| 481 |
}
|
|
|
|
| 482 |
foreach ( $raw_taxonomies['custom'] as $taxonomy ) {
|
| 483 |
if ( in_array( $taxonomy->labels->singular_name, $default_taxonomies ) ) {
|
| 484 |
$archive_type[ '_taxonomy_'.$taxonomy->name ] = sprintf( __( '%s Archives', 'custom-sidebars' ), ucfirst( $taxonomy->name ) );
|
| 486 |
$archive_type[ '_taxonomy_'.$taxonomy->name ] = sprintf( __( '%s Archives', 'custom-sidebars' ), $taxonomy->labels->singular_name );
|
| 487 |
}
|
| 488 |
}
|
|
|
|
| 489 |
/**
|
| 490 |
* sort array by values
|
| 491 |
*/
|
| 492 |
asort( $archive_type );
|
|
|
|
| 493 |
$raw_authors = array();
|
| 494 |
$raw_authors = get_users(
|
| 495 |
array(
|
| 498 |
'who' => 'authors',
|
| 499 |
)
|
| 500 |
);
|
|
|
|
| 501 |
// Collect required data for all posttypes.
|
| 502 |
$posttypes = array();
|
| 503 |
foreach ( $raw_posttype as $item ) {
|
| 504 |
$sel_single = @$defaults['post_type_single'][ $item->name ];
|
|
|
|
| 505 |
$posttypes[ $item->name ] = array(
|
| 506 |
'name' => $item->labels->name,
|
| 507 |
'single' => self::get_array( $sel_single ),
|
| 508 |
);
|
| 509 |
}
|
|
|
|
| 510 |
// Extract the data from categories list that we need.
|
| 511 |
$categories = array();
|
| 512 |
foreach ( $raw_cat as $item ) {
|
| 513 |
$sel_single = @$defaults['category_single'][ $item->term_id ];
|
| 514 |
$sel_archive = @$defaults['category_archive'][ $item->term_id ];
|
|
|
|
| 515 |
$categories[ $item->term_id ] = array(
|
| 516 |
'name' => $item->name,
|
| 517 |
'count' => $item->count,
|
| 519 |
'archive' => self::get_array( $sel_archive ),
|
| 520 |
);
|
| 521 |
}
|
|
|
|
| 522 |
// Build a list of archive types.
|
| 523 |
$archives = array(); // Start with a copy of the posttype list.
|
| 524 |
foreach ( $raw_posttype as $item ) {
|
| 531 |
$item->labels->singular_name
|
| 532 |
);
|
| 533 |
}
|
|
|
|
| 534 |
$sel_archive = @$defaults['post_type_archive'][ $item->name ];
|
|
|
|
| 535 |
$archives[ $item->name ] = array(
|
| 536 |
'name' => $label,
|
| 537 |
'archive' => self::get_array( $sel_archive ),
|
| 538 |
);
|
| 539 |
}
|
|
|
|
| 540 |
foreach ( $archive_type as $key => $name ) {
|
| 541 |
$sel_archive = @$defaults[ substr( $key, 1 ) ];
|
|
|
|
| 542 |
$archives[ $key ] = array(
|
| 543 |
'name' => $name,
|
| 544 |
'archive' => self::get_array( $sel_archive ),
|
| 545 |
);
|
| 546 |
}
|
|
|
|
| 547 |
/**
|
| 548 |
* Custom taxonomies archive
|
| 549 |
*
|
| 567 |
);
|
| 568 |
}
|
| 569 |
}
|
|
|
|
| 570 |
/**
|
| 571 |
* Custom taxonomies taxes
|
| 572 |
*
|
| 617 |
}
|
| 618 |
}
|
| 619 |
}
|
|
|
|
| 620 |
// Build a list of authors.
|
| 621 |
$authors = array();
|
| 622 |
foreach ( $raw_authors as $user ) {
|
| 627 |
);
|
| 628 |
}
|
| 629 |
$req->authors = $authors;
|
|
|
|
| 630 |
$req->replaceable = $defaults['modifiable'];
|
| 631 |
$req->posttypes = $posttypes;
|
| 632 |
$req->categories = $categories;
|
| 672 |
$raw_taxonomies = array(
|
| 673 |
'custom' => self::get_taxonomies( 'names', false ),
|
| 674 |
);
|
|
|
|
| 675 |
foreach ( $_POST as $key => $value ) {
|
| 676 |
if ( strlen( $key ) > 8 && '___cs___' == substr( $key, 0, 8 ) ) {
|
| 677 |
list( $prefix, $id ) = explode( '___', substr( $key, 8 ) );
|
|
|
|
| 678 |
if ( ! isset( $data[ $prefix ] ) ) {
|
| 679 |
$data[ $prefix ] = array();
|
| 680 |
}
|
| 681 |
$data[ $prefix ][ $id ] = $value;
|
| 682 |
}
|
| 683 |
}
|
|
|
|
| 684 |
$special_arc = array(
|
| 685 |
'blog',
|
| 686 |
'404',
|
| 689 |
'search',
|
| 690 |
'date',
|
| 691 |
);
|
|
|
|
| 692 |
$raw_authors = array();
|
| 693 |
$raw_authors = get_users(
|
| 694 |
array(
|
| 713 |
) {
|
| 714 |
unset( $options['post_type_single'][ $pt ][ $sb_id ] );
|
| 715 |
}
|
|
|
|
| 716 |
if (
|
| 717 |
is_array( @$data['arc'][ $sb_id ] ) &&
|
| 718 |
in_array( $pt, $data['arc'][ $sb_id ] )
|
| 725 |
unset( $options['post_type_archive'][ $pt ][ $sb_id ] );
|
| 726 |
}
|
| 727 |
}
|
|
|
|
| 728 |
// Category settings.
|
| 729 |
foreach ( $raw_cat as $item ) {
|
| 730 |
$cat = $item->term_id;
|
| 739 |
) {
|
| 740 |
unset( $options['category_single'][ $cat ][ $sb_id ] );
|
| 741 |
}
|
|
|
|
| 742 |
if (
|
| 743 |
is_array( @$data['arc-cat'][ $sb_id ] ) &&
|
| 744 |
in_array( $cat, $data['arc-cat'][ $sb_id ] )
|
| 751 |
unset( $options['category_archive'][ $cat ][ $sb_id ] );
|
| 752 |
}
|
| 753 |
}
|
|
|
|
| 754 |
foreach ( $special_arc as $key ) {
|
| 755 |
if (
|
| 756 |
is_array( @$data['arc'][ $sb_id ] ) &&
|
| 764 |
unset( $options[ $key ][ $sb_id ] );
|
| 765 |
}
|
| 766 |
}
|
|
|
|
| 767 |
// Author settings.
|
| 768 |
foreach ( $raw_authors as $user ) {
|
| 769 |
$key = $user->ID;
|
| 779 |
unset( $options['author_archive'][ $key ][ $sb_id ] );
|
| 780 |
}
|
| 781 |
}
|
|
|
|
| 782 |
/**
|
| 783 |
* Custom taxonomies
|
| 784 |
*
|
| 823 |
}
|
| 824 |
}
|
| 825 |
}
|
|
|
|
| 826 |
/**
|
| 827 |
* category Archive
|
| 828 |
*
|
| 841 |
unset( $options['category_archive'][ $sb_id ] );
|
| 842 |
}
|
| 843 |
}
|
|
|
|
| 844 |
$req->message = sprintf(
|
| 845 |
__( 'Updated sidebar <strong>%1$s</strong> settings.', 'custom-sidebars' ),
|
| 846 |
esc_html( $req->sidebar['name'] )
|
| 865 |
*/
|
| 866 |
public function add_meta_box() {
|
| 867 |
global $post;
|
| 868 |
+
/**
|
| 869 |
+
* check capabilities
|
| 870 |
+
*/
|
| 871 |
+
$user_can_change_sidebars = $this->check_author_ability_to_replace();
|
| 872 |
+
if ( ! $user_can_change_sidebars ) {
|
| 873 |
+
return;
|
| 874 |
+
}
|
| 875 |
$post_type = get_post_type( $post );
|
| 876 |
+
if ( ! $post_type ) {
|
| 877 |
+
return false;
|
| 878 |
+
}
|
| 879 |
+
if ( ! self::supported_post_type( $post_type ) ) {
|
| 880 |
+
return false;
|
| 881 |
+
}
|
| 882 |
/**
|
| 883 |
* Option that can be set in wp-config.php to remove the custom sidebar
|
| 884 |
* meta box for certain post types.
|
| 893 |
) {
|
| 894 |
return false;
|
| 895 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 896 |
$pt_obj = get_post_type_object( $post_type );
|
| 897 |
if ( $pt_obj->publicly_queryable || $pt_obj->public ) {
|
| 898 |
add_meta_box(
|
| 928 |
*/
|
| 929 |
protected function print_sidebars_form( $post_id, $type = 'metabox' ) {
|
| 930 |
/**
|
| 931 |
+
* check capabilities
|
| 932 |
*/
|
| 933 |
+
$user_can_change_sidebars = $this->check_author_ability_to_replace();
|
| 934 |
+
if ( ! $user_can_change_sidebars ) {
|
| 935 |
return;
|
| 936 |
}
|
|
|
|
| 937 |
global $wp_registered_sidebars;
|
| 938 |
$available = CustomSidebars::sort_sidebars_by_name( $wp_registered_sidebars );
|
| 939 |
$replacements = self::get_replacements( $post_id );
|
| 948 |
}
|
| 949 |
}
|
| 950 |
}
|
|
|
|
| 951 |
switch ( $type ) {
|
| 952 |
case 'col-sidebars':
|
| 953 |
include CSB_VIEWS_DIR . 'col-sidebars.php';
|
| 954 |
break;
|
|
|
|
| 955 |
case 'quick-edit':
|
| 956 |
include CSB_VIEWS_DIR . 'quick-edit.php';
|
| 957 |
break;
|
|
|
|
| 958 |
case 'bulk-edit':
|
| 959 |
/**
|
| 960 |
* @since 3.0.8
|
| 961 |
*/
|
| 962 |
include CSB_VIEWS_DIR . 'bulk-edit.php';
|
| 963 |
break;
|
|
|
|
| 964 |
default:
|
| 965 |
include CSB_VIEWS_DIR . 'metabox.php';
|
| 966 |
break;
|
| 969 |
|
| 970 |
public function store_replacements( $post_id ) {
|
| 971 |
global $action;
|
| 972 |
+
/**
|
| 973 |
+
* check capabilities
|
| 974 |
+
*/
|
| 975 |
+
$user_can_change_sidebars = $this->check_author_ability_to_replace();
|
| 976 |
+
if ( ! $user_can_change_sidebars ) {
|
| 977 |
return;
|
| 978 |
}
|
|
|
|
| 979 |
/*
|
| 980 |
* Verify if this is an auto save routine. If it is our form has not
|
| 981 |
* been submitted, so we dont want to do anything
|
| 984 |
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
|
| 985 |
return $post_id;
|
| 986 |
}
|
|
|
|
| 987 |
/*
|
| 988 |
* 'editpost' .. Saved from full Post-Editor screen.
|
| 989 |
* 'inline-save' .. Saved via the quick-edit form.
|
| 991 |
if ( ( isset( $_REQUEST['action'] ) && 'inline-save' != $_REQUEST['action'] ) && 'editpost' != $action ) {
|
| 992 |
return $post_id;
|
| 993 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 994 |
// Make sure meta is added to the post, not a revision.
|
| 995 |
if ( $the_post = wp_is_post_revision( $post_id ) ) {
|
| 996 |
$post_id = $the_post;
|
| 997 |
}
|
|
|
|
| 998 |
$sidebars = self::get_options( 'modifiable' );
|
| 999 |
$data = array();
|
| 1000 |
if ( ! empty( $sidebars ) ) {
|
| 1007 |
}
|
| 1008 |
}
|
| 1009 |
}
|
|
|
|
| 1010 |
self::set_post_meta( $post_id, $data );
|
| 1011 |
}
|
| 1012 |
|
| 1013 |
// ========== WPML support.
|
|
|
|
| 1014 |
/**
|
| 1015 |
* Updates the WPML string register with the current sidebar string so the
|
| 1016 |
* user can translate the sidebar details using the WPML string translation.
|
| 1020 |
*/
|
| 1021 |
static protected function wpml_update( $custom_sidebars ) {
|
| 1022 |
if ( ! function_exists( 'icl_register_string' ) ) { return false; }
|
|
|
|
| 1023 |
$theme_sidebars = self::get_sidebars();
|
|
|
|
| 1024 |
// This is used to identify the sidebar-translations by WPML.
|
| 1025 |
$context = 'Sidebar';
|
|
|
|
| 1026 |
// First do the theme sidebars, so they will be displayed in the
|
| 1027 |
// *bottom* of the translations list.
|
| 1028 |
foreach ( $theme_sidebars as $fields ) {
|
| 1029 |
self::wpml_update_field( $context, $fields['id'] . '-name', @$fields['name'], false );
|
| 1030 |
self::wpml_update_field( $context, $fields['id'] . '-description', @$fields['description'], false );
|
| 1031 |
}
|
|
|
|
| 1032 |
foreach ( $custom_sidebars as $fields ) {
|
| 1033 |
$name = isset( $fields['name_lang'] ) ? $fields['name_lang'] : $fields['name'];
|
| 1034 |
$description = isset( $fields['description_lang'] ) ? $fields['description_lang'] : $fields['description'];
|
| 1049 |
*/
|
| 1050 |
static protected function wpml_update_field( $context, $field, $value, $update_string = true ) {
|
| 1051 |
global $sitepress, $sitepress_settings;
|
|
|
|
| 1052 |
if ( empty( $sitepress ) || empty( $sitepress_settings ) ) { return false; }
|
| 1053 |
if ( ! function_exists( 'icl_t' ) ) { return false; }
|
|
|
|
| 1054 |
if ( ! icl_st_is_registered_string( $context, $field ) ) {
|
| 1055 |
// Register the field if it does not exist.
|
| 1056 |
icl_register_string( $context, $field, $value, false );
|
|
|
|
| 1057 |
$active_languages = $sitepress->get_active_languages();
|
|
|
|
| 1058 |
foreach ( $active_languages as $lang => $data ) {
|
| 1059 |
icl_update_string_translation( $field, $lang, $value, ICL_STRING_TRANSLATION_COMPLETE );
|
| 1060 |
}
|
|
|
|
| 1061 |
$default_language = ! empty( $sitepress_settings['st']['strings_language'] )
|
| 1062 |
? $sitepress_settings['st']['strings_language']
|
| 1063 |
: $sitepress->get_default_language();
|
| 1064 |
icl_update_string_translation( $field, $default_language, $value, ICL_STRING_TRANSLATION_COMPLETE );
|
|
|
|
| 1065 |
} else if ( $update_string ) {
|
|
|
|
| 1066 |
// Add translation.
|
| 1067 |
if ( defined( 'DOING_AJAX' ) ) {
|
| 1068 |
$current_language = $sitepress->get_language_cookie();
|
| 1069 |
} else {
|
| 1070 |
$current_language = $sitepress->get_current_language();
|
| 1071 |
}
|
|
|
|
| 1072 |
icl_update_string_translation( $field, $current_language, $value, ICL_STRING_TRANSLATION_COMPLETE );
|
| 1073 |
}
|
| 1074 |
}
|
| 1083 |
global $sitepress, $sitepress_settings;
|
| 1084 |
if ( empty( $sitepress ) || empty( $sitepress_settings ) ) { return true; }
|
| 1085 |
if ( ! function_exists( 'icl_t' ) ) { return true; }
|
|
|
|
| 1086 |
if ( defined( 'DOING_AJAX' ) ) {
|
| 1087 |
$current_language = $sitepress->get_language_cookie();
|
| 1088 |
} else {
|
| 1089 |
$current_language = $sitepress->get_current_language();
|
| 1090 |
}
|
|
|
|
| 1091 |
$default_language = ! empty( $sitepress_settings['st']['strings_language'] )
|
| 1092 |
? $sitepress_settings['st']['strings_language']
|
| 1093 |
: $sitepress->get_default_language();
|
|
|
|
| 1094 |
return $default_language == $current_language;
|
| 1095 |
}
|
| 1096 |
|
| 1117 |
} else {
|
| 1118 |
$sidebar['description'] = icl_t( $context, $sidebar['id'] . '-description', $sidebar['description'] );
|
| 1119 |
}
|
|
|
|
| 1120 |
return $sidebar;
|
| 1121 |
}
|
| 1122 |
|
| 1124 |
// ========== Custom column an Quick-Edit fields for post list.
|
| 1125 |
// http://shibashake.com/wordpress-theme/expand-the-wordpress-quick-edit-menu
|
| 1126 |
//
|
|
|
|
| 1127 |
/**
|
| 1128 |
* Adds a custom column to post-types that support custom sidebars.
|
| 1129 |
*
|
| 1136 |
$insert = array(
|
| 1137 |
'cs_replacement' => _x( 'Custom Sidebars', 'Column name on entries list.', 'custom-sidebars' ),
|
| 1138 |
);
|
|
|
|
| 1139 |
// Column is added after column 'title'.
|
| 1140 |
$insert_after = 'title';
|
|
|
|
| 1141 |
$pos = array_search( $insert_after, array_keys( $columns ) ) + 1;
|
| 1142 |
$columns = array_merge(
|
| 1143 |
array_slice( $columns, 0, $pos ),
|
| 1144 |
$insert,
|
| 1145 |
array_slice( $columns, $pos )
|
| 1146 |
);
|
|
|
|
| 1147 |
return $columns;
|
| 1148 |
}
|
| 1149 |
|
| 1171 |
*/
|
| 1172 |
public function post_quick_edit( $column_name, $post_type ) {
|
| 1173 |
if ( ! self::supported_post_type( $post_type ) ) { return false; }
|
|
|
|
| 1174 |
switch ( $column_name ) {
|
| 1175 |
case 'cs_replacement':
|
| 1176 |
$this->print_metabox_quick();
|
| 1189 |
*/
|
| 1190 |
public function post_quick_edit_js() {
|
| 1191 |
global $current_screen;
|
|
|
|
| 1192 |
if ( ( $current_screen->base != 'edit' ) ) { return false; }
|
| 1193 |
if ( ! self::supported_post_type( $current_screen->post_type ) ) { return false; }
|
|
|
|
| 1194 |
?>
|
| 1195 |
<script type="text/javascript">
|
| 1196 |
<!--
|
| 1197 |
jQuery(function() {
|
| 1198 |
// we create a copy of the WP inline edit post function
|
| 1199 |
var wp_inline_edit = inlineEditPost.edit;
|
|
|
|
| 1200 |
// and then we overwrite the function with our own code
|
| 1201 |
inlineEditPost.edit = function( id ) {
|
|
|
|
| 1202 |
// "call" the original WP edit function
|
| 1203 |
// we don't want to leave WordPress hanging
|
| 1204 |
wp_inline_edit.apply( this, arguments );
|
|
|
|
| 1205 |
// now we take care of our business.
|
|
|
|
| 1206 |
// get the post ID
|
| 1207 |
var post_id = 0;
|
| 1208 |
if ( typeof( id ) == 'object' ) {
|
| 1209 |
post_id = parseInt( this.getId( id ) );
|
| 1210 |
}
|
|
|
|
| 1211 |
if ( post_id > 0 ) {
|
|
|
|
| 1212 |
// define the edit row
|
| 1213 |
var edit_row = jQuery( '#edit-' + post_id );
|
| 1214 |
var post_row = jQuery( '#post-' + post_id );
|
|
|
|
| 1215 |
// Our custom column
|
| 1216 |
var sidebar_col = post_row.find( '.cs_replacement' );
|
|
|
|
| 1217 |
sidebar_col.find( '[data-sidebar]' ).each(function() {
|
| 1218 |
var key = jQuery( this ).attr( 'data-sidebar' ),
|
| 1219 |
val = jQuery( this ).attr( 'data-replaced' ),
|
| 1220 |
hide = 'yes' === jQuery( this ).attr( 'data-cshide' );
|
|
|
|
| 1221 |
if ( hide ) {
|
| 1222 |
edit_row.find( '.cs-replacement-field.' + key ).val( val ).parent().hide();
|
| 1223 |
} else {
|
| 1337 |
}
|
| 1338 |
}
|
| 1339 |
$screen_settings .= '</fieldset>';
|
| 1340 |
+
/**
|
| 1341 |
+
* allow author to edit custom sidebars
|
| 1342 |
+
*/
|
| 1343 |
+
$screen_settings .= '<fieldset class="metabox-prefs cs-allow-author">';
|
| 1344 |
+
$screen_settings .= wp_nonce_field( $this->allow_author_name, $this->allow_author_name, false, false );
|
| 1345 |
+
$screen_settings .= sprintf( '<legend>%s</legend>', __( 'Allowed to replace sidebars:', 'custom-sidebars' ) );
|
| 1346 |
+
$checked = get_option( $this->allow_author_name, false );
|
| 1347 |
+
$screen_settings .= sprintf(
|
| 1348 |
+
'<label><input type="checkbox" name="cs-allow-author" value="%s" %s /> %s</label>',
|
| 1349 |
+
esc_attr( $role ),
|
| 1350 |
+
checked( $checked, true, false ),
|
| 1351 |
+
esc_html__( 'Allow entry author to change sidebars', 'custom-sidebars' )
|
| 1352 |
+
);
|
| 1353 |
+
$screen_settings .= '</fieldset>';
|
| 1354 |
/**
|
| 1355 |
* Custom taxonomies
|
| 1356 |
*/
|
| 1425 |
wp_send_json_success();
|
| 1426 |
}
|
| 1427 |
|
| 1428 |
+
/**
|
| 1429 |
+
* Update entry author is allowed to change custom sidebars.
|
| 1430 |
+
*
|
| 1431 |
+
* @since 3.1.5
|
| 1432 |
+
*/
|
| 1433 |
+
public function update_custom_sidebars_allow_author() {
|
| 1434 |
+
/**
|
| 1435 |
+
* check required data
|
| 1436 |
+
*/
|
| 1437 |
+
if ( ! isset( $_REQUEST['_wpnonce'] ) ) {
|
| 1438 |
+
wp_send_json_error();
|
| 1439 |
+
}
|
| 1440 |
+
/**
|
| 1441 |
+
* check nonce value
|
| 1442 |
+
*/
|
| 1443 |
+
if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], $this->allow_author_name ) ) {
|
| 1444 |
+
wp_send_json_error();
|
| 1445 |
+
}
|
| 1446 |
+
$value = isset( $_REQUEST['value'] )? 'true' === $_REQUEST['value'] : false;
|
| 1447 |
+
$status = add_option( $this->allow_author_name, $value, '', 'no' );
|
| 1448 |
+
if ( ! $status ) {
|
| 1449 |
+
update_option( $this->allow_author_name, $value );
|
| 1450 |
+
}
|
| 1451 |
+
wp_send_json_success();
|
| 1452 |
+
}
|
| 1453 |
/**
|
| 1454 |
* Check ability to save sidebars
|
| 1455 |
*
|
| 1483 |
}
|
| 1484 |
return $value;
|
| 1485 |
}
|
| 1486 |
+
|
| 1487 |
+
/**
|
| 1488 |
+
* Check author ability to change sidebars during entry edit
|
| 1489 |
+
*
|
| 1490 |
+
* @since 3.1.5
|
| 1491 |
+
*/
|
| 1492 |
+
private function check_author_ability_to_replace() {
|
| 1493 |
+
global $post;
|
| 1494 |
+
if ( current_user_can( self::$cap_required ) ) {
|
| 1495 |
+
return true;
|
| 1496 |
+
}
|
| 1497 |
+
$checked = get_option( $this->allow_author_name, false );
|
| 1498 |
+
if ( $checked ) {
|
| 1499 |
+
if ( current_user_can( 'edit_posts', $post->ID ) ) {
|
| 1500 |
+
return true;
|
| 1501 |
+
}
|
| 1502 |
+
}
|
| 1503 |
+
return false;
|
| 1504 |
+
}
|
| 1505 |
};
|
inc/class-custom-sidebars.php
CHANGED
|
@@ -90,7 +90,7 @@ class CustomSidebars {
|
|
| 90 |
*/
|
| 91 |
public function wp_enqueue_add_version( $version, $handle ) {
|
| 92 |
if ( preg_match( '/^wpmu\-cs\-/', $handle ) ) {
|
| 93 |
-
return '3.1.
|
| 94 |
}
|
| 95 |
return $version;
|
| 96 |
}
|
| 90 |
*/
|
| 91 |
public function wp_enqueue_add_version( $version, $handle ) {
|
| 92 |
if ( preg_match( '/^wpmu\-cs\-/', $handle ) ) {
|
| 93 |
+
return '3.1.5';
|
| 94 |
}
|
| 95 |
return $version;
|
| 96 |
}
|
languages/custom-sidebars.pot
CHANGED
|
@@ -4,7 +4,7 @@ msgid ""
|
|
| 4 |
msgstr ""
|
| 5 |
"Project-Id-Version: Custom Sidebars Pro PLUGIN_VERSION\n"
|
| 6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/customsidebars\n"
|
| 7 |
-
"POT-Creation-Date: 2018-05-
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=utf-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
|
@@ -60,102 +60,110 @@ msgstr ""
|
|
| 60 |
msgid "Clone"
|
| 61 |
msgstr ""
|
| 62 |
|
| 63 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 64 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 65 |
#: inc/class-custom-sidebars-export.php:98
|
| 66 |
msgid "You do not have permission for this"
|
| 67 |
msgstr ""
|
| 68 |
|
| 69 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 70 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 71 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 72 |
msgid "You have no permission to do this operation."
|
| 73 |
msgstr ""
|
| 74 |
|
| 75 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 76 |
msgid "Sidebar-name cannot be empty"
|
| 77 |
msgstr ""
|
| 78 |
|
| 79 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 80 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 81 |
msgid "The sidebar does not exist"
|
| 82 |
msgstr ""
|
| 83 |
|
| 84 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 85 |
msgid "Created new sidebar <strong>%1$s</strong>"
|
| 86 |
msgstr ""
|
| 87 |
|
| 88 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 89 |
msgid "Updated sidebar <strong>%1$s</strong>"
|
| 90 |
msgstr ""
|
| 91 |
|
| 92 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 93 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 94 |
msgid "The sidebar was not found"
|
| 95 |
msgstr ""
|
| 96 |
|
| 97 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 98 |
msgid "Deleted sidebar <strong>%1$s</strong>"
|
| 99 |
msgstr ""
|
| 100 |
|
| 101 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 102 |
#: inc/class-custom-sidebars-visibility.php:156
|
| 103 |
msgid "Front Page"
|
| 104 |
msgstr ""
|
| 105 |
|
| 106 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 107 |
msgid "Search Results"
|
| 108 |
msgstr ""
|
| 109 |
|
| 110 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 111 |
#: inc/class-custom-sidebars-visibility.php:162
|
| 112 |
msgid "Not found (404)"
|
| 113 |
msgstr ""
|
| 114 |
|
| 115 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 116 |
msgid "Any Author Archive"
|
| 117 |
msgstr ""
|
| 118 |
|
| 119 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 120 |
msgid "Date Archives"
|
| 121 |
msgstr ""
|
| 122 |
|
| 123 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 124 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 125 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 126 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 127 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 128 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 129 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 130 |
msgid "%s Archives"
|
| 131 |
msgstr ""
|
| 132 |
|
| 133 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 134 |
#: inc/class-custom-sidebars-visibility.php:157
|
| 135 |
msgid "Post Index"
|
| 136 |
msgstr ""
|
| 137 |
|
| 138 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 139 |
msgid "%1$s Archives"
|
| 140 |
msgstr ""
|
| 141 |
|
| 142 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 143 |
msgid "Updated sidebar <strong>%1$s</strong> settings."
|
| 144 |
msgstr ""
|
| 145 |
|
| 146 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 147 |
msgid "Sidebars"
|
| 148 |
msgstr ""
|
| 149 |
|
| 150 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 151 |
msgid "Custom sidebars configuration is allowed for:"
|
| 152 |
msgstr ""
|
| 153 |
|
| 154 |
-
#: inc/class-custom-sidebars-editor.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 155 |
msgid "Allow Custom Taxonomies in Sidebar Location:"
|
| 156 |
msgstr ""
|
| 157 |
|
| 158 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 159 |
msgid ""
|
| 160 |
"After turn on any Custom Taxonomy you need to reload this screen to be able "
|
| 161 |
"choose it in Sidebar Location."
|
|
@@ -749,7 +757,7 @@ msgstr ""
|
|
| 749 |
msgid "http://premium.wpmudev.org/"
|
| 750 |
msgstr ""
|
| 751 |
|
| 752 |
-
#: inc/class-custom-sidebars-editor.php:
|
| 753 |
msgctxt "Column name on entries list."
|
| 754 |
msgid "Custom Sidebars"
|
| 755 |
msgstr ""
|
| 4 |
msgstr ""
|
| 5 |
"Project-Id-Version: Custom Sidebars Pro PLUGIN_VERSION\n"
|
| 6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/customsidebars\n"
|
| 7 |
+
"POT-Creation-Date: 2018-05-07 07:48:42+00:00\n"
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=utf-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
| 60 |
msgid "Clone"
|
| 61 |
msgstr ""
|
| 62 |
|
| 63 |
+
#: inc/class-custom-sidebars-editor.php:146
|
| 64 |
+
#: inc/class-custom-sidebars-editor.php:161
|
| 65 |
#: inc/class-custom-sidebars-export.php:98
|
| 66 |
msgid "You do not have permission for this"
|
| 67 |
msgstr ""
|
| 68 |
|
| 69 |
+
#: inc/class-custom-sidebars-editor.php:231
|
| 70 |
+
#: inc/class-custom-sidebars-editor.php:371
|
| 71 |
+
#: inc/class-custom-sidebars-editor.php:664
|
| 72 |
msgid "You have no permission to do this operation."
|
| 73 |
msgstr ""
|
| 74 |
|
| 75 |
+
#: inc/class-custom-sidebars-editor.php:249
|
| 76 |
msgid "Sidebar-name cannot be empty"
|
| 77 |
msgstr ""
|
| 78 |
|
| 79 |
+
#: inc/class-custom-sidebars-editor.php:270
|
| 80 |
+
#: inc/class-custom-sidebars-editor.php:379
|
| 81 |
msgid "The sidebar does not exist"
|
| 82 |
msgstr ""
|
| 83 |
|
| 84 |
+
#: inc/class-custom-sidebars-editor.php:303
|
| 85 |
msgid "Created new sidebar <strong>%1$s</strong>"
|
| 86 |
msgstr ""
|
| 87 |
|
| 88 |
+
#: inc/class-custom-sidebars-editor.php:311
|
| 89 |
msgid "Updated sidebar <strong>%1$s</strong>"
|
| 90 |
msgstr ""
|
| 91 |
|
| 92 |
+
#: inc/class-custom-sidebars-editor.php:322
|
| 93 |
+
#: inc/class-custom-sidebars-editor.php:397
|
| 94 |
msgid "The sidebar was not found"
|
| 95 |
msgstr ""
|
| 96 |
|
| 97 |
+
#: inc/class-custom-sidebars-editor.php:387
|
| 98 |
msgid "Deleted sidebar <strong>%1$s</strong>"
|
| 99 |
msgstr ""
|
| 100 |
|
| 101 |
+
#: inc/class-custom-sidebars-editor.php:454
|
| 102 |
#: inc/class-custom-sidebars-visibility.php:156
|
| 103 |
msgid "Front Page"
|
| 104 |
msgstr ""
|
| 105 |
|
| 106 |
+
#: inc/class-custom-sidebars-editor.php:455
|
| 107 |
msgid "Search Results"
|
| 108 |
msgstr ""
|
| 109 |
|
| 110 |
+
#: inc/class-custom-sidebars-editor.php:456
|
| 111 |
#: inc/class-custom-sidebars-visibility.php:162
|
| 112 |
msgid "Not found (404)"
|
| 113 |
msgstr ""
|
| 114 |
|
| 115 |
+
#: inc/class-custom-sidebars-editor.php:457
|
| 116 |
msgid "Any Author Archive"
|
| 117 |
msgstr ""
|
| 118 |
|
| 119 |
+
#: inc/class-custom-sidebars-editor.php:458
|
| 120 |
msgid "Date Archives"
|
| 121 |
msgstr ""
|
| 122 |
|
| 123 |
+
#: inc/class-custom-sidebars-editor.php:475
|
| 124 |
+
#: inc/class-custom-sidebars-editor.php:478
|
| 125 |
+
#: inc/class-custom-sidebars-editor.php:484
|
| 126 |
+
#: inc/class-custom-sidebars-editor.php:486
|
| 127 |
+
#: inc/class-custom-sidebars-editor.php:558
|
| 128 |
+
#: inc/class-custom-sidebars-editor.php:560
|
| 129 |
+
#: inc/class-custom-sidebars-editor.php:614
|
| 130 |
msgid "%s Archives"
|
| 131 |
msgstr ""
|
| 132 |
|
| 133 |
+
#: inc/class-custom-sidebars-editor.php:526
|
| 134 |
#: inc/class-custom-sidebars-visibility.php:157
|
| 135 |
msgid "Post Index"
|
| 136 |
msgstr ""
|
| 137 |
|
| 138 |
+
#: inc/class-custom-sidebars-editor.php:530
|
| 139 |
msgid "%1$s Archives"
|
| 140 |
msgstr ""
|
| 141 |
|
| 142 |
+
#: inc/class-custom-sidebars-editor.php:845
|
| 143 |
msgid "Updated sidebar <strong>%1$s</strong> settings."
|
| 144 |
msgstr ""
|
| 145 |
|
| 146 |
+
#: inc/class-custom-sidebars-editor.php:900 views/widgets.php:17
|
| 147 |
msgid "Sidebars"
|
| 148 |
msgstr ""
|
| 149 |
|
| 150 |
+
#: inc/class-custom-sidebars-editor.php:1322
|
| 151 |
msgid "Custom sidebars configuration is allowed for:"
|
| 152 |
msgstr ""
|
| 153 |
|
| 154 |
+
#: inc/class-custom-sidebars-editor.php:1345
|
| 155 |
+
msgid "Allowed to replace sidebars:"
|
| 156 |
+
msgstr ""
|
| 157 |
+
|
| 158 |
+
#: inc/class-custom-sidebars-editor.php:1351
|
| 159 |
+
msgid "Allow entry author to change sidebars"
|
| 160 |
+
msgstr ""
|
| 161 |
+
|
| 162 |
+
#: inc/class-custom-sidebars-editor.php:1362
|
| 163 |
msgid "Allow Custom Taxonomies in Sidebar Location:"
|
| 164 |
msgstr ""
|
| 165 |
|
| 166 |
+
#: inc/class-custom-sidebars-editor.php:1373
|
| 167 |
msgid ""
|
| 168 |
"After turn on any Custom Taxonomy you need to reload this screen to be able "
|
| 169 |
"choose it in Sidebar Location."
|
| 757 |
msgid "http://premium.wpmudev.org/"
|
| 758 |
msgstr ""
|
| 759 |
|
| 760 |
+
#: inc/class-custom-sidebars-editor.php:1137
|
| 761 |
msgctxt "Column name on entries list."
|
| 762 |
msgid "Custom Sidebars"
|
| 763 |
msgstr ""
|
readme.txt
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
=== Custom Sidebars - Dynamic Widget Area Manager ===
|
| 2 |
Contributors: WPMUDEV, marquex, WPMUDEV-Support2, WPMUDEV-Support1, WPMUDEV-Support6, WPMUDEV-Support4, iworks
|
| 3 |
Tags: sidebar, widget, footer, custom, flexible layout, dynamic widgets, manage sidebars, replace widgets, custom widget area
|
| 4 |
-
Requires at least: 3.
|
| 5 |
Tested up to: 4.9.5
|
| 6 |
-
Stable tag: 3.1.
|
| 7 |
|
| 8 |
Flexible sidebars for custom widget configurations on every page, post and custom post type on your site.
|
| 9 |
|
|
@@ -114,12 +114,12 @@ Any user that can switch themes, can create sidebars. Switch_themes is the capab
|
|
| 114 |
|
| 115 |
Custom Sidebars has the same license as WordPress, so you can use it wherever you want for free. Yay!
|
| 116 |
|
| 117 |
-
= I like the plugin, but what can I do if my website is based in a WP version older than 3.3 =
|
| 118 |
-
|
| 119 |
-
If you are running a earlier version of WordPress download Custom Sidebars 0.8.2.
|
| 120 |
-
|
| 121 |
== Changelog ==
|
| 122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
= 3.1.4 =
|
| 124 |
* Fixed a problem with widgets display on IE11.
|
| 125 |
* Handle custom taxonomies.
|
|
@@ -134,7 +134,7 @@ If you are running a earlier version of WordPress download Custom Sidebars 0.8.2
|
|
| 134 |
= 3.1.2 =
|
| 135 |
* Added integration with Polylang - now you can choose sidebar depend on Polylang language.
|
| 136 |
* Added integration with WPML - now you can choose sidebar depend on WPML language.
|
| 137 |
-
* Added check to avoid
|
| 138 |
* Updated "WPMU Dev code library" to version 3.0.5.
|
| 139 |
|
| 140 |
= 3.1.1 =
|
|
@@ -210,7 +210,7 @@ If you are running a earlier version of WordPress download Custom Sidebars 0.8.2
|
|
| 210 |
* Show advertising for "WP Checkup" in the whole admin area.
|
| 211 |
|
| 212 |
= 3.0.0.1 =
|
| 213 |
-
* Fixed a problem with wp_enqueue_script which was called too early.
|
| 214 |
* Fixed a problem with advertising, which should stay close when you close it.
|
| 215 |
|
| 216 |
= 3.0.0.0 =
|
|
@@ -248,7 +248,7 @@ If you are running a earlier version of WordPress download Custom Sidebars 0.8.2
|
|
| 248 |
* Fixed problem with sorting and filtering.
|
| 249 |
|
| 250 |
= 2.1.1.3 =
|
| 251 |
-
* Added check if there the function
|
| 252 |
|
| 253 |
= 2.1.1.2 =
|
| 254 |
* Sidebars are now sorted by name.
|
| 1 |
=== Custom Sidebars - Dynamic Widget Area Manager ===
|
| 2 |
Contributors: WPMUDEV, marquex, WPMUDEV-Support2, WPMUDEV-Support1, WPMUDEV-Support6, WPMUDEV-Support4, iworks
|
| 3 |
Tags: sidebar, widget, footer, custom, flexible layout, dynamic widgets, manage sidebars, replace widgets, custom widget area
|
| 4 |
+
Requires at least: 3.7
|
| 5 |
Tested up to: 4.9.5
|
| 6 |
+
Stable tag: 3.1.5
|
| 7 |
|
| 8 |
Flexible sidebars for custom widget configurations on every page, post and custom post type on your site.
|
| 9 |
|
| 114 |
|
| 115 |
Custom Sidebars has the same license as WordPress, so you can use it wherever you want for free. Yay!
|
| 116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
== Changelog ==
|
| 118 |
|
| 119 |
+
= 3.1.5 =
|
| 120 |
+
* Fixed a problem with saving an entry sidebars replacement.
|
| 121 |
+
* Added ability to allow change sidebars by an entry author.
|
| 122 |
+
|
| 123 |
= 3.1.4 =
|
| 124 |
* Fixed a problem with widgets display on IE11.
|
| 125 |
* Handle custom taxonomies.
|
| 134 |
= 3.1.2 =
|
| 135 |
* Added integration with Polylang - now you can choose sidebar depend on Polylang language.
|
| 136 |
* Added integration with WPML - now you can choose sidebar depend on WPML language.
|
| 137 |
+
* Added check to avoid warnings when user delete term which is assigned to "Sidebar Location".
|
| 138 |
* Updated "WPMU Dev code library" to version 3.0.5.
|
| 139 |
|
| 140 |
= 3.1.1 =
|
| 210 |
* Show advertising for "WP Checkup" in the whole admin area.
|
| 211 |
|
| 212 |
= 3.0.0.1 =
|
| 213 |
+
* Fixed a problem with `wp_enqueue_script()` which was called too early.
|
| 214 |
* Fixed a problem with advertising, which should stay close when you close it.
|
| 215 |
|
| 216 |
= 3.0.0.0 =
|
| 248 |
* Fixed problem with sorting and filtering.
|
| 249 |
|
| 250 |
= 2.1.1.3 =
|
| 251 |
+
* Added check if there the function `mb_strtolower()`.
|
| 252 |
|
| 253 |
= 2.1.1.2 =
|
| 254 |
* Sidebars are now sorted by name.
|
