forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * editable_selects.js
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Copyright 2009, Moxiecode Systems AB
							 | 
						||
| 
								 | 
							
								 * Released under LGPL License.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * License: http://tinymce.moxiecode.com/license
							 | 
						||
| 
								 | 
							
								 * Contributing: http://tinymce.moxiecode.com/contributing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var TinyMCE_EditableSelects = {
							 | 
						||
| 
								 | 
							
									editSelectElm : null,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									init : function() {
							 | 
						||
| 
								 | 
							
										var nl = document.getElementsByTagName("select"), i, d = document, o;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										for (i=0; i<nl.length; i++) {
							 | 
						||
| 
								 | 
							
											if (nl[i].className.indexOf('mceEditableSelect') != -1) {
							 | 
						||
| 
								 | 
							
												o = new Option('(value)', '__mce_add_custom__');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												o.className = 'mceAddSelectValue';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												nl[i].options[nl[i].options.length] = o;
							 | 
						||
| 
								 | 
							
												nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									onChangeEditableSelect : function(e) {
							 | 
						||
| 
								 | 
							
										var d = document, ne, se = window.event ? window.event.srcElement : e.target;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
							 | 
						||
| 
								 | 
							
											ne = d.createElement("input");
							 | 
						||
| 
								 | 
							
											ne.id = se.id + "_custom";
							 | 
						||
| 
								 | 
							
											ne.name = se.name + "_custom";
							 | 
						||
| 
								 | 
							
											ne.type = "text";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											ne.style.width = se.offsetWidth + 'px';
							 | 
						||
| 
								 | 
							
											se.parentNode.insertBefore(ne, se);
							 | 
						||
| 
								 | 
							
											se.style.display = 'none';
							 | 
						||
| 
								 | 
							
											ne.focus();
							 | 
						||
| 
								 | 
							
											ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
							 | 
						||
| 
								 | 
							
											ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
							 | 
						||
| 
								 | 
							
											TinyMCE_EditableSelects.editSelectElm = se;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									onBlurEditableSelectInput : function() {
							 | 
						||
| 
								 | 
							
										var se = TinyMCE_EditableSelects.editSelectElm;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (se) {
							 | 
						||
| 
								 | 
							
											if (se.previousSibling.value != '') {
							 | 
						||
| 
								 | 
							
												addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
							 | 
						||
| 
								 | 
							
												selectByValue(document.forms[0], se.id, se.previousSibling.value);
							 | 
						||
| 
								 | 
							
											} else
							 | 
						||
| 
								 | 
							
												selectByValue(document.forms[0], se.id, '');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											se.style.display = 'inline';
							 | 
						||
| 
								 | 
							
											se.parentNode.removeChild(se.previousSibling);
							 | 
						||
| 
								 | 
							
											TinyMCE_EditableSelects.editSelectElm = null;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									onKeyDown : function(e) {
							 | 
						||
| 
								 | 
							
										e = e || window.event;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (e.keyCode == 13)
							 | 
						||
| 
								 | 
							
											TinyMCE_EditableSelects.onBlurEditableSelectInput();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 |