Reusable content in RADEDITOR Ver 5.6

6 posts, 0 answers
  1. Muzammil Rajpurkar
    Muzammil Rajpurkar avatar
    3 posts
    Member since:
    Nov 2009

    Posted 22 Jun 2010 Link to this post

    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
  2. Stanimir
    Admin
    Stanimir avatar
    1653 posts

    Posted 23 Jun 2010 Link to this post

    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

  3. Muzammil Rajpurkar
    Muzammil Rajpurkar avatar
    3 posts
    Member since:
    Nov 2009

    Posted 23 Jun 2010 Link to this post

    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.
  4. Stanimir
    Admin
    Stanimir avatar
    1653 posts

    Posted 23 Jun 2010 Link to this post

    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
  5. Muzammil Rajpurkar
    Muzammil Rajpurkar avatar
    3 posts
    Member since:
    Nov 2009

    Posted 23 Jun 2010 Link to this post

    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;
    }


  6. Stanimir
    Admin
    Stanimir avatar
    1653 posts

    Posted 24 Jun 2010 Link to this post

    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
Back to Top