📄 controls.js
字号:
if (this.options.externalControl) {Event.observe(this.options.externalControl, "click", this.onclickListener);Event.observe(this.options.externalControl, "mouseover", this.mouseoverListener);Event.observe(this.options.externalControl, "mouseout", this.mouseoutListener);}}, enterEditMode:function (evt) {if (this.saving) {return;}if (this.editing) {return;}this.editing = true;this.onEnterEditMode();if (this.options.externalControl) {Element.hide(this.options.externalControl);}Element.hide(this.element);this.createForm();this.element.parentNode.insertBefore(this.form, this.element);if (!this.options.loadTextURL) {Field.scrollFreeActivate(this.editField);}if (evt) {Event.stop(evt);}return false;}, createForm:function () {this.form = document.createElement("form");this.form.id = this.options.formId;Element.addClassName(this.form, this.options.formClassName);this.form.onsubmit = this.onSubmit.bind(this);this.createEditField();if (this.options.textarea) {var br = document.createElement("br");this.form.appendChild(br);}if (this.options.okButton) {okButton = document.createElement("input");okButton.type = "submit";okButton.value = this.options.okText;okButton.className = "editor_ok_button";this.form.appendChild(okButton);}if (this.options.cancelLink) {cancelLink = document.createElement("a");cancelLink.href = "#";cancelLink.appendChild(document.createTextNode(this.options.cancelText));cancelLink.onclick = this.onclickCancel.bind(this);cancelLink.className = "editor_cancel";this.form.appendChild(cancelLink);}}, hasHTMLLineBreaks:function (string) {if (!this.options.handleLineBreaks) {return false;}return string.match(/<br/i) || string.match(/<p>/i);}, convertHTMLLineBreaks:function (string) {return string.replace(/<br>/gi, "\n").replace(/<br\/>/gi, "\n").replace(/<\/p>/gi, "\n").replace(/<p>/gi, "");}, createEditField:function () {var text;if (this.options.loadTextURL) {text = this.options.loadingText;} else {text = this.getText();}var obj = this;if (this.options.rows == 1 && !this.hasHTMLLineBreaks(text)) {this.options.textarea = false;var textField = document.createElement("input");textField.obj = this;textField.type = "text";textField.name = this.options.paramName;textField.value = text;textField.style.backgroundColor = this.options.highlightcolor;textField.className = "editor_field";var size = this.options.size || this.options.cols || 0;if (size != 0) {textField.size = size;}if (this.options.submitOnBlur) {textField.onblur = this.onSubmit.bind(this);}this.editField = textField;} else {this.options.textarea = true;var textArea = document.createElement("textarea");textArea.obj = this;textArea.name = this.options.paramName;textArea.value = this.convertHTMLLineBreaks(text);textArea.rows = this.options.rows;textArea.cols = this.options.cols || 40;textArea.className = "editor_field";if (this.options.submitOnBlur) {textArea.onblur = this.onSubmit.bind(this);}this.editField = textArea;}if (this.options.loadTextURL) {this.loadExternalText();}this.form.appendChild(this.editField);}, getText:function () {return this.element.innerHTML;}, loadExternalText:function () {Element.addClassName(this.form, this.options.loadingClassName);this.editField.disabled = true;new Ajax.Request(this.options.loadTextURL, Object.extend({asynchronous:true, onComplete:this.onLoadedExternalText.bind(this)}, this.options.ajaxOptions));}, onLoadedExternalText:function (transport) {Element.removeClassName(this.form, this.options.loadingClassName);this.editField.disabled = false;this.editField.value = transport.responseText.stripTags();Field.scrollFreeActivate(this.editField);}, onclickCancel:function () {this.onComplete();this.leaveEditMode();return false;}, onFailure:function (transport) {this.options.onFailure(transport);if (this.oldInnerHTML) {this.element.innerHTML = this.oldInnerHTML;this.oldInnerHTML = null;}return false;}, onSubmit:function () {var form = this.form;var value = this.editField.value;this.onLoading();if (this.options.evalScripts) {new Ajax.Request(this.url, Object.extend({parameters:this.options.callback(form, value), onComplete:this.onComplete.bind(this), onFailure:this.onFailure.bind(this), asynchronous:true, evalScripts:true}, this.options.ajaxOptions));} else {new Ajax.Updater({success:this.element, failure:null}, this.url, Object.extend({parameters:this.options.callback(form, value), onComplete:this.onComplete.bind(this), onFailure:this.onFailure.bind(this)}, this.options.ajaxOptions));}if (arguments.length > 1) {Event.stop(arguments[0]);}return false;}, onLoading:function () {this.saving = true;this.removeForm();this.leaveHover();this.showSaving();}, showSaving:function () {this.oldInnerHTML = this.element.innerHTML;this.element.innerHTML = this.options.savingText;Element.addClassName(this.element, this.options.savingClassName);this.element.style.backgroundColor = this.originalBackground;Element.show(this.element);}, removeForm:function () {if (this.form) {if (this.form.parentNode) {Element.remove(this.form);}this.form = null;}}, enterHover:function () {if (this.saving) {return;}this.element.style.backgroundColor = this.options.highlightcolor;if (this.effect) {this.effect.cancel();}Element.addClassName(this.element, this.options.hoverClassName);}, leaveHover:function () {if (this.options.backgroundColor) {this.element.style.backgroundColor = this.oldBackground;}Element.removeClassName(this.element, this.options.hoverClassName);if (this.saving) {return;}this.effect = new Effect.Highlight(this.element, {startcolor:this.options.highlightcolor, endcolor:this.options.highlightendcolor, restorecolor:this.originalBackground});}, leaveEditMode:function () {Element.removeClassName(this.element, this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor = this.originalBackground;Element.show(this.element);if (this.options.externalControl) {Element.show(this.options.externalControl);}this.editing = false;this.saving = false;this.oldInnerHTML = null;this.onLeaveEditMode();}, onComplete:function (transport) {this.leaveEditMode();this.options.onComplete.bind(this)(transport, this.element);}, onEnterEditMode:function () {}, onLeaveEditMode:function () {}, dispose:function () {if (this.oldInnerHTML) {this.element.innerHTML = this.oldInnerHTML;}this.leaveEditMode();Event.stopObserving(this.element, "click", this.onclickListener);Event.stopObserving(this.element, "mouseover", this.mouseoverListener);Event.stopObserving(this.element, "mouseout", this.mouseoutListener);if (this.options.externalControl) {Event.stopObserving(this.options.externalControl, "click", this.onclickListener);Event.stopObserving(this.options.externalControl, "mouseover", this.mouseoverListener);Event.stopObserving(this.options.externalControl, "mouseout", this.mouseoutListener);}}};Ajax.InPlaceCollectionEditor = Class.create();Object.extend(Ajax.InPlaceCollectionEditor.prototype, Ajax.InPlaceEditor.prototype);Object.extend(Ajax.InPlaceCollectionEditor.prototype, {createEditField:function () {if (!this.cached_selectTag) {var selectTag = document.createElement("select");var collection = this.options.collection || [];var optionTag;collection.each(function (e, i) {optionTag = document.createElement("option");optionTag.value = (e instanceof Array) ? e[0] : e;if ((typeof this.options.value == "undefined") && ((e instanceof Array) ? this.element.innerHTML == e[1] : e == optionTag.value)) {optionTag.selected = true;}if (this.options.value == optionTag.value) {optionTag.selected = true;}optionTag.appendChild(document.createTextNode((e instanceof Array) ? e[1] : e));selectTag.appendChild(optionTag);}.bind(this));this.cached_selectTag = selectTag;}this.editField = this.cached_selectTag;if (this.options.loadTextURL) {this.loadExternalText();}this.form.appendChild(this.editField);this.options.callback = function (form, value) {return "value=" + encodeURIComponent(value);};}});Form.Element.DelayedObserver = Class.create();Form.Element.DelayedObserver.prototype = {initialize:function (element, delay, callback) {this.delay = delay || 0.5;this.element = $(element);this.callback = callback;this.timer = null;this.lastValue = $F(this.element);Event.observe(this.element, "keyup", this.delayedListener.bindAsEventListener(this));}, delayedListener:function (event) {if (this.lastValue == $F(this.element)) {return;}if (this.timer) {clearTimeout(this.timer);}this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);this.lastValue = $F(this.element);}, onTimerEvent:function () {this.timer = null;this.callback(this.element, $F(this.element));}};});
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -