2015-06-04 2 views
2

У моей компании около 10 сильно используемых приложений Xpage в нашем ИТ-отделе. Я хочу стандартизировать их и создать одно «приложение», содержащее все 10 приложений. Я ищу советы о том, как это сделать.Создание единого макета приложения для нескольких приложений

Мой план - сделать приложение оболочки с макетом приложения, как показано ниже. Я поставлю ссылки на приложения, которые хочу включить, где App1, App2, App3 и т. Д.

Каждое приложение будет иметь один и тот же баннер (верхняя часть в черном), но все остальное для макета приложения будет отличаться. Я хотел бы сделать это таким образом, чтобы я мог поддерживать баннер как один элемент дизайна и наследовать любую из необходимых мне БД. Таким образом, мне не пришлось бы касаться каждого db, когда это изменилось. Есть ли способ сделать это.

У меня есть вторая часть этого вопроса. Я хотел бы сделать часть этого приложения настраиваемой для пользователя. Поэтому хотелось бы, чтобы они могли добавлять ссылки на часто используемые базы данных Lotus Notes в приложение, и они появятся только для них. Моя идея - сделать документ, содержащий свое имя пользователя как ключевое поле, и позволить им добавлять/изменять/удалять ссылки и подмножества, чтобы показывать только их. Но есть ли лучший способ сделать это?

enter image description here

мне нужно упомянуть, что я пытаюсь сделать это в XPiNC. У меня с этим много проблем. Сначала я просто хочу быть в App1 и нажимать на App2 и открыть это приложение на той же вкладке, что и я. Таким образом, он будет выглядеть так, как будто пользователь действительно находится в одном приложении.

У меня есть basicLeafNode со следующим кодом, но он открывается на новой вкладке. Как я могу открыть приложение на одной вкладке?

    <xe:basicLeafNode 
         label="CompuWeigh Monitor"> 
         <xe:this.href><![CDATA[#{javascript:var url = "notes://KC1/compuweigh.nsf/xpHome.xsp?OpenXpage" 
url}]]></xe:this.href> 
        </xe:basicLeafNode> 

ответ

0

Если вы знакомы с Java, то я бы создать баннер и нижние колонтитулы как OSGI плагин и вставить эти элементы в приложении. Пока вы меняете только результат, вы можете вносить изменения в свой источник, затем строить, а затем развертывать.

2

Я сделал именно это, но я использую плагин osgi на сервере. В основном в приложении я надел свой элемент управления макетами и дал идентификатору для элемента управления определенное имя.

Затем в плагине osgi у меня есть настройка фазестильщика beforeRenderResponse. Этот фазелистер смотрит на страницу, отправленную обратно в браузер, и видит, есть ли на странице элемент управления компоновкой с определенным именем, которое я ему дал, и если есть, то он обращается к конфигурации элементов управления компоновкой и динамически добавляет ссылки и параметры для контроля по мере необходимости.

В моем случае я прочитал в списке ссылок приложения из другого nsf, хранящегося на сервере, чтобы я мог добавлять/удалять ссылки, не перестраивая плагин osgi. Список читается в памяти и сохраняется в одноэлементном режиме для повторного использования, поэтому я не попадаю в базу данных config при каждой загрузке страницы.

Этот метод отлично подходит для нас и используется уже около 4 лет.

+0

Declan, это будет очень полезно, когда я смогу перейти из приложения в приложение. См. Мой предыдущий вопрос выше. Я очень ценю любую помощь, которую вы можете дать. Я не уверен, хотя, если я готов к плагину OSGI, но я буду смотреть на него. –

1

Плагин OSGi с XspLibrary - это путь, если вы не хотите дублировать NSF.

Мое предложение состоит в том, чтобы расширить класс com.ibm.xsp.extlib.tree.impl.BasicNodeList, а затем использовать его как beanTreeNode. Поместите этот класс в свой плагин XspLibrary, а затем используйте его в своих NSF.

Пример Удлинение BasicNodeList:

package com.yourcompany.xsp.layout; 

import com.ibm.xsp.designer.context.XSPUrl; 
import com.ibm.xsp.extlib.tree.complex.PageTreeNode; 
import com.ibm.xsp.extlib.tree.impl.BasicLeafTreeNode; 
import com.ibm.xsp.extlib.tree.impl.BasicNodeList; 

public class MyBannerNodes extends BasicNodeList { 

    private static final long serialVersionUID = -6684020744478484250L; 

    public MyBannerNodes() { 

     // Adding a link to page within App 
     PageTreeNode pageNode = new PageTreeNode(); 

     pageNode.setPage("SomePage.xsp"); 
     pageNode.setLabel("Some Page Node"); 
     pageNode.setSelection("/SomePage"); 

     addChild(pageNode); 

     // Adding a link to some other url 
     BasicLeafTreeNode linknode = new BasicLeafTreeNode(); 

     XSPUrl url = new XSPUrl(); 
     url.setScheme("https"); 
     url.setHost("your.host.com"); 
     url.setPath("yourPath/Your.nsf/Home.xsp");  
     url.setParameter("paramOne", "paramVal"); 

     boolean newWindow = true; // 

     if (newWindow) { 

      String script = "window.open(\"" + url.toString() + "\");";     
      linknode.setOnClick(script);    

     } else { 

      linknode.setHref(url.toString()); 

     } 

     linknode.setLabel("Link Node"); 

     addChild(linknode); 

    } 
} 

Я только добавил pagetreenode и basicleaftreenode, но вы можете добавить другие узлы тоже.

Затем на элементах управления макетами в разделе bannerNodes используйте управляемый узел bean.

<xe:oneuiApplication> 
      <xe:this.bannerUtilityLinks> 
       <xe:beanTreeNode 
        nodeBean="com.yourcompany.xsp.layout.MyBannerNodes"> 
       </xe:beanTreeNode> 
      </xe:this.bannerUtilityLinks> 

Любые изменения, внесенные в ваш плагин будет отражаться в ваших NSFs

Вы также можете вручную при необходимости в расчете на NSF основе поместить узлов до и после этого beanTreeNode.

Если вы не знаете, как сделать плагин OSGi, но хотите попробовать, просто поместите этот Java-файл в NSF и попробуйте сначала от него.

Что касается вашей второй части, да, нет проблем с выполнением, как вы предложили, просто добавьте в подпрограмму класс MyBannerNodes, который извлекает ваши постоянные «пользовательские настройки», например. получить documentbykey и повторить их, добавив каждый в качестве узла. Вы можете даже поместить их все в BasicContainerTreeNode, чтобы они могли отображаться в виде выпадающего списка, например. с меткой «Мои ссылки»

+0

Cameron, это будет очень полезно, когда я смогу получить от App to App. См. Мой предыдущий вопрос выше. Я очень ценю любую помощь, которую вы можете дать. –

+0

Привет, Брайан, я не делаю никакого развития XPinc, но есть параметр в редакторе свойств Xpages для приложения, которое касается поведения Window в «Client Notes», которое имеет «сервер по умолчанию», «открыт в том же окне и вкладка "или" открыть в новом окне или вкладке ", возможно, поиграть с этим. Каждый XPage также может устанавливать это поведение по умолчанию, например. defaultLinkTarget = "_ self", и это находится в редакторе свойств для xpage, а также –

+0

Если это не сработает, возможно, задайте его как отдельный вопрос –

Смежные вопросы