na XPAGE możemy umieścić dwa rodzaje pól pokazujące błędy
1. DISPLAY ERROR - to pole "przywiązujemy" do konkretnego pola na naszym XPAGE
2. DISPLAY ERRORS - wyświetla błędy ze wszystkich pól na XPAGE
w polach które chcemy sprawdzać włączamy walidację (VALIDATION - REQUIRED FIELD) i wpisujemy komunikat jaki ma się pojawiać - VALIDATION ERROR MESSAGE
następnie na polu jednym z tych typu REQUIRED
wchodzimy w ALL PROPERTIES - DATA
ustawiamy - DISABLE CLIENT SIDE VALIDATION na TRUE
wtedy walidację mamy załatwioną "odgórnie" przez serwer - a nasz klient zobaczy dokładnie te komunikaty VALIDATION ERROR MESSAGE w miejscu bądź miejscach gdzie je umieściliśmy ...
Lotus Xpages, Custom Controls - nowe (od 2009 roku) rzeczy w Lotus Designer - jak korzystać - jak zrobić aby Lotus Domino robiło to co my chcemy...
poniedziałek, 24 września 2012
czwartek, 6 września 2012
dwa źródła danych - kopiujemy załącznik w polu RichText
kopiujemy załącznik w polu RichText z jednego źródła danych do drugiego dokumentu w drugim zestawie danych
var jakaś zmienna:NotesDocument = źródło danych nr 1 .getDocument();
var pole:NotesRichTextItem = jakaś zmienna.getFirstItem('nazwa pola RichText z załącznikiem')
if (pole != null){docelowe źródło danych.getDocument().copyItem(pole,'nazwa pola RichText gdzie chcemy wkleić załącznik')}
var jakaś zmienna:NotesDocument = źródło danych nr 1 .getDocument();
var pole:NotesRichTextItem = jakaś zmienna.getFirstItem('nazwa pola RichText z załącznikiem')
if (pole != null){docelowe źródło danych.getDocument().copyItem(pole,'nazwa pola RichText gdzie chcemy wkleić załącznik')}
czwartek, 23 sierpnia 2012
Data
pobieramy z formularza typ data
var data:NotesDateTime = nasz_dokument.getItemValueDateTimeArray('nazwa pola w którym mamy datę').elementAt(0);
return data.getDateOnly()
czyli wyświetlamy tylko datę bez godziny
var data:NotesDateTime = nasz_dokument.getItemValueDateTimeArray('nazwa pola w którym mamy datę').elementAt(0);
return data.getDateOnly()
czyli wyświetlamy tylko datę bez godziny
piątek, 10 sierpnia 2012
pole MULTIVALUE - wartości w nowych liniach
umieszczamy na XPAGE element MultiLine Edit Box
jeśli powiążemy go z elementem DATASOURCE z formularza, który dopuszcza stosowanie MultiValue
możemy wejść w ALL PROPERTIES / BASICS / MULTIPLE SEPARATOR
i wstawić computed value na "\n"
co oznacza że każda nowa wartość będzie wyświetlana w nowej linii
jeśli powiążemy go z elementem DATASOURCE z formularza, który dopuszcza stosowanie MultiValue
możemy wejść w ALL PROPERTIES / BASICS / MULTIPLE SEPARATOR
i wstawić computed value na "\n"
co oznacza że każda nowa wartość będzie wyświetlana w nowej linii
wtorek, 7 sierpnia 2012
Typ pliku z komponentu FileDownload
jeśli mamy komponent FileDownload osadzony na XPAGE
możemy wyciągać dowolne informacje o pliku załączonym
na przykła jego nazwę, wielkość i typ itd
var fileDownload1:com.ibm.xsp.component.xp.XspFileDownload = getComponent("nazwa naszej kontrolki FileDownload");
x = fileDownload1.getTypeValue();
return x
możemy wyciągać dowolne informacje o pliku załączonym
na przykła jego nazwę, wielkość i typ itd
var fileDownload1:com.ibm.xsp.component.xp.XspFileDownload = getComponent("nazwa naszej kontrolki FileDownload");
x = fileDownload1.getTypeValue();
return x
piątek, 3 sierpnia 2012
ArrayAppend z poziomu XPAGEsów
w kodzie nie możemy użyć ArrayAppend w stosunku do pola MultiValue
wystarczy prosty myk
definiujemy tabelkę
potem robimy push na koniec tabeli
na koniec zapisujemy tabelkę do pola i już
var nazwa-naszej-tabelki = new Array(dokument.getItemValue("nazwa pola multivalue"));
nazwa-naszej-tabelki.push("nowa wartość dopisywana na końcu");
dokument.replaceItemValue('nazwa pola multivalue', nazwa-naszej-tabelki)
wystarczy prosty myk
definiujemy tabelkę
potem robimy push na koniec tabeli
na koniec zapisujemy tabelkę do pola i już
var nazwa-naszej-tabelki = new Array(dokument.getItemValue("nazwa pola multivalue"));
nazwa-naszej-tabelki.push("nowa wartość dopisywana na końcu");
dokument.replaceItemValue('nazwa pola multivalue', nazwa-naszej-tabelki)
czwartek, 2 sierpnia 2012
uruchamiamy agenta ze strony XPAGE
tym razem chcemy uruchomić agenta w bazie (nie zapominamy go podpisać z odpowiednimi uprawnieniami)
wykonujemy prostą akcję
var agent=database.getAgent(nazwa naszego agenta");
agent.run(currentDocument.getNoteID());
druga linijka jest bardzo ważna - agent musi być "podpięty" do dokumentu
samo agent.run() czy RunOnServer() nie zadziała
pojawiła się niezła opcja
agent.runWithDocumentContext()
o tym w następnym wpisie jak już potestuję
aha jeszcze jedno - sam agent nie może być typu SIMPLE ACTION
a w LotusScript -- typie agenta - zaznaczałem SELECT - NONE
wykonujemy prostą akcję
var agent=database.getAgent(nazwa naszego agenta");
agent.run(currentDocument.getNoteID());
druga linijka jest bardzo ważna - agent musi być "podpięty" do dokumentu
samo agent.run() czy RunOnServer() nie zadziała
pojawiła się niezła opcja
agent.runWithDocumentContext()
o tym w następnym wpisie jak już potestuję
aha jeszcze jedno - sam agent nie może być typu SIMPLE ACTION
a w LotusScript -- typie agenta - zaznaczałem SELECT - NONE
wtorek, 31 lipca 2012
ukrywamy dane
w zależności od wartości pola na wyświetlanym formularzu
wykorzystujemy opcję VISIBLE ukrywanego elementu
proszę pamiętać że opcja VISIBLE w rzeczywistości
włącza na danym obiekcie opcję render=false
czyli nie tylko nie widać samego elementu ale nie mamy do niego żadnego dostępu
if (currentDocument.getItemValueString('nazwa pola') == ""
(ewentualnie zamiast pustego stringa "" wstawiamy null ))
{false}
else
{true}
wykorzystujemy opcję VISIBLE ukrywanego elementu
proszę pamiętać że opcja VISIBLE w rzeczywistości
włącza na danym obiekcie opcję render=false
czyli nie tylko nie widać samego elementu ale nie mamy do niego żadnego dostępu
if (currentDocument.getItemValueString('nazwa pola') == ""
(ewentualnie zamiast pustego stringa "" wstawiamy null ))
{false}
else
{true}
czwartek, 26 lipca 2012
lista wartości do COMBOBOXa
jeśli chcemy mieć listę wartości do pola typu COMBOBOX
zabieraną z widoku z aktualnej bazy
poniżej kod
@Unique(@DbColumn(@DbName(),"tutaj wpisujemy nazwę bądź alias widoku",tutaj wpisujemy numer kolumny który chcemy wyświetlić (bez żadnych soecjanych znaków z cyklu " bądź ') np.: 1 ))
zabieraną z widoku z aktualnej bazy
poniżej kod
@Unique(@DbColumn(@DbName(),"tutaj wpisujemy nazwę bądź alias widoku",tutaj wpisujemy numer kolumny który chcemy wyświetlić (bez żadnych soecjanych znaków z cyklu " bądź ') np.: 1 ))
piątek, 18 maja 2012
Canonical URL tag
chcemy dodać
< link rel="canonical" href="adres strony" />
do naszego XPage
w All Properties Xpage
wchodzimy w sekscję Basic
dodajemy Resources
wybieramy typ Link Resource
i uzupełniamy rel (wpisujemy Canonical) oraz href
w samym kodzie XPage dostajemy poniższą składnię
< xp : linkResource rel="Canonical" href="http://nasza strona" > < / xp : linkResource>
< link rel="canonical" href="adres strony" />
do naszego XPage
w All Properties Xpage
wchodzimy w sekscję Basic
dodajemy Resources
wybieramy typ Link Resource
i uzupełniamy rel (wpisujemy Canonical) oraz href
w samym kodzie XPage dostajemy poniższą składnię
< xp : linkResource rel="Canonical" href="http://nasza strona" > < / xp : linkResource>
wtorek, 28 lutego 2012
Potrzebowałem nazwu pliku załączonego w polu RichText
poniżej zaklęcie - przeróbka tego co znalazłem w sieci
jest to przykład o ile mamy tylko jeden załącznik w polu RT
jeśli jest ich więcej - trzeba by zmontować pętelkę
dokument = database.getDocumentByUNID(@Text(Numer UNID dokumentu));
plik=dokument.getFirstItem('nazwa pola RT wkótym jest załącznik').getEmbeddedObjects().get(jeśli jeden załącznik to wpisujemy tu 0, albo kolejny numer z tym że to już pętlą trzebaby zaatwić).getName();
jest to przykład o ile mamy tylko jeden załącznik w polu RT
jeśli jest ich więcej - trzeba by zmontować pętelkę
dokument = database.getDocumentByUNID(@Text(Numer UNID dokumentu));
plik=dokument.getFirstItem('nazwa pola RT wkótym jest załącznik').getEmbeddedObjects().get(jeśli jeden załącznik to wpisujemy tu 0, albo kolejny numer z tym że to już pętlą trzebaby zaatwić).getName();
środa, 22 lutego 2012
@URLOpen
czyli proste przekierowanie na inne www - adres dowolny
facesContext.getExternalContext().redirect("http://gdzie_chcemy_polecieć.com.pl");
facesContext.getExternalContext().redirect("http://gdzie_chcemy_polecieć.com.pl");
wtorek, 21 lutego 2012
Wyślij email z linkiem do dokumentu
wypełniany formularz zgłoszeniowy na XPage - zapisywany jako response do głównego dokumentu
taki zwykły @ Send Mail z linkiem do dokumentu
poniżej kawałek tekstu
doc=currentDocument.getDocument();
docUNID=doc.getUniversalID(); //mamy UNID dokumentu
kto = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
firma = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
email = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
tel = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
tekst = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
link = @Text('notes://nazwa serwera /__REPLICA ID BAZY.nsf/0/'+docUNID+'?OpenDocument')
tresc = "nasza treść co sobie winszujemy"+@NewLine()+kto+@NewLine()+firma+@NewLine()+email+@NewLine()+tel+@NewLine()+tekst+@NewLine()+"Kliknij na odnośnik"+@NewLine()+link
var doc:NotesDocument = database.createDocument();
doc.replaceItemValue("form", "Memo");
doc.replaceItemValue("Principal", "Serwis Internetowy");
doc.replaceItemValue("sendTo", "tutaj do kogo ma iść email");
doc.replaceItemValue("subject", "tytuł - tutaj też można dowolnie dodawać pola wypełnione z formularza"+kto);
doc.replaceItemValue("body", tresc);
doc.send();
taki zwykły @ Send Mail z linkiem do dokumentu
poniżej kawałek tekstu
doc=currentDocument.getDocument();
docUNID=doc.getUniversalID(); //mamy UNID dokumentu
kto = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
firma = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
email = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
tel = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
tekst = @Text(currentDocument.getItemValue('pole wypełniane na formularzu xpage'))
link = @Text('notes://nazwa serwera /__REPLICA ID BAZY.nsf/0/'+docUNID+'?OpenDocument')
tresc = "nasza treść co sobie winszujemy"+@NewLine()+kto+@NewLine()+firma+@NewLine()+email+@NewLine()+tel+@NewLine()+tekst+@NewLine()+"Kliknij na odnośnik"+@NewLine()+link
var doc:NotesDocument = database.createDocument();
doc.replaceItemValue("form", "Memo");
doc.replaceItemValue("Principal", "Serwis Internetowy");
doc.replaceItemValue("sendTo", "tutaj do kogo ma iść email");
doc.replaceItemValue("subject", "tytuł - tutaj też można dowolnie dodawać pola wypełnione z formularza"+kto);
doc.replaceItemValue("body", tresc);
doc.send();
wtorek, 14 lutego 2012
nie chce ci się przerabiać składni HTMLa ?
jeśli nie chce ci się przeklejać składni HTMLa
przerabiać na składnię XPAGE
oczywiście bez przesady - kawałki kodu a nie całą stronę :D
najprościej i najszybciej
wklejamy computed field
ustawiamy content type na HTML
Value - ustawiamy Advanced
kolejno wklejamy kod
i już
przerabiać na składnię XPAGE
oczywiście bez przesady - kawałki kodu a nie całą stronę :D
najprościej i najszybciej
wklejamy computed field
ustawiamy content type na HTML
Value - ustawiamy Advanced
kolejno wklejamy kod
i już
środa, 25 stycznia 2012
Wklejka animacji FLASH
tym razem - życie wymaga wklejenia swf'a na Xpage
generalnie wklejamy ComputedField
w zakłądce VALUE
wybieramy ADVANCED
i wklejamy nasz kod
< e m b e d Src="/nasza baza.nsf/nasz baner czy co potrzeba.swf" quality="best" wmode="transparent" WIDTH="450" HEIGHT="180" NAME="name" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
EMBED zaspokoi nasze potrzeby zarówno dla IE jak i Firefoxa
i usuwamy w małych literach oczywiście spacje - jeśli wklejam na żywo kod - blogger usilnie stara się wykonać składnię HTMLa
pozdrawiam
generalnie wklejamy ComputedField
w zakłądce VALUE
wybieramy ADVANCED
i wklejamy nasz kod
< e m b e d Src="/nasza baza.nsf/nasz baner czy co potrzeba.swf" quality="best" wmode="transparent" WIDTH="450" HEIGHT="180" NAME="name" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
EMBED zaspokoi nasze potrzeby zarówno dla IE jak i Firefoxa
i usuwamy w małych literach oczywiście spacje - jeśli wklejam na żywo kod - blogger usilnie stara się wykonać składnię HTMLa
pozdrawiam
wtorek, 24 stycznia 2012
liczenie DocumentUniqueID
witam, rzecz dziś o ulubionym UNIDzie - czyli w normalnej składni Lotusa mamy @Text(@DocumentUniqueID) i już mamy policzony namiar na dokument
w XPage wygląda to nieco inaczej
na stronach można znaleźć rozwiązania gdzie obliczamy UNIDa
doc=currentDocument.getDocument(); docUNID=doc.getUniversalID();
oczywiście życie mocno komplikuje proste sprawy
na jednum z Xpage - mam kilka różnych źródeł danych
docelowo mam otwierane łącze do nowego dokumentu
- deklaracja - część danych wypełniana jest z już istniejących danych
- czyli
- dane osobowe klienta (imię, nazwisko, adres itd)
- dane polisy - numer, okres pokrycia
- 4 różne warianty tejże polisy - z róznymi składkami i ochroną (wybierany z combobox'a - wyświetlane też dla przejrzystości wybierającego)
do tego dorzucamy parę pól formularza - żeby mieć wszytkie potrzebne dane ale - niestety powyższy kod wylicza zły DocumentUniqueID
nawet jeśli podajemy według schematu
źródło_danych.currentDocument.getDocument().getID()
czy tym podobne
nie zdają egzaminu
jest wyjście z tej sytuacji
należy powiązać pole ze źródła danych ze zmienną systemową UID
nie znalazłem nigdzie dokumenatcji do tego
u mnie jest tak - miałem pole połączone
zakładka pola DATA potem SIMPLE DATA BINDING tutaj miałem wybierane z listy wyboru - DeklaracjaUNID (to nazwa pola gdzie chcę mieć UNIDa)
wystarczy wpisać z ręki UID !!
zamiast DeklaracjaUNID
i działa - liczy poprawny UNID dokumentu
poszedłem nawet krok dalej - wyremowałem kod obliczający Default value
I TEŻ LICZY POPRAWNIE
mam nadzieję że komuś się to przyda w walce z Xpages
w XPage wygląda to nieco inaczej
na stronach można znaleźć rozwiązania gdzie obliczamy UNIDa
doc=currentDocument.getDocument(); docUNID=doc.getUniversalID();
oczywiście życie mocno komplikuje proste sprawy
na jednum z Xpage - mam kilka różnych źródeł danych
docelowo mam otwierane łącze do nowego dokumentu
- deklaracja - część danych wypełniana jest z już istniejących danych
- czyli
- dane osobowe klienta (imię, nazwisko, adres itd)
- dane polisy - numer, okres pokrycia
- 4 różne warianty tejże polisy - z róznymi składkami i ochroną (wybierany z combobox'a - wyświetlane też dla przejrzystości wybierającego)
do tego dorzucamy parę pól formularza - żeby mieć wszytkie potrzebne dane ale - niestety powyższy kod wylicza zły DocumentUniqueID
nawet jeśli podajemy według schematu
źródło_danych.currentDocument.getDocument().getID()
czy tym podobne
nie zdają egzaminu
jest wyjście z tej sytuacji
należy powiązać pole ze źródła danych ze zmienną systemową UID
nie znalazłem nigdzie dokumenatcji do tego
u mnie jest tak - miałem pole połączone
zakładka pola DATA potem SIMPLE DATA BINDING tutaj miałem wybierane z listy wyboru - DeklaracjaUNID (to nazwa pola gdzie chcę mieć UNIDa)
wystarczy wpisać z ręki UID !!
zamiast DeklaracjaUNID
i działa - liczy poprawny UNID dokumentu
poszedłem nawet krok dalej - wyremowałem kod obliczający Default value
I TEŻ LICZY POPRAWNIE
mam nadzieję że komuś się to przyda w walce z Xpages
wtorek, 10 stycznia 2012
różne dokumenty w różnych trybach na jednym XPage
no własnie znalazłem rozwiązanie kolejnego problemu
jesli na jednej stronie XPage mamy
-tworzony nowy dokument
-do tego wklejamy inne dokumenty w ramach podglądu
- u mnie to były informacje o użytkowniku
- jeden dokument otwierany z CustomControl - gdzie jest powiązany z danymi - otwierany dokument o okreslonym ID
- wybierane opcje - grupą RadioButton - miał pokazywać zależnie od wybranej opcji 3 inne dokumenty (to jest kolejny CustomControl - z 4 łączami do dokumentu) - taki podgląd co konkretnie wybieramy
albo mamy działający podgląd ALBO działający nowy dokument - wtedy należy w dokumentach otwieranych (nie nowe) w AllProperties-Data-tutaj każde łącze do dokumentu - włączamy Ignore Request Parameters na TRUE
i mamy dokument w edycji jako nowy a inne zaznaczone w tej opcji są do wglądu
jesli na jednej stronie XPage mamy
-tworzony nowy dokument
-do tego wklejamy inne dokumenty w ramach podglądu
- u mnie to były informacje o użytkowniku
- jeden dokument otwierany z CustomControl - gdzie jest powiązany z danymi - otwierany dokument o okreslonym ID
- wybierane opcje - grupą RadioButton - miał pokazywać zależnie od wybranej opcji 3 inne dokumenty (to jest kolejny CustomControl - z 4 łączami do dokumentu) - taki podgląd co konkretnie wybieramy
albo mamy działający podgląd ALBO działający nowy dokument - wtedy należy w dokumentach otwieranych (nie nowe) w AllProperties-Data-tutaj każde łącze do dokumentu - włączamy Ignore Request Parameters na TRUE
i mamy dokument w edycji jako nowy a inne zaznaczone w tej opcji są do wglądu
Document Uniwersal ID
potrzebny nie raz i nie dwa
XPage mają swoje UID
które nija się nie mają do starych i lubianych lotusowskich
żeby obliczyć na starą modłę
wystarczy
doc=currentDocument.getDocument();
docUNID=doc.getUniversalID();
return docUNID
i już mamy UID aktualnego dokumentu
XPage mają swoje UID
które nija się nie mają do starych i lubianych lotusowskich
żeby obliczyć na starą modłę
wystarczy
doc=currentDocument.getDocument();
docUNID=doc.getUniversalID();
return docUNID
i już mamy UID aktualnego dokumentu
Subskrybuj:
Komentarze (Atom)