OneUI je standardní html/css layout, který je součástí serveru Lotus Notes/Domino od verze 8.5.1 a je docela povedený. Mít pro své aplikace standardní a snadno implementovalný layout je velmi výhodné. Člověk se může věnovat podstatným věcem a nemusí řešit design, rozvržení, nebo typografii. To vše má již hotové, už mu jen zbývá do této škatulky umístit svou aplikaci.
Já používám standardní design i pro své aplikace v klientovi Lotus Notes. Je to součástí mého frameworku už řadu let a když vytvářím novou aplikaci, použiji k tomu svou vlastní šablonu. OneUI to samé řeší pro aplikace v xPages.
První věc je orientace v použitých verzích. Domino 8.5.1 přišlo se třemi základními motivy – notes, webstandard a oneui. Oneuiv2 bylo přiloženo jako experimentální. Tyto verze najdete na serveru v podadresáři domino/java/xsp/theme. Aby to nebylo tak jednoduché, s Dominem 8.5.2 přišla plně podporovaná verze oneuiv2, která se však nachází v podadresáři domino/html/oneuiv2. IBM si nikdy nedělala příliš hlavu s koncepcí, což je vidět na tomto modelu.
Pokud si otevřete adresář s oneuiv2, uvidíte, že tato verze přišla, kromě standardu, s několika dalšími motivy. Konkrétně gold, green, metal, red. V Domino 8.5.3 je již oneuiv2.1, které má další motivy.
Implementace OneUI v 1
Implementace OneUI layoutu je poměrně jednoduchá. Základním skinem je webstandard. Pokud chcete aplikovat oneui, musíte jej rozšířit. To uděláte ve své aplikaci tak, že si v designeru v otevřené aplikaci otevřete kategorii Resources a pak podkategorii Themes. Vytvoříte nový motiv, který si můžete pojmenovat jak chcete – třeba Pepa. V tomto novém motivu pak musíte jen určit, který původní motiv konkrétně rozšiřujete. Implementovat OneUI verze 1 je veskrze primitivní. Najdete ve vytvořeném motivu následující řádek…
| 1 | <theme extends="webstandard"> | 
… a hodnotu webstandard přepíšete na oneui. Uložíte motiv, pak otevřete Application Properties, přepnete na záložku xPages a úplně nahoře pak máte políčko Application theme. Tam vyberete ten svůj motiv, uložíte, spustíte Build a pak už se můžete kochat novou grafikou. Komponenty jsou hezky oskinované, na pozadí je modrý gradient… prostě paráda. Druhá možnost je rychlejší, ale nevím, zda funguje stoprocentně spolehlivě. Spočívá v tom, že přeskočíte ten krok s vytvářením a úpravou vlastního motivu, rovnou otevřete Application Properties a na záložce xPages zapíšete do toho pole Application theme natvrdo hodnotu oneui.
Implementace OneUI v 2
Jak jsem řekl, OneUIv2 přišlo s několika motivy. Ideální tedy je, vytvořit si vlastní motivy se stejnými názvy. Řekněme, že chci implementovat zelený motiv a přidat k němu i vlastní css s názvem mujstyl.css, který jsem si vytvořil předtím. V Resources/Themes si vytvořím nový motiv, nazvu ho green a postarám se, aby tam bylo toto:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <theme extends="oneuiv2">
     <resource>
         <content-type>text/css</content-type>
         <href>/.ibmxspres/domino/oneuiv2/greenTheme/greenTheme.css</href>
     </resource>
     <resource>
         <content-type>text/css</content-type>
         <href>/.ibmxspres/domino/oneuiv2/greenTheme/dojoTheme.css</href>
     </resource>
     <resource>
         <content-type>text/css</content-type>
         <href>mujstyl.css</href>
     </resource>
 </theme> | 
Uložit, přejít do Application Properties/xPages a v poli Application theme vybrat položku green. Stejným způsobem pak můžu aplikovat i ostatní motivy, třeba gold – jen všude tam, kde je greenTheme zapsat goldTheme.
Jistě jste si všimli, že jeden z uvedených zdrojů je dojoTheme.css. To má své opodstatnění a oceníte to především když použijete javascriptovou extlib z OpenNTF, která také pro skinování svých komponent podporuje OneUI.
Jak na layout?
Takže máme naimplementovaný motiv, ale co dál? Potřebujeme nějaké rozvržení aplikace. OneUI na to pamatuje a přináší vývojářům standardní layout ve verzích jedno- dvou- a třísloupcového rozvržení.
Prohlédnout si funkční OneUI můžete na libovolné wiki od IBM. Tady je třeba standardní OneUI ve verzi 1. Tady zase poslední verze OneUIv2.1 s moderním, černým motivem. Rozvržení je v podstatě vždy stejné. Nahoře nějaké záhlaví s logem a názvem aplikace vlevo a jménem uživatele vpravo. Pod tím jsou nějaké záložky ve formě odkazů na různé sekce webu, pod tím je content, tedy jedno- až třísloupcový layout, kde je vlevo navigace, vpravo můžou být nějaké odkazy či bláboly a uprostřed je obsah dané stránky. Pod tím vším je zápatí a nakonec klasický copyright. Viz náhledový obrázek, který jsem si zapůjčil z webu oficiální dokumentace.
Každá z těch sekcí je tvořena bloky. Ty se dají v xPages vyjádřit buď standardní komponentou xp:panel, anebo rovnou obyčejným HTML elementem div. Každý ten blok je definován css třídou. Až na hlavní blok, obsahuje každý z nich dva zanořené wrappery, vyjádřené css třídami lotusRightCorner a lotusInner.
Tak se pojďme na jednotlivé bloky podívat…
lotusBanner
Nejsvrchnější blok s logem a názvem aplikace vlevo, jménem uživatele vpravo, popřípadě s odkazy na další aplikace uprostřed. Logo s názvem aplikace tvoří obrázek o velikosti 126x18px a je to definováno vlastním zanořeným blokem s css třídou lotusLogo. V základu je jako podkladový obrázek použito standardní logo IBM a text Product Name. Je tedy jasné, že je potřeba zaměnit ho za své logo. Své logo uložte buď do Image Resources nebo Files ve své aplikaci a pak do ve svého CSS souboru zapište následující definici.
| 1 2 3 | .lotusui .lotusLogo, .lotusLoginLogo {
     background-image: url(moje-logo-126x18.png);
 } | 
Sekce se jménem uživatele má css třídu s názvem lotusUser a je uzavřená v sekci s názvem lotusUtility, která je umístěna vpravo. Sekce s odkazy má název lotusLinks a je umístěna veprostřed. Libovolnou z těchto sekcí lze vynechat.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <div class="lotusBanner" role="banner">
     <div class="lotusRightCorner">
         <div class="lotusInner">
             <div class="lotusLogo">
                 <span class="lotusAltText">Moje aplikace</span>
             </div>
             <ul class="lotusInlinelist lotusUtility">
                 <li class="lotusFirst">
                     <span class="lotusUser">
                         <xp:text escape="true" id="userName">
                             <xp:this.value>
                                 <![CDATA[#{javascript:@Name('[CN]',@UserName(0))}]]>
                             </xp:this.value>
                         </xp:text>
                     </span>
                 </li>
                 <li>
                     <a href="javascript:;">Nápověda</a>
                 </li>
                 <li>
                     <a href="./home.xsp?logout">Odhlásit</a>
                 </li>
             </ul>
                 <ul class="lotusInlinelist lotusLinks" role="navigation">
                 <li class="lotusFirst lotusSelected">
                     <a href="javascript:;">
                         <strong>Domů</strong>
                     </a>
                 </li>
                 <li>
                     <a href="javascript:;">Applikace1</a>
                 </li>
                 <li>
                     <a href="javascript:;">Applikace2</a>
                 </li>
                 <li>
                     <a href="javascript:;">Applikace3</a>
                 </li>
             </ul>
         </div>
     </div>
 </div><!--end lotusBanner--> | 
lotusTitleBar
Toto je druhý blok pod bannerem, který zpravidla obsahuje navigační záložky vlevo (lotusTabs) a vyhledávání (lotusSearch) vpravo.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <div class="lotusTitleBar">
     <div class="lotusRightCorner">
         <div class="lotusInner">
             <ul class="lotusTabs" role="navigation">
                 <!--put class="lotusSelected" on the li element of the selected tab-->
                 <li>
                     <div>
                         <a href="javascript:;">Tab1</a>
                     </div>
                 </li>
                 <li>
                     <div>
                         <a href="javascript:;">Tab2</a>
                     </div>
                 </li>
                 <li class="lotusSelected">
                     <div>
                         <a href="javascript:;">
                             <strong>Tab3</strong>
                         </a>
                     </div>
                 </li>
             </ul>
             <xp:panel id="lotusSearch" styleClass="lotusSearch"
                 rendered="#{javascript:database.isFTIndexed()}">
                 <xp:inputText id="search" />
                 <xp:link escape="true" text="" id="searchLink">
                     <xp:image id="searchButton" url="/search.png" />
                 </xp:link>
             </xp:panel>
         </div>
     </div>
 </div><!--end titleBar--> | 
lotusPlaceBar
Tento blok se tak často nevyužívá. Je umístěn pod titleBarem a zpravidla obsahuje nějaké akce, odkaz na konfiguraci apod.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <div class="lotusPlaceBar">
     <div class="lotusRightCorner">
         <div class="lotusInner">
             <h2>Titulek</h2>
             <div class="lotusBtnContainer">
                 <span class="lotusBtn">
                     <a href="javascript:;">Upravit</a>
                 </span>
                 <span class="lotusBtn">
                     <a href="javascript:;">
                         <img src="btnDropDown2.png" alt="" aria-label="show menu" />
                     </a>
                 </span>
             </div><!--end bntContainer-->
         </div>
     </div>
 </div><!--end placebar--> | 
lotusMain
Toto je hlavní obsah vaší aplikace a je možné použít jedno-, dvou-, či třísloupcový layout. Každá sekce, resp. sloupec má zase svou css třídu. Levý sloupec je lotusColLeft, pravý sloupec lotusColRight a obsahový, prostřední sloupec je lotusContent. Layout je fluidní, takže se roztáhne podle potřeby. lotusMain blok neobsahuje dva zanořené wrappery, jako ostatní bloky.
V levém sloupci se zpravidla umísťuje nějaké menu, tagcloud apod. Menu blok se jmenuje lotusMenu a obsahuje dva zanořené wrappery (lotusBottomCorner a lotusInner).
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <div id="lotusMain" class="lotusMain">
     <div id="lotusColLeft" class="lotusColLeft">
         <h3>Menu</h3>
         <div class="lotusMenu" role="menu">
             <div class="lotusBottomCorner">
                 <div class="lotusInner">
                     <ul>
                         <li role="menuitem">
                             <xp:link escape="true" text="Menu Item 1" id="link1"/>
                         </li>
                         <li role="menuitem">
                             <xp:link escape="true" text="Menu Item 2" id="link2"/>
                         </li>
                         <li role="menuitem">
                             <xp:link escape="true" text="Menu Item 3" id="link3"/>
                         </li>
                     </ul>
                 </div>
             </div>
         </div>
     </div>
     <div id="lotusColRight" class="lotusColRight">
         Pravý sloupec
     </div>
     <div id="lotusContent" class="lotusContent">
         <xp:callback facetName="facet_1" id="callback1"/>
     </div>
 </div> | 
lotusFooter
Kasické zápatí. Může obsahovat odkaz na nápovědu, o aplikaci, legal notice apod.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <div class="lotusFooter">
     <table cellspacing="0" role="presentation">
         <tr>
             <th class="lotusLast">Moje aplikace</th>
         </tr>
         <tr>
             <td>
                 <ul>
                     <li>
                         <a href="./home.xsp">Domů</a>
                     </li>
                     <li>
                         <a href="./home.xsp">O aplikaci</a>
                     </li>
                 </ul>
             </td>
         </tr>
     </table>
 </div><!--end footer--> | 
lotusLegal
Toto je poslední blok úplně dole, ještě pod zápatím a zpravidla obsahuje copyright.
| 1 2 3 4 5 6 7 8 9 10 | <div class="lotusLegal">
     <div class="lotusRightCorner">
         <div class="lotusInner">
             <div style="float:right">
                 Něco napravo
                 </div>
             © Copyright Moje firma 2011, 2012. All Rights Reserved.
         </div>
     </div>
 </div> | 
Souhrn
OneUI je dobrý layout, který IBM používá ve všech svých wikinách a na spoustě dalších webů. Dá se snadno implementovat a v každé setinkové verzi Domino serveru zatím vždy přibyly nějaké nové motivy. Prozatím to navíc IBM udržuje zpětně kompatibilní. Uvidíme, zda jí to vydrží.
Pokud nemáte vlastní layout a nechcete se zbytečně trápit s grafikou, rozvržením a typografií, je OneUI pro vaše aplikace v xPages jednoznačnou volbou.
Zdroje
IBM Lotus User Interface Developer Documentation
Create the website layout
Work with themes
OpenNTF.org – OneUI Easy Starter Layout


 
		  
Komentování je uzavřeno.