创建可编辑的元素标记

在页面处于编辑方式时,可编辑的元素标记用于使通过 Web 内容查看器 Portlet 呈示的内容项和站点区域中的元素可编辑。

关于此任务

可编辑元素标记的格式:

[EditableElement type=" " context=" " name=" " key=" " format=" " mode=" " 
     callback=" " stateChangeCallback=" " refreshValueOnEdit=" " class=" " htmlencode=" " placeholder=" "]

[/EditableElement]
注: 如果启用了基本或高级呈示高速缓存,请勿使用此标记,因为在启用这些高速缓存后,编写更新不会立即显示在所显示的页面上。

要创建可编辑的元素标记,请执行以下操作:

过程

  1. 从演示模板或元素设计字段中单击插入标记。将打开标记助手对话框。
  2. 选择 EditableElement 作为标记类型。
  3. 选择用于存储元素的项类型以及用于确定要引用的项的上下文:

    如果未设置,项类型为 content 且上下文是 current

    表 1. 上下文和项类型矩阵. 此表描述上下文如何针对不同的项类型进行更改。
    上下文和项类型 type="auto" type="content" type="sitearea" type="parent" type="top"
    context="Selected"

    选择此选项后,上下文将由选定项设置。您可以通过单击选择来选择项。此参数将以 name=" " 参数形式添加到标记中:

    在页面处于编辑方式时,此参数将使所选内容项中的元素变为可编辑。 在页面处于编辑方式时,此参数将使所选内容项中的元素变为可编辑。

    如果已选择站点区域,那么所有对象都不可编辑。

    如果所选项是站点区域,那么在页面处于编辑方式时,此参数将使该站点区域中的元素变为可编辑。

    如果所选项是内容项,那么在页面处于编辑方式时,此参数将使该内容项的父站点区域中的元素变为可编辑。

    在页面处于编辑方式时,此参数将使所选项的父代中的元素变为可编辑。 在页面处于编辑方式时,此参数将使所选项路径中第一项的元素变为可编辑。
    context="Current"

    选择此选项后,上下文将由当前项设置。

    在页面处于编辑方式时,此参数将使当前呈示项中的元素变为可编辑。 在页面处于编辑方式时,此参数将使当前内容项中的元素变为可编辑。

    如果已选择站点区域,那么所有对象都不可编辑。

    如果当前呈示项是站点区域,那么在页面处于编辑方式时,此参数将使当前站点区域中的元素变为可编辑。

    如果当前呈示项是内容项,那么在页面处于编辑方式时,此参数将使该内容项的父站点区域中的元素变为可编辑。

    在页面处于编辑方式时,此参数将使当前呈示项的父站点区域中的元素变为可编辑。 在页面处于编辑方式时,此参数将使当前呈示项路径中第一项的元素变为可编辑。
    context="Autofill"

    当引用的元素由菜单、导航器或分类组件的搜索参数确定时,请使用该选项。如果菜单、导航器或分类组件中未使用该标记,那么上下文还原为当前项。

    在页面处于编辑方式时,此参数将使菜单、导航器或分类组件所返回项的元素变为可编辑。 在页面处于编辑方式时,此参数将使菜单、导航器或分类组件所返回内容项的元素变为可编辑。

    如果已选择站点区域,那么所有对象都不可编辑。

    如果菜单、导航器或分类组件所返回的当前项是站点区域,那么在页面处于编辑方式时,该站点区域的元素变为可编辑。

    如果菜单、导航器或分类组件所返回的当前项是内容项,那么在页面处于编辑方式时,此参数将使该内容项的父站点区域的元素变为可编辑。

    在页面处于编辑方式时,此参数将使菜单、导航器或分类组件所返回项的父项的元素变为可编辑。 在页面处于编辑方式时,此参数将使菜单、导航器或分类组件所返回项路径中第一项的元素变为可编辑。
  4. 单击选择编写模板以选择适当的编写模板。从可用元素列表中选择要使其可编辑的元素。此参数将以 key=" " 参数形式添加到标记中。
    注: 如果您已经选择了父级、顶级或站点区域的源类型,那么您需要手动完成可编辑元素标记中的 key=" " 参数,而不是单击选择创作模板
  5. 选择是否包含开始和结束部分。您可以在标记和诸如组件或元素标记之类的其他 Web 内容标记的开始和结束部分之间输入其他文本。
  6. 单击确定以将标记添加到您的导航器设计中。

下一步做什么

将该标记添加到设计中之后,您还可以向该标记添加下列参数:
表 2. 其他标记参数. 下表列出了可手动添加到此标记的其他参数。
标记参数 详细信息
name=" " 如果 context="selected",那么必须指定所引用项的名称。如果指定 name="./itemName",那么在呈示该项之后才会解析实际路径。与指定项的路径相比,此方法需要稍长的时间来进行解析。
format=" " 如果您指定 format="div",将在 div 标记中呈示可编辑的区域。如果未指定任何格式,缺省情况下将使用 div 标记。

如果您指定 format="span",那么将在 span 标记内呈示可编辑的区域。

mode=" " 此参数确定内联编辑方式。
  • 指定 mode="inplace" 将启用元素的直接编辑。并非所有字段都支持直接方式。如果元素不支持直接方式,将改为使用对话框方式。
  • 指定 mode="embed" 将启用元素的嵌入式编辑。并非所有字段都支持嵌入方式。如果元素不支持嵌入方式,将改为使用对话框方式。
  • 指定 mode="dialog" 将在对话框中启用编辑。对于可能不适合进行直接编辑的较大元素(例如富文本格式元素),此参数非常有用。所有字段都支持对话框方式。

如果未指定方式,那么将使用在 WCM WCMConfigService 服务的 inplaceEdit.defaultModeForTextinplaceEdit.defaultModeForRichText 属性中指定的缺省设置。

注: 缺省富文本格式编辑器始终与方式“原位置”或“嵌入”配合使用。使用“对话框”方式时,将使用编写 Portlet 设置或内容项的内容模板中选择的富文本格式编辑器。
callback=" "

此参数用于引用 i$ Promise。如果内联编辑已完成,将会解析此 Promise;如果内联编辑被取消,将会拒绝此 Promise。

有关 i$ Promise 的更多信息,请参阅 Javadoc。

例如:
  • 可如下编写标准回调:var myCallBack=new i$.Promise(); myCallBack.then(function(){window.alert('resolved')}, function(){window.alert('rejected')});return myCallBack;
  • 如果 myCallBacki$ promise,那么可如下编写回调:myCallBack
  • 可如下编写每次执行后自己返回新的 promise 的函数:return (function() {var myCallBack = new i$.Promise(); myCallBack.then(function() {window.alert('resolved');}, function() {window.alert('rejected');}); return myCallBack;})();
This information applies to CF09 and laterstateChangeCallback=" "

此参数用于引用所有状态更改的 JavaScript 状态更改回调。有关更多信息,请参阅 Javadoc。

例如,要指定 stateChangeCallback="myStateChangeCallback",您需要创建下面的状态更改回调函数。

/**
  *  element: id of the current editing element region
  *  state    : the new state
  *  additionalData: some additional data like tag type, element name, messages
  */
function myStateChangeCallback(element, state, additionalData)

State Constants:
 // loading value
   StateChangeEvent.STATE_LOADING = 0;
   // editing
   StateChangeEvent.STATE_EDITING = 1;
   // saving
   StateChangeEvent.STATE_SAVING = 2;
   // saved
   StateChangeEvent.STATE_SAVED = 3;
   // cancelled
   StateChangeEvent.STATE_CANCELLED = 4;
   // error
   StateChangeEvent.STATE_ERROR = 5;

每次状态更改时,已注册的 JavaScript 函数就会运行。

注: 仅在用户首次编辑元素时,才会运行加载状态。
This information applies to CF09 and laterrefreshValueOnEdit=" "

此设置在用户编辑元素后强制刷新标记值。缺省情况下,此设置处于启用状态。

如果要禁用此功能,请将此设置设为 false。

限制:
  • 此属性仅适用于文本元素、简短文本元素、数字元素或富文本元素。
  • 在富文本元素中使用此参数时,无法在元素内容中使用对 Web 内容标记的引用,因为它不会被解析。
  • 如果字段是对话框模式,或者是某些其他元素类型,例如数据或文件引用,那么这个值就没有影响。
  • 如果设为 false,那么此元素没有加载状态。
class=" " 此参数用于将 CSS 类指定给使用 format 参数指定的 div 或 span 标记。
注: 此处指定的定制类必须包含名称为“saving”、“editing”和“error”的样式。在编辑方式下显示可编辑字段时、在保存时以及在显示错误消息时,都需要使用这些名称。

用于可进行原位置编辑的字段的缺省 CSS 类为 wcm-default-inplace-editable

可以通过使用 WebSphere® Integrated Solutions ConsoleWCM WCMConfigService 服务中添加以下设置来覆盖此类:inplaceEdit.defaultClasses=class1 class2

可以向此设置添加以空格分隔的所需数目的类。

将定制类基于 AppServer_root\installedApps\nodename\wcm.ear\wcm-inplaceEdit.war\css\default-style.css 中的缺省样式表。

注: EditableElement 或 EditableProperty 标记上指定的任何类均优先于此值。

如果您还需要使用缺省 CSS 类,请将它添加到类列表中。例如:inplaceEdit.defaultClasses=wcm-default-inplace-editable class1 class2

htmlencode=" " 如果 htmlencode="true",那么用于显示文本的元素中的保留 HTML 字符将转换为字符实体。 例如,“<”将转换为“&lt;”。 如果要防止用户添加恶意代码或使用 HTML 更改其文本设计,那么此方法非常有用。

如果未指定,那么将使用 WCM WCMConfigService 服务中的 cmpnt.htmlEncodeDefault 属性指定的缺省设置来显示文本。由 WCM WCMConfigService 服务中的 cmpnt.htmlEncodeUrls 属性指定的缺省设置将用于显示 URL。缺省情况下,这些属性设置为 true。

placeholder=" " 可编辑元素字段的主体没有初始值时,将显示此处输入的文本。

例如:placeholder="Enter title"

此参数还可以与文本提供程序结合使用,以呈示翻译后的文本。例如:placeholder="[Plugin:TextProvider provider="com.mycompany.mybundle" key="enter_title"]"

这些特殊值用于呈示现有源中的文本:
placeholder="useName"
此参数呈示元素名称。
placeholder="useTitle"
此参数呈示元素标题。
placeholder="useHelpText"
此参数呈示元素的帮助文本。
placeholder="useNone"
该参数不显示任何占位符。

必须在 [EditableElement][/EditableElement] 标记之间添加其他文本、HTML 或标记。 此处添加的文本和标记是页面上将呈示的内容。在页面处于编辑方式时,此区域是可编辑的。首次添加到设计中时,缺省情况下将添加相应的元素标记。

例如,要显示名为 body 的可编辑元素,请使用以下标记:
[EditableElement type="content" context="current" key="body"]
[Element type="content" context="current" key="body"]
[/EditableElement]
注: 上下文设置 portalContext 和 portalMapping 不能与可编辑的元素标记配合使用。此限制适用于可编辑元素标记本身,以及 [EditableElement][/EditableElement] 标记之间引用的任何其他标记。