PluginProbe ʕ •ᴥ•ʔ
Shortcoder — Create Shortcodes for Anything / 4.2
Shortcoder — Create Shortcodes for Anything v4.2
trunk 3.0 3.0.1 3.1 3.2 3.3 3.4 3.4.1 4.0 4.0.1 4.0.2 4.0.3 4.1 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2 4.3 4.4 4.5 4.6 5.0 5.0.1 5.0.2 5.0.3 5.0.4 5.1 5.2 5.2.1 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.4 5.5 5.6 5.7 5.8 6.0 6.1 6.2 6.3 6.3.1 6.3.2 6.4 6.5 6.5.1 6.5.2 6.5.3
shortcoder / admin / sc-admin.php
shortcoder / admin Last commit date
css 7 years ago images 7 years ago js 7 years ago sc-admin.php 7 years ago sc-insert.php 7 years ago
sc-admin.php
622 lines
1 <?php
2
3 class Shortcoder_Admin{
4
5 private static $pagehook = 'settings_page_shortcoder';
6
7 public static function init(){
8
9 // Add menu
10 add_action( 'admin_menu', array( __class__, 'add_menu' ) );
11
12 // Enqueue the scripts and styles
13 add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_scripts' ) );
14
15 // Register the action for admin ajax features
16 add_action( 'wp_ajax_sc_admin_ajax', array( __CLASS__, 'admin_ajax' ) );
17
18 // Register action links
19 add_filter( 'plugin_action_links_' . SC_BASE_NAME, array( __CLASS__, 'action_links' ) );
20
21 // Add Quick Tag button to the editor
22 add_action( 'admin_footer', array( __class__, 'add_qt_button' ) );
23
24 // Add TinyMCE button
25 add_action( 'admin_init', array( __class__, 'register_mce' ) );
26
27 }
28
29 public static function add_menu(){
30
31 add_options_page( 'Shortcoder', 'Shortcoder', 'manage_options', 'shortcoder', array( __class__, 'admin_page' ) );
32
33 }
34
35 public static function enqueue_scripts( $hook ){
36
37 if( $hook == self::$pagehook ){
38
39 wp_enqueue_style( 'sc-admin-css', SC_ADMIN_URL . '/css/style.css', array(), SC_VERSION );
40 wp_enqueue_style( 'sc-selectize', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.4/css/selectize.min.css', array(), SC_VERSION );
41
42 wp_enqueue_script( 'jquery' );
43 wp_enqueue_script( 'sc-admin-js', SC_ADMIN_URL . '/js/script.js', array( 'jquery' ), SC_VERSION );
44 wp_enqueue_script( 'sc-selectize', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.4/js/standalone/selectize.min.js', array( 'jquery' ), SC_VERSION );
45
46 }
47 }
48
49 public static function admin_page(){
50
51 echo '<div class="wrap">';
52 echo '<div class="head_wrap">';
53 echo '<h1 class="sc_title">Shortcoder <span class="title-count">' . SC_VERSION . '</span></h1>';
54 self::top_sharebar();
55 self::print_notice();
56 echo '</div>';
57
58 echo '<div id="content">';
59
60 $g = self::clean_get();
61
62 if( !isset( $g[ 'action' ] ) ){
63 $g[ 'action' ] = 'list';
64 }
65
66 if( $g[ 'action' ] == 'list' ){
67 self::list_shortcodes();
68 }
69
70 if( $g[ 'action' ] == 'edit' ){
71 self::edit_shortcode();
72 }
73
74 if( $g[ 'action' ] == 'new' ){
75 self::new_shortcode();
76 }
77
78 echo '</div>';
79
80 self::page_bottom();
81
82 echo '</div>';
83
84 }
85
86 public static function list_shortcodes(){
87
88 Shortcoder_Import::check_import();
89
90 $shortcodes = Shortcoder::list_all();
91 $g = self::clean_get();
92
93 echo '<h3 class="page_title">' . __( 'List of shortcodes created', 'shortcoder' ) . ' (' . count( $shortcodes ) . ')';
94 echo '<span class="sc_menu">';
95
96 echo '<button class="button sc_tags_filt_btn" tooltip="' . __( 'Filter by tags', 'shortcoder' ) . '"><span class="dashicons dashicons-tag sc_tags_filt_icon"></span>';
97 echo '<div class="sc_tags_filter_wrap"><select class="sc_tags_filter" multiple>';
98 $all_tags = Shortcoder::get_tags();
99 foreach($all_tags as $tag){
100 echo '<option value="' . $tag . '">' . $tag . '</option>';
101 }
102 echo '</select></div>';
103 echo '</button>';
104
105 echo '<span class="button search_btn" tooltip="' . __( 'Search shortcodes', 'shortcoder' ) . '"><span class="dashicons dashicons-search"></span><input type="search" class="search_box" placeholder="Search ..."/></span>';
106
107 echo '<label for="import" class="button" tooltip="' . __( 'Import shortcodes', 'shortcoder' ) . '"><span class="dashicons dashicons-download"></span></label>';
108
109 echo '<a href="' . self::get_link(array(
110 'action' => 'sc_export',
111 '_wpnonce' => wp_create_nonce( 'sc_export_data' )
112 ), 'admin-ajax.php' ) . '" class="button" tooltip="' . __( 'Export shortcodes', 'shortcoder' ) . '"><span class="dashicons dashicons-upload"></span></a>';
113
114
115 echo '<button class="button sort_btn" tooltip="' . __( 'Sort list', 'shortcoder' ) . '"><span class="dashicons dashicons-menu"></span> <span class="dashicons dashicons-arrow-down-alt sort_icon"></span></button>';
116
117 echo '<a href="' . self::get_link(array( 'action' => 'new' )) . '" class="button button-primary sc_new_btn"><span class="dashicons dashicons-plus"></span> ' . __( 'Create a new shortcode', 'shortcoder' ) . '</a>';
118
119 echo '</span>';
120 echo '</h3>';
121
122 echo '<ul class="sc_list" data-empty="' . __( 'No shortcodes are created. Go ahead create one !', 'shortcoder' ) . '">';
123 foreach( $shortcodes as $name => $data ){
124
125 $data = wp_parse_args( $data, Shortcoder::defaults() );
126
127 $link = self::get_link(array(
128 'action' => 'edit',
129 'id' => base64_encode( $name )
130 ));
131
132 $delete_link = self::get_link(array(
133 'action' => 'sc_admin_ajax',
134 'do' => 'delete',
135 'id' => base64_encode( $name ),
136 '_wpnonce' => wp_create_nonce( 'sc_delete_nonce' )
137 ), 'admin-ajax.php' );
138
139 $disabled_text = ( $data[ 'disabled' ] == '1' ) ? '<small class="disabled_text">' . __( 'Temporarily disabled', 'shortcoder' ) . '</small>' : '';
140
141 $selected_tags = implode( ',', $data[ 'tags' ] );
142
143 echo '<li data-name="' . esc_attr( $name ) . '" data-tags="' . esc_attr( $selected_tags ) . '">';
144 echo '<a href="' . $link . '" class="sc_link" title="' . __( 'Edit shortcode', 'shortcoder' ) . '">' . esc_attr( $name ) . $disabled_text . '</a>';
145
146 echo '<span class="sc_controls">';
147
148 if( isset( $data[ 'tags' ] ) && !empty( $data[ 'tags' ] ) && is_array( $data[ 'tags' ] ) ){
149 echo '<ul class="sc_tags_list">';
150 foreach( $data['tags'] as $tag ){
151 echo '<li data-tag-id="' . $tag . '">' . $tag . '</li>';
152 }
153 echo '</ul>';
154 }
155
156 echo '<a href="#" class="sc_copy" title="' . __( 'Copy shortcode', 'shortcoder' ) . '"><span class="dashicons dashicons-editor-code"></span></a>';
157 echo '<a href="' . $delete_link . '" class="sc_delete" title="' . __( 'Delete', 'shortcoder' ) . '"><span class="dashicons dashicons-trash"></span></a>';
158 echo '</span>';
159
160 echo '<input type="text" value="' . self::get_shortcode( $name ) . '" class="sc_copy_box" readonly="readonly" title="' . __( 'Copy shortcode', 'shortcoder' ) . '" />';
161
162 echo '</li>';
163
164 }
165 echo '</ul>';
166
167 Shortcoder_Import::import_form();
168
169 }
170
171 public static function new_shortcode(){
172 self::edit_shortcode( 'new' );
173 }
174
175 public static function edit_shortcode( $action = 'edit' ){
176
177 self::save_shortcode();
178
179 $shortcodes = Shortcoder::list_all();
180 $g = self::clean_get();
181
182 $page_title = __( 'New shortcode', 'shortcoder' );
183 $action_btn = __( 'Create shortcode', 'shortcoder' );
184 $sc_name = '';
185 $values = array();
186
187 if( $action == 'edit' ){
188
189 $page_title = __( 'Edit shortcode', 'shortcoder' );
190 $action_btn = __( 'Save settings', 'shortcoder' );
191
192 if( !isset( $g[ 'id' ] ) ){
193 echo '<p align="center">' . __( 'No shortcode ID provided !' ) . '</p>';
194 return false;
195 }
196
197 $sc_name = base64_decode( $g[ 'id' ] );
198
199 if( !array_key_exists( $sc_name, $shortcodes ) ){
200 echo '<p align="center">' . __( 'Invalid shortcode ID or no such shortcode with name [' . esc_attr( $sc_name ) . '] exists !' ) . '</p>';
201 return false;
202 }
203
204 $values = $shortcodes[ $sc_name ];
205
206 }
207
208 $values = wp_parse_args( $values, Shortcoder::defaults() );
209
210 echo '<h3 class="page_title">' . $page_title;
211 echo '<div class="sc_menu">';
212 echo '<a href="' . self::get_link() . '" class="button sc_back_btn"><span class="dashicons dashicons-arrow-left-alt2"></span> ' . __( 'Back', 'shortcoder' ) . '</a>';
213 echo '</div>';
214 echo '</h3>';
215
216 echo '<form method="post" id="sc_edit_form">';
217
218 echo '<div class="sc_section">';
219 echo '<label for="sc_name">' . __( 'Name', 'shortcoder' ) . '</label>';
220 echo '<div class="sc_name_wrap"><input type="text" id="sc_name" name="sc_name" value="' . esc_attr( $sc_name ) . '" class="widefat" required="required" ' . ( ( $action == 'edit' ) ? 'readonly="readonly"' : 'placeholder="' . __( 'Enter a name for the shortcode, case sensitive', 'shortcoder' ) . '"' ) . ' pattern="[a-zA-z0-9 \-]+" />';
221 echo ( $action == 'edit' ) ? '<div class="copy_shortcode">Your shortcode is - <input type="text" value="' . esc_attr( self::get_shortcode( $sc_name ) ) . '" class="sc_copy_field" readonly="readonly" title="' . __( 'Copy shortcode', 'shortcoder' ) . '"/></div>' : '';
222 echo ( $action != 'edit' ) ? '<div class="copy_shortcode">' . __( 'Allowed characters A to Z, a to z, 0 to 9, hyphens, underscores and space', 'shortcoder' ) . '</div>' : '';
223 echo '</div></div>';
224
225 echo '<div class="sc_section">';
226 echo '<label for="sc_content">' . __( 'Shortcode content', 'shortcoder' ) . '<span class="dashicons dashicons-info sc_note_btn" title="Open note"></span></label>';
227
228 echo '<p class="sc_note">' . __( 'Note: You can use any HTML, JavaScript, CSS as shortcode content. Shortcoder does not manipulate the shortcode content. What you provide above is what you get as output. Please verify the shortcode content for any syntax or JavaScript errors.', 'shortcoder' ) . '</p>';
229
230 $editors_list = array(
231 'text' => 'Text editor',
232 'visual' => 'Visual editor',
233 'code' => 'Code editor'
234 );
235 $editor = ( isset( $g[ 'editor' ] ) && array_key_exists( $g[ 'editor' ], $editors_list ) ) ? $g[ 'editor' ] : $values[ 'editor' ];
236
237 echo '<span class="sc_editor_list sc_editor_icon_' . $editor . '"><select name="sc_editor" class="sc_editor button">';
238 foreach( $editors_list as $id => $name ){
239 echo '<option value="' . $id . '" ' . selected( $editor, $id ) . '>' . $name . '</option>';
240 }
241 echo '</select></span>';
242
243 self::load_editor( $editor, $values[ 'content' ] );
244
245 echo '</div>';
246
247 $device_options = array(
248 'all' => __( 'On both desktop and mobile devices', 'shortcoder' ),
249 'mobile_only' => __( 'On mobile devices alone', 'shortcoder' ),
250 'desktop_only' => __( 'On desktops alone', 'shortcoder' )
251 );
252
253 echo '<div class="sc_settings">';
254
255 echo '<div class="sc_section">';
256 echo '<h4>' . __( 'Settings', 'shortcoder' ) . '</h4>';
257 echo '<label><input type="checkbox" name="sc_disable" value="1" ' . checked( $values[ 'disabled' ], '1', false ) . '/> ' . __( 'Temporarily disable this shortcode', 'shortcoder' ) . '</label>';
258 echo '<label><input type="checkbox" name="sc_hide_admin" value="1" ' . checked( $values[ 'hide_admin' ], '1', false ) . '/> ' . __( 'Disable this Shortcode for administrators' ) . '</label>';
259 echo '</div>';
260
261 echo '<div class="sc_section">';
262 echo '<h4>' . __( 'Visibility', 'shortcoder' ) . '</h4>';
263 echo '<label>' . __( 'Show this shortcode', 'shortcoder' );
264 echo '<select name="sc_devices">';
265 foreach( $device_options as $id => $name ){
266 echo '<option value="' . $id . '" ' . selected( $values[ 'devices' ], $id ) . '>' . $name . '</option>';
267 }
268 echo '</select></label>';
269 echo '</div>';
270
271 echo '<div class="sc_section">';
272 echo '<h4>' . __( 'Tags', 'shortcoder' ) . '</h4>';
273 echo '<select name="sc_tags[]" class="sc_edit_tags" multiple>';
274 $all_tags = Shortcoder::get_tags();
275 foreach($all_tags as $tag){
276 echo '<option value="' . $tag . '" ' . ( in_array( $tag, $values[ 'tags' ] ) ? 'selected="selected"' : '' ) . '>' . $tag . '</option>';
277 }
278 echo '</select>';
279 echo '</div>';
280
281 echo '</div>';
282
283 wp_nonce_field( 'sc_edit_nonce' );
284
285 echo '<footer class="page_footer">';
286 echo '<button class="button button-primary sc_save">' . $action_btn . '</button>';
287
288 if( $action == 'edit' ){
289 $delete_link = self::get_link(array(
290 'action' => 'sc_admin_ajax',
291 'do' => 'delete',
292 'id' => base64_encode( $sc_name ),
293 '_wpnonce' => wp_create_nonce( 'sc_delete_nonce' )
294 ), 'admin-ajax.php' );
295 echo '<a href="' . $delete_link . '" class="button sc_delete_ep" title="' . __( 'Delete', 'shortcoder' ) . '"><span class="dashicons dashicons-trash"></span></a>';
296 }
297
298 echo '</footer>';
299
300 echo '</form>';
301
302 $sc_wp_params = Shortcoder::wp_params_list();
303
304 echo '<ul class="params_wrap">';
305
306 foreach( $sc_wp_params as $group => $group_info ){
307 echo '<li>' . $group_info[ 'name' ];
308 echo '<ul class="wp_params">';
309 foreach( $group_info[ 'params' ] as $param_id => $param_name ){
310 echo '<li data-id="' . $param_id . '">' . $param_name . '</li>';
311 }
312 echo '</ul></li>';
313 }
314
315 echo '<li>' . __( 'Custom parameter', 'shortcoder' ) . '<ul>';
316 echo '<li class="isc_form"><h4>' . __( 'Enter custom parameter name', 'shortcoder' ) . '</h4>';
317 echo '<input type="text" class="cp_box" pattern="[a-zA-Z0-9]+"/> <button class="button cp_btn">' . __( 'Insert parameter', 'shortcoder' ) . '</button><p class="isc_info cp_info"><small>' . __( 'Only alphabets and numbers allowed. Custom parameters are case insensitive', 'shortcoder' ) . '</small></p></li>';
318 echo '</ul></li>';
319
320 echo '<li>' . __( 'Custom Fields', 'shortcoder' ) . '<ul>';
321 echo '<li class="isc_form"><h4>' . __( 'Enter custom field name', 'shortcoder' ) . '</h4>';
322 echo '<input type="text" class="cf_box" pattern="[a-zA-Z0-9_-]+"/> <button class="button cf_btn">' . __( 'Insert custom field', 'shortcoder' ) . '</button><p class="isc_info cf_info"><small>' . __( 'Only alphabets, numbers, underscore and hyphens are allowed. Cannot be empty.', 'shortcoder' ) . '</small></p></li>';
323 echo '</ul></li>';
324
325 echo '</ul>';
326 }
327
328 public static function save_shortcode(){
329
330 if( $_POST && check_admin_referer( 'sc_edit_nonce' ) ){
331
332 $p = wp_parse_args( self::clean_post(), array(
333 'sc_name' => '',
334 'sc_content' => '',
335 'sc_disable' => 0,
336 'sc_hide_admin' => 0,
337 'sc_devices' => 'all',
338 'sc_editor' => 'text',
339 'sc_tags' => array()
340 ));
341
342 if( !trim( $p[ 'sc_name' ] ) ){
343 self::print_notice( 0 );
344 return false;
345 }
346
347 $shortcodes = Shortcoder::list_all();
348 $name = self::clean_name( $p[ 'sc_name' ] );
349 $values = array(
350 'content' => $p[ 'sc_content' ],
351 'disabled' => $p[ 'sc_disable' ],
352 'hide_admin' => $p[ 'sc_hide_admin' ],
353 'devices' => $p[ 'sc_devices' ],
354 'editor' => $p[ 'sc_editor' ],
355 'tags' => $p[ 'sc_tags' ]
356 );
357
358 if( array_key_exists( $name, $shortcodes ) ){
359 self::print_notice( 2 );
360 }else{
361 self::print_notice( 1 );
362 }
363
364 $shortcodes[ $name ] = $values;
365
366 update_option( 'shortcoder_data', $shortcodes );
367
368 /*
369 wp_safe_redirect( self::get_link( array(
370 'action' => 'edit',
371 'name' => urlencode( $name ),
372 'msg' => ( $todo == 'new' ) ? 1 : 2
373 )));*/
374 }
375
376 }
377
378 public static function delete_shortcode( $name ){
379
380 $shortcodes = Shortcoder::list_all();
381
382 if( array_key_exists( $name, $shortcodes ) ){
383 unset( $shortcodes[ $name ] );
384 update_option( 'shortcoder_data', $shortcodes );
385 return true;
386 }else{
387 return false;
388 }
389
390 }
391
392 public static function get_link( $params = array(), $page = 'options-general.php' ){
393
394 $params[ 'page' ] = 'shortcoder';
395 return add_query_arg( $params, admin_url( $page ) );
396
397 }
398
399 public static function get_shortcode( $name = '' ){
400 return esc_attr( '[sc name="' . $name . '"]' );
401 }
402
403 public static function admin_ajax(){
404
405 $g = self::clean_get();
406
407 if( $g[ 'do' ] == 'delete' && isset( $g[ 'id' ] ) && check_admin_referer( 'sc_delete_nonce' ) ){
408 $sc_name = base64_decode( $g[ 'id' ] );
409 if( self::delete_shortcode( $sc_name ) ){
410 echo 'DELETED';
411 }else{
412 echo 'FAILED';
413 }
414 }
415
416 if( $g[ 'do' ] == 'insert_shortcode' ){
417 include_once( 'sc-insert.php' );
418 }
419
420 die(0);
421 }
422
423 public static function add_qt_button(){
424
425 $screen = get_current_screen();
426 if( self::$pagehook == $screen->id )
427 return;
428
429 add_thickbox();
430
431 echo '
432 <script>
433 if(window.addEventListener){
434 window.addEventListener("load", function(){
435 if( typeof QTags === "function" ){
436 QTags.addButton( "QT_sc_insert", "Shortcoder", sc_show_insert );
437 }
438 });
439 }
440
441 function sc_show_insert(){
442 tb_show( "Insert a Shortcode", "' . admin_url( 'admin-ajax.php?action=sc_admin_ajax&do=insert_shortcode&TB_iframe=true' ) . '" );
443 }
444 </script>';
445 }
446
447 public static function register_mce(){
448 add_filter( 'mce_buttons', array( __class__, 'register_mce_button' ) );
449 add_filter( 'mce_external_plugins', array( __class__, 'register_mce_js' ) );
450 }
451
452 public static function register_mce_button( $buttons ){
453
454 if( self::is_sc_admin() )
455 return $buttons;
456
457 array_push( $buttons, 'separator', 'shortcoder' );
458 return $buttons;
459
460 }
461
462 public static function register_mce_js( $plugins ){
463
464 if( self::is_sc_admin() )
465 return $plugins;
466
467 $plugins[ 'shortcoder' ] = SC_ADMIN_URL . '/js/tinymce/editor_plugin.js';
468 return $plugins;
469
470 }
471
472 public static function load_editor( $type, $value ){
473
474 if( $type == 'code' ){
475 self::load_codemirror_editor( $value );
476 }else{
477 wp_editor( $value, 'sc_content', array( 'wpautop'=> false, 'textarea_rows'=> 15, 'tinymce' => ( $type == 'visual' ) ) );
478 }
479
480 }
481
482 public static function load_codemirror_editor( $value ){
483 echo '<link href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.42.0/codemirror.min.css" rel="stylesheet">';
484 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.42.0/codemirror.min.js"></script>';
485 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.42.0/mode/htmlmixed/htmlmixed.min.js"></script>';
486 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.42.0/mode/css/css.min.js"></script>';
487 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.42.0/mode/xml/xml.min.js"></script>';
488 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.42.0/mode/javascript/javascript.min.js"></script>';
489 echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.42.0/addon/selection/active-line.min.js"></script>';
490
491 echo '<div class="sc_cm_menu"></div>';
492 echo '<textarea name="sc_content" id="sc_content">' . esc_textarea( $value ) . '</textarea>';
493
494 echo '<script>var sc_cm_editor = true;</script>';
495 }
496
497 public static function page_bottom(){
498
499 echo '<div class="coffee_box">
500 <div class="coffee_amt_wrap">
501 <p><select class="coffee_amt">
502 <option value="2">$2</option>
503 <option value="3">$3</option>
504 <option value="4">$4</option>
505 <option value="5" selected="selected">$5</option>
506 <option value="6">$6</option>
507 <option value="7">$7</option>
508 <option value="8">$8</option>
509 <option value="9">$9</option>
510 <option value="10">$10</option>
511 <option value="11">$11</option>
512 <option value="12">$12</option>
513 <option value="">Custom</option>
514 </select></p>
515 <a class="button button-primary buy_coffee_btn" href="https://www.paypal.me/vaakash/5" data-link="https://www.paypal.me/vaakash/" target="_blank">Buy me a coffee !</a>
516 </div>
517 <h2>Buy me a coffee !</h2>
518 <p>Thank you for using Shortcoder. If you found the plugin useful buy me a coffee ! Your donation will motivate and make me happy for all the efforts. You can donate via PayPal.</p>';
519 echo '</div>';
520
521 echo '<p class="credits_box"><img src="' . SC_ADMIN_URL . '/images/aw.png" /> Created by <a href="https://goo.gl/aHKnsM" target="_blank">Aakash Chakravarthy</a> - Follow me on <a href="https://twitter.com/vaakash" target="_blank">Twitter</a>, <a href="https://fb.com/aakashweb" target="_blank">Facebook</a>, <a href="https://www.linkedin.com/in/vaakash/" target="_blank">LinkedIn</a>. Check out <a href="https://goo.gl/OAxx4l" target="_blank">my other works</a>.
522
523 <a href="https://goo.gl/ltvnIE" class="rate_link" target="_blank">Rate <span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span> if you like Shortcoder</a>
524
525 </p>';
526
527 }
528
529 public static function top_sharebar(){
530 echo '
531 <div class="top_sharebar">
532
533 <a href="https://goo.gl/r8Qr7Y" class="help_link" target="_blank" title="Help"><span class="dashicons dashicons-editor-help"></span></a>
534 <a href="https://goo.gl/URfxp2" class="help_link" target="_blank" title="Report issue"><span class="dashicons dashicons-flag"></span></a>
535
536 <a class="share_btn rate_btn" href="https://goo.gl/ltvnIE" target="_blank" title="Please rate 5 stars if you like Shortcoder"><span class="dashicons dashicons-star-filled"></span> Rate 5 stars</a>
537 <a class="share_btn twitter" href="https://twitter.com/intent/tweet?ref_src=twsrc%5Etfw&related=vaakash&text=Check%20out%20Shortcoder,%20a%20%23wordpress%20plugin%20to%20create%20shortcodes%20for%20HTML,%20JavaScript%20snippets%20easily&tw_p=tweetbutton&url=https%3A%2F%2Fwww.aakashweb.com%2Fwordpress-plugins%2Fshortcoder%2F&via=vaakash" target="_blank"><span class="dashicons dashicons-twitter"></span> Tweet about Shortcoder</a>
538
539 </div>';
540 }
541
542 public static function action_links( $links ){
543 array_unshift( $links, '<a href="https://goo.gl/qMF3iE" target="_blank">Donate</a>' );
544 array_unshift( $links, '<a href="'. esc_url( admin_url( 'options-general.php?page=shortcoder' ) ) .'">Settings</a>' );
545 return $links;
546 }
547
548 public static function print_notice( $id = '' ){
549
550 $g = self::clean_get();
551 $type = 'success';
552 $msg = '';
553
554 if( $id == '' ){
555 if( !isset( $g[ 'msg' ] ) ){
556 return false;
557 }
558 $id = $g[ 'msg' ];
559 }
560
561 if( $id == 0 ){
562 $msg = __( 'Shortcode name is empty. Cannot save settings !', 'shortcoder' );
563 $type = 'error';
564 }
565
566 if( $id == 1 ){
567 $msg = __( 'Shortcode created successfully', 'shortcoder' );
568 }
569
570 if( $id == 2 ){
571 $msg = __( 'Shortcode updated successfully', 'shortcoder' );
572 }
573
574 if( $id == 3 ){
575 $msg = __( 'Shortcode deleted successfully', 'shortcoder' );
576 }
577
578 if( $msg != '' ){
579 echo '<div class="notice notice-' . $type . ' is-dismissible"><p>' . $msg . '</p></div>';
580 }
581 }
582
583 public static function clean_name( $name = '' ){
584
585 return trim( preg_replace('/[^0-9a-zA-Z\- _]/', '', $name ) );
586
587 }
588
589 public static function clean_get(){
590
591 foreach( $_GET as $k=>$v ){
592 $_GET[$k] = sanitize_text_field( $v );
593 }
594
595 return $_GET;
596 }
597
598 public static function clean_post(){
599
600 return stripslashes_deep( $_POST );
601
602 }
603
604 public static function is_sc_admin(){
605
606 if( !function_exists( 'get_current_screen' ) )
607 return false;
608
609 $screen = get_current_screen();
610 if( self::$pagehook == $screen->id ){
611 return true;
612 }else{
613 return false;
614 }
615
616 }
617
618 }
619
620 Shortcoder_Admin::init();
621
622 ?>