PluginProbe
TablePress – Tables in WordPress made easy / 3.0
TablePress – Tables in WordPress made easy v3.0
3.3.4 3.3.3 3.3.2 3.3.1 trunk 1.12 1.14 1.9.2 2.0.4 2.1.7 2.1.8 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 2.4.4 All 44 releases
← All changes | views/view-options.php +97 -57 1.123.0 View file →
@@ -12,8 +12,9 @@
12 12 defined( 'ABSPATH' ) || die( 'No direct script access allowed!' );
13 13
14 14 /**
15 15 * Plugin Options View class
16 + *
16 17 * @package TablePress
17 18 * @subpackage Views
18 19 * @author Tobias Bäthge
19 20 * @since 1.0.0
@@ -24,43 +25,39 @@
24 25 * Set up the view with data and do things that are specific for this view.
25 26 *
26 27 * @since 1.0.0
27 28 *
28 - * @param string $action Action for this view.
29 - * @param array $data Data for this view.
29 + * @param string $action Action for this view.
30 + * @param array<string, mixed> $data Data for this view.
30 31 */
31 - public function setup( $action, array $data ) {
32 + #[\Override]
33 + public function setup( /* string */ $action, array $data ) /* : void */ {
34 + // Don't use type hints in the method declaration to prevent PHP errors, as the method is inherited.
35 +
32 36 parent::setup( $action, $data );
33 37
34 - // Enqueue WordPress copy of CodeMirror, with CSS linting, etc.
35 - $codemirror_settings = wp_enqueue_code_editor( array( 'type' => 'text/css' ) );
36 - if ( ! empty( $codemirror_settings ) ) {
37 - // Load CSS adjustments for CodeMirror and the added vertical resizing.
38 - $this->admin_page->enqueue_style( 'codemirror', array( 'code-editor' ) );
39 - $this->admin_page->enqueue_script( 'codemirror', array( 'jquery', 'jquery-ui-resizable' ), array(
40 - 'codemirror_settings' => $codemirror_settings,
41 - ) );
42 - }
38 + $this->admin_page->enqueue_script( 'options' );
43 39
44 - $this->admin_page->enqueue_script( 'options', array( 'jquery' ), array(
45 - 'strings' => array(
46 - 'uninstall_warning_1' => __( 'Do you really want to uninstall TablePress and delete ALL data?', 'tablepress' ),
47 - 'uninstall_warning_2' => __( 'Are you really sure?', 'tablepress' ),
48 - )
49 - ) );
50 -
51 40 $this->process_action_messages( array(
52 - 'success_save' => __( 'Options saved successfully.', 'tablepress' ),
53 - 'success_save_error_custom_css' => __( 'Options saved successfully, but &#8220;Custom CSS&#8221; was not saved to file.', 'tablepress' ),
54 - 'error_save' => __( 'Error: Options could not be saved.', 'tablepress' ),
41 + 'success_save' => __( 'Options saved successfully.', 'tablepress' ),
42 + 'success_save_error_custom_css' => __( 'Options saved successfully, but &#8220;Custom CSS&#8221; was not saved to file.', 'tablepress' ),
43 + 'error_save' => __( 'Error: Options could not be saved.', 'tablepress' ),
55 44 ) );
56 45
57 46 $this->add_text_box( 'head', array( $this, 'textbox_head' ), 'normal' );
58 47 if ( current_user_can( 'tablepress_edit_options' ) ) {
59 - $this->add_meta_box( 'frontend-options', __( 'Frontend Options and Styling', 'tablepress' ), array( $this, 'postbox_frontend_options' ), 'normal' );
48 + // Enqueue WordPress copy of CodeMirror, with CSS linting, etc., for the "Custom CSS" textarea, which is only shown to admins.
49 + $codemirror_settings = wp_enqueue_code_editor( array( 'type' => 'text/css' ) );
50 + if ( ! empty( $codemirror_settings ) ) {
51 + // Load CSS adjustments for CodeMirror and the added vertical resizing.
52 + $this->admin_page->enqueue_style( 'codemirror', array( 'code-editor' ) );
53 + $this->admin_page->enqueue_script( 'codemirror' );
54 + }
55 +
56 + $this->add_meta_box( 'default-style', sprintf( __( 'Default Styling %s', 'tablepress' ), tb_tp_fs()->is_free_plan() ? '<span class="pill-label">' . __( 'Premium', 'tablepress' ) . '</span>' : '' ), array( $this, 'postbox_default_style_customizer_screen' ), 'normal' );
57 + $this->add_meta_box( 'frontend-options', __( 'Custom Styling', 'tablepress' ), array( $this, 'postbox_frontend_options' ), 'normal' );
60 58 }
61 59 $this->add_meta_box( 'user-options', __( 'User Options', 'tablepress' ), array( $this, 'postbox_user_options' ), 'normal' );
62 - $this->data['submit_button_caption'] = __( 'Save Changes', 'tablepress' );
63 60 $this->add_text_box( 'submit', array( $this, 'textbox_submit_button' ), 'submit' );
64 61 if ( current_user_can( 'deactivate_plugin', TABLEPRESS_BASENAME ) && current_user_can( 'tablepress_edit_options' ) && current_user_can( 'tablepress_delete_tables' ) && ! is_plugin_active_for_network( TABLEPRESS_BASENAME ) ) {
65 62 $this->add_text_box( 'uninstall-tablepress', array( $this, 'textbox_uninstall_tablepress' ), 'submit' );
66 63 }
@@ -66,16 +63,16 @@
66 63 }
67 64 }
68 65
69 66 /**
70 - * Print the screen head text.
67 + * Prints the screen head text.
71 68 *
72 69 * @since 1.0.0
73 70 *
74 - * @param array $data Data for this screen.
75 - * @param array $box Information about the text box.
71 + * @param array<string, mixed> $data Data for this screen.
72 + * @param array<string, mixed> $box Information about the text box.
76 73 */
77 - public function textbox_head( array $data, array $box ) {
74 + public function textbox_head( array $data, array $box ): void {
78 75 ?>
79 76 <p>
80 77 <?php _e( 'TablePress has some options which affect the plugin&#8217;s behavior in different areas.', 'tablepress' ); ?>
81 78 </p>
@@ -82,28 +79,59 @@
82 79 <?php
83 80 }
84 81
85 82 /**
86 - * Print the content of the "Frontend Options" post meta box.
83 + * Prints the content of the "Default Style Customizer Screen" post meta box.
87 84 *
85 + * @since 2.2.0
86 + *
87 + * @param array<string, mixed> $data Data for this screen.
88 + * @param array<string, mixed> $box Information about the meta box.
89 + */
90 + public function postbox_default_style_customizer_screen( array $data, array $box ): void {
91 + if ( tb_tp_fs()->is_free_plan() ) :
92 + ?>
93 + <div style="display:flex;max-width:800px;gap:20px;font-size:14px;">
94 + <div>
95 + <p style="font-size:14px;">
96 + <strong><?php _e( 'Did you know?', 'tablepress' ); ?></strong>
97 + <?php _e( 'The TablePress premium versions come with a table default style customizer!', 'tablepress' ); ?>
98 + <?php _e( 'Choose from multiple style variations or define your own color scheme in an easy-to-use visual tool!', 'tablepress' ); ?>
99 + <strong><?php _e( 'Change your tables’ default style without touching CSS code!', 'tablepress' ); ?></strong>
100 + </p>
101 + <div class="buttons" style="text-align:center;">
102 + <a href="https://tablepress.org/modules/default-style-customizer/?utm_source=plugin&utm_medium=textlink&utm_content=options-screen" class="tablepress-button">
103 + <span><?php _e( 'Find out more', 'tablepress' ); ?></span>
104 + <span class="dashicons dashicons-arrow-right-alt"></span>
105 + </a>
106 + </div>
107 + </div>
108 + <a href="https://tablepress.org/modules/default-style-customizer/?utm_source=plugin&utm_medium=textlink&utm_content=options-screen"><img src="<?php echo esc_url( plugins_url( 'admin/img/default-style-customizer.png', TABLEPRESS__FILE__ ) ); ?>" width="305" height="172" alt="<?php esc_attr_e( 'Screenshot of the Default Style Customizer that is part of the TablePress premium versions.', 'tablepress' ); ?>"></a>
109 + </div>
110 + <?php
111 + endif;
112 + }
113 +
114 + /**
115 + * Prints the content of the "Frontend Options" post meta box.
116 + *
88 117 * @since 1.0.0
89 118 *
90 - * @param array $data Data for this screen.
91 - * @param array $box Information about the meta box.
119 + * @param array<string, mixed> $data Data for this screen.
120 + * @param array<string, mixed> $box Information about the meta box.
92 121 */
93 - public function postbox_frontend_options( array $data, array $box ) {
94 -?>
122 + public function postbox_frontend_options( array $data, array $box ): void {
123 + ?>
95 124 <table class="tablepress-postbox-table fixed">
96 -<tbody>
97 125 <tr>
98 126 <th class="column-1" scope="row"><label for="option-custom-css"><?php _e( 'Custom CSS', 'tablepress' ); ?></label>:</th>
99 - <td class="column-2"><label for="option-use-custom-css"><input type="checkbox" id="option-use-custom-css" name="options[use_custom_css]" value="true"<?php checked( $data['frontend_options']['use_custom_css'] ); ?> /> <?php _e( 'Load this &#8220;Custom CSS&#8221; code to change the table styling:', 'tablepress' ); ?></label>
127 + <td class="column-2"><label><input type="checkbox" id="option-use-custom-css" name="options[use_custom_css]" value="true"<?php checked( $data['frontend_options']['use_custom_css'] ); ?>> <?php _e( 'Load this &#8220;Custom CSS&#8221; code to change the table styling:', 'tablepress' ); ?></label>
100 128 </td>
101 129 </tr>
102 130 <tr>
103 131 <td class="column-1"></td>
104 132 <td class="column-2">
105 - <textarea name="options[custom_css]" id="option-custom-css" class="large-text" rows="8"><?php echo esc_textarea( $data['frontend_options']['custom_css'] ); ?></textarea>
133 + <textarea name="options[custom_css]" id="option-custom-css" class="large-text" rows="8" autocomplete="off"><?php echo esc_textarea( $data['frontend_options']['custom_css'] ); ?></textarea>
106 134 <p class="description">
107 135 <?php
108 136 printf( __( '&#8220;Custom CSS&#8221; (<a href="%s">Cascading Style Sheets</a>) can be used to change the styling or layout of a table.', 'tablepress' ), 'https://www.htmldog.com/guides/css/beginner/' );
109 137 echo ' ';
@@ -115,30 +143,25 @@
115 143 ?>
116 144 </p>
117 145 </td>
118 146 </tr>
119 -</tbody>
120 147 </table>
121 -<?php
148 + <?php
122 149 }
123 150
124 151 /**
125 - * Print the content of the "User Options" post meta box.
152 + * Prints the content of the "User Options" post meta box.
126 153 *
127 154 * @since 1.0.0
128 155 *
129 - * @param array $data Data for this screen.
130 - * @param array $box Information about the meta box.
156 + * @param array<string, mixed> $data Data for this screen.
157 + * @param array<string, mixed> $box Information about the meta box.
131 158 */
132 - public function postbox_user_options( array $data, array $box ) {
133 - ?>
134 -<table class="tablepress-postbox-table fixed">
135 -<tbody>
136 - <?php
159 + public function postbox_user_options( array $data, array $box ): void {
137 160 // Get list of current admin menu entries.
138 161 $entries = array();
139 162 foreach ( $GLOBALS['menu'] as $entry ) {
140 - if ( false !== strpos( $entry[2], '.php' ) ) {
163 + if ( str_contains( $entry[2], '.php' ) ) {
141 164 $entries[ $entry[2] ] = $entry[0];
142 165 }
143 166 }
144 167
@@ -161,37 +184,54 @@
161 184 $select_box .= '<option' . selected( $page, $data['user_options']['parent_page'], false ) . disabled( $page, '-', false ) . ' value="' . $page . '">' . $entry . "</option>\n";
162 185 }
163 186 $select_box .= "</select>\n";
164 187 ?>
188 +<table class="tablepress-postbox-table fixed">
165 189 <tr>
166 190 <th class="column-1" scope="row"><label for="option-admin-menu-parent-page"><?php _e( 'Admin menu entry', 'tablepress' ); ?>:</label></th>
167 191 <td class="column-2"><?php printf( __( 'TablePress shall be shown in this section of my admin menu: %s', 'tablepress' ), $select_box ); ?></td>
168 192 </tr>
169 -</tbody>
170 193 </table>
171 -<?php
194 + <?php
172 195 }
173 196
174 197 /**
175 - * Print the content of the "Admin Options" post meta box.
198 + * Prints "Save Changes" button.
176 199 *
200 + * @since 2.2.0
201 + *
202 + * @param array<string, mixed> $data Data for this screen.
203 + * @param array<string, mixed> $box Information about the text box.
204 + */
205 + #[\Override]
206 + public function textbox_submit_button( array $data, array $box ): void {
207 + ?>
208 + <p class="submit">
209 + <input type="submit" id="tablepress-options-save-changes" class="components-button is-primary button-save-changes" value="<?php esc_attr_e( 'Save Changes', 'tablepress' ); ?>" data-shortcut="<?php echo esc_attr( _x( '%1$sS', 'keyboard shortcut for Save Changes', 'tablepress' ) ); ?>">
210 + </p>
211 + <?php
212 + }
213 +
214 + /**
215 + * Prints the content of the "Admin Options" post meta box.
216 + *
177 217 * @since 1.0.0
178 218 *
179 - * @param array $data Data for this screen.
180 - * @param array $box Information about the text box.
219 + * @param array<string, mixed> $data Data for this screen.
220 + * @param array<string, mixed> $box Information about the text box.
181 221 */
182 - public function textbox_uninstall_tablepress( array $data, array $box ) {
222 + public function textbox_uninstall_tablepress( array $data, array $box ): void {
183 223 ?>
184 224 <h1 style="margin-top:40px;"><?php _e( 'Uninstall TablePress', 'tablepress' ); ?></h1>
185 225 <p>
186 226 <?php
187 - echo __( 'Uninstalling <strong>will permanently delete</strong> all TablePress tables and options from the database.', 'tablepress' ) . '<br />'
188 - . __( 'It is recommended that you create a backup of the tables (by exporting the tables in the JSON format), in case you later change your mind.', 'tablepress' ) . '<br />'
189 - . __( 'You will manually need to remove the plugin&#8217;s files from the plugin folder afterwards.', 'tablepress' ) . '<br />'
227 + echo __( 'Uninstalling <strong>will permanently delete</strong> all TablePress tables and options from the database.', 'tablepress' ) . '<br>'
228 + . __( 'It is recommended that you create a backup of the tables (by exporting the tables in the JSON format), in case you later change your mind.', 'tablepress' ) . '<br>'
229 + . __( 'You will manually need to remove the plugin&#8217;s files from the plugin folder afterwards.', 'tablepress' ) . '<br>'
190 230 . __( 'Be very careful with this and only click the button if you know what you are doing!', 'tablepress' );
191 231 ?>
192 232 </p>
193 - <p><a href="<?php echo TablePress::url( array( 'action' => 'uninstall_tablepress' ), true, 'admin-post.php' ); ?>" id="uninstall-tablepress" class="button"><?php _e( 'Uninstall TablePress', 'tablepress' ); ?></a></p>
233 + <p><a href="<?php echo TablePress::url( array( 'action' => 'uninstall_tablepress' ), true, 'admin-post.php' ); ?>" id="uninstall-tablepress" class="components-button is-secondary is-destructive"><?php _e( 'Uninstall TablePress', 'tablepress' ); ?></a></p>
194 234 <?php
195 235 }
196 236
197 237 } // class TablePress_Options_View