Tengo una ventana emergente modal que aparece cada vez que un editor intenta guardar un componente con algunos valores (un campo de fecha en el pasado en este caso).Anguila: ¿está actualizando el valor de un campo de una ventana emergente?
En esta ventana emergente le muestro al editor algunas opciones (muy similar al cuadro de diálogo predeterminado "Abrir elemento compartido") y un combo de botón Aceptar/Cancelar. En Cancelar disparo el evento "cancelar" y el editor vuelve a la pantalla de edición, todo bien aquí. En "OK", deseo cambiar el valor del campo para que coincida con el editor seleccionado, luego guardar.
Intenté utilizar un enfoque con FieldBuilder y la muestra Boris mencionada en this other topic pero no puedo acceder al campo desde el cuadro de diálogo emergente.
¿Alguna sugerencia sobre cómo puedo ir y modificar el xml del elemento (también podría ser una página) desde una ventana emergente modal?
EDIT: Código utilizado en getControlForFieldName
function getControlForFieldName(name) {
var fieldBuilder = $display.getView().properties.controls.fieldBuilder;
var fieldsContainer = fieldBuilder.properties.input;
var fieldsNode = fieldsContainer.getElement();
var fieldContainer = $dom.getFirstElementChild(fieldsNode);
while (fieldContainer) {
var labelNode = $dom.getFirstElementChild(fieldContainer);
var fieldNode = $dom.getNextElementSibling(labelNode);
var control = fieldNode.control;
if (control.getFieldName() == name) {
return control;
}
fieldContainer = $dom.getNextElementSibling(fieldContainer);
}
}
editar # 2
Tras el consejo de Frank, y algo de ayuda de Jaime & Frank fuera de línea, lo tengo para trabajar de la siguiente manera:
- La ventana emergente se llama desde una Extensión de comando (Guardar & Cerrar en mi caso)
- El command.js especifica un controlador de eventos que es llamada en "submit" (== bien se ha pulsado)
$evt.addEventHandler(p.dialogPopup, "submit",
this.getDelegate(this._onPopupSubmit));
En mi emergente estoy pasando el elemento seleccionado (que es una palabra clave de identificación) al controlador de eventos :
this.fireEvent("submit", { id: select.options[select.selectedIndex].value });
y ahora de nuevo en el controlador de eventos _onPopupSubmit(e)
acabo de leer e.data.id, carga esta palabra clave, obtener propiedades como identificador de & Título, y actualizar los metadatos del elemento utilizando item.setMetadata ("nueva metadatos con valores actualizados ").
simple :)
¿Puedes compartir el código que tienes en tu ventana emergente? Lo más probable es que te falte un 'padre' en alguna parte. –