We are having an issue a different issue using Telerik version 5.6 with sharepoint's reusable content.
Well the update works fine.
But what happens is, let say a page has got telerik control and is set with some reusbale content. Now as soon as you add any other web part on the same page, for eg lets say Content Editor Webpart or Content query web part, the content in the telerik control which was displaying the reusable content before, just disappears, and shows just an anchor tag.
Have anybody come across this issue before. Is there any fix to this in the newer versions.
Thanks
Muzammil
5 Answers, 1 is accepted
Could you upgrade to the latest version of RadEditor for MOSS, which now is 5.7.3? You can find the upgrade instructions in the following online help article: http://www.telerik.com/help/aspnet-ajax/upgrade_to_a_newer_version_of_radeditor_for_moss.html.
If the problem persists, provide me with the web.config file of your MOSS site and ConfigFile.xml, ToolsFile.xml, MOSSEditorTools.js files, which are located in the /Program Files/Common Files/Microsoft Shared/web server extensions/wpresources/RadEditorSharePoint/5.7.3.0__1f131a624888eeed/Resources/ folder. I will use them in order to reproduce the issue on our test server.
Regards,
Stanimir
the Telerik team
Is it possible if I can send you all these files from the current 5.6 version, for you to test. Reason is that we not in a position now to upgrade the farm. And if we do so, we have to change the registration tag of all our existing sites page layouts, which is very critial task, and has to be a planned activity.
It would have had been great if there was an upgrade path, where there was not changes needed at the application level.
Let me know.
Thanks.
Send me the MOSSEditorTools.js, file which is located in the /Program Files/Common Files/Microsoft Shared/web server extensions/wpresources/RadEditorSharePoint/5.x.x.0__1f131a624888eeed/Resources/ folder. I will check it out and advise you further.
Also confirm exactly which version of RadEditor for MOSS you are using (5.6.0, 5.6.1, or 5.6.2).
All the best,
Stanimir
the Telerik team
However below is the code:
Thanks Stanimir.
/*****************/
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;
}
It looks like the code in MOSSEditorTools.js has not been changed from the version, which you are using. Unfortunately I can not provide you with a different than upgrade solution for the problem.
Regards,
Stanimir
the Telerik team