PluginProbe ʕ •ᴥ•ʔ
Shortcoder — Create Shortcodes for Anything / 6.5.2
Shortcoder — Create Shortcodes for Anything v6.5.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 / js / script.js
shortcoder / admin / js Last commit date
blocks 4 months ago tinymce 4 months ago script-insert.js 4 months ago script-settings.js 4 months ago script-tools.js 4 months ago script.js 4 months ago
script.js
316 lines
1 (function($){
2 $(document).ready(function(){
3
4 var init = function(){
5
6 if(typeof window.SC_EDITOR !== 'undefined' && typeof window.SC_EDITOR.active !== 'undefined' && window.SC_EDITOR.active == 'code'){
7
8 var codemirror_loaded = load_codemirror();
9
10 if(!codemirror_loaded){
11 $('.sc_editor_toolbar').append('<p>Unable to load code editor. Please check browser console (press Ctrl+Shift+J) for errors or try deactivating any code editor related plugin/themes.</p>');
12 }
13
14 $('.sc_editor_toolbar').appendTo('.sc_cm_menu');
15
16 }else{
17 $('.sc_editor_toolbar').appendTo('.wp-media-buttons');
18 }
19
20 if(typeof window.SC_VARS !== 'undefined'){
21
22 if(SC_VARS['screen']['base'] == 'edit'){
23 var version = '<small>v' + SC_VARS['sc_version'] + '</small>';
24 $('.wp-heading-inline').append(version);
25 add_top_import_export_btn();
26 }
27
28 add_top_pro_btn();
29 }
30
31 $('.sc_params_list').appendTo('body');
32
33 $('.sc_title_shortcut').val($('input[name="post_title"]').val());
34
35 }
36
37 var set_sc_preview_text = function(name){
38 $('.sc_preview_text').text('[sc name="' + name + '"][/sc]');
39 }
40
41 var insert_in_editor = function(data){
42 if(window.SC_EDITOR.active == 'code'){
43 var doc = window.sc_cm.getDoc();
44 doc.replaceRange(data, doc.getCursor());
45 }else{
46 send_to_editor(data);
47 }
48 }
49
50 var copy_to_clipboard = function(str){
51 var el = document.createElement('textarea');
52 el.value = str;
53 el.setAttribute('readonly', '');
54 el.style.position = 'absolute';
55 el.style.left = '-9999px';
56 document.body.appendChild(el);
57 el.select();
58 document.execCommand('copy');
59 document.body.removeChild(el);
60 };
61
62 var load_codemirror = function(){
63
64 if(typeof window.SC_CODEMIRROR === 'undefined'){
65 console.error('Shortcoder: Codemirror settings are not loaded');
66 return false;
67 }
68
69 if(typeof window.wp === 'undefined' || typeof window.wp.codeEditor === 'undefined'){
70 console.error('Shortcoder: codeEditor namespace is not available');
71 return false;
72 }
73
74 var sc_mode_loaded = load_cm_sc_mode();
75 var mode = sc_mode_loaded ? 'sc_mode' : 'htmlmixed';
76
77 wp.codeEditor.defaultSettings.codemirror['mode'] = mode;
78
79 var editor = wp.codeEditor.initialize(document.getElementById('sc_content'), window.SC_CODEMIRROR);
80
81 editor.codemirror.setSize( null, 500 );
82 editor.codemirror.on('change', function(){
83 editor.codemirror.save();
84 });
85
86 window.sc_cm = editor.codemirror;
87
88 return true;
89
90 }
91
92 var load_cm_sc_mode = function(){
93
94 if(typeof wp.CodeMirror === 'undefined'){
95 console.error('Shortcoder: CodeMirror library is not loaded/available');
96 return false;
97 }
98
99 if(typeof wp.CodeMirror.overlayMode === 'undefined'){
100 console.error('Shortcoder: CodeMirror overlay method is not available');
101 return false;
102 }
103
104 try{
105 wp.CodeMirror.defineMode('sc_mode', function(config, parserConfig){
106 var sc_overlay = {
107 token: function(stream, state){
108 if(stream.match(/\$\$[a-z0-9A-Z:_ \-]+\$\$/)){
109 return 'number sc_param';
110 }
111 if(stream.match(/%%.*?%%/)){
112 return 'atom sc_param';
113 }
114 if(stream.match(/\[(.+?)?\](?:(.+?)?\[\/\])?/)){
115 return 'string sc_param';
116 }
117 stream.next();
118 }
119 };
120 return wp.CodeMirror.overlayMode(wp.CodeMirror.getMode(config, parserConfig.backdrop || 'htmlmixed'), sc_overlay);
121 });
122 }catch(error){
123 console.error('Shortcoder: Unable to load shortcoder mode.', error);
124 return false;
125 }
126
127 return true;
128
129 }
130
131 var close_params_list = function(){
132 $('.sc_params_list').hide();
133 }
134
135 var add_top_pro_btn = function(){
136
137 $('#screen-meta-links').prepend('<div class="screen-meta-toggle pro_top_link"><a class="show-settings button" href="https://www.aakashweb.com/wordpress-plugins/shortcoder/?utm_source=admin&utm_medium=top&utm_campaign=sc-pro#pro" target="_blank">Upgrade to PRO <span class="dashicons dashicons-plus"></span></a></div>');
138
139 }
140
141 var add_top_import_export_btn = function(){
142
143 $('#screen-meta-links').prepend('<div class="screen-meta-toggle ie_top_link hide-if-no-js"><button aria-controls="import-export-tab" aria-expanded="false" class="show-settings button">Import / Export</button></div>');
144
145 $('#screen-meta').append('<div id="import-export-tab" class="hidden"></div>');
146
147 $('#ie_content > div').appendTo('#import-export-tab');
148
149 }
150
151 $('#post_name').on('change keyup', function(){
152 set_sc_preview_text($(this).val());
153 });
154
155 $('.sc_editor').on('focus', function(){
156 window.sc_old_editor = $(this).val();
157 }).on('change', function(e){
158
159 new_editor = $(this).val();
160 response = confirm(SC_VARS.text_editor_switch_notice);
161
162 if(!response){
163 e.preventDefault();
164 $(this).val(window.sc_old_editor);
165 return false;
166 }
167
168 window.location = window.location + '&editor=' + $(this).val();
169
170 });
171
172 $('.sc_insert_param').on('click', function(e){
173
174 e.preventDefault();
175
176 var offset = $(this).offset();
177 var mtop = offset.top + $(this).outerHeight();
178
179 $('.sc_params_list').css({
180 top: mtop,
181 left: offset.left
182 }).toggle();
183
184 });
185
186 $('.sc_wp_params li').on('click', function(){
187 insert_in_editor('$$' + $(this).data('id') + '$$');
188 close_params_list();
189 });
190
191 $('.sc_cp_btn').on('click', function(){
192
193 var $cp_box = $('.sc_cp_box');
194 var $cp_default = $('.sc_cp_default');
195 var $cp_info = $('.sc_cp_info');
196 var param_val = $cp_box.val().trim();
197 var default_val = $cp_default.val().trim();
198
199 if( param_val != '' && $cp_box[0].checkValidity() ){
200
201 var the_code = '';
202 if(default_val == ''){
203 the_code = '%%' + param_val + '%%';
204 }else{
205 the_code = '%%' + param_val + ':' + default_val + '%%';
206 }
207
208 insert_in_editor(the_code);
209 $cp_info.removeClass('red');
210 close_params_list();
211 }else{
212 $cp_info.addClass('red');
213 }
214
215 });
216
217 $('.sc_cf_btn').on('click', function(){
218
219 var $cf_box = $('.sc_cf_box');
220 var $cf_info = $('.sc_cf_info');
221 var default_val = $('.sc_cf_default').val().trim();
222 var param_val = $cf_box.val().trim();
223
224 if(default_val != ''){
225 default_val = ':' + default_val;
226 }
227
228 if( param_val != '' && $cf_box[0].checkValidity() ){
229 insert_in_editor('$$custom_field:' + param_val + default_val + '$$');
230 $cf_info.removeClass('red');
231 close_params_list();
232 }else{
233 $cf_info.addClass('red');
234 }
235
236 });
237
238 $('.sc_copy').on('click', function(){
239 copy_to_clipboard($('.sc_preview_text').text());
240 $this = $(this);
241 $this.addClass('copied');
242 setTimeout(function() {
243 $this.removeClass('copied');
244 }, 3000);
245 })
246
247 $('.sc_copy_list').on('click', function(e){
248 e.preventDefault();
249 var $copy_field = $(this).siblings('.sc_copy_text');
250 copy_to_clipboard($copy_field.val());
251 $copy_field.addClass('copied');
252 setTimeout(function() {
253 $copy_field.removeClass('copied');
254 }, 3000);
255 });
256
257 $('.sc_changelog .dismiss_btn').on('click', function(){
258 var url = SC_VARS.ajax_url + '?action=sc_admin_ajax&do=close_changelog&_wpnonce=' + SC_VARS.nonce;
259 $.get(url, function( data ){
260 if(data.search( /done/g ) == -1){
261 $( '.sc_changelog article' ).html('Failed to close window. <a href="' + url + '" target="_blank">Please click here to close</a>');
262 }else{
263 $( '.sc_changelog' ).fadeOut();
264 }
265 });
266 });
267
268 $('.sc_settings_link').on('click', function(e){
269 e.preventDefault();
270 $('html').animate({
271 scrollTop: $("#sc_mb_settings").offset().top
272 }, 1000, function(){
273 $('input[name="post_title"]').focus();
274 });
275 });
276
277 $('.sc_title_shortcut').on('keyup paste', function(e){
278 $('input[name="post_title"]').val($(this).val());
279 });
280
281 $('input[name="post_title"]').on('keyup paste', function(e){
282 $('.sc_title_shortcut').val($(this).val());
283 });
284
285 $('.cfe_amt').on('click', function(){
286 var $btn = $(this).closest('.cfe_form').find('.cfe_btn');
287 $btn.attr('href', $btn.data('link') + $(this).val());
288 });
289
290 $('.subscribe_btn').click(function(e){
291 e.preventDefault();
292
293 var form = $('<form>', {
294 action: 'https://www.aakashweb.com/apps/subscription/',
295 method: 'POST',
296 target: '_blank'
297 }).append($('<input>', {
298 type: 'hidden',
299 name: 'email',
300 value: $('.subscribe_email_box').val()
301 })).append($('<input>', {
302 type: 'hidden',
303 name: 'l',
304 value: '6aacb87c-0434-4ac1-b53c-22d7790ec4ac'
305 }));
306
307 $('body').append(form);
308 form.submit();
309 form.remove();
310
311 });
312
313 init();
314
315 });
316 })( jQuery );