2012-10-02 9 views
6

Ho un controllo Data Tridion aggiunto a un'estensione GUI della pagina .aspx che ho creato.Selettore data Tridion - accesso agli eventi

ho aggiunto questo alla pagina ASPX con

<c:Date id="AdjustDate" runat="server" 
IsSeparateFields="false" AddClearButton="false" TabIndex="3"></c:Date> 

e nei miei .JS ho aggiunto quanto segue per

  1. Dammi un manico sul Data controllo Tridion (per selezionare i valori di data, ecc)

    c.AdjustDate = $ controls.getControl ($ ("# AdjustDate"), "Tridion.Controls.Date")

  2. cambiamenti di cattura in data (dopo l'utente seleziona OK nella modaldialog)

    $ evt.addEventHandler (c.AdjustDate, "cambiamento", this.getDelegate (this._onHighlightDateChange));

Catturo l'evento ed eseguo alcuni aggiornamenti in base alla data selezionata.

Tuttavia, la finestra di dialogo dell'estensione della GUI è più piccola in altezza rispetto a quando viene visualizzata la finestra di dialogo modale. Mi piacerebbe che ridimensioni la finestra di dialogo ASPX quando l'utente fa clic su Select Date e viene visualizzata la finestra di dialogo modale.

Ora ho catturato caso di l'utente fa clic sul pulsante Select Date

c.BtnDateSelect = $controls.getControl($("#AdjustDate_selectbutton"), 
"Tridion.Controls.Button"); 
$evt.addEventHandler(c.BtnDateSelect, "click", 
this.getDelegate(this._onDateButtonClicked)); 

Comunque - io non riesco ad accedere l'altezza della finestra risultante come non posso aggiungere eventi da legare in

  1. l'apertura della finestra di dialogo in sé
  2. l'utente fa clic su OK o Annulla (per regolare di nuovo l'altezza) o
  3. finestra bein modale g chiuso

Mi mancano eventi da collegare?

Ho cercato di creare una maniglia sul pulsante OK utilizzando

BtnDateOKSelect = 
$controls.getControl($("html#DatePickerPopup.popup body center div#buttonContainer div#ButtonOk.tridion"), 
"Tridion.Controls.Button"); 

ma il riferimento (e le variazioni di esso) di ritorno non definita - forse come questo è in un iframe modo lo script non può accedere vero?

Eventuali puntatori su come risolvere gli eventi in cui posso collegarmi? Come legare in quegli eventi (e quando)?

Grazie

+1

Non esageriamo con i tag: questo è ** o ** per Tridion 2009 ** o ** per Tridion 2011 e sembra essere il secondo. –

risposta

3

Non è possibile ridimensionare una finestra (modale) dopo che è stato aperto. Ho scritto un'estensione in cui avevo un problema simile, quando il mio selettore di date si trovava sopra la mia finestra di dialogo modale, Sembra strano, quindi ho reso più grande la mia selezione di finestre di dialogo.

Tuttavia non stavo usando un controllo di selezione data, ma un normale pulsante html.Ecco il codice:

Così ho pulsante Recupera e aggiungere il gestore di mostrare il selettore data:

c.BtnStartDate = $controls.getControl($("#startDate"), "Tridion.Controls.Button"); 
$evt.addEventHandler(c.BtnStartDate, "click", this.getDelegate(this._onStartDateButtonClicked)); 

Questo è il codice nell'evento:

SetDateRange$_onStartDateButtonClicked(event) {  
    this._setDate(event, "#startDate"); 

}; 

E la funzione setDate:

SetDateRange.prototype._setDate = function SetDateRange$_setDate(event, controlSelector) { 
    var p = this.properties; 
    var currentDate = new Date(); 
    var c = p.controls; 


    p.datePickerPopup = $popup.create(
     $cme.Popups.DATE_PICKER.URL, { 
      width: 550, 
      height: 350 
     }, 
     { 
      date: currentDate, 
      popupType: Tridion.Controls.Popup.Type.MODAL_IFRAME 
     } 
    ); 

    function SetDateRange$DatePicker$onPopupCanceled(event) { 
     if (p.datePickerPopup) { 
      p.datePickerPopup.dispose(); 
      p.datePickerPopup = null; 
     } 
    } 

    function SetDateRange$DatePicker$onPopupSubmitted(event) { 
     var value = event.data.date; 
     if (value) { 
      var value = new Date(value); 

      value = $localization.getFormattedDateTime(value, Tridion.Runtime.LocaleInfo.fullDateTimeFormat); 
      jQuery(controlSelector).trigger('setdate', [value]); 
     } 
     p.datePickerPopup.dispose(); 
     p.datePickerPopup = null; 
    } 

    $evt.addEventHandler(p.datePickerPopup, "unload", SetDateRange$DatePicker$onPopupCanceled); 
    $evt.addEventHandler(p.datePickerPopup, "submit", SetDateRange$DatePicker$onPopupSubmitted); 
    $evt.addEventHandler(p.datePickerPopup, "close", SetDateRange$DatePicker$onPopupCanceled); 

    p.datePickerPopup.open(); 
}; 

Ancora, potrebbe non essere la soluzione per il tuo scenario, ma questo esempio mostra come aprire il dat finestra di dialogo di selezione e utilizzare i valori restituiti, senza utilizzare il "Tridion Data Picker Control".

Spero che questo aiuti.

+0

È fantastico Jaime, grazie ... Ho pensato di simulare il mio pulsante e il campo della data e ora sono più convinto che questa sia la strada da percorrere. Grazie anche per l'esempio! –

Problemi correlati