PluginProbe
Copy Anything to Clipboard for WordPress – Copy Button, Copy Text & Copy Code / 1.7.2
Copy Anything to Clipboard for WordPress – Copy Button, Copy Text & Copy Code v1.7.2
5.5.3 3.1.0 3.2.0 3.2.1 3.3.0 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.6.0 3.7.0 3.8.0 3.8.1 3.8.2 3.8.3 4.0.0 4.0.2 4.0.3 4.0.4 4.0.5 4.1.0 4.1.1 All 78 releases
copy-the-code / classes / class-copy-the-code-page.php

class-copy-the-code-page.php in Copy Anything to Clipboard for WordPress – Copy Button, Copy Text & Copy Code 1.7.2, at classes/class-copy-the-code-page.php

380 lines 14.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Settings Page
4 *
5 * @package Copy the Code
6 * @since 1.2.0
7 */
8
9 if ( ! class_exists( 'Copy_The_Code_Page' ) ) :
10
11 /**
12 * Copy_The_Code_Page
13 *
14 * @since 1.2.0
15 */
16 class Copy_The_Code_Page {
17
18 /**
19 * Instance
20 *
21 * @since 1.2.0
22 *
23 * @access private
24 * @var object Class object.
25 */
26 private static $instance;
27
28 /**
29 * Initiator
30 *
31 * @since 1.2.0
32 *
33 * @return object initialized object of class.
34 */
35 public static function get_instance() {
36 if ( ! isset( self::$instance ) ) {
37 self::$instance = new self;
38 }
39 return self::$instance;
40 }
41
42 /**
43 * Constructor
44 *
45 * @since 1.2.0
46 */
47 public function __construct() {
48 add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );
49 add_action( 'plugin_action_links_' . COPY_THE_CODE_BASE, array( $this, 'action_links' ) );
50 add_action( 'after_setup_theme', array( $this, 'save_settings' ) );
51 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_assets' ) );
52 add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_assets' ) );
53 }
54
55 /**
56 * Enqueue Assets.
57 *
58 * @version 1.7.0
59 *
60 * @return void
61 */
62 function admin_enqueue_assets() {
63 wp_enqueue_script( 'copy-the-code-page', COPY_THE_CODE_URI . 'assets/js/page.js', array( 'jquery' ), COPY_THE_CODE_VER, true );
64 }
65
66 /**
67 * Enqueue Assets.
68 *
69 * @version 1.0.0
70 *
71 * @return void
72 */
73 function enqueue_assets() {
74 wp_enqueue_style( 'copy-the-code', COPY_THE_CODE_URI . 'assets/css/copy-the-code.css', null, COPY_THE_CODE_VER, 'all' );
75 wp_enqueue_script( 'copy-the-code', COPY_THE_CODE_URI . 'assets/js/copy-the-code.js', array( 'jquery' ), COPY_THE_CODE_VER, true );
76 wp_localize_script(
77 'copy-the-code',
78 'copyTheCode',
79 apply_filters(
80 'copy_the_code_localize_vars',
81 array(
82 'selector' => 'pre', // Selector in which have the actual `<code>`.
83 'settings' => $this->get_page_settings(),
84 'string' => array(
85 'title' => $this->get_page_setting( 'button-title', __( 'Copy to Clipboard', 'copy-the-code' ) ),
86 'copy' => $this->get_page_setting( 'button-text', __( 'Copy', 'copy-the-code' ) ),
87 'copied' => $this->get_page_setting( 'button-copy-text', __( 'Copied!', 'copy-the-code' ) ),
88 ),
89 )
90 )
91 );
92 }
93
94 /**
95 * Admin Settings
96 *
97 * @return void
98 */
99 function save_settings() {
100
101 if ( isset( $_REQUEST['page'] ) && strpos( $_REQUEST['page'], 'copy-the-code' ) !== false ) {
102
103 // Only admins can save settings.
104 if ( ! current_user_can( 'manage_options' ) ) {
105 return;
106 }
107
108 // Make sure we have a valid nonce.
109 if ( isset( $_REQUEST['copy-the-code'] ) && wp_verify_nonce( $_REQUEST['copy-the-code'], 'copy-the-code-nonce' ) ) {
110
111 // Stored Settings.
112 $stored_data = $this->get_page_settings();
113
114 // New settings.
115 $new_data = array(
116 'selector' => ( isset( $_REQUEST['selector'] ) ) ? $_REQUEST['selector'] : 'pre',
117 'copy-as' => ( isset( $_REQUEST['copy-as'] ) ) ? $_REQUEST['copy-as'] : 'html',
118 'button-text' => ( isset( $_REQUEST['button-text'] ) ) ? $_REQUEST['button-text'] : 'Copy',
119 'button-title' => ( isset( $_REQUEST['button-title'] ) ) ? $_REQUEST['button-title'] : 'Copy',
120 'button-copy-text' => ( isset( $_REQUEST['button-copy-text'] ) ) ? $_REQUEST['button-copy-text'] : 'Copied!',
121 'button-position' => ( isset( $_REQUEST['button-position'] ) ) ? $_REQUEST['button-position'] : 'inside',
122 );
123
124 // Merge settings.
125 $data = wp_parse_args( $new_data, $stored_data );
126
127 // Update settings.
128 update_option( 'copy-the-code-settings', $data );
129 }
130 }
131 }
132
133 /**
134 * Get Setting
135 *
136 * @return mixed Single Setting.
137 */
138 function get_page_setting( $key = '', $default_value = '' ) {
139 $settings = $this->get_page_settings();
140
141 if ( array_key_exists( $key, $settings ) ) {
142 return $settings[ $key ];
143 }
144
145 return $default_value;
146 }
147
148 /**
149 * Settings
150 *
151 * @return array Settings.
152 */
153 function get_page_settings() {
154 $defaults = apply_filters(
155 'copy_the_code_default_page_settings',
156 array(
157 'selector' => 'pre',
158 'copy-as' => 'html',
159 'button-text' => __( 'Copy', 'copy-the-code' ),
160 'button-title' => __( 'Copy to Clipboard', 'copy-the-code' ),
161 'button-copy-text' => __( 'Copied!', 'copy-the-code' ),
162 'button-position' => 'inside',
163 )
164 );
165
166 $stored = get_option( 'copy-the-code-settings', $defaults );
167
168 return apply_filters( 'copy_the_code_page_settings', wp_parse_args( $stored, $defaults ) );
169 }
170
171 /**
172 * Show action links on the plugin screen.
173 *
174 * @param mixed $links Plugin Action links.
175 * @return array
176 */
177 function action_links( $links ) {
178 $action_links = array(
179 'settings' => '<a href="' . admin_url( 'options-general.php?page=copy-the-code' ) . '" aria-label="' . esc_attr__( 'Settings', 'copy-the-code' ) . '">' . esc_html__( 'Settings', 'copy-the-code' ) . '</a>',
180 );
181
182 return array_merge( $action_links, $links );
183 }
184
185 /**
186 * Register menu
187 *
188 * @since 1.2.0
189 * @return void
190 */
191 function register_admin_menu() {
192 add_submenu_page( 'options-general.php', __( 'Copy to Clipboard', 'copy-the-code' ), __( 'Copy to Clipboard', 'copy-the-code' ), 'manage_options', 'copy-the-code', array( $this, 'options_page' ) );
193 }
194
195 /**
196 * Tabs
197 *
198 * @since 1.7.0
199 * @return array
200 */
201 function get_tabs() {
202 return array(
203 'general' => esc_html__( 'General', 'copy-the-code' ),
204 'style' => esc_html__( 'Style', 'copy-the-code' ),
205 );
206 }
207
208 /**
209 * Option Page
210 *
211 * @since 1.2.0
212 * @return void
213 */
214 function options_page() {
215 $data = $this->get_page_settings();
216 ?>
217 <div class="wrap copy-the-code" id="sync-post">
218 <div class="wrap">
219 <h1><?php echo esc_html( COPY_THE_CODE_TITLE ); ?> <small>v<?php echo esc_html( COPY_THE_CODE_VER ); ?></small></h1>
220 <div id="poststuff">
221 <div id="post-body" class="columns-2">
222 <div id="post-body-content">
223
224 <div class="nav-tab-wrapper">
225 <?php $tabs = $this->get_tabs(); ?>
226 <?php foreach ($tabs as $tab_slug => $tab_title) { ?>
227 <a class="nav-tab" style="cursor: pointer;" data-id="tab-<?php echo esc_attr( $tab_slug ); ?>"><?php echo esc_html( $tab_title ); ?></a>
228 <?php } ?>
229 </div>
230
231 <form enctype="multipart/form-data" method="post">
232 <div class="tabs">
233 <div id="tab-general" style="padding: 30px;">
234 <table class="form-table">
235 <tr>
236 <th scope="row"><?php _e( 'Selector', 'copy-the-code' ); ?></th>
237 <td>
238 <fieldset>
239 <input type="text" name="selector" class="regular-text" value="<?php echo esc_attr( $data['selector'] ); ?>" />
240 <p class="description"><?php _e( 'It is the selector which contain the content which you want to copy.<br/>Default its &lt;pre&gt; html tag.', 'copy-the-code' ); ?></p>
241 </fieldset>
242 </td>
243 </tr>
244 <tr>
245 <th scope="row"><?php _e( 'Copy Content As', 'copy-the-code' ); ?></th>
246 <td>
247 <fieldset>
248 <select name="copy-as">
249 <option value="html" <?php selected( $data['copy-as'], 'html' ); ?>><?php echo 'HTML'; ?></option>
250 <option value="text" <?php selected( $data['copy-as'], 'text' ); ?>><?php echo 'Text'; ?></option>
251 </select>
252 <p class="description"><?php _e( 'Copy the content as Text or HTML.', 'copy-the-code' ); ?></p>
253 </fieldset>
254 </td>
255 </tr>
256 </table>
257 </div>
258 <div id="tab-style" style="padding: 30px; display: none;">
259 <table class="form-table">
260 <tr>
261 <th scope="row"><?php _e( 'Button Text', 'copy-the-code' ); ?></th>
262 <td>
263 <fieldset>
264 <input type="text" name="button-text" class="regular-text" value="<?php echo esc_attr( $data['button-text'] ); ?>" />
265 <p class="description"><?php _e( 'Copy button text. Default \'Copy\'.', 'copy-the-code' ); ?></p>
266 </fieldset>
267 </td>
268 </tr>
269 <tr>
270 <th scope="row"><?php _e( 'Button Copy Text', 'copy-the-code' ); ?></th>
271 <td>
272 <fieldset>
273 <input type="text" name="button-copy-text" class="regular-text" value="<?php echo esc_attr( $data['button-copy-text'] ); ?>" />
274 <p class="description"><?php _e( 'Copy button text which appear after click on it. Default \'Copied!\'.', 'copy-the-code' ); ?></p>
275 </fieldset>
276 </td>
277 </tr>
278 <tr>
279 <th scope="row"><?php _e( 'Button Title', 'copy-the-code' ); ?></th>
280 <td>
281 <fieldset>
282 <input type="text" name="button-title" class="regular-text" value="<?php echo esc_attr( $data['button-title'] ); ?>" />
283 <p class="description"><?php _e( 'It is showing on hover on the button. Default \'Copy to Clipboard\'.', 'copy-the-code' ); ?></p>
284 </fieldset>
285 </td>
286 </tr>
287 <tr>
288 <th scope="row"><?php _e( 'Button Position', 'copy-the-code' ); ?></th>
289 <td>
290 <fieldset>
291 <select name="button-position">
292 <option value="inside" <?php selected( $data['button-position'], 'inside' ); ?>><?php echo 'Inside'; ?></option>
293 <option value="outside" <?php selected( $data['button-position'], 'outside' ); ?>><?php echo 'Outside'; ?></option>
294 </select>
295 <p class="description"><?php _e( 'Button Position Inside/Outside. Default Inside.', 'copy-the-code' ); ?></p>
296 </fieldset>
297 </td>
298 </tr>
299 </table>
300 </div>
301 </div>
302
303 <input type="hidden" name="message" value="saved" />
304 <?php wp_nonce_field( 'copy-the-code-nonce', 'copy-the-code' ); ?>
305
306 <?php submit_button(); ?>
307
308 </form>
309
310 </div>
311
312 <div class="postbox-container" id="postbox-container-1">
313 <div id="side-sortables" style="">
314 <div class="postbox">
315 <h2 class="hndle"><span><?php _e( 'Getting Started', 'copy-the-code' ); ?></span></h2>
316 <div class="inside">
317 <ul class="items">
318 <li>» <a style="text-decoration: none;" target="_blank" href="https://maheshwaghmare.com/doc/copy-anything-to-clipboard/#how-does-it-work"><?php esc_html_e( 'How does it work?', 'copy-the-code' ); ?></a></li>
319 <li>» <a style="text-decoration: none;" target="_blank" href="https://maheshwaghmare.com/doc/copy-anything-to-clipboard/#what-is-the-selector"><?php esc_html_e( 'What is the selector?', 'copy-the-code' ); ?></a></li>
320 <li>» <a style="text-decoration: none;" target="_blank" href="https://maheshwaghmare.com/doc/copy-anything-to-clipboard/#example-1-using-html-tag-as-a-selector"><?php esc_html_e( 'Example 1 - Using HTML tag as a selector', 'copy-the-code' ); ?></a></li>
321 <li>» <a style="text-decoration: none;" target="_blank" href="https://maheshwaghmare.com/doc/copy-anything-to-clipboard/#example-2-using-class-as-a-selector"><?php esc_html_e( 'Example 2 - Using class as a selector', 'copy-the-code' ); ?></a></li>
322 <li>» <a style="text-decoration: none;" target="_blank" href="https://maheshwaghmare.com/doc/copy-anything-to-clipboard/#example-3-using-id-as-a-selector"><?php esc_html_e( 'Example 3 - Using ID as a selector', 'copy-the-code' ); ?></a></li>
323 <li>» <a style="text-decoration: none;" target="_blank" href="https://maheshwaghmare.com/doc/copy-anything-to-clipboard/#example-4-using-nested-selector"><?php esc_html_e( 'Example 4 - Using nested selector', 'copy-the-code' ); ?></a></li>
324 <li>» <a style="text-decoration: none;" target="_blank" href="https://maheshwaghmare.com/doc/copy-anything-to-clipboard/#example-5-copy-content-as-html-as-text"><?php esc_html_e( 'Example 5 - Copy content as HTML as Text', 'copy-the-code' ); ?></a></li>
325 </ul>
326 </div>
327 </div>
328
329 <div class="postbox">
330 <h2 class="hndle"><span><?php _e( 'Support', 'copy-the-code' ); ?></span></h2>
331 <div class="inside">
332 <p><?php _e( 'Do you have any issue with this plugin? Or Do you have any suggessions?', 'copy-the-code' ); ?></p>
333 <p><?php _e( 'Please don\'t hesitate to <a href="http://maheshwaghmare.wordpress.com/?p=999" target="_blank">send request »</a>.', 'copy-the-code' ); ?></p>
334 </div>
335 </div>
336
337 <?php
338 $response = wp_dev_remote_request_get( 'https://maheshwaghmare.com/wp-json/wp/v2/posts/?_fields=id,title,link&per_page=5' );
339 if( $response['success'] ) {
340 ?>
341 <div class="postbox">
342 <h2 class="hndle"><span><?php _e( 'Latest News', 'copy-the-code' ); ?></span></h2>
343 <div class="inside">
344 <ul>
345 <?php foreach ($response['data'] as $key => $item) { ?>
346 <li data-id="<?php echo esc_attr( $item['id'] ); ?>">
347 » <a style="text-decoration: none;" href="<?php echo esc_attr( $item['link'] ); ?>?utm_source=copy-the-code&utm_medium=plugin&utm_campaign=wp.org" target="_blank"><?php echo esc_html( $item['title']['rendered'] ); ?>
348 </a>
349 </li>
350 <?php } ?>
351 </ul>
352 <p><a href="https://maheshwaghmare.com/blog/?utm_source=copy-the-code&utm_medium=plugin&utm_campaign=wp.org" target="_blank"><?php esc_html_e( 'Read More »', 'copy-the-code' ); ?></a></p>
353 </div>
354 </div>
355 <?php } ?>
356
357 <div class="postbox">
358 <h2 class="hndle"><span><?php _e( 'Donate', 'copy-the-code' ); ?></span></h2>
359 <div class="inside">
360 <p><?php _e( 'Would you like to support the advancement of this plugin?', 'copy-the-code' ); ?></p>
361 <a href="https://www.paypal.me/mwaghmare7/" target="_blank" class="button button-primary"><?php _e( 'Donate Now!', 'copy-the-code' ); ?></a>
362 </div>
363 </div>
364 </div>
365 </div>
366 </div>
367 </div>
368 </div>
369 </div>
370 <?php
371 }
372 }
373
374 /**
375 * Initialize class object with 'get_instance()' method
376 */
377 Copy_The_Code_Page::get_instance();
378
379 endif;
380