241 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			241 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @output wp-admin/js/gallery.js
 | |
|  */
 | |
| 
 | |
| /* global unescape, getUserSetting, setUserSetting, wpgallery, tinymce */
 | |
| 
 | |
| jQuery(document).ready(function($) {
 | |
| 	var gallerySortable, gallerySortableInit, sortIt, clearAll, w, desc = false;
 | |
| 
 | |
| 	gallerySortableInit = function() {
 | |
| 		gallerySortable = $('#media-items').sortable( {
 | |
| 			items: 'div.media-item',
 | |
| 			placeholder: 'sorthelper',
 | |
| 			axis: 'y',
 | |
| 			distance: 2,
 | |
| 			handle: 'div.filename',
 | |
| 			stop: function() {
 | |
| 				// When an update has occurred, adjust the order for each item
 | |
| 				var all = $('#media-items').sortable('toArray'), len = all.length;
 | |
| 				$.each(all, function(i, id) {
 | |
| 					var order = desc ? (len - i) : (1 + i);
 | |
| 					$('#' + id + ' .menu_order input').val(order);
 | |
| 				});
 | |
| 			}
 | |
| 		} );
 | |
| 	};
 | |
| 
 | |
| 	sortIt = function() {
 | |
| 		var all = $('.menu_order_input'), len = all.length;
 | |
| 		all.each(function(i){
 | |
| 			var order = desc ? (len - i) : (1 + i);
 | |
| 			$(this).val(order);
 | |
| 		});
 | |
| 	};
 | |
| 
 | |
| 	clearAll = function(c) {
 | |
| 		c = c || 0;
 | |
| 		$('.menu_order_input').each( function() {
 | |
| 			if ( this.value === '0' || c ) {
 | |
| 				this.value = '';
 | |
| 			}
 | |
| 		});
 | |
| 	};
 | |
| 
 | |
| 	$('#asc').click( function( e ) {
 | |
| 		e.preventDefault();
 | |
| 		desc = false;
 | |
| 		sortIt();
 | |
| 	});
 | |
| 	$('#desc').click( function( e ) {
 | |
| 		e.preventDefault();
 | |
| 		desc = true;
 | |
| 		sortIt();
 | |
| 	});
 | |
| 	$('#clear').click( function( e ) {
 | |
| 		e.preventDefault();
 | |
| 		clearAll(1);
 | |
| 	});
 | |
| 	$('#showall').click( function( e ) {
 | |
| 		e.preventDefault();
 | |
| 		$('#sort-buttons span a').toggle();
 | |
| 		$('a.describe-toggle-on').hide();
 | |
| 		$('a.describe-toggle-off, table.slidetoggle').show();
 | |
| 		$('img.pinkynail').toggle(false);
 | |
| 	});
 | |
| 	$('#hideall').click( function( e ) {
 | |
| 		e.preventDefault();
 | |
| 		$('#sort-buttons span a').toggle();
 | |
| 		$('a.describe-toggle-on').show();
 | |
| 		$('a.describe-toggle-off, table.slidetoggle').hide();
 | |
| 		$('img.pinkynail').toggle(true);
 | |
| 	});
 | |
| 
 | |
| 	// initialize sortable
 | |
| 	gallerySortableInit();
 | |
| 	clearAll();
 | |
| 
 | |
| 	if ( $('#media-items>*').length > 1 ) {
 | |
| 		w = wpgallery.getWin();
 | |
| 
 | |
| 		$('#save-all, #gallery-settings').show();
 | |
| 		if ( typeof w.tinyMCE !== 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
 | |
| 			wpgallery.mcemode = true;
 | |
| 			wpgallery.init();
 | |
| 		} else {
 | |
| 			$('#insert-gallery').show();
 | |
| 		}
 | |
| 	}
 | |
| });
 | |
| 
 | |
| jQuery(window).unload( function () { window.tinymce = window.tinyMCE = window.wpgallery = null; } ); // Cleanup
 | |
| 
 | |
| /* gallery settings */
 | |
| window.tinymce = null;
 | |
| 
 | |
| window.wpgallery = {
 | |
| 	mcemode : false,
 | |
| 	editor : {},
 | |
| 	dom : {},
 | |
| 	is_update : false,
 | |
| 	el : {},
 | |
| 
 | |
| 	I : function(e) {
 | |
| 		return document.getElementById(e);
 | |
| 	},
 | |
| 
 | |
| 	init: function() {
 | |
| 		var t = this, li, q, i, it, w = t.getWin();
 | |
| 
 | |
| 		if ( ! t.mcemode ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		li = ('' + document.location.search).replace(/^\?/, '').split('&');
 | |
| 		q = {};
 | |
| 		for (i=0; i<li.length; i++) {
 | |
| 			it = li[i].split('=');
 | |
| 			q[unescape(it[0])] = unescape(it[1]);
 | |
| 		}
 | |
| 
 | |
| 		if ( q.mce_rdomain ) {
 | |
| 			document.domain = q.mce_rdomain;
 | |
| 		}
 | |
| 
 | |
| 		// Find window & API
 | |
| 		window.tinymce = w.tinymce;
 | |
| 		window.tinyMCE = w.tinyMCE;
 | |
| 		t.editor = tinymce.EditorManager.activeEditor;
 | |
| 
 | |
| 		t.setup();
 | |
| 	},
 | |
| 
 | |
| 	getWin : function() {
 | |
| 		return window.dialogArguments || opener || parent || top;
 | |
| 	},
 | |
| 
 | |
| 	setup : function() {
 | |
| 		var t = this, a, ed = t.editor, g, columns, link, order, orderby;
 | |
| 		if ( ! t.mcemode ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		t.el = ed.selection.getNode();
 | |
| 
 | |
| 		if ( t.el.nodeName !== 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
 | |
| 			if ( ( g = ed.dom.select('img.wpGallery') ) && g[0] ) {
 | |
| 				t.el = g[0];
 | |
| 			} else {
 | |
| 				if ( getUserSetting('galfile') === '1' ) {
 | |
| 					t.I('linkto-file').checked = 'checked';
 | |
| 				}
 | |
| 				if ( getUserSetting('galdesc') === '1' ) {
 | |
| 					t.I('order-desc').checked = 'checked';
 | |
| 				}
 | |
| 				if ( getUserSetting('galcols') ) {
 | |
| 					t.I('columns').value = getUserSetting('galcols');
 | |
| 				}
 | |
| 				if ( getUserSetting('galord') ) {
 | |
| 					t.I('orderby').value = getUserSetting('galord');
 | |
| 				}
 | |
| 				jQuery('#insert-gallery').show();
 | |
| 				return;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		a = ed.dom.getAttrib(t.el, 'title');
 | |
| 		a = ed.dom.decode(a);
 | |
| 
 | |
| 		if ( a ) {
 | |
| 			jQuery('#update-gallery').show();
 | |
| 			t.is_update = true;
 | |
| 
 | |
| 			columns = a.match(/columns=['"]([0-9]+)['"]/);
 | |
| 			link = a.match(/link=['"]([^'"]+)['"]/i);
 | |
| 			order = a.match(/order=['"]([^'"]+)['"]/i);
 | |
| 			orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
 | |
| 
 | |
| 			if ( link && link[1] ) {
 | |
| 				t.I('linkto-file').checked = 'checked';
 | |
| 			}
 | |
| 			if ( order && order[1] ) {
 | |
| 				t.I('order-desc').checked = 'checked';
 | |
| 			}
 | |
| 			if ( columns && columns[1] ) {
 | |
| 				t.I('columns').value = '' + columns[1];
 | |
| 			}
 | |
| 			if ( orderby && orderby[1] ) {
 | |
| 				t.I('orderby').value = orderby[1];
 | |
| 			}
 | |
| 		} else {
 | |
| 			jQuery('#insert-gallery').show();
 | |
| 		}
 | |
| 	},
 | |
| 
 | |
| 	update : function() {
 | |
| 		var t = this, ed = t.editor, all = '', s;
 | |
| 
 | |
| 		if ( ! t.mcemode || ! t.is_update ) {
 | |
| 			s = '[gallery' + t.getSettings() + ']';
 | |
| 			t.getWin().send_to_editor(s);
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		if ( t.el.nodeName !== 'IMG' ) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		all = ed.dom.decode( ed.dom.getAttrib( t.el, 'title' ) );
 | |
| 		all = all.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi, '');
 | |
| 		all += t.getSettings();
 | |
| 
 | |
| 		ed.dom.setAttrib(t.el, 'title', all);
 | |
| 		t.getWin().tb_remove();
 | |
| 	},
 | |
| 
 | |
| 	getSettings : function() {
 | |
| 		var I = this.I, s = '';
 | |
| 
 | |
| 		if ( I('linkto-file').checked ) {
 | |
| 			s += ' link="file"';
 | |
| 			setUserSetting('galfile', '1');
 | |
| 		}
 | |
| 
 | |
| 		if ( I('order-desc').checked ) {
 | |
| 			s += ' order="DESC"';
 | |
| 			setUserSetting('galdesc', '1');
 | |
| 		}
 | |
| 
 | |
| 		if ( I('columns').value !== 3 ) {
 | |
| 			s += ' columns="' + I('columns').value + '"';
 | |
| 			setUserSetting('galcols', I('columns').value);
 | |
| 		}
 | |
| 
 | |
| 		if ( I('orderby').value !== 'menu_order' ) {
 | |
| 			s += ' orderby="' + I('orderby').value + '"';
 | |
| 			setUserSetting('galord', I('orderby').value);
 | |
| 		}
 | |
| 
 | |
| 		return s;
 | |
| 	}
 | |
| };
 |