Search in sources :

Example 31 with Panel

use of org.olat.core.gui.components.panel.Panel in project openolat by klemens.

the class QTI21StatisticsToolController method doSelectNode.

private void doSelectNode(UserRequest ureq, TreeNode selectedNode) {
    removeAsListenerAndDispose(currentCtrl);
    WindowControl swControl = addToHistory(ureq, OresHelper.createOLATResourceableInstance(selectedNode.getIdent(), 0l), null);
    currentCtrl = result.getController(ureq, swControl, stackPanel, selectedNode);
    if (currentCtrl != null) {
        listenTo(currentCtrl);
        layoutCtr.setCol3(currentCtrl.getInitialComponent());
    } else {
        layoutCtr.setCol3(new Panel("empty"));
    }
}
Also used : TooledStackedPanel(org.olat.core.gui.components.stack.TooledStackedPanel) Panel(org.olat.core.gui.components.panel.Panel) WindowControl(org.olat.core.gui.control.WindowControl)

Example 32 with Panel

use of org.olat.core.gui.components.panel.Panel in project OpenOLAT by OpenOLAT.

the class RepositoyUIFactory method createRepoEntryDisabledDueToSecurityMessageController.

/**
 * Create main controller that does nothing but displaying a message that
 * this resource is disabled due to security constraints
 *
 * @param ureq
 * @param wControl
 * @return
 */
public static GenericMainController createRepoEntryDisabledDueToSecurityMessageController(UserRequest ureq, WindowControl wControl) {
    // wrap simple message into mainLayout
    GenericMainController glc = new GenericMainController(ureq, wControl) {

        @Override
        public void init(UserRequest uureq) {
            Panel empty = new Panel("empty");
            setTranslator(Util.createPackageTranslator(RepositoryModule.class, uureq.getLocale()));
            MessageController contentCtr = MessageUIFactory.createInfoMessage(uureq, getWindowControl(), translate("security.disabled.title"), translate("security.disabled.info"));
            // auto dispose later
            listenTo(contentCtr);
            Component resComp = contentCtr.getInitialComponent();
            LayoutMain3ColsController columnLayoutCtr = new LayoutMain3ColsController(uureq, getWindowControl(), empty, resComp, /*do not save no prefs*/
            null);
            // auto dispose later
            listenTo(columnLayoutCtr);
            putInitialPanel(columnLayoutCtr.getInitialComponent());
        }

        @Override
        protected Controller handleOwnMenuTreeEvent(Object uobject, UserRequest uureq) {
            // no menutree means no menu events.
            return null;
        }
    };
    glc.init(ureq);
    return glc;
}
Also used : Panel(org.olat.core.gui.components.panel.Panel) MessageController(org.olat.core.gui.control.generic.messages.MessageController) GenericMainController(org.olat.core.gui.control.generic.layout.GenericMainController) LayoutMain3ColsController(org.olat.core.commons.fullWebApp.LayoutMain3ColsController) Component(org.olat.core.gui.components.Component) UserRequest(org.olat.core.gui.UserRequest) RepositoryModule(org.olat.repository.RepositoryModule)

Example 33 with Panel

use of org.olat.core.gui.components.panel.Panel in project OpenOLAT by OpenOLAT.

the class IQRunController method event.

/**
 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
 */
public void event(UserRequest ureq, Component source, Event event) {
    if (source == startButton && startButton.isEnabled() && startButton.isVisible()) {
        long courseResId = userCourseEnv.getCourseEnvironment().getCourseResourceableId().longValue();
        String courseNodeIdent = courseNode.getIdent();
        removeAsListenerAndDispose(displayController);
        OLATResourceable ores = OresHelper.createOLATResourceableTypeWithoutCheck("test");
        ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
        WindowControl bwControl = addToHistory(ureq, ores, null);
        Controller returnController = iqManager.createIQDisplayController(modConfig, secCallback, ureq, bwControl, courseResId, courseNodeIdent, this);
        /*
			 * either returnController is a MessageController or it is a IQDisplayController
			 * this should not serve as pattern to be copy&pasted.
			 * FIXME:2008-11-21:pb INTRODUCED because of read/write QTI Lock solution for scalability II, 6.1.x Release 
			 */
        if (returnController instanceof IQDisplayController) {
            displayController = (IQDisplayController) returnController;
            listenTo(displayController);
            if (displayController.isClosed()) {
            // do nothing
            } else if (displayController.isReady()) {
                // in case displayController was unable to initialize, a message was set by displayController
                // this is the case if no more attempts or security check was unsuccessfull
                displayContainerController = new LayoutMain3ColsController(ureq, getWindowControl(), displayController);
                // autodispose
                listenTo(displayContainerController);
                // need to wrap a course restart controller again, because IQDisplay
                // runs on top of GUIStack
                ICourse course = CourseFactory.loadCourse(courseResId);
                RepositoryEntry courseRepositoryEntry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
                // empty panel set as "menu" and "tool"
                Panel empty = new Panel("empty");
                Controller courseCloser = new DisposedCourseRestartController(ureq, getWindowControl(), courseRepositoryEntry);
                Controller disposedRestartController = new LayoutMain3ColsController(ureq, getWindowControl(), empty, courseCloser.getInitialComponent(), "disposed course whily in iqRun" + courseResId);
                displayContainerController.setDisposedMessageController(disposedRestartController);
                final boolean fullWindow = modConfig.getBooleanSafe(IQEditController.CONFIG_FULLWINDOW, true);
                if (fullWindow) {
                    displayContainerController.setAsFullscreen(ureq);
                }
                displayContainerController.activate();
                if (modConfig.get(IQEditController.CONFIG_KEY_TYPE).equals(AssessmentInstance.QMD_ENTRY_TYPE_ASSESS)) {
                    assessmentStopped = false;
                    singleUserEventCenter.registerFor(this, getIdentity(), assessmentInstanceOres);
                    singleUserEventCenter.fireEventToListenersOf(new AssessmentEvent(AssessmentEvent.TYPE.STARTED, ureq.getUserSession()), assessmentEventOres);
                }
            }
        // endif isReady
        } else {
            // -> qti file was locked -> show info message
            // user must click again on course node to activate
            mainPanel.pushContent(returnController.getInitialComponent());
        }
    } else if (source == showResultsButton) {
        AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
        Long assessmentID = am.getAssessmentID(courseNode, ureq.getIdentity());
        if (assessmentID == null) {
            // fallback solution: if the assessmentID is not available via AssessmentManager than try to get it via IQManager
            long callingResId = userCourseEnv.getCourseEnvironment().getCourseResourceableId().longValue();
            String callingResDetail = courseNode.getIdent();
            assessmentID = iqManager.getLastAssessmentID(ureq.getIdentity(), callingResId, callingResDetail);
        }
        if (assessmentID != null && !assessmentID.equals("")) {
            Document doc = iqManager.getResultsReportingFromFile(ureq.getIdentity(), type, assessmentID);
            // StringBuilder resultsHTML = LocalizedXSLTransformer.getInstance(ureq.getLocale()).renderResults(doc);
            String summaryConfig = (String) modConfig.get(IQEditController.CONFIG_KEY_SUMMARY);
            int summaryType = AssessmentInstance.SUMMARY_NONE;
            try {
                summaryType = AssessmentInstance.getSummaryType(summaryConfig);
            } catch (Exception e) {
                // cannot change AssessmentInstance: fallback if the the configuration is inherited from a QTI 2.1 configuration
                if (StringHelper.containsNonWhitespace(summaryConfig)) {
                    summaryType = AssessmentInstance.SUMMARY_DETAILED;
                }
                logError("", e);
            }
            String resultsHTML = iqManager.transformResultsReporting(doc, ureq.getLocale(), summaryType);
            myContent.contextPut("displayreporting", resultsHTML);
            myContent.contextPut("resreporting", resultsHTML);
            myContent.contextPut("showResults", Boolean.TRUE);
        }
    } else if (source == hideResultsButton) {
        myContent.contextPut("showResults", Boolean.FALSE);
    } else if ("show".equals(event.getCommand())) {
        saveOpenPanel(ureq, ureq.getParameter("panel"), true);
    } else if ("hide".equals(event.getCommand())) {
        saveOpenPanel(ureq, ureq.getParameter("panel"), false);
    }
}
Also used : OLATResourceable(org.olat.core.id.OLATResourceable) AssessmentManager(org.olat.course.assessment.AssessmentManager) ICourse(org.olat.course.ICourse) RepositoryEntry(org.olat.repository.RepositoryEntry) WindowControl(org.olat.core.gui.control.WindowControl) DisposedCourseRestartController(org.olat.course.DisposedCourseRestartController) HighScoreRunController(org.olat.course.highscore.ui.HighScoreRunController) LayoutMain3ColsController(org.olat.core.commons.fullWebApp.LayoutMain3ColsController) BasicController(org.olat.core.gui.control.controller.BasicController) IQDisplayController(org.olat.modules.iq.IQDisplayController) IFrameDisplayController(org.olat.core.gui.control.generic.iframe.IFrameDisplayController) Controller(org.olat.core.gui.control.Controller) Document(org.dom4j.Document) AssertException(org.olat.core.logging.AssertException) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) Panel(org.olat.core.gui.components.panel.Panel) StackedPanel(org.olat.core.gui.components.panel.StackedPanel) LayoutMain3ColsController(org.olat.core.commons.fullWebApp.LayoutMain3ColsController) DisposedCourseRestartController(org.olat.course.DisposedCourseRestartController) IQDisplayController(org.olat.modules.iq.IQDisplayController)

Example 34 with Panel

use of org.olat.core.gui.components.panel.Panel in project OpenOLAT by OpenOLAT.

the class QTI21AssessmentRunController method doStart.

private void doStart(UserRequest ureq) {
    removeAsListenerAndDispose(displayCtrl);
    OLATResourceable ores = OresHelper.createOLATResourceableTypeWithoutCheck("test");
    ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
    WindowControl bwControl = addToHistory(ureq, ores, null);
    RepositoryEntry courseRe = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
    displayCtrl = new AssessmentTestDisplayController(ureq, bwControl, this, testEntry, courseRe, courseNode.getIdent(), deliveryOptions, overrideOptions, true, false, false);
    listenTo(displayCtrl);
    if (displayCtrl.getAssessmentTest() == null) {
        logError("Test cannot be read: " + testEntry + " in course: " + courseRe + " element: " + courseNode.getIdent(), null);
        showError("error.resource.corrupted");
    } else if (displayCtrl.isEnded()) {
        if (!displayCtrl.isResultsVisible()) {
            doExitAssessment(ureq, null, true);
            initAssessment(ureq);
        }
    } else {
        // in case displayController was unable to initialize, a message was set by displayController
        // this is the case if no more attempts or security check was unsuccessfull
        displayContainerController = new QTI21AssessmentMainLayoutController(ureq, getWindowControl(), displayCtrl);
        // autodispose
        listenTo(displayContainerController);
        // empty panel set as "menu" and "tool"
        Panel empty = new Panel("empty");
        Controller courseCloser = new DisposedCourseRestartController(ureq, getWindowControl(), courseRe);
        Controller disposedRestartController = new LayoutMain3ColsController(ureq, getWindowControl(), empty, courseCloser.getInitialComponent(), "disposed");
        displayContainerController.setDisposedMessageController(disposedRestartController);
        boolean fullWindow = deliveryOptions.isHideLms();
        if (fullWindow) {
            displayContainerController.setAsFullscreen(ureq);
        }
        displayContainerController.activate();
        assessmentStopped = false;
        singleUserEventCenter.registerFor(this, getIdentity(), assessmentInstanceOres);
        singleUserEventCenter.fireEventToListenersOf(new AssessmentEvent(AssessmentEvent.TYPE.STARTED, ureq.getUserSession()), assessmentEventOres);
        ThreadLocalUserActivityLogger.log(QTI21LoggingAction.QTI_START_IN_COURSE, getClass());
    }
}
Also used : Panel(org.olat.core.gui.components.panel.Panel) OLATResourceable(org.olat.core.id.OLATResourceable) LayoutMain3ColsController(org.olat.core.commons.fullWebApp.LayoutMain3ColsController) AssessmentTestDisplayController(org.olat.ims.qti21.ui.AssessmentTestDisplayController) RepositoryEntry(org.olat.repository.RepositoryEntry) DisposedCourseRestartController(org.olat.course.DisposedCourseRestartController) WindowControl(org.olat.core.gui.control.WindowControl) DisposedCourseRestartController(org.olat.course.DisposedCourseRestartController) HighScoreRunController(org.olat.course.highscore.ui.HighScoreRunController) LayoutMain3ColsController(org.olat.core.commons.fullWebApp.LayoutMain3ColsController) BasicController(org.olat.core.gui.control.controller.BasicController) AssessmentResultController(org.olat.ims.qti21.ui.AssessmentResultController) IFrameDisplayController(org.olat.core.gui.control.generic.iframe.IFrameDisplayController) Controller(org.olat.core.gui.control.Controller) AssessmentTestDisplayController(org.olat.ims.qti21.ui.AssessmentTestDisplayController)

Example 35 with Panel

use of org.olat.core.gui.components.panel.Panel in project OpenOLAT by OpenOLAT.

the class BaseFullWebappController method initialize.

private void initialize(UserRequest ureq) {
    mainVc = createVelocityContainer("fullwebapplayout");
    mainVc.contextPut("screenMode", screenMode);
    LayoutModule layoutModule = CoreSpringFactory.getImpl(LayoutModule.class);
    LandingPagesModule landingPagesModule = CoreSpringFactory.getImpl(LandingPagesModule.class);
    LogoInformations logoInfos = new LogoInformations(ureq, layoutModule, landingPagesModule);
    mainVc.contextPut("logoInfos", logoInfos);
    // use separate container for navigation to prevent full page refresh in ajax mode on site change
    // nav is not a controller part because it is a fundamental part of the BaseFullWebAppConroller.
    navSitesVc = createVelocityContainer("nav_sites");
    navSitesVc.setDomReplacementWrapperRequired(false);
    navSitesVc.contextPut("visible", Boolean.TRUE);
    mainVc.put("sitesComponent", navSitesVc);
    navTabsVc = createVelocityContainer("nav_tabs");
    navTabsVc.setDomReplacementWrapperRequired(false);
    mainVc.put("tabsComponent", navTabsVc);
    // GUI messages
    guimsgVc = createVelocityContainer("guimsg");
    guimsgVc.contextPut("guiMessage", guiMessage);
    guimsgHolder = new Panel("guimsgholder");
    guimsgHolder.setContent(guimsgPanel);
    currentMsgHolder = guimsgHolder;
    mainVc.put("guimessage", guimsgHolder);
    // CSS panel
    cssHolder = new Panel("customCss");
    mainVc.put("customCssHolder", cssHolder);
    // sticky maintenance message
    stickyMessageCmp = new StickyMessageComponent("stickymsg", screenMode);
    mainVc.put("stickymsg", stickyMessageCmp);
    updateStickyMessage();
    dtabs = new ArrayList<>();
    dtabsLinkNames = new ArrayList<>();
    dtabsControllers = new ArrayList<>();
    // -- sites -- by definition the first site is activated at the beginning
    userTools = new HomeSite(null);
    sites = baseFullWebappControllerParts.getSiteInstances(ureq, getWindowControl());
    if (sites != null && sites.size() == 0) {
        sites = null;
    }
    List<String> siteLinks = new ArrayList<>();
    // either sites is null or contains at least one SiteInstance.
    if (sites != null) {
        // create the links for the sites
        for (Iterator<SiteInstance> iterator = sites.iterator(); iterator.hasNext(); ) {
            SiteInstance si = iterator.next();
            NavElement navEl = si.getNavElement();
            if (navEl != null) {
                String linkName = "t" + CodeHelper.getRAMUniqueID();
                siteLinks.add(linkName);
                Link link = LinkFactory.createCustomLink(linkName, "t", "", Link.NONTRANSLATED, navSitesVc, this);
                link.setCustomDisplayText(navEl.getTitle());
                link.setTitle(navEl.getDescription());
                link.setUserObject(si);
                Character accessKey = navEl.getAccessKey();
                if (accessKey != null && StringHelper.containsNonWhitespace(accessKey.toString())) {
                    link.setAccessKey(accessKey.toString());
                }
            }
        }
    }
    navSitesVc.contextPut("sites", siteLinks);
    navSitesVc.contextPut("tabhelper", this);
    navTabsVc.contextPut("dtabs", dtabs);
    navTabsVc.contextPut("dtabsLinkNames", dtabsLinkNames);
    navTabsVc.contextPut("tabhelper", this);
    // header, optional (e.g. for logo, advertising )
    Controller headerCtr = baseFullWebappControllerParts.createHeaderController(ureq, getWindowControl());
    if (headerCtr != null) {
        // cleanup on dispose
        listenTo(headerCtr);
        Component headerCmp = headerCtr.getInitialComponent();
        mainVc.put("headerComponent", headerCmp);
    }
    // topnav, optional (e.g. for imprint, logout)
    topnavCtr = baseFullWebappControllerParts.createTopNavController(ureq, getWindowControl());
    if (topnavCtr != null) {
        // cleanup on dispose
        listenTo(topnavCtr);
        mainVc.put("topnavComponent", topnavCtr.getInitialComponent());
        userToolsMenuCtrl = new UserToolsMenuController(ureq, getWindowControl());
        listenTo(userToolsMenuCtrl);
        mainVc.put("menuComponent", userToolsMenuCtrl.getInitialComponent());
    }
    // panel for modal overlays, placed right after the olat-header-div
    modalPanel = new Panel("ccmodalpanel");
    mainVc.put("modalpanel", modalPanel);
    // main, mandatory (e.g. a LayoutMain3ColsController)
    main = new Panel("mainContent");
    mainVc.put("main", main);
    // footer, optional (e.g. for copyright, powered by)
    footerCtr = baseFullWebappControllerParts.createFooterController(ureq, getWindowControl());
    if (footerCtr != null) {
        // cleanup on dispose
        listenTo(footerCtr);
        Component footerCmp = footerCtr.getInitialComponent();
        mainVc.put("footerComponent", footerCmp);
    }
    contentCtrl = baseFullWebappControllerParts.getContentController(ureq, getWindowControl());
    if (contentCtrl != null) {
        listenTo(contentCtrl);
        GuiStack gs = getWindowControl().getWindowBackOffice().createGuiStack(contentCtrl.getInitialComponent());
        setGuiStack(gs);
        main.setContent(contentCtrl.getInitialComponent());
    } else {
        main.setContent(TextFactory.createTextComponentFromString("empty", "", null, false, null));
        // set a guistack for the after login interceptor
        GuiStack gs = getWindowControl().getWindowBackOffice().createGuiStack(new Panel("dummy"));
        setGuiStack(gs);
    }
    setWindowSettings(getWindowControl().getWindowBackOffice().getWindowSettings());
}
Also used : BornSiteInstance(org.olat.core.gui.control.navigation.BornSiteInstance) SiteInstance(org.olat.core.gui.control.navigation.SiteInstance) LayoutModule(org.olat.admin.layout.LayoutModule) ArrayList(java.util.ArrayList) LandingPagesModule(org.olat.admin.landingpages.LandingPagesModule) ResumeSessionController(org.olat.core.commons.controllers.resume.ResumeSessionController) AssessmentModeGuardController(org.olat.course.assessment.ui.mode.AssessmentModeGuardController) BasicController(org.olat.core.gui.control.controller.BasicController) ChiefController(org.olat.core.gui.control.ChiefController) BaseChiefController(org.olat.core.commons.chiefcontrollers.BaseChiefController) VetoableCloseController(org.olat.core.gui.control.VetoableCloseController) Controller(org.olat.core.gui.control.Controller) UserToolsMenuController(org.olat.gui.control.UserToolsMenuController) GuiStack(org.olat.core.gui.control.guistack.GuiStack) NavElement(org.olat.core.gui.control.navigation.NavElement) OncePanel(org.olat.core.gui.components.panel.OncePanel) Panel(org.olat.core.gui.components.panel.Panel) StackedPanel(org.olat.core.gui.components.panel.StackedPanel) LogoInformations(org.olat.admin.layout.LogoInformations) HomeSite(org.olat.home.HomeSite) UserToolsMenuController(org.olat.gui.control.UserToolsMenuController) Component(org.olat.core.gui.components.Component) CustomJSComponent(org.olat.core.gui.components.htmlheader.jscss.CustomJSComponent) CountDownComponent(org.olat.core.gui.components.countdown.CountDownComponent) Link(org.olat.core.gui.components.link.Link)

Aggregations

Panel (org.olat.core.gui.components.panel.Panel)56 TooledStackedPanel (org.olat.core.gui.components.stack.TooledStackedPanel)18 StackedPanel (org.olat.core.gui.components.panel.StackedPanel)16 WindowControl (org.olat.core.gui.control.WindowControl)14 LayoutMain3ColsController (org.olat.core.commons.fullWebApp.LayoutMain3ColsController)12 UserRequest (org.olat.core.gui.UserRequest)12 Component (org.olat.core.gui.components.Component)12 VelocityContainer (org.olat.core.gui.components.velocity.VelocityContainer)12 Controller (org.olat.core.gui.control.Controller)10 OncePanel (org.olat.core.gui.components.panel.OncePanel)8 BasicController (org.olat.core.gui.control.controller.BasicController)8 ArrayList (java.util.ArrayList)6 SimpleStackedPanel (org.olat.core.gui.components.panel.SimpleStackedPanel)6 ZIndexWrapper (org.olat.core.gui.control.util.ZIndexWrapper)6 AssertException (org.olat.core.logging.AssertException)6 CloseableModalController (org.olat.core.gui.control.generic.closablewrapper.CloseableModalController)5 HistoryPoint (org.olat.core.id.context.HistoryPoint)5 JSAndCSSComponent (org.olat.core.gui.components.htmlheader.jscss.JSAndCSSComponent)4 MenuTree (org.olat.core.gui.components.tree.MenuTree)4 TreeNode (org.olat.core.gui.components.tree.TreeNode)4