Widget que muestra la jsp de selección de categorias de OpenCms (la misma pantalla que si seleccionamos en el menú /Relaciones/Asignar Categorias).
Para la instalación podemos seguir el siguiente manual de la wiki: http://www.opencms-wiki.org/Custom_Widgets
package com.saga.opencms.templatesaga.widget;
import java.util.List;
import java.util.Map;
import org.opencms.file.CmsObject;
import org.opencms.main.OpenCms;
import org.opencms.widgets.A_CmsSelectWidget;
import org.opencms.widgets.I_CmsWidget;
import org.opencms.widgets.I_CmsWidgetDialog;
import org.opencms.widgets.I_CmsWidgetParameter;
/**
* @author Saga nguillen
* @version 1.0
* Widget que genera un Select multiple con las categorias que existen definidas
* El recurso sera asignado a las categorias seleccionadas en el select
* En la configuración se puede marcar la ruta base.
*/
public class CmsMultiCategoryWidget extends A_CmsSelectWidget {
/** Indicates if used html code is a multi selection list or a list of checkboxes. */
private boolean m_asCheckBoxes;
/**
* Creates a new select widget.<p>
*/
public CmsMultiCategoryWidget() {
// empty constructor is required for class registration
super();
}
public CmsMultiCategoryWidget(List configuration) {
this(configuration, false);
}
public CmsMultiCategoryWidget(List configuration, boolean asCheckboxes) {
super(configuration);
m_asCheckBoxes = asCheckboxes;
}
public CmsMultiCategoryWidget(String configuration) {
super(configuration);
}
public void setEditorValue(
CmsObject cms,
Map formParameters,
I_CmsWidgetDialog widgetDialog,
I_CmsWidgetParameter param) {
}
public String getDialogWidget(CmsObject cms, I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) {
String id = param.getId();
StringBuffer result = new StringBuffer(16);
List options = parseSelectOptions(cms, widgetDialog, param);
result.append("<td class=\"xmlTd\">\r\n");
result.append("<script>\r\n");
result.append("function ShowWebSite(val){\r\n");
result.append("document.all.myFrame.src=val;\r\n");
result.append("document.all.myFrame.style.visibility=\"visible\";}\r\n");
result.append("function Button1_onclick() {\r\n");
String uri=OpenCms.getSystemInfo().getOpenCmsContext()+"/system/workplace/views/admin/admin-main.jsp";
result.append("var v = '"+uri+"?root=explorer&path=/categories&resource='+document.getElementsByName('resource')[0].value;\r\n");
result.append("ShowWebSite(v);}\r\n");
result.append("function ocultaCab() {\r\n");
result.append("document.all.myFrame.contentWindow.document. getElementById('screenH').style.position='absolute';\r\n");
result.append("document.all.myFrame.contentWindow.document. getElementById('screenH').style.top='-140px';");
result.append(" }\r\n");
result.append("</script>\r\n");
result.append("<iframe width=\"750\" height=\"500\" frameborder=\"0\" id=\"myFrame\" onLoad=\"ocultaCab();\" scrolling=\"auto\" ></iframe>");
result.append("<script>Button1_onclick();</script>");
result.append("</td>");
return result.toString();
}
public I_CmsWidget newInstance() {
return new CmsMultiCategoryWidget(getConfiguration());
}
}
Enlaces de interés
Noel Guillen - Saga Consulting