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"));
}
}
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;
}
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);
}
}
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());
}
}
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());
}
Aggregations