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