如何在Lotus Domino Designer中导出应用程序的组件?

时间:2014-06-03 11:42:34

标签: lotus-notes lotus-domino domino-designer-eclipse

我有一个遗留的Lotus Domino Web应用程序 - 当然包含数据的数据库,还包括JavaScript,资源 - 包括png和jpg图像,子格式为HTML和CSS等。

我想导出应用程序本身 - 数据,只是应用程序结构 - 所以我可以在其他更现代的Web框架中重用图像,HTML和CSS(例如Rails或NodeJS或使用HTML模板,CSS和JS作为文件的PHP或Python等等。

如何按原样导出HTML,CSS,JS,png,jpg等?我很高兴采用Designer中显示的整个文件结构,只想获得实际的HTML / CSS / JS / images / etc.在那里。

我尝试使用"源控制磁盘同步"选项,但文件以某种奇怪的Domino特定XML格式保存,底层HTML / CSS /等存储为十六进制。不是很有帮助。

作为一个例子,我可能在我的应用Shared Elements\subforms\main.login.subform(和许多其他人)中看起来像:

<style>
#service-content {
    background-color: #fff;
}

label, input {
    width: 100px;
    display: inline-block;
    padding: 3px 5px;
    margin-bottom: 10px;
}

input {
    width: 300px;
}

#login-message, h1 {
    text-align: center;
}   
</style>
<div style="width: 450px; margin: 0 auto">
    <input type="hidden" value="/<Computed Value>/page?readform" name="RedirectTo" />

    <h1>Login</h1>
        <!-- lots of html here -->
</div>
<!--// NAVIGATION -->

我想提取(和其他人一样)。

编辑:

正如@AndrewB在下面的评论中所指出的,这值得更好的解释。

有问题的Domino应用程序(主要)使用静态html和JS通过Ajax从代理程序检索数据。因此,UI(html / css / js)可以在任何支持的情况下重复使用,并且工作量适中。

但只有在我能够获得原始静态页面时它才有效。这些静态信息存储在Resources\Files\Shared Elements\subforms\

编辑2:

当我按照@sjcaged关闭二进制DXL导出时,我得到上面原始HTML的输出,如下所示(这只是结束):

<font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='#4200ff'/>"submit"</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30'/> </run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='purple'/>value</run>    
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30'/>=</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='#4200ff'/>"Login"</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30'/> </run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='teal'/>&gt;&lt;/</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='#3f8080'/>div</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='teal'/>&gt;</run></par>
<par def='3'><run><font name='Courier New' pitch='fixed' truetype='true' familyid='30'/></run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='teal'/>&lt;/</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='#3f8080'/>form</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='teal'/>&gt;</run></par>
<par def='3'>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='teal'/>&lt;/</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='#3f8080'/>div</run>
<run><font name='Courier New' pitch='fixed' truetype='true' familyid='30' color='teal'/>&gt;
</run></par>
<par def='2'><run><font name='monospace'/>&lt;!--// NAVIGATION --&gt;</run></par></richtext>    
</body>
<item name='$$ScriptName' summary='false' sign='true'><text>main.nav</text></item></subform>

2 个答案:

答案 0 :(得分:1)

简单的答案:没有办法做到这一点。

浏览器中显示的网络代码由多米诺骨牌http任务动态生成,包括表单,视图,页面,子表单,脚本库,公式等。

数据库中的任何地方都没有简单的html表示。

要获得您想要的东西,您需要一个能够像浏览器那样抓取并下载生成的源的leacher。但是,由于许多功能都是服务器端(现场验证,代理,发送邮件,等等......),因此您无法从该方法中获得足够的功能。

当然,您可以手动导出图像资源,css文件以及可能的JavaScript-Libaries(如果有的话),但这不会让您更进一步达到您想要实现的目标。

如果你想&#34;迁移&#34; nsf到另一个平台,那么你将不得不重写整个东西......

答案 1 :(得分:1)

@deitch,你几乎就在那里:你确实想要启用源代码管理。这是如何工作的,它将数据库的内容(自动或手动)与标准文件系统目录同步。请参阅帮助主题&#34;设置源代码管理支持功能&#34;了解更多信息。

要使其真正起作用,需要更改首选项。在Designer中,首先转到File |偏好|设计师|源控制。确保&#34;使用二进制DXL&#34;没有设定。请参阅帮助主题&#34;选择在磁盘上表示设计元素的方式&#34;有关差异的更多信息 - 基本上,使用常规DXL分离设计元素数据[即来自设计元素在数据库中包含的DXL格式化元数据的代码],其中二进制DXL将它们都放入二进制blob中,并防止外部应用程序编辑它们。此处还有其他选项,请参阅帮助主题&#34;设置源代码管理启用功能首选项&#34;了解更多信息。

完成此操作后,(仍在Designer中)右键单击项目,选择&#34; Team Development&#34;,然后为此应用程序设置源代码管理&#39;。它可能会也可能不会显示启动画面并让您选择Next,但最终它会显示一个对话框,要求您键入磁盘项目的名称。确保第二行指向一个尚不存在的目录(默认情况下,使用&#34;使用默认位置&#34;复选框,它将指向Notes数据目录并附加到输入的任何内容磁盘项目的名称作为新目录名称)。当您选择Finish时,它将使用该目录作为根目录将NSF中的Eclipse虚拟文件系统导出到文件系统。

(并非所有的Perspectives都显示了#34; Team Development&#34;条目。值得注意的是,Java Perspective并没有。但是,Domino Designer的观点确实如此。要更改Perspective,请选择Window | Open Perspective and选择要使用的Perspective。)

完成后,您可以使用外部工具将目录添加到源代码控制[总是一个好主意];只要&#34;使用二进制DXL&#34;如果未被选中,您还可以使用外部工具来操作被视为应用程序一部分的代码和数据。