Aspectos de las extensiones de la interfaz del frontend
Internacionalización
Sección titulada «Internacionalización»Registre nuevas traducciones desde la Consulta a la base de datos.
INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('extension', 'new_extension.button.add', 'Add', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('extension', 'new_extension.button.add', 'Añadir', 'es-ES');Utilícelo en su código:
GeneralComunicator.i18nExtension("new_extension.button.add");También se pueden utilizar las traducciones predeterminadas de OpenKM:
GeneralComunicator.i18n("button.close");Ejemplo
Sección titulada «Ejemplo»package com.openkm.extension.frontend.client;
import com.google.gwt.event.dom.client.ClickEvent;import com.google.gwt.event.dom.client.ClickHandler;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.ui.Image;import com.openkm.extension.frontend.client.util.OKMExtensionBundleExampleResources;import com.openkm.frontend.client.bean.GWTDocument;import com.openkm.frontend.client.bean.GWTMail;import com.openkm.frontend.client.bean.GWTNode;import com.openkm.frontend.client.bean.GWTRecord;import com.openkm.frontend.client.extension.event.HasLanguageEvent;import com.openkm.frontend.client.extension.event.HasLanguageEvent.LanguageEventConstant;import com.openkm.frontend.client.extension.event.handler.LanguageHandlerExtension;import com.openkm.frontend.client.extension.widget.toolbar.ToolBarButtonExtension;
public class ToolBarButtonExample {
ToolBarButton button; String title = "title"; String lang = "en-GB";
public ToolBarButtonExample() { button = new ToolBarButton(new Image(OKMExtensionBundleExampleResources.INSTANCE.box()), title, new ClickHandler() { @Override public void onClick(ClickEvent event) { Window.alert("make some operation"); } }); }
/** * ToolBarButtonExtension */ public ToolBarButtonExtension getButton() { return button; }
/** * ToolBarButton * * @author jllort */ private class ToolBarButton extends ToolBarButtonExtension implements LanguageHandlerExtension {
public ToolBarButton(Image image, String title, ClickHandler handler) { super(image, title, handler); }
@Override public void checkPermissions(GWTNode node, GWTNode nodeParent, int originPanel) { }
@Override public void checkPermissions(GWTDocument doc, GWTNode node) { }
@Override public void checkPermissions(GWTMail mail, GWTNode node) { }
@Override public void checkPermissions(GWTRecord record, GWTNode node) { }
@Override public void enable(boolean enable) { }
@Override public boolean isEnabled() { return false; }
@Override public void onChange(LanguageEventConstant event) { if (event.equals(HasLanguageEvent.LANGUAGE_CHANGED)) { Window.alert("language changed"); } } }}Registrar un servicio RPC (Remote Procedure Call)
Sección titulada «Registrar un servicio RPC (Remote Procedure Call)»Los servlets se utilizan para realizar RPC (llamadas a procedimientos remotos) de GWT. Para registrar un nuevo servlet, debe modificarse el fichero (web.xml) y recompilarse OpenKM.
La declaración del servlet debe añadirse en web.xml (src/main/webapp/WEB-INF):
<servlet> <servlet-name>SomeServletName</servlet-name> <servlet-class>SomeJavaClassName</servlet-class></servlet>
<servlet-mapping> <servlet-name>SomeServletName</servlet-name> <url-pattern>/SomeServletName</url-pattern></servlet-mapping>La clase RPCService define todas las constantes de servicio RPC que puede utilizar GWT:
ServiceDefTarget endPoint = (ServiceDefTarget) messageService;endPoint.setServiceEntryPoint(RPCService.MessageService);messageService.deleteSent(1, new AsyncCallback<Object>() { @Override public void onSuccess(Object result) { }
@Override public void onFailure(Throwable caught) { }});