In Sitecore, I can access media such as images with URL paths like "-/media/Project/XXXX/XXXXX/Websites/xxxxxx.jpg",
but I can't access the images in the rich text editor and the broken image icon appears.
Are there any settings and other considerations when displaying images?
I'm attaching the video of the problem and the config setting file for your reference.
thanks in advance
5 Answers, 1 is accepted
Here is the config setting file.
ContentFilters="RemoveScripts,FixUlBoldItalic,IECleanAnchors,MozEmStrong,ConvertFontToSpan,IndentHTMLContent,EncodeScripts,OptimizeSpans,ConvertCharactersToEntities,ConvertTags,StripCssExpressions,RemoveExtraBreaks,MakeUrlsAbsolute"
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditorPage.aspx.cs" Inherits="Sitecore.Shell.Controls.RichTextEditor.EditorPage" %>
<%@ Register Assembly="Sitecore.Kernel" Namespace="Sitecore.Web.UI.HtmlControls" TagPrefix="sc" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html>
<
html
style
=
"overflow: hidden; width: 100%; height: 100%"
>
<
head
runat
=
"server"
>
<
title
>Sitecore</
title
>
<
link
href
=
"/sitecore/shell/Themes/Standard/Default/Content Manager.css"
rel
=
"stylesheet"
type
=
"text/css"
/>
<
link
href
=
"/sitecore/shell/Themes/Standard/Default/Dialogs.css"
rel
=
"stylesheet"
type
=
"text/css"
/>
<
style
type
=
"text/css"
>
<
asp:Placeholder
ID
=
"EditorStyles"
runat
=
"server"
/>
textarea {
outline: none;
}
</
style
>
<
script
src
=
"/sitecore/shell/controls/lib/jquery/jquery-1.12.4.min.js"
type
=
"text/javascript"
></
script
>
<
script
type
=
"text/javascript"
>
if (typeof(window.$sc) == "undefined") window.$sc = jQuery.noConflict();
</
script
>
<
script
src
=
"/sitecore/shell/controls/lib/prototype/prototype.js"
type
=
"text/javascript"
></
script
>
<
script
type
=
"text/javascript"
src
=
"/sitecore/shell/Controls/Rich Text Editor/EditorPage.js"
></
script
>
<
script
type
=
"text/javascript"
>
<
asp:Placeholder
runat
=
"server"
ID
=
"ScriptConstants"
/>
var scRichText = new Sitecore.Controls.RichEditor(scClientID);
var currentKey = null;
var $j = jQuery.noConflict();
var cEditor; //variable to store editor reference
$j(document).ready(function() {
$j(".reMode_design").click(function(){
RemoveInlineScripts();
});
$j(window).resize(function() {
if(cEditor)
{
//upon window resize: reset current mode, forces editor to perform resize
cEditor.set_mode(cEditor.get_mode());
}
});
});
function RemoveInlineScripts() {
if (scRemoveScripts === "true") {
removeInlineScriptsInRTE(scRichText);
}
}
function scLoad(key, html) {
if (key == currentKey) {
scRichText.setText(html);
scRichText.setFocus();
return;
}
currentKey = key;
}
function OnClientLoad(editor) {
cEditor = editor; //store editor reference to be used in resize handler
editor.attachEventHandler("mouseup", function() {
var element = editor.getSelection().getParentElement();
if (element !== undefined && element.tagName.toUpperCase() === "IMG") {
fixImageParameters(element, prefixes.split("|"));
}
});
scRichText.onClientLoad(editor);
var filter = new WebControlFilter();
editor.get_filtersManager().add(filter);
var protoFilter = new PrototypeAwayFilter();
editor.get_filtersManager().add(protoFilter);
var imageFilter = new ImageSourceFilter();
editor.get_filtersManager().add(imageFilter);
setTimeout(function() {
var filterManager = editor.get_filtersManager();
var myFilter = filterManager.getFilterByName("Sitecore WebControl filter");
var myImageFilter = filterManager.getFilterByName("Sitecore ImageSourceFilter filter");
myFilter.getDesignContent(editor.get_contentArea());
myImageFilter.getDesignContent(editor.get_contentArea());
editor.fire("ToggleTableBorder");
editor.fire("ToggleTableBorder");
editor.setFocus();
}, 0);
}
function scSendRequest(evt, command)
{
if (command == "editorpage:accept") {
removeExtraSpaceOnAccept();
}
RemoveInlineScripts();
var editor = scRichText.getEditor();
if (editor.get_mode() == 2){//If in HTML edit mode
editor.set_mode(1); //Set mode to Design
}
$("EditorValue").value = editor.get_html(true);
RemoveInlineScripts();
scForm.browser.clearEvent(evt);
scForm.postRequest("", "", "", command);
return false;
}
function removeExtraSpaceOnAccept() {
var editor = scRichText.getEditor();
if (editor.get_html(true) == " ") {
editor.set_html("");
}
}
function OnClientInit(editor) {
}
function OnClientModeChange(editor, args) {
}
</
script
>
</
head
>
<
body
class
=
"scStretch"
>
<
form
runat
=
"server"
id
=
"mainForm"
class
=
"scStretch"
>
<
sc:AjaxScriptManager
runat
=
"server"
/>
<
sc:ContinuationManager
runat
=
"server"
/>
<
telerik:RadScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
/>
<
input
type
=
"hidden"
id
=
"EditorValue"
/>
<
div
class
=
"scStretch scFlexColumnContainer"
>
<
div
class
=
"scFlexContent"
>
<
div
class
=
"scStretchAbsolute scDialogContentContainer"
>
<
asp:UpdatePanel
ID
=
"EditorUpdatePanel"
class
=
"scStretch"
runat
=
"server"
>
<
ContentTemplate
>
<
telerik:RadFormDecorator
ID
=
"formDecorator"
runat
=
"server"
DecoratedControls
=
"All"
/>
<
telerik:radeditor
ID
=
"Editor"
runat
=
"server"
CssClass
=
"scRadEditor"
Width
=
"100%"
ContentFilters
=
"RemoveScripts,FixUlBoldItalic,IECleanAnchors,MozEmStrong,ConvertFontToSpan,IndentHTMLContent,EncodeScripts,OptimizeSpans,ConvertCharactersToEntities,ConvertTags,StripCssExpressions,RemoveExtraBreaks,MakeUrlsAbsolute"
DialogsCssFile
=
"/sitecore/shell/themes/standard/default/Content Manager.css"
StripFormattingOptions
=
"MSWordRemoveAll,ConvertWordLists"
StripFormattingOnPaste
=
"MSWordRemoveAll,ConvertWordLists"
LocalizationPath
=
"~/sitecore/shell/controls/rich text editor/Localization/"
Skin
=
"Metro"
ToolsFile
=
"~/sitecore/shell/Controls/Rich Text Editor/ToolsFile.xml"
ImageManager-UploadPaths
=
"/media library"
ImageManager-DeletePaths
=
"/media library"
ImageManager-ViewPaths
=
"/media library"
FlashManager-UploadPaths
=
"/media library"
FlashManager-DeletePaths
=
"/media library"
FlashManager-ViewPaths
=
"/media library"
MediaManager-UploadPaths
=
"/media library"
MediaManager-DeletePaths
=
"/media library"
MediaManager-ViewPaths
=
"/media library"
DocumentManager-ViewPaths
=
"/media library"
TemplateManager-UploadPaths
=
"/media library"
TemplateManager-DeletePaths
=
"/media library"
TemplateManager-ViewPaths
=
"/media library"
ThumbSuffix
=
"thumb"
OnClientCommandExecuted
=
"OnClientCommandExecuted"
OnClientLoad
=
"OnClientLoad"
OnClientSelectionChange
=
"OnClientSelectionChange"
OnClientInit
=
"OnClientInit"
OnClientModeChange
=
"OnClientModeChange"
OnClientPasteHtml
=
"OnClientPasteHtml"
/>
</
ContentTemplate
>
</
asp:UpdatePanel
>
</
div
>
</
div
>
<
script
type
=
"text/javascript"
src
=
"/sitecore/shell/Controls/Rich Text Editor/RichText Commands.js"
></
script
>
<
script
type
=
"text/javascript"
src
=
"/sitecore/shell/Controls/Rich Text Editor/RTEfixes.js"
></
script
>
<
asp:PlaceHolder
ID
=
"EditorClientScripts"
runat
=
"server"
/>
<
div
id
=
"scButtons"
class
=
"scFormDialogFooter"
>
<
div
class
=
"footerOkCancel"
>
<
sc:Button
Class
=
"scButton scButtonPrimary"
Click
=
"javascript: if (Prototype.Browser.IE) { var designModeBtn = $$(\'.reMode_design\')[0]; designModeBtn && designModeBtn.click(); } scSendRequest(event, \'editorpage:accept\');"
ID
=
"OkButton"
KeyCode
=
"13"
runat
=
"server"
>
<
sc:Literal
runat
=
"server"
Text
=
"Accept"
/>
</
sc:Button
>
<
sc:Button
Click
=
"javascript:scSendRequest(event, \'editorpage:reject\')"
ID
=
"CancelButton"
KeyCode
=
"27"
runat
=
"server"
>
<
sc:Literal
runat
=
"server"
Text
=
"Reject"
/>
</
sc:Button
>
</
div
>
</
div
>
</
div
>
<
script
type
=
"text/javascript"
>
fixFirefoxPaste();
</
script
>
</
form
>
</
body
>
</
html
>
Hi Liu,
You can upload the video to YouTube or deploy it to dropbox and share it.
Regards,
Rumen
Progress Telerik
Our thoughts here at Progress are with those affected by the outbreak.
Thank you for your reply
I uploaded the video to dropbox.
The following is the URL.
<https://www.dropbox.com/s/i8nm117n2lx0vdw/Broken_link_in_rich_text.swf?dl=0>
Hi Liu,
You can inspect the img src with the Inspect Html feature of the DevTools of Chrome and see what URL is produced when the / is removed.
You can also perform a test by deleting the following properties from the RadEditor configuration which will put RadEditor in its default configuration state, e.g. delete the following content from Radeditor declaration and retest
ContentFilters="RemoveScripts,FixUlBoldItalic,IECleanAnchors,MozEmStrong,ConvertFontToSpan,IndentHTMLContent,EncodeScripts,OptimizeSpans,ConvertCharactersToEntities,ConvertTags,StripCssExpressions,RemoveExtraBreaks,MakeUrlsAbsolute"
OnClientCommandExecuted="OnClientCommandExecuted"OnClientLoad="OnClientLoad"
OnClientSelectionChange="OnClientSelectionChange"
OnClientInit="OnClientInit"
OnClientModeChange="OnClientModeChange"
OnClientPasteHtml="OnClientPasteHtml"
Regards,
Rumen
Progress Telerik
Our thoughts here at Progress are with those affected by the outbreak.