2012-03-15 6 views
7

Próbuję użyć kontrolki xe: calendarView w aplikacji rzeczywistego świata. Do tej pory mogę odczytać dane z widoku i wyświetlić je w kalendarzu, co było łatwe.Czy ktoś używa kontrolki xe: calendarView w ExtLib? Jeśli tak, jak działają te zdarzenia?

Ale teraz chcę otworzyć wpis podwójnym lub pojedynczym kliknięciem, lub chcę zmienić datę wpisu, przeciągając kropkę &. W tym celu kontrola ma zdarzenia takie jak "onOpenEntry", gdzie mogę napisać SSJS. Ale Utknąłem tutaj:

  • W takim razie, w jaki sposób mogę uzyskać UNID dokumentu na którym zdarzenie zostało wygenerowane? "ten" jest obiektem com.ibm.xsp.extlib.dwa.component.calendar.UICalendarView. Znalazłem kod źródłowy dla tej klasy, ale nie widzę żadnego sposobu na uzyskanie dostępu do dokumentu, który powinien zostać otwarty.

  • Co więcej, zdarzenie "onOpenEntry" jest uruchamiane tylko raz podczas ładowania kontrolki. Po tym nie uruchamia się po kliknięciu lub kliknięciu dwukrotnym.

Dla mnie wygląda na to, że te zdarzenia nie zostały w pełni zaimplementowane ... aw bazie danych demo ExtLib również nie są używane. Czy ktoś wie, jak to działa? Dzięki!

+1

Zamiast pliku XPagesExt.nsf należy zapoznać się z szablonem TeamRoom XL oraz sposobem zarządzania i obsługi zdarzeń kalendarza w tym miejscu? –

Odpowiedz

2

Możesz powiązać wydarzenie z pozycją kalendarza za pomocą dojo lub jquery. Znalazłem poniższy kod dla wpisu zawierającego unid.

więc powinieneś być w stanie zrobić somthing jak ten

  1. znaleźć identyfikator .... calendarView1-entry0
  2. uzyskać UNID atrybut
  3. Bind id do zdarzenia chcesz i zrobić wyskakujące okienko lub cokolwiek innego.

    <div id="home:_id1:dynC:_id556:calendarView1-entry0" class="s-cv-entry" calendar_type="Meeting" unid="723C2A5387AA7994C12579B30056D07E" calendar_date="20120622" calendar_index="0" calendar_start="20120622T000000,00$Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZN=Western/Central Europe" calendar_end="20120622T010000,00$Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZN=Western/Central Europe" calendar_start_notes="20120621T220000Z" calendar_bgcolor1="#C1DDF9" calendar_bgcolor2="#5495D5" calendar_fontcolor="undefined" calendar_bordercolor="undefined" calendar_external="0" onmouseover="dwa.cv.calendarView.prototype.cvHandler(event,this,'home:_id1:dynC:_id556:calendarView1');" onmouseout="dwa.cv.calendarView.prototype.cvHandler(event,this,'home:_id1:dynC:_id556:calendarView1');" onclick="dwa.cv.calendarView.prototype.cvHandler(event,this,'home:_id1:dynC:_id556:calendarView1');" ondblclick="dwa.cv.calendarView.prototype.cvHandler(event,this,'home:_id1:dynC:_id556:calendarView1');" oncontextmenu="dwa.cv.calendarView.prototype.cvHandler(event,this,'home:_id1:dynC:_id556:calendarView1');" style="top: 0px; left: 504px; width: 114px; height: 48px; "><canvas id="home:_id1:dynC:_id556:calendarView1-entry0-gradient" class="s-cv-entry" style="top:0px;left:0px;width:100%;height:100%;" color2="#C1DDF9" color="#5495D5" width="114" height="48"></canvas><div tabindex="0" class="s-cv-entry-innerframe s-cv-entry-innerframe-height s-cv-text" unselectable="on" aria-describedby="home:_id1:dynC:_id556:calendarView1-entry0-target" aria-haspopup="true" role="menu" style="top:0px;left:0px;width:100%;color:undefined;white-space: nowrap;" com_ibm_dwa_ui_draggable_redirect="home:_id1:dynC:_id556:calendarView1"><img alt="Meeting" src="/xsp/.ibmxspres/.dwa/common/images/transparent.gif" width="13" height="11" style="border-width:0px;background-position: -0px -0px; background-image: url(/xsp/.ibmxspres/.dwa/common/images/colicon1.gif);">&nbsp;Midsommar<br>8clfux40</div> 
    
4

XE: kontrola kalendarz opiera się na poglądzie iNotes kalendarzowego. W rezultacie zdarzenia uruchamiają tylko JavaScript po stronie klienta, a nie po stronie serwera JavaScript. Używając składni # {javascript: ...} możesz przekazać oceniany SSJS, np.

#{javascript:(userBean.accessLevel >= lotus.domino.ACL.LEVEL_AUTHOR) && userBean.canDeleteDocs} 

Spowoduje to sprawdzenie, czy użytkownik ma przynajmniej uprawnienia dostępu do bazy danych i uprawnienia do usuwania. Podobnie można użyć następującego kodu, aby uzyskać pełny URL bieżącej strony manipulować przy tworzeniu nowego adresu URL przekierować do:

var path = #{javascript:"\"" + @FullUrl('/') + "\""}; 

pamiętać, że po stronie serwera JavaScript zostanie oceniona, gdy funkcja jest zapisane w XPage, a nie po kliknięciu przycisku.

Możesz otrzymać unid używając (jako JavaScript strony po stronie klienta, nie po stronie serwera JavaScript) pozycji [0] .unid.

Zobacz kalendarz Wyświetl niestandardową kontrolę w szablonie Teamroom, który jest dostarczany z pakietem uaktualnień 1 lub biblioteką rozszerzeń, aby uzyskać więcej szczegółowych informacji.

Powiązane problemy