/** * Constructor for the course logs archive controller * * @param ureq * @param wControl * @param course */ public CourseLogsArchiveController( UserRequest ureq, WindowControl wControl, OLATResourceable ores) { super(ureq, wControl); this.ores = ores; this.myPanel = new Panel("myPanel"); myPanel.addListener(this); myContent = createVelocityContainer("start_courselogs"); Identity identity = ureq.getIdentity(); Roles roles = ureq.getUserSession().getRoles(); RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(ores, false); boolean isOLATAdmin = ureq.getUserSession().getRoles().isOLATAdmin(); boolean isOresOwner = RepositoryManager.getInstance().isOwnerOfRepositoryEntry(identity, re); boolean isOresInstitutionalManager = RepositoryManager.getInstance().isInstitutionalRessourceManagerFor(identity, roles, re); boolean aLogV = isOresOwner || isOresInstitutionalManager; boolean uLogV = isOLATAdmin; boolean sLogV = isOresOwner || isOresInstitutionalManager; if (AsyncExportManager.getInstance().asyncArchiveCourseLogOngoingFor(ureq.getIdentity())) { // then show the ongoing feedback showExportOngoing(false); } else if (isOLATAdmin || aLogV || uLogV || sLogV) { myContent.contextPut("hasLogArchiveAccess", true); logFileChooserForm = new LogFileChooserForm(ureq, wControl, isOLATAdmin, aLogV, uLogV, sLogV); listenTo(logFileChooserForm); myContent.put("logfilechooserform", logFileChooserForm.getInitialComponent()); ICourse course = CourseFactory.loadCourse(ores); myContent.contextPut( "body", translate("course.logs.existingarchiveintro", course.getCourseTitle())); showFileButton = LinkFactory.createButton("showfile", myContent, this); File exportDir = CourseFactory.getDataExportDirectory(ureq.getIdentity(), course.getCourseTitle()); boolean exportDirExists = false; if (exportDir != null && exportDir.exists() && exportDir.isDirectory()) { exportDirExists = true; } myContent.contextPut("hascourselogarchive", new Boolean(exportDirExists)); myPanel.setContent(myContent); } else { myContent.contextPut("hasLogArchiveAccess", new Boolean(false)); myPanel.setContent(myContent); } putInitialPanel(myPanel); }
private void doStartPage(UserRequest ureq) { Controller startPageInner = new TUStartController(ureq, getWindowControl(), config); startPage = TitledWrapperHelper.getWrapper( ureq, getWindowControl(), startPageInner, courseNode, "o_tu_icon"); listenTo(startPage); main.setContent(startPage.getInitialComponent()); }
public void event(UserRequest ureq, Controller source, Event event) { if (source == logFileChooserForm) { if (event == Event.DONE_EVENT) { final boolean logAdminChecked = logFileChooserForm.logAdminChecked(); final boolean logUserChecked = logFileChooserForm.logUserChecked(); final boolean logStatisticChecked = logFileChooserForm.logStatChecked(); final Date begin = logFileChooserForm.getBeginDate(); final Date end = logFileChooserForm.getEndDate(); if (end != null) { // shift time from beginning to end of day end.setTime(end.getTime() + 24 * 60 * 60 * 1000); } UserManager um = UserManager.getInstance(); final String charset = um.getUserCharset(ureq.getIdentity()); ICourse course = CourseFactory.loadCourse(ores); final String courseTitle = course.getCourseTitle(); final String targetDir = CourseFactory.getOrCreateDataExportDirectory(ureq.getIdentity(), courseTitle).getPath(); final Long resId = ores.getResourceableId(); final Locale theLocale = ureq.getLocale(); final String email = ureq.getIdentity().getUser().getProperty(UserConstants.EMAIL, ureq.getLocale()); AsyncExportManager.getInstance() .asyncArchiveCourseLogFiles( ureq.getIdentity(), new Runnable() { @Override public void run() { showExportFinished(); } }, resId, targetDir, begin, end, logAdminChecked, logUserChecked, logStatisticChecked, charset, theLocale, email); showExportOngoing(true); } else if (event == Event.DONE_EVENT) { myPanel.setContent(myContent); } } }
private void initializeContent() { updateUserList(); VelocityContainer readyToDeleteContent = createVelocityContainer("readyToDelete"); readyToDeleteContent.put("readyToDelete", tableCtr.getInitialComponent()); readyToDeleteContent.contextPut( "header", translate( "ready.to.delete.header", Integer.toString(UserDeletionManager.getInstance().getDeleteEmailDuration()))); readyToDeletePanel.setContent(readyToDeleteContent); }
private void showExportOngoing(final boolean thisCourse) { VelocityContainer vcOngoing = createVelocityContainer("courselogs_ongoing"); if (thisCourse) { vcOngoing.contextPut("body", translate("course.logs.ongoing")); } else { // more generic message that makes also sense in other courses vcOngoing.contextPut("body", translate("course.logs.busy")); } myPanel.setContent(vcOngoing); // initialize polling // myPanel.put("updatecontrol", new JSAndCSSComponent("intervall", this.getClass(), 3000)); }
protected void showExportFinished() { ICourse course = CourseFactory.loadCourse(ores); VelocityContainer vcFeedback = createVelocityContainer("courselogs_feedback"); showFileButton = LinkFactory.createButton("showfile", vcFeedback, this); vcFeedback.contextPut("body", translate("course.logs.feedback", course.getCourseTitle())); myPanel.setContent(vcFeedback); // note: polling can't be switched off unfortunatelly // this is due to the fact that the jsandcsscomponent can only modify // certain parts of the page and it would require a full page refresh // to get rid of the poller - and that's not possible currently showInfo("course.logs.finished", course.getCourseTitle()); }
private void doLaunch(UserRequest ureq) { boolean iniframe = config.getBooleanSafe(TUConfigForm.CONFIG_IFRAME); // create the possibility to float CloneableController controller; if (iniframe) { // Do not dispose this controller if the course is closed... IframeTunnelController ifC = new IframeTunnelController(ureq, getWindowControl(), config); controller = ifC; } else { TunnelController tuC = new TunnelController(ureq, getWindowControl(), config); controller = tuC; } listenTo(controller); // create clone wrapper layout CloneLayoutControllerCreatorCallback clccc = new CloneLayoutControllerCreatorCallback() { public ControllerCreator createLayoutControllerCreator( UserRequest ureq, final ControllerCreator contentControllerCreator) { return BaseFullWebappPopupLayoutFactory.createAuthMinimalPopupLayout( ureq, new ControllerCreator() { @SuppressWarnings("synthetic-access") public Controller createController(UserRequest lureq, WindowControl lwControl) { // wrapp in column layout, popup window needs a layout controller Controller ctr = contentControllerCreator.createController(lureq, lwControl); LayoutMain3ColsController layoutCtr = new LayoutMain3ColsController( lureq, lwControl, null, null, ctr.getInitialComponent(), null); layoutCtr.setCustomCSS( CourseFactory.getCustomCourseCss(lureq.getUserSession(), courseEnv)); layoutCtr.addDisposableChildController(ctr); return layoutCtr; } }); } }; Controller ctrl = TitledWrapperHelper.getWrapper( ureq, getWindowControl(), controller, courseNode, "o_tu_icon"); if (ctrl instanceof CloneableController) { cloneC = new CloneController(ureq, getWindowControl(), (CloneableController) ctrl, clccc); listenTo(cloneC); main.setContent(cloneC.getInitialComponent()); } else { throw new AssertException("Controller must be cloneable"); } }
/** * @param ureq * @param wControl * @param fallBackTranslator * @param tableDataModel => See class-description! * @param sortedItems */ public PortletManualSortingConfigurator( UserRequest ureq, WindowControl wControl, Translator fallBackTranslator, PortletDefaultTableDataModel<T> tableDataModel, List<PortletEntry<T>> sortedItems) { super(ureq, wControl, fallBackTranslator); this.tableDataModel = tableDataModel; this.sortedItems = sortedItems; // select the items in table!!! mainVC = createVelocityContainer("manualSorting"); tablePanel = new Panel("table"); mainVC.put("table", tablePanel); TableGuiConfiguration tableConfig = new TableGuiConfiguration(); tableConfig.setMultiSelect(true); tableConfig.setSortingEnabled(true); tableConfig.setTableEmptyMessage("manual.sorting.no.entries.found"); tableController = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); listenTo(tableController); int maxNumColumns = tableDataModel.getColumnCount(); int columnCounter = 0; tableController.addColumnDescriptor( new DefaultColumnDescriptor( "table.manual.sorting.title", columnCounter++, null, getLocale())); if (maxNumColumns == 2) { tableController.addColumnDescriptor( new DefaultColumnDescriptor( "table.manual.sorting.date", columnCounter++, null, getLocale())); } else { DefaultColumnDescriptor descCol = new DefaultColumnDescriptor( "table.manual.sorting.description", columnCounter++, null, getLocale()); descCol.setEscapeHtml(EscapeMode.antisamy); tableController.addColumnDescriptor(descCol); } if (maxNumColumns == 4) { tableController.addColumnDescriptor( new DefaultColumnDescriptor( "table.manual.sorting.type", columnCounter++, null, getLocale())); } tableController.addMultiSelectAction("action.choose", ACTION_MULTISELECT_CHOOSE); tableController.addMultiSelectAction("action.cancel", ACTION_MULTISELECT_CANCEL); tableController.setTableDataModel(tableDataModel); tablePanel.setContent(tableController.getInitialComponent()); putInitialPanel(mainVC); }
private void doEditNodeAssessment(UserRequest ureq, AssessableCourseNode courseNode) { if (mayEdit) { ICourse course = CourseFactory.loadCourse(ores); UserCourseInformationsManager userCourseInformationsManager = CoreSpringFactory.getImpl(UserCourseInformationsManager.class); Date initialLaunchDate = userCourseInformationsManager.getInitialLaunchDate( ores.getResourceableId(), assessedUserCourseEnvironment.getIdentityEnvironment().getIdentity()); AssessedIdentityWrapper assessedIdentityWrapper = AssessmentHelper.wrapIdentity( assessedUserCourseEnvironment, initialLaunchDate, courseNode); assessmentEditCtr = new AssessmentEditController( ureq, getWindowControl(), stackPanel, course, courseNode, assessedIdentityWrapper); listenTo(assessmentEditCtr); main.setContent(assessmentEditCtr.getInitialComponent()); } else { throw new OLATSecurityException( "doEditNodeAssessment() called but controller configured with mayEdit=false"); } }
private void doIdentityAssessmentOverview(UserRequest ureq, boolean initTable) { if (identityOverviewVC == null) { identityOverviewVC = createVelocityContainer("identityoverview"); if (headers) { backLink = LinkFactory.createLinkBack(identityOverviewVC, this); Identity assessedIdentity = assessedUserCourseEnvironment.getIdentityEnvironment().getIdentity(); identityOverviewVC.contextPut("user", assessedIdentity.getUser()); } } if (initTable) { assessedUserCourseEnvironment.getScoreAccounting().evaluateAll(); assessmentOverviewCtr = new IdentityAssessmentOverviewController( ureq, getWindowControl(), assessedUserCourseEnvironment, mayEdit, false, true); listenTo(assessmentOverviewCtr); identityOverviewVC.put( "assessmentOverviewTable", assessmentOverviewCtr.getInitialComponent()); } main.setContent(identityOverviewVC); }
public GuiStackSimpleImpl(Component initialComponent) { contentPanel = new Panel("simpleguistack"); contentPanel.setContent(initialComponent); }