2012-10-02 15 views
6

Tengo un control Tridion Date agregado a una extensión GUI .aspx página que he creado.Tridion Date Picker - acceso a eventos

He añadido esto a la página ASPX con

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

y en mis .JS He añadido lo siguiente a

  1. Dame una manija en la Fecha de control Tridion (para seleccionar los valores de fecha etc.)

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

  2. captar los cambios en la fecha (después de que el usuario selecciona Aceptar en el ModalDialog)

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

Capturo el evento y realizo algunas actualizaciones según la fecha seleccionada.

Sin embargo, mi cuadro de diálogo de extensión GUI es más pequeño en altura que cuando se muestra el cuadro de diálogo modal. Me gustaría para cambiar el tamaño de mi cuadro de diálogo ASPX cuando el usuario hace clic en Select Date y se presenta el cuadro de diálogo modal.

ahora haya capturado el caso de que el usuario haga clic en el botón Select Date

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

Sin embargo - Me parece que no puede acceder a la altura del cuadro de diálogo resultante, ya que no puedo añadir ningún evento para atar en

  1. la apertura del diálogo en sí
  2. el usuario hace clic en Aceptar o Cancelar (para ajustar la altura de nuevo) o
  3. la Bein diálogo modal g cerrado

¿Echo de menos eventos para enlazar?

He tratado de crear un identificador para el botón OK utilizando

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

pero la referencia (y variaciones de la misma) la devolución indefinida - posiblemente ya que esto es en un iframe por lo que el guión no puede acceder ¿eso?

¿Alguna sugerencia para averiguar en qué eventos puedo relacionarme? ¿Cómo relacionarse con esos eventos (y cuándo)?

Gracias

+1

No exageremos en las etiquetas: esto es ** o ** para Tridion 2009 ** o ** para Tridion 2011 y parece ser el último. –

Respuesta

3

No se puede cambiar el tamaño de un cuadro de diálogo (modal) después de haber sido abierta. Escribí una extensión en la que tenía un problema similar, cuando mi selector de fecha estaba sobre mi cuadro de diálogo modal, se ve raro, así que hice mi selector de fecha de diálogo más grande.

Sin embargo, no estaba usando un control de selector de fecha, sino un botón html regular.Aquí el código:

Así recupero botón y agregar el controlador para mostrar el selector de fechas:

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

Este es el código del evento:

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

}; 

Y la función 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(); 
}; 

Una vez más, puede que no sea la solución a su caso, pero este ejemplo muestra cómo abrir el dat e el cuadro de diálogo del selector y use los valores que devuelve, sin usar el "Control del selector de fecha Tridion".

Espero que esto ayude.

+0

Eso es genial Jaime gracias ... Consideré la posibilidad de simular mi propio botón y fecha de campo y ahora estoy más convencido de que este es el camino a seguir. ¡Gracias por el ejemplo también! –

Cuestiones relacionadas