【问题标题】:How do I export the components of an app in Lotus Domino Designer?如何在 Lotus Domino Designer 中导出应用程序的组件?
【发布时间】:2014-07-23 17:41:27
【问题描述】:

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

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

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

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

例如,我的应用程序中可能有 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 在下面的 cmets 中指出的那样,这值得更好的解释。

有问题的 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>

【问题讨论】:

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


    【解决方案1】:

    @deitch,你快到了:你确实想要启用源代码控制。它的工作原理是将数据库的内容(自动或手动)与标准文件系统目录同步。有关详细信息,请参阅帮助主题“设置源代码管理启用功能”。

    但是,要使其真正发挥作用,需要更改偏好。在 Designer 中,首先转到文件 |偏好 |设计师 |源代码控制。确保未设置“使用二进制 DXL”。有关差异的更多信息,请参阅帮助主题“选择在磁盘上表示设计元素的方式”——基本上,使用常规 DXL 分离设计元素数据 [即代码] 来自 DXL 格式的元数据,该元数据包装了数据库中的设计元素,其中二进制 DXL 将它们都放入二进制 blob 中,并防止外部应用程序能够编辑它们。这里还有其他选项,有关详细信息,请参阅帮助主题“设置源代码管理启用功能首选项”。

    完成后,然后(仍在 Designer 中)右键单击项目,选择“团队开发”,然后选择“设置此应用程序的源代码管理”。它可能会或可能不会显示启动屏幕并让您选择下一步,但最终它会显示一个对话框,要求您输入磁盘项目的名称。确保第二行指向一个尚不存在的目录(默认情况下,选中“使用默认位置”复选框,它将指向 Notes 数据目录并附加到该目录作为 on -disk 项目作为新目录名称)。当您选择完成时,它会将 NSF 中的 Eclipse 虚拟文件系统导出到文件系统,并使用该目录作为根目录。

    (并非所有透视图都显示“团队开发”条目。值得注意的是,Java 透视图不显示。但是,Domino Designer 透视图会显示。要更改透视图,请选择 Window | Open Perspective 并选择要使用的透视图。)

    完成此操作后,您可以使用外部工具将目录添加到源代码管理[这是一个始终好主意];只要取消选择“使用二进制 DXL”,您还可以使用外部工具来操作被认为是应用程序一部分的代码和数据。

    【讨论】:

    • 太棒了!我会在接下来的几个小时内尝试并报告。
    • 是和不是。我设法尝试了您的建议...但直到那时才意识到开发人员已经更改了代码,并且所有静态资源都丢失了。所以它没有什么可出口的。据说他们会在一夜之间修复它,所以我会在周五晚些时候再试一次。 :-)
    • 嗯,它导出为 html,它包含所有内容,但它添加了数百种其他样式和标签。哦,好吧。
    • 是添加了样式和标签,还是开发人员用具有样式和标签的数据“修复”了它?我从来没有让 Domino 向我没有放在那里的资源添加任何东西。
    • 我不太明白。对我来说,看起来 Domino 添加了样式和标签。我会更新问题(太大而无法发表评论)。
    【解决方案2】:

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

    浏览器中显示的网页代码由 domino http- 任务从表单、视图、页面、子表单、脚本库、公式等动态生成。

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

    要获得您想要的内容,您需要一个过滤器,它可以像浏览器一样抓取并下载生成的源代码。但是由于很多功能是服务器端的(字段验证、代理、发送邮件等等……),你不会从那种方法中得到足够的东西。

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

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

    【讨论】:

    • 嗯,有点。实际上,我对“原始”模板、包含 html 和 Domino 引用的子表单感到满意。但是有没有办法把它全部扔掉?
    • 我想您可以将设计导出为 DXL。但我不确定这对您有多大帮助,因为您看到的大多数 HTML 代码都是由服务器动态创建的。为什么还要迁移?只需在 Bootstrap 和 jQuery 中链接,并添加一些 CSS,您就可以在 Domino 中做很多事情。
    • 除非开发人员没有使用“passthrough html”,否则导出将没有任何用处。是的,您可以编写一个 xslt 来将 xml- 输出转换为有效的 html,但同样会丢失完整的功能,您只会得到一个愚蠢的 html 页面......而且 html 将是“丑陋的”,因为 Domino 仍然使用表格格式化,什么不是现代 Web 开发中最先进的......
    • 不同意上面的 Torsten,你可以使用任何你喜欢的方式来格式化网页布局。很少有 Lotus Domino 开发人员使用旧的 domino 生成的内容,因为尤其是使用 R8 及更高版本,您可以相当轻松地生成符合 web 2.0 标准的代码。至于问题,用不同的语言重新创建整个网站的商业案例将非常薄弱,因为您不想使用现有平台,因为您必须从头开始。
    • @AndrewB,你说得很好。我没有很好地描述我的问题。我将在上面编辑我原来的问题。
    猜你喜欢
    • 2012-05-08
    • 2012-11-08
    • 2017-06-22
    • 2012-02-23
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多