poniedziałek, 24 września 2012

Walidacja pól po stronie serwera

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 ...

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')}

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


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

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

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)

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

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}

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 ))

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>

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();

środa, 22 lutego 2012

@URLOpen

czyli proste przekierowanie na inne www - adres dowolny

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();

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ż

ś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

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

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

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