var RadE_HasRules = false; Type.registerNamespace("Telerik.Web.UI.Editor"); if (typeof (Telerik.Web.UI.Editor.CommandList) == "undefined") Telerik.Web.UI.Editor.CommandList = {}; Telerik.Web.UI.Editor.CommandList["CustomDialog"] = function(commandName, editor, args) { var myCallbackFunction = function(sender, args) { editor.set_html(args); } var arg = editor.get_html(); editor.showExternalDialog('/_wpresources/RadEditorSharePoint/5.5.1.0__1f131a624888eeed/Resources/Dialogs/CustomDialog.aspx', arg, 600, 400, myCallbackFunction, null, 'CustomDialog', true, Telerik.Web.UI.WindowBehaviors.Close + Telerik.Web.UI.WindowBehaviors.Move, false, false); }; Telerik.Web.UI.Editor.CommandList["InsertSpecialLink"] = function(commandName, editor, args) {        var elem = editor.getSelectedElement(); //returns the selected element.                       if (elem.tagName == "A")        {             editor.selectElement(elem);             argument = elem;        }        else        {           var content = editor.getSelectionHtml();            var link = editor.get_document().createElement("A");           link.innerHTML = content;                     argument = link;        }                var myCallbackFunction = function(sender, args)        {            editor.pasteHtml(String.format("{3} ", args.href, args.target, args.className, args.name))        }                editor.showExternalDialog('/_wpresources/RadEditorSharePoint/5.5.1.0__1f131a624888eeed/Resources/Dialogs/InsertSpecialLink.aspx',             argument,             270,             300,             myCallbackFunction,             null,             'Insert Link',             true,             Telerik.Web.UI.WindowBehaviors.Close + Telerik.Web.UI.WindowBehaviors.Move,             false,             false); }; Telerik.Web.UI.Editor.CommandList["MOSSRightToLeft"] = function(commandName, editor, args) { Telerk_MOSS_SetDirectionOfSelection(editor, "rtl"); }; Telerik.Web.UI.Editor.CommandList["MOSSLeftToRight"] = function(commandName, editor, args) { Telerk_MOSS_SetDirectionOfSelection(editor, "ltr"); }; Telerik.Web.UI.Editor.CommandList["MOSSHelp"] = function(commandName, editor, args) { HelpWindowKey('WCMHTMLEditor'); }; Telerik.Web.UI.Editor.CommandList["ToggleSource"] = function(commandName, editor, args) { //todo: call the source dialog as the MOSS editor does editor.set_mode(Telerik.Web.UI.EditModes.Html); }; Telerik.Web.UI.Editor.CommandList["MOSSInsertTable"] = function(commandName, editor, args) { //todo: change the dialog to use the moss default (after firefox is fixed) editor.fire("TableWizard", args); }; Telerik.Web.UI.Editor.CommandList["MOSSImageManager"] = function(commandName, editor, args) { var params = editor._dialogParameters; var docEditor = editor.get_document(); var configObj = new AssetPickerConfig(""); configObj.ClientID = editor.get_id(); configObj.DefaultAssetLocation = ""; configObj.DefaultAssetImageLocation = ""; configObj.CurrentWebBaseUrl = params["CurrentWebBaseUrl"]; configObj.ManageHyperlink = false; configObj.AllowExternalUrls = params["AllowExternalUrls"]; var bInserting = false; var elemToReplace = null; var imageAssetObj = new ImageAsset(""); elemToReplace = editor.getSelectedElement(); if (elemToReplace && elemToReplace.tagName && elemToReplace.tagName.toUpperCase() == "BODY") { //if there is no selection or selection is the whole content body elemToReplace = null; } var elemImage = FormJSRTE_GetNearestContainingParentElementOfTypes(editor.get_contentWindow().frameElement.id, elemToReplace, new Array("IMG")); if (!elemImage) { bInserting = true; elemImage = docEditor.createElement("IMG"); elemImage.border = 0; } configObj.ReturnCallback = function(newAssetUrl, newAssetText, currentConfig, dialogReturnedData) { if (dialogReturnedData) { if (bInserting) { var tempDiv = docEditor.createElement("DIV"); tempDiv.appendChild(elemImage); editor.pasteHtml(tempDiv.innerHTML, commandName); tempDiv = null; } } } var dialogReturnedData = imageAssetObj.LaunchModalDialogOnElement(configObj, elemImage, true, !bInserting); }; Telerik.Web.UI.Editor.CommandList["MOSSLinkManager"] = function(commandName, editor, args) { var params = editor._dialogParameters; var docEditor = editor.get_document(); var configObj = new AssetPickerConfig(""); configObj.ClientID = editor.get_id(); configObj.DefaultAssetLocation = ""; configObj.DefaultAssetImageLocation = ""; configObj.CurrentWebBaseUrl = params["CurrentWebBaseUrl"]; configObj.AllowExternalUrls = params["AllowExternalUrls"]; var bInserting = false; var elemToReplace = null; var linkAsset = new LinkAsset(""); var innerLinkHTML = null; linkAsset.ManageLinkDisplayText = false; var elemLink = FormJSRTE_GetNearestContainingParentElementOfTypes(editor.get_contentWindow().frameElement.id, editor.getSelectedElement(), new Array("A")); if (!elemLink) { bInserting = true; elemLink = docEditor.createElement("A"); if (elemLink == null) return; var editorSelection = editor.getSelection(); if (editorSelection.isControl()) { elemToReplace = editor.getSelectedElement(); } else { innerLinkHTML = editorSelection.getHtml(); } } else { innerLinkHTML = elemLink.innerHTML; } configObj.ReturnCallback = function(newAssetUrl, newAssetText, currentConfig, dialogReturnedData) { if (dialogReturnedData) { var linkText = ""; if ($telerik.isIE) linkText = elemLink.innerText; else linkText = elemLink.textContent; if (innerLinkHTML && innerLinkHTML != "") { elemLink.innerHTML = innerLinkHTML; } else if (linkText == "") { if (linkAsset.AssetText && linkAsset.AssetText != "") { linkText = linkAsset.AssetText; } else { linkText = linkAsset.AssetUrl; } elemLink.innerHTML += linkText; } if (elemToReplace != null) { var parentEl = elemToReplace.parentNode; elemLink.innerHTML = ""; parentEl.insertBefore(elemLink, elemToReplace); elemLink.appendChild(elemToReplace); linkAsset.FixupIconsAndEmptyAnchors(elemLink); return; } else if (bInserting) { var selection = docEditor.selection; if (selection != null) { var textRange = selection.createRange(); if (textRange != null) { var text = textRange.text; if (text && text != "" && !text.match(/^\s+$/)) { textRange.execCommand("Unlink"); elemLink.innerHTML = textRange.htmlText; linkAsset.FixupIconsAndEmptyAnchors(elemLink); } var tempDiv = docEditor.createElement("DIV"); tempDiv.appendChild(elemLink); textRange.pasteHTML(tempDiv.innerHTML); } } else { //if we cannot get the selection, use the editor paste function instead var tempDiv = docEditor.createElement("DIV"); tempDiv.appendChild(elemLink); editor.pasteHtml(tempDiv.innerHTML, commandName); tempDiv = null; } } else { linkAsset.FixupIconsAndEmptyAnchors(elemLink); } } } linkAsset.LaunchModalDialogOnElement(configObj, elemLink, true, !bInserting); }; Telerik.Web.UI.Editor.CommandList["MOSSTemplateManager"] = function(commandName, editor, args) { if (!RadE_HasRules) { RTE2_InstantiateStaticSafeHtmlRules(); RadE_HasRules = true; } var params = editor._dialogParameters; var docEditor = editor.get_document(); var configObj = new AssetPickerConfig(""); configObj.ClientID = editor.get_id(); configObj.DefaultAssetLocation = ""; configObj.CurrentWebBaseUrl = params["CurrentWebBaseUrl"]; configObj.AllowExternalUrls = params["AllowExternalUrls"]; var bInserting = false; var elemToReplace = null; var fragmentId = null; var elemViewToEdit = FormJSRTE_GetNearestContainingParentElementOfTypes(editor.get_contentWindow().frameElement.id, editor.getSelectedElement(), new Array("SPAN")); if ((elemViewToEdit != null) && (elemViewToEdit.id == g_strRTE2ReusableFragmentCommonToken)) { fragmentId = elemViewToEdit.getAttribute("fragmentid"); } var dialogInput = new Object(); dialogInput.fragmentId = fragmentId; var callback = function(dialogOutput) { if ((dialogOutput != null) && (dialogOutput.fragmentView != null)) { var selection = docEditor.selection; if (selection != null) { if (selection.type == "Control") { var controlRange = selection.createRange(); if (controlRange != null) { controlRange.execCommand("Delete"); } } if (selection.type != "Control") { var textRange = selection.createRange(); if (textRange != null) { var safeHtmlDocument = RadE_CreateTemporaryDocument(); safeHtmlDocument.body.innerHTML = dialogOutput.fragmentView; var elements = RTE2_GetAllElements(safeHtmlDocument); //setting these to hardcoded values since they are not passed in the params[] array yet. var instanceVariables = new Object(); instanceVariables.EditorOpenFromWebPart = false; instanceVariables.DisableCustomStyles = false; RTE2_ApplyContentFilters(elements, instanceVariables); textRange.pasteHTML(dialogOutput.fragmentView); RTE2_AlterReusableFragmentHighlights(docEditor.body, "ms-reusableTextView"); } } } else { editor.pasteHtml(dialogOutput.fragmentView, commandName); RTE2_AlterReusableFragmentHighlights(docEditor.body, "ms-reusableTextView"); } } }; var dialogUrl = params["CurrentWebBaseUrl"] + "/_layouts/ReusableTextPicker.aspx"; commonShowModalDialog(dialogUrl, "dialogHeight:600px; dialogWidth:800px; center:yes; resizable:yes; scroll:no; status:no;", callback, dialogInput); }; function fixRadEditorReusableContent(editor) { var editorBody = null; if (editor.get_mode() == Telerik.Web.UI.EditModes.Html) { editorBody = editor.get_document().createElement("div"); Telerik.Web.UI.Editor.Utils.setElementInnerHtml(editorBody, editor.get_html(true)); } else { editorBody = editor.get_document().body; } var allElements = editorBody.getElementsByTagName("*"); var i = 0, len = allElements.length; var tempDiv = editor.get_document().createElement("div"); var fragmentIds = [], elementsToModify = []; while (i < len) { var element = allElements[i]; if (element.id == g_strRTE2ReusableFragmentCommonToken) { var fragmentId = element.getAttribute("fragmentid"); if (fragmentId != null) { Array.add(fragmentIds, fragmentId); Array.add(elementsToModify, element); } else { element.removeAttribute("id", false); } } i++; } if (elementsToModify.length > 0) { for (var j = 0; j < elementsToModify.length; j++) { var element = elementsToModify[j]; if (element) { tempDiv.innerHTML = "<" + element.tagName + " id=\"" + element.id + "\">"; var parent = element.parentNode; parent.replaceChild(tempDiv.firstChild, element); } } } var headerHtml = ""; if (fragmentIds.length > 0) { headerHtml = "
"; for (var index = 0; index < fragmentIds.length; index++) { var fragmentId = fragmentIds[index]; if (fragmentId != null) { headerHtml += "a"; } } headerHtml += "
"; } if (headerHtml && editorBody.firstChild) { if (editor.get_mode() == Telerik.Web.UI.EditModes.Html) { editor.set_html(headerHtml + editorBody.innerHTML); } else { Telerik.Web.UI.Editor.Utils.setElementInnerHtml(tempDiv, headerHtml); editorBody.insertBefore(tempDiv.firstChild, editorBody.firstChild); } } } //Contains the href of HtmlEditorTableFormats.css var Telerik_RadEditor_TableFormatsCSSLink = ""; //overwriting getDialogArguments for the predefined MOSS table layouts Telerik.Web.UI.Editor.CommandList._oldGetDialogArguments = Telerik.Web.UI.Editor.CommandList._getDialogArguments; Telerik.Web.UI.Editor.CommandList._getDialogArguments = function(argument, tagName, editor, commandName) { //cal the original function from RadEditor for ASP.NET AJAX Telerik.Web.UI.Editor.CommandList._oldGetDialogArguments(argument, tagName, editor, commandName); if (!argument.tableLayoutCssFile) { //Add css if ("TD" == tagName || "TH" == tagName || "TABLE" == tagName) { //set the link for the Table formats css if (!Telerik_RadEditor_TableFormatsCSSLink) { var links = document.getElementsByTagName("LINK"); var linksLength = links.length; for (var i = 0; i < linksLength; i++) { var href = links[i].getAttribute("href"); if (href.indexOf("HtmlEditorTableFormats.css") != -1) { Telerik_RadEditor_TableFormatsCSSLink = href; break; } } } argument.tableLayoutCssFile = Telerik_RadEditor_TableFormatsCSSLink.substring(0, Telerik_RadEditor_TableFormatsCSSLink.indexOf("?")); } } } // support functions function Telerk_MOSS_SetDirectionOfSelection(editor, strDirection) { var rngSelection = editor.getSelection(); var strTagNames; strTagNames = "|H1|H2|H3|H4|H5|H6|P|PRE|TD|DIV|BLOCKQUOTE|DT|DD|TABLE|HR|IMG|BODY|TR|UL|OL|"; if (rngSelection.getParentElement()) { var elemSelectionParent = rngSelection.getParentElement(); while ((elemSelectionParent != null) && (strTagNames.indexOf("|" + elemSelectionParent.tagName + "|") == -1)) { elemSelectionParent = elemSelectionParent.parentNode; } if (elemSelectionParent) { Telerik_MOSS_SetDirectionOnElement(elemSelectionParent, strDirection); } } } function Telerik_MOSS_SetDirectionOnElement(element, strDirection) { if ("ltr" == strDirection) { element.dir = "ltr"; element.align = "left"; } else if ("rtl" == strDirection) { element.dir = "rtl"; element.align = "right"; } } function RadE_CreateTemporaryDocument() { // creating a temporary document for storing template content var iframe = document.createElement('iframe'); document.body.appendChild(iframe); iframe.src = "javascript:''"; iframe.frameBorder = '0'; iframe.style.width = "0px"; iframe.style.height = "0px"; var doc = iframe.contentWindow.document; doc.open(); doc.writeln(''); doc.close(); if (!doc.body) { var oBody = doc.createElement("body"); doc.appendChild(oBody); } if (doc.getElementsByTagName("head").length < 1) { var oHead = doc.createElement("head"); oHead.style.visibility = "hidden"; doc.body.parentNode.insertBefore(oHead, doc.body); } return doc; } //this code belongs in form.js, however it is copied here as well since in some pages form.js is not loaded by default. function FormJSRTE_GetNearestContainingParentElementOfTypes(strBaseElementID, elem, aTagNames) { var aTagNames_length = aTagNames.length; if (elem == null) return null; for (var i = 0; i < aTagNames_length; i++) { if (elem.tagName == aTagNames[i]) { return elem; } } var elemParent = elem.parentNode; while (elemParent != null) { if (elemParent.id == strBaseElementID) { return null; } for (var i = 0; i < aTagNames_length; i++) { if (elemParent.tagName == aTagNames[i]) { return elemParent; } } elemParent = elemParent.parentNode; } return null; }