tinymce-shortcode-script.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. //(function() {
  2. if(typeof(rev_lang) == 'undefined'){
  3. rev_lang = {};
  4. rev_lang.slider_revolution_shortcode_creator = 'Slider Revolution Shortcode Creator';
  5. rev_lang.shortcode_generator = 'Shortcode Generator';
  6. rev_lang.please_add_at_least_one_layer = 'Please add at least one Layer.';
  7. rev_lang.choose_image = 'Choose Image';
  8. rev_lang.shortcode_parsing_successfull = 'Shortcode parsing successfull. Items can be found in step 3';
  9. rev_lang.shortcode_could_not_be_correctly_parsed = 'Shortcode could not be parsed.';
  10. }
  11. if(typeof(tinymce) !== 'undefined'){
  12. tinymce.PluginManager.add('revslider_sc_button', function( editor, url ) {
  13. editor.addButton('revslider_sc_button', {
  14. title: rev_lang.slider_revolution_shortcode_creator,
  15. icon: 'icon dashicons-update',
  16. onclick: function() {
  17. opened_by_mce = true;
  18. //reset all options and settings
  19. revslider_tiny_reset_all();
  20. jQuery('#revslider-tiny-dialog-step-1').show();
  21. jQuery('#revslider-tiny-dialog-step-1-5').hide();
  22. editor.windowManager.open({
  23. id : 'revslider-tiny-mce-dialog',
  24. title : '',
  25. width : 900,
  26. height : 600,
  27. resizable: false,
  28. wpDialog : true
  29. },
  30. {
  31. plugin_url : url // Plugin absolute URL
  32. });
  33. }
  34. });
  35. rs_open_editor = editor;
  36. });
  37. }
  38. jQuery(document).ready(function () {
  39. if (typeof QTags !== 'undefined') {
  40. var add_rs_button = true;
  41. if(edButtons !== undefined){
  42. for(var key in edButtons){
  43. if(edButtons[key].id == 'slider-revolution'){
  44. add_rs_button = false;
  45. break;
  46. }
  47. }
  48. }
  49. if(add_rs_button){
  50. QTags.addButton('slider-revolution', 'Slider Revolution', function () {
  51. opened_by_mce = false;
  52. //reset all options and settings
  53. revslider_tiny_reset_all();
  54. jQuery('#revslider-tiny-dialog-step-1').show();
  55. jQuery('#revslider-tiny-dialog-step-1-5').hide();
  56. jQuery('#revslider-tiny-mce-dialog').dialog({
  57. modal:true,
  58. title : '',
  59. width : 900,
  60. height : 600,
  61. resizable: false,
  62. wpDialog : true
  63. });
  64. });
  65. }
  66. }
  67. });
  68. var opened_by_mce = false;
  69. var revslider_is_vc = false;
  70. var rs_cur_vc_obj = false;
  71. var rs_open_editor = false;
  72. /**
  73. * Reset everything do defaults
  74. **/
  75. function revslider_tiny_reset_all(){
  76. revslider_is_vc = false;
  77. //disable Quick Modify Slider button
  78. jQuery('#revslider-tiny-mce-settings-form').trigger('reset');
  79. jQuery('#revslider-tiny-mce-dialog').show();
  80. jQuery('#revslider-existing-slider option[value="-1"]').attr('selected', 'selected');
  81. jQuery('#revslider-tiny-grid-settings-wrap').removeClass('notselectable');
  82. jQuery('#rs-custom-elements-wrap').html(''); //remove all custom build elements
  83. jQuery('#revslider-existing-slider option:selected').change();
  84. jQuery('#rs-shortcode-select-wrapper li').each(function(){
  85. jQuery(this).removeClass('selected');
  86. });
  87. }
  88. function checkOpenRevDialogWindow() {
  89. setTimeout(function() {
  90. var rtmd = jQuery('#revslider-tiny-mce-dialog')
  91. if (rtmd.closest('.ui-dialog:visible'))
  92. rtmd.closest('.ui-dialog').find('.ui-dialog-titlebar-close').click();
  93. },100);
  94. }
  95. jQuery(document).ready(function(){
  96. /**
  97. * Add shortcode with predefined slider to content
  98. **/
  99. if(!jQuery('#rs-add-predefined-slider').hasClass('rs-clicklistener')){
  100. jQuery('#rs-add-predefined-slider').addClass('rs-clicklistener');
  101. jQuery('body').on('change', '#revslider-existing-slider', function(){
  102. var sel = jQuery('#revslider-existing-slider option:selected');
  103. if(sel.data('slidertype') == 'gallery' || sel.data('slidertype') == 'specific_posts' || sel.data('slidertype') == 'current_post'){
  104. jQuery('#rs-modify-predefined-slider').removeClass('nonclickable');
  105. }else{
  106. jQuery('#rs-modify-predefined-slider').addClass('nonclickable');
  107. }
  108. if(sel.val() != '-1'){
  109. jQuery('#rs-add-predefined-slider').removeClass('nonclickable');
  110. }else{
  111. jQuery('#rs-add-predefined-slider').addClass('nonclickable');
  112. }
  113. });
  114. jQuery('#revslider-existing-slider').change();
  115. jQuery(document).ready(function(){
  116. jQuery('.rs-mod-slides-wrapper').sortable();
  117. });
  118. jQuery('body').on('click', '#rs-modify-predefined-slider', function(){
  119. var rs_raw_construct = wp.template( "rs-modify-slide-wrap" );
  120. var sel = jQuery('#revslider-existing-slider option:selected');
  121. if(sel.data('slidertype') == 'gallery' || sel.data('slidertype') == 'specific_posts' || sel.data('slidertype') == 'current_post'){
  122. jQuery('.rs-mod-slides-wrapper').html(''); //reset HTML
  123. //check if id is available
  124. if(typeof(rev_sliders_info) !== 'undefined'){
  125. for(var key in rev_sliders_info){
  126. if(key == sel.data('sliderid')){
  127. //add all found slides, empty the old ones first
  128. for(var sl in rev_sliders_info[key]){
  129. var content = rs_raw_construct(rev_sliders_info[key][sl]);
  130. jQuery('.rs-mod-slides-wrapper').append(content);
  131. }
  132. jQuery('#revslider-tiny-dialog-step-1').hide();
  133. jQuery('#revslider-tiny-dialog-step-1-5').show();
  134. return true;
  135. }
  136. }
  137. }
  138. }
  139. });
  140. jQuery('body').on('click', '#rs-add-predefined-slider', function(){
  141. var form = jQuery(this).parents('form');
  142. checkOpenRevDialogWindow();
  143. if ( ! validateForm( form ) )
  144. return false;
  145. rs_add_shortcode();
  146. return false;
  147. });
  148. function rs_add_shortcode(data){
  149. var slider_handle = jQuery('select[name="revslider-existing-slider"] option:selected').val();
  150. if(slider_handle !== '-1'){
  151. var order = '';
  152. if(data !== undefined){
  153. if(typeof(data.order) !== 'undefined'){
  154. order = ' order="'+data.order.join()+'"';
  155. }
  156. }
  157. var content = '[rev_slider alias="'+slider_handle+'"'+order+'][/rev_slider]';
  158. if(!revslider_is_vc){
  159. if(opened_by_mce){
  160. tinyMCE.activeEditor.selection.setContent( content );
  161. if(rs_open_editor !== false)
  162. rs_open_editor.windowManager.close();
  163. }else{
  164. QTags.insertContent(content);
  165. }
  166. //jQuery('#revslider-tiny-mce-dialog').closest('.ui-dialog').hide();
  167. }else{
  168. var rs_vc_data = {'alias':slider_handle};
  169. if(data !== undefined){
  170. if(typeof(data.order) !== 'undefined'){
  171. rs_vc_data.order = data.order;
  172. }
  173. }
  174. rs_cur_vc_obj.model.save('params', rs_vc_data);
  175. jQuery('#revslider-tiny-mce-dialog').dialog('close');
  176. }
  177. }
  178. }
  179. jQuery('body').on('click', '#rs-shortcode-select-wrapper li', function(){
  180. if(!jQuery(this).hasClass('rs-slider-modify-new-slider')){
  181. var sliderid = jQuery(this).data('sliderid');
  182. var slideralias = jQuery(this).data('slideralias');
  183. jQuery('#rs-shortcode-select-wrapper li').each(function(){
  184. jQuery(this).removeClass('selected');
  185. });
  186. jQuery(this).addClass('selected');
  187. jQuery('#revslider-existing-slider option[value="'+slideralias+'"]').attr('selected', 'selected');
  188. jQuery('#revslider-existing-slider option:selected').change();
  189. }
  190. });
  191. }
  192. /**
  193. * Add Slider Sorted with the given order, also check for published/unpublished
  194. **/
  195. jQuery('body').on('click', '#revslider-add-custom-shortcode-modify', function(){
  196. var myslides = [];
  197. var heroadded = false;
  198. jQuery('.rs-mod-slides-wrapper li').each(function(){
  199. var sp = jQuery(this).find('.slide-published');
  200. var slideid = jQuery(this).attr('id').replace('slidelist_item_', '');
  201. if(sp.length > 0 && !sp.hasClass('pubclickable')){ //check if we are published
  202. //we are published
  203. myslides.push(slideid);
  204. }else{
  205. //either hero or unpublished
  206. var sq = jQuery(this).find('.slide-unpublished');
  207. if(sq.length > 0 && !sq.hasClass('pubclickable')){ //check if we are unpublished
  208. //we are unpublished
  209. }else{
  210. //we are hero
  211. var sr = jQuery(this).find('.slide-hero-published');
  212. if(sr.length > 0 && !sr.hasClass('pubclickable') && heroadded == false){ //we are hero published
  213. //as we are hero, this is the last step and we can break the each here
  214. myslides.push(slideid);
  215. heroadded = true;
  216. }
  217. }
  218. }
  219. });
  220. rs_add_shortcode({order: myslides});
  221. checkOpenRevDialogWindow();
  222. });
  223. /**
  224. * Go to step 1
  225. **/
  226. jQuery('body').on('click', '.rs-goto-step-1', function(){
  227. jQuery('#revslider-tiny-dialog-step-1').show();
  228. jQuery('#revslider-tiny-dialog-step-1-5').hide();
  229. });
  230. });
  231. var revslider_create_by_predefined = false;
  232. jQuery('body').on('change', 'select[name="revslider-tiny-existing-settings"]', function(){
  233. var choosen_slider = jQuery(this).val();
  234. if(choosen_slider != '-1'){
  235. jQuery('#revslider-tiny-slider-settings-wrap').addClass('notselectable');
  236. jQuery('#revslider-tiny-slider-settings-wrap').find('input, select, textarea').attr('disabled', 'disabled');
  237. }else{
  238. jQuery('#revslider-tiny-slider-settings-wrap').removeClass('notselectable');
  239. jQuery('#revslider-tiny-slider-settings-wrap').find('input, select, textarea').attr('disabled', false);
  240. }
  241. });
  242. jQuery('select[name="revslider-tiny-existing-settings"]').change();
  243. //})();