- NewPage 宏
提供一个创建页面的对话框,方便用户创建(子)页面, 使用 PageTemplate 作为新页面的模板, NameTemplate 用于名字模板和用户输入的页面名组合形成新页面的名称。
用法:
<<NewPage(PageTemplate,ButtonLabel,ParentPage[,NameTemplate])>>
<<NewPage(PageTemplate,ButtonLabel,parentPage[, NameTemplate] [, type="select"] [, layout=""] [, category=""] [, validate="")]>>
参数:
- PageTemplate
创建新页面的模板。
PageTemplate 为一个字符串,该字符串指定模板名称。新页面以该模板页面为原型创建。或者
PageTemplate 为 python 的 dict 类型,支持根据多个模板创建新页面。Dict 的索引为模板名称(或者逗号分隔的模板名称以及页面归属的分类),键值为显示在下拉列表或者radio 中的名称。示例:单一模板文件
代码:
<<NewPage(缺省权限页面模板)>>
示例输出:
多模板: 用户从下拉框中选择模板 AbcTemplate 还是 XyzTemplate。新页面创建在 Meetings 下面。新页面名称为 "年-月-日_用户输入的页面名称"。新页面被自动加入分类 CategoryX 和 CategoryY。
代码:
<<NewPage({"AbcTemplate":u"模板一","XyzTemplate":u"模板二"}, "创建新页面",会议,%Y-%m-%d_%s, category="会议纪要类,CategoryMeeting")>>
示例输出:
多模板: 用户从下拉框中选择模板。新页面创建在 "会议" 下面。新页面名称为 "年-月-日_用户输入的页面名称"。新页面根据模板的选择自动加入不同分类。
代码:
<<NewPage({"公司会议模板,公司会议纪要类":u"公司会议纪要","部门会议模板,部门会议纪要类":u"部门会议纪要"}, 创建新页面, @PAGE, %Y-%m-%d_%s, type=radio)>>
示例输出:
- ButtonLabel
对话框的提交按钮名称。
- ParentPage
指定父页面名称,即在此页面下创建新页面。可以使用参数 @SELF 或者 @PAGE。
@SELF : 当前页面(包含该 NewPage 宏的页面)名称。
@PAGE : 请求的页面名称。当包含 NewPage 宏的页面被"页面A"包含,访问“页面A” 时, @PAGE 设定为“页面A”。
- NameTemplate
页面名称。如果 NameTemplate 中包含 %s,则显示表单,用户可以自定义页面名称,页面名称会替换 NameTemplate 中的 %s 而组成页面名称。
- type
多分类模式下,分类选择的方式,缺省为 "select"
type=select : 下拉菜单选择模板
type=radio : radio 风格选择模板
- layout=
用于定制 HTML 提交表单,缺省为空,即使用预定义格式的表单。缺省表单如下:
<table class="borderless"> <tr> <td>""" + _("Input title: ") + """</td><td>%(input)s</td></tr> <tr> <td>""" + _("Select template: ") + """</td><td>%(select)s</td></tr> <tr><td colspan="2" align="right">%(button)s</td></tr> </table>
- category
逗号分隔的分类名称,该分类被自动添加到新页面中
- validate
根据参数确定验证用户输入的合法性。
validate=category : 页面名称必须是合法的分类名称
validate=nocategory : 页面名称不能是分类名
validate=template: 页面名是模板
validate=notemplate: 页面名不能是模板
validate=group: 页面名是组名
validate=nogroup: 页面名不能是组名
validate=dict: 页面名是词典
validate=nodict: 页面名不能是词典
示例:
相关页面: