poniedziałek, 26 września 2011

podwójne szukanie

jesli mamy widok który chcemy kategoryzować
wszystko jest ładnie pięknie dopóki nic więcej z nim nie robimy
pokazujemy na przykład dane tylko dla jednego zalogowanego użytkownika
problemy dalej mamy dwa
nie można / nie działa włączanie sortowania na kolumnach (przynajmniej u mnie - ver 8.5.2)
i jelsli do tego dorzucam szukanie po widoku
NIE DZIAŁA KATEGORYZACJA !!!
zalogowany klient widzi wszystkie dane

wyjscie z sytuacji - najprostsze

filtrujemy widok po kolumnie
na przykład

sessionScope.ktooglada

w przy szukaniu robimy prosty trick

var v:string = requestScope.get("query") ;
if (v != null) {
v = v.toLowerCase();
v = v.replace("\"", "");
v = v.replace("(", "");
v = v.replace(")", "");
v = v.replace("[", "");
v = v.replace("]", "");

v = v.replace("$", "");
v = v.replace(" and ", " ");
v = v.replace("{", "");
v = v.replace("}", "");
var a = v.split(" ");
v = a.join(" and ");
v = v.replace("not", "\"not\"");
v = v.replace("or", "\"or\"");
v +" AND "+sessionScope.get("ktooglada")
}
else
{@Text(sessionScope.get("ktooglada"))
}

czyli szukamy dokumentów zawierających poszukiwaną fazę - a także ID klienta po którym wywietlamy widok ...

czwartek, 22 września 2011

Radio TADZIK nadaje

Drugi dziedzic jest już z Nami - zaczynamy nadawanie - jutro pierwszy problem który zdenerwował mnie w temacie XPage

i to jest wada Lotusa w ogóle

czyli kategoryzowany widok - po akcji typu szkaj - gubi kategoryzację i pokazuje WSZYSTKO !!

czwartek, 25 sierpnia 2011

jesli ktos czytuje moje wpisy

z racji tego że
może teraz pojawić się przerwa w nadawaniu - oczekujemy lada dzień narodzin drugiego dziedzica fortuny :)

więc - bądzcie cierpliwi - będę pisał jak tylko będę mógł

czwartek, 11 sierpnia 2011

dbcolumn z innej bazy

nic nie może być proste - składnia dbcolumn jest taka a nie inna
więc jeli chcemy podebrać dbcolumn z innej bazy podpowiedzi czy inne wartosci do RadioButtonGrup czy innego ComboBoxa

musimy zastosować taką skałdnię

var nasza_zmienna = new Array("nazwa_serwera","nazwa_bazy");
@DbColumn(nasza_zmienna,"nazwa_widoku",numer kolumny)

i już mamy TypoeAhead czy obliczaną listę wartoci dla dowolnego komponentu

wtorek, 9 sierpnia 2011

TYPE AHEAD

do pól można stosować podpowiadacze czyli Type Ahead
można to robić dwojako - albo z ręki wpisać listę podpowiedzi - słowa oddzielane przecinkami lub skorzystać na przykład z gotowej listy (widoku) w naszej bazie
tutaj dobieramy się do danych prostym dbcolumn

przy czym jego składnia wygląda najczęsciej tak

@DbColumn (@DbName(),"nazwa naszego widoku", numer kolumny którą chcemy podpowiadać)

środa, 3 sierpnia 2011

Mix

najpiękniejsza cecha XPage
miksowanie składni

@DbLookup ("nasza baza z klientami którzy się logują .nsf", "nazwa widoku",@Name("[CN]",session.getEffectiveUserName()), numer kolumny )

i co ??

XPage jak Bob Budowniczy - Daje radę :D

i mamy nazwę zalogowanego użytkownika

poniedziałek, 1 sierpnia 2011

pobieranie i ustawianie wartości

pobieramy wartość z dowolnego elemetu na XPage

getComponent("nazwa naszego elementu").getValue();

ustawianie wartości elementu robime w ten sposób

getComponent("nazwa elementu").setValue("wartość");

czwartek, 28 lipca 2011

zresztą proponuję

wkleić COMPUTED FIELD

o wartosci

context.getUserAgent().getUserAgent()

zobaczycie sami ile informacji można wyciągnąć od przeglądarki

przekierowanie ciąg dalszy

na koniec chyba najlepszy kawałek kodu

x=context.getUserAgent().getUserAgent();
if (x.match("iPad") !=null) context.redirectToPage("iphone.xsp");
if (x.match("Nokia") !=null) context.redirectToPage("nokia.xsp");
if (x.match("BlackBerry") !=null) context.redirectToPage("bb.xsp");
if (x.match("Mobile") !=null) context.redirectToPage("mobilki.xsp");

wszystko oczywiscie BEFORE PAGE LOAD

wtorek, 26 lipca 2011

dana obliczana dynamicznie i przy załadowaniu strony

w kodzie gdy wykonywany jest jaki skrypt - można łatwo wyróżnić zmienną obliczaną dynamicznie od zmiennej stałej - obliczanej jednokrotnie po zładowaniu strony

zmienna dynamiczna poprzedzona jest znakiem #
np
< ! [CDATA[#{javascript:x=context.getUserAgent().getBrowser();


obliczana jednokrotnie $

< ! [CDATA[${javascript:x=context.getUserAgent().getBrowser();

czwartek, 21 lipca 2011

szukanie tylko po widoku

wczeniej w polu search wklejalimy kod
viewScope.get("szukaj")

dzięki czemu wszystkie dokumenty z widoku byly przeszukiwane

jesli chcemy sam widok - ja ostatnio robiłem widget z podręcznym wyszukiwaniem telefonów z widoku

powyższy kod wklejamy do zakładki

WŁASCIWOSCI XPAGE - DATA - w miejsce dotyczące naszego widoku - FILTER BY COLUMN VALUE

to też jest prosty sposób aby uzyskać znane i lubiane ze zwykłych formularzy SHOW SINGLE CATEGORY

poniedziałek, 18 lipca 2011

Core Controls

Edit Box — podstawowe pole z Lotusa , nie akceptuje wielu linii
Rich Text — edytor pola rich text
Multiline Edit Box — pole akceptujące wiele linii tekstu
Button — bez komentarza :)
List Box — lista wyboru - można wybrać kilka opcji
Combo Box — rozwijana lista - do wyboru jedna wartosć
Checkbox — opcja do wyboru w znaczeniu prawda/falsz
Radio Button — do wyboru jedna wartosć
Link — odnosnik html'owy, pozwala również przekierować na inny XPage
Label — etykieta, może być powiązana z innymi elementami XPage
Computed field — znane i lubiane pole obliczane
Image — umieszczanie obrazka, można też je wyliczyć
File Upload — kontrolka do ladowania plików na XPage(formularza/bazy)- co najważniejsze, możemy ją umieszczać dowolną ilosc razy
File Download — kontrolka do sciągania plików z XPage
Date/Time Picker — pole z gotową kontrolką do wprowadzania daty i czasu
Display Error — pojedyńczy kod błędu powiązany z pojedyńczym polem na XPage
Display Errors — pokazuje wszystkie błędy na stronie XPage
Pager — kontrolka do sterowania stronami XPage - 1 z 5 stron, najczęsciej wstawiane automatyczne przy widokach - chyba że zdefiniujemy więcej niż 30 wierszy pokazywanych na stronie z jednego widoku

piątek, 15 lipca 2011

szukanie po widoku

szybkie szukanie

mamy już wklejony i powiązany widok na XPage
dokładamy pole tektstowe (edit box) - nazwa nie ma znaczenia
ważne żebysmy w zakładce DATA
połączyli to z
ADVANCED-SCOPED VARIABLE-VIEW SCOPE
i wpisali VARIABLE NAME - szukaj

we właciwosciach XPape - rozwijamy
ALL PROPERTIES-DATA-DATA-DOMINO VIEW -do własciwosci SEARCH
wklejamy kod

viewScope.get("szukaj")

i mamy prostą wyszukiwarkę na XPage

wyszuka tylko frazy zgodnej w 100% z wartoscią szukaj
czyli wpisując kowal wyszuka nam tylko kowal w widoku
nie znajdzie kowalski, kowalska itd

wtorek, 12 lipca 2011

Dodawanie wpisów KEYWORDS, DESCRIPTION

w zakładce Source strony XPage wpisujemy w kodzie poniższą składnię
< xp:this.resources >
< xp:metaData name="description" content="opis naszej strony www" >
< /xp:metaData >
< /xp:this.resources >

w ten sam sposób robimy znany z HTMLa KEYWORDS

poniedziałek, 11 lipca 2011

przekierowywanie na inną stronę

kolejny trick

we właściwościach strony mamy na drugiej zakładce EVENTS
wybieramy BeforePageLoad

klikamy kod

x=context.getUserAgent().getBrowser();
if (x.match("Safari") !=null) context.redirectToPage("nazwa_naszej_strony.xsp");

i zanim się ktokolwiek zorientuje - już mu się otwiera strona przeznaczona dla użytkowników mobilnych ...

xsp.preference

pierwsza sprawa przy tworzeniu XPage - jeśli docelowo jest na www.

różne analizatory-optymalizatory www - pokazują błąd przy automatycznie generowanej stronie .xsp
nie użyte style css, brak kodowania znaków itd
- jak jażdy dobry myk - ten również jest ukryty - musimy otworzyć xsp.properties i zmienić jedną linijkę

żeby to otworzyć na aplikacji w Domino Designer - klikamy z menu kolejno

Szukaj-plik

w plik - pattern - wpisujemy xsp.properties

dostajemy wynik - nazwa aplikacji-webcontent-web-inf
xsp.properties

po kliknięciu - dopisujemy na końcu linijki

xsp.html.doctype=ittd zgodnie ze składnią html

xsp.html.meta.contenttype=false lub true dodaje nam rzeczone wpisy o kodowaniu strony

oczywiście to tylko dwa proste przykłady - zachęcam do góóóóglania

Startujemy z XPages

Żeby nie umknęło - wszystkie moje przygody z Lotus XPages - myki, triki itd