WP-Table Reloaded - Version 1.9.4

Version Description

This upgrade includes an important bugfix and removes the TableTools. It is a strongly recommended maintenance release.

Download this release

Release Info

Developer TobiasBg
Plugin Icon wp plugin WP-Table Reloaded
Version 1.9.4
Comparing to
See all releases

Code changes from version 1.9.3 to 1.9.4

Files changed (40) hide show
  1. admin/admin-script.dev.js +7 -9
  2. admin/admin-script.js +21 -1
  3. classes/helper.class.php +3 -3
  4. classes/render.class.php +4 -11
  5. controllers/controller-admin.php +18 -11
  6. controllers/controller-base.php +0 -8
  7. controllers/controller-frontend.php +8 -46
  8. js/tabletools/images/copy.png +0 -0
  9. js/tabletools/images/copy_hover.png +0 -0
  10. js/tabletools/images/csv.png +0 -0
  11. js/tabletools/images/csv_hover.png +0 -0
  12. js/tabletools/images/index.php +0 -3
  13. js/tabletools/images/print.png +0 -0
  14. js/tabletools/images/print_hover.png +0 -0
  15. js/tabletools/images/xls.png +0 -0
  16. js/tabletools/images/xls_hover.png +0 -0
  17. js/tabletools/index.php +0 -3
  18. js/tabletools/tabletools.css +0 -105
  19. js/tabletools/tabletools.js +0 -735
  20. js/tabletools/tabletools.min.js +0 -28
  21. js/tabletools/zeroclipboard.js +0 -340
  22. js/tabletools/zeroclipboard.swf +0 -0
  23. languages/wp-table-reloaded-be_BY.po +2 -2
  24. languages/wp-table-reloaded-bg_BG.mo +0 -0
  25. languages/wp-table-reloaded-bg_BG.po +0 -0
  26. languages/wp-table-reloaded-cs_CZ.po +1 -1
  27. languages/wp-table-reloaded-de_DE.mo +0 -0
  28. languages/wp-table-reloaded-de_DE.po +1631 -1636
  29. languages/wp-table-reloaded-fi.po +2 -2
  30. languages/wp-table-reloaded-fi_FI.po +2 -2
  31. languages/wp-table-reloaded-sq_AL.po +4 -4
  32. languages/wp-table-reloaded-sv_SE.po +2 -2
  33. languages/wp-table-reloaded-tr_TR.po +3 -3
  34. languages/wp-table-reloaded-ua_UA.po +1 -1
  35. languages/wp-table-reloaded.pot +1146 -1140
  36. readme.txt +23 -21
  37. views/view-about.php +2 -2
  38. views/view-edit.php +4 -14
  39. views/view-options.php +1 -2
  40. wp-table-reloaded.php +3 -3
admin/admin-script.dev.js CHANGED
@@ -28,7 +28,7 @@ jQuery(document).ready( function( $ ) {
28
}
29
return false;
30
} );
31
-
32
$( '#a-hide-columns' ).click( function() {
33
var cols_selected = $( '#table_contents .table-foot :checked' ).length;
34
if ( cols_selected == 0 ) {
@@ -53,7 +53,7 @@ jQuery(document).ready( function( $ ) {
53
}
54
return false;
55
} );
56
-
57
$( '#button-insert-rows' ).click( function() {
58
var rows_selected = $( '#table_contents tr:not(".table-foot") :checked' ).length;
59
if ( rows_selected == 0 ) {
@@ -175,14 +175,12 @@ jQuery(document).ready( function( $ ) {
175
$( '#table_options_use_tablesorter' ).change( function() {
176
if( this.checked ) {
177
$( '.wp-table-reloaded-datatables-options input' ).removeAttr( 'disabled' );
178
- if ( !WP_Table_Reloaded_Admin.option_tabletools_active )
179
- $( '#table_options_datatables_tabletools' ).attr( 'disabled', 'disabled' );
180
$( '#table_options_datatables_paginate' ).change();
181
} else {
182
$( '.wp-table-reloaded-datatables-options input' ).attr( 'disabled', 'disabled' );
183
}
184
} );
185
-
186
$( '#table_options_datatables_paginate' ).change( function() {
187
if( this.checked ) {
188
$( '#table_options_datatables_paginate_entries' ).removeAttr( 'disabled' );
@@ -311,7 +309,7 @@ jQuery(document).ready( function( $ ) {
311
}
312
}
313
} );
314
-
315
$( '#button-delete-columns' ).click( function() {
316
var cols_cb = $( '#table_contents .table-foot :checkbox' ).length;
317
var cols_selected = $( '#table_contents .table-foot :checked' ).length;
@@ -328,7 +326,7 @@ jQuery(document).ready( function( $ ) {
328
}
329
}
330
} );
331
-
332
$( 'a.import_wptable_link' ).click( function() {
333
return confirm( WP_Table_Reloaded_Admin.str_ImportwpTableLink );
334
} );
@@ -353,7 +351,7 @@ jQuery(document).ready( function( $ ) {
353
var dummy = prompt( WP_Table_Reloaded_Admin.str_TableShortcodeMessage, $(this).attr('title') );
354
return false;
355
} );
356
-
357
// toggling of boxes
358
$( '.postbox h3, .postbox .handlediv' ).click( function() {
359
$( $(this).parent().get(0) ).toggleClass('closed');
@@ -363,7 +361,7 @@ jQuery(document).ready( function( $ ) {
363
function set_table_data_changed() {
364
if ( ! WP_Table_Reloaded_Admin.option_show_exit_warning )
365
return;
366
-
367
window.onbeforeunload = function() {
368
return WP_Table_Reloaded_Admin.str_saveAlert;
369
};
28
}
29
return false;
30
} );
31
+
32
$( '#a-hide-columns' ).click( function() {
33
var cols_selected = $( '#table_contents .table-foot :checked' ).length;
34
if ( cols_selected == 0 ) {
53
}
54
return false;
55
} );
56
+
57
$( '#button-insert-rows' ).click( function() {
58
var rows_selected = $( '#table_contents tr:not(".table-foot") :checked' ).length;
59
if ( rows_selected == 0 ) {
175
$( '#table_options_use_tablesorter' ).change( function() {
176
if( this.checked ) {
177
$( '.wp-table-reloaded-datatables-options input' ).removeAttr( 'disabled' );
178
$( '#table_options_datatables_paginate' ).change();
179
} else {
180
$( '.wp-table-reloaded-datatables-options input' ).attr( 'disabled', 'disabled' );
181
}
182
} );
183
+
184
$( '#table_options_datatables_paginate' ).change( function() {
185
if( this.checked ) {
186
$( '#table_options_datatables_paginate_entries' ).removeAttr( 'disabled' );
309
}
310
}
311
} );
312
+
313
$( '#button-delete-columns' ).click( function() {
314
var cols_cb = $( '#table_contents .table-foot :checkbox' ).length;
315
var cols_selected = $( '#table_contents .table-foot :checked' ).length;
326
}
327
}
328
} );
329
+
330
$( 'a.import_wptable_link' ).click( function() {
331
return confirm( WP_Table_Reloaded_Admin.str_ImportwpTableLink );
332
} );
351
var dummy = prompt( WP_Table_Reloaded_Admin.str_TableShortcodeMessage, $(this).attr('title') );
352
return false;
353
} );
354
+
355
// toggling of boxes
356
$( '.postbox h3, .postbox .handlediv' ).click( function() {
357
$( $(this).parent().get(0) ).toggleClass('closed');
361
function set_table_data_changed() {
362
if ( ! WP_Table_Reloaded_Admin.option_show_exit_warning )
363
return;
364
+
365
window.onbeforeunload = function() {
366
return WP_Table_Reloaded_Admin.str_saveAlert;
367
};
admin/admin-script.js CHANGED
@@ -1 +1,21 @@
1
- jQuery(document).ready(function(c){c("#a-hide-rows").click(function(){var h=c('#table_contents tr:not(".table-foot") :checked').length;if(h==0){alert(WP_Table_Reloaded_Admin.str_UnHideRowsNoSelection)}else{c('#table_contents tr:not(".table-foot") :checked').removeAttr("checked").next().val(true).parents("tr").addClass("row-hidden");a()}return false});c("#a-unhide-rows").click(function(){var h=c('#table_contents tr:not(".table-foot") :checked').length;if(h==0){alert(WP_Table_Reloaded_Admin.str_UnHideRowsNoSelection)}else{c('#table_contents tr:not(".table-foot") :checked').removeAttr("checked").next().val(false).parents("tr").removeClass("row-hidden");a()}return false});c("#a-hide-columns").click(function(){var h=c("#table_contents .table-foot :checked").length;if(h==0){alert(WP_Table_Reloaded_Admin.str_UnHideColsNoSelection)}else{c("#table_contents .table-foot :checked").removeAttr("checked").next().val(true).each(function(){c("#table_contents ."+this.id).addClass("column-hidden")});a()}return false});c("#a-unhide-columns").click(function(){var h=c("#table_contents .table-foot :checked").length;if(h==0){alert(WP_Table_Reloaded_Admin.str_UnHideColsNoSelection)}else{c("#table_contents .table-foot :checked").removeAttr("checked").next().val(false).each(function(){c("#table_contents ."+c(this).attr("id")).removeClass("column-hidden")});a()}return false});c("#button-insert-rows").click(function(){var h=c('#table_contents tr:not(".table-foot") :checked').length;if(h==0){alert(WP_Table_Reloaded_Admin.str_InsertRowsNoSelection);return false}else{return true}});c("#button-insert-columns").click(function(){var h=c("#table_contents .table-foot :checked").length;if(h==0){alert(WP_Table_Reloaded_Admin.str_InsertColsNoSelection);return false}else{return true}});function e(h){c(this).val(h.data.span_type);c("#table_contents").undelegate("textarea","click",e);a()}c("#a-add-colspan").click(function(){if(confirm(WP_Table_Reloaded_Admin.str_DataManipulationAddColspan)){c("#table_contents").delegate("textarea","click",{span_type:"#colspan#"},e)}return false});c("#a-add-rowspan").click(function(){if(confirm(WP_Table_Reloaded_Admin.str_DataManipulationAddRowspan)){c("#table_contents").delegate("textarea","click",{span_type:"#rowspan#"},e)}return false});var d=c(null);if(WP_Table_Reloaded_Admin.option_growing_textareas){c("#table_contents").delegate("textarea","focus",function(){d.removeClass("focus");d=c(this).closest("tr").addClass("focus")})}c("#options_custom_css").one("focus",function(){c(this).addClass("focus")});c("#export_format").change(function(){if("csv"==c(this).val()){c(".tr-export-delimiter").show()}else{c(".tr-export-delimiter").hide()}}).change();var g=c(".wp-table-reloaded-table-information #table_id").val();c(".wp-table-reloaded-table-information #table_id").change(function(){if(g!=c(this).val()){if(confirm(WP_Table_Reloaded_Admin.str_ChangeTableID)){g=c(this).val();a()}else{c(this).val(g)}}});c(".tr-import-addreplace input").click(function(){if("replace"==c(".tr-import-addreplace input:checked").val()){c(".tr-import-addreplace-table").show()}else{c(".tr-import-addreplace-table").hide()}});c(".tr-import-addreplace input:checked").click();c(".tr-import-from input").click(function(){c(".tr-import-file-upload, .tr-import-url, .tr-import-form-field, .tr-import-server").hide();c(".tr-import-"+c(".tr-import-from input:checked").val()).show()});c(".tr-import-from input:checked").click();c("#options_use_custom_css").change(function(){if(c(this).attr("checked")){c("#options_custom_css").removeAttr("disabled")}else{c("#options_custom_css").attr("disabled","disabled")}});c("#options_enable_tablesorter").change(function(){if(c(this).attr("checked")){c("#options_tablesorter_script").removeAttr("disabled")}else{c("#options_tablesorter_script").attr("disabled","disabled")}});if(WP_Table_Reloaded_Admin.option_tablesorter_enabled&&WP_Table_Reloaded_Admin.option_datatables_active){c("#table_options_first_row_th").change(function(){if(c(this).attr("checked")){c("#table_options_use_tablesorter").removeAttr("disabled").change()}else{c("#table_options_use_tablesorter").attr("disabled","disabled");c(".wp-table-reloaded-datatables-options input").attr("disabled","disabled")}});c("#table_options_use_tablesorter").change(function(){if(c(this).attr("checked")){c(".wp-table-reloaded-datatables-options input").removeAttr("disabled");if(!WP_Table_Reloaded_Admin.option_tabletools_active){c("#table_options_datatables_tabletools").attr("disabled","disabled")}c("#table_options_datatables_paginate").change()}else{c(".wp-table-reloaded-datatables-options input").attr("disabled","disabled")}});c("#table_options_datatables_paginate").change(function(){if(c(this).attr("checked")){c("#table_options_datatables_paginate_entries").removeAttr("disabled")}else{c("#table_options_datatables_paginate_entries").attr("disabled","disabled")}})}else{if(WP_Table_Reloaded_Admin.option_tablesorter_enabled){c("#table_options_first_row_th").change(function(){if(c(this).attr("checked")){c("#table_options_use_tablesorter").removeAttr("disabled")}else{c("#table_options_use_tablesorter").attr("disabled","disabled")}})}}c("#table_options_print_name, #table_options_print_description").change(function(){if(c(this).attr("checked")){c("#"+this.id+"_position").removeAttr("disabled")}else{c("#"+this.id+"_position").attr("disabled","disabled")}});c("#options_uninstall_upon_deactivation").click(function(){if(c(this).attr("checked")){return confirm(WP_Table_Reloaded_Admin.str_UninstallCheckboxActivation)}});function b(h){c(this).val(c(this).val()+h.data.html);c("#table_contents").undelegate("textarea","click",b);a()}c("#a-insert-link").click(function(){var i=prompt(WP_Table_Reloaded_Admin.str_DataManipulationLinkInsertURL+":","http://");if(i){var h=prompt(WP_Table_Reloaded_Admin.str_DataManipulationLinkInsertText+":",WP_Table_Reloaded_Admin.str_DataManipulationLinkInsertText);if(h){var k="";if(WP_Table_Reloaded_Admin.option_add_target_blank_to_links){k=' target="_blank"'}var j='<a href="'+i+'"'+k+">"+h+"</a>";j=prompt(WP_Table_Reloaded_Admin.str_DataManipulationLinkInsertExplain,j);if(j){c("#table_contents").delegate("textarea","click",{html:j},b)}}}return false});function f(){edCanvas=this;c("#table_contents").undelegate("textarea","click",f);var h=c("#a-insert-image");tb_show(h.attr("title"),h.attr("href"),false);tb_my_position();c(this).blur();a()}c("#a-insert-image").click(function(){if(confirm(WP_Table_Reloaded_Admin.str_DataManipulationImageInsertThickbox)){c("#table_contents").delegate("textarea","click",f)}return false});c("#insert_custom_field_name").keyup(function(){c(this).val(c(this).val().toLowerCase().replace(/[^a-z0-9_-]/g,""))});c(".focus-blur-change").focus(function(){if(c(this).attr("title")==c(this).val()){c(this).val("")}}).blur(function(){if(""==c(this).val()){c(this).val(c(this).attr("title"))}});c("#table_custom_fields").delegate("textarea","focus",function(){c("#table_custom_fields .focus").removeClass("focus");c(this).addClass("focus")});c("input.bulk_copy_tables").click(function(){return confirm(WP_Table_Reloaded_Admin.str_BulkCopyTablesLink)});c("input.bulk_delete_tables").click(function(){return confirm(WP_Table_Reloaded_Admin.str_BulkDeleteTablesLink)});c("input.bulk_wp_table_import_tables").click(function(){return confirm(WP_Table_Reloaded_Admin.str_BulkImportwpTableTablesLink)});c("a.copy_table_link").click(function(){return confirm(WP_Table_Reloaded_Admin.str_CopyTableLink)});c("#wp-table-reloaded-list a.delete_table_link").click(function(){return confirm(WP_Table_Reloaded_Admin.str_DeleteTableLink)});c("#button-delete-rows").click(function(){var i=c('#table_contents tr:not(".table-foot") :checkbox').length-1;var h=c('#table_contents tr:not(".table-foot") :checked').length;if(h==0){alert(WP_Table_Reloaded_Admin.str_DeleteRowsFailedNoSelection);return false}else{if(i==h){alert(WP_Table_Reloaded_Admin.str_DeleteRowsFailedNotAll);return false}else{return confirm(WP_Table_Reloaded_Admin.str_DeleteRowsConfirm)}}});c("#button-delete-columns").click(function(){var h=c("#table_contents .table-foot :checkbox").length;var i=c("#table_contents .table-foot :checked").length;if(i==0){alert(WP_Table_Reloaded_Admin.str_DeleteColsFailedNoSelection);return false}else{if(h==i){alert(WP_Table_Reloaded_Admin.str_DeleteColsFailedNotAll);return false}else{return confirm(WP_Table_Reloaded_Admin.str_DeleteColsConfirm)}}});c("a.import_wptable_link").click(function(){return confirm(WP_Table_Reloaded_Admin.str_ImportwpTableLink)});c("#import_wp_table_reloaded_dump_file").click(function(){return confirm(WP_Table_Reloaded_Admin.str_ImportDumpFile)});c("#uninstall_plugin_link").click(function(){if(confirm(WP_Table_Reloaded_Admin.str_UninstallPluginLink_1)){return confirm(WP_Table_Reloaded_Admin.str_UninstallPluginLink_2)}else{return false}});c("a.cf_shortcode_link").click(function(){var h=prompt(WP_Table_Reloaded_Admin.str_CFShortcodeMessage,c(this).attr("title"));return false});c("a.table_shortcode_link").click(function(){var h=prompt(WP_Table_Reloaded_Admin.str_TableShortcodeMessage,c(this).attr("title"));return false});c(".postbox h3, .postbox .handlediv").click(function(){c(c(this).parent().get(0)).toggleClass("closed")});function a(){if(!WP_Table_Reloaded_Admin.option_show_exit_warning){return}window.onbeforeunload=function(){return WP_Table_Reloaded_Admin.str_saveAlert};c("#wp_table_reloaded_edit_table").undelegate("#table_name, textarea, .wp-table-reloaded-options input, .wp-table-reloaded-options select","change",a)}if(WP_Table_Reloaded_Admin.option_show_exit_warning){c("#wp_table_reloaded_edit_table").delegate("#table_name, textarea, .wp-table-reloaded-options input, .wp-table-reloaded-options select","change",a);c("#wp_table_reloaded_edit_table").find('input[name="submit[update]"], input[name="submit[save_back]"]').click(function(){window.onbeforeunload=null})}c("#wp_table_reloaded_edit_table").find('input[name="submit[update]"], input[name="submit[save_back]"]').click(function(){c("#wp_table_reloaded_edit_table .wp-table-reloaded-options").find("input, select").removeAttr("disabled")});tb_init("a.help-link");tb_init("a.preview-link");tb_my_position()});function send_to_editor(a){jQuery(edCanvas).val(jQuery(edCanvas).val()+a);tb_remove()}var tb_my_position;(function(a){tb_my_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.preview-link").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_my_position()})})(jQuery);
1
+ jQuery(document).ready(function(a){function d(f){a(this).val(f.data.span_type);a("#table_contents").undelegate("textarea","click",d);b()}function h(f){a(this).val(a(this).val()+f.data.html);a("#table_contents").undelegate("textarea","click",h);b()}function g(){edCanvas=this;a("#table_contents").undelegate("textarea","click",g);var f=a("#a-insert-image");tb_show(f.attr("title"),f.attr("href"),!1);tb_my_position();a(this).blur();b()}function b(){WP_Table_Reloaded_Admin.option_show_exit_warning&&(window.onbeforeunload=
2
+ function(){return WP_Table_Reloaded_Admin.str_saveAlert},a("#wp_table_reloaded_edit_table").undelegate("#table_name, textarea, .wp-table-reloaded-options input, .wp-table-reloaded-options select","change",b))}a("#a-hide-rows").click(function(){0==a('#table_contents tr:not(".table-foot") :checked').length?alert(WP_Table_Reloaded_Admin.str_UnHideRowsNoSelection):(a('#table_contents tr:not(".table-foot") :checked').removeAttr("checked").next().val(!0).parents("tr").addClass("row-hidden"),b());return!1});
3
+ a("#a-unhide-rows").click(function(){0==a('#table_contents tr:not(".table-foot") :checked').length?alert(WP_Table_Reloaded_Admin.str_UnHideRowsNoSelection):(a('#table_contents tr:not(".table-foot") :checked').removeAttr("checked").next().val(!1).parents("tr").removeClass("row-hidden"),b());return!1});a("#a-hide-columns").click(function(){0==a("#table_contents .table-foot :checked").length?alert(WP_Table_Reloaded_Admin.str_UnHideColsNoSelection):(a("#table_contents .table-foot :checked").removeAttr("checked").next().val(!0).each(function(){a("#table_contents ."+
4
+ this.id).addClass("column-hidden")}),b());return!1});a("#a-unhide-columns").click(function(){0==a("#table_contents .table-foot :checked").length?alert(WP_Table_Reloaded_Admin.str_UnHideColsNoSelection):(a("#table_contents .table-foot :checked").removeAttr("checked").next().val(!1).each(function(){a("#table_contents ."+this.id).removeClass("column-hidden")}),b());return!1});a("#button-insert-rows").click(function(){return 0==a('#table_contents tr:not(".table-foot") :checked').length?(alert(WP_Table_Reloaded_Admin.str_InsertRowsNoSelection),
5
+ !1):!0});a("#button-insert-columns").click(function(){return 0==a("#table_contents .table-foot :checked").length?(alert(WP_Table_Reloaded_Admin.str_InsertColsNoSelection),!1):!0});a("#a-add-colspan").click(function(){confirm(WP_Table_Reloaded_Admin.str_DataManipulationAddColspan)&&a("#table_contents").delegate("textarea","click",{span_type:"#colspan#"},d);return!1});a("#a-add-rowspan").click(function(){confirm(WP_Table_Reloaded_Admin.str_DataManipulationAddRowspan)&&a("#table_contents").delegate("textarea",
6
+ "click",{span_type:"#rowspan#"},d);return!1});var e=a(null);WP_Table_Reloaded_Admin.option_growing_textareas&&a("#table_contents").delegate("textarea","focus",function(){e.removeClass("focus");e=a(this).closest("tr").addClass("focus")});a("#options_custom_css").one("focus",function(){a(this).addClass("focus")});a("#export_format").change(function(){"csv"==a(this).val()?a(".tr-export-delimiter").show():a(".tr-export-delimiter").hide()}).change();var c=a(".wp-table-reloaded-table-information #table_id").val();
7
+ a(".wp-table-reloaded-table-information #table_id").change(function(){c!=a(this).val()&&(confirm(WP_Table_Reloaded_Admin.str_ChangeTableID)?(c=a(this).val(),b()):a(this).val(c))});a(".tr-import-addreplace input").click(function(){"replace"==a(".tr-import-addreplace input:checked").val()?a(".tr-import-addreplace-table").show():a(".tr-import-addreplace-table").hide()});a(".tr-import-addreplace input:checked").click();a(".tr-import-from input").click(function(){a(".tr-import-file-upload, .tr-import-url, .tr-import-form-field, .tr-import-server").hide();
8
+ a(".tr-import-"+a(".tr-import-from input:checked").val()).show()});a(".tr-import-from input:checked").click();a("#options_use_custom_css").change(function(){this.checked?a("#options_custom_css").removeAttr("disabled"):a("#options_custom_css").attr("disabled","disabled")});a("#options_enable_tablesorter").change(function(){this.checked?a("#options_tablesorter_script").removeAttr("disabled"):a("#options_tablesorter_script").attr("disabled","disabled")});WP_Table_Reloaded_Admin.option_tablesorter_enabled&&
9
+ WP_Table_Reloaded_Admin.option_datatables_active?(a("#table_options_first_row_th").change(function(){this.checked?a("#table_options_use_tablesorter").removeAttr("disabled").change():(a("#table_options_use_tablesorter").attr("disabled","disabled"),a(".wp-table-reloaded-datatables-options input").attr("disabled","disabled"))}),a("#table_options_use_tablesorter").change(function(){this.checked?(a(".wp-table-reloaded-datatables-options input").removeAttr("disabled"),a("#table_options_datatables_paginate").change()):
10
+ a(".wp-table-reloaded-datatables-options input").attr("disabled","disabled")}),a("#table_options_datatables_paginate").change(function(){this.checked?a("#table_options_datatables_paginate_entries").removeAttr("disabled"):a("#table_options_datatables_paginate_entries").attr("disabled","disabled")})):WP_Table_Reloaded_Admin.option_tablesorter_enabled&&a("#table_options_first_row_th").change(function(){this.checked?a("#table_options_use_tablesorter").removeAttr("disabled"):a("#table_options_use_tablesorter").attr("disabled",
11
+ "disabled")});a("#table_options_print_name, #table_options_print_description").change(function(){this.checked?a("#"+this.id+"_position").removeAttr("disabled"):a("#"+this.id+"_position").attr("disabled","disabled")});a("#options_uninstall_upon_deactivation").click(function(){if(this.checked)return confirm(WP_Table_Reloaded_Admin.str_UninstallCheckboxActivation)});a("#a-insert-link").click(function(){var b=prompt(WP_Table_Reloaded_Admin.str_DataManipulationLinkInsertURL+":","http://");if(b){var c=
12
+ prompt(WP_Table_Reloaded_Admin.str_DataManipulationLinkInsertText+":",WP_Table_Reloaded_Admin.str_DataManipulationLinkInsertText);if(c){var d="";WP_Table_Reloaded_Admin.option_add_target_blank_to_links&&(d=' target="_blank"');(b=prompt(WP_Table_Reloaded_Admin.str_DataManipulationLinkInsertExplain,'<a href="'+b+'"'+d+">"+c+"</a>"))&&a("#table_contents").delegate("textarea","click",{html:b},h)}}return!1});a("#a-insert-image").click(function(){confirm(WP_Table_Reloaded_Admin.str_DataManipulationImageInsertThickbox)&&
13
+ a("#table_contents").delegate("textarea","click",g);return!1});a("#insert_custom_field_name").keyup(function(){a(this).val(a(this).val().toLowerCase().replace(/[^a-z0-9_-]/g,""))});a(".focus-blur-change").focus(function(){a(this).attr("title")==a(this).val()&&a(this).val("")}).blur(function(){""==a(this).val()&&a(this).val(a(this).attr("title"))});a("#table_custom_fields").delegate("textarea","focus",function(){a("#table_custom_fields .focus").removeClass("focus");a(this).addClass("focus")});a("input.bulk_copy_tables").click(function(){return confirm(WP_Table_Reloaded_Admin.str_BulkCopyTablesLink)});
14
+ a("input.bulk_delete_tables").click(function(){return confirm(WP_Table_Reloaded_Admin.str_BulkDeleteTablesLink)});a("input.bulk_wp_table_import_tables").click(function(){return confirm(WP_Table_Reloaded_Admin.str_BulkImportwpTableTablesLink)});a("a.copy_table_link").click(function(){return confirm(WP_Table_Reloaded_Admin.str_CopyTableLink)});a("#wp-table-reloaded-list a.delete_table_link").click(function(){return confirm(WP_Table_Reloaded_Admin.str_DeleteTableLink)});a("#button-delete-rows").click(function(){var b=
15
+ a('#table_contents tr:not(".table-foot") :checkbox').length-1,c=a('#table_contents tr:not(".table-foot") :checked').length;return 0==c?(alert(WP_Table_Reloaded_Admin.str_DeleteRowsFailedNoSelection),!1):b==c?(alert(WP_Table_Reloaded_Admin.str_DeleteRowsFailedNotAll),!1):confirm(WP_Table_Reloaded_Admin.str_DeleteRowsConfirm)});a("#button-delete-columns").click(function(){var b=a("#table_contents .table-foot :checkbox").length,c=a("#table_contents .table-foot :checked").length;return 0==c?(alert(WP_Table_Reloaded_Admin.str_DeleteColsFailedNoSelection),
16
+ !1):b==c?(alert(WP_Table_Reloaded_Admin.str_DeleteColsFailedNotAll),!1):confirm(WP_Table_Reloaded_Admin.str_DeleteColsConfirm)});a("a.import_wptable_link").click(function(){return confirm(WP_Table_Reloaded_Admin.str_ImportwpTableLink)});a("#import_wp_table_reloaded_dump_file").click(function(){return confirm(WP_Table_Reloaded_Admin.str_ImportDumpFile)});a("#uninstall_plugin_link").click(function(){return confirm(WP_Table_Reloaded_Admin.str_UninstallPluginLink_1)?confirm(WP_Table_Reloaded_Admin.str_UninstallPluginLink_2):
17
+ !1});a("a.cf_shortcode_link").click(function(){prompt(WP_Table_Reloaded_Admin.str_CFShortcodeMessage,a(this).attr("title"));return!1});a("a.table_shortcode_link").click(function(){prompt(WP_Table_Reloaded_Admin.str_TableShortcodeMessage,a(this).attr("title"));return!1});a(".postbox h3, .postbox .handlediv").click(function(){a(a(this).parent().get(0)).toggleClass("closed")});WP_Table_Reloaded_Admin.option_show_exit_warning&&(a("#wp_table_reloaded_edit_table").delegate("#table_name, textarea, .wp-table-reloaded-options input, .wp-table-reloaded-options select",
18
+ "change",b),a("#wp_table_reloaded_edit_table").find('input[name="submit[update]"], input[name="submit[save_back]"]').click(function(){window.onbeforeunload=null}));a("#wp_table_reloaded_edit_table").find('input[name="submit[update]"], input[name="submit[save_back]"]').click(function(){a("#wp_table_reloaded_edit_table .wp-table-reloaded-options").find("input, select").removeAttr("disabled")});tb_init("a.help-link");tb_init("a.preview-link");tb_my_position()});
19
+ function send_to_editor(a){jQuery(edCanvas).val(jQuery(edCanvas).val()+a);tb_remove()}var tb_my_position;
20
+ (function(a){tb_my_position=function(){var d=a("#TB_window"),h=a(window).width(),g=a(window).height(),b=720<h?720:h,e=0;a("body.admin-bar").length&&(e=28);d.size()&&(d.width(b-50).height(g-45-e),a("#TB_iframeContent").width(b-50).height(g-75-e),d.css({"margin-left":"-"+parseInt((b-50)/2,10)+"px"}),"undefined"!=typeof document.body.style.maxWidth&&d.css({top:20+e+"px","margin-top":"0"}));return a("a.preview-link").each(function(){var c=a(this).attr("href");c&&(c=c.replace(/&width=[0-9]+/g,""),c=c.replace(/&height=[0-9]+/g,
21
+ ""),a(this).attr("href",c+"&width="+(b-80)+"&height="+(g-85-e)))})};a(window).resize(function(){tb_my_position()})})(jQuery);
classes/helper.class.php CHANGED
@@ -18,8 +18,8 @@ class WP_Table_Reloaded_Helper {
18
}
19
20
// ###################################################################################################################
21
- function print_header_message( $text ) {
22
- echo "<div id='message' class='updated fade'><p style='line-height:1.2;'><strong>{$text}</strong></p></div>";
23
}
24
25
// ###################################################################################################################
@@ -37,7 +37,7 @@ class WP_Table_Reloaded_Helper {
37
}
38
// ###################################################################################################################
39
function get_contextual_help_string() {
40
- $help = '<p>' . sprintf( __( 'More information about WP-Table Reloaded can be found on the <a href="%s">plugin\'s website</a> or on its page in the <a href="%s">WordPress Plugin Directory</a>.', WP_TABLE_RELOADED_TEXTDOMAIN ), 'http://tobias.baethge.com/go/wp-table-reloaded/website/', 'http://wordpress.org/extend/plugins/wp-table-reloaded/' );
41
$help .= ' ' . sprintf( __( 'For technical information, see the <a href="%s">documentation</a>.', WP_TABLE_RELOADED_TEXTDOMAIN ), 'http://tobias.baethge.com/go/wp-table-reloaded/documentation/' );
42
$help .= '<br/>' . sprintf( __( '<a href="%s">Support</a> is provided through the <a href="%s">WordPress Support Forums</a>.', WP_TABLE_RELOADED_TEXTDOMAIN ), 'http://tobias.baethge.com/go/wp-table-reloaded/support/', 'http://www.wordpress.org/support/' );
43
$help .= ' ' . sprintf( __( 'Before asking for support, please carefully read the <a href="%s">Frequently Asked Questions</a> where you will find answered to the most common questions, and search through the forums.', WP_TABLE_RELOADED_TEXTDOMAIN ), 'http://tobias.baethge.com/go/wp-table-reloaded/faq/' );
18
}
19
20
// ###################################################################################################################
21
+ function print_header_message( $text, $class = 'updated' ) {
22
+ echo "<div class='{$class} fade'><p style='line-height:1.2;'><strong>{$text}</strong></p></div>";
23
}
24
25
// ###################################################################################################################
37
}
38
// ###################################################################################################################
39
function get_contextual_help_string() {
40
+ $help = '<p>' . sprintf( __( 'More information about WP-Table Reloaded can be found on the <a href="%s">plugin\'s website</a> or on its page in the <a href="%s">WordPress Plugin Directory</a>.', WP_TABLE_RELOADED_TEXTDOMAIN ), 'http://tobias.baethge.com/go/wp-table-reloaded/website/', 'http://wordpress.org/plugins/wp-table-reloaded/' );
41
$help .= ' ' . sprintf( __( 'For technical information, see the <a href="%s">documentation</a>.', WP_TABLE_RELOADED_TEXTDOMAIN ), 'http://tobias.baethge.com/go/wp-table-reloaded/documentation/' );
42
$help .= '<br/>' . sprintf( __( '<a href="%s">Support</a> is provided through the <a href="%s">WordPress Support Forums</a>.', WP_TABLE_RELOADED_TEXTDOMAIN ), 'http://tobias.baethge.com/go/wp-table-reloaded/support/', 'http://www.wordpress.org/support/' );
43
$help .= ' ' . sprintf( __( 'Before asking for support, please carefully read the <a href="%s">Frequently Asked Questions</a> where you will find answered to the most common questions, and search through the forums.', WP_TABLE_RELOADED_TEXTDOMAIN ), 'http://tobias.baethge.com/go/wp-table-reloaded/faq/' );
classes/render.class.php CHANGED
@@ -35,13 +35,6 @@ class WP_Table_Reloaded_Render {
35
var $rowspan = array();
36
var $colspan = array();
37
38
- /**
39
- * PHP4 class constructor
40
- */
41
- function WP_Table_Reloaded_Render() {
42
- // nothing to init here
43
- }
44
-
45
/**
46
* Returns the rendered HTML of a table
47
*/
@@ -76,7 +69,7 @@ class WP_Table_Reloaded_Render {
76
$name_html = "<{$print_name_html_tag} class=\"{$print_name_css_class}\">" . $this->safe_output( $table['name'] ) . "</{$print_name_html_tag}>\n";
77
$print_name_position = $this->output_options['print_name_position'];
78
$print_name_position = apply_filters( 'wp_table_reloaded_print_name_position', $print_name_position, $table['id'] );
79
-
80
if ( 'above' == $print_name_position )
81
$output .= $name_html;
82
}
@@ -87,7 +80,7 @@ class WP_Table_Reloaded_Render {
87
$description_html = "<{$print_description_html_tag} class=\"{$print_description_css_class}\">" . $this->safe_output( $table['description'] ) . "</{$print_description_html_tag}>\n";
88
$print_description_position = $this->output_options['print_description_position'];
89
$print_description_position = apply_filters( 'wp_table_reloaded_print_description_position', $print_description_position, $table['id'] );
90
-
91
if ( 'above' == $print_description_position )
92
$output .= $description_html;
93
}
@@ -295,9 +288,9 @@ class WP_Table_Reloaded_Render {
295
}
296
$table['data'][$row_idx] = array_merge( $row );
297
}
298
-
299
$table = apply_filters( 'wp_table_reloaded_render_table', $table, $orig_table, $this->output_options );
300
-
301
return $table;
302
}
303
35
var $rowspan = array();
36
var $colspan = array();
37
38
/**
39
* Returns the rendered HTML of a table
40
*/
69
$name_html = "<{$print_name_html_tag} class=\"{$print_name_css_class}\">" . $this->safe_output( $table['name'] ) . "</{$print_name_html_tag}>\n";
70
$print_name_position = $this->output_options['print_name_position'];
71
$print_name_position = apply_filters( 'wp_table_reloaded_print_name_position', $print_name_position, $table['id'] );
72
+
73
if ( 'above' == $print_name_position )
74
$output .= $name_html;
75
}
80
$description_html = "<{$print_description_html_tag} class=\"{$print_description_css_class}\">" . $this->safe_output( $table['description'] ) . "</{$print_description_html_tag}>\n";
81
$print_description_position = $this->output_options['print_description_position'];
82
$print_description_position = apply_filters( 'wp_table_reloaded_print_description_position', $print_description_position, $table['id'] );
83
+
84
if ( 'above' == $print_description_position )
85
$output .= $description_html;
86
}
288
}
289
$table['data'][$row_idx] = array_merge( $row );
290
}
291
+
292
$table = apply_filters( 'wp_table_reloaded_render_table', $table, $orig_table, $this->output_options );
293
+
294
return $table;
295
}
296
controllers/controller-admin.php CHANGED
@@ -61,7 +61,7 @@ class WP_Table_Reloaded_Controller_Admin extends WP_Table_Reloaded_Controller_Ba
61
'use_datatables_on_table_list' => true,
62
'add_target_blank_to_links' => false,
63
'enable_tablesorter' => true,
64
- 'tablesorter_script' => 'datatables', // others are 'datatables-tabletools', 'tablesorter', and 'tablesorter_extended'
65
'use_default_css' => true,
66
'use_custom_css' => true,
67
'custom_css' => '',
@@ -113,13 +113,6 @@ class WP_Table_Reloaded_Controller_Admin extends WP_Table_Reloaded_Controller_Ba
113
*/
114
var $page_url = '';
115
116
- /**
117
- * PHP4 class constructor, calls the PHP5 class constructor __construct()
118
- */
119
- function WP_Table_Reloaded_Controller_Admin() {
120
- $this->__construct();
121
- }
122
-
123
/**
124
* PHP5 class constructor
125
*
@@ -407,7 +400,6 @@ class WP_Table_Reloaded_Controller_Admin extends WP_Table_Reloaded_Controller_Ba
407
$table['options']['datatables_lengthchange'] = isset( $_POST['table']['options']['datatables_lengthchange'] );
408
$table['options']['datatables_filter'] = isset( $_POST['table']['options']['datatables_filter'] );
409
$table['options']['datatables_info'] = isset( $_POST['table']['options']['datatables_info'] );
410
- $table['options']['datatables_tabletools'] = isset( $_POST['table']['options']['datatables_tabletools'] );
411
$table['options']['datatables_paginate_entries'] = ( is_numeric( $table['options']['datatables_paginate_entries'] ) ) ? absint( $table['options']['datatables_paginate_entries'] ) : $this->default_table['options']['datatables_paginate_entries'];
412
// $table['options']['datatables_customcommands'] is an input type=text field that is always submitted
413
// $table['options']['print_name|description_position'] are select fields that are always submitted
@@ -1266,6 +1258,10 @@ class WP_Table_Reloaded_Controller_Admin extends WP_Table_Reloaded_Controller_Ba
1266
function load_view( $name, $params = array(), $print_submenu_navigation = true ) {
1267
extract( $params );
1268
1269
$headlines = array(
1270
'list' => __( 'List of Tables', WP_TABLE_RELOADED_TEXTDOMAIN ) . ' &lsaquo; ' . __( 'WP-Table Reloaded', WP_TABLE_RELOADED_TEXTDOMAIN ),
1271
'add' => __( 'Add new Table', WP_TABLE_RELOADED_TEXTDOMAIN ),
@@ -1563,6 +1559,8 @@ class WP_Table_Reloaded_Controller_Admin extends WP_Table_Reloaded_Controller_Ba
1563
if ( ! version_compare( $this->options['installed_version'], WP_TABLE_RELOADED_PLUGIN_VERSION, '<' ) )
1564
return;
1565
1566
$new_options = array();
1567
1568
// 1b. step: update new default options before possibly adding them
@@ -1587,6 +1585,12 @@ class WP_Table_Reloaded_Controller_Admin extends WP_Table_Reloaded_Controller_Ba
1587
if ( 'top-level' == $this->options['admin_menu_parent_page'] )
1588
$new_options['admin_menu_parent_page'] = 'admin.php';
1589
1590
// 3. step: update installed version number, empty update message cache, set welcome message
1591
$new_options['installed_version'] = WP_TABLE_RELOADED_PLUGIN_VERSION;
1592
$new_options['update_message'] = array();
@@ -1596,6 +1600,10 @@ class WP_Table_Reloaded_Controller_Admin extends WP_Table_Reloaded_Controller_Ba
1596
$this->options = $new_options;
1597
$this->update_options();
1598
1599
// update individual tables and their options
1600
$this->tables = $this->load_tables();
1601
foreach ( $this->tables as $id => $tableoptionname ) {
@@ -1756,8 +1764,7 @@ class WP_Table_Reloaded_Controller_Admin extends WP_Table_Reloaded_Controller_Ba
1756
'option_growing_textareas' => $this->options['growing_textareas'],
1757
'option_add_target_blank_to_links' => $this->options['add_target_blank_to_links'],
1758
'option_tablesorter_enabled' => $this->options['enable_tablesorter'],
1759
- 'option_datatables_active' => $this->options['enable_tablesorter'] && ( 'datatables' == $this->options['tablesorter_script'] || 'datatables-tabletools' == $this->options['tablesorter_script'] ),
1760
- 'option_tabletools_active' => $this->options['enable_tablesorter'] && ( 'datatables-tabletools' == $this->options['tablesorter_script'] ),
1761
'l10n_print_after' => 'try{convertEntities(WP_Table_Reloaded_Admin);}catch(e){};'
1762
) );
1763
}
61
'use_datatables_on_table_list' => true,
62
'add_target_blank_to_links' => false,
63
'enable_tablesorter' => true,
64
+ 'tablesorter_script' => 'datatables', // others are 'tablesorter' and 'tablesorter_extended'
65
'use_default_css' => true,
66
'use_custom_css' => true,
67
'custom_css' => '',
113
*/
114
var $page_url = '';
115
116
/**
117
* PHP5 class constructor
118
*
400
$table['options']['datatables_lengthchange'] = isset( $_POST['table']['options']['datatables_lengthchange'] );
401
$table['options']['datatables_filter'] = isset( $_POST['table']['options']['datatables_filter'] );
402
$table['options']['datatables_info'] = isset( $_POST['table']['options']['datatables_info'] );
403
$table['options']['datatables_paginate_entries'] = ( is_numeric( $table['options']['datatables_paginate_entries'] ) ) ? absint( $table['options']['datatables_paginate_entries'] ) : $this->default_table['options']['datatables_paginate_entries'];
404
// $table['options']['datatables_customcommands'] is an input type=text field that is always submitted
405
// $table['options']['print_name|description_position'] are select fields that are always submitted
1258
function load_view( $name, $params = array(), $print_submenu_navigation = true ) {
1259
extract( $params );
1260
1261
+ // Add WP-Table Reloaded deprecation notice
1262
+ if ( current_user_can( 'install_plugins' ) )
1263
+ $this->helper->print_header_message( __( '<span style="font-size:120%">Important note: WP-Table Reloaded has been discontinued and will no longer be developed.<br /><span style="font-weight:normal">It has officially been replaced with <a href="http://wordpress.org/plugins/tablepress/">TablePress</a>, which not only fixed many problems, but also has better and new features.<br />Please <a href="http://tobias.baethge.com/2013/01/tablepress-replaces-wp-table-reloaded/" style="font-weight:bold">read this announcement</a> for more information and switch from WP-Table Reloaded to TablePress.</span></span>', WP_TABLE_RELOADED_TEXTDOMAIN ), 'error' );
1264
+
1265
$headlines = array(
1266
'list' => __( 'List of Tables', WP_TABLE_RELOADED_TEXTDOMAIN ) . ' &lsaquo; ' . __( 'WP-Table Reloaded', WP_TABLE_RELOADED_TEXTDOMAIN ),
1267
'add' => __( 'Add new Table', WP_TABLE_RELOADED_TEXTDOMAIN ),
1559
if ( ! version_compare( $this->options['installed_version'], WP_TABLE_RELOADED_PLUGIN_VERSION, '<' ) )
1560
return;
1561
1562
+ $previous_version = $this->options['installed_version'];
1563
+
1564
$new_options = array();
1565
1566
// 1b. step: update new default options before possibly adding them
1585
if ( 'top-level' == $this->options['admin_menu_parent_page'] )
1586
$new_options['admin_menu_parent_page'] = 'admin.php';
1587
1588
+ // 2f., TableTools was removed in 1.9.4
1589
+ if ( version_compare( $this->options['installed_version'] , '1.9.4', '<' ) ) {
1590
+ if ( isset( $this->options['tablesorter_script'] ) && 'datatables-tabletools' == $this->options['tablesorter_script'] )
1591
+ $new_options['tablesorter_script'] = 'datatables';
1592
+ }
1593
+
1594
// 3. step: update installed version number, empty update message cache, set welcome message
1595
$new_options['installed_version'] = WP_TABLE_RELOADED_PLUGIN_VERSION;
1596
$new_options['update_message'] = array();
1600
$this->options = $new_options;
1601
$this->update_options();
1602
1603
+ // (temporary) 5. step: Bail, if we are updating from 1.9.3 or higher, to not touch tables
1604
+ if ( version_compare( $previous_version , '1.9.3', '>=' ) )
1605
+ return;
1606
+
1607
// update individual tables and their options
1608
$this->tables = $this->load_tables();
1609
foreach ( $this->tables as $id => $tableoptionname ) {
1764
'option_growing_textareas' => $this->options['growing_textareas'],
1765
'option_add_target_blank_to_links' => $this->options['add_target_blank_to_links'],
1766
'option_tablesorter_enabled' => $this->options['enable_tablesorter'],
1767
+ 'option_datatables_active' => $this->options['enable_tablesorter'] && ( 'datatables' == $this->options['tablesorter_script'] ),
1768
'l10n_print_after' => 'try{convertEntities(WP_Table_Reloaded_Admin);}catch(e){};'
1769
) );
1770
}
controllers/controller-base.php CHANGED
@@ -68,7 +68,6 @@ class WP_Table_Reloaded_Controller_Base {
68
'datatables_lengthchange' => true,
69
'datatables_filter' => true,
70
'datatables_info' => true,
71
- 'datatables_tabletools' => false,
72
'datatables_customcommands' => ''
73
),
74
'custom_fields' => array()
@@ -86,13 +85,6 @@ class WP_Table_Reloaded_Controller_Base {
86
*/
87
var $possible_admin_menu_parent_pages = array( 'tools.php', 'admin.php', 'edit.php', 'edit.php?post_type=page', 'edit-pages.php', 'plugins.php', 'index.php', 'options-general.php' );
88
89
- /**
90
- * PHP4 class constructor, calls the PHP5 class constructor __construct()
91
- */
92
- function WP_Table_Reloaded_Controller_Base() {
93
- $this->__construct();
94
- }
95
-
96
/**
97
* PHP5 class constructor
98
*/
68
'datatables_lengthchange' => true,
69
'datatables_filter' => true,
70
'datatables_info' => true,
71
'datatables_customcommands' => ''
72
),
73
'custom_fields' => array()
85
*/
86
var $possible_admin_menu_parent_pages = array( 'tools.php', 'admin.php', 'edit.php', 'edit.php?post_type=page', 'edit-pages.php', 'plugins.php', 'index.php', 'options-general.php' );
87
88
/**
89
* PHP5 class constructor
90
*/
controllers/controller-frontend.php CHANGED
@@ -44,13 +44,6 @@ class WP_Table_Reloaded_Controller_Frontend extends WP_Table_Reloaded_Controller
44
*/
45
var $tablesorter_tables = array();
46
47
- /**
48
- * PHP4 class constructor, calls the PHP5 class constructor __construct()
49
- */
50
- function WP_Table_Reloaded_Controller_Frontend() {
51
- $this->__construct();
52
- }
53
-
54
/**
55
* PHP5 class constructor
56
*
@@ -121,7 +114,7 @@ class WP_Table_Reloaded_Controller_Frontend extends WP_Table_Reloaded_Controller
121
122
$field = $atts['field'];
123
$format = $atts['format'];
124
-
125
$table = $this->load_table( $table_id );
126
127
// generate output, depending on what information (field) was asked for
@@ -179,7 +172,6 @@ class WP_Table_Reloaded_Controller_Frontend extends WP_Table_Reloaded_Controller
179
'datatables_lengthchange' => -1,
180
'datatables_filter' => -1,
181
'datatables_info' => -1,
182
- 'datatables_tabletools' => -1,
183
'datatables_customcommands' => -1,
184
'row_offset' => 1, // ATTENTION: MIGHT BE DROPPED IN FUTURE VERSIONS!
185
'row_count' => null, // ATTENTION: MIGHT BE DROPPED IN FUTURE VERSIONS!
@@ -218,7 +210,7 @@ class WP_Table_Reloaded_Controller_Frontend extends WP_Table_Reloaded_Controller
218
219
$rows = count( $table['data'] );
220
$columns = count( $table['data'][0] );
221
-
222
// explode from string to array
223
$atts['column_widths'] = ( !empty( $atts['column_widths'] ) ) ? explode( '|', $atts['column_widths'] ) : array();
224
@@ -254,7 +246,7 @@ class WP_Table_Reloaded_Controller_Frontend extends WP_Table_Reloaded_Controller
254
else
255
$output_options[ $key ] = ( -1 !== $value ) ? $value : $table['options'][ $key ] ;
256
}
257
-
258
// generate unique HTML ID, depending on how often this table has already been shown on this page
259
$count = ( isset( $this->shown_tables[ $table_id ] ) ) ? $this->shown_tables[ $table_id ] : 0;
260
$count = $count + 1;
@@ -271,7 +263,6 @@ class WP_Table_Reloaded_Controller_Frontend extends WP_Table_Reloaded_Controller
271
'datatables_lengthchange' => $output_options['datatables_lengthchange'],
272
'datatables_filter' => $output_options['datatables_filter'],
273
'datatables_info' => $output_options['datatables_info'],
274
- 'datatables_tabletools' => $output_options['datatables_tabletools'],
275
'datatables_customcommands' => $output_options['datatables_customcommands']
276
);
277
$js_options = apply_filters( 'wp_table_reloaded_table_js_options', $js_options, $table_id, $output_options );
@@ -400,7 +391,7 @@ class WP_Table_Reloaded_Controller_Frontend extends WP_Table_Reloaded_Controller
400
// add name and description to searched items, if they are displayed with the table
401
$table_name = ( isset( $table['options']['print_name'] ) && $table['options']['print_name'] ) ? $table['name'] : '';
402
$table_description = ( isset( $table['options']['print_description'] ) && $table['options']['print_description'] ) ? $table['description'] : '';
403
-
404
$search_tables[ $table_id ] = array(
405
'data' => $table['data'],
406
'name' => $table_name,
@@ -469,11 +460,7 @@ class WP_Table_Reloaded_Controller_Frontend extends WP_Table_Reloaded_Controller
469
470
if ( $this->options['enable_tablesorter'] ) {
471
switch ( $this->options['tablesorter_script'] ) {
472
- case 'datatables-tabletools':
473
- $url_css_tabletools = $plugin_path . 'js/tabletools/tabletools.css' . '?ver=' . $this->options['installed_version'];
474
- $url_css_tabletools = apply_filters( 'wp_table_reloaded_url_css_tabletools', $url_css_tabletools );
475
- if ( !empty( $url_css_tabletools ) )
476
- $default_css['tabletools.css'] = "@import url(\"{$url_css_tabletools}\");";
477
case 'datatables': // this also applies to the above, because there is no "break;" above
478
$url_css_datatables = $plugin_path . 'css/datatables.css' . '?ver=' . $this->options['installed_version'];
479
$url_css_datatables = apply_filters( 'wp_table_reloaded_url_css_datatables', $url_css_datatables );
@@ -522,17 +509,13 @@ CSSSTYLE;
522
function add_frontend_js() {
523
if ( 0 == count( $this->tablesorter_tables ) )
524
return; // no tables with script enabled shown
525
-
526
switch ( $this->options['tablesorter_script'] ) {
527
case 'datatables':
528
$jsfile = 'jquery.datatables.min.js';
529
$js_command = 'dataTable';
530
break;
531
- case 'datatables-tabletools':
532
- $include_tabletools = true;
533
- $jsfile = 'jquery.datatables.min.js';
534
- $js_command = 'dataTable';
535
- break;
536
case 'tablesorter':
537
$jsfile = 'jquery.tablesorter.min.js';
538
$js_command = 'tablesorter';
@@ -551,25 +534,6 @@ CSSSTYLE;
551
wp_register_script( 'wp-table-reloaded-frontend-js', $js_script_url, array( 'jquery' ), $this->options['installed_version'] );
552
wp_print_scripts( 'wp-table-reloaded-frontend-js' );
553
554
- if ( isset( $include_tabletools ) && $include_tabletools ) {
555
- $js_zeroclipboard_url = plugins_url( 'js/tabletools/zeroclipboard.js', WP_TABLE_RELOADED__FILE__ );
556
- $js_zeroclipboard_url = apply_filters( 'wp_table_reloaded_url_js_zeroclipboard', $js_zeroclipboard_url );
557
- // no need to explicitely check for dependencies ( 'wp-table-reloaded-frontend-js' and 'jquery' ) again
558
- wp_register_script( 'wp-table-reloaded-zeroclipboard-js', $js_zeroclipboard_url, array(), $this->options['installed_version'] );
559
- wp_print_scripts( 'wp-table-reloaded-zeroclipboard-js' );
560
-
561
- $js_tabletools_url = plugins_url( 'js/tabletools/tabletools.min.js', WP_TABLE_RELOADED__FILE__ );
562
- $js_tabletools_url = apply_filters( 'wp_table_reloaded_url_js_tabletools', $js_tabletools_url );
563
- wp_register_script( 'wp-table-reloaded-tabletools-js', $js_tabletools_url, array(), $this->options['installed_version'] );
564
- $swf_zeroclipboard_url = plugins_url( 'js/tabletools/zeroclipboard.swf', WP_TABLE_RELOADED__FILE__ );
565
- $swf_zeroclipboard_url = apply_filters( 'wp_table_reloaded_url_swf_zeroclipboard', $swf_zeroclipboard_url );
566
- wp_localize_script( 'wp-table-reloaded-tabletools-js', 'WP_Table_Reloaded_TableTools', array(
567
- 'swf_path' => $swf_zeroclipboard_url,
568
- 'l10n_print_after' => 'try{convertEntities(WP_Table_Reloaded_TableTools);}catch(e){};'
569
- ) );
570
- wp_print_scripts( 'wp-table-reloaded-tabletools-js' );
571
- }
572
-
573
// generate the specific commands for the JS library, depending on chosen features on the "Edit Table" screen
574
$commands = array();
575
foreach ( $this->tablesorter_tables as $tablesorter_table ) {
@@ -579,9 +543,7 @@ CSSSTYLE;
579
580
$parameters = array();
581
switch ( $this->options['tablesorter_script'] ) {
582
- case 'datatables-tabletools':
583
- if ( $js_options['datatables_tabletools'] )
584
- $parameters['sDom'] = "\"sDom\": 'T<\"clear\">lfrtip'";
585
case 'datatables':
586
$datatables_locale = get_locale();
587
$datatables_locale = apply_filters( 'wp_table_reloaded_datatables_locale', $datatables_locale );
44
*/
45
var $tablesorter_tables = array();
46
47
/**
48
* PHP5 class constructor
49
*
114
115
$field = $atts['field'];
116
$format = $atts['format'];
117
+
118
$table = $this->load_table( $table_id );
119
120
// generate output, depending on what information (field) was asked for
172
'datatables_lengthchange' => -1,
173
'datatables_filter' => -1,
174
'datatables_info' => -1,
175
'datatables_customcommands' => -1,
176
'row_offset' => 1, // ATTENTION: MIGHT BE DROPPED IN FUTURE VERSIONS!
177
'row_count' => null, // ATTENTION: MIGHT BE DROPPED IN FUTURE VERSIONS!
210
211
$rows = count( $table['data'] );
212
$columns = count( $table['data'][0] );
213
+
214
// explode from string to array
215
$atts['column_widths'] = ( !empty( $atts['column_widths'] ) ) ? explode( '|', $atts['column_widths'] ) : array();
216
246
else
247
$output_options[ $key ] = ( -1 !== $value ) ? $value : $table['options'][ $key ] ;
248
}
249
+
250
// generate unique HTML ID, depending on how often this table has already been shown on this page
251
$count = ( isset( $this->shown_tables[ $table_id ] ) ) ? $this->shown_tables[ $table_id ] : 0;
252
$count = $count + 1;
263
'datatables_lengthchange' => $output_options['datatables_lengthchange'],
264
'datatables_filter' => $output_options['datatables_filter'],
265
'datatables_info' => $output_options['datatables_info'],
266
'datatables_customcommands' => $output_options['datatables_customcommands']
267
);
268
$js_options = apply_filters( 'wp_table_reloaded_table_js_options', $js_options, $table_id, $output_options );
391
// add name and description to searched items, if they are displayed with the table
392
$table_name = ( isset( $table['options']['print_name'] ) && $table['options']['print_name'] ) ? $table['name'] : '';
393
$table_description = ( isset( $table['options']['print_description'] ) && $table['options']['print_description'] ) ? $table['description'] : '';
394
+
395
$search_tables[ $table_id ] = array(
396
'data' => $table['data'],
397
'name' => $table_name,
460
461
if ( $this->options['enable_tablesorter'] ) {
462
switch ( $this->options['tablesorter_script'] ) {
463
+ case 'datatables-tabletools': // keep this for backward compatibility
464
case 'datatables': // this also applies to the above, because there is no "break;" above
465
$url_css_datatables = $plugin_path . 'css/datatables.css' . '?ver=' . $this->options['installed_version'];
466
$url_css_datatables = apply_filters( 'wp_table_reloaded_url_css_datatables', $url_css_datatables );
509
function add_frontend_js() {
510
if ( 0 == count( $this->tablesorter_tables ) )
511
return; // no tables with script enabled shown
512
+
513
switch ( $this->options['tablesorter_script'] ) {
514
+ case 'datatables-tabletools': // keep this for backward compatibility
515
case 'datatables':
516
$jsfile = 'jquery.datatables.min.js';
517
$js_command = 'dataTable';
518
break;
519
case 'tablesorter':
520
$jsfile = 'jquery.tablesorter.min.js';
521
$js_command = 'tablesorter';
534
wp_register_script( 'wp-table-reloaded-frontend-js', $js_script_url, array( 'jquery' ), $this->options['installed_version'] );
535
wp_print_scripts( 'wp-table-reloaded-frontend-js' );
536
537
// generate the specific commands for the JS library, depending on chosen features on the "Edit Table" screen
538
$commands = array();
539
foreach ( $this->tablesorter_tables as $tablesorter_table ) {
543
544
$parameters = array();
545
switch ( $this->options['tablesorter_script'] ) {
546
+ case 'datatables-tabletools': // Keep this for backward-compatibility
547
case 'datatables':
548
$datatables_locale = get_locale();
549
$datatables_locale = apply_filters( 'wp_table_reloaded_datatables_locale', $datatables_locale );
js/tabletools/images/copy.png DELETED
Binary file
js/tabletools/images/copy_hover.png DELETED
Binary file
js/tabletools/images/csv.png DELETED
Binary file
js/tabletools/images/csv_hover.png DELETED
Binary file
js/tabletools/images/index.php DELETED
@@ -1,3 +0,0 @@
1
- <?php
2
- // Silence is golden.
3
- ?>
js/tabletools/images/print.png DELETED
Binary file
js/tabletools/images/print_hover.png DELETED
Binary file
js/tabletools/images/xls.png DELETED
Binary file
js/tabletools/images/xls_hover.png DELETED
Binary file
js/tabletools/index.php DELETED
@@ -1,3 +0,0 @@
1
- <?php
2
- // Silence is golden.
3
- ?>
js/tabletools/tabletools.css DELETED
@@ -1,105 +0,0 @@
1
- /*************************************************
2
- * This CSS file belongs to WP-Table Reloaded! *
3
- * DO NOT make any changes here, but in the *
4
- * "Custom CSS" textarea in the "Plugin Options"! *
5
- *************************************************/
6
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
7
- * TableTools styles
8
- */
9
- .dataTables_wrapper .clear {
10
- clear: both!important;
11
- }
12
-
13
- .TableTools {
14
- padding: 3px 0 3px 3px;
15
- border: 1px solid #d0d0d0;
16
- background-color: #f0f0f0;
17
- float: right;
18
- margin-bottom: 1em;
19
- }
20
-
21
- .TableTools_button {
22
- position: relative;
23
- float: left;
24
- margin-right: 3px;
25
- }
26
-
27
- .TableTools_csv {
28
- background: url(images/csv.png) no-repeat center center;
29
- border: 1px solid #f0f0f0;
30
- }
31
-
32
- .TableTools_csv_hover {
33
- background: url(images/csv_hover.png) no-repeat center center;
34
- border: 1px solid #d0d0d0;
35
- background-color: #fdfdfd;
36
- }
37
-
38
- .TableTools_xls {
39
- background: url(images/xls.png) no-repeat center center;
40
- border: 1px solid #f0f0f0;
41
- }
42
-
43
- .TableTools_xls_hover {
44
- background: url(images/xls_hover.png) no-repeat center center;
45
- border: 1px solid #d0d0d0;
46
- background-color: #fdfdfd;
47
- }
48
-
49
- .TableTools_clipboard {
50
- background: url(images/copy.png) no-repeat center center;
51
- border: 1px solid #f0f0f0;
52
- }
53
-
54
- .TableTools_clipboard_hover {
55
- background: url(images/copy_hover.png) no-repeat center center;
56
- border: 1px solid #d0d0d0;
57
- background-color: #fdfdfd;
58
- }
59
-
60
- .TableTools_print {
61
- background: url(images/print.png) no-repeat center center;
62
- border: 1px solid #f0f0f0;
63
- }
64
-
65
- .TableTools_print_hover {
66
- background: url(images/print_hover.png) no-repeat center center;
67
- border: 1px solid #d0d0d0;
68
- background-color: #fdfdfd;
69
- }
70
-
71
- .TableTools_PrintInfo {
72
- position: absolute;
73
- top: 50%;
74
- left: 50%;
75
- width: 400px;
76
- height: 150px;
77
- margin-left: -200px;
78
- margin-top: -75px;
79
- text-align: center;
80
- background-color: #3f3f3f;
81
- color: white;
82
- padding: 10px 30px;
83
-
84
- opacity: 0.9;
85
-
86
- border-radius: 5px;
87
- -moz-border-radius: 5px;
88
- -webkit-border-radius: 5px;
89
-
90
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
91
- -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
92
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
93
- }
94
-
95
- .TableTools_PrintInfo h6 {
96
- font-weight: normal;
97
- font-size: 28px;
98
- line-height: 28px;
99
- margin: 1em;
100
- }
101
-
102
- .TableTools_PrintInfo p {
103
- font-size: 14px;
104
- line-height: 20px;
105
- }
js/tabletools/tabletools.js DELETED
@@ -1,735 +0,0 @@
1
- /*
2
- * File: TableTools.js
3
- * Version: 1.1.4
4
- * CVS: $Id$
5
- * Description: Copy, save and print functions for DataTables
6
- * Author: Allan Jardine (www.sprymedia.co.uk)
7
- * Created: Wed 1 Apr 2009 08:41:58 BST
8
- * Modified: $Date$ by $Author$
9
- * Language: Javascript
10
- * License: LGPL
11
- * Project: Just a little bit of fun :-)
12
- * Contact: www.sprymedia.co.uk/contact
13
- *
14
- * Copyright 2009-2010 Allan Jardine, all rights reserved.
15
- *
16
- */
17
-
18
- /*
19
- * Variable: TableToolsInit
20
- * Purpose: Parameters for TableTools customisation
21
- * Scope: global
22
- */
23
- var TableToolsInit = {
24
- "oFeatures": {
25
- "bCsv": true,
26
- "bXls": true,
27
- "bCopy": true,
28
- "bPrint": true
29
- },
30
- "oBom": {
31
- "bCsv": true,
32
- "bXls": true
33
- },
34
- "bIncFooter": true,
35
- "bIncHiddenColumns": false,
36
- "sPrintMessage": "", /* Message with will print with the table */
37
- "sPrintInfo": "<h6>Print view</h6><p>Please use your browser's print function to "+
38
- "print this table. Press escape when finished.", /* The 'fading' message */
39
- "sTitle": "",
40
- "sSwfPath": WP_Table_Reloaded_TableTools.swf_path,
41
- "iButtonHeight": 30,
42
- "iButtonWidth": 30,
43
- "sCsvBoundary": "'",
44
- "_iNextId": 1 /* Internal useage - but needs to be global */
45
- };
46
-
47
-
48
- (function($) {
49
- /*
50
- * Function: TableTools
51
- * Purpose: TableTools "class"
52
- * Returns: same as _fnInit
53
- * Inputs: same as _fnInit
54
- */
55
- function TableTools ( oInit )
56
- {
57
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
58
- * Private parameters
59
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
60
- var _oSettings;
61
- var nTools = null;
62
- var _nTableWrapper;
63
- var _aoPrintHidden = [];
64
- var _iPrintScroll = 0;
65
- var _nPrintMessage = null;
66
- var _DTSettings;
67
- var _sLastData;
68
- var _iId;
69
-
70
-
71
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
72
- * Initialisation
73
- */
74
-
75
- /*
76
- * Function: _fnInit
77
- * Purpose: Initialise the table tools
78
- * Returns: node: - The created node for the table tools wrapping
79
- * Inputs: object:oInit - object with:
80
- * oDTSettings - DataTables settings
81
- */
82
- function _fnInit( oInit )
83
- {
84
- _nTools = document.createElement('div');
85
- _nTools.className = "TableTools";
86
- _iId = TableToolsInit._iNextId++;
87
-
88
- /* Copy the init object */
89
- _oSettings = $.extend( true, {}, TableToolsInit );
90
-
91
- _DTSettings = oInit.oDTSettings;
92
-
93
- _nTableWrapper = fnFindParentClass( _DTSettings.nTable, "dataTables_wrapper" );
94
-
95
- ZeroClipboard.moviePath = _oSettings.sSwfPath;
96
-
97
- if ( _oSettings.oFeatures.bCopy ) {
98
- fnFeatureClipboard();
99
- }
100
- if ( _oSettings.oFeatures.bCsv ) {
101
- fnFeatureSaveCSV();
102
- }
103
- if ( _oSettings.oFeatures.bXls ) {
104
- fnFeatureSaveXLS();
105
- }
106
- if ( _oSettings.oFeatures.bPrint ) {
107
- fnFeaturePrint();
108
- }
109
-
110
- return _nTools;
111
- }
112
-
113
-
114
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
115
- * Feature buttons
116
- */
117
-
118
- /*
119
- * Function: fnFeatureSaveCSV
120
- * Purpose: Add a button for saving a CSV file
121
- * Returns: -
122
- * Inputs: -
123
- */
124
- function fnFeatureSaveCSV ()
125
- {
126
- var sBaseClass = "TableTools_button TableTools_csv";
127
- var nButton = document.createElement( 'div' );
128
- nButton.id = "ToolTables_CSV_"+_iId;
129
- nButton.style.height = _oSettings.iButtonHeight+'px';
130
- nButton.style.width = _oSettings.iButtonWidth+'px';
131
- nButton.className = sBaseClass;
132
- _nTools.appendChild( nButton );
133
-
134
- var clip = new ZeroClipboard.Client();
135
- clip.setHandCursor( true );
136
- clip.setAction( 'save' );
137
- clip.setCharSet( 'UTF8' );
138
- clip.setBomInc( _oSettings.oBom.bCsv );
139
- clip.setFileName( fnGetTitle()+'.csv' );
140
-
141
- clip.addEventListener('mouseOver', function(client) {
142
- nButton.className = sBaseClass+'_hover';
143
- } );
144
-
145
- clip.addEventListener('mouseOut', function(client) {
146
- nButton.className = sBaseClass;
147
- } );
148
-
149
- clip.addEventListener('mouseDown', function(client) {
150
- fnFlashSetText( clip, fnGetDataTablesData(",", TableToolsInit.sCsvBoundary) );
151
- } );
152
-
153
- fnGlue( clip, nButton, "ToolTables_CSV_"+_iId, "Save as CSV" );
154
- }
155
-
156
-
157
- /*
158
- * Function: fnFeatureSaveXLS
159
- * Purpose: Add a button for saving an XLS file
160
- * Returns: -
161
- * Inputs: -
162
- */
163
- function fnFeatureSaveXLS ()
164
- {
165
- var sBaseClass = "TableTools_button TableTools_xls";
166
- var nButton = document.createElement( 'div' );
167
- nButton.id = "ToolTables_XLS_"+_iId;
168
- nButton.style.height = _oSettings.iButtonHeight+'px';
169
- nButton.style.width = _oSettings.iButtonWidth+'px';
170
- nButton.className = sBaseClass;
171
- _nTools.appendChild( nButton );
172
-
173
- var clip = new ZeroClipboard.Client();
174
- clip.setHandCursor( true );
175
- clip.setAction( 'save' );
176
- clip.setCharSet( 'UTF16LE' );
177
- clip.setBomInc( _oSettings.oBom.bXls );
178
- clip.setFileName( fnGetTitle()+'.xls' );
179
-
180
- clip.addEventListener('mouseOver', function(client) {
181
- nButton.className = sBaseClass+'_hover';
182
- } );
183
-
184
- clip.addEventListener('mouseOut', function(client) {
185
- nButton.className = sBaseClass;
186
- } );
187
-
188
- clip.addEventListener('mouseDown', function(client) {
189
- fnFlashSetText( clip, fnGetDataTablesData("\t") );
190
- } );
191
-
192
- fnGlue( clip, nButton, "ToolTables_XLS_"+_iId, "Save for Excel" );
193
- }
194
-
195
-
196
- /*
197
- * Function: fnFeatureClipboard
198
- * Purpose: Add a button for copying data to clipboard
199
- * Returns: -
200
- * Inputs: -
201
- */
202
- function fnFeatureClipboard ()
203
- {
204
- var sBaseClass = "TableTools_button TableTools_clipboard";
205
- var nButton = document.createElement( 'div' );
206
- nButton.id = "ToolTables_Copy_"+_iId;
207
- nButton.style.height = _oSettings.iButtonHeight+'px';
208
- nButton.style.width = _oSettings.iButtonWidth+'px';
209
- nButton.className = sBaseClass;
210
- _nTools.appendChild( nButton );
211
-
212
- var clip = new ZeroClipboard.Client();
213
- clip.setHandCursor( true );
214
- clip.setAction( 'copy' );
215
-
216
- clip.addEventListener('mouseOver', function(client) {
217
- nButton.className = sBaseClass+'_hover';
218
- } );
219
-
220
- clip.addEventListener('mouseOut', function(client) {
221
- nButton.className = sBaseClass;
222
- } );
223
-
224
- clip.addEventListener('mouseDown', function(client) {
225
- fnFlashSetText( clip, fnGetDataTablesData("\t") );
226
- } );
227
-
228
- clip.addEventListener('complete', function (client, text) {
229
- var aData = _sLastData.split('\n');
230
- alert( 'Copied '+(aData.length-1)+' rows to the clipboard' );
231
- } );
232
-
233
- fnGlue( clip, nButton, "ToolTables_Copy_"+_iId, "Copy to clipboard" );
234
- }
235
-
236
-
237
- /*
238
- * Function: fnFeaturePrint
239
- * Purpose: Add a button for printing data
240
- * Returns: -
241
- * Inputs: -
242
- * Notes: Fun one this function. In order to print the table, we want the table to retain
243
- * it's position in the DOM, so all styles still apply, but we don't want to print all the
244
- * other nonesense. So we hide that nonesese and add an event handler for 'esc' which will
245
- * restore a normal view.
246
- */
247
- function fnFeaturePrint ()
248
- {
249
- var sBaseClass = "TableTools_button TableTools_print";
250
- var nButton = document.createElement( 'div' );
251
- nButton.style.height = _oSettings.iButtonHeight+'px';
252
- nButton.style.width = _oSettings.iButtonWidth+'px';
253
- nButton.className = sBaseClass;
254
- nButton.title = "Print table";
255
- _nTools.appendChild( nButton );
256
-
257
- /* Could do this in CSS - but might as well be consistent with the flash buttons */
258
- $(nButton).hover( function(client) {
259
- nButton.className = sBaseClass+'_hover';
260
- }, function(client) {
261
- nButton.className = sBaseClass;
262
- } );
263
-
264
- $(nButton).click( function() {
265
- /* Parse through the DOM hiding everything that isn't needed for the table */
266
- fnPrintHideNodes( _DTSettings.nTable );
267
-
268
- /* Show the whole table */
269
- _iPrintSaveStart = _DTSettings._iDisplayStart;
270
- _iPrintSaveLength = _DTSettings._iDisplayLength;
271
- _DTSettings._iDisplayStart = 0;
272
- _DTSettings._iDisplayLength = -1;
273
- _DTSettings.oApi._fnCalculateEnd( _DTSettings );
274
- _DTSettings.oApi._fnDraw( _DTSettings );
275
-
276
- /* Remove the other DataTables feature nodes - but leave the table! and info div */
277
- var anFeature = _DTSettings.anFeatures;
278
- for ( var cFeature in anFeature )
279
- {
280
- if ( cFeature != 'i' && cFeature != 't' )
281
- {
282
- _aoPrintHidden.push( {
283
- "node": anFeature[cFeature],
284
- "display": "block"
285
- } );
286
- anFeature[cFeature].style.display = "none";
287
- }
288
- }
289
-
290
- /* Add a node telling the user what is going on */
291
- var nInfo = document.createElement( "div" );
292
- nInfo.className = "TableTools_PrintInfo";
293
- nInfo.innerHTML = _oSettings.sPrintInfo;
294
- document.body.appendChild( nInfo );
295
-
296
- /* Add a message at the top of the page */
297
- if ( _oSettings.sPrintMessage !== "" )
298
- {
299
- _nPrintMessage = document.createElement( "p" );
300
- _nPrintMessage.className = "TableTools_PrintMessage";
301
- _nPrintMessage.innerHTML = _oSettings.sPrintMessage;
302
- document.body.insertBefore( _nPrintMessage, document.body.childNodes[0] );
303
- }
304
-
305
- /* Cache the scrolling and the jump to the top of the t=page */
306
- _iPrintScroll = $(window).scrollTop();
307
- window.scrollTo( 0, 0 );
308
-
309
- $(document).bind( "keyup", null, fnPrintEnd );
310
-
311
- setTimeout( function() {
312
- $(nInfo).fadeOut( "normal", function() {
313
- document.body.removeChild( nInfo );
314
- } );
315
- }, 2000 );
316
- } );
317
- }
318
-
319
-
320
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
321
- * Printing functions
322
- */
323
-
324
- /*
325
- * Function: fnPrintEnd
326
- * Purpose: Printing is finished, resume normal display
327
- * Returns: -
328
- * Inputs: event
329
- */
330
- function fnPrintEnd ( e )
331
- {
332
- /* Only interested in the escape key */
333
- if ( e.keyCode == 27 )
334
- {
335
- /* Show all hidden nodes */
336
- fnPrintShowNodes();
337
-
338
- /* Restore the scroll */
339
- window.scrollTo( 0, _iPrintScroll );
340
-
341
- /* Drop the print message */
342
- if ( _nPrintMessage )
343
- {
344
- document.body.removeChild( _nPrintMessage );
345
- _nPrintMessage = null;
346
- }
347
-
348
- /* Restore the table length */
349
- _DTSettings._iDisplayStart = _iPrintSaveStart;
350
- _DTSettings._iDisplayLength = _iPrintSaveLength;
351
- _DTSettings.oApi._fnCalculateEnd( _DTSettings );
352
- _DTSettings.oApi._fnDraw( _DTSettings );
353
-
354
- $(document).unbind( "keydown", fnPrintEnd );
355
- }
356
- }
357
-
358
-
359
- /*
360
- * Function: fnPrintShowNodes
361
- * Purpose: Resume the display of all TableTools hidden nodes
362
- * Returns: -
363
- * Inputs: -
364
- */
365
- function fnPrintShowNodes( )
366
- {
367
- for ( var i=0, iLen=_aoPrintHidden.length ; i<iLen ; i++ )
368
- {
369
- _aoPrintHidden[i].node.style.display = _aoPrintHidden[i].display;
370
- }
371
- _aoPrintHidden.splice( 0, _aoPrintHidden.length );
372
- }
373
-
374
-
375
- /*
376
- * Function: fnPrintHideNodes
377
- * Purpose: Hide nodes which are not needed in order to display the table
378
- * Returns: -
379
- * Inputs: node:nNode - the table node - we parse back up
380
- * Notes: Recursive
381
- */
382
- function fnPrintHideNodes( nNode )
383
- {
384
- var nParent = nNode.parentNode;
385
- var nChildren = nParent.childNodes;
386
- for ( var i=0, iLen=nChildren.length ; i<iLen ; i++ )
387
- {
388
- if ( nChildren[i] != nNode && nChildren[i].nodeType == 1 )
389
- {
390
- /* If our node is shown (don't want to show nodes which were previously hidden) */
391
- var sDisplay = $(nChildren[i]).css("display");
392
- if ( sDisplay != "none" )
393
- {
394
- /* Cache the node and it's previous state so we can restore it */
395
- _aoPrintHidden.push( {
396
- "node": nChildren[i],
397
- "display": sDisplay
398
- } );
399
- nChildren[i].style.display = "none";
400
- }
401
- }
402
- }
403
-
404
- if ( nParent.nodeName != "BODY" )
405
- {
406
- fnPrintHideNodes( nParent );
407
- }
408
- }
409
-
410
-
411
-
412
-
413
-
414
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
415
- * Support functions
416
- */
417
-
418
- /*
419
- * Function: fnGlue
420
- * Purpose: Wait until the id is in the DOM before we "glue" the swf
421
- * Returns: -
422
- * Inputs: object:clip - Zero clipboard object
423
- * node:node - node to glue swf to
424
- * string:id - id of the element to look for
425
- * string:text - title of the flash movie
426
- * Notes: Recursive (setTimeout)
427
- */
428
- function fnGlue ( clip, node, id, text )
429
- {
430
- if ( document.getElementById(id) )
431
- {
432
- clip.glue( node, text );
433
- }
434
- else
435
- {
436
- setTimeout( function () {
437
- fnGlue( clip, node, id, text );
438
- }, 100 );
439
- }
440
- }
441
-
442
-
443
- /*
444
- * Function: fnGetTitle
445
- * Purpose: Get the title of the page (from DOM or user set) for file saving
446
- * Returns:
447
- * Inputs:
448
- */
449
- function fnGetTitle( )
450
- {
451
- var sTitle;
452
- if ( _oSettings.sTitle !== "" ) {
453
- sTitle = _oSettings.sTitle;
454
- } else {
455
- sTitle = document.getElementsByTagName('title')[0].innerHTML;
456
- }
457
-
458
- /* Strip characters which the OS will object to - checking for UTF8 support in the scripting
459
- * engine
460
- */
461
- if ( "\u00A1".toString().length < 4 ) {
462
- return sTitle.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
463
- } else {
464
- return sTitle.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g, "");
465
- }
466
- }
467
-
468
-
469
- /*
470
- * Function: fnFindParentClass
471
- * Purpose: Parse back up the DOM to a node with a particular node
472
- * Returns: node: - found node
473
- * Inputs: node:n - Node to test
474
- * string:sClass - class to find
475
- * Notes: Recursive
476
- */
477
- function fnFindParentClass ( n, sClass )
478
- {
479
- if ( n.className.match(sClass) || n.nodeName == "BODY" )
480
- {
481
- return n;
482
- }
483
- else
484
- {
485
- return fnFindParentClass( n.parentNode, sClass );
486
- }
487
- }
488
-
489
-
490
- /*
491
- * Function: fnBoundData
492
- * Purpose: Wrap data up with a boundary string
493
- * Returns: string: - bound data
494
- * Inputs: string:sData - data to bound
495
- * string:sBoundary - bounding char(s)
496
- * regexp:regex - search for the bounding chars - constructed outside for efficincy
497
- * in the loop
498
- */
499
- function fnBoundData( sData, sBoundary, regex )
500
- {
501
- if ( sBoundary === "" )
502
- {
503
- return sData;
504
- }
505
- else
506
- {
507
- return sBoundary + sData.replace(regex, "\\"+sBoundary) + sBoundary;
508
- }
509
- }
510
-
511
-
512
- /*
513
- * Function: fnHtmlDecode
514
- * Purpose: Decode HTML entities
515
- * Returns: string: - decoded string
516
- * Inputs: string:sData - encoded string
517
- */
518
- function fnHtmlDecode( sData )
519
- {
520
- var
521
- aData = fnChunkData( sData, 2048 ),
522
- n = document.createElement('div'),
523
- i, iLen, iIndex,
524
- sReturn = "", sInner;
525
-
526
- /* nodeValue has a limit in browsers - so we chunk the data into smaller segments to build
527
- * up the string. Note that the 'trick' here is to remember than we might have split over
528
- * an HTML entity, so we backtrack a little to make sure this doesn't happen
529
- */
530
- for ( i=0, iLen=aData.length ; i<iLen ; i++ )
531
- {
532
- /* Magic number 8 is because no entity is longer then strlen 8 in ISO 8859-1 */
533
- iIndex = aData[i].lastIndexOf( '&' );
534
- if ( iIndex != -1 && aData[i].length >= 8 && iIndex > aData[i].length - 8 )
535
- {
536
- sInner = aData[i].substr( iIndex );
537
- aData[i] = aData[i].substr( 0, iIndex );
538
- }
539
-
540
- n.innerHTML = aData[i];
541
- sReturn += n.childNodes[0].nodeValue;
542
- }
543
-
544
- return sReturn;
545
- }
546
-
547
-
548
- //function fnHtmlDecode( sData )
549
- //{
550
- // var n = document.createElement('div');
551
- // n.innerHTML = sData;
552
- // return n.childNodes[0].nodeValue;
553
- //}
554
-
555
-
556
- /*
557
- * Function: fnChunkData
558
- * Purpose: Break a string up into an array of smaller strings
559
- * Returns: array strings: - string array
560
- * Inputs: string:sData - data to be broken up
561
- * int:iSize - chunk size
562
- */
563
- function fnChunkData( sData, iSize )
564
- {
565
- var asReturn = [];
566
- var iStrlen = sData.length;
567
-
568
- for ( var i=0 ; i<iStrlen ; i+=iSize )
569
- {
570
- if ( i+iSize < iStrlen )
571
- {
572
- asReturn.push( sData.substring( i, i+iSize ) );
573
- }
574
- else
575
- {
576
- asReturn.push( sData.substring( i, iStrlen ) );
577
- }
578
- }
579
-
580
- return asReturn;
581
- }
582
-
583
-
584
- /*
585
- * Function: fnFlashSetText
586
- * Purpose: Set the text for the flash clip to deal with
587
- * Returns: -
588
- * Inputs: object:clip - the ZeroClipboard object
589
- * string:sData - the data to be set
590
- * Notes: This function is required for large information sets. There is a limit on the
591
- * amount of data that can be transfered between Javascript and Flash in a single call, so
592
- * we use this method to build up the text in Flash by sending over chunks. It is estimated
593
- * that the data limit is around 64k, although it is undocuments, and appears to be different
594
- * between different flash versions. We chunk at 8KiB.
595
- */
596
- function fnFlashSetText( clip, sData )
597
- {
598
- var asData = fnChunkData( sData, 8192 );
599
-
600
- clip.clearText();
601
- for ( var i=0, iLen=asData.length ; i<iLen ; i++ )
602
- {
603
- clip.appendText( asData[i] );
604
- }
605
- }
606
-
607
-
608
- /*
609
- * Function: fnGetDataTablesData
610
- * Purpose: Get data from DataTables' internals and format it for output
611
- * Returns: string:sData - concatinated string of data
612
- * Inputs: string:sSeperator - field separator (ie. ,)
613
- * string:sBoundary - field boundary (ie. ') - optional - default: ""
614
- */
615
- function fnGetDataTablesData( sSeperator, sBoundary )
616
- {
617
- var i, iLen;
618
- var j, jLen;
619
- var sData = '';
620
- var sLoopData = '';
621
- var sNewline = navigator.userAgent.match(/Windows/) ? "\r\n" : "\n";
622
-
623
- if ( typeof sBoundary == "undefined" )
624
- {
625
- sBoundary = "";
626
- }
627
- var regex = new RegExp(sBoundary, "g"); /* Do it here for speed */
628
-
629
- /* Titles */
630
- for ( i=0, iLen=_DTSettings.aoColumns.length ; i<iLen ; i++ )
631
- {
632
- if ( _oSettings.bIncHiddenColumns === true || _DTSettings.aoColumns[i].bVisible )
633
- {
634
- sLoopData = _DTSettings.aoColumns[i].sTitle.replace(/\n/g," ").replace( /<.*?>/g, "" );
635
- if ( sLoopData.indexOf( '&' ) != -1 )
636
- {
637
- sLoopData = fnHtmlDecode( sLoopData );
638
- }
639
-
640
- sData += fnBoundData( sLoopData, sBoundary, regex ) + sSeperator;
641
- }
642
- }
643
- sData = sData.slice( 0, sSeperator.length*-1 );
644
- sData += sNewline;
645
-
646
- /* Rows */
647
- for ( j=0, jLen=_DTSettings.aiDisplay.length ; j<jLen ; j++ )
648
- {
649
- /* Columns */
650
- for ( i=0, iLen=_DTSettings.aoColumns.length ; i<iLen ; i++ )
651
- {
652
- if ( _oSettings.bIncHiddenColumns === true || _DTSettings.aoColumns[i].bVisible )
653
- {
654
- /* Convert to strings (with small optimisation) */
655
- var mTypeData = _DTSettings.aoData[ _DTSettings.aiDisplay[j] ]._aData[ i ];
656
- if ( typeof mTypeData == "string" )
657
- {
658
- /* Strip newlines, replace img tags with alt attr. and finally strip html... */
659
- sLoopData = mTypeData.replace(/\n/g," ");
660
- sLoopData = sLoopData.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi, '$1$2$3')
661
- sLoopData = sLoopData.replace( /<.*?>/g, "" );
662
- }
663
- else
664
- {
665
- sLoopData = mTypeData+"";
666
- }
667
-
668
- /* Trim and clean the data */
669
- sLoopData = sLoopData.replace(/^\s+/, '').replace(/\s+#x2F;, '');
670
- if ( sLoopData.indexOf( '&' ) != -1 )
671
- {
672
- sLoopData = fnHtmlDecode( sLoopData );
673
- }
674
-
675
- /* Bound it and add it to the total data */
676
- sData += fnBoundData( sLoopData, sBoundary, regex ) + sSeperator;
677
- }
678
- }
679
- sData = sData.slice( 0, sSeperator.length*-1 );
680
- sData += sNewline;
681
- }
682
-
683
- /* Remove the last new line */
684
- sData.slice( 0, -1 );
685
-
686
- /* Add the footer */
687
- if ( _oSettings.bIncFooter )
688
- {
689
- for ( i=0, iLen=_DTSettings.aoColumns.length ; i<iLen ; i++ )
690
- {
691
- if ( _DTSettings.aoColumns[i].nTf !== null &&
692
- (_oSettings.bIncHiddenColumns === true || _DTSettings.aoColumns[i].bVisible) )
693
- {
694
- sLoopData = _DTSettings.aoColumns[i].nTf.innerHTML.replace(/\n/g," ").replace( /<.*?>/g, "" );
695
- if ( sLoopData.indexOf( '&' ) != -1 )
696
- {
697
- sLoopData = fnHtmlDecode( sLoopData );
698
- }
699
-
700
- sData += fnBoundData( sLoopData, sBoundary, regex ) + sSeperator;
701
- }
702
- }
703
- sData = sData.slice( 0, sSeperator.length*-1 );
704
- }
705
-
706
- /* No pointers here - this is a string copy :-) */
707
- _sLastData = sData;
708
- return sData;
709
- }
710
-
711
-
712
- /* Initialise our new object */
713
- return _fnInit( oInit );
714
- }
715
-
716
-
717
- /*
718
- * Register a new feature with DataTables
719
- */
720
- if ( typeof $.fn.dataTable == "function" && typeof $.fn.dataTableExt.sVersion != "undefined" )
721
- {
722
- $.fn.dataTableExt.aoFeatures.push( {
723
- "fnInit": function( oSettings ) {
724
- return new TableTools( { "oDTSettings": oSettings } );
725
- },
726
- "cFeature": "T",
727
- "sFeature": "TableTools"
728
- } );
729
- }
730
- else
731
- {
732
- alert( "Warning: TableTools requires DataTables 1.5 or greater - "+
733
- "www.datatables.net/download");
734
- }
735
- })(jQuery);
js/tabletools/tabletools.min.js DELETED
@@ -1,28 +0,0 @@
1
- /*
2
- * File: TableTools.min.js
3
- * Version: 2.0.0.dev
4
- * Author: Allan Jardine (www.sprymedia.co.uk)
5
- *
6
- * Copyright 2009-2010 Allan Jardine, all rights reserved.
7
- *
8
- * This source file is free software, under either the GPL v2 license or a
9
- * BSD (3 point) style license, as supplied with this software.
10
- *
11
- * This source file is distributed in the hope that it will be useful, but
12
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13
- * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
14
- */
15
- var TableToolsInit={oFeatures:{bCsv:true,bXls:true,bCopy:true,bPrint:true},oBom:{bCsv:true,bXls:true},bIncFooter:true,bIncHiddenColumns:false,sPrintMessage:"",sPrintInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.",sTitle:"",sSwfPath:WP_Table_Reloaded_TableTools.swf_path,iButtonHeight:30,iButtonWidth:30,sCsvBoundary:"'",_iNextId:1};
16
- (function(j){function D(p){function E(a){_nTools=document.createElement("div");_nTools.className="TableTools";l=TableToolsInit._iNextId++;g=j.extend(true,{},TableToolsInit);e=a.oDTSettings;F=v(e.nTable,"dataTables_wrapper");ZeroClipboard.moviePath=g.sSwfPath;g.oFeatures.bCopy&&G();g.oFeatures.bCsv&&H();g.oFeatures.bXls&&I();g.oFeatures.bPrint&&J();return _nTools}function H(){var a=document.createElement("div");a.id="ToolTables_CSV_"+l;a.style.height=g.iButtonHeight+"px";a.style.width=g.iButtonWidth+
17
- "px";a.className="TableTools_button TableTools_csv";_nTools.appendChild(a);var b=new ZeroClipboard.Client;b.setHandCursor(true);b.setAction("save");b.setCharSet("UTF8");b.setBomInc(g.oBom.bCsv);b.setFileName(w()+".csv");b.addEventListener("mouseOver",function(){a.className="TableTools_button TableTools_csv_hover"});b.addEventListener("mouseOut",function(){a.className="TableTools_button TableTools_csv"});b.addEventListener("mouseDown",function(){q(b,r(",",TableToolsInit.sCsvBoundary))});o(b,a,"ToolTables_CSV_"+
18
- l,"Save as CSV")}function I(){var a=document.createElement("div");a.id="ToolTables_XLS_"+l;a.style.height=g.iButtonHeight+"px";a.style.width=g.iButtonWidth+"px";a.className="TableTools_button TableTools_xls";_nTools.appendChild(a);var b=new ZeroClipboard.Client;b.setHandCursor(true);b.setAction("save");b.setCharSet("UTF16LE");b.setBomInc(g.oBom.bXls);b.setFileName(w()+".xls");b.addEventListener("mouseOver",function(){a.className="TableTools_button TableTools_xls_hover"});b.addEventListener("mouseOut",
19
- function(){a.className="TableTools_button TableTools_xls"});b.addEventListener("mouseDown",function(){q(b,r("\t"))});o(b,a,"ToolTables_XLS_"+l,"Save for Excel")}function G(){var a=document.createElement("div");a.id="ToolTables_Copy_"+l;a.style.height=g.iButtonHeight+"px";a.style.width=g.iButtonWidth+"px";a.className="TableTools_button TableTools_clipboard";_nTools.appendChild(a);var b=new ZeroClipboard.Client;b.setHandCursor(true);b.setAction("copy");b.addEventListener("mouseOver",function(){a.className=
20
- "TableTools_button TableTools_clipboard_hover"});b.addEventListener("mouseOut",function(){a.className="TableTools_button TableTools_clipboard"});b.addEventListener("mouseDown",function(){q(b,r("\t"))});b.addEventListener("complete",function(){var c=x.split("\n");alert("Copied "+(c.length-1)+" rows to the clipboard")});o(b,a,"ToolTables_Copy_"+l,"Copy to clipboard")}function J(){var a=document.createElement("div");a.style.height=g.iButtonHeight+"px";a.style.width=g.iButtonWidth+"px";a.className="TableTools_button TableTools_print";
21
- a.title="Print table";_nTools.appendChild(a);j(a).hover(function(){a.className="TableTools_button TableTools_print_hover"},function(){a.className="TableTools_button TableTools_print"});j(a).click(function(){y(e.nTable);_iPrintSaveStart=e._iDisplayStart;_iPrintSaveLength=e._iDisplayLength;e._iDisplayStart=0;e._iDisplayLength=-1;e.oApi._fnCalculateEnd(e);e.oApi._fnDraw(e);var b=e.anFeatures;for(var c in b)if(c!="i"&&c!="t"){m.push({node:b[c],display:"block"});b[c].style.display="none"}var d=document.createElement("div");
22
- d.className="TableTools_PrintInfo";d.innerHTML=g.sPrintInfo;document.body.appendChild(d);if(g.sPrintMessage!==""){n=document.createElement("p");n.className="TableTools_PrintMessage";n.innerHTML=g.sPrintMessage;document.body.insertBefore(n,document.body.childNodes[0])}z=j(window).scrollTop();window.scrollTo(0,0);j(document).bind("keydown",null,A);setTimeout(function(){j(d).fadeOut("normal",function(){document.body.removeChild(d)})},2E3)})}function A(a){if(a.keyCode==27){K();window.scrollTo(0,z);if(n){document.body.removeChild(n);
23
- n=null}e._iDisplayStart=_iPrintSaveStart;e._iDisplayLength=_iPrintSaveLength;e.oApi._fnCalculateEnd(e);e.oApi._fnDraw(e);j(document).unbind("keydown",A)}}function K(){for(var a=0,b=m.length;a<b;a++)m[a].node.style.display=m[a].display;m.splice(0,m.length)}function y(a){for(var b=a.parentNode,c=b.childNodes,d=0,h=c.length;d<h;d++)if(c[d]!=a&&c[d].nodeType==1){var k=j(c[d]).css("display");if(k!="none"){m.push({node:c[d],display:k});c[d].style.display="none"}}b.nodeName!="BODY"&&y(b)}function o(a,b,
24
- c,d){document.getElementById(c)?a.glue(b,d):setTimeout(function(){o(a,b,c,d)},100)}function w(){var a;a=g.sTitle!==""?g.sTitle:document.getElementsByTagName("title")[0].innerHTML;return"\u00a1".toString().length<4?a.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""):a.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")}function v(a,b){return a.className.match(b)||a.nodeName=="BODY"?a:v(a.parentNode,b)}function s(a,b,c){return b===""?a:b+a.replace(c,"\\"+b)+b}function t(a){a=B(a,2048);var b=document.createElement("div"),
25
- c,d,h,k="";c=0;for(d=a.length;c<d;c++){h=a[c].lastIndexOf("&");if(h!=-1&&a[c].length>=8&&h>a[c].length-8){a[c].substr(h);a[c]=a[c].substr(0,h)}b.innerHTML=a[c];k+=b.childNodes[0].nodeValue}return k}function B(a,b){for(var c=[],d=a.length,h=0;h<d;h+=b)h+b<d?c.push(a.substring(h,h+b)):c.push(a.substring(h,d));return c}function q(a,b){b=B(b,8192);a.clearText();for(var c=0,d=b.length;c<d;c++)a.appendText(b[c])}function r(a,b){var c,d,h,k,i="",f="",C=navigator.userAgent.match(/Windows/)?"\r\n":"\n";if(typeof b==
26
- "undefined")b="";var u=new RegExp(b,"g");c=0;for(d=e.aoColumns.length;c<d;c++)if(g.bIncHiddenColumns===true||e.aoColumns[c].bVisible){f=e.aoColumns[c].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"");if(f.indexOf("&")!=-1)f=t(f);i+=s(f,b,u)+a}i=i.slice(0,a.length*-1);i+=C;h=0;for(k=e.aiDisplay.length;h<k;h++){c=0;for(d=e.aoColumns.length;c<d;c++)if(g.bIncHiddenColumns===true||e.aoColumns[c].bVisible){f=e.aoData[e.aiDisplay[h]]._aData[c];if(typeof f=="string"){f=f.replace(/\n/g," ");f=f.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,
27
- "$1$2$3");f=f.replace(/<.*?>/g,"")}else f=f+"";f=f.replace(/^\s+/,"").replace(/\s+#x2F;,"");if(f.indexOf("&")!=-1)f=t(f);i+=s(f,b,u)+a}i=i.slice(0,a.length*-1);i+=C}i.slice(0,-1);if(g.bIncFooter){c=0;for(d=e.aoColumns.length;c<d;c++)if(e.aoColumns[c].nTf!==null&&(g.bIncHiddenColumns===true||e.aoColumns[c].bVisible)){f=e.aoColumns[c].nTf.innerHTML.replace(/\n/g," ").replace(/<.*?>/g,"");if(f.indexOf("&")!=-1)f=t(f);i+=s(f,b,u)+a}i=i.slice(0,a.length*-1)}return x=i}var g,F,m=[],z=0,n=null,e,x,l;return E(p)}
28
- typeof j.fn.dataTable=="function"&&typeof j.fn.dataTableExt.sVersion!="undefined"?j.fn.dataTableExt.aoFeatures.push({fnInit:function(p){return new D({oDTSettings:p})},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools requires DataTables 1.5 or greater - www.datatables.net/download")})(jQuery);
js/tabletools/zeroclipboard.js DELETED
@@ -1,340 +0,0 @@
1
- // Simple Set Clipboard System
2
- // Author: Joseph Huckaby
3
-
4
- var ZeroClipboard = {
5
-
6
- version: "1.0.4-mod",
7
- clients: {}, // registered upload clients on page, indexed by id
8
- moviePath: 'zeroclipboard.swf', // URL to movie
9
- nextId: 1, // ID of next movie
10
-
11
- $: function(thingy) {
12
- // simple DOM lookup utility function
13
- if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
14
- if (!thingy.addClass) {
15
- // extend element with a few useful methods
16
- thingy.hide = function() { this.style.display = 'none'; };
17
- thingy.show = function() { this.style.display = ''; };
18
- thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
19
- thingy.removeClass = function(name) {
20
- this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+#x2F;, '');
21
- };
22
- thingy.hasClass = function(name) {
23
- return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
24
- }
25
- }
26
- return thingy;
27
- },
28
-
29
- setMoviePath: function(path) {
30
- // set path to ZeroClipboard.swf
31
- this.moviePath = path;
32
- },
33
-
34
- dispatch: function(id, eventName, args) {
35
- // receive event from flash movie, send to client
36
- var client = this.clients[id];
37
- if (client) {
38
- client.receiveEvent(eventName, args);
39
- }
40
- },
41
-
42
- register: function(id, client) {
43
- // register new client to receive events
44
- this.clients[id] = client;
45
- },
46
-
47
- getDOMObjectPosition: function(obj) {
48
- // get absolute coordinates for dom element
49
- var info = {
50
- left: 0,
51
- top: 0,
52
- width: obj.width ? obj.width : obj.offsetWidth,
53
- height: obj.height ? obj.height : obj.offsetHeight
54
- };
55
-
56
- if ( obj.style.width != "" )
57
- info.width = obj.style.width.replace("px","");
58
-
59
- if ( obj.style.height != "" )
60
- info.height = obj.style.height.replace("px","");
61
-
62
- while (obj) {
63
- info.left += obj.offsetLeft;
64
- info.top += obj.offsetTop;
65
- obj = obj.offsetParent;
66
- }
67
-
68
- return info;
69
- },
70
-
71
- Client: function(elem) {
72
- // constructor for new simple upload client
73
- this.handlers = {};
74
-
75
- // unique ID
76
- this.id = ZeroClipboard.nextId++;
77
- this.movieId = 'ZeroClipboardMovie_' + this.id;
78
-
79
- // register client with singleton to receive flash events
80
- ZeroClipboard.register(this.id, this);
81
-
82
- // create movie
83
- if (elem) this.glue(elem);
84
- }
85
- };
86
-
87
- ZeroClipboard.Client.prototype = {
88
-
89
- id: 0, // unique ID for us
90
- ready: false, // whether movie is ready to receive events or not
91
- movie: null, // reference to movie object
92
- clipText: '', // text to copy to clipboard
93
- fileName: '', // default file save name
94
- action: 'copy', // action to perform
95
- handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
96
- cssEffects: true, // enable CSS mouse effects on dom container
97
- handlers: null, // user event handlers
98
-
99
- glue: function(elem, title) {
100
- // glue to DOM element
101
- // elem can be ID or actual DOM element object
102
- this.domElement = ZeroClipboard.$(elem);
103
-
104
- // float just above object, or zIndex 99 if dom element isn't set
105
- var zIndex = 99;
106
- if (this.domElement.style.zIndex) {
107
- zIndex = parseInt(this.domElement.style.zIndex) + 1;
108
- }
109
-
110
- // find X/Y position of domElement
111
- var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
112
-
113
- // create floating DIV above element
114
- this.div = document.createElement('div');
115
- var style = this.div.style;
116
- style.position = 'absolute';
117
- style.left = '0px';
118
- style.top = '0px';
119
- style.width = '' + box.width + 'px';
120
- style.height = '' + box.height + 'px';
121
- style.zIndex = zIndex;
122
- if ( typeof title != "undefined" ) {
123
- this.div.title = title;
124
- }
125
-
126
- // style.backgroundColor = '#f00'; // debug
127
- this.domElement.appendChild(this.div);
128
-
129
- this.div.innerHTML = this.getHTML( box.width, box.height );
130
- },
131
-
132
- getHTML: function(width, height) {
133
- // return HTML for movie
134
- var html = '';
135
- var flashvars = 'id=' + this.id +
136
- '&width=' + width +
137
- '&height=' + height;
138
-
139
- if (navigator.userAgent.match(/MSIE/)) {
140
- // IE gets an OBJECT tag
141
- var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
142
- html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
143
- }
144
- else {
145
- // all other browsers get an EMBED tag
146
- html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
147
- }
148
- return html;
149
- },
150
-
151
- hide: function() {
152
- // temporarily hide floater offscreen
153
- if (this.div) {
154
- this.div.style.left = '-2000px';
155
- }
156
- },
157
-
158
- show: function() {
159
- // show ourselves after a call to hide()
160
- this.reposition();
161
- },
162
-
163
- destroy: function() {
164
- // destroy control and floater
165
- if (this.domElement && this.div) {
166
- this.hide();
167
- this.div.innerHTML = '';
168
-
169
- var body = document.getElementsByTagName('body')[0];
170
- try { body.removeChild( this.div ); } catch(e) {;}
171
-
172
- this.domElement = null;
173
- this.div = null;
174
- }
175
- },
176
-
177
- reposition: function(elem) {
178
- // reposition our floating div, optionally to new container
179
- // warning: container CANNOT change size, only position
180
- if (elem) {
181
- this.domElement = ZeroClipboard.$(elem);
182
- if (!this.domElement) this.hide();
183
- }
184
-
185
- if (this.domElement && this.div) {
186
- var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
187
- var style = this.div.style;
188
- style.left = '' + box.left + 'px';
189
- style.top = '' + box.top + 'px';
190
- }
191
- },
192
-
193
- clearText: function() {
194
- // clear the text to be copy / saved
195
- this.clipText = '';
196
- if (this.ready) this.movie.clearText();
197
- },
198
-
199
- appendText: function(newText) {
200
- // append text to that which is to be copied / saved
201
- this.clipText += newText;
202
- if (this.ready) { this.movie.appendText(newText) ;}
203
- },
204
-
205
- setText: function(newText) {
206
- // set text to be copied to be copied / saved
207
- this.clipText = newText;
208
- if (this.ready) { this.movie.setText(newText) ;}
209
- },
210
-
211
- setCharSet: function(charSet) {
212
- // set the character set (UTF16LE or UTF8)
213
- this.charSet = charSet;
214
- if (this.ready) { this.movie.setCharSet(charSet) ;}
215
- },
216
-
217
- setBomInc: function(bomInc) {
218
- // set if the BOM should be included or not
219
- this.incBom = bomInc;
220
- if (this.ready) { this.movie.setBomInc(bomInc) ;}
221
- },
222
-
223
- setFileName: function(newText) {
224
- // set the file name
225
- this.fileName = newText;
226
- if (this.ready) this.movie.setFileName(newText);
227
- },
228
-
229
- setAction: function(newText) {
230
- // set action (save or copy)
231
- this.action = newText;
232
- if (this.ready) this.movie.setAction(newText);
233
- },
234
-
235
- addEventListener: function(eventName, func) {
236
- // add user event listener for event
237
- // event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
238
- eventName = eventName.toString().toLowerCase().replace(/^on/, '');
239
- if (!this.handlers[eventName]) this.handlers[eventName] = [];
240
- this.handlers[eventName].push(func);
241
- },
242
-
243
- setHandCursor: function(enabled) {
244
- // enable hand cursor (true), or default arrow cursor (false)
245
- this.handCursorEnabled = enabled;
246
- if (this.ready) this.movie.setHandCursor(enabled);
247
- },
248
-
249
- setCSSEffects: function(enabled) {
250
- // enable or disable CSS effects on DOM container
251
- this.cssEffects = !!enabled;
252
- },
253
-
254
- receiveEvent: function(eventName, args) {
255
- // receive event from flash
256
- eventName = eventName.toString().toLowerCase().replace(/^on/, '');
257
-
258
- // special behavior for certain events
259
- switch (eventName) {
260
- case 'load':
261
- // movie claims it is ready, but in IE this isn't always the case...
262
- // bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
263
- this.movie = document.getElementById(this.movieId);
264
- if (!this.movie) {
265
- var self = this;
266
- setTimeout( function() { self.receiveEvent('load', null); }, 1 );
267
- return;
268
- }
269
-
270
- // firefox on pc needs a "kick" in order to set these in certain cases
271
- if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
272
- var self = this;
273
- setTimeout( function() { self.receiveEvent('load', null); }, 100 );
274
- this.ready = true;
275
- return;
276
- }
277
-
278
- this.ready = true;
279
- this.movie.clearText();
280
- this.movie.appendText( this.clipText );
281
- this.movie.setFileName( this.fileName );
282
- this.movie.setAction( this.action );
283
- this.movie.setCharSet( this.charSet );
284
- this.movie.setBomInc( this.incBom );
285
- this.movie.setHandCursor( this.handCursorEnabled );
286
- break;
287
-
288
- case 'mouseover':
289
- if (this.domElement && this.cssEffects) {
290
- this.domElement.addClass('hover');
291
- if (this.recoverActive) this.domElement.addClass('active');
292
- }
293
- break;
294
-
295
- case 'mouseout':
296
- if (this.domElement && this.cssEffects) {
297
- this.recoverActive = false;
298
- if (this.domElement.hasClass('active')) {
299
- this.domElement.removeClass('active');
300
- this.recoverActive = true;
301
- }
302
- this.domElement.removeClass('hover');
303
- }
304
- break;
305
-
306
- case 'mousedown':
307
- if (this.domElement && this.cssEffects) {
308
- this.domElement.addClass('active');
309
- }
310
- break;
311
-
312
- case 'mouseup':
313
- if (this.domElement && this.cssEffects) {
314
- this.domElement.removeClass('active');
315
- this.recoverActive = false;
316
- }
317
- break;
318
- } // switch eventName
319
-
320
- if (this.handlers[eventName]) {
321
- for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
322
- var func = this.handlers[eventName][idx];
323
-
324
- if (typeof(func) == 'function') {
325
- // actual function reference
326
- func(this, args);
327
- }
328
- else if ((typeof(func) == 'object') && (func.length == 2)) {
329
- // PHP style object + method, i.e. [myObject, 'myMethod']
330
- func[0][ func[1] ](this, args);
331
- }
332
- else if (typeof(func) == 'string') {
333
- // name of function
334
- window[func](this, args);
335
- }
336
- } // foreach event handler defined
337
- } // user defined handler for event
338
- }
339
-
340
- };
js/tabletools/zeroclipboard.swf DELETED
Binary file
languages/wp-table-reloaded-be_BY.po CHANGED
@@ -2359,12 +2359,12 @@ msgstr "http://tobias.baethge.com/"
2359
#~ msgid ""
2360
#~ "If you like the plugin, please consider <a href=\"http://tobias.baethge."
2361
#~ "com/donate/\"><strong>a donation</strong></a> and rate the plugin in the "
2362
- #~ "<a href=\"http://wordpress.org/extend/plugins/wp-table-reloaded/"
2363
#~ "\">WordPress Plugin Directory</a>."
2364
#~ msgstr ""
2365
#~ "Pokud se Vám plugin líbil a úspěšně ho využíváte, zvažte prosím možnost "
2366
#~ "<a href=\"http://tobias.baethge.com/donate/\"><strong>peněžního daru</"
2367
- #~ "strong></a> a ohodnoťte plugin v <a href=\"http://wordpress.org/extend/"
2368
#~ "plugins/wp-table-reloaded/\">oficiálním adresáři pluginů Wordpressu</a>."
2369
2370
#~ msgid "This is the \"List Tables\" screen."
2359
#~ msgid ""
2360
#~ "If you like the plugin, please consider <a href=\"http://tobias.baethge."
2361
#~ "com/donate/\"><strong>a donation</strong></a> and rate the plugin in the "
2362
+ #~ "<a href=\"http://wordpress.org/plugins/wp-table-reloaded/"
2363
#~ "\">WordPress Plugin Directory</a>."
2364
#~ msgstr ""
2365
#~ "Pokud se Vám plugin líbil a úspěšně ho využíváte, zvažte prosím možnost "
2366
#~ "<a href=\"http://tobias.baethge.com/donate/\"><strong>peněžního daru</"
2367
+ #~ "strong></a> a ohodnoťte plugin v <a href=\"http://wordpress.org/"
2368
#~ "plugins/wp-table-reloaded/\">oficiálním adresáři pluginů Wordpressu</a>."
2369
2370
#~ msgid "This is the \"List Tables\" screen."
languages/wp-table-reloaded-bg_BG.mo CHANGED
File without changes
languages/wp-table-reloaded-bg_BG.po CHANGED
File without changes
languages/wp-table-reloaded-cs_CZ.po CHANGED
@@ -2347,7 +2347,7 @@ msgstr "http://tobias.baethge.com/"
2347
#~ msgid ""
2348
#~ "If you like the plugin, please consider <a href=\"http://tobias.baethge."
2349
#~ "com/donate/\"><strong>a donation</strong></a> and rate the plugin in the "
2350
- #~ "<a href=\"http://wordpress.org/extend/plugins/wp-table-reloaded/"
2351
#~ "\">WordPress Plugin Directory</a>."
2352
#~ msgstr ""
2353
#~ "Pokud se Vám plugin líbil a úspěšně ho využíváte, zvažte prosím možnost "
2347
#~ msgid ""
2348
#~ "If you like the plugin, please consider <a href=\"http://tobias.baethge."
2349
#~ "com/donate/\"><strong>a donation</strong></a> and rate the plugin in the "
2350
+ #~ "<a href=\"http://wordpress.org/plugins/wp-table-reloaded/"
2351
#~ "\">WordPress Plugin Directory</a>."
2352
#~ msgstr ""
2353
#~ "Pokud se Vám plugin líbil a úspěšně ho využíváte, zvažte prosím možnost "
languages/wp-table-reloaded-de_DE.mo CHANGED
Binary file
languages/wp-table-reloaded-de_DE.po CHANGED
@@ -1,16 +1,17 @@
1
msgid ""
2
msgstr ""
3
- "Project-Id-Version: WP-Table Reloaded\n"
4
"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-table-reloaded\n"
5
- "POT-Creation-Date: 2011-01-11 18:13:11+00:00\n"
6
- "PO-Revision-Date: \n"
7
- "Last-Translator: Tobias Baethge <wordpress@tobias.baethge.com>\n"
8
"Language-Team: \n"
9
"MIME-Version: 1.0\n"
10
"Content-Type: text/plain; charset=UTF-8\n"
11
"Content-Transfer-Encoding: 8bit\n"
12
"Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Poedit-Language: German\n"
14
"X-Poedit-Country: \n"
15
"X-Poedit-SourceCharset: utf-8\n"
16
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
@@ -19,2486 +20,2515 @@ msgstr ""
19
"X-Poedit-SearchPath-0: .\n"
20
"X-Textdomain-Support: yes"
21
22
- #: views/view-ajax_list.php:3
23
- #: views/view-list.php:2
24
#@ wp-table-reloaded
25
- msgid "This is a list of all available tables."
26
- msgstr "Dies ist eine Liste aller verfügbaren Tabellen."
27
28
- #: views/view-ajax_list.php:3
29
#@ wp-table-reloaded
30
- msgid "You may insert a table into a post or page here."
31
- msgstr "Hier kannst du eine Tabelle in einen Beitrag oder eine Seite einfügen."
32
33
- #: views/view-ajax_list.php:4
34
- #, php-format
35
#@ wp-table-reloaded
36
- msgid "Click the &quot;%s&quot; link after the desired table and the corresponding shortcode will be inserted into the editor (<strong>[table id=&lt;ID&gt; /]</strong>)."
37
- msgstr "Klicke auf den &quot;%s&quot;-Link hinter der gewünschten Tabelle und der entsprechende Shortcode wird in den Editor eingefügt (<strong>[table id=&lt;ID&gt; /]</strong>)."
38
39
- #: views/view-ajax_list.php:4
40
- #: views/view-ajax_list.php:44
41
#@ wp-table-reloaded
42
- msgid "Insert"
43
- msgstr "Einfügen"
44
45
- #: views/view-ajax_list.php:13
46
- #: views/view-ajax_list.php:21
47
- #: views/view-import.php:99
48
- #: views/view-import.php:108
49
- #: views/view-list.php:13
50
- #: views/view-list.php:23
51
#@ wp-table-reloaded
52
- msgid "ID"
53
- msgstr "ID"
54
55
- #: views/view-add.php:13
56
- #: views/view-ajax_list.php:14
57
- #: views/view-ajax_list.php:22
58
- #: views/view-edit.php:23
59
- #: views/view-edit.php:283
60
- #: views/view-import.php:100
61
- #: views/view-import.php:109
62
- #: views/view-list.php:15
63
- #: views/view-list.php:25
64
#@ wp-table-reloaded
65
- msgid "Table Name"
66
- msgstr "Name der Tabelle"
67
68
- #: views/view-add.php:17
69
- #: views/view-ajax_list.php:15
70
- #: views/view-ajax_list.php:23
71
- #: views/view-edit.php:27
72
- #: views/view-import.php:101
73
- #: views/view-import.php:110
74
- #: views/view-list.php:16
75
- #: views/view-list.php:26
76
#@ wp-table-reloaded
77
- msgid "Description"
78
- msgstr "Beschreibung"
79
80
- #: views/view-ajax_list.php:16
81
- #: views/view-ajax_list.php:24
82
- #: views/view-edit.php:434
83
- #: views/view-import.php:102
84
- #: views/view-import.php:111
85
#@ wp-table-reloaded
86
- msgid "Action"
87
- msgstr "Aktion"
88
89
- #: controllers/controller-admin.php:1860
90
- #: views/view-ajax_list.php:53
91
- #: views/view-export.php:72
92
- #: views/view-list.php:87
93
#@ wp-table-reloaded
94
- msgid "No tables were found."
95
- msgstr "Es wurden keine Tabellen gefunden."
96
97
- #: views/view-list.php:2
98
#@ wp-table-reloaded
99
- msgid "You may add, edit, copy, delete or preview tables here."
100
- msgstr "Hier kannst du Tabellen hinzufügen, bearbeiten, kopieren, löschen oder dir eine Vorschau ansehen."
101
102
- #: views/view-about.php:14
103
- #: views/view-ajax_preview.php:5
104
- #: views/view-edit.php:9
105
- #: views/view-list.php:2
106
#, php-format
107
#@ wp-table-reloaded
108
- msgid "To insert the table into a page, post or text-widget, copy the shortcode <strong>[table id=%s /]</strong> and paste it into the corresponding place in the editor."
109
- msgstr "Um die Tabelle in eine Seite, einen Artikel oder ein Text-Widget einzufügen, kopiere den Shortcode <strong>[table id=%s /]</strong> und füge ihn an der entsprechenden Stelle im Texteditor ein."
110
111
- #: views/view-list.php:2
112
#@ wp-table-reloaded
113
- msgid "Each table has a unique ID that needs to be adjusted in that shortcode."
114
- msgstr "Jede Tabelle hat eine eindeutige ID, die in diesem Shortcode entsprechend angepasst werden muss."
115
116
- #: views/view-list.php:2
117
#, php-format
118
#@ wp-table-reloaded
119
- msgid "You can also click the button &quot;%s&quot; in the editor toolbar to select and insert a table."
120
- msgstr "Du kannst auch auf die Schaltfläche &quot;%s&quot; in der Editor-Symbolleiste nutzen, um eine Tabelle einzufügen."
121
122
- #: views/view-about.php:14
123
- #: views/view-list.php:2
124
#@ wp-table-reloaded
125
- msgid "Table"
126
- msgstr "Tabelle"
127
128
- #: views/view-edit.php:32
129
- #: views/view-list.php:17
130
- #: views/view-list.php:27
131
#@ wp-table-reloaded
132
- msgid "Last Modified"
133
- msgstr "Letzte Änderung"
134
135
- #: views/view-list.php:39
136
#@ wp-table-reloaded
137
- msgid "(no name)"
138
- msgstr "(kein Name)"
139
140
- #: views/view-list.php:40
141
#@ wp-table-reloaded
142
- msgid "(no description)"
143
- msgstr "(keine Beschreibung)"
144
145
- #: views/view-edit.php:33
146
- #: views/view-list.php:44
147
#@ wp-table-reloaded
148
- msgid "by"
149
- msgstr "von"
150
151
- #: views/view-list.php:58
152
- #, php-format
153
#@ wp-table-reloaded
154
- msgid "Edit %s"
155
- msgstr "Bearbeite %s"
156
157
- #: classes/render.class.php:141
158
- #: views/view-list.php:60
159
- #@ default
160
#@ wp-table-reloaded
161
- msgid "Edit"
162
- msgstr "Bearbeiten"
163
164
- #: views/view-list.php:62
165
#@ wp-table-reloaded
166
- msgid "Shortcode"
167
- msgstr "Shortcode"
168
169
- #: views/view-list.php:63
170
#@ wp-table-reloaded
171
- msgid "Copy"
172
- msgstr "Kopieren"
173
174
- #: views/view-list.php:64
175
#@ wp-table-reloaded
176
- msgid "Export"
177
- msgstr "Exportieren"
178
179
- #: views/view-edit.php:156
180
- #: views/view-edit.php:160
181
- #: views/view-list.php:65
182
#@ wp-table-reloaded
183
- msgid "Delete"
184
- msgstr "Löschen"
185
186
- #: views/view-list.php:66
187
- #, php-format
188
#@ wp-table-reloaded
189
- msgid "Preview of Table %s"
190
- msg