PluginProbe ʕ •ᴥ•ʔ
Shortcoder — Create Shortcodes for Anything / 5.6
Shortcoder — Create Shortcodes for Anything v5.6
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 years ago tinymce 4 years ago script-insert.js 4 years ago script-settings.js 4 years ago script-tools.js 4 years ago script.js 4 years ago
script.js
317 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_coffee_btn();
29 }
30
31 $('.sc_params_list').appendTo('body');
32
33 }
34
35 var set_sc_preview_text = function(name){
36 $('.sc_preview_text').text('[sc name="' + name + '"][/sc]');
37 }
38
39 var insert_in_editor = function(data){
40 if(window.SC_EDITOR.active == 'code'){
41 var doc = window.sc_cm.getDoc();
42 doc.replaceRange(data, doc.getCursor());
43 }else{
44 send_to_editor(data);
45 }
46 }
47
48 var copy_to_clipboard = function(str){
49 var el = document.createElement('textarea');
50 el.value = str;
51 el.setAttribute('readonly', '');
52 el.style.position = 'absolute';
53 el.style.left = '-9999px';
54 document.body.appendChild(el);
55 el.select();
56 document.execCommand('copy');
57 document.body.removeChild(el);
58 };
59
60 var load_codemirror = function(){
61
62 if(typeof window.SC_CODEMIRROR === 'undefined'){
63 console.error('Shortcoder: Codemirror settings are not loaded');
64 return false;
65 }
66
67 if(typeof window.wp === 'undefined' || typeof window.wp.codeEditor === 'undefined'){
68 console.error('Shortcoder: codeEditor namespace is not available');
69 return false;
70 }
71
72 var sc_mode_loaded = load_cm_sc_mode();
73 var mode = sc_mode_loaded ? 'sc_mode' : 'htmlmixed';
74
75 wp.codeEditor.defaultSettings.codemirror['mode'] = mode;
76
77 var editor = wp.codeEditor.initialize(document.getElementById('sc_content'), window.SC_CODEMIRROR);
78
79 editor.codemirror.setSize( null, 500 );
80 editor.codemirror.on('change', function(){
81 editor.codemirror.save();
82 });
83
84 window.sc_cm = editor.codemirror;
85
86 return true;
87
88 }
89
90 var load_cm_sc_mode = function(){
91
92 if(typeof wp.CodeMirror === 'undefined'){
93 console.error('Shortcoder: CodeMirror library is not loaded/available');
94 return false;
95 }
96
97 if(typeof wp.CodeMirror.overlayMode === 'undefined'){
98 console.error('Shortcoder: CodeMirror overlay method is not available');
99 return false;
100 }
101
102 try{
103 wp.CodeMirror.defineMode('sc_mode', function(config, parserConfig){
104 var sc_overlay = {
105 token: function(stream, state){
106 if(stream.match(/\$\$[a-z0-9A-Z:_]+\$\$/)){
107 return 'number sc_param';
108 }
109 if(stream.match(/%%.*?%%/)){
110 return 'atom sc_param';
111 }
112 if(stream.match(/\[(.+?)?\](?:(.+?)?\[\/\])?/)){
113 return 'string sc_param';
114 }
115 stream.next();
116 }
117 };
118 return wp.CodeMirror.overlayMode(wp.CodeMirror.getMode(config, parserConfig.backdrop || 'htmlmixed'), sc_overlay);
119 });
120 }catch(error){
121 console.error('Shortcoder: Unable to load shortcoder mode.', error);
122 return false;
123 }
124
125 return true;
126
127 }
128
129 var close_params_list = function(){
130 $('.sc_params_list').hide();
131 }
132
133 var add_top_coffee_btn = function(){
134
135 $('#screen-meta-links').prepend('<div class="screen-meta-toggle cfe_top_link"><a class="show-settings button" href="https://www.paypal.me/vaakash/" target="_blank">Buy me a Coffee</a></div>');
136
137 }
138
139 var add_top_import_export_btn = function(){
140
141 $('#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>');
142
143 $('#screen-meta').append('<div id="import-export-tab" class="hidden"></div>');
144
145 $('#ie_content > div').appendTo('#import-export-tab');
146
147 }
148
149 var show_promo_slide = function(){
150
151 var slides = $('.promo_slide').length;
152
153 if(!slides){
154 return;
155 }
156 var rand_slide = Math.floor(Math.random() * slides);
157 sc_current_slide(rand_slide);
158
159 }
160
161 $('#post_name').on('change keyup', function(){
162 set_sc_preview_text($(this).val());
163 });
164
165 $('.sc_editor').on('focus', function(){
166 window.sc_old_editor = $(this).val();
167 }).on('change', function(e){
168
169 new_editor = $(this).val();
170 response = confirm(SC_VARS.text_editor_switch_notice);
171
172 if(!response){
173 e.preventDefault();
174 $(this).val(window.sc_old_editor);
175 return false;
176 }
177
178 window.location = window.location + '&editor=' + $(this).val();
179
180 });
181
182 $('.sc_insert_param').on('click', function(e){
183
184 e.preventDefault();
185
186 var offset = $(this).offset();
187 var mtop = offset.top + $(this).outerHeight();
188
189 $('.sc_params_list').css({
190 top: mtop,
191 left: offset.left
192 }).toggle();
193
194 });
195
196 $('.sc_wp_params li').on('click', function(){
197 insert_in_editor('$$' + $(this).data('id') + '$$');
198 close_params_list();
199 });
200
201 $('.sc_cp_btn').on('click', function(){
202
203 var $cp_box = $('.sc_cp_box');
204 var $cp_default = $('.sc_cp_default');
205 var $cp_info = $('.sc_cp_info');
206 var param_val = $cp_box.val().trim();
207 var default_val = $cp_default.val().trim();
208
209 if( param_val != '' && $cp_box[0].checkValidity() ){
210
211 var the_code = '';
212 if(default_val == ''){
213 the_code = '%%' + param_val + '%%';
214 }else{
215 the_code = '%%' + param_val + ':' + default_val + '%%';
216 }
217
218 insert_in_editor(the_code);
219 $cp_info.removeClass('red');
220 close_params_list();
221 }else{
222 $cp_info.addClass('red');
223 }
224
225 });
226
227 $('.sc_cf_btn').on('click', function(){
228
229 var $cf_box = $('.sc_cf_box');
230 var $cf_info = $('.sc_cf_info');
231 var param_val = $cf_box.val().trim();
232
233 if( param_val != '' && $cf_box[0].checkValidity() ){
234 insert_in_editor('$$custom_field:' + param_val + '$$');
235 $cf_info.removeClass('red');
236 close_params_list();
237 }else{
238 $cf_info.addClass('red');
239 }
240
241 });
242
243 $('.sc_copy').on('click', function(){
244 copy_to_clipboard($('.sc_preview_text').text());
245 $this = $(this);
246 $this.addClass('copied');
247 setTimeout(function() {
248 $this.removeClass('copied');
249 }, 3000);
250 })
251
252 $('.sc_changelog .dismiss_btn').on('click', function(){
253 var url = SC_VARS.ajax_url + '?action=sc_admin_ajax&do=close_changelog';
254 $.get(url, function( data ){
255 if(data.search( /done/g ) == -1){
256 $( '.sc_changelog article' ).html('Failed to close window. <a href="' + url + '" target="_blank">Please click here to close</a>');
257 }else{
258 $( '.sc_changelog' ).fadeOut();
259 }
260 });
261 });
262
263 $('.cfe_amt').on('click', function(){
264 var $btn = $(this).closest('.cfe_form').find('.cfe_btn');
265 $btn.attr('href', $btn.data('link') + $(this).val());
266 });
267
268 $('.subscribe_btn').click(function(e){
269 e.preventDefault();
270 var action = $(this).parent().data('action');
271 $.ajax({
272 type: 'get',
273 url: action,
274 cache: false,
275 dataType: 'jsonp',
276 data: {
277 'EMAIL': $('.subscribe_email_box').val()
278 },
279 success : function(data) {
280 }
281 });
282 $('.subscribe_confirm').show();
283 });
284
285 init();
286
287 });
288 })( jQuery );
289
290 var promo_slide_index = 1;
291
292 function sc_next_promo_slide(n, event) {
293 event.preventDefault();
294 sc_promo_slide(promo_slide_index += n);
295 }
296
297 function sc_current_slide(n) {
298 sc_promo_slide(promo_slide_index = n);
299 }
300
301 function sc_promo_slide(n) {
302 var slides = document.getElementsByClassName('promo_slide');
303 if(slides.length == 0){
304 return;
305 }
306 var i;
307 if (n > slides.length) {
308 promo_slide_index = 1
309 }
310 if (n < 1) {
311 promo_slide_index = slides.length
312 }
313 for (i = 0; i < slides.length; i++) {
314 slides[i].style.display = 'none';
315 }
316 slides[promo_slide_index - 1].style.display = 'block';
317 }