1 line
5.6 KiB
JavaScript
1 line
5.6 KiB
JavaScript
Type.registerNamespace("Sys.Extended.UI.HtmlEditor.ToolbarButtons"),Sys.Extended.UI.HtmlEditor.ToolbarButtons.InsertLink=function(t){Sys.Extended.UI.HtmlEditor.ToolbarButtons.InsertLink.initializeBase(this,[t]),this._emptySrc=window.location.href.replace(/(http[s]*\:\/\/)[^\u0000]*/i,"$1")},Sys.Extended.UI.HtmlEditor.ToolbarButtons.InsertLink.prototype={callMethod:function(){var t=this._designPanel,e=t._getSelection(),i=(t._createRange(e),Sys.Extended.UI.HtmlEditor.getSelParent(t));for(3==i.nodeType&&(i=i.parentNode);i&&Sys.Extended.UI.HtmlEditor.isStyleTag(i.tagName)&&"A"!=i.tagName.toUpperCase();)i=i.parentNode;if(i&&"A"==i.tagName.toUpperCase())this._edit=!0,this._editLink(i);else if(this._edit=!1,!this._createLink())return!1;return!!Sys.Extended.UI.HtmlEditor.ToolbarButtons.InsertLink.callBaseMethod(this,"callMethod")},opened:function(t){this._preparePopup(t)},ok:function(t){var e=t.popupMediator.getField("target");null!=e&&(this._obj.target=e.value);var i=t.popupMediator.getField("url");if(null!=i&&(this._obj.href=i.value),/^javascript:/.test(this._obj.href)){this._obj.target=null;try{this._obj.removeAttribute("target")}catch(t){}}else{var e=t.popupMediator.getField("target");null!=e&&(this._obj.target=e.value)}this._edit?this._edit_callback(!0):this._create_callback(!0)},cancel:function(t){this._edit?this._edit_callback(!1):this._create_callback(!1)},_createLink:function(){var t=this._designPanel,e=Sys.Extended.UI.HtmlEditor.isIE?"":Sys.Extended.UI.HtmlEditor.Trim(t.getSelectedHTML()),i=t._getSelection(),r=t._createRange(i);if(this._txt=null,(!t.isControl()||!Sys.Extended.UI.HtmlEditor.getSelParent(t).tagName||"EMBED"!=Sys.Extended.UI.HtmlEditor.getSelParent(t).tagName.toUpperCase()&&"IMG"!=Sys.Extended.UI.HtmlEditor.getSelParent(t).tagName.toUpperCase())&&(t.isControl()||!(Sys.Extended.UI.HtmlEditor.isIE&&r.text.length>0||!Sys.Extended.UI.HtmlEditor.isIE&&e.length>0))){t._saveContent();var n=t._doc.createElement("span");n.innerHTML="new link",n.id=Sys.Extended.UI.HtmlEditor.smartClassName;var o=!0;if(Sys.Extended.UI.HtmlEditor.isIE&&t.isControl()){var a=r.item(0),s=t._doc.createElement("span");a.parentNode.insertBefore(s,a),this._txt=n.firstChild,a.parentNode.insertBefore(this._txt,a);var l=t._doc.createElement("span");a.parentNode.insertBefore(l,a),a.parentNode.removeChild(a),t.setSelectionAfterOperation([s,l],!1),o=!1}else{t.insertHTML(Sys.Extended.UI.HtmlEditor.getHTML(n,!0));var d=t._doc.getElementById(Sys.Extended.UI.HtmlEditor.smartClassName);this._txt=d.firstChild,d.parentNode.insertBefore(d.firstChild,d),d.parentNode.removeChild(d)}Sys.Extended.UI.HtmlEditor.isIE?o&&r.select():(r=t._createRange(),r.setStart(this._txt,0),r.setEnd(this._txt,(""+this._txt.data).length),t._removeAllRanges(i),t._selectRange(i,r)),e=Sys.Extended.UI.HtmlEditor.isIE?"":Sys.Extended.UI.HtmlEditor.Trim(t.getSelectedHTML()),i=t._getSelection(),r=t._createRange(i)}if(!(t.isControl()&&"IMG"==Sys.Extended.UI.HtmlEditor.getSelParent(t).tagName.toUpperCase()||!t.isControl()&&(Sys.Extended.UI.HtmlEditor.isIE&&r.text.length>0||!Sys.Extended.UI.HtmlEditor.isIE&&e.length>0)))return this._txt&&(t._undo(!1),t.__stack.pop()),!1;t._saveContent(),this._obj={target:"default",href:this._emptySrc,title:""};for(var h=t._doc.getElementsByTagName("A"),_=[],u=0;u<h.length;u++)_.push([h[u],""+h[u].href]);t._execCommand("createLink",!1,this._emptySrc),this._oldList=[];for(var u=0;u<_.length;u++){var g=_[u][0],c=_[u][1];g.href==c&&this._oldList.push(g)}return!0},_editLink:function(t){var e=this._designPanel;this._obj=t,e._saveContent()},_preparePopup:function(t){this._obj.target&&this._obj.target.length>0&&"default"==this._obj.target&&(this._obj.target=this.get_relatedPopup().get_defaultTarget());var e=t.popupMediator.getField("target");null!=e&&(e.value=this._obj.target&&this._obj.target.length>0&&"_"==this._obj.target.substr(0,1)?this._obj.target.toLowerCase():"_self");var i=t.popupMediator.getField("url");null!=i&&(this._edit?i.value=Sys.Extended.UI.HtmlEditor.getRealAttribute(this._obj,"href"):i.value=this._obj.href,0==i.value.length&&(i.value=this._emptySrc),i.value=i.value.replace(/\"/g,'"'),setTimeout(function(){Sys.Extended.UI.HtmlEditor.setSelectionRange(i,0,i.value.length)},0))},_edit_callback:function(t){var e=this._designPanel;try{t?(0==this._obj.title.length&&(this._obj.title=null,this._obj.removeAttribute("title")),e.onContentChanged()):e._undo(!1)}catch(t){}return!0},okCheck:function(t){var e=t.popupMediator.getField("url");if(null!=e){var i=e.value;return!(""==i||i.length>=3&&"://"==i.substr(i.length-3,3))||(t.alert(this.get_message("EmptyURL")),t.setTimeout(function(){try{e.focus()}catch(t){}},0),!1)}return!1},_create_callback:function(t){var e=this._designPanel;try{if(t){for(var i=e._doc.getElementsByTagName("A"),r=0,n=0;n<i.length;n++){for(var o=!0,a=i[n],s=0;s<this._oldList.length;s++)if(a==this._oldList[s]){o=!1;break}o&&(r=n,this._obj.target&&(a.target=this._obj.target),a.href=this._obj.href,this._obj.title.length>0&&(a.title=this._obj.title))}if(this._txt&&(this._txt.data=this._obj.href),i.length>0){var l=i[r],d=e._doc.createElement("span");d.innerHTML=" ",null!=l.nextSibling?l.parentNode.insertBefore(d,l.nextSibling):l.parentNode.appendChild(d),setTimeout(function(){Sys.Extended.UI.HtmlEditor._setCursor(d,e),setTimeout(function(){l.parentNode.removeChild(d)},0)},0)}setTimeout(function(){e._editPanel.updateToolbar(),e.onContentChanged()},0)}else e._undo(!1),e.__stack.pop(),this._txt&&(e._undo(!1),e.__stack.pop());e.focusEditor()}catch(t){}return!0}},Sys.Extended.UI.HtmlEditor.ToolbarButtons.InsertLink.registerClass("Sys.Extended.UI.HtmlEditor.ToolbarButtons.InsertLink",Sys.Extended.UI.HtmlEditor.ToolbarButtons.OkCancelPopupButton); |