/** * OLAT - Online Learning and Training<br> * http://www.olat.org * <p> * Licensed under the Apache License, Version 2.0 (the "License"); <br> * you may not use this file except in compliance with the License.<br> * You may obtain a copy of the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing,<br> * software distributed under the License is distributed on an "AS IS" BASIS, <br> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> * See the License for the specific language governing permissions and <br> * limitations under the License. * <p> * Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> * University of Zurich, Switzerland. * <hr> * <a href="http://www.openolat.org"> * OpenOLAT - Online Learning and Training</a><br> * This file has been modified by the OpenOLAT community. Changes are licensed * under the Apache 2.0 license as the original file. * <p> */ package org.olat.core.gui.components.choice; import org.apache.commons.lang.StringEscapeUtils; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.DefaultComponentRenderer; import org.olat.core.gui.control.winmgr.AJAXFlags; import org.olat.core.gui.render.RenderResult; import org.olat.core.gui.render.Renderer; import org.olat.core.gui.render.StringOutput; import org.olat.core.gui.render.URLBuilder; import org.olat.core.gui.translator.Translator; /** * Initial Date: Feb 2, 2004 A <b>ChoiceRenderer </b> is * * @author Felix Jost */ public class ChoiceRenderer extends DefaultComponentRenderer { /** * @see org.olat.core.gui.render.ui.ComponentRenderer#render(org.olat.core.gui.render.Renderer, * org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component, * org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator, * org.olat.core.gui.render.RenderResult, java.lang.String[]) */ @Override public void render(Renderer renderer, StringOutput target, Component source, URLBuilder ubu, Translator translator, RenderResult renderResult, String[] args) { // Get the model object Choice choice = (Choice) source; ChoiceModel model = choice.getModel(); boolean iframePostEnabled = renderer.getGlobalSettings().getAjaxFlags().isIframePostEnabled(); // form header String id = choice.getComponentName() + "_" + choice.hashCode(); target.append("<form method=\"post\" name=\"").append(id).append("\" id=\"").append(id).append("\" action=\""); ubu.buildURI(target, null, null, iframePostEnabled? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL); target.append("\""); if (iframePostEnabled) { target.append(" onsubmit=\"o_XHRSubmit('").append(id).append("')\""); } if (choice.getElementCssClass() != null) { target.append(" class=\"").append(choice.getElementCssClass()).append("\""); } target.append("><input type='hidden' id='o_mai_").append(id).append("' name='multi_action_identifier' value='' />"); target.append("<table class=\"o_choice\">"); int rows = model.getRowCount(); for (int i = 0; i < rows; i++) { Boolean val = model.isEnabled(i); boolean selected = val == null ? false : val.booleanValue(); boolean disabled = model.isDisabled(i); String keyN = "c" + i; target.append("<tr><td class='o_choice_checkrow'><input type='checkbox' class='o_checkbox'") .append(" checked='checked'", selected) .append(" disabled='disabled'", disabled) .append(" name='").append(keyN).append("' onchange=\"return setFormDirty('").append(id).append("')\" />") .append("</td>"); String label = model.getLabel(i); target.append("<td class='o_choice_textrow'>"); if(choice.isEscapeHtml()) { target.append(StringEscapeUtils.escapeHtml(label)); } else { target.append(label); } target.append("</td></tr>"); } // Toggle all on/off target.append("<tr><td colspan='2' class=\"o_togglecheck\">") .append("<div class=\"o_togglecheck o_block_top\">") .append("<a href=\"#\" onclick=\"javascript:o_choice_toggleCheck('" + id + "', true)\">") .append("<i class='o_icon o_icon_fw o_icon_checkbox_checked'></i> ") .append(translator.translate("checkall")) .append("</a> <a href=\"#\" onclick=\"javascript:o_choice_toggleCheck('" + id + "', false)\">") .append("<i class='o_icon o_icon_fw o_icon_checkbox'></i> ") .append(translator.translate("uncheckall")) .append("</a></div></td></tr>"); //buttons target.append("<tr><td colspan='2'><div class='btn-group btn-group-xs o_block_top'>"); // Submit button target.append("<button type='button' class='btn btn-primary'") .append(" onclick=\"o_TableMultiActionEvent('").append(id).append("','olat_fosm');\"><span>") .append(StringEscapeUtils.escapeHtml(translator.translate(choice.getSubmitKey()))).append("</span></button>"); //Reset button String resetKey = choice.getResetKey(); if (resetKey != null) { target.append("<button type='button' class='btn btn-default'") .append(" onclick=\"o_TableMultiActionEvent('").append(id).append("','").append(Choice.RESET_IDENTIFICATION).append("');\"><span>") .append(StringEscapeUtils.escapeHtml(translator.translate(resetKey))).append("</span></button>"); } // Cancel button String cancelKey = choice.getCancelKey(); if (cancelKey != null) { target.append("<button type='button' class='btn btn-default'") .append(" onclick=\"o_TableMultiActionEvent('").append(id).append("','").append(Choice.CANCEL_IDENTIFICATION).append("');\"><span>") .append(StringEscapeUtils.escapeHtml(translator.translate(cancelKey))).append("</span></button>"); } target.append("</div></td></tr></table></form>"); } }