亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? editor.js

?? 圖書管理系統(tǒng)包括圖書的增加、刪除、修改等功能
?? JS
字號:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*//* TODO: * - font selector * - test, bug fix, more features :)*/dojo.provide("dojo.widget.Editor");dojo.provide("dojo.widget.html.Editor");dojo.require("dojo.io.*");dojo.require("dojo.widget.*");dojo.require("dojo.widget.Toolbar");dojo.require("dojo.widget.RichText");dojo.require("dojo.widget.ColorPalette");dojo.require("dojo.string.extras");dojo.widget.tags.addParseTreeHandler("dojo:Editor");dojo.widget.html.Editor = function() {	dojo.widget.HtmlWidget.call(this);	this.contentFilters = [];	this._toolbars = [];}dojo.inherits(dojo.widget.html.Editor, dojo.widget.HtmlWidget);dojo.widget.html.Editor.itemGroups = {	textGroup: ["bold", "italic", "underline", "strikethrough"],	blockGroup: ["formatBlock", "fontName", "fontSize"],	justifyGroup: ["justifyleft", "justifycenter", "justifyright"],	commandGroup: ["save", "cancel"],	colorGroup: ["forecolor", "hilitecolor"],	listGroup: ["insertorderedlist", "insertunorderedlist"],	indentGroup: ["outdent", "indent"],	linkGroup: ["createlink", "insertimage", "inserthorizontalrule"]};dojo.widget.html.Editor.formatBlockValues = {	"Normal": "p",	"Main heading": "h2",	"Sub heading": "h3",	"Sub sub heading": "h4",	"Preformatted": "pre"};dojo.widget.html.Editor.fontNameValues = {	"Arial": "Arial, Helvetica, sans-serif",	"Verdana": "Verdana, sans-serif",	"Times New Roman": "Times New Roman, serif",	"Courier": "Courier New, monospace"};dojo.widget.html.Editor.fontSizeValues = {	"1 (8 pt)" : "1",	"2 (10 pt)": "2",	"3 (12 pt)": "3",	"4 (14 pt)": "4",	"5 (18 pt)": "5",	"6 (24 pt)": "6",	"7 (36 pt)": "7"};dojo.widget.html.Editor.defaultItems = [	"commandGroup", "|", "blockGroup", "|", "textGroup", "|", "colorGroup", "|", "justifyGroup", "|", "listGroup", "indentGroup", "|", "linkGroup"];// ones we support by default without asking the RichText component// NOTE: you shouldn't put buttons like bold, italic, etc in heredojo.widget.html.Editor.supportedCommands = ["save", "cancel", "|", "-", "/", " "];dojo.lang.extend(dojo.widget.html.Editor, {	widgetType: "Editor",	saveUrl: "",	saveMethod: "post",	saveArgName: "editorContent",	closeOnSave: false,	items: dojo.widget.html.Editor.defaultItems,	formatBlockItems: dojo.lang.shallowCopy(dojo.widget.html.Editor.formatBlockValues),	fontNameItems: dojo.lang.shallowCopy(dojo.widget.html.Editor.fontNameValues),	fontSizeItems: dojo.lang.shallowCopy(dojo.widget.html.Editor.fontSizeValues),	// used to get the properties of an item if it is given as a string	getItemProperties: function(name) {		var props = {};		switch(name.toLowerCase()) {			case "bold":			case "italic":			case "underline":			case "strikethrough":				props.toggleItem = true;				break;			case "justifygroup":				props.defaultButton = "justifyleft";				props.preventDeselect = true;				props.buttonGroup = true;				break;			case "listgroup":				props.buttonGroup = true;				break;			case "save":			case "cancel":				props.label = dojo.string.capitalize(name);				break;			case "forecolor":			case "hilitecolor":				props.name = name;				props.toggleItem = true; // FIXME: they aren't exactly toggle items				props.icon = this.getCommandImage(name);				break;			case "formatblock":				props.name = "formatBlock";				props.values = this.formatBlockItems;				break;			case "fontname":				props.name = "fontName";				props.values = this.fontNameItems;			case "fontsize":				props.name = "fontSize";				props.values = this.fontSizeItems;		}		return props;	},	validateItems: true, // set to false to add items, regardless of support	focusOnLoad: true,	minHeight: "1em",	_richText: null, // RichText widget	_richTextType: "RichText",	_toolbarContainer: null, // ToolbarContainer widget	_toolbarContainerType: "ToolbarContainer",	_toolbars: [],	_toolbarType: "Toolbar",	_toolbarItemType: "ToolbarItem",	buildRendering: function(args, frag) {		// get the node from args/frag		var node = frag["dojo:"+this.widgetType.toLowerCase()]["nodeRef"];		var trt = dojo.widget.createWidget(this._richTextType, {			focusOnLoad: this.focusOnLoad,			minHeight: this.minHeight		}, node)		var _this = this;		// this appears to fix a weird timing bug on Safari		setTimeout(function(){			_this.setRichText(trt);			_this.initToolbar();			_this.fillInTemplate(args, frag);		}, 0);	},	setRichText: function(richText) {		if(this._richText && this._richText == richText) {			dojo.debug("Already set the richText to this richText!");			return;		}		if(this._richText && !this._richText.isClosed) {			dojo.debug("You are switching richTexts yet you haven't closed the current one. Losing reference!");		}		this._richText = richText;		dojo.event.connect(this._richText, "close", this, "onClose");		dojo.event.connect(this._richText, "onLoad", this, "onLoad");		dojo.event.connect(this._richText, "onDisplayChanged", this, "updateToolbar");		if(this._toolbarContainer) {			this._toolbarContainer.enable();			this.updateToolbar(true);		}	},	initToolbar: function() {		// var tic = new Date();		if(this._toolbarContainer) { return; } // only create it once		this._toolbarContainer = dojo.widget.createWidget(this._toolbarContainerType);		var tb = this.addToolbar();		var last = true;		for(var i = 0; i < this.items.length; i++) {			if(this.items[i] == "\n") { // new row				tb = this.addToolbar();			} else {				if((this.items[i] == "|")&&(!last)){					last = true;				}else{					last = this.addItem(this.items[i], tb);				}			}		}		this.insertToolbar(this._toolbarContainer.domNode, this._richText.domNode);		// alert(new Date - tic);	},	// allow people to override this so they can make their own placement logic	insertToolbar: function(tbNode, richTextNode) {		dojo.html.insertBefore(tbNode, richTextNode);		//dojo.html.insertBefore(this._toolbarContainer.domNode, this._richText.domNode);	},	addToolbar: function(toolbar) {		this.initToolbar();		if(!(toolbar instanceof dojo.widget.html.Toolbar)) {			toolbar = dojo.widget.createWidget(this._toolbarType);		}		this._toolbarContainer.addChild(toolbar);		this._toolbars.push(toolbar);		return toolbar;	},	addItem: function(item, tb, dontValidate) {		if(!tb) { tb = this._toolbars[0]; }		var cmd = ((item)&&(!dojo.lang.isUndefined(item["getValue"]))) ?  cmd = item["getValue"](): item;		var groups = dojo.widget.html.Editor.itemGroups;		if(item instanceof dojo.widget.ToolbarItem) {			tb.addChild(item);		} else if(groups[cmd]) {			var group = groups[cmd];			var worked = true;			if(cmd == "justifyGroup" || cmd == "listGroup") {				var btnGroup = [cmd];				for(var i = 0 ; i < group.length; i++) {					if(dontValidate || this.isSupportedCommand(group[i])) {						btnGroup.push(this.getCommandImage(group[i]));					}else{						worked = false;					}				}				if(btnGroup.length){					/*					// the addChild interface is assinine. Work around it.					var tprops = this.getItemProperties(cmd);					var tmpGroup = dojo.widget.createWidget("ToolbarButtonGroup", tprops);					dojo.debug(btnGroup);					dojo.event.connect(tmpGroup, "onClick", this, "_action");					dojo.event.connect(tmpGroup, "onChangeSelect", this, "_action");					*/					var btn = tb.addChild(btnGroup, null, this.getItemProperties(cmd));					dojo.event.connect(btn, "onClick", this, "_action");					dojo.event.connect(btn, "onChangeSelect", this, "_action");				}				return worked;			} else {				for(var i = 0; i < group.length; i++) {					if(!this.addItem(group[i], tb)){						worked = false;					}				}				return worked;			}		} else {			if((!dontValidate)&&(!this.isSupportedCommand(cmd))){				return false;			}			if(dontValidate || this.isSupportedCommand(cmd)) {				cmd = cmd.toLowerCase();				if(cmd == "formatblock") {					var select = dojo.widget.createWidget("ToolbarSelect", {						name: "formatBlock",						values: this.formatBlockItems					});					tb.addChild(select);					var _this = this;					dojo.event.connect(select, "onSetValue", function(item, value) {						_this.onAction("formatBlock", value);					});				} else if(cmd == "fontname") {					var select = dojo.widget.createWidget("ToolbarSelect", {						name: "fontName",						values: this.fontNameItems					});					tb.addChild(select);					dojo.event.connect(select, "onSetValue", dojo.lang.hitch(this, function(item, value) {						this.onAction("fontName", value);					}));				} else if(cmd == "fontsize") {					var select = dojo.widget.createWidget("ToolbarSelect", {						name: "fontSize",						values: this.fontSizeItems					});					tb.addChild(select);					dojo.event.connect(select, "onSetValue", dojo.lang.hitch(this, function(item, value) {						this.onAction("fontSize", value);					}));				} else if(dojo.lang.inArray(cmd, ["forecolor", "hilitecolor"])) {					var btn = tb.addChild(dojo.widget.createWidget("ToolbarColorDialog", this.getItemProperties(cmd)));					dojo.event.connect(btn, "onSetValue", this, "_setValue");				} else {					var btn = tb.addChild(this.getCommandImage(cmd), null, this.getItemProperties(cmd));					if(cmd == "save"){						dojo.event.connect(btn, "onClick", this, "_save");					}else if(cmd == "cancel"){						dojo.event.connect(btn, "onClick", this, "_close");					} else {						dojo.event.connect(btn, "onClick", this, "_action");						dojo.event.connect(btn, "onChangeSelect", this, "_action");					}				}			}		}		return true;	},	enableToolbar: function() {		if(this._toolbarContainer) {			this._toolbarContainer.domNode.style.display = "";			this._toolbarContainer.enable();		}	},	disableToolbar: function(hide){		if(hide){			if(this._toolbarContainer){				this._toolbarContainer.domNode.style.display = "none";			}		}else{			if(this._toolbarContainer){				this._toolbarContainer.disable();			}		}	},	_updateToolbarLastRan: null,	_updateToolbarTimer: null,	_updateToolbarFrequency: 500,	updateToolbar: function(force) {		if(!this._toolbarContainer) { return; }		// keeps the toolbar from updating too frequently		// TODO: generalize this functionality?		var diff = new Date() - this._updateToolbarLastRan;		if(!force && this._updateToolbarLastRan && (diff < this._updateToolbarFrequency)) {			clearTimeout(this._updateToolbarTimer);			var _this = this;			this._updateToolbarTimer = setTimeout(function() {				_this.updateToolbar();			}, this._updateToolbarFrequency/2);			return;		} else {			this._updateToolbarLastRan = new Date();		}		// end frequency checker		var items = this._toolbarContainer.getItems();		for(var i = 0; i < items.length; i++) {			var item = items[i];			if(item instanceof dojo.widget.html.ToolbarSeparator) { continue; }			var cmd = item._name;			if (cmd == "save" || cmd == "cancel") { continue; }			else if(cmd == "justifyGroup") {				try {					if(!this._richText.queryCommandEnabled("justifyleft")) {						item.disable(false, true);					} else {						item.enable(false, true);						var jitems = item.getItems();						for(var j = 0; j < jitems.length; j++) {							var name = jitems[j]._name;							var value = this._richText.queryCommandValue(name);							if(typeof value == "boolean" && value) {								value = name;								break;							} else if(typeof value == "string") {								value = "justify"+value;							} else {								value = null;							}						}						if(!value) { value = "justifyleft"; } // TODO: query actual style						item.setValue(value, false, true);					}				} catch(err) {}			} else if(cmd == "listGroup") {				var litems = item.getItems();				for(var j = 0; j < litems.length; j++) {					this.updateItem(litems[j]);				}			} else {				this.updateItem(item);			}		}	},	updateItem: function(item) {		try {			var cmd = item._name;			var enabled = this._richText.queryCommandEnabled(cmd);			item.setEnabled(enabled, false, true);			var active = this._richText.queryCommandState(cmd);			if(active && cmd == "underline") {				// don't activate underlining if we are on a link				active = !this._richText.queryCommandEnabled("unlink");			}			item.setSelected(active, false, true);			return true;		} catch(err) {			return false;		}	},	supportedCommands: dojo.widget.html.Editor.supportedCommands.concat(),	isSupportedCommand: function(cmd) {		// FIXME: how do we check for ActiveX?		var yes = dojo.lang.inArray(cmd, this.supportedCommands);		if(!yes) {			try {				var richText = this._richText || dojo.widget.HtmlRichText.prototype;				yes = richText.queryCommandAvailable(cmd);			} catch(E) {}		}		return yes;	},	getCommandImage: function(cmd) {		if(cmd == "|") {			return cmd;		} else {			return dojo.uri.dojoUri("src/widget/templates/buttons/" + cmd + ".gif");		}	},	_action: function(e) {		this._fire("onAction", e.getValue());	},	_setValue: function(a, b) {		this._fire("onAction", a.getValue(), b);	},	_save: function(e){		// FIXME: how should this behave when there's a larger form in play?		if(!this._richText.isClosed){			if(this.saveUrl.length){				var content = {};				content[this.saveArgName] = this.getHtml();				dojo.io.bind({					method: this.saveMethod,					url: this.saveUrl,					content: content				});			}else{				dojo.debug("please set a saveUrl for the editor");			}			if(this.closeOnSave){				this._richText.close(e.getName().toLowerCase() == "save");			}		}	},	_close: function(e) {		if(!this._richText.isClosed) {			this._richText.close(e.getName().toLowerCase() == "save");		}	},	onAction: function(cmd, value) {		switch(cmd) {			case "createlink":				if(!(value = prompt("Please enter the URL of the link:", "http://"))) {					return;				}				break;			case "insertimage":				if(!(value = prompt("Please enter the URL of the image:", "http://"))) {					return;				}				break;		}		this._richText.execCommand(cmd, value);	},	fillInTemplate: function(args, frag) {		// dojo.event.connect(this, "onResized", this._richText, "onResized");	},	_fire: function(eventName) {		if(dojo.lang.isFunction(this[eventName])) {			var args = [];			if(arguments.length == 1) {				args.push(this);			} else {				for(var i = 1; i < arguments.length; i++) {					args.push(arguments[i]);				}			}			this[eventName].apply(this, args);		}	},	getHtml: function(){		this._richText.contentFilters = this._richText.contentFilters.concat(this.contentFilters);		return this._richText.getEditorContent();	},	getEditorContent: function(){		return this.getHtml();	},	onClose: function(save, hide){		this.disableToolbar(hide);		if(save) {			this._fire("onSave");		} else {			this._fire("onCancel");		}	},	// events baby!	onLoad: function(){},	onSave: function(){},	onCancel: function(){}});

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产无毒不卡在线观看| 日本不卡中文字幕| 久久精品一区二区| 久久亚洲私人国产精品va媚药| 制服丝袜国产精品| 欧美成人欧美edvon| 久久伊99综合婷婷久久伊| 精品久久国产老人久久综合| 26uuu国产在线精品一区二区| 精品欧美一区二区久久| 欧美大片在线观看一区| 久久天堂av综合合色蜜桃网| 久久久午夜电影| 成人免费一区二区三区视频| 亚洲日本在线a| 日韩精品成人一区二区三区| 理论电影国产精品| 成人免费观看av| 欧美午夜电影网| 日韩你懂的在线观看| 久久久久久久久蜜桃| 亚洲三级在线观看| 日精品一区二区| 国产aⅴ综合色| 欧美视频在线观看一区| 日韩免费电影网站| 国产精品成人一区二区艾草| 亚洲电影在线免费观看| 国精产品一区一区三区mba桃花| 高清不卡在线观看av| 色婷婷综合激情| 欧美岛国在线观看| 悠悠色在线精品| 国产成人在线视频免费播放| 在线观看亚洲精品视频| 久久人人97超碰com| 亚洲一区二区精品3399| 国产一区二区三区综合| 欧美日韩午夜在线| 国产精品久久久久婷婷| 麻豆成人久久精品二区三区红| 成人av网在线| 久久伊人中文字幕| 亚洲成人动漫在线观看| 99久久综合狠狠综合久久| 欧美一区二区免费观在线| 综合欧美亚洲日本| 国产九色sp调教91| 欧美一级淫片007| 亚洲永久精品国产| 91在线免费看| 国产欧美精品在线观看| 秋霞影院一区二区| 欧美日韩一本到| 亚洲人精品午夜| 国产成人av一区| 精品少妇一区二区三区日产乱码 | 国产精品久久久一本精品| 日韩中文字幕一区二区三区| 色综合久久88色综合天天6| 久久人人97超碰com| 美女脱光内衣内裤视频久久影院| 91极品视觉盛宴| 一区二区三区四区五区视频在线观看| 国产91丝袜在线18| 久久久久88色偷偷免费| 国产一区二区三区不卡在线观看| 91精品国产福利| 免费日韩伦理电影| 欧美一区二区视频网站| 午夜精品福利一区二区蜜股av| 日本韩国欧美三级| 一区二区三区.www| 91福利社在线观看| 性做久久久久久久久| 欧美精品粉嫩高潮一区二区| 日韩高清一级片| 日韩女同互慰一区二区| 精品一区二区三区免费| 精品国产一区二区三区不卡| 另类欧美日韩国产在线| 久久日韩粉嫩一区二区三区| 国产一区二区美女| 欧美激情综合网| 色妹子一区二区| 亚洲午夜久久久久中文字幕久| 欧美日韩一区二区三区在线| 日韩专区一卡二卡| 久久综合狠狠综合久久综合88| 国产在线播放一区二区三区| 国产日韩欧美综合一区| 97国产一区二区| 亚洲国产三级在线| 精品乱人伦小说| 97se狠狠狠综合亚洲狠狠| 一区二区理论电影在线观看| 777亚洲妇女| 国产成人精品一区二| 亚洲激情在线播放| 日韩欧美在线1卡| 成人短视频下载| 午夜精品久久久久久久99水蜜桃| 欧美一区二区久久久| 国产白丝精品91爽爽久久| 一区二区高清在线| 欧美精品一区二区三区视频| 99riav久久精品riav| 蜜桃精品在线观看| 亚洲日本一区二区三区| 欧美mv日韩mv国产网站| 色婷婷久久久综合中文字幕| 久久精品999| 一区二区三区在线影院| 久久一二三国产| 欧美日韩在线播放三区四区| 国产黄人亚洲片| 日精品一区二区三区| 亚洲人一二三区| 精品国产一区久久| 欧美三级视频在线观看| 国产69精品久久久久毛片| 日韩电影一区二区三区四区| 国产精品久久久久精k8 | 亚洲国产精品成人综合| 91精品中文字幕一区二区三区 | 亚洲欧美区自拍先锋| 337p日本欧洲亚洲大胆精品 | 国产成人精品午夜视频免费| 亚洲福利一二三区| 中文字幕人成不卡一区| 欧美激情综合五月色丁香小说| 777奇米成人网| 在线精品国精品国产尤物884a| 国产一区不卡在线| 日韩精品欧美精品| 亚洲成av人片| 亚洲国产精品一区二区久久恐怖片 | 欧美日韩一区精品| 99精品欧美一区| 波多野结衣中文一区| 国产美女av一区二区三区| 美女任你摸久久| 免费看日韩a级影片| 丝袜脚交一区二区| 日日夜夜一区二区| 首页国产欧美久久| 日韩国产在线观看一区| 日本视频中文字幕一区二区三区| 亚洲成人中文在线| 肉色丝袜一区二区| 看电影不卡的网站| 韩国女主播一区| 国产不卡免费视频| www.99精品| 91视视频在线观看入口直接观看www | 亚洲男人电影天堂| 亚洲欧洲综合另类在线| 亚洲私人黄色宅男| 亚洲网友自拍偷拍| 蜜桃视频一区二区三区| 久久99久久精品欧美| 国产成人精品亚洲午夜麻豆| 国产成人精品亚洲日本在线桃色 | 播五月开心婷婷综合| 97se亚洲国产综合自在线观| 91视频免费播放| 欧美高清www午色夜在线视频| 538在线一区二区精品国产| 精品人在线二区三区| 国产精品欧美一级免费| 一区二区日韩电影| 男男成人高潮片免费网站| 国产一区二区不卡老阿姨| 成人aaaa免费全部观看| 欧美日韩三级在线| 26uuuu精品一区二区| 亚洲天堂精品视频| 日韩精品五月天| 成人午夜视频在线观看| 欧美色图在线观看| 久久久久久**毛片大全| 亚洲激情图片小说视频| 久久国产精品区| 色综合久久久久综合体| 欧美大肚乱孕交hd孕妇| 国产精品美女视频| 日韩成人伦理电影在线观看| 成人中文字幕在线| 欧美自拍偷拍一区| 久久久久久久免费视频了| 亚洲妇女屁股眼交7| 国产精品一二三| 欧美喷潮久久久xxxxx| 国产精品久久久久一区二区三区| 婷婷开心激情综合| 国产v日产∨综合v精品视频| 欧美日韩成人一区| 亚洲色欲色欲www在线观看| 韩国在线一区二区| 欧美一区二区三区视频在线 |