Как предотвратить удаление AEM href из RTE со значением по умолчанию, которое содержит ссылку?

У меня установлено значение по умолчанию для RTE, поданного в AEM. Это значение отображается правильно при первом открытии диалогового окна, однако при его сохранении и повторном открытии ссылка href была удалена из тега A. (Это внешняя ссылка)

Это работает правильно, если этот href затем повторно добавляется с помощью кнопки ссылки RTE, но, естественно, я хочу, чтобы это работало правильно с первого раза.

Я новичок в AEM, и в настоящее время у меня есть следующее (примечание: для этого примера я изменил URL-адрес и скопировал его в тестовые версии):

<branchResultsCopy
    jcr:primaryType="cq:Widget"
    externalStyleSheets="[/etc/designs/rtg/clientlibs/author/style/source/rte.css]"
    fieldLabel="Branch results copy"
    name="./branchresultscopy"
    defaultValue="&lt;p&gt;If you'd like information about blah blah blah, visit our &lt;a target='_blank' link-checker='skip' href='https://www.testurl.com'&gt;Link text&lt;/a&gt; page.&lt;/p&gt;"
    xtype="richtext">
        <htmlRules
            jcr:primaryType="nt:unstructured">
                <links
                    jcr:primaryType="nt:unstructured"
                    protocols="[http://,https://]"/>
        </htmlRules>
        <rtePlugins
            jcr:primaryType="nt:unstructured">
                <edit
                    jcr:primaryType="nt:unstructured">
                        <htmlPasteRules
                            jcr:primaryType="nt:unstructured">
                                <allowBasics
                                    jcr:primaryType="nt:unstructured"
                                    anchor="{Boolean}true"
                                     bold="{Boolean}true"
                                />
                        </htmlPasteRules>
                </edit>
                <format
                    jcr:primaryType="nt:unstructured"
                    features="[bold,italic]"/>
                <lists
                    jcr:primaryType="nt:unstructured"
                    features="[ordered,unordered]"/>
                <links
                    jcr:primaryType="nt:unstructured"
                    features="*"/>
        </rtePlugins>
</branchResultsCopy>

person MarkP    schedule 19.05.2016    source источник
comment
Является ли ссылка, которую вы используете, действительной (я предполагаю, что пример является фиктивным URL-адресом)? Возможно, даже с link-checker='skip' (никогда не слышал об этом) ссылка удаляется средством проверки ссылок.   -  person Thomas    schedule 24.05.2016
comment
Спасибо, Томас, я проверил, и URL-адрес в моем реальном коде ведет к действительной ссылке.   -  person MarkP    schedule 24.05.2016


Ответы (1)


Я думаю, что ваша основная проблема заключается в синтаксисе, используемом в поле defaultValue. Я только что сам провел тест, добавив ссылку на текстовый компонент, затем через CRXDE я взял ./text jcr:content и скопировал его непосредственно в поле defaultValue компонента.

Потом я добавил новый экземпляр компонента на страницу, отредактировал его, значение по умолчанию было в RTE, я просто нажал сохранить и ссылка осталась нетронутой.

Я сделал пакет компонента, чтобы проверить, что AEM поместил в XML, и это было, мягко говоря, довольно странно, все символы > остались нетронутыми, а все символы ‹ экранированы.

вот мое значение по умолчанию, которое было в пакете dialog.xml:

defaultValue="&lt;p>Timeless beauty. Classic simplicity. It must be the circle! Each &lt;a href=&quot;http://google.ca&quot;>Geometrixx-brand&lt;/a> circle is handcrafted from an infinite number of very skinny isoceles triangles arrange in, well, a circle! We guarantee that our circles are not simply&lt;i> n&lt;/i>-gons, where &lt;i>n&lt;/i> is a very large number; ours are guaranteed round, no matter how closely you look. test&lt;/p>&#xa;"

Обратите внимание, что они используют " для атрибутов.

Также небольшое предупреждение, плагину RTEP не нравится атрибут link-checker="skip", он его удалит.

Вам нужно сообщить ему, что у вас есть настраиваемый атрибут для обработки, если вы хотите, чтобы он сохранил проверку ссылок.

Единственный способ, которым я знаю, как это сделать, — через классический диалог, хотя для этого требуется добавить новый узел в linkAttributes в linkDialogConfig плагина RTEP.

что-то вроде этого

<skipchecker
    jcr:primaryType="nt:unstructured"
    attribute="link-checker"
    fieldDescription="Skip link checker"
    fieldLabel="Skip Checker"
    name="./linkdialog/skip"
    xtype="selection">   
        <options jcr:primaryType="cq:WidgetCollection">
            <noskip
                jcr:primaryType="nt:unstructured"
                text="No Skip"
                value=""/>  
            <skip
                jcr:primaryType="nt:unstructured"
                text="Skip"
                value="skip"/>         
        </options>
</skipchecker>

Все это тестировалось с неприглядным компонентом, но вы не упомянули, какую версию текстового компонента вы использовали. Компонент Sightly может работать немного по-другому, но классический диалог такой же и должен использовать тот же плагин.

person Francois Cournoyer    schedule 25.05.2016
comment
Спасибо, Франсуа, этот бит решил мою главную проблему. - person MarkP; 26.05.2016