Don't like ads? PRO users don't see any ads ;-)
Guest

gallery.js

By: a guest on Dec 9th, 2010  |  syntax: JavaScript  |  size: 6.14 KB  |  hits: 149  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. jQuery(document).ready(function($) {
  2.         var gallerySortable, gallerySortableInit, w, desc = false;
  3.  
  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(e, ui) {
  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.  
  22.         sortIt = function() {
  23.                 var all = $('.menu_order_input'), len = all.length;
  24.                 all.each(function(i){
  25.                         var order = desc ? (len - i) : (1 + i);
  26.                         $(this).val(order);
  27.                 });
  28.         }
  29.  
  30.         clearAll = function(c) {
  31.                 c = c || 0;
  32.                 $('.menu_order_input').each(function(){
  33.                         if ( this.value == '0' || c ) this.value = '';
  34.                 });
  35.         }
  36.  
  37.         $('#asc').click(function(){desc = false; sortIt(); return false;});
  38.         $('#desc').click(function(){desc = true; sortIt(); return false;});
  39.         $('#clear').click(function(){clearAll(1); return false;});
  40.         $('#showall').click(function(){
  41.                 $('#sort-buttons span a').toggle();
  42.                 $('a.describe-toggle-on').hide();
  43.                 $('a.describe-toggle-off, table.slidetoggle').show();
  44.                 return false;
  45.         });
  46.         $('#hideall').click(function(){
  47.                 $('#sort-buttons span a').toggle();
  48.                 $('a.describe-toggle-on').show();
  49.                 $('a.describe-toggle-off, table.slidetoggle').hide();
  50.                 return false;
  51.         });
  52.  
  53.         // initialize sortable
  54.         gallerySortableInit();
  55.         clearAll();
  56.  
  57.         if ( $('#media-items>*').length > 1 ) {
  58.                 w = wpgallery.getWin();
  59.  
  60.                 $('#save-all, #gallery-settings').show();
  61.                 if ( typeof w.tinyMCE != 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
  62.                         wpgallery.mcemode = true;
  63.                         wpgallery.init();
  64.                 } else {
  65.                         $('#insert-gallery').show();
  66.                 }
  67.         }
  68. });
  69.  
  70. jQuery(window).unload( function () { tinymce = tinyMCE = wpgallery = null; } ); // Cleanup
  71.  
  72. /* gallery settings */
  73. var tinymce = null, tinyMCE, wpgallery;
  74.  
  75. wpgallery = {
  76.         mcemode : false,
  77.         editor : {},
  78.         dom : {},
  79.         is_update : false,
  80.         el : {},
  81.  
  82.         I : function(e) {
  83.                 return document.getElementById(e);
  84.         },
  85.  
  86.         init: function() {
  87.                 var t = this, li, q, i, it, w = t.getWin();
  88.  
  89.                 if ( ! t.mcemode ) return;
  90.  
  91.                 li = ('' + document.location.search).replace(/^\?/, '').split('&');
  92.                 q = {};
  93.                 for (i=0; i<li.length; i++) {
  94.                         it = li[i].split('=');
  95.                         q[unescape(it[0])] = unescape(it[1]);
  96.                 }
  97.  
  98.                 if (q.mce_rdomain)
  99.                         document.domain = q.mce_rdomain;
  100.  
  101.                 // Find window & API
  102.                 tinymce = w.tinymce;
  103.                 tinyMCE = w.tinyMCE;
  104.                 t.editor = tinymce.EditorManager.activeEditor;
  105.  
  106.                 t.setup();
  107.         },
  108.  
  109.         getWin : function() {
  110.                 return window.dialogArguments || opener || parent || top;
  111.         },
  112.  
  113.         restoreSelection : function() {
  114.                 var t = this;
  115.  
  116.                 if (tinymce.isIE)
  117.                         t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
  118.         },
  119.  
  120.         setup : function() {
  121.                 var t = this, a, ed = t.editor, g, columns, link, order, orderby;
  122.                 if ( ! t.mcemode ) return;
  123.  
  124.                 t.restoreSelection();
  125.                 t.el = ed.selection.getNode();
  126.  
  127.                 if ( t.el.nodeName != 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
  128.                         if ( (g = ed.dom.select('img.wpGallery')) && g[0] ) {
  129.                                 t.el = g[0];
  130.                         } else {
  131.                                 if ( getUserSetting('galfile') == '1' ) t.I('linkto-file').checked = "checked";
  132.                                 if ( getUserSetting('galdesc') == '1' ) t.I('order-desc').checked = "checked";
  133.                                 if ( getUserSetting('galcols') ) t.I('columns').value = getUserSetting('galcols');
  134.                                 if ( getUserSetting('galord') ) t.I('orderby').value = getUserSetting('galord');
  135.                                 if ( getUserSetting("galsize") ) t.I("size").value=getUserSetting("galsize");
  136.  
  137.                                 jQuery('#insert-gallery').show();
  138.                                 return;
  139.                         }
  140.                 }
  141.  
  142.                 a = ed.dom.getAttrib(t.el, 'title');
  143.                 a = ed.dom.decode(a);
  144.  
  145.                 if ( a ) {
  146.                         jQuery('#update-gallery').show();
  147.                         t.is_update = true;
  148.  
  149.                         columns = a.match(/columns=['"]([0-9]+)['"]/);
  150.                         link = a.match(/link=['"]([^'"]+)['"]/i);
  151.                         order = a.match(/order=['"]([^'"]+)['"]/i);
  152.                         orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
  153.                         size = a.match(/size=['"]([^'"]+)['"]/i);
  154.                         exclude = a.match(/exclude=['"]([^'"]+)['"]/i);
  155.                         include = a.match(/include=['"]([^'"]+)['"]/i);
  156.  
  157.                         if ( link && link[1] ) t.I('linkto-file').checked = "checked";
  158.                         if ( order && order[1] ) t.I('order-desc').checked = "checked";
  159.                         if ( columns && columns[1] ) t.I('columns').value = ''+columns[1];
  160.                         if ( orderby && orderby[1] ) t.I('orderby').value = orderby[1];
  161.                         if ( exclude&&exclude[1]) t.I("exclude").value=exclude[1];
  162.                         if ( include&&include[1] ) t.I('include').value=include[1];
  163.                         if ( size&&size[1] ) t.I('size').value=size[1];
  164.  
  165.                 } else {
  166.                         jQuery('#insert-gallery').show();
  167.                 }
  168.         },
  169.  
  170.         update : function() {
  171.                 var t = this, ed = t.editor, all = '', s;
  172.  
  173.                 if ( ! t.mcemode || ! t.is_update ) {
  174.                         s = '[gallery'+t.getSettings()+']';
  175.                         t.getWin().send_to_editor(s);
  176.                         return;
  177.                 }
  178.  
  179.                 if (t.el.nodeName != 'IMG') return;
  180.  
  181.                 all = ed.dom.decode(ed.dom.getAttrib(t.el, 'title'));
  182.                 all = all.replace(/\s*(order|link|columns|orderby|exclude|include|size)=['"]([^'"]+)['"]/gi, '');
  183.                 all += t.getSettings();
  184.  
  185.                 ed.dom.setAttrib(t.el, 'title', all);
  186.                 t.getWin().tb_remove();
  187.         },
  188.  
  189.         getSettings : function() {
  190.                 var I = this.I, s = '';
  191.  
  192.                 if ( I('linkto-file').checked ) {
  193.                         s += ' link="file"';
  194.                         setUserSetting('galfile', '1');
  195.                 }
  196.  
  197.                 if ( I('order-desc').checked ) {
  198.                         s += ' order="DESC"';
  199.                         setUserSetting('galdesc', '1');
  200.                 }
  201.  
  202.                 if ( I('columns').value != 3 ) {
  203.                         s += ' columns="'+I('columns').value+'"';
  204.                         setUserSetting('galcols', I('columns').value);
  205.                 }
  206.  
  207.                 if ( I('orderby').value != 'menu_order' ) {
  208.                         s += ' orderby="'+I('orderby').value+'"';
  209.                         setUserSetting('galord', I('orderby').value);
  210.                 }
  211.                
  212.                 if( I('exclude').value != '' ) {
  213.                         s += ' exclude="'+I('exclude').value+'"';
  214.                 }
  215.                
  216.                 if( I('include').value != '' ) {
  217.                         s += ' include="'+I('include').value+'"';
  218.                 }
  219.                
  220.                 if( I('size').value != 'thumbnail'){
  221.                         s += ' size="'+I('size').value+'"';
  222.                         setUserSetting('galsize', I('size').value);
  223.                 }
  224.  
  225.                 return s;
  226.         }
  227. };