PluginProbe
MyBookTable Bookstore by Stormhill Media / trunk
MyBookTable Bookstore by Stormhill Media vtrunk
3.6.5 trunk
mybooktable / js / admin.js

admin.js in MyBookTable Bookstore by Stormhill Media trunk, at js/admin.js

226 lines 8.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 jQuery(document).ready(function() {
2
3 /*---------------------------------------------------------*/
4 /* Feedback Boxes */
5 /*---------------------------------------------------------*/
6
7 jQuery('.mbt_feedback_refresh').mbt_feedback();
8
9 /*---------------------------------------------------------*/
10 /* Settings Page */
11 /*---------------------------------------------------------*/
12
13 jQuery('#mbt-settings-tabs').tabs({active: jQuery('#mbt_current_tab').val()-1});
14 jQuery('#mbt-amazon-affiliate-settings-tabs').tabs();
15 jQuery('#mbt-help-link').off();
16 jQuery('.mbt-accordion').accordion({collapsible: true, active: false, heightStyle: 'content'});
17
18 jQuery('#mbt_settings_form input[type="submit"]').click(function() { jQuery('#mbt_current_tab').val(jQuery(this).parents('.mbt-tab').attr('id').substring(8)); });
19
20 /*---------------------------------------------------------*/
21 /* Help Page */
22 /*---------------------------------------------------------*/
23
24 if(jQuery('.mbt_help #mbt_selected_tutorial_video').length > 0) {
25 const video_id = jQuery('.mbt_help #mbt_selected_tutorial_video').val().replace(/[^a-zA-Z0-9_-]/, '');
26 jQuery('.mbt_help').find('#mbt_video_'+video_id).show();
27 jQuery('html, body').animate({scrollTop: jQuery('.mbt_help .mbt_video_tutorials').offset().top-42}, 2000);
28 } else {
29 jQuery('.mbt_help .mbt_video_display .mbt_video:first').show();
30 }
31
32 jQuery('.mbt_help .mbt_video_selector a').click(function() {
33 var video_id = jQuery(this).attr('data-video-id');
34 jQuery('.mbt_help .mbt_video_display .mbt_video').hide().detach().appendTo(jQuery('.mbt_help .mbt_video_display'));
35 jQuery('#'+video_id).show();
36 return false;
37 });
38
39 /*---------------------------------------------------------*/
40 /* Media Upload Buttons */
41 /*---------------------------------------------------------*/
42
43 jQuery.fn.mbt_upload_button = function() {
44 jQuery(this).each(function(i, e) {
45 var file_frame;
46
47 var element = jQuery(this);
48
49 element.on('click', function(event) {
50
51 event.preventDefault();
52
53 // If the media frame already exists, reopen it.
54 if(file_frame) {
55 file_frame.open();
56 return;
57 }
58
59 // Create the media frame.
60 var options = {
61 button: { text: mbt_admin_pages_i18n.select },
62 multiple: false // Set to true to allow multiple files to be selected
63 };
64 if(element.attr('data-upload-title')) { options.title = element.attr('data-upload-title'); }
65 file_frame = wp.media.frames.file_frame = wp.media(options);
66
67 // When an image is selected, run a callback.
68 file_frame.on( 'select', function() {
69 // We set multiple to false so only get one image from the uploader
70 attachment = file_frame.state().get('selection').first().toJSON();
71
72 // Save the desired data
73 var desired_data = 'url';
74 if(element.attr('data-upload-property')) { desired_data = element.attr('data-upload-property'); }
75 jQuery('#'+element.attr('data-upload-target')).val(attachment[desired_data]).trigger('change');
76 });
77
78 // Finally, open the modal
79 file_frame.open();
80 });
81 });
82 };
83
84 jQuery('.mbt_upload_button').mbt_upload_button();
85
86 jQuery.fn.mbt_upload_clear_button = function() {
87 jQuery(this).each(function(i, e) {
88 var element = jQuery(e);
89 element.on('click', function() {
90 jQuery('#'+element.attr('data-upload-target')).val('').trigger('change');
91 });
92 });
93 }
94
95 jQuery('.mbt_upload_clear_button').mbt_upload_clear_button();
96
97 /*---------------------------------------------------------*/
98 /* Book Import Page */
99 /*---------------------------------------------------------*/
100
101 jQuery('.mbt-book-importer .import-submit').click(function(e) {
102 var el = jQuery(this);
103 setTimeout(function() { el.attr('disabled', 'disabled'); }, 0);
104 el.after('<div id="mbt-book-import-spinner"></div>');
105 });
106
107 /*---------------------------------------------------------*/
108 /* Review Checker */
109 /*---------------------------------------------------------*/
110
111 function mbt_reviews_type_display() {
112 jQuery('.mbt-check-reviews-begin').show();
113 jQuery('.mbt-check-reviews-checking').hide();
114 jQuery('.mbt-check-reviews-results').hide();
115
116 if(jQuery('input[name=mbt_reviews_type]:checked').val() == 'none') {
117 jQuery('.mbt-check-reviews').hide();
118 } else {
119 jQuery('.mbt-check-reviews').show();
120 }
121 }
122
123 jQuery('input[name=mbt_reviews_type]:radio').change(mbt_reviews_type_display);
124 mbt_reviews_type_display();
125
126 jQuery('.mbt-check-reviews-button').click(function() {
127 jQuery('.mbt-check-reviews-begin').hide();
128 jQuery('.mbt-check-reviews-results').hide();
129 jQuery('.mbt-check-reviews-checking').show();
130 jQuery.post(ajaxurl,
131 {
132 action: 'mbt_check_reviews',
133 reviews_type: jQuery('input[name=mbt_reviews_type]:checked').val(),
134 mbt_nonce: jQuery(this).attr('data-nonce'),
135 },
136 function(response) {
137 jQuery('.mbt-check-reviews-checking').hide();
138 jQuery('.mbt-check-reviews-begin').show();
139 jQuery('.mbt-check-reviews-results').show().html(response);
140 }
141 );
142 });
143 });
144
145 /*---------------------------------------------------------*/
146 /* Feedback Boxes */
147 /*---------------------------------------------------------*/
148
149 function mbt_do_feedback_colorize(element) {
150 var feedback = element.parent().find('.mbt_feedback').html();
151 element.removeClass('mbt_admin_input_success');
152 element.removeClass('mbt_admin_input_failure');
153 element.removeClass('mbt_admin_input_warning');
154 if(feedback.indexOf('mbt_admin_message_success') !== -1) {
155 element.addClass('mbt_admin_input_success');
156 } else if(feedback.indexOf('mbt_admin_message_failure') !== -1) {
157 element.addClass('mbt_admin_input_failure');
158 } else if(feedback.indexOf('mbt_admin_message_warning') !== -1) {
159 element.addClass('mbt_admin_input_warning');
160 }
161 }
162
163 function mbt_make_feedback_spinner(element) {
164 var loading_size = {'width': 18, 'height': 18};
165 if(element.children().length > 0) {
166 child = jQuery(element.children()[0]);
167 loading_size = {'width': Math.max(child.width(), loading_size['width']), 'height': Math.max(child.height(), loading_size['height'])};
168 }
169 element.empty().append(jQuery('<div class="mbt_feedback_loading"><div class="mbt_feedback_spinner"></div></div>').css(loading_size));
170 }
171
172 function mbt_do_feedback_refresh(element) {
173 if(!element.attr('disabled')) {
174 element.attr('disabled', 'disabled');
175 if(element.attr('type') == 'radio') {
176 jQuery('input[name='+element.attr('name')+']').attr('disabled', 'disabled');
177 }
178 var feedback = element.parent().find('.mbt_feedback');
179 mbt_make_feedback_spinner(feedback);
180
181 var data = null;
182 if(element.attr('data-element') === 'self') {
183 data = element.val();
184 } else if(element.attr('data-element').search(",") === -1) {
185 data = jQuery('#'+element.attr('data-element')).val();
186 } else {
187 var elements = element.attr('data-element').split(",");
188 data = {};
189 for(var i = elements.length - 1; i >= 0; i--) {
190 data[elements[i]] = jQuery('#'+elements[i]).val();
191 }
192 }
193
194 jQuery.post(ajaxurl,
195 {
196 action: element.attr('data-refresh-action'),
197 data: data,
198 mbt_nonce: element.attr('data-refresh-nonce'),
199 },
200 function(response) {
201 element.removeAttr('disabled');
202 if(element.attr('type') == 'radio') { jQuery('input[name='+element.attr('name')+']').removeAttr('disabled', 'disabled'); }
203 feedback.html(response);
204 if(element.hasClass('mbt_feedback_colorize')) { mbt_do_feedback_colorize(element); }
205 }
206 );
207 }
208 }
209
210 jQuery.fn.mbt_feedback = function() {
211 jQuery(this).each(function(i, e) {
212 var element = jQuery(this);
213
214 if(element.hasClass('mbt_feedback_refresh_initial')) { mbt_do_feedback_refresh(element); }
215 if(element.hasClass('mbt_feedback_colorize')) { mbt_do_feedback_colorize(element); }
216
217 if(element.prop("tagName") == "DIV") {
218 element.click(function() {
219 mbt_do_feedback_refresh(element);
220 return false;
221 });
222 } else {
223 element.change(function() { mbt_do_feedback_refresh(element); });
224 }
225 });
226 }