//>>built define("dijit/_editor/plugins/ViewSource",["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/_base/event","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/_base/sniff","dojo/_base/window","dojo/window","../../focus","../_Plugin","../../form/ToggleButton","../..","../../registry","dojo/i18n!../nls/commands"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,on,_b,_c,_d,_e,_f,_10,_11,_12){ var _13=_2("dijit._editor.plugins.ViewSource",_f,{stripScripts:true,stripComments:true,stripIFrames:true,readOnly:false,_fsPlugin:null,toggle:function(){ if(_b("webkit")){ this._vsFocused=true; } this.button.set("checked",!this.button.get("checked")); },_initButton:function(){ var _14=_8.getLocalization("dijit._editor","commands"),_15=this.editor; this.button=new _10({label:_14["viewSource"],dir:_15.dir,lang:_15.lang,showLabel:false,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"ViewSource",tabIndex:"-1",onChange:_a.hitch(this,"_showSource")}); if(_b("ie")==7){ this._ieFixNode=_4.create("div",{style:{opacity:"0",zIndex:"-1000",position:"absolute",top:"-1000px"}},_c.body()); } this.button.set("readOnly",false); },setEditor:function(_16){ this.editor=_16; this._initButton(); this.editor.addKeyHandler(_9.F12,true,true,_a.hitch(this,function(e){ this.button.focus(); this.toggle(); _7.stop(e); setTimeout(_a.hitch(this,function(){ this.editor.focus(); }),100); })); },_showSource:function(_17){ var ed=this.editor; var _18=ed._plugins; var _19; this._sourceShown=_17; var _1a=this; try{ if(!this.sourceArea){ this._createSourceView(); } if(_17){ ed._sourceQueryCommandEnabled=ed.queryCommandEnabled; ed.queryCommandEnabled=function(cmd){ return cmd.toLowerCase()==="viewsource"; }; this.editor.onDisplayChanged(); _19=ed.get("value"); _19=this._filter(_19); ed.set("value",_19); _1.forEach(_18,function(p){ if(!(p instanceof _13)){ p.set("disabled",true); } }); if(this._fsPlugin){ this._fsPlugin._getAltViewNode=function(){ return _1a.sourceArea; }; } this.sourceArea.value=_19; this.sourceArea.style.height=ed.iframe.style.height; this.sourceArea.style.width=ed.iframe.style.width; _6.set(ed.iframe,"display","none"); _6.set(this.sourceArea,{display:"block"}); var _1b=function(){ var vp=_d.getBox(); if("_prevW" in this&&"_prevH" in this){ if(vp.w===this._prevW&&vp.h===this._prevH){ return; }else{ this._prevW=vp.w; this._prevH=vp.h; } }else{ this._prevW=vp.w; this._prevH=vp.h; } if(this._resizer){ clearTimeout(this._resizer); delete this._resizer; } this._resizer=setTimeout(_a.hitch(this,function(){ delete this._resizer; this._resize(); }),10); }; this._resizeHandle=on(window,"resize",_a.hitch(this,_1b)); setTimeout(_a.hitch(this,this._resize),100); this.editor.onNormalizedDisplayChanged(); this.editor.__oldGetValue=this.editor.getValue; this.editor.getValue=_a.hitch(this,function(){ var txt=this.sourceArea.value; txt=this._filter(txt); return txt; }); }else{ if(!ed._sourceQueryCommandEnabled){ return; } this._resizeHandle.remove(); delete this._resizeHandle; if(this.editor.__oldGetValue){ this.editor.getValue=this.editor.__oldGetValue; delete this.editor.__oldGetValue; } ed.queryCommandEnabled=ed._sourceQueryCommandEnabled; if(!this._readOnly){ _19=this.sourceArea.value; _19=this._filter(_19); ed.beginEditing(); ed.set("value",_19); ed.endEditing(); } _1.forEach(_18,function(p){ p.set("disabled",false); }); _6.set(this.sourceArea,"display","none"); _6.set(ed.iframe,"display","block"); delete ed._sourceQueryCommandEnabled; this.editor.onDisplayChanged(); } setTimeout(_a.hitch(this,function(){ var _1c=ed.domNode.parentNode; if(_1c){ var _1d=_12.getEnclosingWidget(_1c); if(_1d&&_1d.resize){ _1d.resize(); } } ed.resize(); }),300); } catch(e){ } },updateState:function(){ this.button.set("disabled",this.get("disabled")); },_resize:function(){ var ed=this.editor; var tbH=ed.getHeaderHeight(); var fH=ed.getFooterHeight(); var eb=_5.position(ed.domNode); var _1e=_5.getPadBorderExtents(ed.iframe.parentNode); var _1f=_5.getMarginExtents(ed.iframe.parentNode); var _20=_5.getPadBorderExtents(ed.domNode); var edb={w:eb.w-_20.w,h:eb.h-(tbH+_20.h+ +fH)}; if(this._fsPlugin&&this._fsPlugin.isFullscreen){ var vp=_d.getBox(); edb.w=(vp.w-_20.w); edb.h=(vp.h-(tbH+_20.h+fH)); } if(_b("ie")){ edb.h-=2; } if(this._ieFixNode){ var _21=-this._ieFixNode.offsetTop/1000; edb.w=Math.floor((edb.w+0.9)/_21); edb.h=Math.floor((edb.h+0.9)/_21); } _5.setMarginBox(this.sourceArea,{w:edb.w-(_1e.w+_1f.w),h:edb.h-(_1e.h+_1f.h)}); _5.setMarginBox(ed.iframe.parentNode,{h:edb.h}); },_createSourceView:function(){ var ed=this.editor; var _22=ed._plugins; this.sourceArea=_4.create("textarea"); if(this.readOnly){ _3.set(this.sourceArea,"readOnly",true); this._readOnly=true; } _6.set(this.sourceArea,{padding:"0px",margin:"0px",borderWidth:"0px",borderStyle:"none"}); _4.place(this.sourceArea,ed.iframe,"before"); if(_b("ie")&&ed.iframe.parentNode.lastChild!==ed.iframe){ _6.set(ed.iframe.parentNode.lastChild,{width:"0px",height:"0px",padding:"0px",margin:"0px",borderWidth:"0px",borderStyle:"none"}); } ed._viewsource_oldFocus=ed.focus; var _23=this; ed.focus=function(){ if(_23._sourceShown){ _23.setSourceAreaCaret(); }else{ try{ if(this._vsFocused){ delete this._vsFocused; _e.focus(ed.editNode); }else{ ed._viewsource_oldFocus(); } } catch(e){ } } }; var i,p; for(i=0;i<_22.length;i++){ p=_22[i]; if(p&&(p.declaredClass==="dijit._editor.plugins.FullScreen"||p.declaredClass===(_11._scopeName+"._editor.plugins.FullScreen"))){ this._fsPlugin=p; break; } } if(this._fsPlugin){ this._fsPlugin._viewsource_getAltViewNode=this._fsPlugin._getAltViewNode; this._fsPlugin._getAltViewNode=function(){ return _23._sourceShown?_23.sourceArea:this._viewsource_getAltViewNode(); }; } this.connect(this.sourceArea,"onkeydown",_a.hitch(this,function(e){ if(this._sourceShown&&e.keyCode==_9.F12&&e.ctrlKey&&e.shiftKey){ this.button.focus(); this.button.set("checked",false); setTimeout(_a.hitch(this,function(){ ed.focus(); }),100); _7.stop(e); } })); },_stripScripts:function(_24){ if(_24){ _24=_24.replace(/<\s*script[^>]*>((.|\s)*?)<\\?\/\s*script\s*>/ig,""); _24=_24.replace(/<\s*script\b([^<>]|\s)*>?/ig,""); _24=_24.replace(/<[^>]*=(\s|)*[("|')]javascript:[^$1][(\s|.)]*[$1][^>]*>/ig,""); } return _24; },_stripComments:function(_25){ if(_25){ _25=_25.replace(//g,""); } return _25; },_stripIFrames:function(_26){ if(_26){ _26=_26.replace(/<\s*iframe[^>]*>((.|\s)*?)<\\?\/\s*iframe\s*>/ig,""); } return _26; },_filter:function(_27){ if(_27){ if(this.stripScripts){ _27=this._stripScripts(_27); } if(this.stripComments){ _27=this._stripComments(_27); } if(this.stripIFrames){ _27=this._stripIFrames(_27); } } return _27; },setSourceAreaCaret:function(){ var _28=_c.global; var _29=this.sourceArea; _e.focus(_29); if(this._sourceShown&&!this.readOnly){ if(_b("ie")){ if(this.sourceArea.createTextRange){ var _2a=_29.createTextRange(); _2a.collapse(true); _2a.moveStart("character",-99999); _2a.moveStart("character",0); _2a.moveEnd("character",0); _2a.select(); } }else{ if(_28.getSelection){ if(_29.setSelectionRange){ _29.setSelectionRange(0,0); } } } } },destroy:function(){ if(this._ieFixNode){ _c.body().removeChild(this._ieFixNode); } if(this._resizer){ clearTimeout(this._resizer); delete this._resizer; } if(this._resizeHandle){ this._resizeHandle.remove(); delete this._resizeHandle; } this.inherited(arguments); }}); _f.registry["viewSource"]=_f.registry["viewsource"]=function(_2b){ return new _13({readOnly:("readOnly" in _2b)?_2b.readOnly:false,stripComments:("stripComments" in _2b)?_2b.stripComments:true,stripScripts:("stripScripts" in _2b)?_2b.stripScripts:true,stripIFrames:("stripIFrames" in _2b)?_2b.stripIFrames:true}); }; return _13; });