我想为我们的XPage应用程序维护一个主模板,尽管有两种不同的内存模型和属性。开发模板的模型(主)应该在磁盘上,没有JS优化,也没有dojo压缩。派生模板中的模型,在客户端应用程序中使用,我们在内存中配置,优化JS和压缩dojo。
在每个模板中以不同方式设置配置参数,然后刷新派生模板的设计时,两个模板最终都相同(这看似合乎逻辑)。我的意思是:不能禁止刷新XSP设置,就像可以设置其他元素一样。
但即使有这样的可能性,它也不会起作用,因为所有内容都应该重新编译(“干净”),否则压缩的JS和css没有正确生成。我发现无法自动在派生模板上开始编译。
或者有办法吗?
谢谢!
源代码控制和分支应该是处理它的正确方法:https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.0/com.ibm.designer.domino.ui.doc/wpd_srcecontrol_top.html
老式的方法是“分支”你的模板。 XSP开发的主模板,以及从第一个模板继承的第二个模板。在第二个模板set“禁止设计刷新或...”属性为XSP.properties设计元素。然后更改其内容以满足您的需求。
曾几何时,有一个开发人员团队在几个数据库上工作,其中一些被标记为模板,可以进一步部署到生产环境。一位开发人员希望重用另一个数据库中的一些元素 - 模板。复制并将其粘贴到另一个数据库中。设计者提示:“你想从模板继承设计......?”。嗯,不。所以设计师没有用模板名称标记设计元素,没关系。此外,设计师设置了“禁止设计刷新......”标志。直到发布日,没有人注意到!新应用程序表现得很奇怪,有些部分得到了更新,有些则没有。很容易发现“禁止......”标志被设置并修复它。但奇怪的是继续。你猜怎么着?此标志设置在设计器GUI中没有此类复选框的元素上(在本例中为Java源代码)。
创建显示设计元素http://www-10.lotus.com/ldd/ddwiki.nsf/dx/view-of-design-elements.htm的特殊视图。
创建另一列,显示禁止刷新哪些元素。设置“将值显示为图标”。
"Prohibit design refresh or replace to modify";
@If( @Contains( $Flags; "P" ); 80; 0 ) : @If( @Contains( $Flags; "r" ); 204; 0 )
创建一个使用所选文档的视图操作(ss.CurrentDatabase.UnprocessedDocuments
用于选中的文档,uiv.CaretNoteID
和GetDocumentByID
仅用于聚焦)并调用此代码重置标志。
Sub Prohibit(note As NotesDocument)
On Error Goto errHandler
Dim flags As String
Dim flagsNew As String
flags = note.GetItemValue( "$Flags" )(0)
flagsNew = Replace( flags, "P", "" )
If flags <> flagsNew Then
note.ReplaceItemValue "$Flags", flagsNew
note.Save True, False
End If
Exit Sub
errHandler:
Print "Error on " & note.UniversalID & " (" & note.GetItemValue( "$Title" )(0) & ")"
Exit Sub
End Sub
免责声明:在某些情况下,这会破坏元素的签名 - 整个数据库的强制标志修复它。
注意:关于继承的提示 - 如果在从模板复制到模板时回答“否”,它会设置标记“禁止...” - 即使它是同一个数据库!
所以,在你的情况下,反过来 - 只需通过将"P"
添加到$Flags
文件的XSP.properties
字段来设置标志。顺便说一下,它的$TITLE
场是"WEB-INF/xsp.properties"
。
请享用!