themes - 根据安装的 Domino 版本使用 OneUI 主题

标签 themes xpages

基于此片段( http://openntf.org/XSnippets.nsf/snippet.xsp?id=oneui-on-the-fly-theme-changer ),我尝试根据 Domino 的版本来计算主题。我想在 Domino<9 上使用“oneuiv2.1”,在 9 版本上使用“oneuiv3.0.2”。

编辑:要明确的是:我已经可以识别版本,问题是在正确的时间计算和设置主题,因为我的以下方法似乎做得太晚了。页面呈现,然后主题被设置 - 但这是我的印象。

这些是我的第一个方法:

  1. 在主题的“extends”属性中计算主题名称 - 不起作用。
  2. 在我的 Xpage 的 beforeRenderResponse 和 beforePageLoad 事件中计算并设置 session 属性“xsp.theme”的值 - 这也失败了
  3. 设置一个 bean 来计算值并在初始化 bean 时设置 session 属性 - 相同的结果

当然,您可以在主题文件中计算(渲染)OneUIv2.1 和 OneUIv3 所需的所有样式表和脚本,但是,嘿,对于这么多资源来说,这是相当麻烦的,不是吗?

所以我的问题是:您还有其他想法如何实现这一目标吗?如果您的应用程序可以使用具有相同布局的两个主题,并且独立于应用程序运行的位置(无论是在 8.5.x 还是 9 计算机上),那么这将非常方便使用。

期待讨论:-)

最佳答案

您可以在 beforePageLoad 事件上更改主题:

<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    beforePageLoad='#{javascript:
        var theme = session.getNotesVersion().startsWith("Release 8") ? "oneuiv2.1" : "oneuiv3.0.2";
        if ( ! theme.equals(context.getSessionProperty("xsp.theme"))) {
            context.setSessionProperty("xsp.theme", theme);
            context.redirectToPage(context.getUrl().toSiteRelativeString(context));
        }
    }'>

诀窍是设置 session 属性“xsp.theme”并且重定向到同一页面如果主题必须更改。

redirectToPage() 每个 session 仅发生一次,因为 Notes 版本在 session 期间不会更改。

关于themes - 根据安装的 Domino 版本使用 OneUI 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17379316/

相关文章:

java - TextColor 与 TextColorPrimary 与 TextColorSecondary

c# - 为什么不能在 Page.PreInit 事件之后动态应用主题和母版页?

css - XPage 在 Firefox 中无法正确显示

javascript - 在 dojo 数据网格中实现超链接

java - XPage:Java 类实例过多导致 java/lang/OutOfMemoryError

css - 方案定义是用不同的颜色突出显示 Vim 中的 CSS 属性和非数值吗?

Android - 如何使用默认的 Theme.Light 显示 Action Bar

jquery - 将 jQuery、jQuery UI 和 jQuery 主题与 Zend Framework 集成

java - Xpages - java.lang.NoSuchMethodError : javax/mail/internet/MimeBodyPart. AttachFile(Ljava/io/File;)V