This is a migrated thread and some comments may be shown as answers.

Reusable content in RADEDITOR Ver 5.6

5 Answers 72 Views
WebParts for SharePoint
This is a migrated thread and some comments may be shown as answers.
Muzammil Rajpurkar
Top achievements
Rank 1
Muzammil Rajpurkar asked on 22 Jun 2010, 10:10 PM
Hi

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

Sort by
0
Stanimir
Telerik team
answered on 23 Jun 2010, 08:40 AM
Hi Muzammil,

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
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Muzammil Rajpurkar
Top achievements
Rank 1
answered on 23 Jun 2010, 03:17 PM
Hi

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.
0
Stanimir
Telerik team
answered on 23 Jun 2010, 03:33 PM
Hi Muzammil,

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
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Muzammil Rajpurkar
Top achievements
Rank 1
answered on 23 Jun 2010, 04:24 PM
We are using 5.6.0.0 version. I am not able to attached the .js file for you through this forum. Can I know how I can send you this file.
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;
}


0
Stanimir
Telerik team
answered on 24 Jun 2010, 09:44 AM
Hello Muzammil,

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
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Tags
WebParts for SharePoint
Asked by
Muzammil Rajpurkar
Top achievements
Rank 1
Answers by
Stanimir
Telerik team
Muzammil Rajpurkar
Top achievements
Rank 1
Share this question
or