Skip to content
Snippets Groups Projects
Commit a58fa308 authored by uhensler's avatar uhensler
Browse files

OO-4356: Title in learning progress overviews

parent 4a3eea6c
No related branches found
No related tags found
No related merge requests found
Showing
with 375 additions and 15 deletions
...@@ -60,16 +60,16 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -60,16 +60,16 @@ import org.springframework.beans.factory.annotation.Autowired;
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
* *
*/ */
public class CurriculumElementLearningPathController extends FormBasicController { public class CurriculumElementLearningPathListController extends FormBasicController {
private static final String USAGE_IDENTIFIER = CurriculumElementLearningPathController.class.getCanonicalName(); private static final String USAGE_IDENTIFIER = CurriculumElementLearningPathListController.class.getCanonicalName();
private static final String ORES_TYPE_IDENTITY = "Identity"; private static final String ORES_TYPE_IDENTITY = "Identity";
private static final String CMD_SELECT = "select"; private static final String CMD_SELECT = "select";
private FlexiTableElement tableEl; private FlexiTableElement tableEl;
private LearningPathIdentityDataModel dataModel; private LearningPathIdentityDataModel dataModel;
private CurriculumLearningPathRepositoryListController repoCtrl; private CurriculumLearningPathRepositoryController repoCtrl;
private final TooledStackedPanel stackPanel; private final TooledStackedPanel stackPanel;
private final CurriculumElement curriculumElement; private final CurriculumElement curriculumElement;
...@@ -87,7 +87,7 @@ public class CurriculumElementLearningPathController extends FormBasicController ...@@ -87,7 +87,7 @@ public class CurriculumElementLearningPathController extends FormBasicController
@Autowired @Autowired
private AssessmentService assessmentService; private AssessmentService assessmentService;
public CurriculumElementLearningPathController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, public CurriculumElementLearningPathListController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel,
CurriculumElement curriculumElement) { CurriculumElement curriculumElement) {
super(ureq, wControl, LAYOUT_BAREBONE); super(ureq, wControl, LAYOUT_BAREBONE);
this.stackPanel = stackPanel; this.stackPanel = stackPanel;
...@@ -176,7 +176,7 @@ public class CurriculumElementLearningPathController extends FormBasicController ...@@ -176,7 +176,7 @@ public class CurriculumElementLearningPathController extends FormBasicController
OLATResourceable ores = OresHelper.createOLATResourceableInstance(ORES_TYPE_IDENTITY, row.getIdentityKey()); OLATResourceable ores = OresHelper.createOLATResourceableInstance(ORES_TYPE_IDENTITY, row.getIdentityKey());
WindowControl bwControl = addToHistory(ureq, ores, null); WindowControl bwControl = addToHistory(ureq, ores, null);
repoCtrl = new CurriculumLearningPathRepositoryListController(ureq, bwControl, stackPanel, curriculumElement, participant); repoCtrl = new CurriculumLearningPathRepositoryController(ureq, bwControl, stackPanel, curriculumElement, participant);
listenTo(repoCtrl); listenTo(repoCtrl);
stackPanel.pushController(fullName, repoCtrl); stackPanel.pushController(fullName, repoCtrl);
} }
......
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.course.learningpath.ui;
import java.util.List;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.stack.TooledStackedPanel;
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;
import org.olat.core.id.Identity;
import org.olat.core.util.Formatter;
import org.olat.core.util.Util;
import org.olat.modules.curriculum.Curriculum;
import org.olat.modules.curriculum.CurriculumElement;
import org.olat.modules.curriculum.CurriculumService;
import org.olat.modules.curriculum.ui.CurriculumElementLearningPathController;
import org.olat.user.UserManager;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* Initial date: 14 Jan 2020<br>
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
public class CurriculumLearningPathRepositoryController extends BasicController {
private Controller listCtrl;
@Autowired
private UserManager userManager;
@Autowired
private CurriculumService curriculumService;
public CurriculumLearningPathRepositoryController(UserRequest ureq, WindowControl wControl,
TooledStackedPanel stackPanel, CurriculumElement element, Identity participant) {
super(ureq, wControl);
setTranslator(Util.createPackageTranslator(CurriculumElementLearningPathController.class, getLocale(), getTranslator()));
VelocityContainer mainVC = createVelocityContainer("identity_curriculum_element");
String userDisplayName = userManager.getUserDisplayName(participant);
mainVC.contextPut("user", userDisplayName);
mainVC.contextPut("elementName", element.getDisplayName());
mainVC.contextPut("elementIdentifier", element.getIdentifier());
Formatter formatter = Formatter.getInstance(getLocale());
if(element.getBeginDate() != null) {
mainVC.contextPut("elementBegin", formatter.formatDate(element.getBeginDate()));
}
if(element.getEndDate() != null) {
mainVC.contextPut("elementEnd", formatter.formatDate(element.getEndDate()));
}
Curriculum curriculum = element.getCurriculum();
mainVC.contextPut("curriculumName", curriculum.getDisplayName());
mainVC.contextPut("curriculumIdentifier", curriculum.getIdentifier());
List<CurriculumElement> parentLine = curriculumService.getCurriculumElementParentLine(element);
parentLine.remove(element);
mainVC.contextPut("parentLine", parentLine);
listCtrl = new CurriculumLearningPathRepositoryListController(ureq, wControl, stackPanel, element,
participant);
listenTo(listCtrl);
mainVC.put("list", listCtrl.getInitialComponent());
putInitialPanel(mainVC);
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
//
}
@Override
protected void doDispose() {
//
}
}
...@@ -44,6 +44,8 @@ public class LearningPathIdentityCtrl extends BasicController { ...@@ -44,6 +44,8 @@ public class LearningPathIdentityCtrl extends BasicController {
super(ureq, wControl); super(ureq, wControl);
VelocityContainer mainVC = createVelocityContainer("identity"); VelocityContainer mainVC = createVelocityContainer("identity");
String courseTitle = coachedCourseEnv.getCourseEnvironment().getCourseTitle();
mainVC.contextPut("courseTitle", courseTitle);
coachedIdentityLargeInfosCtrl = new CoachedIdentityLargeInfosController(ureq, wControl, coachedCourseEnv); coachedIdentityLargeInfosCtrl = new CoachedIdentityLargeInfosController(ureq, wControl, coachedCourseEnv);
listenTo(coachedIdentityLargeInfosCtrl); listenTo(coachedIdentityLargeInfosCtrl);
......
...@@ -100,7 +100,7 @@ public class LearningPathIdentityListController extends FormBasicController impl ...@@ -100,7 +100,7 @@ public class LearningPathIdentityListController extends FormBasicController impl
public LearningPathIdentityListController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, public LearningPathIdentityListController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel,
UserCourseEnvironment coachCourseEnv) { UserCourseEnvironment coachCourseEnv) {
super(ureq, wControl, LAYOUT_BAREBONE); super(ureq, wControl, "identities");
this.stackPanel = stackPanel; this.stackPanel = stackPanel;
this.coachCourseEnv = coachCourseEnv; this.coachCourseEnv = coachCourseEnv;
setTranslator(userManager.getPropertyHandlerTranslator(getTranslator())); setTranslator(userManager.getPropertyHandlerTranslator(getTranslator()));
...@@ -113,6 +113,9 @@ public class LearningPathIdentityListController extends FormBasicController impl ...@@ -113,6 +113,9 @@ public class LearningPathIdentityListController extends FormBasicController impl
@Override @Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
String courseTitle = coachCourseEnv.getCourseEnvironment().getCourseTitle();
flc.contextPut("courseTitle", courseTitle);
FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
if(isAdministrativeUser) { if(isAdministrativeUser) {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(LearningPathIdentityCols.username, CMD_SELECT)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(LearningPathIdentityCols.username, CMD_SELECT));
......
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.course.learningpath.ui;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.stack.TooledStackedPanel;
import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
import org.olat.course.run.userview.UserCourseEnvironmentImpl;
/**
*
* Initial date: 14 Jan 2020<br>
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
public class MyLearningPathController extends BasicController {
private LearningPathListController learningPathListCtrl;
public MyLearningPathController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel,
UserCourseEnvironmentImpl userCourseEnv) {
super(ureq, wControl);
VelocityContainer mainVC = createVelocityContainer("my_learning_path");
String courseTitle = userCourseEnv.getCourseEnvironment().getCourseTitle();
mainVC.contextPut("courseTitle", courseTitle);
learningPathListCtrl = new LearningPathListController(ureq, wControl, stackPanel, userCourseEnv);
listenTo(learningPathListCtrl);
mainVC.put("list", learningPathListCtrl.getInitialComponent());
putInitialPanel(mainVC);
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
//
}
@Override
protected void doDispose() {
//
}
}
<div class="o_lp_identity">
<h2>
<i class="o_icon o_icon_learning_path"> </i>
$r.translate("identities.list.title")
<small>$r.translate("identities.list.course",$courseTitle)</small>
</h2>
$r.render("table")
</div>
\ No newline at end of file
$r.render("user") <div class="o_lp_identity">
$r.render("list") <h2>
\ No newline at end of file <i class="o_icon o_icon_learning_path"> </i>
$r.translate("identity.list.title")
<small>$r.translate("identity.list.course",$courseTitle)</small>
</h2>
$r.render("user")
$r.render("list")
</div>
\ No newline at end of file
<fieldset>
<legend>
<i class="o_icon o_icon_learning_path"> </i>
$r.translate("curriculum.element.list.title")
<small>$user</small>
</legend>
<div class="o_block_bottom">
<div class="text-muted"><i class="o_icon o_icon-fw o_icon_curriculum_element"> </i>
$r.escapeHtml($curriculumName) #if($r.isNotEmpty($curriculumIdentifier))<small>$r.escapeHtml($curriculumIdentifier)</small>#end
#foreach($parent in $parentLine)
/ $r.escapeHtml($parent.displayName) #if($r.isNotEmpty($parent.identifier))<small>$r.escapeHtml($parent.identifier)</small>#end
#end
</div>
#if($r.isNotNull($elementBegin) || $r.isNotNull($elementEnd))
<div class="o_date text-muted"><i class="o_icon o_icon-fw o_icon_calendar"> </i>
#if($r.isNotNull($elementBegin) && $r.isNotNull($elementEnd))
$r.translate("curriculum.element.from.to", $elementBegin, $elementEnd)
#elseif($r.isNotNull($elementBegin))
$r.translate("curriculum.element.from", $elementBegin)
#else
$r.translate("curriculum.element.to", $elementEnd)
#end
</div>
#end
</div>
$r.render("list")
</fieldset>
\ No newline at end of file
<div class="o_lp_my">
<h2>
<i class="o_icon o_icon_learning_path"> </i>
$r.translate("my.list.title")
<small>$r.translate("my.list.course",$courseTitle)</small>
</h2>
$r.render("list")
</div>
\ No newline at end of file
...@@ -18,9 +18,16 @@ config.trigger.score=Punkte ...@@ -18,9 +18,16 @@ config.trigger.score=Punkte
config.trigger.status.done=Durchf\u00FChrung erledigt config.trigger.status.done=Durchf\u00FChrung erledigt
config.trigger.status.in.review=Korrigieren config.trigger.status.in.review=Korrigieren
config.trigger.visited=Kursbaustein ge\u00F6ffnet config.trigger.visited=Kursbaustein ge\u00F6ffnet
curriculum.element.list.title=$org.olat.modules.assessment.ui\:learning.progress
error.fully.assessed.passed=Der Abschluss des Kurselementes kann nicht auf "erledigt" gesetzt sein, wenn im Kursbaustein nicht erledigt werden kann. error.fully.assessed.passed=Der Abschluss des Kurselementes kann nicht auf "erledigt" gesetzt sein, wenn im Kursbaustein nicht erledigt werden kann.
error.fully.assessed.score=Der Abschluss des Kurselementes kann nicht auf "Punkte" gesetzt sein, if no points are assigned in the course element. error.fully.assessed.score=Der Abschluss des Kurselementes kann nicht auf "Punkte" gesetzt sein, if no points are assigned in the course element.
error.positiv.int=Geben Sie eine positive Zahl ein. error.positiv.int=Geben Sie eine positive Zahl ein.
identities.list.course=im Kurs {0}
identities.list.title=Lernpfade
identity.list.course=im Kurs {0}
identity.list.title=Lernpfad
my.list.course=im Kurs {0}
my.list.title=Mein Lernpfad
no.configurations=In diesen Kursbaustein stehen keine Konfigurationen zum Lernpfad zu Verf\u00FCgung. no.configurations=In diesen Kursbaustein stehen keine Konfigurationen zum Lernpfad zu Verf\u00FCgung.
pane.tab.learning.path=Lernpfad pane.tab.learning.path=Lernpfad
passed.false=$org.olat.course.assessment\:passed.false passed.false=$org.olat.course.assessment\:passed.false
......
...@@ -18,9 +18,16 @@ config.trigger.score=Score ...@@ -18,9 +18,16 @@ config.trigger.score=Score
config.trigger.status.done=Execution done config.trigger.status.done=Execution done
config.trigger.status.in.review=In review config.trigger.status.in.review=In review
config.trigger.visited=Course element visited config.trigger.visited=Course element visited
curriculum.element.list.title=$org.olat.modules.assessment.ui\:learning.progress
error.fully.assessed.passed=The completion of the course element can't be set to "passed", if the course element can't be passed. error.fully.assessed.passed=The completion of the course element can't be set to "passed", if the course element can't be passed.
error.fully.assessed.score=The completion of the course element can't be set to "score", if the course element has no score. error.fully.assessed.score=The completion of the course element can't be set to "score", if the course element has no score.
error.positiv.int=Enter a positive number. error.positiv.int=Enter a positive number.
identities.list.course=in course {0}
identities.list.title=Learning pathes
identity.list.course=in course {0}
identity.list.title=Learning path
my.list.course=in course {0}
my.list.title=My learning path
no.configuration=No configurations for the learning path are available in this course element. no.configuration=No configurations for the learning path are available in this course element.
pane.tab.learning.path=Learning path pane.tab.learning.path=Learning path
participant.groups.title=Participants in groups participant.groups.title=Participants in groups
......
...@@ -101,7 +101,7 @@ import org.olat.course.groupsandrights.CourseGroupManager; ...@@ -101,7 +101,7 @@ import org.olat.course.groupsandrights.CourseGroupManager;
import org.olat.course.groupsandrights.CourseRights; import org.olat.course.groupsandrights.CourseRights;
import org.olat.course.learningpath.manager.LearningPathNodeAccessProvider; import org.olat.course.learningpath.manager.LearningPathNodeAccessProvider;
import org.olat.course.learningpath.ui.LearningPathIdentityListController; import org.olat.course.learningpath.ui.LearningPathIdentityListController;
import org.olat.course.learningpath.ui.LearningPathListController; import org.olat.course.learningpath.ui.MyLearningPathController;
import org.olat.course.member.MembersManagementMainController; import org.olat.course.member.MembersManagementMainController;
import org.olat.course.nodes.CourseNode; import org.olat.course.nodes.CourseNode;
import org.olat.course.nodes.ENCourseNode; import org.olat.course.nodes.ENCourseNode;
...@@ -1729,7 +1729,7 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im ...@@ -1729,7 +1729,7 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im
if(delayedClose == Delayed.learningPath || requestForClose(ureq)) { if(delayedClose == Delayed.learningPath || requestForClose(ureq)) {
OLATResourceable ores = OresHelper.createOLATResourceableType("LearningPath"); OLATResourceable ores = OresHelper.createOLATResourceableType("LearningPath");
WindowControl swControl = addToHistory(ureq, ores, null); WindowControl swControl = addToHistory(ureq, ores, null);
LearningPathListController learningPathCtrl = new LearningPathListController(ureq, swControl, MyLearningPathController learningPathCtrl = new MyLearningPathController(ureq, swControl,
toolbarPanel, getUserCourseEnvironment()); toolbarPanel, getUserCourseEnvironment());
listenTo(learningPathCtrl); listenTo(learningPathCtrl);
......
...@@ -72,7 +72,6 @@ import org.olat.core.id.context.StateEntry; ...@@ -72,7 +72,6 @@ import org.olat.core.id.context.StateEntry;
import org.olat.core.util.StringHelper; import org.olat.core.util.StringHelper;
import org.olat.core.util.mail.MailTemplate; import org.olat.core.util.mail.MailTemplate;
import org.olat.core.util.resource.OresHelper; import org.olat.core.util.resource.OresHelper;
import org.olat.course.learningpath.ui.CurriculumElementLearningPathController;
import org.olat.course.member.wizard.ImportMember_1a_LoginListStep; import org.olat.course.member.wizard.ImportMember_1a_LoginListStep;
import org.olat.course.member.wizard.ImportMember_1b_ChooseMemberStep; import org.olat.course.member.wizard.ImportMember_1b_ChooseMemberStep;
import org.olat.group.ui.main.MemberPermissionChangeEvent; import org.olat.group.ui.main.MemberPermissionChangeEvent;
......
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.modules.curriculum.ui;
import java.util.List;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.stack.TooledStackedPanel;
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;
import org.olat.core.util.Formatter;
import org.olat.course.learningpath.ui.CurriculumElementLearningPathListController;
import org.olat.modules.curriculum.Curriculum;
import org.olat.modules.curriculum.CurriculumElement;
import org.olat.modules.curriculum.CurriculumService;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* Initial date: 14 Jan 2020<br>
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
public class CurriculumElementLearningPathController extends BasicController {
private Controller listController;
@Autowired
private CurriculumService curriculumService;
public CurriculumElementLearningPathController(UserRequest ureq, WindowControl swControl,
TooledStackedPanel stackPanel, CurriculumElement element) {
super(ureq, swControl);
VelocityContainer mainVC = createVelocityContainer("curriculum_learning_progress");
mainVC.contextPut("elementName", element.getDisplayName());
mainVC.contextPut("elementIdentifier", element.getIdentifier());
Formatter formatter = Formatter.getInstance(getLocale());
if(element.getBeginDate() != null) {
mainVC.contextPut("elementBegin", formatter.formatDate(element.getBeginDate()));
}
if(element.getEndDate() != null) {
mainVC.contextPut("elementEnd", formatter.formatDate(element.getEndDate()));
}
Curriculum curriculum = element.getCurriculum();
mainVC.contextPut("curriculumName", curriculum.getDisplayName());
mainVC.contextPut("curriculumIdentifier", curriculum.getIdentifier());
List<CurriculumElement> parentLine = curriculumService.getCurriculumElementParentLine(element);
parentLine.remove(element);
mainVC.contextPut("parentLine", parentLine);
listController = new CurriculumElementLearningPathListController(ureq, swControl, stackPanel,
element);
listenTo(listController);
mainVC.put("list", listController.getInitialComponent());
putInitialPanel(mainVC);
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
//
}
@Override
protected void doDispose() {
//
}
}
<fieldset>
<legend>$r.translate("curriculum.element.title") "$r.escapeHtml($elementName) #if($r.isNotEmpty($elementIdentifier))<small class='text-muted'>$r.escapeHtml($elementIdentifier)</small>#end"</legend>
<div class="o_block_bottom">
<div class="text-muted"><i class="o_icon o_icon-fw o_icon_curriculum_element"> </i>
$r.escapeHtml($curriculumName) #if($r.isNotEmpty($curriculumIdentifier))<small>$r.escapeHtml($curriculumIdentifier)</small>#end
#foreach($parent in $parentLine)
/ $r.escapeHtml($parent.displayName) #if($r.isNotEmpty($parent.identifier))<small>$r.escapeHtml($parent.identifier)</small>#end
#end
</div>
#if($r.isNotNull($elementBegin) || $r.isNotNull($elementEnd))
<div class="o_date text-muted"><i class="o_icon o_icon-fw o_icon_calendar"> </i>
#if($r.isNotNull($elementBegin) && $r.isNotNull($elementEnd))
$r.translate("curriculum.element.from.to", $elementBegin, $elementEnd)
#elseif($r.isNotNull($elementBegin))
$r.translate("curriculum.element.from", $elementBegin)
#else
$r.translate("curriculum.element.to", $elementEnd)
#end
</div>
#end
</div>
$r.render("list")
</fieldset>
...@@ -1210,7 +1210,7 @@ ...@@ -1210,7 +1210,7 @@
</bean> </bean>
</entry> </entry>
<entry key="org.olat.course.learningpath.ui.CurriculumElementLearningPathController"> <entry key="org.olat.course.learningpath.ui.CurriculumElementLearningPathListController">
<bean class="org.olat.user.propertyhandlers.UserPropertyUsageContext"> <bean class="org.olat.user.propertyhandlers.UserPropertyUsageContext">
<property name="description" value="Learning progress in the curriculum browser" /> <property name="description" value="Learning progress in the curriculum browser" />
<property name="propertyHandlers"> <property name="propertyHandlers">
......
...@@ -108,6 +108,12 @@ ...@@ -108,6 +108,12 @@
} }
.o_lp_identity {
.o_user_infos {
margin-top: 20px;
}
}
/* score info status classes */ /* score info status classes */
.o_passed { .o_passed {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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