/** * Set up the view with data and do things that are specific for this view * * @since 1.0.0 * * @param string $action Action for this view * @param array $data Data for this view */ public function setup($action, $data) { parent::setup($action, $data); add_thickbox(); $this->admin_page->enqueue_script('list', array('jquery'), array('list' => array('shortcode_popup' => __('To embed this table into a post or page, use this Shortcode:', 'tablepress'), 'donation-message-already-donated' => __('Thank you very much! Your donation is highly appreciated. You just contributed to the further development of TablePress!', 'tablepress'), 'donation-message-maybe-later' => sprintf(__('No problem! I still hope you enjoy the benefits that TablePress adds to your site. If you should change your mind, you\'ll always find the “Donate” button on the <a href="%s">TablePress website</a>.', 'tablepress'), 'http://tablepress.org/')))); if ($data['messages']['first_visit']) { $this->add_header_message('<strong><em>' . __('Welcome!', 'tablepress') . '</em></strong><br />' . __('Thank you for using TablePress for the first time!', 'tablepress') . ' ' . sprintf(__('If you encounter any questions or problems, please visit the <a href="%1$s">FAQ</a>, the <a href="%2$s">documentation</a>, and the <a href="%3$s">Support</a> section on the <a href="%4$s">plugin website</a>.', 'tablepress'), 'http://tablepress.org/faq/', 'http://tablepress.org/documentation/', 'http://tablepress.org/support/', 'http://tablepress.org/') . '<br /><br />' . $this->ajax_link(array('action' => 'hide_message', 'item' => 'first_visit', 'return' => 'list'), __('Hide this message', 'tablepress'))); } if ($data['messages']['wp_table_reloaded_warning']) { $this->add_header_message('<strong><em>' . __('Attention!', 'tablepress') . '</em></strong><br />' . __('You have activated the plugin WP-Table Reloaded, which can not be used together with TablePress.', 'tablepress') . '<br />' . __('It is strongly recommended that you switch from WP-Table Reloaded to TablePress, which not only fixes many problems, but also has more and better features than WP-Table Reloaded.', 'tablepress') . '<br />' . sprintf(__('Please follow the <a href="%s">migration guide</a> to move your tables and then deactivate WP-Table Reloaded!', 'tablepress'), 'http://tablepress.org/migration-from-wp-table-reloaded/') . '<br />' . '<a href="' . TablePress::url(array('action' => 'import')) . '" class="button button-primary button-large" title="' . __('Import your tables from WP-Table Reloaded', 'tablepress') . '" style="color:#ffffff;margin-top:5px;">' . __('Import your tables from WP-Table Reloaded', 'tablepress') . '</a>', 'error'); } if ($data['messages']['donation_message']) { $this->add_header_message('<img alt="' . __('Tobias Bäthge, developer of TablePress', 'tablepress') . '" src="https://secure.gravatar.com/avatar/50f1cff2e27a1f522b18ce229c057bc5?s=94" height="94" width="94" style="float:left;margin-right:10px;" />' . __('Hi, my name is Tobias, I\'m the developer of the TablePress plugin.', 'tablepress') . '<br /><br />' . __('Thanks for using it! You\'ve installed TablePress over a month ago.', 'tablepress') . ' ' . sprintf(_n('If everything works and you are satisfied with the results of managing your %s table, isn\'t that worth a coffee or two?', 'If everything works and you are satisfied with the results of managing your %s tables, isn\'t that worth a coffee or two?', $data['table_count'], 'tablepress'), $data['table_count']) . '<br/>' . sprintf(__('<a href="%s">Donations</a> help me to continue user support and development of this <em>free</em> software — things for which I spend countless hours of my free time! Thank you very much!', 'tablepress'), 'http://tablepress.org/donate/') . '<br/><br />' . __('Sincerly, Tobias', 'tablepress') . '<br /><br />' . sprintf('<a href="%s" target="_blank"><strong>%s</strong></a>', 'http://tablepress.org/donate/', __('Sure, I\'ll buy you a coffee and support TablePress!', 'tablepress')) . ' · ' . $this->ajax_link(array('action' => 'hide_message', 'item' => 'donation_nag', 'return' => 'list', 'target' => 'already-donated'), __('I already donated.', 'tablepress')) . ' · ' . $this->ajax_link(array('action' => 'hide_message', 'item' => 'donation_nag', 'return' => 'list', 'target' => 'maybe-later'), __('No, thanks. Don\'t ask again.', 'tablepress'))); } if ($data['messages']['show_plugin_update']) { $message = '<strong><em>' . sprintf(__('Thank you for updating to TablePress %s!', 'tablepress'), TablePress::version) . '</em></strong><br />'; if (!empty($data['messages']['plugin_update_message'])) { $message .= $data['messages']['plugin_update_message'] . '<br />'; } $message .= sprintf(__('Please read the <a href="%s">release announcement</a> for more information.', 'tablepress'), 'http://tablepress.org/news/') . ' ' . sprintf(__('If you like the new features and enhancements, <a href="%s">giving a donation</a> towards the further support and development of TablePress is recommended. Thank you!', 'tablepress'), 'http://tablepress.org/donate/') . '<br /><br />'; $message .= $this->ajax_link(array('action' => 'hide_message', 'item' => 'plugin_update', 'return' => 'list'), __('Hide this message', 'tablepress')); $this->add_header_message($message); } $this->process_action_messages(array('success_delete' => _n('The table was deleted successfully.', 'The tables were deleted successfully.', 1, 'tablepress'), 'success_delete_plural' => _n('The table was deleted successfully.', 'The tables were deleted successfully.', 2, 'tablepress'), 'error_delete' => __('Error: The table could not be deleted.', 'tablepress'), 'error_save' => __('Error: The table could not be saved.', 'tablepress'), 'success_copy' => _n('The table was copied successfully.', 'The tables were copied successfully.', 1, 'tablepress'), 'success_copy_plural' => _n('The table was copied successfully.', 'The tables were copied successfully.', 2, 'tablepress'), 'error_copy' => __('Error: The table could not be copied.', 'tablepress'), 'error_no_table' => __('Error: You did not specify a valid table ID.', 'tablepress'), 'error_load_table' => __('Error: This table could not be loaded!', 'tablepress'), 'error_bulk_action_invalid' => __('Error: This bulk action is invalid!', 'tablepress'), 'error_no_selection' => __('Error: You did not select any tables!', 'tablepress'), 'error_delete_not_all_tables' => __('Notice: Not all selected tables could be deleted!', 'tablepress'), 'error_copy_not_all_tables' => __('Notice: Not all selected tables could be copied!', 'tablepress'), 'success_import' => __('The tables were imported successfully.', 'tablepress'), 'success_import_wp_table_reloaded' => __('The tables were imported successfully from WP-Table Reloaded.', 'tablepress'))); $this->add_text_box('head', array($this, 'textbox_head'), 'normal'); $this->add_text_box('tables-list', array($this, 'textbox_tables_list'), 'normal'); add_screen_option('per_page', array('label' => __('Tables', 'tablepress'), 'default' => 20)); // Admin_Controller contains function to allow changes to this in the Screen Options to be saved $this->wp_list_table = new TablePress_All_Tables_List_Table(); $this->wp_list_table->set_items($this->data['tables']); $this->wp_list_table->prepare_items(); // cleanup Request URI string, which WP_List_Table uses to generate the sort URLs $_SERVER['REQUEST_URI'] = remove_query_arg(array('message', 'table_id'), $_SERVER['REQUEST_URI']); }
/** * Set up the view with data and do things that are specific for this view. * * @param string $action Action for this view. * @param array $data Data for this view. */ public function setup($action, array $data) { $params = array('option_name' => 'tablepress_stockflock_config', 'default_value' => array()); $this->stockflock_config = TablePress::load_class('TablePress_WP_Option', 'class-wp_option.php', 'classes', $params); parent::setup($action, $data); $this->add_header_message('<span>' . __('Please contact stockflock if you get any issue with this plugin.', 'tablepress') . '</span>', 'notice-info'); $this->process_action_messages(array('success_save' => __('Stockflock Changes saved successfully.', 'tablepress'), 'error_save' => __('Error: Stockflock Changes could not be saved.', 'tablepress'))); $this->add_meta_box('stockflock-options', __('Stockflock Options', 'tablepress'), array($this, 'stockflock_plugin_options'), 'normal'); $this->add_text_box('submit', array($this, 'textbox_submit_button'), 'submit'); }
/** * Set up the view with data and do things that are specific for this view. * * @since 1.0.0 * * @param string $action Action for this view. * @param array $data Data for this view. */ public function setup($action, array $data) { parent::setup($action, $data); $this->admin_page->enqueue_script('add', array('jquery-core')); $this->process_action_messages(array('error_add' => __('Error: The table could not be added.', 'tablepress'))); $this->add_text_box('head', array($this, 'textbox_head'), 'normal'); $this->add_meta_box('add-table', __('Add New Table', 'tablepress'), array($this, 'postbox_add_table'), 'normal'); $this->data['submit_button_caption'] = __('Add Table', 'tablepress'); $this->add_text_box('submit', array($this, 'textbox_submit_button'), 'submit'); }
/** * Set up the view with data and do things that are specific for this view. * * @since 1.0.0 * * @param string $action Action for this view. * @param array $data Data for this view. */ public function setup($action, array $data) { parent::setup($action, $data); $this->add_meta_box('plugin-purpose', __('Plugin Purpose', 'tablepress'), array($this, 'postbox_plugin_purpose'), 'normal'); $this->add_meta_box('usage', __('Usage', 'tablepress'), array($this, 'postbox_usage'), 'normal'); $this->add_meta_box('more-information', __('More Information and Documentation', 'tablepress'), array($this, 'postbox_more_information'), 'normal'); $this->add_meta_box('help-support', __('Help and Support', 'tablepress'), array($this, 'postbox_help_support'), 'normal'); $this->add_meta_box('author-license', __('Author and License', 'tablepress'), array($this, 'postbox_author_license'), 'side'); $this->add_meta_box('credits-thanks', __('Credits and Thanks', 'tablepress'), array($this, 'postbox_credits_thanks'), 'side'); $this->add_meta_box('debug-version-information', __('Debug and Version Information', 'tablepress'), array($this, 'postbox_debug_version_information'), 'side'); }
/** * Set up the view with data and do things that are specific for this view * * @since 1.0.0 * * @param string $action Action for this view * @param array $data Data for this view */ public function setup($action, $data) { parent::setup($action, $data); $this->admin_page->enqueue_script('import', array('jquery'), array('import' => array('error_wp_table_reloaded_nothing_selected' => __('Error: You did not select what to import from WP-Table Reloaded!', 'tablepress')))); $this->process_action_messages(array('error_import' => __('Error: The import failed.', 'tablepress'), 'error_no_zip_import' => __('Error: Import of ZIP files is not available on this server.', 'tablepress'), 'error_import_zip_open' => __('Error: The ZIP file could not be opened.', 'tablepress'), 'error_import_zip_content' => __('Error: The data in the ZIP file is invalid.', 'tablepress'), 'error_import_no_replace_id' => __('Error: You selected to replace an existing table, but did not select a table.', 'tablepress'), 'error_import_source_invalid' => __('Error: The source for the import is invalid or could not be accessed.', 'tablepress'), 'error_import_data' => __('Error: The data for the import is invalid.', 'tablepress'), 'error_wp_table_reloaded_nothing_selected' => __('Error: You did not select what to import from WP-Table Reloaded!', 'tablepress'), 'error_wp_table_reloaded_not_installed' => __('Error: Existing WP-Table Reloaded tables were not found in the database.', 'tablepress'), 'error_import_wp_table_reloaded' => __('Error: The tables from WP-Table Reloaded could not be imported.', 'tablepress'), 'error_wp_table_reloaded_dump_file' => __('Error: The WP-Table Reloaded Dump File could not be imported!', 'tablepress'))); $this->add_text_box('head', array($this, 'textbox_head'), 'normal'); $this->add_meta_box('import-form', __('Import Tables', 'tablepress'), array($this, 'postbox_import_form'), 'normal'); if (current_user_can('tablepress_import_tables_wptr')) { $this->add_meta_box('import-wp-table-reloaded', __('Import from WP-Table Reloaded', 'tablepress'), array($this, 'postbox_wp_table_reloaded_import'), 'additional'); } }
/** * Show a list of tables in the Editor toolbar Thickbox (opened by TinyMCE or Quicktags button). * * @since 1.0.0 */ public function handle_get_action_editor_button_thickbox() { TablePress::check_nonce('editor_button_thickbox'); if (!current_user_can('tablepress_list_tables')) { wp_die(__('You do not have sufficient permissions to access this page.', 'default'), 403); } $this->init_i18n_support(); $view_data = array('table_ids' => TablePress::$model_table->load_all(false)); set_current_screen('tablepress_editor_button_thickbox'); // Prepare, initialize, and render the view. $this->view = TablePress::load_view('editor_button_thickbox', $view_data); $this->view->render(); }
/** * Set up the view with data and do things that are specific for this view. * * @since 1.0.0 * * @param string $action Action for this view. * @param array $data Data for this view. */ public function setup($action, array $data) { parent::setup($action, $data); $this->process_action_messages(array('error_export' => __('Error: The export failed.', 'tablepress'), 'error_load_table' => __('Error: This table could not be loaded!', 'tablepress'), 'error_table_corrupted' => __('Error: The internal data of this table is corrupted!', 'tablepress'), 'error_create_zip_file' => __('Error: The ZIP file could not be created.', 'tablepress'))); $this->add_text_box('head', array($this, 'textbox_head'), 'normal'); if (0 === $data['tables_count']) { $this->add_meta_box('no-tables', __('Export Tables', 'tablepress'), array($this, 'postbox_no_tables'), 'normal'); } else { $this->admin_page->enqueue_script('export', array('jquery-core')); $this->add_meta_box('export-form', __('Export Tables', 'tablepress'), array($this, 'postbox_export_form'), 'normal'); $this->data['submit_button_caption'] = _x('Download Export File', 'button', 'tablepress'); $this->add_text_box('submit', array($this, 'textbox_submit_button'), 'submit'); } }
/** * Set up the view with data and do things that are specific for this view * * @since 1.0.0 * * @param string $action Action for this view * @param array $data Data for this view */ public function setup($action, $data) { parent::setup($action, $data); $this->admin_page->enqueue_style('codemirror'); $this->admin_page->enqueue_script('codemirror', array(), false, true); $this->admin_page->enqueue_script('options', array('jquery', 'tablepress-codemirror')); $this->process_action_messages(array('success_save' => __('Options saved successfully.', 'tablepress'), 'success_save_error_custom_css' => __('Options saved successfully, but “Custom CSS” was not saved to file.', 'tablepress'), 'error_save' => __('Error: Options could not be saved.', 'tablepress'), 'success_import_wp_table_reloaded' => __('The WP-Table Reloaded “Custom CSS” was imported successfully.', 'tablepress'))); $this->add_text_box('head', array($this, 'textbox_head'), 'normal'); if (current_user_can('tablepress_edit_options')) { $this->add_meta_box('frontend-options', __('Frontend Options', 'tablepress'), array($this, 'postbox_frontend_options'), 'normal'); } $this->add_meta_box('user-options', __('User Options', 'tablepress'), array($this, 'postbox_user_options'), 'normal'); $this->data['submit_button_caption'] = __('Save Changes', 'tablepress'); $this->add_text_box('submit', array($this, 'textbox_submit_button'), 'submit'); }
/** * Set up the view with data and do things that are specific for this view. * * @since 1.0.0 * * @param string $action Action for this view. * @param array $data Data for this view. */ public function setup($action, array $data) { parent::setup($action, $data); $this->admin_page->enqueue_style('codemirror'); $this->admin_page->enqueue_script('codemirror', array(), array(), true); $this->admin_page->enqueue_script('options', array('jquery-core', 'tablepress-codemirror', 'jquery-ui-resizable'), array('strings' => array('uninstall_warning_1' => __('Do you really want to uninstall TablePress and delete ALL data?', 'tablepress'), 'uninstall_warning_2' => __('Are you really sure?', 'tablepress')))); $this->process_action_messages(array('success_save' => __('Options saved successfully.', 'tablepress'), 'success_save_error_custom_css' => __('Options saved successfully, but “Custom CSS” was not saved to file.', 'tablepress'), 'error_save' => __('Error: Options could not be saved.', 'tablepress'), 'success_import_wp_table_reloaded' => __('The WP-Table Reloaded “Custom CSS” was imported successfully.', 'tablepress'))); $this->add_text_box('head', array($this, 'textbox_head'), 'normal'); if (current_user_can('tablepress_edit_options')) { $this->add_meta_box('frontend-options', __('Frontend Options', 'tablepress'), array($this, 'postbox_frontend_options'), 'normal'); } $this->add_meta_box('user-options', __('User Options', 'tablepress'), array($this, 'postbox_user_options'), 'normal'); $this->data['submit_button_caption'] = __('Save Changes', 'tablepress'); $this->add_text_box('submit', array($this, 'textbox_submit_button'), 'submit'); if (current_user_can('activate_plugins') && current_user_can('tablepress_edit_options') && current_user_can('tablepress_delete_tables') && !is_plugin_active_for_network(TABLEPRESS_BASENAME)) { $this->add_text_box('uninstall-tablepress', array($this, 'textbox_uninstall_tablepress'), 'submit'); } }
/** * Set up the view with data and do things that are specific for this view * * @since 1.0.0 * * @param string $action Action for this view * @param array $data Data for this view */ public function setup($action, array $data) { parent::setup($action, $data); if (isset($data['table']['is_corrupted']) && $data['table']['is_corrupted']) { $this->add_text_box('table-corrupted', array($this, 'textbox_corrupted_table'), 'normal'); return; } $action_messages = array('success_save' => __('The table was saved successfully.', 'tablepress'), 'success_add' => __('The table was added successfully.', 'tablepress'), 'success_copy' => _n('The table was copied successfully.', 'The tables were copied successfully.', 1, 'tablepress') . ' ' . sprintf(__('You are now seeing the copied table, which has the table ID “%s”.', 'tablepress'), esc_html($data['table']['id'])), 'success_import' => __('The table was imported successfully.', 'tablepress'), 'success_import_wp_table_reloaded' => __('The table was imported successfully from WP-Table Reloaded.', 'tablepress'), 'error_save' => __('Error: The table could not be saved.', 'tablepress'), 'error_delete' => __('Error: The table could not be deleted.', 'tablepress'), 'success_save_success_id_change' => __('The table was saved successfully, and the table ID was changed.', 'tablepress'), 'success_save_error_id_change' => __('The table was saved successfully, but the table ID could not be changed!', 'tablepress')); // Custom handling instead of $this->process_action_messages(). Also, $action_messages is used below. if ($data['message'] && isset($action_messages[$data['message']])) { $class = 'error' == substr($data['message'], 0, 5) || in_array($data['message'], array('success_save_error_id_change'), true) ? 'error' : 'updated'; $this->add_header_message("<strong>{$action_messages[$data['message']]}</strong>", $class); } wp_enqueue_style('wp-jquery-ui-dialog'); // do this here to get CSS into <head> wp_enqueue_script('wpdialogs'); // For the Advanced Editor add_action('admin_footer', array($this, 'dequeue_media_upload_js'), 2); // remove default media-upload.js, in favor of own code add_thickbox(); add_filter('media_view_strings', array($this, 'change_media_view_strings')); wp_enqueue_media(); // Use modified version of wpLink, instead of default version (changes "Title" to "Link Text") wp_deregister_script('wplink'); $version = 0 === strpos($GLOBALS['wp_version'], '3.8') ? '38' : ''; // temporary backward-compatibility with WordPress 3.8, where we keep loading the old version of the customized wplink script $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; // See wp-includes/script-loader.php for default parameters $wplink_url = plugins_url("admin/js/tp_wplink{$version}{$suffix}.js", TABLEPRESS__FILE__); wp_enqueue_script('wplink', $wplink_url, array('jquery'), TablePress::version, true); wp_localize_script('wplink', 'wpLinkL10n', array('title' => _x('Insert/edit link', 'Insert Link dialog', 'tablepress'), 'update' => _x('Update', 'Insert Link dialog', 'tablepress'), 'save' => _x('Add Link', 'Insert Link dialog', 'tablepress'), 'noTitle' => _x('(no title)', 'Insert Link dialog', 'tablepress'), 'noMatchesFound' => _x('No matches found.', 'Insert Link dialog', 'tablepress'), 'link_text' => _x('Link Text', 'Insert Link dialog', 'tablepress'))); $this->admin_page->enqueue_style('edit'); $this->admin_page->enqueue_script('edit', array('jquery', 'jquery-ui-sortable', 'json2'), array('options' => array('print_debug_output' => apply_filters('tablepress_print_debug_output', isset($_GET['debug']) ? 'true' == $_GET['debug'] : WP_DEBUG), 'cells_advanced_editor' => apply_filters('tablepress_edit_cells_advanced_editor', true), 'cells_auto_grow' => apply_filters('tablepress_edit_cells_auto_grow', true), 'shortcode' => esc_js(TablePress::$shortcode)), 'strings' => array_merge(array('no_remove_all_rows' => __('You can not delete all table rows!', 'tablepress'), 'no_remove_all_columns' => __('You can not delete all table columns!', 'tablepress'), 'no_rows_selected' => __('You did not select any rows!', 'tablepress'), 'no_columns_selected' => __('You did not select any columns!', 'tablepress'), 'append_num_rows_invalid' => __('The value for the number of rows is invalid!', 'tablepress'), 'append_num_columns_invalid' => __('The value for the number of columns is invalid!', 'tablepress'), 'ays_remove_rows_singular' => _n('Do you really want to delete the selected row?', 'Do you really want to delete the selected rows?', 1, 'tablepress'), 'ays_remove_rows_plural' => _n('Do you really want to delete the selected row?', 'Do you really want to delete the selected rows?', 2, 'tablepress'), 'ays_remove_columns_singular' => _n('Do you really want to delete the selected column?', 'Do you really want to delete the selected columns?', 1, 'tablepress'), 'ays_remove_columns_plural' => _n('Do you really want to delete the selected column?', 'Do you really want to delete the selected columns?', 2, 'tablepress'), 'advanced_editor_open' => __('Please click into the cell that you want to edit using the “Advanced Editor”.', 'tablepress'), 'rowspan_add' => __('To combine cells within a column, click into the cell below the cell that has the content the combined cells shall have.', 'tablepress'), 'colspan_add' => __('To combine cells within a row, click into the cell to the right of the cell that has the content the combined cells shall have.', 'tablepress'), 'span_add_datatables_warning' => __('Attention: You have enabled the usage of the DataTables JavaScript library for features like sorting, search, or pagination.', 'tablepress') . "\n" . __('Unfortunately, these can not be used in tables with combined cells.', 'tablepress') . "\n" . __('Do you want to proceed and automatically turn off the usage of DataTables for this table?', 'tablepress'), 'link_add' => __('Please click into the cell that you want to add a link to.', 'tablepress') . "\n" . __('You can then enter the Link URL and Text or choose an existing page or post.', 'tablepress'), 'image_add' => __('Please click into the cell that you want to add an image to.', 'tablepress') . "\n" . __('The Media Library will open, where you can select or upload the desired image or enter the image URL.', 'tablepress') . "\n" . sprintf(__('Click the “%s” button to insert the image.', 'tablepress'), __('Insert into Post', 'default')), 'unsaved_changes_unload' => __('The changes to this table were not saved yet and will be lost if you navigate away from this page.', 'tablepress'), 'preparing_preview' => __('The Table Preview is being loaded...', 'tablepress'), 'preview_error' => __('The Table Preview could not be loaded.', 'tablepress'), 'save_changes_success' => __('Saving successful', 'tablepress'), 'save_changes_error' => __('Saving failed', 'tablepress'), 'saving_changes' => __('Changes are being saved...', 'tablepress'), 'table_id_not_empty' => __('The Table ID field can not be empty. Please enter a Table ID!', 'tablepress'), 'table_id_not_zero' => __('The Table ID “0” is not supported. Please enter a different Table ID!', 'tablepress'), 'ays_change_table_id' => __('Do you really want to change the Table ID? All Shortcodes for this table in your pages and posts will have to be adjusted!', 'tablepress'), 'extra_css_classes_invalid' => __('The entered value in the field “Extra CSS classes” is invalid.', 'tablepress'), 'num_pagination_entries_invalid' => __('The entered value in the field “Pagination Entries” is not a number.', 'tablepress'), 'sort_asc' => __('Sort ascending', 'tablepress'), 'sort_desc' => __('Sort descending', 'tablepress'), 'no_rowspan_first_row' => __('You can not add rowspan to the first row!', 'tablepress'), 'no_colspan_first_col' => __('You can not add colspan to the first column!', 'tablepress'), 'no_rowspan_table_head' => __('You can not connect cells into the table head row!', 'tablepress'), 'no_rowspan_table_foot' => __('You can not connect cells out of the table foot row!', 'tablepress')), $action_messages))); $this->add_text_box('head', array($this, 'textbox_head'), 'normal'); $this->add_text_box('buttons-1', array($this, 'textbox_buttons'), 'normal'); $this->add_meta_box('table-information', __('Table Information', 'tablepress'), array($this, 'postbox_table_information'), 'normal'); $this->add_meta_box('table-data', __('Table Content', 'tablepress'), array($this, 'postbox_table_data'), 'normal'); $this->add_meta_box('table-manipulation', __('Table Manipulation', 'tablepress'), array($this, 'postbox_table_manipulation'), 'normal'); $this->add_meta_box('table-options', __('Table Options', 'tablepress'), array($this, 'postbox_table_options'), 'normal'); $this->add_meta_box('datatables-features', __('Features of the DataTables JavaScript library', 'tablepress'), array($this, 'postbox_datatables_features'), 'normal'); $this->add_text_box('hidden-containers', array($this, 'textbox_hidden_containers'), 'additional'); $this->add_text_box('buttons-2', array($this, 'textbox_buttons'), 'additional'); $this->add_text_box('other-actions', array($this, 'textbox_other_actions'), 'submit'); }