Version Description
- [Fixed] Data:image sources for images are supported in labels
- [Fixed] Cloned columns no longer has the wrong options when stored
- [Fixed] Created deprecated function for is_columns_screen()
- [Fixed] The method get_current_storage_model returns the first occurrence instead of running the entire array of storage modals
- [Fixed] The storage_model object should have the init_manage_columns method to properly load the columns heading and values
- [Fixed] The storage_model object can now be used within sub pages
Download this release
Release Info
Developer | tschutter |
Plugin | Admin Columns |
Version | 2.4.10 |
Comparing to | |
See all releases |
Code changes from version 2.4.9 to 2.4.10
- assets/js/admin-settings.js +6 -49
- assets/js/admin-settings.min.js +1 -1
- classes/column.php +3 -32
- classes/column/custom-field.php +0 -1
- classes/storage_model.php +44 -59
- classes/storage_model/comment.php +6 -17
- classes/storage_model/post.php +15 -22
- classes/storage_model/user.php +14 -7
- codepress-admin-columns.php +5 -3
- readme.txt +33 -27
assets/js/admin-settings.js
CHANGED
@@ -22,7 +22,6 @@ jQuery(document).ready(function() {
|
|
22 |
cpac_add_column();
|
23 |
cpac_importexport();
|
24 |
cpac_sidebar_feedback();
|
25 |
-
//cpac_sidebar_scroll();
|
26 |
|
27 |
// we start by binding the toggle and remove events.
|
28 |
jQuery('.cpac-column').each( function( i, col ) {
|
@@ -357,12 +356,6 @@ jQuery.fn.column_clone = function() {
|
|
357 |
|
358 |
if ( typeof column.attr( 'data-clone' ) === 'undefined' ) {
|
359 |
var message = cpac_i18n.clone.replace( '%s', '<strong>' + column.find( '.column_label .toggle' ).text() + '</strong>' );
|
360 |
-
/*var el_message = jQuery( '<div class="cpac_message error"><p>' + message + '</p></div>' );
|
361 |
-
|
362 |
-
container.find( '.cpac-boxes' ).before( el_message );
|
363 |
-
el_message.hide().slideDown().delay( 2500 ).slideUp( function() {
|
364 |
-
jQuery( this ).remove();
|
365 |
-
} );*/
|
366 |
|
367 |
column.addClass( 'opened' ).find( '.column-form' ).slideDown( 150 );
|
368 |
column.find( '.msg' ).html( message ).show();
|
@@ -409,10 +402,6 @@ jQuery.fn.cpac_update_clone_id = function( storage_model ) {
|
|
409 |
var all_columns = jQuery( '.columns-container[data-type="' + storage_model + '"]').find( '.cpac-columns' );
|
410 |
var columns = jQuery( all_columns ).find( '*[data-type="' + type + '"]' ).not( el );
|
411 |
|
412 |
-
/* var type = el.attr( 'data-type' );
|
413 |
-
var all_columns = el.closest( '.cpac-boxes' ).find( '.cpac-columns' );
|
414 |
-
var columns = jQuery( all_columns ).find( '*[data-type="' + type + '"]' ).not( el );*/
|
415 |
-
|
416 |
// get clone ID
|
417 |
var ids = jQuery.map( columns, function( e, i ) {
|
418 |
if ( jQuery(e).attr('data-clone') ){
|
@@ -420,16 +409,18 @@ jQuery.fn.cpac_update_clone_id = function( storage_model ) {
|
|
420 |
}
|
421 |
return 0;
|
422 |
});
|
|
|
423 |
ids.sort();
|
424 |
var max_id = Math.max.apply( null, ids ) + 1;
|
425 |
for ( var id=0; id<=max_id; id++ ) {
|
426 |
-
if ( -1 === jQuery.inArray( id, ids ) )
|
427 |
-
|
|
|
428 |
}
|
429 |
|
430 |
// only increment when needed
|
431 |
-
if ( 0 === id )
|
432 |
-
|
433 |
|
434 |
// get original clone ID
|
435 |
var clone_id = el.attr( 'data-clone' );
|
@@ -544,40 +535,6 @@ function cpac_sidebar_feedback() {
|
|
544 |
} );
|
545 |
}
|
546 |
|
547 |
-
/*
|
548 |
-
* Sidebar Scroll
|
549 |
-
*
|
550 |
-
* @since 1.5
|
551 |
-
*/
|
552 |
-
/*function cpac_sidebar_scroll() {
|
553 |
-
|
554 |
-
if ( jQuery('.columns-right-inside').length === 0 ) {
|
555 |
-
return;
|
556 |
-
}
|
557 |
-
|
558 |
-
if ( jQuery('.columns-right-inside:visible').offset() ) {
|
559 |
-
var sidebar = jQuery('.columns-right-inside:visible');
|
560 |
-
var top = sidebar.offset().top - parseFloat( sidebar.css('margin-top').replace(/auto/, 0) ) - 70;
|
561 |
-
var viewport_height = jQuery(window).height();
|
562 |
-
var sidebar_height = sidebar.height();
|
563 |
-
|
564 |
-
jQuery(window).scroll(function (event) {
|
565 |
-
var y = jQuery(this).scrollTop();
|
566 |
-
|
567 |
-
// top position of div#cpac is calculated everytime incase of an opened help screen
|
568 |
-
var offset = jQuery('#cpac').offset().top - parseFloat( jQuery('#cpac').css('margin-top').replace(/auto/, 0) );
|
569 |
-
var sidebar_fits_on_screen = sidebar_height < ( viewport_height - 32 ); // adminbar
|
570 |
-
|
571 |
-
// whether that's below
|
572 |
-
if ( ( y >= top + offset ) && sidebar_fits_on_screen ) {
|
573 |
-
jQuery('.columns-right-inside:visible').addClass('fixed');
|
574 |
-
} else {
|
575 |
-
jQuery('.columns-right-inside:visible').removeClass('fixed');
|
576 |
-
}
|
577 |
-
});
|
578 |
-
}
|
579 |
-
}*/
|
580 |
-
|
581 |
/*
|
582 |
* Clear Input Defaults
|
583 |
*
|
22 |
cpac_add_column();
|
23 |
cpac_importexport();
|
24 |
cpac_sidebar_feedback();
|
|
|
25 |
|
26 |
// we start by binding the toggle and remove events.
|
27 |
jQuery('.cpac-column').each( function( i, col ) {
|
356 |
|
357 |
if ( typeof column.attr( 'data-clone' ) === 'undefined' ) {
|
358 |
var message = cpac_i18n.clone.replace( '%s', '<strong>' + column.find( '.column_label .toggle' ).text() + '</strong>' );
|
|
|
|
|
|
|
|
|
|
|
|
|
359 |
|
360 |
column.addClass( 'opened' ).find( '.column-form' ).slideDown( 150 );
|
361 |
column.find( '.msg' ).html( message ).show();
|
402 |
var all_columns = jQuery( '.columns-container[data-type="' + storage_model + '"]').find( '.cpac-columns' );
|
403 |
var columns = jQuery( all_columns ).find( '*[data-type="' + type + '"]' ).not( el );
|
404 |
|
|
|
|
|
|
|
|
|
405 |
// get clone ID
|
406 |
var ids = jQuery.map( columns, function( e, i ) {
|
407 |
if ( jQuery(e).attr('data-clone') ){
|
409 |
}
|
410 |
return 0;
|
411 |
});
|
412 |
+
|
413 |
ids.sort();
|
414 |
var max_id = Math.max.apply( null, ids ) + 1;
|
415 |
for ( var id=0; id<=max_id; id++ ) {
|
416 |
+
if ( -1 === jQuery.inArray( id, ids ) ) {
|
417 |
+
break;
|
418 |
+
}
|
419 |
}
|
420 |
|
421 |
// only increment when needed
|
422 |
+
//if ( 0 === id )
|
423 |
+
// return;
|
424 |
|
425 |
// get original clone ID
|
426 |
var clone_id = el.attr( 'data-clone' );
|
535 |
} );
|
536 |
}
|
537 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
538 |
/*
|
539 |
* Clear Input Defaults
|
540 |
*
|
assets/js/admin-settings.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
function cpac_importexport(){jQuery("#php-export-results textarea").on("focus, mouseup",function(){jQuery(this).select()}).select().focus()}function cpac_submit_form(){jQuery(".form-update a.submit-update").click(function(e){e.preventDefault(),jQuery(this).closest(".columns-container").find(".cpac-columns form").submit()})}function cpac_create_column(e){var n=jQuery(".for-cloning-only .cpac-column",e).first().clone(),t=e.attr("data-type");return n.length>0&&(n.cpac_update_clone_id(t),jQuery(".cpac-columns form",e).append(n),n.column_bind_toggle(),n.column_bind_remove(),n.column_bind_clone(),n.column_bind_events(),cpac_sortable(),jQuery(document).trigger("column_add",n)),n}function cpac_add_column(){jQuery("#cpac .add_column").click(function(e){var n=jQuery(this).closest(".columns-container"),t=cpac_create_column(n);t.addClass("opened").find(".column-form").slideDown(150,function(){jQuery("html, body").animate({scrollTop:t.offset().top-58},300)}),e.preventDefault()})}function cpac_sidebar_feedback(){jQuery(function(e){var n=e(".sidebox#direct-feedback");n.find("#feedback-choice a.no").click(function(e){e.preventDefault(),n.find("#feedback-choice").slideUp(),n.find("#feedback-support").slideDown()}),n.find("#feedback-choice a.yes").click(function(e){e.preventDefault(),n.find("#feedback-choice").slideUp(),n.find("#feedback-rate").slideDown()})})}function cpac_clear_input_defaults(){jQuery.fn.cleardefault=function(){return this.focus(function(){this.value==this.defaultValue&&(this.value="")}).blur(function(){this.value.length||(this.value=this.defaultValue)})},jQuery("#cpac-box-plugin_settings .addons input").cleardefault()}function cpac_help(){jQuery("#cpac a.help").click(function(e){e.preventDefault();var n=jQuery("#contextual-help-wrap");n.parent().show(),jQuery('a[href="#tab-panel-cpac-'+jQuery(this).attr("data-help")+'"]',n).trigger("click"),n.slideDown("fast",function(){n.focus()})})}function cpac_pointer(){jQuery(".cpac-pointer").each(function(){var e=jQuery(this),n=e.attr("rel"),t=e.attr("data-pos"),i={at:"left top",my:"right top",edge:"right",offset:"0 0"};"right"==t&&(i={at:"right middle",my:"left middle",edge:"left"}),e.pointer({content:jQuery("#"+n).html(),position:i,pointerWidth:250,close:function(){e.removeClass("open")},pointerClass:"wp-pointer wp-pointer-"+i.edge}),e.click(function(){e.hasClass("open")?e.removeClass("open"):e.addClass("open")}),e.hover(function(){jQuery(this).pointer("open")},function(){e.hasClass("open")||jQuery(this).pointer("close")})})}function cpac_sortable(){jQuery("div.cpac-columns").each(function(){jQuery(this).hasClass("ui-sortable")?jQuery(this).sortable("refresh"):jQuery(this).sortable({items:".cpac-column"})})}function cpac_menu(){var e=jQuery("#cpac div.cpac-menu");e.find("a").click(function(e,n){var t=jQuery(this).attr("href");if(t){var i=t.replace("#cpac-box-","");jQuery(".cpac-menu a").removeClass("current"),jQuery(".columns-container").hide(),jQuery(this).addClass("current");var c=jQuery('.columns-container[data-type="'+i+'"]').show(),a=c.find(".cpac-columns");jQuery(document).trigger("cac_menu_change",a)}e.preventDefault()}),e.find("a.current").trigger("click")}jQuery(document).ready(function(){return 0===jQuery("#cpac").length?!1:(cpac_pointer(),cpac_submit_form(),cpac_clear_input_defaults(),cpac_sortable(),cpac_menu(),cpac_help(),cpac_add_column(),cpac_importexport(),cpac_sidebar_feedback(),void jQuery(".cpac-column").each(function(e,n){jQuery(n).column_bind_toggle(),jQuery(n).column_bind_remove(),jQuery(n).column_bind_clone(),jQuery(n).cpac_bind_container_addon_events()}))}),jQuery.fn.column_bind_toggle=function(){var e=jQuery(this);e.find("td.column_type a, td.column_edit, td.column_label a.toggle, td.column_label .edit-button").click(function(n){n.preventDefault(),e.toggleClass("opened").find(".column-form").slideToggle(150),e.hasClass("events-binded")||e.column_bind_events(),e.addClass("events-binded"),jQuery(document).trigger("column_init",e)})},jQuery.fn.column_bind_remove=function(){jQuery(this).find(".remove-button").click(function(e){jQuery(this).closest(".cpac-column").column_remove(),e.preventDefault()})},jQuery.fn.column_bind_clone=function(){jQuery(this).find(".clone-button").click(function(e){var n,t;e.preventDefault(),n=jQuery(this).closest(".cpac-column"),t=n.column_clone(),"undefined"!=typeof t&&t.removeClass("loading").hide().slideDown()})},jQuery.fn.cpac_column_refresh=function(){var e=jQuery(this);e.addClass("loading"),e.find(".column-form").prepend('<span class="spinner" />'),jQuery.post(ajaxurl,{plugin_id:"cpac",action:"cpac_column_refresh",column:jQuery(this).find("input.column-name").val(),formdata:jQuery(this).parents("form").serialize()},function(n){var t=jQuery("<div>"+n+"</div>").children();e.replaceWith(t),e=t,e.column_bind_toggle(),e.column_bind_remove(),e.column_bind_clone(),e.column_bind_events(),e.removeClass("loading").addClass("opened").find(".column-form").show(),jQuery(document).trigger("column_change",e)})},jQuery.fn.column_bind_events=function(){var e=jQuery(this),n=e.closest(".columns-container "),t=n.attr("data-type"),i=e.find(".column_type select option:selected").val();e.find(".column_type select").change(function(){var c=jQuery("optgroup",this).children(":selected"),a=c.val(),o=c.text(),r=jQuery(this).next(".msg").hide(),u=n.find('.for-cloning-only .cpac-column[data-type="'+a+'"]');if(u.length)if(u.find(".is-disabled").length)r.html(u.find(".is-disabled").html()).show(),jQuery(this).find("option").removeAttr("selected"),jQuery(this).find('option[value="'+i+'"]').attr("selected","selected");else{if("undefined"==typeof u.attr("data-clone")&&jQuery(".cpac-columns",n).find('[data-type="'+a+'"]').length)return r.html(cpac_i18n.clone.replace("%s","<strong>"+o+"</strong>")).show(),jQuery(this).find("option").removeAttr("selected"),void jQuery(this).find('option[value="'+i+'"]').attr("selected","selected");var l=u.clone();l.addClass("opened").find(".column-form").show(),l.find(".column-meta").replaceWith(e.find(".column-meta")),l.find(".column-form").replaceWith(e.find(".column-form")),l.cpac_update_clone_id(t),e.replaceWith(l),l.cpac_column_refresh()}}),e.find(".column_label .input input").bind("keyup change",function(){var e=jQuery(this).val();jQuery(this).closest(".cpac-column").find("td.column_label .inner > a.toggle").text(e)}),e.column_width_slider();var c=e.find(".column-meta span.width");c.on("update",function(){var n=e.find("input.width").val(),t=e.find("input.unit").filter(":checked").val();n>0?jQuery(this).text(n+t):jQuery(this).text("")});var a=e.find(".column_width .unit-select label");a.on("click",function(){e.find("span.unit").text(jQuery(this).find("input").val()),e.column_width_slider(),c.trigger("update")});var o=e.find("input.width").on("keyup",function(){e.column_width_slider(),jQuery(this).trigger("validate"),c.trigger("update")}).on("validate",function(){var e=o.val(),n=jQuery.trim(e);jQuery.isNumeric(n)||(n=n.replace(/\D/g,"")),n.length>3&&(n=n.substring(0,3)),0>=n&&(n=""),n!==e&&o.val(n)});e.find(".column_image_size label.custom-size").click(function(){var e=jQuery(this).closest(".input");jQuery(this).hasClass("image-size-custom")?(jQuery(".custom-size-w",e).removeClass("hidden"),jQuery(".custom-size-h",e).removeClass("hidden")):(jQuery(".custom-size-w",e).addClass("hidden"),jQuery(".custom-size-h",e).addClass("hidden"))}),e.find(".column-form .label label, .column-form .label .info").hover(function(){jQuery(this).parents(".label").find("p.description").show()},function(){jQuery(this).parents(".label").find("p.description").hide()}),e.find('[data-refresh="1"] select').change(function(){e.cpac_column_refresh()})},jQuery.fn.column_remove=function(){jQuery(this).addClass("deleting").animate({opacity:0,height:0},350,function(e){jQuery(this).remove()})},jQuery.fn.column_width_slider=function(){var e=jQuery(this).find(".column_width"),n=e.find("input.width"),t=e.find("input.unit"),i=t.filter(":checked").val(),c=n.val(),a=e.find(".width-slider"),o=jQuery(this).find(".column-meta span.width");"%"==i&&c>100&&(c=100),n.val(c),a.slider({range:"min",min:0,max:"%"==i?100:500,value:c,slide:function(e,t){n.val(t.value),o.trigger("update"),n.trigger("validate")}})},jQuery.fn.column_clone=function(){var e=jQuery(this).closest(".columns-container"),n=jQuery(this);if("undefined"==typeof n.attr("data-clone")){var t=cpac_i18n.clone.replace("%s","<strong>"+n.find(".column_label .toggle").text()+"</strong>");return n.addClass("opened").find(".column-form").slideDown(150),void n.find(".msg").html(t).show()}var i=jQuery(this).clone();return i.cpac_update_clone_id(e.attr("data-type")),jQuery(this).after(i),i.column_bind_toggle(),i.column_bind_remove(),i.column_bind_clone(),i.column_bind_events(),cpac_sortable(),jQuery(document).trigger("column_add",i),i},jQuery.fn.cpac_update_clone_id=function(e){var n=jQuery(this),t=n.attr("data-type"),i=jQuery('.columns-container[data-type="'+e+'"]').find(".cpac-columns"),c=jQuery(i).find('*[data-type="'+t+'"]').not(n),a=jQuery.map(c,function(e,n){return jQuery(e).attr("data-clone")?parseInt(jQuery(e).attr("data-clone"),10):0});a.sort();for(var o=Math.max.apply(null,a)+1,r=0;o>=r&&-1!==jQuery.inArray(r,a);r++);if(0!==r){var u=n.attr("data-clone"),l="";u&&(l="-"+u),n.attr("data-clone",r),n.find("input.clone").val(r),n.find("input.column-name").val(t+"-"+r);var d=n.find("input, select, label");jQuery(d).each(function(e,n){var i=t+"-"+r;jQuery(n).attr("name")&&jQuery(n).attr("name",jQuery(n).attr("name").replace(t+l,i)),jQuery(n).attr("for")&&jQuery(n).attr("for",jQuery(n).attr("for").replace(t+l,i)),jQuery(n).attr("id")&&jQuery(n).attr("id",jQuery(n).attr("id").replace(t+l,i))})}},jQuery(document).bind("column_init column_change column_add",function(e,n){jQuery(n).cpac_bind_column_addon_events(),jQuery(n).cpac_bind_container_addon_events()}),jQuery.fn.cpac_bind_column_addon_events=function(){var e=jQuery(this),n=e.find("[data-toggle-id] label");n.on("click",function(){var n=jQuery(this).closest("td.input").data("toggle-id"),t=jQuery("input",this).val(),i=e.find('[data-indicator-id="'+n+'"]').removeClass("on");"on"==t&&i.addClass("on");var c=e.find('[data-additional-option-id="'+n+'"]').addClass("hide");"on"==t&&c.removeClass("hide")}),e.find("[data-toggle-id]").each(function(){var n=e.find('[data-additional-option-id="'+jQuery(this).data("toggle-id")+'"]').addClass("hide");"on"==jQuery("input:checked",this).val()&&n.removeClass("hide")})},jQuery.fn.cpac_bind_container_addon_events=function(){var e=jQuery(this),n=e.find("[data-indicator-id]");n.unbind("click").click(function(){var n=jQuery(this).data("indicator-id"),t=e.find('[data-toggle-id="'+n+'"] input');jQuery(this).hasClass("on")?(jQuery(this).removeClass("on").addClass("off"),t.filter("[value=off]").prop("checked",!0)):(jQuery(this).removeClass("off").addClass("on"),t.filter("[value=on]").prop("checked",!0))})};
|
1 |
+
function cpac_importexport(){jQuery("#php-export-results textarea").on("focus, mouseup",function(){jQuery(this).select()}).select().focus()}function cpac_submit_form(){jQuery(".form-update a.submit-update").click(function(e){e.preventDefault(),jQuery(this).closest(".columns-container").find(".cpac-columns form").submit()})}function cpac_create_column(e){var n=jQuery(".for-cloning-only .cpac-column",e).first().clone(),t=e.attr("data-type");return n.length>0&&(n.cpac_update_clone_id(t),jQuery(".cpac-columns form",e).append(n),n.column_bind_toggle(),n.column_bind_remove(),n.column_bind_clone(),n.column_bind_events(),cpac_sortable(),jQuery(document).trigger("column_add",n)),n}function cpac_add_column(){jQuery("#cpac .add_column").click(function(e){var n=jQuery(this).closest(".columns-container"),t=cpac_create_column(n);t.addClass("opened").find(".column-form").slideDown(150,function(){jQuery("html, body").animate({scrollTop:t.offset().top-58},300)}),e.preventDefault()})}function cpac_sidebar_feedback(){jQuery(function(e){var n=e(".sidebox#direct-feedback");n.find("#feedback-choice a.no").click(function(e){e.preventDefault(),n.find("#feedback-choice").slideUp(),n.find("#feedback-support").slideDown()}),n.find("#feedback-choice a.yes").click(function(e){e.preventDefault(),n.find("#feedback-choice").slideUp(),n.find("#feedback-rate").slideDown()})})}function cpac_clear_input_defaults(){jQuery.fn.cleardefault=function(){return this.focus(function(){this.value==this.defaultValue&&(this.value="")}).blur(function(){this.value.length||(this.value=this.defaultValue)})},jQuery("#cpac-box-plugin_settings .addons input").cleardefault()}function cpac_help(){jQuery("#cpac a.help").click(function(e){e.preventDefault();var n=jQuery("#contextual-help-wrap");n.parent().show(),jQuery('a[href="#tab-panel-cpac-'+jQuery(this).attr("data-help")+'"]',n).trigger("click"),n.slideDown("fast",function(){n.focus()})})}function cpac_pointer(){jQuery(".cpac-pointer").each(function(){var e=jQuery(this),n=e.attr("rel"),t=e.attr("data-pos"),i={at:"left top",my:"right top",edge:"right",offset:"0 0"};"right"==t&&(i={at:"right middle",my:"left middle",edge:"left"}),e.pointer({content:jQuery("#"+n).html(),position:i,pointerWidth:250,close:function(){e.removeClass("open")},pointerClass:"wp-pointer wp-pointer-"+i.edge}),e.click(function(){e.hasClass("open")?e.removeClass("open"):e.addClass("open")}),e.hover(function(){jQuery(this).pointer("open")},function(){e.hasClass("open")||jQuery(this).pointer("close")})})}function cpac_sortable(){jQuery("div.cpac-columns").each(function(){jQuery(this).hasClass("ui-sortable")?jQuery(this).sortable("refresh"):jQuery(this).sortable({items:".cpac-column"})})}function cpac_menu(){var e=jQuery("#cpac div.cpac-menu");e.find("a").click(function(e,n){var t=jQuery(this).attr("href");if(t){var i=t.replace("#cpac-box-","");jQuery(".cpac-menu a").removeClass("current"),jQuery(".columns-container").hide(),jQuery(this).addClass("current");var c=jQuery('.columns-container[data-type="'+i+'"]').show(),a=c.find(".cpac-columns");jQuery(document).trigger("cac_menu_change",a)}e.preventDefault()}),e.find("a.current").trigger("click")}jQuery(document).ready(function(){return 0===jQuery("#cpac").length?!1:(cpac_pointer(),cpac_submit_form(),cpac_clear_input_defaults(),cpac_sortable(),cpac_menu(),cpac_help(),cpac_add_column(),cpac_importexport(),cpac_sidebar_feedback(),void jQuery(".cpac-column").each(function(e,n){jQuery(n).column_bind_toggle(),jQuery(n).column_bind_remove(),jQuery(n).column_bind_clone(),jQuery(n).cpac_bind_container_addon_events()}))}),jQuery.fn.column_bind_toggle=function(){var e=jQuery(this);e.find("td.column_type a, td.column_edit, td.column_label a.toggle, td.column_label .edit-button").click(function(n){n.preventDefault(),e.toggleClass("opened").find(".column-form").slideToggle(150),e.hasClass("events-binded")||e.column_bind_events(),e.addClass("events-binded"),jQuery(document).trigger("column_init",e)})},jQuery.fn.column_bind_remove=function(){jQuery(this).find(".remove-button").click(function(e){jQuery(this).closest(".cpac-column").column_remove(),e.preventDefault()})},jQuery.fn.column_bind_clone=function(){jQuery(this).find(".clone-button").click(function(e){var n,t;e.preventDefault(),n=jQuery(this).closest(".cpac-column"),t=n.column_clone(),"undefined"!=typeof t&&t.removeClass("loading").hide().slideDown()})},jQuery.fn.cpac_column_refresh=function(){var e=jQuery(this);e.addClass("loading"),e.find(".column-form").prepend('<span class="spinner" />'),jQuery.post(ajaxurl,{plugin_id:"cpac",action:"cpac_column_refresh",column:jQuery(this).find("input.column-name").val(),formdata:jQuery(this).parents("form").serialize()},function(n){var t=jQuery("<div>"+n+"</div>").children();e.replaceWith(t),e=t,e.column_bind_toggle(),e.column_bind_remove(),e.column_bind_clone(),e.column_bind_events(),e.removeClass("loading").addClass("opened").find(".column-form").show(),jQuery(document).trigger("column_change",e)})},jQuery.fn.column_bind_events=function(){var e=jQuery(this),n=e.closest(".columns-container "),t=n.attr("data-type"),i=e.find(".column_type select option:selected").val();e.find(".column_type select").change(function(){var c=jQuery("optgroup",this).children(":selected"),a=c.val(),o=c.text(),r=jQuery(this).next(".msg").hide(),u=n.find('.for-cloning-only .cpac-column[data-type="'+a+'"]');if(u.length)if(u.find(".is-disabled").length)r.html(u.find(".is-disabled").html()).show(),jQuery(this).find("option").removeAttr("selected"),jQuery(this).find('option[value="'+i+'"]').attr("selected","selected");else{if("undefined"==typeof u.attr("data-clone")&&jQuery(".cpac-columns",n).find('[data-type="'+a+'"]').length)return r.html(cpac_i18n.clone.replace("%s","<strong>"+o+"</strong>")).show(),jQuery(this).find("option").removeAttr("selected"),void jQuery(this).find('option[value="'+i+'"]').attr("selected","selected");var l=u.clone();l.addClass("opened").find(".column-form").show(),l.find(".column-meta").replaceWith(e.find(".column-meta")),l.find(".column-form").replaceWith(e.find(".column-form")),l.cpac_update_clone_id(t),e.replaceWith(l),l.cpac_column_refresh()}}),e.find(".column_label .input input").bind("keyup change",function(){var e=jQuery(this).val();jQuery(this).closest(".cpac-column").find("td.column_label .inner > a.toggle").text(e)}),e.column_width_slider();var c=e.find(".column-meta span.width");c.on("update",function(){var n=e.find("input.width").val(),t=e.find("input.unit").filter(":checked").val();n>0?jQuery(this).text(n+t):jQuery(this).text("")});var a=e.find(".column_width .unit-select label");a.on("click",function(){e.find("span.unit").text(jQuery(this).find("input").val()),e.column_width_slider(),c.trigger("update")});var o=e.find("input.width").on("keyup",function(){e.column_width_slider(),jQuery(this).trigger("validate"),c.trigger("update")}).on("validate",function(){var e=o.val(),n=jQuery.trim(e);jQuery.isNumeric(n)||(n=n.replace(/\D/g,"")),n.length>3&&(n=n.substring(0,3)),0>=n&&(n=""),n!==e&&o.val(n)});e.find(".column_image_size label.custom-size").click(function(){var e=jQuery(this).closest(".input");jQuery(this).hasClass("image-size-custom")?(jQuery(".custom-size-w",e).removeClass("hidden"),jQuery(".custom-size-h",e).removeClass("hidden")):(jQuery(".custom-size-w",e).addClass("hidden"),jQuery(".custom-size-h",e).addClass("hidden"))}),e.find(".column-form .label label, .column-form .label .info").hover(function(){jQuery(this).parents(".label").find("p.description").show()},function(){jQuery(this).parents(".label").find("p.description").hide()}),e.find('[data-refresh="1"] select').change(function(){e.cpac_column_refresh()})},jQuery.fn.column_remove=function(){jQuery(this).addClass("deleting").animate({opacity:0,height:0},350,function(e){jQuery(this).remove()})},jQuery.fn.column_width_slider=function(){var e=jQuery(this).find(".column_width"),n=e.find("input.width"),t=e.find("input.unit"),i=t.filter(":checked").val(),c=n.val(),a=e.find(".width-slider"),o=jQuery(this).find(".column-meta span.width");"%"==i&&c>100&&(c=100),n.val(c),a.slider({range:"min",min:0,max:"%"==i?100:500,value:c,slide:function(e,t){n.val(t.value),o.trigger("update"),n.trigger("validate")}})},jQuery.fn.column_clone=function(){var e=jQuery(this).closest(".columns-container"),n=jQuery(this);if("undefined"==typeof n.attr("data-clone")){var t=cpac_i18n.clone.replace("%s","<strong>"+n.find(".column_label .toggle").text()+"</strong>");return n.addClass("opened").find(".column-form").slideDown(150),void n.find(".msg").html(t).show()}var i=jQuery(this).clone();return i.cpac_update_clone_id(e.attr("data-type")),jQuery(this).after(i),i.column_bind_toggle(),i.column_bind_remove(),i.column_bind_clone(),i.column_bind_events(),cpac_sortable(),jQuery(document).trigger("column_add",i),i},jQuery.fn.cpac_update_clone_id=function(e){var n=jQuery(this),t=n.attr("data-type"),i=jQuery('.columns-container[data-type="'+e+'"]').find(".cpac-columns"),c=jQuery(i).find('*[data-type="'+t+'"]').not(n),a=jQuery.map(c,function(e,n){return jQuery(e).attr("data-clone")?parseInt(jQuery(e).attr("data-clone"),10):0});a.sort();for(var o=Math.max.apply(null,a)+1,r=0;o>=r&&-1!==jQuery.inArray(r,a);r++);var u=n.attr("data-clone"),l="";u&&(l="-"+u),n.attr("data-clone",r),n.find("input.clone").val(r),n.find("input.column-name").val(t+"-"+r);var d=n.find("input, select, label");jQuery(d).each(function(e,n){var i=t+"-"+r;jQuery(n).attr("name")&&jQuery(n).attr("name",jQuery(n).attr("name").replace(t+l,i)),jQuery(n).attr("for")&&jQuery(n).attr("for",jQuery(n).attr("for").replace(t+l,i)),jQuery(n).attr("id")&&jQuery(n).attr("id",jQuery(n).attr("id").replace(t+l,i))})},jQuery(document).bind("column_init column_change column_add",function(e,n){jQuery(n).cpac_bind_column_addon_events(),jQuery(n).cpac_bind_container_addon_events()}),jQuery.fn.cpac_bind_column_addon_events=function(){var e=jQuery(this),n=e.find("[data-toggle-id] label");n.on("click",function(){var n=jQuery(this).closest("td.input").data("toggle-id"),t=jQuery("input",this).val(),i=e.find('[data-indicator-id="'+n+'"]').removeClass("on");"on"==t&&i.addClass("on");var c=e.find('[data-additional-option-id="'+n+'"]').addClass("hide");"on"==t&&c.removeClass("hide")}),e.find("[data-toggle-id]").each(function(){var n=e.find('[data-additional-option-id="'+jQuery(this).data("toggle-id")+'"]').addClass("hide");"on"==jQuery("input:checked",this).val()&&n.removeClass("hide")})},jQuery.fn.cpac_bind_container_addon_events=function(){var e=jQuery(this),n=e.find("[data-indicator-id]");n.unbind("click").click(function(){var n=jQuery(this).data("indicator-id"),t=e.find('[data-toggle-id="'+n+'"] input');jQuery(this).hasClass("on")?(jQuery(this).removeClass("on").addClass("off"),t.filter("[value=off]").prop("checked",!0)):(jQuery(this).removeClass("off").addClass("on"),t.filter("[value=on]").prop("checked",!0))})};
|
classes/column.php
CHANGED
@@ -242,29 +242,12 @@ class CPAC_Column {
|
|
242 |
$this->options = (object) $this->options;
|
243 |
$this->properties = (object) $this->properties;
|
244 |
|
245 |
-
// Read options from database
|
246 |
-
$this->populate_options();
|
247 |
-
|
248 |
-
$this->sanitize_label();
|
249 |
-
|
250 |
// Filters
|
251 |
foreach ( $this->properties as $name => $value ) {
|
252 |
$this->properties->{$name} = apply_filters( "cac/column/properties/{$name}", $value, $this );
|
253 |
}
|
254 |
}
|
255 |
|
256 |
-
/**
|
257 |
-
* Populate Options
|
258 |
-
* Added $options parameter in 2.2
|
259 |
-
*
|
260 |
-
* @since 2.0
|
261 |
-
*
|
262 |
-
* @param array $options Optional. Options to populate the storage model with. Defaults to options from database.
|
263 |
-
*/
|
264 |
-
public function populate_options( $options = null ) {
|
265 |
-
$this->options = (object) array_merge( (array) $this->options, is_array( $options ) ? $options : $this->read() );
|
266 |
-
}
|
267 |
-
|
268 |
/**
|
269 |
* @param string $property
|
270 |
*
|
@@ -486,20 +469,6 @@ class CPAC_Column {
|
|
486 |
echo $this->get_attr_id( $field_name );
|
487 |
}
|
488 |
|
489 |
-
/**
|
490 |
-
* @since 2.0
|
491 |
-
* @return array Column options
|
492 |
-
*/
|
493 |
-
public function read() {
|
494 |
-
$options = (array) $this->storage_model->get_database_columns();
|
495 |
-
|
496 |
-
if ( empty( $options[ $this->properties->name ] ) ) {
|
497 |
-
return array();
|
498 |
-
}
|
499 |
-
|
500 |
-
return $options[ $this->properties->name ];
|
501 |
-
}
|
502 |
-
|
503 |
/**
|
504 |
* @since 2.0
|
505 |
*/
|
@@ -531,6 +500,7 @@ class CPAC_Column {
|
|
531 |
}
|
532 |
|
533 |
if ( ! empty( $options['label'] ) ) {
|
|
|
534 |
|
535 |
// Label can not contains the character ":"" and "'", because
|
536 |
// CPAC_Column::get_sanitized_label() will return an empty string
|
@@ -539,6 +509,7 @@ class CPAC_Column {
|
|
539 |
$options['label'] = str_replace( ':', '', $options['label'] );
|
540 |
$options['label'] = str_replace( "'", '', $options['label'] );
|
541 |
}
|
|
|
542 |
}
|
543 |
|
544 |
// used by child classes for additional sanitizing
|
@@ -1188,7 +1159,7 @@ class CPAC_Column {
|
|
1188 |
<tr class="column_<?php echo $field_key; ?>">
|
1189 |
<?php $this->label_view( $label, $description, $field_key ); ?>
|
1190 |
<td class="input">
|
1191 |
-
<input type="text" name="<?php $this->attr_name( $field_key ); ?>" id="<?php $this->attr_id( $field_key ); ?>" value="<?php echo $this->
|
1192 |
|
1193 |
<p class="description">
|
1194 |
<?php printf( __( "Leave empty for WordPress date format, change your <a href='%s'>default date format here</a>.", 'codepress-admin-columns' ), admin_url( 'options-general.php' ) . '#date_format_custom_radio' ); ?>
|
242 |
$this->options = (object) $this->options;
|
243 |
$this->properties = (object) $this->properties;
|
244 |
|
|
|
|
|
|
|
|
|
|
|
245 |
// Filters
|
246 |
foreach ( $this->properties as $name => $value ) {
|
247 |
$this->properties->{$name} = apply_filters( "cac/column/properties/{$name}", $value, $this );
|
248 |
}
|
249 |
}
|
250 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
251 |
/**
|
252 |
* @param string $property
|
253 |
*
|
469 |
echo $this->get_attr_id( $field_name );
|
470 |
}
|
471 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
472 |
/**
|
473 |
* @since 2.0
|
474 |
*/
|
500 |
}
|
501 |
|
502 |
if ( ! empty( $options['label'] ) ) {
|
503 |
+
$options['label'] = str_replace( 'data:', '%%data%%', $options['label'] ); // Temporary replace data: urls for image sources. Replace it back later
|
504 |
|
505 |
// Label can not contains the character ":"" and "'", because
|
506 |
// CPAC_Column::get_sanitized_label() will return an empty string
|
509 |
$options['label'] = str_replace( ':', '', $options['label'] );
|
510 |
$options['label'] = str_replace( "'", '', $options['label'] );
|
511 |
}
|
512 |
+
$options['label'] = str_replace( '%%data%%', 'data:', $options['label'] ); // Enable data:image url's
|
513 |
}
|
514 |
|
515 |
// used by child classes for additional sanitizing
|
1159 |
<tr class="column_<?php echo $field_key; ?>">
|
1160 |
<?php $this->label_view( $label, $description, $field_key ); ?>
|
1161 |
<td class="input">
|
1162 |
+
<input type="text" name="<?php $this->attr_name( $field_key ); ?>" id="<?php $this->attr_id( $field_key ); ?>" value="<?php echo $this->get_option( 'date_format' ); ?>" placeholder="<?php _e( 'Example:', 'codepress-admin-columns' ); ?> d M Y H:i"/>
|
1163 |
|
1164 |
<p class="description">
|
1165 |
<?php printf( __( "Leave empty for WordPress date format, change your <a href='%s'>default date format here</a>.", 'codepress-admin-columns' ), admin_url( 'options-general.php' ) . '#date_format_custom_radio' ); ?>
|
classes/column/custom-field.php
CHANGED
@@ -41,7 +41,6 @@ class CPAC_Column_Custom_Field extends CPAC_Column {
|
|
41 |
$this->options['link_label'] = '';
|
42 |
|
43 |
$this->options['date_format'] = '';
|
44 |
-
$this->options['date_save_format'] = '';
|
45 |
}
|
46 |
|
47 |
/**
|
41 |
$this->options['link_label'] = '';
|
42 |
|
43 |
$this->options['date_format'] = '';
|
|
|
44 |
}
|
45 |
|
46 |
/**
|
classes/storage_model.php
CHANGED
@@ -56,6 +56,12 @@ abstract class CPAC_Storage_Model {
|
|
56 |
*/
|
57 |
public $page;
|
58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
/**
|
60 |
* Uses PHP export to display settings
|
61 |
*
|
@@ -126,6 +132,22 @@ abstract class CPAC_Storage_Model {
|
|
126 |
$this->set_columns_filepath();
|
127 |
}
|
128 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
/**
|
130 |
* Set menutype
|
131 |
*
|
@@ -528,9 +550,10 @@ abstract class CPAC_Storage_Model {
|
|
528 |
*/
|
529 |
public function get_stored_columns() {
|
530 |
|
531 |
-
|
532 |
-
|
533 |
-
|
|
|
534 |
$columns = $this->get_database_columns();
|
535 |
}
|
536 |
|
@@ -555,9 +578,6 @@ abstract class CPAC_Storage_Model {
|
|
555 |
*/
|
556 |
public function set_stored_columns( $columns ) {
|
557 |
$this->stored_columns = $columns;
|
558 |
-
|
559 |
-
// columns settings are set by external plugin
|
560 |
-
$this->php_export = true;
|
561 |
}
|
562 |
|
563 |
/**
|
@@ -569,6 +589,13 @@ abstract class CPAC_Storage_Model {
|
|
569 |
return $this->php_export;
|
570 |
}
|
571 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
572 |
/**
|
573 |
* @since 2.1.1
|
574 |
*/
|
@@ -686,26 +713,18 @@ abstract class CPAC_Storage_Model {
|
|
686 |
|
687 |
$columns = array();
|
688 |
|
689 |
-
// get columns
|
690 |
if ( ! $this->default_wp_columns ) {
|
691 |
$this->default_wp_columns = $this->get_default_columns();
|
692 |
}
|
693 |
-
|
694 |
-
$default_columns = $this->default_wp_columns;
|
695 |
-
|
696 |
-
// TODO check if this solves the issue with not displaying value when using "manage_{$post_type}_posts_columns" at CPAC_Storage_Model_Post
|
697 |
$registered_columns = $this->get_registered_columns();
|
698 |
|
699 |
if ( $stored_columns = $this->get_stored_columns() ) {
|
700 |
-
$stored_names = array();
|
701 |
|
702 |
foreach ( $stored_columns as $name => $options ) {
|
703 |
if ( ! isset( $options['type'] ) ) {
|
704 |
continue;
|
705 |
}
|
706 |
|
707 |
-
$stored_names[] = $name;
|
708 |
-
|
709 |
// In case of a disabled plugin, we will skip column.
|
710 |
// This means the stored column type is not available anymore.
|
711 |
if ( ! in_array( $options['type'], array_keys( $registered_columns ) ) ) {
|
@@ -716,11 +735,8 @@ abstract class CPAC_Storage_Model {
|
|
716 |
$column = clone $registered_columns[ $options['type'] ];
|
717 |
$column->set_clone( $options['clone'] );
|
718 |
|
719 |
-
//
|
720 |
-
$
|
721 |
-
|
722 |
-
// repopulate the options, so they contains the right stored options
|
723 |
-
$column->populate_options( $preload );
|
724 |
|
725 |
$column->sanitize_label();
|
726 |
|
@@ -729,10 +745,10 @@ abstract class CPAC_Storage_Model {
|
|
729 |
|
730 |
// In case of an enabled plugin, we will add that column.
|
731 |
// When $diff contains items, it means a default column has not been stored.
|
732 |
-
if ( $diff = array_diff( array_keys( $
|
733 |
foreach ( $diff as $name ) {
|
734 |
// because of the filter "manage_{$post_type}_posts_columns" the columns
|
735 |
-
// that are being added by CPAC will also appear in the $
|
736 |
// this will filter out those columns.
|
737 |
if ( isset( $columns[ $name ] ) ) {
|
738 |
continue;
|
@@ -748,13 +764,13 @@ abstract class CPAC_Storage_Model {
|
|
748 |
}
|
749 |
} // When nothing has been saved yet, we return the default WP columns.
|
750 |
else {
|
751 |
-
foreach ( array_keys( $
|
752 |
if ( isset( $registered_columns[ $name ] ) ) {
|
753 |
$columns[ $name ] = clone $registered_columns[ $name ];
|
754 |
}
|
755 |
}
|
756 |
|
757 |
-
/**
|
758 |
* Filter the columns that should be loaded if there were no stored columns
|
759 |
*
|
760 |
* @since 2.2.4
|
@@ -865,44 +881,13 @@ abstract class CPAC_Storage_Model {
|
|
865 |
return add_query_arg( array( 'page' => 'codepress-admin-columns', 'cpac_key' => $this->key ), admin_url( 'options-general.php' ) );
|
866 |
}
|
867 |
|
|
|
868 |
/**
|
869 |
-
* @since 2.
|
870 |
-
* @global string $pagenow
|
871 |
-
* @global object $current_screen
|
872 |
-
* @return boolean
|
873 |
*/
|
874 |
-
public function
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
if ( $this->page . '.php' != $pagenow ) {
|
879 |
-
return false;
|
880 |
-
}
|
881 |
-
|
882 |
-
// posttypes
|
883 |
-
if ( 'post' == $this->type ) {
|
884 |
-
$post_type = isset( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : $this->type;
|
885 |
-
|
886 |
-
if ( $this->key != $post_type ) {
|
887 |
-
return false;
|
888 |
-
}
|
889 |
-
}
|
890 |
-
|
891 |
-
// taxonomy
|
892 |
-
if ( 'taxonomy' == $this->type ) {
|
893 |
-
$taxonomy = isset( $_GET['taxonomy'] ) ? $_GET['taxonomy'] : '';
|
894 |
-
|
895 |
-
if ( $this->taxonomy != $taxonomy ) {
|
896 |
-
return false;
|
897 |
-
}
|
898 |
-
}
|
899 |
-
|
900 |
-
// users
|
901 |
-
if ( 'wp-users' == $this->key && is_network_admin() ) {
|
902 |
-
return false;
|
903 |
-
}
|
904 |
-
|
905 |
-
return true;
|
906 |
}
|
907 |
|
908 |
/**
|
56 |
*/
|
57 |
public $page;
|
58 |
|
59 |
+
/**
|
60 |
+
* @since 2.4.10
|
61 |
+
* @var string
|
62 |
+
*/
|
63 |
+
public $subpage;
|
64 |
+
|
65 |
/**
|
66 |
* Uses PHP export to display settings
|
67 |
*
|
132 |
$this->set_columns_filepath();
|
133 |
}
|
134 |
|
135 |
+
/**
|
136 |
+
* initialize callback for managing the headers and values for columns
|
137 |
+
* @since 2.4.10
|
138 |
+
*
|
139 |
+
*/
|
140 |
+
public function init_manage_columns(){}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* @since 2.0.3
|
144 |
+
* @return boolean
|
145 |
+
*/
|
146 |
+
public function is_current_screen() {
|
147 |
+
global $pagenow;
|
148 |
+
return $this->page . '.php' === $pagenow && $this->subpage == filter_input( INPUT_GET, 'page' );
|
149 |
+
}
|
150 |
+
|
151 |
/**
|
152 |
* Set menutype
|
153 |
*
|
550 |
*/
|
551 |
public function get_stored_columns() {
|
552 |
|
553 |
+
if ( $this->is_using_php_export() ) {
|
554 |
+
$columns = $this->stored_columns;
|
555 |
+
}
|
556 |
+
else {
|
557 |
$columns = $this->get_database_columns();
|
558 |
}
|
559 |
|
578 |
*/
|
579 |
public function set_stored_columns( $columns ) {
|
580 |
$this->stored_columns = $columns;
|
|
|
|
|
|
|
581 |
}
|
582 |
|
583 |
/**
|
589 |
return $this->php_export;
|
590 |
}
|
591 |
|
592 |
+
/**
|
593 |
+
* @since 2.4.10
|
594 |
+
*/
|
595 |
+
public function enable_php_export() {
|
596 |
+
$this->php_export = true;
|
597 |
+
}
|
598 |
+
|
599 |
/**
|
600 |
* @since 2.1.1
|
601 |
*/
|
713 |
|
714 |
$columns = array();
|
715 |
|
|
|
716 |
if ( ! $this->default_wp_columns ) {
|
717 |
$this->default_wp_columns = $this->get_default_columns();
|
718 |
}
|
|
|
|
|
|
|
|
|
719 |
$registered_columns = $this->get_registered_columns();
|
720 |
|
721 |
if ( $stored_columns = $this->get_stored_columns() ) {
|
|
|
722 |
|
723 |
foreach ( $stored_columns as $name => $options ) {
|
724 |
if ( ! isset( $options['type'] ) ) {
|
725 |
continue;
|
726 |
}
|
727 |
|
|
|
|
|
728 |
// In case of a disabled plugin, we will skip column.
|
729 |
// This means the stored column type is not available anymore.
|
730 |
if ( ! in_array( $options['type'], array_keys( $registered_columns ) ) ) {
|
735 |
$column = clone $registered_columns[ $options['type'] ];
|
736 |
$column->set_clone( $options['clone'] );
|
737 |
|
738 |
+
// merge default options with stored
|
739 |
+
$column->options = (object) array_merge( (array) $column->options, $options );
|
|
|
|
|
|
|
740 |
|
741 |
$column->sanitize_label();
|
742 |
|
745 |
|
746 |
// In case of an enabled plugin, we will add that column.
|
747 |
// When $diff contains items, it means a default column has not been stored.
|
748 |
+
if ( $diff = array_diff( array_keys( $this->default_wp_columns ), $this->get_default_stored_columns() ) ) {
|
749 |
foreach ( $diff as $name ) {
|
750 |
// because of the filter "manage_{$post_type}_posts_columns" the columns
|
751 |
+
// that are being added by CPAC will also appear in the $this->default_wp_columns.
|
752 |
// this will filter out those columns.
|
753 |
if ( isset( $columns[ $name ] ) ) {
|
754 |
continue;
|
764 |
}
|
765 |
} // When nothing has been saved yet, we return the default WP columns.
|
766 |
else {
|
767 |
+
foreach ( array_keys( $this->default_wp_columns ) as $name ) {
|
768 |
if ( isset( $registered_columns[ $name ] ) ) {
|
769 |
$columns[ $name ] = clone $registered_columns[ $name ];
|
770 |
}
|
771 |
}
|
772 |
|
773 |
+
/**te
|
774 |
* Filter the columns that should be loaded if there were no stored columns
|
775 |
*
|
776 |
* @since 2.2.4
|
881 |
return add_query_arg( array( 'page' => 'codepress-admin-columns', 'cpac_key' => $this->key ), admin_url( 'options-general.php' ) );
|
882 |
}
|
883 |
|
884 |
+
|
885 |
/**
|
886 |
+
* @deprecated deprecated since version 2.4.9
|
|
|
|
|
|
|
887 |
*/
|
888 |
+
public function is_columns_screen(){
|
889 |
+
_deprecated_function( 'is_columns_screen', '2.4.9', 'is_current_screen' );
|
890 |
+
return $this->is_current_screen();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
891 |
}
|
892 |
|
893 |
/**
|
classes/storage_model/comment.php
CHANGED
@@ -7,13 +7,13 @@ class CPAC_Storage_Model_Comment extends CPAC_Storage_Model {
|
|
7 |
|
8 |
public function __construct() {
|
9 |
|
10 |
-
$this->key
|
11 |
-
$this->label
|
12 |
$this->singular_label = __( 'Comment' );
|
13 |
-
$this->type
|
14 |
-
$this->meta_type
|
15 |
-
$this->page
|
16 |
-
$this->menu_type
|
17 |
|
18 |
parent::__construct();
|
19 |
}
|
@@ -27,17 +27,6 @@ class CPAC_Storage_Model_Comment extends CPAC_Storage_Model {
|
|
27 |
add_action( 'manage_comments_custom_column', array( $this, 'manage_value' ), 100, 2 );
|
28 |
}
|
29 |
|
30 |
-
public function is_current_screen() {
|
31 |
-
$is_current_screen = parent::is_current_screen();
|
32 |
-
if ( ! $is_current_screen ) {
|
33 |
-
if ( ! empty( $_REQUEST['_ajax_nonce-replyto-comment'] ) && wp_verify_nonce( $_REQUEST['_ajax_nonce-replyto-comment'], 'replyto-comment' ) ) {
|
34 |
-
$is_current_screen = true;
|
35 |
-
}
|
36 |
-
}
|
37 |
-
|
38 |
-
return $is_current_screen;
|
39 |
-
}
|
40 |
-
|
41 |
public function get_default_column_names() {
|
42 |
return array( 'cb', 'author', 'comment', 'response' );
|
43 |
}
|
7 |
|
8 |
public function __construct() {
|
9 |
|
10 |
+
$this->key = 'wp-comments';
|
11 |
+
$this->label = __( 'Comments' );
|
12 |
$this->singular_label = __( 'Comment' );
|
13 |
+
$this->type = 'comment';
|
14 |
+
$this->meta_type = 'comment';
|
15 |
+
$this->page = 'edit-comments';
|
16 |
+
$this->menu_type = 'other';
|
17 |
|
18 |
parent::__construct();
|
19 |
}
|
27 |
add_action( 'manage_comments_custom_column', array( $this, 'manage_value' ), 100, 2 );
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
public function get_default_column_names() {
|
31 |
return array( 'cb', 'author', 'comment', 'response' );
|
32 |
}
|
classes/storage_model/post.php
CHANGED
@@ -4,23 +4,20 @@ class CPAC_Storage_Model_Post extends CPAC_Storage_Model {
|
|
4 |
|
5 |
public $post_type;
|
6 |
|
7 |
-
private $post_type_object;
|
8 |
-
|
9 |
/**
|
10 |
* @since 2.0
|
11 |
*/
|
12 |
public function __construct( $post_type ) {
|
13 |
|
14 |
-
$this->
|
15 |
-
|
16 |
-
$this->key = $this->post_type;
|
17 |
-
$this->label = $this->post_type_object->labels->name;
|
18 |
-
$this->singular_label = $this->post_type_object->labels->singular_name;
|
19 |
$this->type = 'post';
|
20 |
$this->meta_type = 'post';
|
21 |
$this->page = 'edit';
|
22 |
$this->menu_type = 'post';
|
23 |
|
|
|
|
|
24 |
parent::__construct();
|
25 |
}
|
26 |
|
@@ -67,11 +64,12 @@ class CPAC_Storage_Model_Post extends CPAC_Storage_Model {
|
|
67 |
}
|
68 |
|
69 |
/**
|
70 |
-
* @since 2.
|
71 |
*/
|
72 |
-
private function
|
73 |
-
$
|
74 |
-
$this->
|
|
|
75 |
}
|
76 |
|
77 |
/**
|
@@ -93,7 +91,8 @@ class CPAC_Storage_Model_Post extends CPAC_Storage_Model {
|
|
93 |
// Run WordPress native actions to display column content
|
94 |
if ( is_post_type_hierarchical( $this->post_type ) ) {
|
95 |
do_action( 'manage_pages_custom_column', $column, $id );
|
96 |
-
}
|
|
|
97 |
do_action( 'manage_posts_custom_column', $column, $id );
|
98 |
}
|
99 |
|
@@ -151,16 +150,9 @@ class CPAC_Storage_Model_Post extends CPAC_Storage_Model {
|
|
151 |
* @since 2.2
|
152 |
*/
|
153 |
public function is_current_screen() {
|
|
|
154 |
|
155 |
-
$
|
156 |
-
|
157 |
-
if ( ! $is_current_screen ) {
|
158 |
-
if ( ! empty( $_REQUEST['_inline_edit'] ) && wp_verify_nonce( $_REQUEST['_inline_edit'], 'inlineeditnonce' ) ) {
|
159 |
-
$is_current_screen = true;
|
160 |
-
}
|
161 |
-
}
|
162 |
-
|
163 |
-
return $is_current_screen;
|
164 |
}
|
165 |
|
166 |
/**
|
@@ -244,7 +236,8 @@ class CPAC_Storage_Model_Post extends CPAC_Storage_Model {
|
|
244 |
ob_start();
|
245 |
$this->manage_value( $column_name, $post_id );
|
246 |
ob_end_clean();
|
247 |
-
}
|
|
|
248 |
$this->manage_value( $column_name, $post_id );
|
249 |
}
|
250 |
}
|
4 |
|
5 |
public $post_type;
|
6 |
|
|
|
|
|
7 |
/**
|
8 |
* @since 2.0
|
9 |
*/
|
10 |
public function __construct( $post_type ) {
|
11 |
|
12 |
+
$this->key = $post_type;
|
13 |
+
$this->post_type = $post_type;
|
|
|
|
|
|
|
14 |
$this->type = 'post';
|
15 |
$this->meta_type = 'post';
|
16 |
$this->page = 'edit';
|
17 |
$this->menu_type = 'post';
|
18 |
|
19 |
+
$this->set_labels();
|
20 |
+
|
21 |
parent::__construct();
|
22 |
}
|
23 |
|
64 |
}
|
65 |
|
66 |
/**
|
67 |
+
* @since 2.7.2
|
68 |
*/
|
69 |
+
private function set_labels() {
|
70 |
+
$post_type_object = get_post_type_object( $this->post_type );
|
71 |
+
$this->label = $post_type_object->labels->name;
|
72 |
+
$this->singular_label = $post_type_object->labels->singular_name;
|
73 |
}
|
74 |
|
75 |
/**
|
91 |
// Run WordPress native actions to display column content
|
92 |
if ( is_post_type_hierarchical( $this->post_type ) ) {
|
93 |
do_action( 'manage_pages_custom_column', $column, $id );
|
94 |
+
}
|
95 |
+
else {
|
96 |
do_action( 'manage_posts_custom_column', $column, $id );
|
97 |
}
|
98 |
|
150 |
* @since 2.2
|
151 |
*/
|
152 |
public function is_current_screen() {
|
153 |
+
$post_type = isset( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : 'post';
|
154 |
|
155 |
+
return ( $this->post_type === $post_type ) && parent::is_current_screen();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
}
|
157 |
|
158 |
/**
|
236 |
ob_start();
|
237 |
$this->manage_value( $column_name, $post_id );
|
238 |
ob_end_clean();
|
239 |
+
}
|
240 |
+
else {
|
241 |
$this->manage_value( $column_name, $post_id );
|
242 |
}
|
243 |
}
|
classes/storage_model/user.php
CHANGED
@@ -7,13 +7,13 @@ class CPAC_Storage_Model_User extends CPAC_Storage_Model {
|
|
7 |
*/
|
8 |
public function __construct() {
|
9 |
|
10 |
-
$this->key
|
11 |
-
$this->label
|
12 |
$this->singular_label = __( 'User' );
|
13 |
-
$this->type
|
14 |
-
$this->meta_type
|
15 |
-
$this->page
|
16 |
-
$this->menu_type
|
17 |
|
18 |
parent::__construct();
|
19 |
}
|
@@ -27,6 +27,13 @@ class CPAC_Storage_Model_User extends CPAC_Storage_Model {
|
|
27 |
add_filter( 'manage_users_custom_column', array( $this, 'manage_value_callback' ), 100, 3 );
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
/**
|
31 |
* @since 2.4.7
|
32 |
*/
|
@@ -55,7 +62,7 @@ class CPAC_Storage_Model_User extends CPAC_Storage_Model {
|
|
55 |
do_action( "cac/columns/default/storage_key={$this->key}" );
|
56 |
|
57 |
// get columns
|
58 |
-
$table
|
59 |
$columns = (array) $table->get_columns();
|
60 |
|
61 |
if ( cac_is_setting_screen() ) {
|
7 |
*/
|
8 |
public function __construct() {
|
9 |
|
10 |
+
$this->key = 'wp-users';
|
11 |
+
$this->label = __( 'Users' );
|
12 |
$this->singular_label = __( 'User' );
|
13 |
+
$this->type = 'user';
|
14 |
+
$this->meta_type = 'user';
|
15 |
+
$this->page = 'users';
|
16 |
+
$this->menu_type = 'other';
|
17 |
|
18 |
parent::__construct();
|
19 |
}
|
27 |
add_filter( 'manage_users_custom_column', array( $this, 'manage_value_callback' ), 100, 3 );
|
28 |
}
|
29 |
|
30 |
+
/**
|
31 |
+
* @since 2.4.10
|
32 |
+
*/
|
33 |
+
public function is_current_screen() {
|
34 |
+
return ! is_network_admin() && parent::is_current_screen();
|
35 |
+
}
|
36 |
+
|
37 |
/**
|
38 |
* @since 2.4.7
|
39 |
*/
|
62 |
do_action( "cac/columns/default/storage_key={$this->key}" );
|
63 |
|
64 |
// get columns
|
65 |
+
$table = _get_list_table( 'WP_Users_List_Table', array( 'screen' => 'users' ) );
|
66 |
$columns = (array) $table->get_columns();
|
67 |
|
68 |
if ( cac_is_setting_screen() ) {
|
codepress-admin-columns.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Admin Columns
|
4 |
-
Version: 2.4.
|
5 |
Description: Customize columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
|
6 |
Author: AdminColumns.com
|
7 |
Author URI: https://www.admincolumns.com
|
@@ -10,7 +10,7 @@ Text Domain: codepress-admin-columns
|
|
10 |
Domain Path: /languages
|
11 |
License: GPLv2
|
12 |
|
13 |
-
Copyright 2011-
|
14 |
|
15 |
This program is free software; you can redistribute it and/or modify
|
16 |
it under the terms of the GNU General Public License version 2 as published by
|
@@ -32,7 +32,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
32 |
}
|
33 |
|
34 |
// Plugin information
|
35 |
-
define( 'CPAC_VERSION', '2.4.
|
36 |
define( 'CPAC_UPGRADE_VERSION', '2.0.0' ); // Latest version which requires an upgrade
|
37 |
define( 'CPAC_URL', plugin_dir_url( __FILE__ ) );
|
38 |
define( 'CPAC_DIR', plugin_dir_path( __FILE__ ) );
|
@@ -215,6 +215,7 @@ class CPAC {
|
|
215 |
foreach ( $this->exported_columns as $model => $columns ) {
|
216 |
if ( $storage_model = $this->get_storage_model( $model ) ) {
|
217 |
$storage_model->set_stored_columns( $columns );
|
|
|
218 |
}
|
219 |
}
|
220 |
}
|
@@ -336,6 +337,7 @@ class CPAC {
|
|
336 |
foreach ( $this->storage_models as $storage_model ) {
|
337 |
if ( $storage_model->is_current_screen() ) {
|
338 |
$this->current_storage_model = $storage_model;
|
|
|
339 |
}
|
340 |
}
|
341 |
}
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Admin Columns
|
4 |
+
Version: 2.4.10
|
5 |
Description: Customize columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
|
6 |
Author: AdminColumns.com
|
7 |
Author URI: https://www.admincolumns.com
|
10 |
Domain Path: /languages
|
11 |
License: GPLv2
|
12 |
|
13 |
+
Copyright 2011-2016 AdminColumns.com info@admincolumns.com
|
14 |
|
15 |
This program is free software; you can redistribute it and/or modify
|
16 |
it under the terms of the GNU General Public License version 2 as published by
|
32 |
}
|
33 |
|
34 |
// Plugin information
|
35 |
+
define( 'CPAC_VERSION', '2.4.10' ); // Current plugin version
|
36 |
define( 'CPAC_UPGRADE_VERSION', '2.0.0' ); // Latest version which requires an upgrade
|
37 |
define( 'CPAC_URL', plugin_dir_url( __FILE__ ) );
|
38 |
define( 'CPAC_DIR', plugin_dir_path( __FILE__ ) );
|
215 |
foreach ( $this->exported_columns as $model => $columns ) {
|
216 |
if ( $storage_model = $this->get_storage_model( $model ) ) {
|
217 |
$storage_model->set_stored_columns( $columns );
|
218 |
+
$storage_model->enable_php_export();
|
219 |
}
|
220 |
}
|
221 |
}
|
337 |
foreach ( $this->storage_models as $storage_model ) {
|
338 |
if ( $storage_model->is_current_screen() ) {
|
339 |
$this->current_storage_model = $storage_model;
|
340 |
+
break;
|
341 |
}
|
342 |
}
|
343 |
}
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: codepress, tschutter, davidmosterd, engelen, dungengronovius
|
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZDZRSYLQ4Z76J
|
4 |
Tags: plugins, wordpress, admin, column, columns, custom columns, custom fields, image, dashboard, sortable, filters, posts, media, users, pages, posttypes, manage columns, wp-admin
|
5 |
Requires at least: 3.5
|
6 |
-
Tested up to: 4.4.
|
7 |
-
Stable tag: 2.4.
|
8 |
|
9 |
Customise columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
|
10 |
|
@@ -67,25 +67,29 @@ Admin Columns can change your post (posts, pages and custom post types), user, c
|
|
67 |
* Comment Count
|
68 |
* Comment Status
|
69 |
* Comments
|
|
|
70 |
* Custom Field
|
71 |
-
* Date
|
|
|
|
|
72 |
* Excerpt
|
73 |
* Featured Image
|
|
|
74 |
* ID
|
75 |
* Modified
|
76 |
* Order
|
77 |
* Page Template
|
78 |
* Parent
|
|
|
79 |
* Permalink
|
80 |
* Ping Status
|
81 |
* Post Format
|
82 |
* Roles
|
|
|
83 |
* Slug
|
84 |
* Status
|
85 |
* Sticky
|
86 |
-
* Tags
|
87 |
* Taxonomy
|
88 |
-
* Title
|
89 |
* Word Count
|
90 |
|
91 |
= User columns =
|
@@ -101,7 +105,6 @@ Admin Columns can change your post (posts, pages and custom post types), user, c
|
|
101 |
* Name
|
102 |
* Nickname
|
103 |
* Post Count
|
104 |
-
* Posts
|
105 |
* Registered Date
|
106 |
* Role
|
107 |
* URL
|
@@ -111,11 +114,10 @@ Admin Columns can change your post (posts, pages and custom post types), user, c
|
|
111 |
|
112 |
* Actions
|
113 |
* Alternate Text
|
114 |
-
*
|
|
|
115 |
* Caption
|
116 |
-
* Comments
|
117 |
* Custom Field
|
118 |
-
* Date
|
119 |
* Description
|
120 |
* Dimensions
|
121 |
* EXIF Data
|
@@ -124,36 +126,32 @@ Admin Columns can change your post (posts, pages and custom post types), user, c
|
|
124 |
* File Size
|
125 |
* Full Path
|
126 |
* Height
|
127 |
-
* Icon
|
128 |
* ID
|
129 |
* Mime Type
|
130 |
* Taxonomy
|
131 |
-
* Uploaded To
|
132 |
* Width
|
133 |
|
134 |
= Comment columns =
|
135 |
|
136 |
* Actions
|
137 |
-
*
|
|
|
138 |
* Author
|
139 |
-
*
|
140 |
-
* Comments
|
141 |
* Custom Field
|
|
|
|
|
|
|
|
|
142 |
* Date
|
143 |
-
*
|
144 |
-
*
|
145 |
-
* EXIF Data
|
146 |
-
* File
|
147 |
-
* File Name
|
148 |
-
* File Size
|
149 |
-
* Full Path
|
150 |
-
* Height
|
151 |
-
* Icon
|
152 |
* ID
|
153 |
-
*
|
154 |
-
*
|
155 |
-
*
|
156 |
-
*
|
|
|
157 |
|
158 |
= Docs & Support =
|
159 |
Is this the first time you're using Admin Columns? Check out our Getting Started guide.
|
@@ -212,6 +210,14 @@ You can find a list of the available actions and filters (and examples on how to
|
|
212 |
|
213 |
== Changelog ==
|
214 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
= 2.4.9 =
|
216 |
* [Added] Display format Url added to Custom Fields
|
217 |
* [Added] Allow the use of before and after fields for all columns. Use add_filter( 'cac/column/properties/use_before_after', '__return_true' ).
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZDZRSYLQ4Z76J
|
4 |
Tags: plugins, wordpress, admin, column, columns, custom columns, custom fields, image, dashboard, sortable, filters, posts, media, users, pages, posttypes, manage columns, wp-admin
|
5 |
Requires at least: 3.5
|
6 |
+
Tested up to: 4.4.2
|
7 |
+
Stable tag: 2.4.10
|
8 |
|
9 |
Customise columns on the administration screens for post(types), pages, media, comments, links and users with an easy to use drag-and-drop interface.
|
10 |
|
67 |
* Comment Count
|
68 |
* Comment Status
|
69 |
* Comments
|
70 |
+
* Content
|
71 |
* Custom Field
|
72 |
+
* Date Published
|
73 |
+
* Page Depth
|
74 |
+
* Estimated Reading Time
|
75 |
* Excerpt
|
76 |
* Featured Image
|
77 |
+
* Formats
|
78 |
* ID
|
79 |
* Modified
|
80 |
* Order
|
81 |
* Page Template
|
82 |
* Parent
|
83 |
+
* Path
|
84 |
* Permalink
|
85 |
* Ping Status
|
86 |
* Post Format
|
87 |
* Roles
|
88 |
+
* Shortcodes
|
89 |
* Slug
|
90 |
* Status
|
91 |
* Sticky
|
|
|
92 |
* Taxonomy
|
|
|
93 |
* Word Count
|
94 |
|
95 |
= User columns =
|
105 |
* Name
|
106 |
* Nickname
|
107 |
* Post Count
|
|
|
108 |
* Registered Date
|
109 |
* Role
|
110 |
* URL
|
114 |
|
115 |
* Actions
|
116 |
* Alternate Text
|
117 |
+
* Attached To
|
118 |
+
* Available Sizes
|
119 |
* Caption
|
|
|
120 |
* Custom Field
|
|
|
121 |
* Description
|
122 |
* Dimensions
|
123 |
* EXIF Data
|
126 |
* File Size
|
127 |
* Full Path
|
128 |
* Height
|
|
|
129 |
* ID
|
130 |
* Mime Type
|
131 |
* Taxonomy
|
|
|
132 |
* Width
|
133 |
|
134 |
= Comment columns =
|
135 |
|
136 |
* Actions
|
137 |
+
* Agent
|
138 |
+
* Approved
|
139 |
* Author
|
140 |
+
* Avatar
|
|
|
141 |
* Custom Field
|
142 |
+
* Email
|
143 |
+
* IP
|
144 |
+
* Name
|
145 |
+
* URL
|
146 |
* Date
|
147 |
+
* Date GMT
|
148 |
+
* Excerpt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
* ID
|
150 |
+
* Post
|
151 |
+
* Reply To
|
152 |
+
* Type
|
153 |
+
* User
|
154 |
+
* Word Count
|
155 |
|
156 |
= Docs & Support =
|
157 |
Is this the first time you're using Admin Columns? Check out our Getting Started guide.
|
210 |
|
211 |
== Changelog ==
|
212 |
|
213 |
+
= 2.4.10 =
|
214 |
+
* [Fixed] Data:image sources for images are supported in labels
|
215 |
+
* [Fixed] Cloned columns no longer has the wrong options when stored
|
216 |
+
* [Fixed] Created deprecated function for is_columns_screen()
|
217 |
+
* [Fixed] The method get_current_storage_model returns the first occurrence instead of running the entire array of storage modals
|
218 |
+
* [Fixed] The storage_model object should have the init_manage_columns method to properly load the columns heading and values
|
219 |
+
* [Fixed] The storage_model object can now be used within sub pages
|
220 |
+
|
221 |
= 2.4.9 =
|
222 |
* [Added] Display format Url added to Custom Fields
|
223 |
* [Added] Allow the use of before and after fields for all columns. Use add_filter( 'cac/column/properties/use_before_after', '__return_true' ).
|