0

如何禁用富文本字段的 CkEditor,以便只呈现基本的 <texarea> 标记而没有任何编辑器?

我确定我一定遗漏了一些明显的东西,但我看不到能够使用 XPage 创建一个文档,其中一个字段存储为 RT,而不使用 CkEditor。我希望能够提示用户输入“很多”文本,但只能通过简单的多行输入并将其存储为 RT。

如果我有一个..

  • 带有 RT 字段的表单
  • 带有 xp:inputTextarea 控件的 XPage 绑定到所述字段
  • 保存按钮
  • 链接到该表单的文档数据源

保存时,文档是使用字段值创建的,但它存储为文本而不是 RT。将 computeWithForm 添加到 dds 属性没有帮助。

是拥有某种查询保存或自定义转换器手动将其转换为 RT 的唯一方法吗?

如果我使用 xp:inputRichText 控件,它可以很好地保存为 RT,但我不想在 UI 中使用 CkEditor,只是一个基本的 . 有没有办法对 xp:inputRichText 控件执行 editor=plain ?

我一直在寻找尝试覆盖 dojoType 或 renderType 没有运气

谢谢!

4

2 回答 2

3

您可以使用<xp:customConverter>in<xp:inputTextarea>将文本转换为富文本项。

因为getAsObject您将编写此代码(document1是您的数据源):

var rtitem:NotesRichTextItem = document1.getDocument().createRichTextItem("rtfield");
rtitem.appendText(value);
return null; // Return null as field has already been created

对于getAsString您来说,您只需获取富文本字段的内容和文本值。

value.getContentAsText()

该变量value是包含字段实际值的标准变量。所以你的代码<xp:inputTextarea>看起来像这样:

<xp:inputTextarea id="inputTextarea1" value="#{document1.rtfield}">
    <xp:this.converter>
        <xp:customConverter getAsString="#{javascript:value.getContentAsText()}">
            <xp:this.getAsObject><![CDATA[#{javascript:var rtitem:NotesRichTextItem = document1.getDocument().createRichTextItem("rtfield");
rtitem.appendText(value);
return null;}]]></xp:this.getAsObject>
        </xp:customConverter>
    </xp:this.converter>
</xp:inputTextarea>

注意:如果您希望使用文本区域更新富文本字段,那么您需要在getAsObject

于 2013-10-16T11:29:44.560 回答
1

我不确定如何操作字段类型。我假设 Domino 知道控件发生了什么,就像自定义控件被格式化以匹配内容类型一样。您可能可以强制使用内容类型。

我可以将此作为替代方案。您可以在 ckeditor 中执行自定义工具栏以删除工具栏并使其看起来像普通的文本字段。不过,这样做可能会出现 UI 并发症。您还可以使用状态栏来处理它,使其显示为纯白框。应该有另一个 dojo 属性类型。

此代码将为您提供一个没有工具栏的富文本框

<xp:inputRichText id="inputRichText1"
    value="#{document1.content}">
    <xp:this.dojoAttributes>
    <xp:dojoAttribute name="toolbar">
    <xp:this.value><![CDATA[#{javascript:var myToolbar = "[['']]";
                      return myToolbar}]]>
            </xp:this.value>
    </xp:dojoAttribute>
    </xp:this.dojoAttributes>
</xp:inputRichText>
于 2013-10-14T23:17:52.853 回答