12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.editor.plugins.Breadcrumb"]){dojo._hasResource["dojox.editor.plugins.Breadcrumb"]=true;dojo.provide("dojox.editor.plugins.Breadcrumb");dojo.require("dijit._editor._Plugin");dojo.require("dijit._editor.range");dojo.require("dojo.i18n");dojo.require("dojo.string");dojo.require("dijit.Toolbar");dojo.require("dijit.form.Button");dojo.require("dijit._editor.selection");dojo.require("dijit.Menu");dojo.require("dijit.MenuItem");dojo.require("dijit.MenuSeparator");dojo.experimental("dojox.editor.plugins.Breadcrumb");dojo.requireLocalization("dojox.editor.plugins","Breadcrumb",null,"ROOT,cs,de,es,fr,hu,it,ja,ko,pl,pt,ru,zh,zh-tw");dojo.declare("dojox.editor.plugins._BreadcrumbMenuTitle",[dijit._Widget,dijit._Templated,dijit._Contained],{templateString:"<tr><td dojoAttachPoint=\"title\" colspan=\"4\" class=\"dijitToolbar\" style=\"font-weight: bold; padding: 3px;\"></td></tr>",menuTitle:"",postCreate:function(){dojo.setSelectable(this.domNode,false);var _1=this.id+"_text";dijit.setWaiState(this.domNode,"labelledby",_1);},_setMenuTitleAttr:function(_2){this.title.innerHTML=_2;},_getMenuTitleAttr:function(_3){return this.title.innerHTML;}});dojo.declare("dojox.editor.plugins.Breadcrumb",dijit._editor._Plugin,{_menu:null,breadcrumbBar:null,setEditor:function(_4){this.editor=_4;this._buttons=[];this.breadcrumbBar=new dijit.Toolbar();dojo.style(this.breadcrumbBar.domNode,"height","1.5em");var _5=dojo.i18n.getLocalization("dojox.editor.plugins","Breadcrumb");this._titleTemplate=_5.nodeActions;dojo.place(this.breadcrumbBar.domNode,this.editor.iframe,"after");this.editor.onLoadDeferred.addCallback(dojo.hitch(this,function(){this._menu=new dijit.Menu({});dojo.addClass(this.breadcrumbBar.domNode,"dojoxEditorBreadcrumbArrow");var _6=this;var _7=new dijit.form.ComboButton({showLabel:true,label:"body",_selNode:_4.editNode,dropDown:this._menu,onClick:dojo.hitch(this,function(){this._menuTarget=_4.editNode;this._selectContents();})});this._menuTitle=new dojox.editor.plugins._BreadcrumbMenuTitle({menuTitle:_5.nodeActions});this._selCMenu=new dijit.MenuItem({label:_5.selectContents,onClick:dojo.hitch(this,this._selectContents)});this._delCMenu=new dijit.MenuItem({label:_5.deleteContents,onClick:dojo.hitch(this,this._deleteContents)});this._selEMenu=new dijit.MenuItem({label:_5.selectElement,onClick:dojo.hitch(this,this._selectElement)});this._delEMenu=new dijit.MenuItem({label:_5.deleteElement,onClick:dojo.hitch(this,this._deleteElement)});this._moveSMenu=new dijit.MenuItem({label:_5.moveStart,onClick:dojo.hitch(this,this._moveCToStart)});this._moveEMenu=new dijit.MenuItem({label:_5.moveEnd,onClick:dojo.hitch(this,this._moveCToEnd)});this._menu.addChild(this._menuTitle);this._menu.addChild(this._selCMenu);this._menu.addChild(this._delCMenu);this._menu.addChild(new dijit.MenuSeparator({}));this._menu.addChild(this._selEMenu);this._menu.addChild(this._delEMenu);this._menu.addChild(new dijit.MenuSeparator({}));this._menu.addChild(this._moveSMenu);this._menu.addChild(this._moveEMenu);_7._ddConnect=dojo.connect(_7,"openDropDown",dojo.hitch(this,function(){this._menuTarget=_7._selNode;this._menuTitle.attr("menuTitle",dojo.string.substitute(this._titleTemplate,{"nodeName":"<body>"}));this._selEMenu.attr("disabled",true);this._delEMenu.attr("disabled",true);this._selCMenu.attr("disabled",false);this._delCMenu.attr("disabled",false);this._moveSMenu.attr("disabled",false);this._moveEMenu.attr("disabled",false);}));this.breadcrumbBar.addChild(_7);this.connect(this.editor,"onNormalizedDisplayChanged","updateState");}));this.breadcrumbBar.startup();},_selectContents:function(){this.editor.focus();if(this._menuTarget){var _8=this._menuTarget.tagName.toLowerCase();switch(_8){case "br":case "hr":case "img":case "input":case "base":case "meta":case "area":case "basefont":break;default:try{dojo.withGlobal(this.editor.window,"collapse",dijit._editor.selection,[null]);dojo.withGlobal(this.editor.window,"selectElementChildren",dijit._editor.selection,[this._menuTarget]);this.editor.onDisplayChanged();}catch(e){}}}},_deleteContents:function(){if(this._menuTarget){this.editor.beginEditing();this._selectContents();dojo.withGlobal(this.editor.window,"remove",dijit._editor.selection,[this._menuTarget]);this.editor.endEditing();this._updateBreadcrumb();this.editor.onDisplayChanged();}},_selectElement:function(){this.editor.focus();if(this._menuTarget){dojo.withGlobal(this.editor.window,"collapse",dijit._editor.selection,[null]);dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[this._menuTarget]);this.editor.onDisplayChanged();}},_deleteElement:function(){if(this._menuTarget){this.editor.beginEditing();this._selectElement();dojo.withGlobal(this.editor.window,"remove",dijit._editor.selection,[this._menuTarget]);this.editor.endEditing();this._updateBreadcrumb();this.editor.onDisplayChanged();}},_moveCToStart:function(){this.editor.focus();if(this._menuTarget){this._selectContents();dojo.withGlobal(this.editor.window,"collapse",dijit._editor.selection,[true]);}},_moveCToEnd:function(){this.editor.focus();if(this._menuTarget){this._selectContents();dojo.withGlobal(this.editor.window,"collapse",dijit._editor.selection,[false]);}},_updateBreadcrumb:function(){var ed=this.editor;if(ed.window){var _9=dijit.range.getSelection(ed.window);if(_9&&_9.rangeCount>0){var _a=_9.getRangeAt(0);var _b=dojo.withGlobal(ed.window,"getSelectedElement",dijit._editor.selection)||_a.startContainer;var _c=[];if(_b&&_b.ownerDocument===ed.document){while(_b&&_b!==ed.editNode){if(_b.nodeType===1){_c.push({type:_b.tagName.toLowerCase(),node:_b});}_b=_b.parentNode;}_c=_c.reverse();while(this._buttons.length){var db=this._buttons.pop();dojo.disconnect(db._ddConnect);this.breadcrumbBar.removeChild(db);}this._buttons=[];var i;var _d=this;for(i=0;i<_c.length;i++){var bc=_c[i];var b=new dijit.form.ComboButton({showLabel:true,label:bc.type,_selNode:bc.node,dropDown:this._menu,onClick:function(){_d._menuTarget=this._selNode;_d._selectContents();}});b._ddConnect=dojo.connect(b,"openDropDown",dojo.hitch(b,function(){_d._menuTarget=this._selNode;var _e=_d._menuTarget.tagName.toLowerCase();var _f=dojo.string.substitute(_d._titleTemplate,{"nodeName":"<"+_e+">"});_d._menuTitle.attr("menuTitle",_f);switch(_e){case "br":case "hr":case "img":case "input":case "base":case "meta":case "area":case "basefont":_d._selCMenu.attr("disabled",true);_d._delCMenu.attr("disabled",true);_d._moveSMenu.attr("disabled",true);_d._moveEMenu.attr("disabled",true);_d._selEMenu.attr("disabled",false);_d._delEMenu.attr("disabled",false);break;default:_d._selCMenu.attr("disabled",false);_d._delCMenu.attr("disabled",false);_d._selEMenu.attr("disabled",false);_d._delEMenu.attr("disabled",false);_d._moveSMenu.attr("disabled",false);_d._moveEMenu.attr("disabled",false);}}));this._buttons.push(b);this.breadcrumbBar.addChild(b);}if(dojo.isIE){this.breadcrumbBar.domNode.className=this.breadcrumbBar.domNode.className;}}}}},updateState:function(){if(dojo.style(this.editor.iframe,"display")==="none"){dojo.style(this.breadcrumbBar.domNode,"display","none");}else{if(dojo.style(this.breadcrumbBar.domNode,"display")==="none"){dojo.style(this.breadcrumbBar.domNode,"display","block");}this._updateBreadcrumb();}},destroy:function(){if(this.breadcrumbBar){this.breadcrumbBar.destroy();this.breadcrumbBar=null;}this._buttons=null;delete this.editor.breadcrumbBar;this.inherited(arguments);}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}var _10=o.args.name.toLowerCase();if(_10==="breadcrumb"){o.plugin=new dojox.editor.plugins.Breadcrumb({});}});}
|