use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class FileElementImpl method evalFormRequest.
@Override
public void evalFormRequest(UserRequest ureq) {
Form form = getRootForm();
String dispatchuri = form.getRequestParameter("dispatchuri");
if (dispatchuri != null && dispatchuri.equals(component.getFormDispatchId())) {
if ("delete".equals(form.getRequestParameter("delete"))) {
if (isConfirmDelete()) {
doConfirmDelete(ureq);
} else {
getRootForm().fireFormEvent(ureq, new FileElementEvent(FileElementEvent.DELETE, this, FormEvent.ONCLICK));
}
}
}
Set<String> keys = form.getRequestMultipartFilesSet();
if (keys.size() > 0 && keys.contains(component.getFormDispatchId())) {
// Remove old files first
if (tempUploadFile != null && tempUploadFile.exists()) {
tempUploadFile.delete();
}
// Move file from a temporary request scope location to a location
// with a
// temporary form item scope. The file must be moved later using the
// moveUploadFileTo() method to the final destination.
tempUploadFile = new File(WebappHelper.getTmpDir(), CodeHelper.getUniqueID());
File tmpRequestFile = form.getRequestMultipartFile(component.getFormDispatchId());
// Move file to internal temp location
boolean success = tmpRequestFile.renameTo(tempUploadFile);
if (!success) {
// try to move file by copying it, command above might fail
// when source and target are on different volumes
FileUtils.copyFileToFile(tmpRequestFile, tempUploadFile, true);
}
uploadFilename = form.getRequestMultipartFileName(component.getFormDispatchId());
// prevent an issue with Firefox
uploadFilename = FileUtils.normalizeFilenameWithSuffix(uploadFilename);
// use mime-type from file name to have deterministic mime types
uploadMimeType = WebappHelper.getMimeType(uploadFilename);
if (uploadMimeType == null) {
// use browser mime type as fallback if unknown
uploadMimeType = form.getRequestMultipartFileMimeType(component.getFormDispatchId());
}
if (uploadMimeType == null) {
// use application fallback for worst case
uploadMimeType = "application/octet-stream";
}
if (previewEl != null && uploadMimeType != null && (uploadMimeType.startsWith("image/") || uploadMimeType.startsWith("video/"))) {
VFSLeaf media = new LocalFileImpl(tempUploadFile);
previewEl.setMedia(media, uploadMimeType);
previewEl.setCropSelectionEnabled(cropSelectionEnabled);
previewEl.setMaxWithAndHeightToFitWithin(300, 200);
previewEl.setVisible(true);
} else if (previewEl != null) {
previewEl.setVisible(false);
}
// Mark associated component dirty, that it gets rerendered
component.setDirty(true);
}
}
use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class AssessmentTestComponentRenderer method renderSectionRubrics.
private void renderSectionRubrics(AssessmentRenderer renderer, StringOutput sb, AssessmentTestComponent component, TestPlanNode itemRefNode, URLBuilder ubu, Translator translator) {
boolean writeRubrics = false;
boolean writeTitles = false;
List<AssessmentSection> sectionParentLine = new ArrayList<>();
for (TestPlanNode parentNode = itemRefNode.getParent(); parentNode.getParent() != null; parentNode = parentNode.getParent()) {
AssessmentSection selectedSection = component.getAssessmentSection(parentNode.getIdentifier());
if (selectedSection != null && selectedSection.getVisible()) {
sectionParentLine.add(selectedSection);
if (selectedSection.getRubricBlocks().size() > 0) {
for (RubricBlock rubric : selectedSection.getRubricBlocks()) {
if (rubric.getBlocks().size() > 0) {
writeRubrics = true;
}
}
}
if (StringHelper.containsNonWhitespace(selectedSection.getTitle())) {
writeTitles = true;
}
}
}
if (writeRubrics) {
boolean show = true;
for (int i = sectionParentLine.size(); i-- > 0; ) {
AssessmentSection selectedSection = sectionParentLine.get(i);
if (component.getCandidateSessionContext().isRubricHidden(selectedSection.getIdentifier())) {
show = false;
}
}
String key = sectionParentLine.get(0).getIdentifier().toString();
Form form = component.getQtiItem().getRootForm();
String dispatchId = component.getQtiItem().getFormDispatchId();
sb.append("<a href='javascript:;' onclick=\"").append(FormJSHelper.getXHRNFFnCallFor(form, dispatchId, 1, new NameValuePair("cid", Event.rubric.name()), new NameValuePair("section", key))).append("; return false;\" class='o_toogle_rubrics translated'><i class='o_icon o_icon-fw ");
if (show) {
sb.append("o_icon_close_togglebox'> </i> <span>").append(translator.translate("hide.rubric"));
} else {
sb.append("o_icon_open_togglebox'> </i> <span>").append(translator.translate("show.rubric"));
}
sb.append("</span></a>");
sb.append("<div class='o_info o_assessmentsection_rubrics clearfix");
if (show) {
sb.append(" o_show");
} else {
sb.append(" o_hide");
}
sb.append("'>");
// write the titles first
if (writeTitles) {
sb.append("<h4>");
for (int i = 0; i < sectionParentLine.size(); i++) {
if (i == 1) {
sb.append("<small>");
} else if (i > 1) {
sb.append(" / ");
}
sb.append(sectionParentLine.get(i).getTitle());
}
if (sectionParentLine.size() > 1) {
sb.append("</small>");
}
sb.append("</h4>");
}
for (int i = sectionParentLine.size(); i-- > 0; ) {
AssessmentSection selectedSection = sectionParentLine.get(i);
for (RubricBlock rubricBlock : selectedSection.getRubricBlocks()) {
// @view (candidate)
sb.append("<div class='rubric'>");
rubricBlock.getBlocks().forEach(block -> renderBlock(renderer, sb, component, null, null, block, ubu, translator));
sb.append("</div>");
}
}
sb.append("<a href='javascript:;' onclick=\"").append(FormJSHelper.getXHRNFFnCallFor(form, dispatchId, 1, new NameValuePair("cid", Event.rubric.name()), new NameValuePair("section", key))).append("; return false;\" class='o_toogle_rubrics o_hide'><span>").append(translator.translate("hide.rubric.short")).append("</span></a>");
// script to show/hide the rubrics with the translated linked
sb.append("<script type=\"text/javascript\">\n").append("/* <![CDATA[ */ \n").append("jQuery(function() {\n").append(" jQuery('.o_toogle_rubrics').on('click', function() {\n").append(" jQuery('.o_assessmentsection_rubrics').each(function(index, el) {\n").append(" var current = jQuery(el).attr('class');\n").append(" if(current.indexOf('o_hide') >= 0) {\n").append(" jQuery(el).removeClass('o_hide').addClass('o_show');\n").append(" jQuery('a.o_toogle_rubrics.translated i').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox');\n").append(" jQuery('a.o_toogle_rubrics.translated span').html('").append(translator.translate("hide.rubric")).append("');").append(" } else {\n").append(" jQuery(el).removeClass('o_show').addClass('o_hide');\n").append(" jQuery('a.o_toogle_rubrics.translated i').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox');\n").append(" jQuery('a.o_toogle_rubrics.translated span').html('").append(translator.translate("show.rubric")).append("');").append(" }\n").append(" });").append(" });").append("});\n /* ]]> */").append("</script>").append("</div>");
}
}
use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class AssessmentTimerComponentRenderer method render.
@Override
public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderResult renderResult, String[] args) {
AssessmentTimerComponent cmp = (AssessmentTimerComponent) source;
QtiWorksStatus qtiWorksStatus = cmp.getQtiWorksStatus();
if (qtiWorksStatus.isAssessmentTestTimeLimit() && !qtiWorksStatus.isEnded()) {
AssessmentTimerFormItem atf = cmp.getFormItem();
AssessmentObjectFormItem qtiRun = atf.getQtiRun();
Form form = atf.getRootForm();
sb.append("<div id='o_c").append(cmp.getDispatchID()).append("'><div id='o_qti_assessment_test_timer' class='clearfix'><i class='o_icon o_icon_timelimit'> </i> ");
String[] attrs = new String[] { "<span class='o_qti_timer'></span>", "<span class='o_qti_timer_duration'></span>", qtiWorksStatus.getAssessmentTestEndTime() };
sb.append(translator.translate("timelimit.running", attrs)).append("<span class='o_qti_times_up' style='display:none;'>").append(translator.translate("timelimit.finished")).append("</span>").append("<span class='o_qti_times_message o_10_minutes' style='display:none;'><i class='o_icon o_icon_timelimit_start'> </i> ").append(translator.translate("timelimit.10.minutes")).append("</span>").append("<span class='o_qti_times_message o_5_minutes' style='display:none;'><i class='o_icon o_icon_timelimit_half'> </i> ").append(translator.translate("timelimit.5.minutes")).append("</span>").append("<span class='o_qti_times_message o_panic' style='display:none;'><i class='o_icon o_icon_timelimit_end'> </i> ").append(translator.translate("timelimit.1.minute")).append("</span>").append("</div>").append("<script>").append("/*<![CDATA[ */\n").append("jQuery(function() {\n").append(" jQuery('#o_qti_assessment_test_timer').qtiTimer({\n").append(" startTime:").append(qtiWorksStatus.getAssessmentTestDuration()).append(",\n").append(" availableTime:").append(qtiWorksStatus.getAssessmentTestMaximumTimeLimits()).append(",\n").append(" formName: '").append(form.getFormName()).append(// forn name
"',\n").append(" dispIdField: '").append(form.getDispatchFieldId()).append(// form dispatch id
"',\n").append(" dispId: '").append(qtiRun.getFormDispatchId()).append(// item id
"',\n").append(" eventIdField: '").append(form.getEventFieldId()).append(// form eventFieldId
"'\n").append(" })\n").append("});\n").append("/* ]]> */\n").append("</script>\n").append("</div>");
}
}
use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class AssessmentTreeComponentRenderer method renderAssessmentItemMark.
private void renderAssessmentItemMark(StringOutput sb, AssessmentTreeComponent component, TestPlanNode itemNode, Translator translator) {
String key = itemNode.getKey().toString();
Form form = component.getQtiItem().getRootForm();
String dispatchId = component.getQtiItem().getFormDispatchId();
boolean mark = component.getCandidateSessionContext().isMarked(key);
sb.append("<a href='javascript:;' onclick=\"").append(FormJSHelper.getXHRFnCallFor(form, dispatchId, 1, true, true, new NameValuePair("cid", Event.mark.name()), new NameValuePair("item", key))).append("; o_toggleMark(this); return false;\" class='o_assessmentitem_marks'><i class='o_icon ").append("o_icon_bookmark", "o_icon_bookmark_add", mark).append("' title='").append(StringHelper.escapeHtml(translator.translate("assessment.item.mark"))).append("'> </i></a>");
}
Aggregations