gallery.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. /* global unescape, getUserSetting, setUserSetting */
  2. jQuery(document).ready(function($) {
  3. var gallerySortable, gallerySortableInit, sortIt, clearAll, w, desc = false;
  4. gallerySortableInit = function() {
  5. gallerySortable = $('#media-items').sortable( {
  6. items: 'div.media-item',
  7. placeholder: 'sorthelper',
  8. axis: 'y',
  9. distance: 2,
  10. handle: 'div.filename',
  11. stop: function() {
  12. // When an update has occurred, adjust the order for each item
  13. var all = $('#media-items').sortable('toArray'), len = all.length;
  14. $.each(all, function(i, id) {
  15. var order = desc ? (len - i) : (1 + i);
  16. $('#' + id + ' .menu_order input').val(order);
  17. });
  18. }
  19. } );
  20. };
  21. sortIt = function() {
  22. var all = $('.menu_order_input'), len = all.length;
  23. all.each(function(i){
  24. var order = desc ? (len - i) : (1 + i);
  25. $(this).val(order);
  26. });
  27. };
  28. clearAll = function(c) {
  29. c = c || 0;
  30. $('.menu_order_input').each( function() {
  31. if ( this.value === '0' || c ) {
  32. this.value = '';
  33. }
  34. });
  35. };
  36. $('#asc').click( function( e ) {
  37. e.preventDefault();
  38. desc = false;
  39. sortIt();
  40. });
  41. $('#desc').click( function( e ) {
  42. e.preventDefault();
  43. desc = true;
  44. sortIt();
  45. });
  46. $('#clear').click( function( e ) {
  47. e.preventDefault();
  48. clearAll(1);
  49. });
  50. $('#showall').click( function( e ) {
  51. e.preventDefault();
  52. $('#sort-buttons span a').toggle();
  53. $('a.describe-toggle-on').hide();
  54. $('a.describe-toggle-off, table.slidetoggle').show();
  55. $('img.pinkynail').toggle(false);
  56. });
  57. $('#hideall').click( function( e ) {
  58. e.preventDefault();
  59. $('#sort-buttons span a').toggle();
  60. $('a.describe-toggle-on').show();
  61. $('a.describe-toggle-off, table.slidetoggle').hide();
  62. $('img.pinkynail').toggle(true);
  63. });
  64. // initialize sortable
  65. gallerySortableInit();
  66. clearAll();
  67. if ( $('#media-items>*').length > 1 ) {
  68. w = wpgallery.getWin();
  69. $('#save-all, #gallery-settings').show();
  70. if ( typeof w.tinyMCE !== 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
  71. wpgallery.mcemode = true;
  72. wpgallery.init();
  73. } else {
  74. $('#insert-gallery').show();
  75. }
  76. }
  77. });
  78. jQuery(window).unload( function () { tinymce = tinyMCE = wpgallery = null; } ); // Cleanup
  79. /* gallery settings */
  80. var tinymce = null, tinyMCE, wpgallery;
  81. wpgallery = {
  82. mcemode : false,
  83. editor : {},
  84. dom : {},
  85. is_update : false,
  86. el : {},
  87. I : function(e) {
  88. return document.getElementById(e);
  89. },
  90. init: function() {
  91. var t = this, li, q, i, it, w = t.getWin();
  92. if ( ! t.mcemode ) {
  93. return;
  94. }
  95. li = ('' + document.location.search).replace(/^\?/, '').split('&');
  96. q = {};
  97. for (i=0; i<li.length; i++) {
  98. it = li[i].split('=');
  99. q[unescape(it[0])] = unescape(it[1]);
  100. }
  101. if ( q.mce_rdomain ) {
  102. document.domain = q.mce_rdomain;
  103. }
  104. // Find window & API
  105. tinymce = w.tinymce;
  106. tinyMCE = w.tinyMCE;
  107. t.editor = tinymce.EditorManager.activeEditor;
  108. t.setup();
  109. },
  110. getWin : function() {
  111. return window.dialogArguments || opener || parent || top;
  112. },
  113. setup : function() {
  114. var t = this, a, ed = t.editor, g, columns, link, order, orderby;
  115. if ( ! t.mcemode ) {
  116. return;
  117. }
  118. t.el = ed.selection.getNode();
  119. if ( t.el.nodeName !== 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
  120. if ( ( g = ed.dom.select('img.wpGallery') ) && g[0] ) {
  121. t.el = g[0];
  122. } else {
  123. if ( getUserSetting('galfile') === '1' ) {
  124. t.I('linkto-file').checked = 'checked';
  125. }
  126. if ( getUserSetting('galdesc') === '1' ) {
  127. t.I('order-desc').checked = 'checked';
  128. }
  129. if ( getUserSetting('galcols') ) {
  130. t.I('columns').value = getUserSetting('galcols');
  131. }
  132. if ( getUserSetting('galord') ) {
  133. t.I('orderby').value = getUserSetting('galord');
  134. }
  135. jQuery('#insert-gallery').show();
  136. return;
  137. }
  138. }
  139. a = ed.dom.getAttrib(t.el, 'title');
  140. a = ed.dom.decode(a);
  141. if ( a ) {
  142. jQuery('#update-gallery').show();
  143. t.is_update = true;
  144. columns = a.match(/columns=['"]([0-9]+)['"]/);
  145. link = a.match(/link=['"]([^'"]+)['"]/i);
  146. order = a.match(/order=['"]([^'"]+)['"]/i);
  147. orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
  148. if ( link && link[1] ) {
  149. t.I('linkto-file').checked = 'checked';
  150. }
  151. if ( order && order[1] ) {
  152. t.I('order-desc').checked = 'checked';
  153. }
  154. if ( columns && columns[1] ) {
  155. t.I('columns').value = '' + columns[1];
  156. }
  157. if ( orderby && orderby[1] ) {
  158. t.I('orderby').value = orderby[1];
  159. }
  160. } else {
  161. jQuery('#insert-gallery').show();
  162. }
  163. },
  164. update : function() {
  165. var t = this, ed = t.editor, all = '', s;
  166. if ( ! t.mcemode || ! t.is_update ) {
  167. s = '[gallery' + t.getSettings() + ']';
  168. t.getWin().send_to_editor(s);
  169. return;
  170. }
  171. if ( t.el.nodeName !== 'IMG' ) {
  172. return;
  173. }
  174. all = ed.dom.decode( ed.dom.getAttrib( t.el, 'title' ) );
  175. all = all.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi, '');
  176. all += t.getSettings();
  177. ed.dom.setAttrib(t.el, 'title', all);
  178. t.getWin().tb_remove();
  179. },
  180. getSettings : function() {
  181. var I = this.I, s = '';
  182. if ( I('linkto-file').checked ) {
  183. s += ' link="file"';
  184. setUserSetting('galfile', '1');
  185. }
  186. if ( I('order-desc').checked ) {
  187. s += ' order="DESC"';
  188. setUserSetting('galdesc', '1');
  189. }
  190. if ( I('columns').value !== 3 ) {
  191. s += ' columns="' + I('columns').value + '"';
  192. setUserSetting('galcols', I('columns').value);
  193. }
  194. if ( I('orderby').value !== 'menu_order' ) {
  195. s += ' orderby="' + I('orderby').value + '"';
  196. setUserSetting('galord', I('orderby').value);
  197. }
  198. return s;
  199. }
  200. };