Hi Stanimir
I didn't understand what exaclty you mean here by "screenshot with editor".
I have already attached the screen shot with the editor object not showing the method "
get_filtersManager()" while debugging the code, in my previous post.
Attaching the two files : EditorToolPart.js and MOSSEditorTools.js from the directory "C:/Program Files/Common Files/Microsoft Shared/web server extensions/wpresources/RadEditorSharePoint/5.7.1.0__1f131a624888eeed/Resources/".
--------------------------------------
1) EditorToolPart.js
--------------------------------------
function
RadEditorToolPart()
{
}
RadEditorToolPart.prototype.UpdateContent =
function(retValue, params)
{
if (retValue == "" || retValue)
{
this.UpdateContentHolder(retValue);
}
}
RadEditorToolPart.prototype.UpdateContentHolder =
function(newContent)
{
var contentHolderElement = document.getElementById(this.ContentHolderId);
if($telerik.isSafari && typeof(contentHolderElement.innerText) != "undefined")
{
contentHolderElement.innerText = newContent;
}
else
{
contentHolderElement.value = newContent;
}
}
RadEditorToolPart.prototype.OnEditorUpdate =
function()
{
this.UpdateContentHolder($find(inPageEditor).get_html(true));
document.forms[MSOWebPartPageFormName].MSOTlPn_Button.value='save';
return true;
}
RadEditorToolPart.prototype.OnEditorApply =
function()
{
this.UpdateContentHolder($find(inPageEditor).get_html(true));
document.forms[MSOWebPartPageFormName].MSOTlPn_Button.value='apply';
return true;
}
--------------------------------------
--------------------------------------
2) MOSSEditorTools.js
--------------------------------------
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["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 + "\"></" + element.tagName + ">";
var parent = element.parentNode;
parent.replaceChild(tempDiv.firstChild, element);
}
}
}
var headerHtml = "";
if (fragmentIds.length > 0)
{
headerHtml = "<div id=\"" + g_strRTE2ReusableFragmentCommonToken + "IdSection\">";
for (var index = 0; index < fragmentIds.length; index++)
{
var fragmentId = fragmentIds[index];
if (fragmentId != null)
{
headerHtml += "<a href=\"" + STSHtmlEncode(fragmentId) + "\">a</a>";
}
}
headerHtml += "</div>";
}
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:'<html></html>'";
iframe.frameBorder = '0';
iframe.style.width = "0px";
iframe.style.height = "0px";
var doc = iframe.contentWindow.document;
doc.open();
doc.writeln('<head><style></style></head><body></body>');
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;
}
function
OnClientLoad(editor, args) {
debugger;
//alert('OnClientLoad');
//alert(editor);
//alert(editor.get_filtersManager);
editor.get_filtersManager.add(
new MyFilter());
}
MyFilter = function() {
alert('123');
MyFilter.initializeBase(this);
this.set_isDom(true);
this.set_enabled(true);
this.set_name("RadEditor filter");
this.set_description("RadEditor filter description");
}
MyFilter.prototype =
{
getHtmlContent: function(contentElement) {
//You can find the problem div elements and remove them here.
alert(
'hi');
return contentElement;
}
}
MyFilter.registerClass('MyFilter', Telerik.Web.UI.Editor.Filter);
--------------------------------------
Regards
Sudhanshu