Skip to content
Snippets Groups Projects
Commit 035b2205 authored by srosse's avatar srosse
Browse files

Merge OpenOLAT 12.3 to OpenOLAT default branch with 35738a2860fe7ceed37848a192c096de89b0d391

parents f500001b f1f54769
No related branches found
No related tags found
No related merge requests found
Showing
with 86 additions and 36 deletions
......@@ -31,7 +31,7 @@ import java.util.Date;
* @author patrickb
*
*/
public interface DateChooser extends TextElement{
public interface DateChooser extends TextElement {
/**
* @return the date or null if the value is not valid (parsed with
......@@ -62,5 +62,16 @@ public interface DateChooser extends TextElement{
public void setValidDateCheck(String errorKey);
public String getExampleDateString();
public DateChooser getDefaultValue();
/**
* Set an other date chooser as default value for this
* chooser.
*
* @param dateChooser A date chooser
*/
public void setDefaultValue(DateChooser dateChooser);
}
\ No newline at end of file
......@@ -42,8 +42,6 @@ import org.olat.core.util.ValidationStatus;
import org.olat.core.util.ValidationStatusImpl;
/**
* Description:<br>
* TODO: patrickb Class Description for JSDateChooser
* <P>
* Initial Date: 19.01.2007 <br>
*
......@@ -65,7 +63,9 @@ public class JSDateChooser extends TextElementImpl implements DateChooser {
private boolean dateChooserTimeEnabled;
private String forValidDateErrorKey;
private boolean checkForValidDate;
private int minute, hour;
private int minute;
private int hour;
private DateChooser defaultDateValue;
public JSDateChooser(String name, Locale locale) {
this(null, name, null, locale);
......@@ -111,6 +111,16 @@ public class JSDateChooser extends TextElementImpl implements DateChooser {
return dateComponent;
}
@Override
public DateChooser getDefaultValue() {
return defaultDateValue;
}
@Override
public void setDefaultValue(DateChooser dateChooser) {
defaultDateValue = dateChooser;
}
/**
* @see org.olat.core.gui.components.form.flexible.elements.AbstractTextElement#validate(java.util.List)
*/
......
......@@ -35,9 +35,6 @@ import org.olat.core.gui.render.ValidationResult;
import org.olat.core.gui.translator.Translator;
/**
* Description:<br>
* TODO: patrickb Class Description for JSDateChooserComponent
*
* <P>
* Initial Date: 19.01.2007 <br>
*
......@@ -45,7 +42,7 @@ import org.olat.core.gui.translator.Translator;
*/
class JSDateChooserComponent extends FormBaseComponentImpl {
private final static ComponentRenderer RENDERER = new JSDateChooserRenderer();
private static final ComponentRenderer RENDERER = new JSDateChooserRenderer();
private JSDateChooser element;
public JSDateChooserComponent(JSDateChooser element) {
......@@ -104,4 +101,8 @@ class JSDateChooserComponent extends FormBaseComponentImpl {
public String getExampleDateString() {
return element.getExampleDateString();
}
public JSDateChooser getFormItem() {
return element;
}
}
......@@ -40,8 +40,6 @@ import org.olat.core.gui.translator.Translator;
import org.olat.core.util.Util;
/**
* Description:<br>
* TODO: patrickb Class Description for JSDateChooserRenderer
* <P>
* Initial Date: 19.01.2007 <br>
*
......@@ -87,7 +85,7 @@ class JSDateChooserRenderer extends DefaultComponentRenderer {
.append("></i></span>")
.append("</div></div>");//input-group
// date chooser javascript
sb.append("<script type=\"text/javascript\">\n /* <![CDATA[ */ \n")
sb.append("<script>\n /* <![CDATA[ */ \n")
.append("jQuery(function(){ jQuery('#").append(receiverId).append("').datepicker({\n")
.append(" dateFormat:'").append(format).append("',\n")
.append(" firstDay:1,\n")
......@@ -114,11 +112,18 @@ class JSDateChooserRenderer extends DefaultComponentRenderer {
.append("'").append(dateTranslator.translate("day.short.fr")).append("',")
.append("'").append(dateTranslator.translate("day.short.sa")).append("'")
.append("],\n")
.append(" showOtherMonths:true,\n")
.append(" onSelect:function(){\n")
.append(" setFlexiFormDirty('").append(te.getRootForm().getDispatchFieldId()).append("');\n")
.append(" jQuery(this).change();\n")
.append(" }\n")
.append(" showOtherMonths:true,\n");
if(jsdcc.getFormItem().getDefaultValue() != null) {
String id = ((JSDateChooser)jsdcc.getFormItem().getDefaultValue()).getTextElementComponent().getFormDispatchId();
sb.append(" beforeShow:function(el, inst) {\n")
.append(" var defDate = jQuery('#").append(id).append("').datepicker('getDate');\n")
.append(" jQuery('#").append(receiverId).append("').datepicker('option', 'defaultDate', defDate);")
.append(" },\n");
}
sb.append(" onSelect:function(){\n")
.append(" setFlexiFormDirty('").append(te.getRootForm().getDispatchFieldId()).append("');\n")
.append(" jQuery(this).change();\n")
.append(" }\n")
.append("})});")
.append("\n/* ]]> */ \n</script>");
......
......@@ -35,11 +35,9 @@ import org.olat.core.util.vfs.NamedContainerImpl;
import org.olat.core.util.vfs.Quota;
import org.olat.core.util.vfs.QuotaManager;
import org.olat.core.util.vfs.VFSContainer;
import org.olat.core.util.vfs.VFSItem;
import org.olat.core.util.vfs.VFSManager;
import org.olat.core.util.vfs.callbacks.ReadOnlyCallback;
import org.olat.core.util.vfs.callbacks.VFSSecurityCallback;
import org.olat.core.util.vfs.filters.VFSItemFilter;
import org.olat.course.config.CourseConfig;
import org.olat.course.nodes.BCCourseNode;
import org.olat.course.nodes.CourseNode;
......@@ -308,7 +306,7 @@ public class MergedCourseContainer extends MergeSource {
// , then do recursion for all children ...
addFoldersForAdmin(course, courseNodeContainer, child);
// ... but only add this container if it contains any children with at least one BC course node
if (courseNodeContainer.getItems().size() > 0) {
if (!courseNodeContainer.getItems().isEmpty()) {
nodesContainer.addContainer(courseNodeContainer);
}
}
......@@ -325,12 +323,7 @@ public class MergedCourseContainer extends MergeSource {
*/
private String getFolderName(MergeSource nodesContainer, CourseNode bcNode, String folderName) {
// add node ident if multiple files have same name
if (nodesContainer.getItems(new VFSItemFilter() {
@Override
public boolean accept(VFSItem vfsItem) {
return (bcNode.getShortTitle().equals(RequestUtil.normalizeFilename(bcNode.getShortTitle())));
}
}).size() > 0) {
if (!nodesContainer.getItems(vfsItem -> vfsItem.getName().equals(RequestUtil.normalizeFilename(bcNode.getShortTitle()))).isEmpty()) {
folderName = folderName + " (" + bcNode.getIdent() + ")";
}
return folderName;
......
......@@ -196,6 +196,7 @@ public class AssessmentModeEditController extends FormBasicController {
endEl = uifactory.addDateChooser("mode.end", assessmentMode.getEnd(), formLayout);
endEl.setElementCssClass("o_sel_assessment_mode_end");
endEl.setDateChooserTimeEnabled(true);
endEl.setDefaultValue(beginEl);
endEl.setMandatory(true);
endEl.setEnabled(status != Status.end);
......@@ -606,7 +607,7 @@ public class AssessmentModeEditController extends FormBasicController {
//update groups
if(groupKeys.isEmpty()) {
if(assessmentMode.getGroups().size() > 0) {
if(!assessmentMode.getGroups().isEmpty()) {
assessmentMode.getGroups().clear();
}
} else {
......@@ -631,7 +632,7 @@ public class AssessmentModeEditController extends FormBasicController {
//update areas
if(areaKeys.isEmpty()) {
if(assessmentMode.getAreas().size() > 0) {
if(!assessmentMode.getAreas().isEmpty()) {
assessmentMode.getAreas().clear();
}
} else {
......
......@@ -696,9 +696,9 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements
Boolean passed = null;
if(cutValue != null) {
boolean aboveCutValue = score >= cutValue.floatValue();
passed = new Boolean(aboveCutValue);
passed = Boolean.valueOf(aboveCutValue);
}
ScoreEvaluation sceval = new ScoreEvaluation(new Float(score), passed);
ScoreEvaluation sceval = new ScoreEvaluation(Float.valueOf(score), passed);
AssessmentManager am = assessedUserCourseEnv.getCourseEnvironment().getAssessmentManager();
am.saveScoreEvaluation(this, identity, assessedIdentity, sceval, assessedUserCourseEnv, false, by);
......
......@@ -38,6 +38,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent;
import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.ControllerEventListener;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.generic.dtabs.Activateable2;
import org.olat.core.id.OLATResourceable;
......@@ -138,7 +139,7 @@ public class CheckListRunController extends FormBasicController implements Contr
boolean readOnly = isReadOnly();
if(formLayout instanceof FormLayoutContainer) {
FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout;
layoutCont.contextPut("readOnly", new Boolean(readOnly));
layoutCont.contextPut("readOnly", Boolean.valueOf(readOnly));
if(dueDate != null) {
layoutCont.contextPut("dueDate", dueDate);
layoutCont.contextPut("in-due-date", isPanelOpen(ureq, "due-date", true));
......@@ -290,7 +291,9 @@ public class CheckListRunController extends FormBasicController implements Contr
CheckboxWrapper wrapper = (CheckboxWrapper)boxEl.getUserObject();
if(wrapper != null) {
boolean checked = boxEl.isAtLeastSelected(1);
doCheck(ureq, wrapper, checked);
if(doCheck(ureq, wrapper, checked)) {
fireEvent(ureq, Event.CHANGED_EVENT);
}
}
} else if("ONCLICK".equals(event.getCommand())) {
String cmd = ureq.getParameter("fcid");
......@@ -302,7 +305,7 @@ public class CheckListRunController extends FormBasicController implements Contr
super.formInnerEvent(ureq, source, event);
}
private void doCheck(UserRequest ureq, CheckboxWrapper wrapper, boolean checked) {
private boolean doCheck(UserRequest ureq, CheckboxWrapper wrapper, boolean checked) {
DBCheckbox theOne;
if(wrapper.getDbCheckbox() == null) {
String uuid = wrapper.getCheckbox().getCheckboxId();
......@@ -311,6 +314,7 @@ public class CheckListRunController extends FormBasicController implements Contr
theOne = wrapper.getDbCheckbox();
}
boolean grantPoints = false;
if(theOne == null) {
//only warning because this happen in course preview
logWarn("A checkbox is missing: " + courseOres + " / " + courseNode.getIdent(), null);
......@@ -321,17 +325,23 @@ public class CheckListRunController extends FormBasicController implements Contr
} else {
score = 0f;
}
checkboxManager.check(theOne, getIdentity(), score, new Boolean(checked));
if(wrapper.getCheckbox().getPoints() != null) {
grantPoints = true;
}
checkboxManager.check(theOne, getIdentity(), score, Boolean.valueOf(checked));
//make sure all results is on the database before calculating some scores
//manager commit already DBFactory.getInstance().commit();
//manager commit already
courseNode.updateScoreEvaluation(getIdentity(), userCourseEnv, getIdentity(), Role.user);
Checkbox checkbox = wrapper.getCheckbox();
logUpdateCheck(checkbox.getCheckboxId(), checkbox.getTitle());
}
exposeUserDataToVC(ureq, flc);
return grantPoints;
}
private void logUpdateCheck(String checkboxId, String boxTitle) {
......@@ -353,9 +363,9 @@ public class CheckListRunController extends FormBasicController implements Contr
private void saveOpenPanel(UserRequest ureq, String panelId, boolean newValue) {
Preferences guiPrefs = ureq.getUserSession().getGuiPreferences();
if (guiPrefs != null) {
guiPrefs.putAndSave(CheckListRunController.class, getOpenPanelId(panelId), new Boolean(newValue));
guiPrefs.putAndSave(CheckListRunController.class, getOpenPanelId(panelId), Boolean.valueOf(newValue));
}
flc.getFormItemComponent().contextPut("in-" + panelId, new Boolean(newValue));
flc.getFormItemComponent().contextPut("in-" + panelId, Boolean.valueOf(newValue));
}
private String getOpenPanelId(String panelId) {
......
......@@ -27,6 +27,7 @@ import org.olat.core.gui.components.segmentedview.SegmentViewComponent;
import org.olat.core.gui.components.segmentedview.SegmentViewEvent;
import org.olat.core.gui.components.segmentedview.SegmentViewFactory;
import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
......@@ -96,6 +97,16 @@ public class CheckListRunForCoachController extends BasicController {
}
}
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if(runController == source) {
if(event == Event.CHANGED_EVENT) {
fireEvent(ureq, event);
}
}
super.event(ureq, source, event);
}
private void doOpenRun(UserRequest ureq) {
if(runController == null) {
runController = new CheckListRunController(ureq, getWindowControl(), userCourseEnv, courseOres, courseNode);
......
......@@ -11,3 +11,11 @@
#end
</div>
$r.render("table")
<div class="o_button_group">
#if($r.available("bulk.done"))
$r.render("bulk.done")
#end
#if($r.available("bulk.visible"))
$r.render("bulk.visible")
#end
</div>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment