From 6ac964ba4e9d5b7966cf6b35c127094c5c4cd80e Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 5 Sep 2012 17:03:22 +0200 Subject: [PATCH] OO-291: first step of the GUI's refactoring of the course members management --- .../user/groups/GroupOverviewController.java | 4 +- .../org/olat/basesecurity/BaseSecurity.java | 2 +- .../CourseGroupManagementMainController.java | 113 -- .../ui/StringListTableDataModel.java | 80 -- .../ui/_content/cancelled.html | 1 - .../groupsandrights/ui/_content/closing.html | 16 - .../ui/_content/contextlist.html | 9 - .../ui/_content/groupandareaselect.html | 15 - .../ui/_i18n/LocalStrings_ar.properties | 14 - .../ui/_i18n/LocalStrings_bg.properties | 14 - .../ui/_i18n/LocalStrings_cs.properties | 14 - .../ui/_i18n/LocalStrings_da.properties | 14 - .../ui/_i18n/LocalStrings_de.properties | 14 - .../ui/_i18n/LocalStrings_el.properties | 14 - .../ui/_i18n/LocalStrings_en.properties | 14 - .../ui/_i18n/LocalStrings_es.properties | 14 - .../ui/_i18n/LocalStrings_fa.properties | 14 - .../ui/_i18n/LocalStrings_fr.properties | 14 - .../ui/_i18n/LocalStrings_it.properties | 14 - .../ui/_i18n/LocalStrings_jp.properties | 13 - .../ui/_i18n/LocalStrings_lt.properties | 14 - .../ui/_i18n/LocalStrings_nl_NL.properties | 14 - .../ui/_i18n/LocalStrings_pl.properties | 14 - .../ui/_i18n/LocalStrings_pt_BR.properties | 14 - .../ui/_i18n/LocalStrings_pt_PT.properties | 14 - .../ui/_i18n/LocalStrings_ru.properties | 14 - .../ui/_i18n/LocalStrings_sq.properties | 14 - .../ui/_i18n/LocalStrings_zh_CN.properties | 14 - .../ui/_i18n/LocalStrings_zh_TW.properties | 14 - .../member/AbstractMemberListController.java | 268 ++++ .../CourseBusinessGroupListController.java | 90 ++ .../olat/course/member/CourseMembership.java | 102 ++ .../course/member/CourseRoleCellRenderer.java | 71 + .../olat/course/member/GroupCellRenderer.java | 55 + .../course/member/MemberListController.java | 44 + .../course/member/MemberListTableModel.java | 76 ++ .../org/olat/course/member/MemberView.java | 126 ++ .../MembersManagementMainController.java | 184 +++ .../member/MembersOverviewController.java | 205 +++ .../course/member/SearchMembersParams.java | 76 ++ .../member/_content/all_member_list.html | 3 + .../course/member/_content/group_list.html | 7 + .../course/member/_content/main_members.html | 4 + .../member/_content/members_overview.html | 11 + .../member/_i18n/LocalStrings_de.properties | 29 + .../member/_i18n/LocalStrings_en.properties | 29 + .../member/_i18n/LocalStrings_fr.properties | 25 + .../olat/course/run/RunMainController.java | 19 +- .../org/olat/group/BusinessGroupService.java | 2 +- .../org/olat/group/BusinessGroupView.java | 2 + .../olat/group/manager/BusinessGroupDAO.java | 34 +- .../manager/BusinessGroupServiceImpl.java | 6 +- .../group/model/BusinessGroupViewImpl.java | 10 + .../AbstractBusinessGroupListController.java | 18 +- .../org/olat/group/ui/main/BGTableItem.java | 20 + .../main/BusinessGroupTableModelWithType.java | 77 +- .../OverviewBusinessGroupListController.java | 4 + .../ui/main/_i18n/LocalStrings_de.properties | 3 + .../ui/management/BGManagementController.java | 1176 ----------------- .../DisposedBGAManagementController.java | 84 -- .../ui/management/_content/arealist.html | 4 - .../ui/management/_content/contextedit.html | 13 - .../_content/disposedbgmanagement.html | 5 - .../ui/management/_content/grouplist.html | 4 - .../group/ui/management/_content/newarea.html | 6 - .../ui/management/_content/newgroup.html | 6 - .../ui/management/_content/overview.html | 15 - .../ui/management/_content/sendmessage.html | 6 - .../ui/management/_content/userdetails.html | 49 - .../ui/management/_content/userlist.html | 15 - .../_i18n/LocalStrings_ar.properties | 87 -- .../_i18n/LocalStrings_bg.properties | 86 -- .../_i18n/LocalStrings_cs.properties | 85 -- .../_i18n/LocalStrings_da.properties | 83 -- .../_i18n/LocalStrings_de.properties | 87 -- .../_i18n/LocalStrings_el.properties | 87 -- .../_i18n/LocalStrings_en.properties | 87 -- .../_i18n/LocalStrings_es.properties | 86 -- .../_i18n/LocalStrings_fa.properties | 78 -- .../_i18n/LocalStrings_fr.properties | 87 -- .../_i18n/LocalStrings_it.properties | 87 -- .../_i18n/LocalStrings_jp.properties | 25 - .../_i18n/LocalStrings_lt.properties | 78 -- .../_i18n/LocalStrings_nl_NL.properties | 87 -- .../_i18n/LocalStrings_pl.properties | 87 -- .../_i18n/LocalStrings_pt_BR.properties | 87 -- .../_i18n/LocalStrings_pt_PT.properties | 83 -- .../_i18n/LocalStrings_ru.properties | 87 -- .../_i18n/LocalStrings_sq.properties | 81 -- .../_i18n/LocalStrings_zh_CN.properties | 87 -- .../_i18n/LocalStrings_zh_TW.properties | 87 -- .../run/BusinessGroupMainRunController.java | 2 +- .../olat/repository/RepositoryManager.java | 59 +- .../model/RepositoryEntryMember.java | 109 ++ .../model/RepositoryEntryMembership.java | 88 +- ....java => RepositoryEntryStrictMember.java} | 2 +- .../model/RepositoryEntryViews.hbm.xml | 20 +- .../ui/SecurityGroupMembersController.java | 87 -- ...ecurityGroupsRepositoryMainController.java | 343 ----- .../database/mysql/alter_8_1_x_to_8_2_0.sql | 21 + .../olat/group/test/BusinessGroupDAOTest.java | 36 +- .../repository/RepositoryManagerTest.java | 73 + 102 files changed, 1882 insertions(+), 4203 deletions(-) delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/CourseGroupManagementMainController.java delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/StringListTableDataModel.java delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_content/cancelled.html delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_content/closing.html delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_content/contextlist.html delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_content/groupandareaselect.html delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_ar.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_bg.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_cs.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_da.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_de.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_el.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_en.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_es.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_fa.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_fr.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_it.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_jp.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_lt.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_nl_NL.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pl.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pt_BR.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pt_PT.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_ru.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_sq.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_zh_CN.properties delete mode 100644 src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_zh_TW.properties create mode 100644 src/main/java/org/olat/course/member/AbstractMemberListController.java create mode 100644 src/main/java/org/olat/course/member/CourseBusinessGroupListController.java create mode 100644 src/main/java/org/olat/course/member/CourseMembership.java create mode 100644 src/main/java/org/olat/course/member/CourseRoleCellRenderer.java create mode 100644 src/main/java/org/olat/course/member/GroupCellRenderer.java create mode 100644 src/main/java/org/olat/course/member/MemberListController.java create mode 100644 src/main/java/org/olat/course/member/MemberListTableModel.java create mode 100644 src/main/java/org/olat/course/member/MemberView.java create mode 100644 src/main/java/org/olat/course/member/MembersManagementMainController.java create mode 100644 src/main/java/org/olat/course/member/MembersOverviewController.java create mode 100644 src/main/java/org/olat/course/member/SearchMembersParams.java create mode 100644 src/main/java/org/olat/course/member/_content/all_member_list.html create mode 100644 src/main/java/org/olat/course/member/_content/group_list.html create mode 100644 src/main/java/org/olat/course/member/_content/main_members.html create mode 100644 src/main/java/org/olat/course/member/_content/members_overview.html create mode 100644 src/main/java/org/olat/course/member/_i18n/LocalStrings_de.properties create mode 100644 src/main/java/org/olat/course/member/_i18n/LocalStrings_en.properties create mode 100644 src/main/java/org/olat/course/member/_i18n/LocalStrings_fr.properties delete mode 100644 src/main/java/org/olat/group/ui/management/BGManagementController.java delete mode 100644 src/main/java/org/olat/group/ui/management/DisposedBGAManagementController.java delete mode 100644 src/main/java/org/olat/group/ui/management/_content/arealist.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/contextedit.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/disposedbgmanagement.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/grouplist.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/newarea.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/newgroup.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/overview.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/sendmessage.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/userdetails.html delete mode 100644 src/main/java/org/olat/group/ui/management/_content/userlist.html delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_ar.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_bg.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_cs.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_da.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_de.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_el.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_en.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_es.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_fa.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_fr.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_it.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_jp.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_lt.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_nl_NL.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pl.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pt_BR.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pt_PT.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_ru.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_sq.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_zh_CN.properties delete mode 100644 src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_zh_TW.properties create mode 100644 src/main/java/org/olat/repository/model/RepositoryEntryMember.java rename src/main/java/org/olat/repository/model/{RepositoryEntryStrictMembership.java => RepositoryEntryStrictMember.java} (96%) delete mode 100644 src/main/java/org/olat/resource/accesscontrol/ui/SecurityGroupMembersController.java delete mode 100644 src/main/java/org/olat/resource/accesscontrol/ui/SecurityGroupsRepositoryMainController.java diff --git a/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java b/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java index 9ebd3378ebc..9be4b9be575 100644 --- a/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java +++ b/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java @@ -152,7 +152,7 @@ public class GroupOverviewController extends BasicController { } //retrieve all user's membership if there are more than 50 groups - List<BusinessGroupMembership> groupsAsOwner = businessGroupService.getBusinessGroupMembership(identity, groupKeysWithMembers); + List<BusinessGroupMembership> groupsAsOwner = businessGroupService.getBusinessGroupMembership(groupKeysWithMembers, identity); Map<Long, BusinessGroupMembership> memberships = new HashMap<Long, BusinessGroupMembership>(); for(BusinessGroupMembership membership: groupsAsOwner) { memberships.put(membership.getGroupKey(), membership); @@ -164,7 +164,7 @@ public class GroupOverviewController extends BasicController { BGTableItem tableItem = new BGTableItem(group, false, membership, Boolean.TRUE, Boolean.FALSE, null); items.add(tableItem); } - tableDataModel.setEntries(items, memberships); + tableDataModel.setEntries(items); groupListCtr.modelChanged(); } diff --git a/src/main/java/org/olat/basesecurity/BaseSecurity.java b/src/main/java/org/olat/basesecurity/BaseSecurity.java index e52e61cfde2..8d44ae4547f 100644 --- a/src/main/java/org/olat/basesecurity/BaseSecurity.java +++ b/src/main/java/org/olat/basesecurity/BaseSecurity.java @@ -183,7 +183,7 @@ public interface BaseSecurity { * @param identityNames * @return The identities */ - public List<IdentityShort> findShortIdentitiesByKey(Collection<Long> identityName); + public List<IdentityShort> findShortIdentitiesByKey(Collection<Long> identityKeys); /** * find an identity by the key instead of the username. Prefer this method as diff --git a/src/main/java/org/olat/course/groupsandrights/ui/CourseGroupManagementMainController.java b/src/main/java/org/olat/course/groupsandrights/ui/CourseGroupManagementMainController.java deleted file mode 100644 index fb087445280..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/CourseGroupManagementMainController.java +++ /dev/null @@ -1,113 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <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 -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <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> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.course.groupsandrights.ui; - -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -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.MainLayoutBasicController; -import org.olat.core.id.OLATResourceable; -import org.olat.core.logging.activity.ActionType; -import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; -import org.olat.course.CourseFactory; -import org.olat.course.ICourse; -import org.olat.course.groupsandrights.CourseGroupManager; -import org.olat.group.GroupLoggingAction; -import org.olat.group.ui.management.BGManagementController; -import org.olat.resource.OLATResource; -import org.olat.util.logging.activity.LoggingResourceable; - -/** - * Description:<BR/> This controller searches for available group contexts for - * this course. Currently only one context per grouptype per course is - * supported. <P/> - * - * Initial Date: Aug 25, 2004 - * @author gnaegi - */ -public class CourseGroupManagementMainController extends MainLayoutBasicController { - - private final BGManagementController groupManageCtr; - - - /** - * Constructor for the course group management main controller - * - * @param ureq - * @param wControl - * @param course - * @param groupType - */ - public CourseGroupManagementMainController(UserRequest ureq, WindowControl wControl, OLATResourceable ores) { - super(ureq, wControl); - - getUserActivityLogger().setStickyActionType(ActionType.admin); - - // set user activity logger for this controller - ICourse course = CourseFactory.loadCourse(ores); - addLoggingResourceable(LoggingResourceable.wrap(course)); - - CourseGroupManager groupManager = course.getCourseEnvironment().getCourseGroupManager(); - OLATResource courseResource = groupManager.getCourseResource(); - - groupManageCtr = new BGManagementController(ureq, getWindowControl(), courseResource, course.getCourseTitle(), false); - listenTo(groupManageCtr); - putInitialPanel(groupManageCtr.getInitialComponent()); - - // logging - ThreadLocalUserActivityLogger.log(GroupLoggingAction.GROUPMANAGEMENT_START, getClass()); - } - - /** - * @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) { - // empty - } - - /** - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, - * org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event) - */ - public void event(UserRequest ureq, Controller source, Event event) { - if (source == groupManageCtr) { - if (event == Event.DONE_EVENT) { - // Send done event to parent controller - fireEvent(ureq, Event.DONE_EVENT); - } - } - } - - /** - * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) - */ - protected void doDispose() { - ThreadLocalUserActivityLogger.log(GroupLoggingAction.GROUPMANAGEMENT_CLOSE, getClass()); - } -} \ No newline at end of file diff --git a/src/main/java/org/olat/course/groupsandrights/ui/StringListTableDataModel.java b/src/main/java/org/olat/course/groupsandrights/ui/StringListTableDataModel.java deleted file mode 100644 index 2e45af2f85c..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/StringListTableDataModel.java +++ /dev/null @@ -1,80 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <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 -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <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> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.course.groupsandrights.ui; - -import java.util.List; - -import org.olat.core.gui.components.table.DefaultTableDataModel; - -/** - * Description:<BR/> - * Table data model for one string that can be used in a choice list - * - * Initial Date: Oct 5, 2004 - * @author gnaegi - */ -public class StringListTableDataModel extends DefaultTableDataModel { - List selectedStrings; - - /** - * @param allStrings All possible strings - * @param selectedStrings The preselected strings - */ - public StringListTableDataModel(List allStrings, List selectedStrings) { - super(allStrings); - this.selectedStrings = selectedStrings; - } - - /** - * @see org.olat.core.gui.components.table.TableDataModel#getColumnCount() - */ - public int getColumnCount() { - return 2; - } - - /** - * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int) - */ - public Object getValueAt(int row, int col) { - if (col == 0) { - return selectedStrings.contains(getString(row)) ? Boolean.TRUE : Boolean.FALSE; - } - else if (col == 1) { - return getString(row); - } - else{ - return "ERROR"; - } - } - - /** - * @param row - * @return The string at the given row position - */ - public String getString(int row) { - return (String) super.getObject(row); - } -} diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_content/cancelled.html b/src/main/java/org/olat/course/groupsandrights/ui/_content/cancelled.html deleted file mode 100644 index 7eed8bb82b0..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_content/cancelled.html +++ /dev/null @@ -1 +0,0 @@ -<script type="text/javascript">this.window.close();</script> \ No newline at end of file diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_content/closing.html b/src/main/java/org/olat/course/groupsandrights/ui/_content/closing.html deleted file mode 100644 index 6c2138e2e0d..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_content/closing.html +++ /dev/null @@ -1,16 +0,0 @@ -autoclosing... -<script type="text/javascript"> -var retval="$val"; -//alert("set val"); -var ope = this.window.opener; -//alert(ope); -var elem = ope.document.getElementById("$var"); -//alert("var: $var ; elem:"+elem); -if (elem) { - elem.value=retval; - // set original form dirty and close window - var origFormId = elem.form.getAttribute("id"); - ope.setFormDirty(origFormId); -} -this.window.close(); // close first, safari bug will not close window otherwhise -</script> \ No newline at end of file diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_content/contextlist.html b/src/main/java/org/olat/course/groupsandrights/ui/_content/contextlist.html deleted file mode 100644 index 907f7b88fee..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_content/contextlist.html +++ /dev/null @@ -1,9 +0,0 @@ -<h4 class="b_with_small_icon_left b_group_icon"> - $r.translate("course.contextlist.title") -</h4> -<p> -$r.translate("course.contextlist.intro") -</p> -<p> -$r.render("contextlist") -</p> diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_content/groupandareaselect.html b/src/main/java/org/olat/course/groupsandrights/ui/_content/groupandareaselect.html deleted file mode 100644 index 2b8e4b58160..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_content/groupandareaselect.html +++ /dev/null @@ -1,15 +0,0 @@ -<fieldset> - <legend>$title</legend> -#if ($hasChoices) - $r.render("stringChoice") -#else - <p> - $noChoicesText - </p> - <p align="center"> - <a class="b_button" href="#" onclick="javascript:window.close()" onkeypress="javascript:window.close()"/> - <span>$r.translate("close")</span> - </a> - </p> -#end -</fieldset> \ No newline at end of file diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_ar.properties deleted file mode 100644 index 7f5aaef3287..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_ar.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Tue Feb 16 11:27:16 CET 2010 -cmd.close=\u0625\u063A\u0644\u0627\u0642 -course.contextlist.intro=\u064A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0631\u0631 \u0625\u062F\u0627\u0631\u0629 \u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0645\u0642\u0631\u0631 \u0627\u0644\u0634\u0627\u0645\u0644\u0629 \u0648\u0627\u0644\u062F\u0627\u062E\u0644\u064A\u0629\u060C \u0648\u064A\u0645\u0643\u0646 \u0645\u0639\u0627\u0644\u062C\u062A\u0647\u0645 \u0648\u0627\u062D\u062F\u0629 \u062A\u0644\u0648\u0627 \u0627\u0644\u0623\u062E\u0631\u0649\u060C \u064A\u0631\u062C\u0649 \u0627\u062E\u062A\u064A\u0627\u0631 \u0625\u062F\u0627\u0631\u0629 \u0645\u062C\u0645\u0648\u0639\u0629 \u0645\u0646 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0628\u0627\u0644\u0623\u0633\u0641\u0644 \u0644\u0645\u062F\u064A\u0631 \u0645\u062C\u0645\u0648\u0639\u062A\u0643. -course.contextlist.title=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0644\u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0631\u0631 -groupandareaselect.areas.nodata=\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062C\u0627\u0644\u0627\u062A \u0644\u0644\u062A\u0639\u0644\u064A\u0645 \u0645\u062D\u062F\u062F\u0629 \u0641\u0649 \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643 -groupandareaselect.areas.title=\u0645\u062C\u0627\u0644\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u064A\u0645 \u0645\u0646 \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -groupandareaselect.groups.nodata=\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062C\u0627\u0644\u0627\u062A \u0644\u0644\u062A\u0639\u0644\u064A\u0645 \u0645\u062D\u062F\u062F\u0629 \u0641\u0649 \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643 -groupandareaselect.groups.title=\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u064A\u0645 \u0645\u0646 \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -groupmanagement.index=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -groupmanagement.index.alt=\u0625\u062F\u0627\u0631\u0629 \u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u064A\u0645 -rightmanagement.index=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u062D\u0642\u0648\u0642 -rightmanagement.index.alt=\u0625\u062F\u0631\u0627\u0629 \u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0627\u0644\u062D\u0642\u0648\u0642 -tools.title.groupmanagement=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -tools.title.rightmanagement=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u062D\u0642\u0648\u0642 diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_bg.properties deleted file mode 100644 index 82a4db9f9c7..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_bg.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Wed Jun 03 20:08:07 CEST 2009 -cmd.close=\u0417\u0430\u0442\u0432\u043E\u0440\u0435\u0442\u0435 -course.contextlist.intro=\u0422\u043E\u0437\u0438 \u043A\u0443\u0440\u0441 \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430 \u0432\u044A\u0442\u0440\u0435\u0448\u043D\u0438 \u0438 \u0434\u0435\u0442\u0430\u0439\u043B\u043D\u0438 \u043A\u0443\u0440\u0441\u043E\u0432\u0438 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u0438 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430. \u0422\u0435 \u043C\u043E\u0433\u0430\u0442 \u0434\u0430 \u0431\u044A\u0434\u0430\u0442 \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u0438 \u0441\u0430\u043C\u043E \u0435\u0434\u0438\u043D \u043F\u043E \u0435\u0434\u0438\u043D. \u041C\u043E\u043B\u044F, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u043E\u0442 \u0441\u043F\u0438\u0441\u044A\u043A\u0430 \u043F\u043E-\u0434\u043E\u043B\u0443, \u0437\u0430 \u0434\u0430 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u0442\u0435 \u0433\u0440\u0443\u043F\u0438. -course.contextlist.title=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u0438 \u043D\u0430 \u0433\u0440\u0443\u043F\u0438 \u043D\u0430 \u0442\u043E\u0437\u0438 \u043A\u0443\u0440\u0441 -groupandareaselect.areas.nodata=\u041D\u044F\u043C\u0430 \u0443\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438 \u0432\u044A\u0432 \u0432\u0430\u0448\u0438\u044F \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -groupandareaselect.areas.title=\u0423\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438 \u043E\u0442 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u0430 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -groupandareaselect.groups.nodata=\u041D\u044F\u043C\u0430 \u0443\u0447\u0435\u0431\u043D\u0438 \u0433\u0440\u0443\u043F\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438 \u0432\u044A\u0432 \u0432\u0430\u0448\u0438\u044F \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -groupandareaselect.groups.title=\u0423\u0447\u0435\u0431\u043D\u0438 \u0433\u0440\u0443\u043F\u0438 \u043E\u0442 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u0430 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -groupmanagement.index=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -groupmanagement.index.alt=\u041C\u0435\u043D\u0430\u0436\u0438\u0440\u0430\u0439\u0442\u0435 \u0443\u0447\u0435\u0431\u043D\u0438 \u0433\u0440\u0443\u043F\u0438 -rightmanagement.index=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u043F\u0440\u0430\u0432\u0430 -rightmanagement.index.alt=\u041C\u0435\u043D\u0430\u0436\u0438\u0440\u0430\u0439\u0442\u0435 \u0433\u0440\u0443\u043F\u0438 \u0441\u044A\u0441 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u043D\u0438 \u043F\u0440\u0430\u0432\u0430 -tools.title.groupmanagement=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -tools.title.rightmanagement=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u043F\u0440\u0430\u0432\u0430 diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_cs.properties deleted file mode 100644 index 5ba19c907b6..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_cs.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:14 CET 2009 -cmd.close=Zav\u0159\u00EDt -course.contextlist.intro=Tento kurz pou\u017E\u00EDv\u00E1 jak vnit\u0159n\u00ED tak v\u0161eobecn\u00E9 spravov\u00E1n\u00ED skupin. M\u016F\u017Ee b\u00FDt \u0159\u00EDzen pouze po jednom. Pros\u00EDm vyberte ke spr\u00E1v\u011B skupinu z n\u00E1sleduj\u00EDc\u00EDho seznamu. -course.contextlist.title=Skupinov\u00E1 spr\u00E1va tohoto kurzu -groupandareaselect.areas.nodata=Nejsou definov\u00E1n \u017E\u00E1dn\u00E9 studijn\u00ED oblasti ve spr\u00E1vci skupin. -groupandareaselect.areas.title=Studijn\u00ED oblasti ze spr\u00E1vce oblast\u00ED -groupandareaselect.groups.nodata=Nejsou definov\u00E1ny \u017E\u00E1dn\u00E9 studijn\u00ED skupiny ve spr\u00E1vci skupin -groupandareaselect.groups.title=Studijn\u00ED skupiny ze spr\u00E1vce skupin -groupmanagement.index=Spr\u00E1va skupin -groupmanagement.index.alt=Spravovat studijn\u00ED skupiny -rightmanagement.index=Spr\u00E1va pr\u00E1v -rightmanagement.index.alt=Spr\u00E1va skupin pr\u00E1v -tools.title.groupmanagement=Spr\u00E1va pr\u00E1va -tools.title.rightmanagement=Spr\u00E1va pr\u00E1v diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_da.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_da.properties deleted file mode 100644 index ea60b13e9cd..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_da.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:08 CET 2009 -cmd.close=Luk -course.contextlist.intro=Dette kursus benytter interne og kursusspecifik gruppeadministration. Disse kan kun tilpasses hver for sig. V\u00E6lg venligst gruppeadministration fra listen nedenfor for at administrere grupper. -course.contextlist.title=Gruppeadministration for dette kursus -groupandareaselect.areas.nodata=Der er ingen l\u00E6ringsomr\u00E5der defineret i gruppeadministration -groupandareaselect.areas.title=L\u00E6ringsomr\u00E5der fra gruppeadministration -groupandareaselect.groups.nodata=Der er ingen l\u00E6ringsgrupper defineret i gruppeadministration -groupandareaselect.groups.title=L\u00E6ringsgrupper fra gruppeadministration -groupmanagement.index=Gruppeadministration -groupmanagement.index.alt=Administrer l\u00E6ringsgrupper -rightmanagement.index=Rettighedsadministration -rightmanagement.index.alt=Administrer rettighedsgrupper -tools.title.groupmanagement=Gruppeadministration -tools.title.rightmanagement=Rettighedsadministration diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_de.properties deleted file mode 100644 index 5e4009ffcd9..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_de.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:04 CET 2009 -cmd.close=Schliessen -course.contextlist.intro=Dieser Kurs verwendet kursinterne- und kurs\u00FCbergreifende Gruppenmanagemente. Diese k\u00F6nnen nur einzeln manipuliert werden. Bitte w\u00E4hlen Sie aus der untenstehenden Liste ein Gruppenmanagement aus, um Gruppen zu verwalten. -course.contextlist.title=Gruppenverwaltungen dieses Kurses -groupandareaselect.areas.nodata=Es existieren noch keine Lernbereiche im Gruppenmanagement -groupandareaselect.areas.title=Lernbereiche aus Gruppenmanagement -groupandareaselect.groups.nodata=Es existieren noch keine Lerngruppen im Gruppenmanagement -groupandareaselect.groups.title=Lerngruppen aus Gruppenmanagement -groupmanagement.index=Gruppenmanagement -groupmanagement.index.alt=Verwalten Sie Lerngruppen -rightmanagement.index=Rechtemanagement -rightmanagement.index.alt=Verwalten Sie Rechtegruppen -tools.title.groupmanagement=Gruppenmanagement -tools.title.rightmanagement=Rechtemanagement diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_el.properties deleted file mode 100644 index 9a5b14b2cbe..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_el.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:15 CET 2009 -cmd.close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF -course.contextlist.intro=\u03A4\u03BF \u03BC\u03AC\u03B8\u03B7\u03BC\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF \u03B5\u03C3\u03C9\u03C4\u03B5\u03C1\u03B9\u03BA\u03AD\u03C2 \u03BA\u03B1\u03B9 \u03C3\u03C7\u03B5\u03C4\u03B9\u03BA\u03AD\u03C2 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03AC\u03B8\u03B7\u03BC\u03B1 \u03B4\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03AF\u03C3\u03B5\u03B9\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2. \u039C\u03C0\u03BF\u03C1\u03B5\u03AF\u03C4\u03B5 \u03BD\u03B1 \u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF\u03C4\u03B5 \u03BC\u03CC\u03BD\u03BF \u03BC\u03AF\u03B1 \u03BA\u03AC\u03B8\u03B5 \u03C6\u03BF\u03C1\u03AC. \u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03BF\u03CD\u03BC\u03B5 \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03BC\u03B9\u03B1 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B4\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C4\u03B5 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2. -course.contextlist.title=\u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03AF\u03C3\u03B5\u03B9\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03C4\u03BF\u03C5 \u03BC\u03B1\u03B8\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 -groupandareaselect.areas.nodata=\u0394\u03B5\u03BD \u03AD\u03C7\u03BF\u03C5\u03BD \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AD\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C3\u03C4\u03B7 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -groupandareaselect.areas.title=\u03A0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AD\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -groupandareaselect.groups.nodata=\u0394\u03B5\u03BD \u03AD\u03C7\u03BF\u03C5\u03BD \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C3\u03C4\u03B7 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -groupandareaselect.groups.title=\u039F\u03BC\u03AC\u03B4\u03B5\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -groupmanagement.index=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -groupmanagement.index.alt=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -rightmanagement.index=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03B4\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD -rightmanagement.index.alt=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD \u03B4\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD -tools.title.groupmanagement=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -tools.title.rightmanagement=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03B4\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_en.properties deleted file mode 100644 index ecd41d964c5..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_en.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Fri Jan 21 13:51:21 CET 2011 -cmd.close=Close -course.contextlist.intro=This course uses internal and course-comprehensive group managements. Those can be manipulated only one by one. Please select a group management from the list below to administer your groups. -course.contextlist.title=Group managements of this course -groupandareaselect.areas.nodata=There are no learning areas defined in your group management -groupandareaselect.areas.title=Learning areas from group management -groupandareaselect.groups.nodata=There are no learning groups defined in your group management -groupandareaselect.groups.title=Learning groups from group management -groupmanagement.index=Group management -groupmanagement.index.alt=Manage learning groups -rightmanagement.index=Rights management -rightmanagement.index.alt=Manage right groups -tools.title.groupmanagement=Group management -tools.title.rightmanagement=Rights management diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_es.properties deleted file mode 100644 index 84f3e6a0eeb..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_es.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:20 CET 2009 -cmd.close=Cerrar -course.contextlist.intro=Este curso utiliza la administraci\u00F3n de grupos interna y exhaustivamente. Esto s\u00F3lo puede ser manipulado uno por uno. Por favor selecciona un administrador de grupo de la siguiente lista para administrar grupos. -course.contextlist.title=Administraci\u00F3n de grupos de este curso -groupandareaselect.areas.nodata=No hay \u00E1reas de aprendizaje definidas en administraci\u00F3n de grupos -groupandareaselect.areas.title=\u00C1reas de aprendizaje de administraci\u00F3n de grupos -groupandareaselect.groups.nodata=No hay grupos de estudios definidos en administraci\u00F3n de grupos -groupandareaselect.groups.title=Grupos de estudios de administraci\u00F3n de grupos -groupmanagement.index=Administrador de grupo -groupmanagement.index.alt=Administrar grupos de estudios -rightmanagement.index=Administrar permisos -rightmanagement.index.alt=Administrar grupos de permisos -tools.title.groupmanagement=Administrar grupo -tools.title.rightmanagement=Administrar permisos diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_fa.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_fa.properties deleted file mode 100644 index 41d14185f56..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_fa.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:12 CET 2009 -cmd.close=\u0628\u0633\u062A\u0646 -course.contextlist.intro=This course uses internal and course comprehensive group managements. Those can be manipulated only one by one. Please select a group management from the list below to administer groups. -course.contextlist.title=\u0645\u062F\u06CC\u0631\u0627\u0646 \u06AF\u0631\u0648\u0647 \u0627\u06CC\u0646 \u062F\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634\u06CC -groupandareaselect.areas.nodata=\u0647\u06CC\u0686 \u062D\u0648\u0632\u0647 \u0622\u0645\u0648\u0632\u0634\u06CC \u062F\u0631 \u0645\u062F\u06CC\u0631\u06CC\u062A \u06AF\u0631\u0648\u0647 \u062A\u0639\u0631\u06CC\u0641 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A. -groupandareaselect.areas.title=Learning areas from group management -groupandareaselect.groups.nodata=\u0647\u06CC\u0686 \u06AF\u0631\u0648\u0647 \u0622\u0645\u0648\u0632\u0634\u06CC \u062F\u0631 \u0645\u062F\u06CC\u0631\u06CC\u062A \u06AF\u0631\u0648\u0647 \u062A\u0639\u0631\u06CC\u0641 \u0646\u0634\u062F\u0647 \u0627\u0633\u062A. -groupandareaselect.groups.title=Learning groups from group management -groupmanagement.index=\u0645\u062F\u06CC\u0631\u06CC\u062A \u06AF\u0631\u0648\u0647 -groupmanagement.index.alt=\u0645\u062F\u06CC\u0631\u06CC\u062A \u06AF\u0631\u0648\u0647 \u0647\u0627\u06CC \u0622\u0645\u0648\u0632\u0634\u06CC -rightmanagement.index=Rights management -rightmanagement.index.alt=Manage right groups -tools.title.groupmanagement=\u0645\u062F\u06CC\u0631\u06CC\u062A \u06AF\u0631\u0648\u0647 -tools.title.rightmanagement=Rights management diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_fr.properties deleted file mode 100644 index a7087e875a9..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_fr.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Sun Sep 05 11:25:04 CEST 2010 -cmd.close=Fermer -course.contextlist.intro=Ce cours utilise des gestions de groupes internes au cours et pour plusieurs cours qui ne peuvent \u00EAtre manipul\u00E9s seulement isol\u00E9ment. Veuillez choisir une gestion de groupes dans la liste suivante pour administrer les groupes dans cette derni\u00E8re SVP. -course.contextlist.title=Gestion des groupes du cours -groupandareaselect.areas.nodata=Il n'existe pas encore de domaines d'\u00E9tude dans la gestion des groupes. -groupandareaselect.areas.title=Domaines d'\u00E9tude de la gestion des groupes -groupandareaselect.groups.nodata=Il n'existe pas encore de groupe d'\u00E9tude dans la gestion de groupes. -groupandareaselect.groups.title=Groupes d'\u00E9tude de la gestion de groupes -groupmanagement.index=Gestion de groupes -groupmanagement.index.alt=G\u00E9rez des groupes d'\u00E9tude -rightmanagement.index=Gestion de droits -rightmanagement.index.alt=G\u00E9rez des groupes de droits -tools.title.groupmanagement=Gestion de groupes -tools.title.rightmanagement=Gestion de droits diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_it.properties deleted file mode 100644 index 703012f52a8..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_it.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Feb 08 13:04:36 CET 2010 -cmd.close=Chiudere -course.contextlist.intro=Questo corso utilizza gestioni dei gruppi interne al corso o condivise tra corsi\: queste possono venire manipolate solo singolarmente. Selezioni dalla lista sottostante una gestione dei gruppi per gestire un gruppo. -course.contextlist.title=Amministrazioni di questo corso -groupandareaselect.areas.nodata=Non esistono ancora aree di studio nella gestione dei gruppi. -groupandareaselect.areas.title=Aree di studio dalla gestione dei gruppi -groupandareaselect.groups.nodata=Non esistono ancora gruppi di studio nella gestione dei gruppi. -groupandareaselect.groups.title=Gruppi di studio dalla gestione dei gruppi -groupmanagement.index=Gestione dei gruppi -groupmanagement.index.alt=Gestisca i gruppi di studio. -rightmanagement.index=Gestione dei diritti -rightmanagement.index.alt=Gestisca i gruppi con diritti. -tools.title.groupmanagement=Gestione dei gruppi -tools.title.rightmanagement=Gestione dei diritti diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_jp.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_jp.properties deleted file mode 100644 index e44c7077e30..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_jp.properties +++ /dev/null @@ -1,13 +0,0 @@ -#Mon Dec 14 03:23:00 CET 2009 -cmd.close=\u9589\u3058\u308B -course.contextlist.title=\u3053\u306E\u30B3\u30FC\u30B9\u306E\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406 -groupandareaselect.areas.nodata=\u3042\u306A\u305F\u306E\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406\u306B\u306F\u3001\u5B9A\u7FA9\u3055\u308C\u305F\u5B66\u7FD2\u30A8\u30EA\u30A2\u306F\u3042\u308A\u307E\u305B\u3093\u3002 -groupandareaselect.areas.title=\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406\u304B\u3089\u306E\u5B66\u7FD2\u30A8\u30EA\u30A2 -groupandareaselect.groups.nodata=\u3042\u306A\u305F\u306E\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406\u306B\u306F\u3001\u5B9A\u7FA9\u3055\u308C\u305F\u5B66\u7FD2\u30B0\u30EB\u30FC\u30D7\u306F\u3042\u308A\u307E\u305B\u3093\u3002 -groupandareaselect.groups.title=\u5B66\u7FD2\u7BA1\u7406\u304B\u3089\u306E\u5B66\u7FD2\u30B0\u30EB\u30FC\u30D7 -groupmanagement.index=\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406 -groupmanagement.index.alt=\u5B66\u7FD2\u30B0\u30EB\u30FC\u30D7\u3092\u7BA1\u7406\u3059\u308B -rightmanagement.index=\u6A29\u5229\u7BA1\u7406 -rightmanagement.index.alt=\u30B0\u30EB\u30FC\u30D7\u6A29\u5229\u3092\u7BA1\u7406\u3059\u308B -tools.title.groupmanagement=\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406 -tools.title.rightmanagement=\u6A29\u5229\u7BA1\u7406 diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_lt.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_lt.properties deleted file mode 100644 index c5bc4fd200f..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_lt.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:02 CET 2009 -cmd.close=U\u017Edaryti -course.contextlist.intro=\u0160is kursas naudoja vidinius ir i\u0161samius kursus grupi\u0173 tvarkymuose. Jie gali valdyti tik vienas kit\u0105. Pra\u0161ome pa\u017Eym\u0117kite grup\u0117s tvarkym\u0105 i\u0161 s\u0105ra\u0161o esan\u010Dio grup\u0173 tvarkymo apa\u010Dioje. -course.contextlist.title=\u0160io kurso grup\u0117s tvarkymas -groupandareaselect.areas.nodata=\u010Cia n\u0117ra mokymosi vietos apib\u016Bdintos grup\u0117s tvarkyme -groupandareaselect.areas.title=Mokymosi vieta i\u0161 grup\u0117s tvarkymo -groupandareaselect.groups.nodata=\u010Cia n\u0117ra mokymosi grup\u0117s apib\u016Bdintos grup\u0117s tvarkyme -groupandareaselect.groups.title=Mokymosi grup\u0117s i\u0161 grup\u0117s tvarkymo -groupmanagement.index=Grupi\u0173 tvarkymas -groupmanagement.index.alt=Tvarkyti mokymosi grupes -rightmanagement.index=Teisi\u0173 tvarkymas -rightmanagement.index.alt=Tvarkyti teisi\u0173 grupes -tools.title.groupmanagement=Grupi\u0173 tvarkymas -tools.title.rightmanagement=Teisi\u0173 tvarkymas diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_nl_NL.properties deleted file mode 100644 index b1d6b16fc47..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_nl_NL.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Thu Sep 08 16:42:44 CEST 2011 -cmd.close=Sluit -course.contextlist.intro=Deze cursus gebruikt interne en cursus-omvattende groepsmanagement. Deze kunnen enkel \u00E9\u00E9n voor \u00E9\u00E9n gemanupuleerd worden. Gelieve een groepsmanagement uit de onderstaande lijst te selecteren om uw groepen te beheren. -course.contextlist.title=Groepsmanagements ven deze cursus -groupandareaselect.areas.nodata=Er zijn geen leerruimtes gedefinieerd in uw groepsmanagement. -groupandareaselect.areas.title=Leerruimtes van groepsmanagement. -groupandareaselect.groups.nodata=Er zijn geen leergroepen gedefineerd in uw groepsmanagament -groupandareaselect.groups.title=Leergroepen van groepsmanagement -groupmanagement.index=Groepsmanagement -groupmanagement.index.alt=Beheer leergroepen -rightmanagement.index=Rechtenbeheer -rightmanagement.index.alt=Beheer rechtengroepen -tools.title.groupmanagement=Groepsmanagement -tools.title.rightmanagement=Rechtenbeheer diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pl.properties deleted file mode 100644 index 7e20e1c3a7f..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pl.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:17 CET 2009 -cmd.close=Zamknij -course.contextlist.intro=Wybierz zarz\u0105dzanie grupami z poni\u017Cszej listy. -course.contextlist.title=Administracja grupy tego kursu. -groupandareaselect.areas.nodata=Nie ma \u017Cadnych obszar\u00F3w edukacyjnych w zarz\u0105dzaniu grup\u0105 -groupandareaselect.areas.title=Obszary edukacyjne z zarz\u0105dzania grup\u0105 -groupandareaselect.groups.nodata=Nie ma \u017Cadnych grupy edukacyjnych w zarz\u0105dzaniu grup\u0105 -groupandareaselect.groups.title=Grupy edukacyjne z zarz\u0105dzania grup\u0105 -groupmanagement.index=Zarz\u0105dzanie grup\u0105 -groupmanagement.index.alt=Zarz\u0105dzaj grupami edukacyjnymi -rightmanagement.index=Zarz\u0105dzanie uprawnieniami -rightmanagement.index.alt=Zarz\u0105dzanie grupami uprawnie\u0144 -tools.title.groupmanagement=Zarz\u0105dzanie grupami -tools.title.rightmanagement=Zarz\u0105dzanie uprawnieniami diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pt_BR.properties deleted file mode 100644 index ea8c70d4ae8..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pt_BR.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:53:59 CET 2009 -cmd.close=Fechar -course.contextlist.intro=Este curso usa gest\u00E3o interna e grupo gestor. Estes podem ser manipulados apenas um a um. Favor selecionar um grupo gestor da lista abaixo para administrar grupos. -course.contextlist.title=Grupo gestor deste curso -groupandareaselect.areas.nodata=N\u00E3o h\u00E1 nenhuma \u00E1rea de ensino definida no grupo gestor -groupandareaselect.areas.title=\u00C1reas de ensino do grupo gestor -groupandareaselect.groups.nodata=N\u00E3o h\u00E1 nenhum grupo de estudo definido no grupo gestor -groupandareaselect.groups.title=Grupos de estudo do grupo gestor -groupmanagement.index=Grupo gestor -groupmanagement.index.alt=Administrar grupos de estudo -rightmanagement.index=Administrar direitos -rightmanagement.index.alt=Administrar grupos de direitos -tools.title.groupmanagement=Grupo gestor -tools.title.rightmanagement=Administrar direitos diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pt_PT.properties deleted file mode 100644 index 079baeae932..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_pt_PT.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:05 CET 2009 -cmd.close=Fechar -course.contextlist.intro=Este curso usa gest\u00E3o interna e grupo gestor. Estes podem ser manipulados apenas um a um. Favor selecionar um grupo gestor da lista abaixo para administrar grupos. -course.contextlist.title=Grupo gestor deste curso -groupandareaselect.areas.nodata=N\u00E3o h\u00E1 nenhuma \u00E1rea de ensino definida no grupo gestor -groupandareaselect.areas.title=\u00C1reas de ensino do grupo gestor -groupandareaselect.groups.nodata=N\u00E3o h\u00E1 nenhum grupo de estudo definido no grupo gestor -groupandareaselect.groups.title=Grupos de estudo do grupo gestor -groupmanagement.index=Grupo gestor -groupmanagement.index.alt=Administrar grupos de estudo -rightmanagement.index=Administrar direitos -rightmanagement.index.alt=Administrar grupos de direitos -tools.title.groupmanagement=Grupo gestor -tools.title.rightmanagement=Administrar direitos diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_ru.properties deleted file mode 100644 index c2d975a362c..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_ru.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:19 CET 2009 -cmd.close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C -course.contextlist.intro=\u0414\u0430\u043D\u043D\u044B\u0439 \u043A\u0443\u0440\u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u043A\u0430\u043A \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u0430\u043C\u0438 \u0432\u043D\u0443\u0442\u0440\u0438 \u043A\u0443\u0440\u0441\u0430, \u0442\u0430\u043A \u0438 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u0430\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043E\u0445\u0432\u0430\u0442\u044B\u0432\u0430\u044E\u0442 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0440\u0430\u0437\u043D\u044B\u0445 \u043A\u0443\u0440\u0441\u043E\u0432. \u0418\u0445 \u043C\u043E\u0436\u043D\u043E \u043C\u043E\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438. \u041F\u043E\u0436\u0430\u0439\u043B\u0443\u0441\u0442\u0430, \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0437 \u043D\u0438\u0436\u0435\u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430 \u043E\u0434\u043D\u043E \u0438\u0437 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043C\u043E\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443. -course.contextlist.title=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 \u044D\u0442\u043E\u0433\u043E \u043A\u0443\u0440\u0441\u0430 -groupandareaselect.areas.nodata=\u0412 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 \u0435\u0449\u0451 \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -groupandareaselect.areas.title=\u041E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u0437 "\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0433\u0440\u0443\u043F\u043F\u043E\u0439" -groupandareaselect.groups.nodata=\u0412 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 \u0435\u0449\u0451 \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u0440\u0443\u043F\u043F \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -groupandareaselect.groups.title=\u0413\u0440\u0443\u043F\u043F\u044B \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u0437 "\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0433\u0440\u0443\u043F\u043F\u043E\u0439" -groupmanagement.index=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 -groupmanagement.index.alt=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u0430\u043C\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -rightmanagement.index=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u0430\u0432\u0430\u043C\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 -rightmanagement.index.alt=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u0430\u043C\u0438 \u043F\u0440\u0430\u0432 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 -tools.title.groupmanagement=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 -tools.title.rightmanagement=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u0430\u0432\u0430\u043C\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_sq.properties deleted file mode 100644 index a24fa67fffe..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_sq.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:11 CET 2009 -cmd.close=Mbyll -course.contextlist.intro=Ky kurs p\u00EBrdor menaxhmentet e grupeve n\u00EB t\u00EBr\u00EBsi t\u00EB kurseve dhe t\u00EB brendshme. Kjo mund t\u00EB manipulohet nj\u00EB nga nj\u00EB. Ju lutem p\u00EBrzgjedhni nj\u00EB menaxhment e grupit nga lista m\u00EB posht\u00EB p\u00EBr t\u00EB menaxhuar grupet. -course.contextlist.title=Administrimi i grupeve t\u00EB k\u00EBtij kursi -groupandareaselect.areas.nodata=Nuk ka ndonj\u00EB hap\u00EBsir\u00EB m\u00EBsimi t\u00EB p\u00EBrkufizuar n\u00EB menaxhmentin e grupeve -groupandareaselect.areas.title=Hap\u00EBsirat e m\u00EBsimit nga menaxhmenti i grupeve -groupandareaselect.groups.nodata=Nuk ka ndonj\u00EB grup m\u00EBsimi t\u00EB p\u00EBrkufizuar n\u00EB menaxhmentin e grupeve -groupandareaselect.groups.title=Grupe m\u00EBsimi nga menaxhmenti i grupeve -groupmanagement.index=Menaxhimi i grupit -groupmanagement.index.alt=Menaxho grupet e m\u00EBsimit -rightmanagement.index=Menaxhmentet e t\u00EB drejtave -rightmanagement.index.alt=Menaxho grupet e t\u00EB drejtave -tools.title.groupmanagement=Menaxhimi i grupit -tools.title.rightmanagement=Menaxhimi i t\u00EB drejtave diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_zh_CN.properties deleted file mode 100644 index 0960cfc339e..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_zh_CN.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Mon Mar 02 09:54:03 CET 2009 -cmd.close=\u5173\u95ED -course.contextlist.intro=\u8BE5\u8BFE\u7A0B\u8FD0\u7528\u8BFE\u7A0B\u5185\u90E8\u548C\u4EA4\u53E0\u7FA4\u7EC4\u7BA1\u7406\uFF0C\u64CD\u4F5C\u53EA\u80FD\u4E00\u4E2A\u4E00\u4E2A\u8FDB\u884C\u3002\u8BF7\u4ECE\u4EE5\u4E0B\u5217\u8868\u4E2D\u9009\u62E9\u4E00\u4E2A\u7FA4\u7EC4\u7BA1\u7406\u3002 -course.contextlist.title=\u8BE5\u8BFE\u7A0B\u7684\u7FA4\u7EC4\u7BA1\u7406 -groupandareaselect.areas.nodata=\u5728\u7BA1\u7406\u7FA4\u7EC4\u4E2D\u672A\u5B9A\u4E49\u4EFB\u4F55\u5B66\u4E60\u533A\u57DF -groupandareaselect.areas.title=\u7FA4\u7EC4\u7BA1\u7406\u4E2D\u7684\u5B66\u4E60\u533A\u57DF -groupandareaselect.groups.nodata=\u5728\u7BA1\u7406\u7FA4\u7EC4\u4E2D\u672A\u5B9A\u4E49\u4EFB\u4F55\u5B66\u4E60\u7EC4 -groupandareaselect.groups.title=\u7FA4\u7EC4\u7BA1\u7406\u4E2D\u7684\u5B66\u4E60\u7EC4 -groupmanagement.index=\u7FA4\u7EC4\u7BA1\u7406 -groupmanagement.index.alt=\u7BA1\u7406\u5B66\u4E60\u7EC4 -rightmanagement.index=\u6743\u9650\u7BA1\u7406 -rightmanagement.index.alt=\u7BA1\u7406\u6743\u9650\u7EC4 -tools.title.groupmanagement=\u7BA1\u7406\u7FA4\u7EC4 -tools.title.rightmanagement=\u6743\u9650\u7BA1\u7406 diff --git a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_zh_TW.properties deleted file mode 100644 index 798c1638cde..00000000000 --- a/src/main/java/org/olat/course/groupsandrights/ui/_i18n/LocalStrings_zh_TW.properties +++ /dev/null @@ -1,14 +0,0 @@ -#Wed May 20 12:36:43 CEST 2009 -cmd.close=\u95DC\u9589 -course.contextlist.intro=\u672C\u8AB2\u7A0B\u4F7F\u7528\u5167\u90E8\u548C\u8AB2\u7A0B\u7D9C\u5408\u7FA4\u7D44\u7BA1\u7406\u3002\u9019\u4E9B\u53EF\u4EE5\u88AB\u4E00\u500B\u63A5\u4E00\u500B\u64CD\u4F5C\u3002\u8ACB\u5F9E\u4E0B\u9762\u6E05\u55AE\u4E2D\u9078\u64C7\u4E00\u500B\u7FA4\u7D44\u7BA1\u7406\u4F86\u7BA1\u7406\u7FA4\u7D44\u3002 -course.contextlist.title=\u9019\u500B\u8AB2\u7A0B\u7684\u7FA4\u7D44\u7BA1\u7406 -groupandareaselect.areas.nodata=\u6C92\u6709\u5B78\u7FD2\u5340\u57DF\u5B9A\u7FA9\u5728\u60A8\u7684\u7FA4\u7D44\u7BA1\u7406 -groupandareaselect.areas.title=\u4F86\u81EA\u7FA4\u7D44\u7BA1\u7406\u7684\u5B78\u7FD2\u5340\u57DF -groupandareaselect.groups.nodata=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u5B9A\u7FA9\u5728\u60A8\u7684\u7FA4\u7D44\u7BA1\u7406 -groupandareaselect.groups.title=\u4F86\u81EA\u7FA4\u7D44\u7BA1\u7406\u7684\u5B78\u7FD2\u7FA4\u7D44 -groupmanagement.index=\u7FA4\u7D44\u7BA1\u7406 -groupmanagement.index.alt=\u7BA1\u7406\u5B78\u7FD2\u7FA4\u7D44 -rightmanagement.index=\u6B0A\u9650\u7BA1\u7406 -rightmanagement.index.alt=\u7BA1\u7406\u6B0A\u9650\u7FA4\u7D44 -tools.title.groupmanagement=\u7FA4\u7D44\u7BA1\u7406 -tools.title.rightmanagement=\u6B0A\u9650\u7BA1\u7406 diff --git a/src/main/java/org/olat/course/member/AbstractMemberListController.java b/src/main/java/org/olat/course/member/AbstractMemberListController.java new file mode 100644 index 00000000000..329b45503ac --- /dev/null +++ b/src/main/java/org/olat/course/member/AbstractMemberListController.java @@ -0,0 +1,268 @@ +/** + * <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.member; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.olat.basesecurity.BaseSecurity; +import org.olat.basesecurity.IdentityShort; +import org.olat.core.CoreSpringFactory; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.table.ColumnDescriptor; +import org.olat.core.gui.components.table.CustomCellRenderer; +import org.olat.core.gui.components.table.CustomRenderColumnDescriptor; +import org.olat.core.gui.components.table.DefaultColumnDescriptor; +import org.olat.core.gui.components.table.StaticColumnDescriptor; +import org.olat.core.gui.components.table.TableController; +import org.olat.core.gui.components.table.TableGuiConfiguration; +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.member.MemberListTableModel.Cols; +import org.olat.group.BusinessGroup; +import org.olat.group.BusinessGroupMembership; +import org.olat.group.BusinessGroupService; +import org.olat.group.BusinessGroupShort; +import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryManager; +import org.olat.repository.model.RepositoryEntryMembership; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public abstract class AbstractMemberListController extends BasicController { + + public static final String TABLE_ACTION_EDIT = "tbl_edit"; + public static final String TABLE_ACTION_REMOVE = "tbl_REMOVE"; + + protected final MemberListTableModel memberListModel; + protected final TableController memberListCtr; + protected final VelocityContainer mainVC; + + private final RepositoryEntry repoEntry; + private final BaseSecurity securityManager; + private final RepositoryManager repositoryManager; + private final BusinessGroupService businessGroupService; + + public AbstractMemberListController(UserRequest ureq, WindowControl wControl, RepositoryEntry repoEntry, String page) { + super(ureq, wControl); + + this.repoEntry = repoEntry; + securityManager = CoreSpringFactory.getImpl(BaseSecurity.class); + repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class); + businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); + + mainVC = createVelocityContainer(page); + + //table + TableGuiConfiguration tableConfig = new TableGuiConfiguration(); + tableConfig.setPreferencesOffered(true, this.getClass().getSimpleName()); + tableConfig.setTableEmptyMessage(translate("nomembers")); + memberListCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator(), false); + listenTo(memberListCtr); + + int numOfColumns = initColumns(); + memberListModel = new MemberListTableModel(numOfColumns); + memberListCtr.setTableDataModel(memberListModel); + + mainVC.put("memberList", memberListCtr.getInitialComponent()); + putInitialPanel(mainVC); + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + // + } + + protected int initColumns() { + memberListCtr.addColumnDescriptor(new DefaultColumnDescriptor(Cols.lastName.i18n(), Cols.lastName.ordinal(), null, getLocale())); + memberListCtr.addColumnDescriptor(new DefaultColumnDescriptor(Cols.firstName.i18n(), Cols.firstName.ordinal(), null, getLocale())); + memberListCtr.addColumnDescriptor(new DefaultColumnDescriptor(Cols.firstTime.i18n(), Cols.firstTime.ordinal(), null, getLocale())); + memberListCtr.addColumnDescriptor(new DefaultColumnDescriptor(Cols.lastTime.i18n(), Cols.lastTime.ordinal(), null, getLocale())); + CustomCellRenderer roleRenderer = new CourseRoleCellRenderer(getLocale()); + memberListCtr.addColumnDescriptor(new CustomRenderColumnDescriptor(Cols.role.i18n(), Cols.role.ordinal(), null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT, roleRenderer)); + CustomCellRenderer groupRenderer = new GroupCellRenderer(); + memberListCtr.addColumnDescriptor(new CustomRenderColumnDescriptor(Cols.groups.i18n(), Cols.groups.ordinal(), null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT, groupRenderer)); + memberListCtr.addColumnDescriptor(new StaticColumnDescriptor(TABLE_ACTION_EDIT, "action", translate("table.header.work"))); + memberListCtr.addColumnDescriptor(new StaticColumnDescriptor(TABLE_ACTION_REMOVE, "action", translate("table.header.remove"))); + return 8; + } + + protected abstract SearchMembersParams getSearchParams(); + + protected void reloadModel() { + updateTableModel(getSearchParams()); + } + + protected List<MemberView> updateTableModel(SearchMembersParams params) { + //course membership + List<RepositoryEntryMembership> repoMemberships = + repositoryManager.getRepositoryEntryMembership(repoEntry); + + //groups membership + List<BusinessGroup> groups = businessGroupService.findBusinessGroups(null, repoEntry.getOlatResource(), 0, -1); + List<Long> groupKeys = new ArrayList<Long>(); + Map<Long,BusinessGroupShort> keyToGroupMap = new HashMap<Long,BusinessGroupShort>(); + for(BusinessGroup group:groups) { + groupKeys.add(group.getKey()); + keyToGroupMap.put(group.getKey(), group); + } + List<BusinessGroupMembership> memberships = + businessGroupService.getBusinessGroupMembership(groupKeys); + + //get identities + Set<Long> identityKeys = new HashSet<Long>(); + for(RepositoryEntryMembership membership: repoMemberships) { + identityKeys.add(membership.getIdentityKey()); + } + for(BusinessGroupMembership membership:memberships) { + identityKeys.add(membership.getIdentityKey()); + } + List<IdentityShort> identities = securityManager.findShortIdentitiesByKey(identityKeys); + Map<Long,MemberView> keyToMemberMap = new HashMap<Long,MemberView>(); + List<MemberView> memberList = new ArrayList<MemberView>(); + for(IdentityShort identity:identities) { + MemberView member = new MemberView(identity.getKey()); + member.setFirstName(identity.getFirstName()); + member.setLastName(identity.getLastName()); + memberList.add(member); + keyToMemberMap.put(identity.getKey(), member); + } + + for(BusinessGroupMembership membership:memberships) { + Long identityKey = membership.getIdentityKey(); + MemberView memberView = keyToMemberMap.get(identityKey); + if(memberView != null) { + memberView.setFirstTime(membership.getCreationDate()); + memberView.setLastTime(membership.getLastModified()); + if(membership.isOwner()) { + memberView.getMembership().setGroupTutor(true); + } + if(membership.isParticipant()) { + memberView.getMembership().setGroupParticipant(true); + } + if(membership.isWaiting()) { + memberView.getMembership().setGroupWaiting(true); + } + + Long groupKey = membership.getGroupKey(); + BusinessGroupShort group = keyToGroupMap.get(groupKey); + memberView.addGroup(group); + } + } + + for(RepositoryEntryMembership membership:repoMemberships) { + Long identityKey = membership.getIdentityKey(); + MemberView memberView = keyToMemberMap.get(identityKey); + if(memberView != null) { + memberView.setFirstTime(membership.getCreationDate()); + memberView.setLastTime(membership.getLastModified()); + if(membership.getOwnerRepoKey() != null) { + memberView.getMembership().setRepoOwner(true); + } + if(membership.getTutorRepoKey() != null) { + memberView.getMembership().setRepoTutor(true); + } + if(membership.getParticipantRepoKey() != null) { + memberView.getMembership().setRepoParticipant(true); + } + } + } + + filterByRoles(memberList, params); + memberListModel.setObjects(memberList); + memberListCtr.modelChanged(); + return memberList; + } + + /** + * This filter method preserve the multiple roles of a member. If we want only the waiting list but + * a member is in the waiting list and owner of the course, we want it to know. + * @param memberList + * @param params + * @return + */ + private void filterByRoles(List<MemberView> memberList, SearchMembersParams params) { + List<MemberView> members = new ArrayList<MemberView>(memberList); + if(params.isRepoOwners()) { + for(Iterator<MemberView> it=members.iterator(); it.hasNext(); ) { + if(it.next().getMembership().isRepoOwner()) { + it.remove(); + } + } + } + + if(params.isRepoTutors()) { + for(Iterator<MemberView> it=members.iterator(); it.hasNext(); ) { + if(it.next().getMembership().isRepoTutor()) { + it.remove(); + } + } + } + + if(params.isRepoParticipants()) { + for(Iterator<MemberView> it=members.iterator(); it.hasNext(); ) { + if(it.next().getMembership().isRepoParticipant()) { + it.remove(); + } + } + } + + if(params.isGroupTutors()) { + for(Iterator<MemberView> it=members.iterator(); it.hasNext(); ) { + if(it.next().getMembership().isGroupTutor()) { + it.remove(); + } + } + } + + if(params.isGroupParticipants()) { + for(Iterator<MemberView> it=members.iterator(); it.hasNext(); ) { + if(it.next().getMembership().isGroupParticipant()) { + it.remove(); + } + } + } + + if(params.isGroupWaitingList()) { + for(Iterator<MemberView> it=members.iterator(); it.hasNext(); ) { + if(it.next().getMembership().isGroupWaiting()) { + it.remove(); + } + } + } + + memberList.removeAll(members); + } +} diff --git a/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java b/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java new file mode 100644 index 00000000000..dbfbb216113 --- /dev/null +++ b/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java @@ -0,0 +1,90 @@ +/** + * <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.member; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.table.ColumnDescriptor; +import org.olat.core.gui.components.table.CustomCellRenderer; +import org.olat.core.gui.components.table.CustomCssCellRenderer; +import org.olat.core.gui.components.table.CustomRenderColumnDescriptor; +import org.olat.core.gui.components.table.DefaultColumnDescriptor; +import org.olat.core.gui.components.table.StaticColumnDescriptor; +import org.olat.core.gui.control.WindowControl; +import org.olat.group.model.SearchBusinessGroupParams; +import org.olat.group.ui.main.AbstractBusinessGroupListController; +import org.olat.group.ui.main.BGAccessControlledCellRenderer; +import org.olat.group.ui.main.BGResourcesCellRenderer; +import org.olat.group.ui.main.BusinessGroupNameCellRenderer; +import org.olat.group.ui.main.BusinessGroupTableModelWithType.Cols; +import org.olat.resource.OLATResource; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class CourseBusinessGroupListController extends AbstractBusinessGroupListController { + + private final OLATResource resource; + + public CourseBusinessGroupListController(UserRequest ureq, WindowControl wControl, OLATResource resource) { + super(ureq, wControl, "group_list"); + this.resource = resource; + } + + @Override + protected void initButtons(UserRequest ureq) { + initButtons(ureq, true); + groupListCtr.setMultiSelect(true); + groupListCtr.addMultiSelectAction("table.duplicate", TABLE_ACTION_DUPLICATE); + groupListCtr.addMultiSelectAction("table.merge", TABLE_ACTION_MERGE); + groupListCtr.addMultiSelectAction("table.users.management", TABLE_ACTION_USERS); + groupListCtr.addMultiSelectAction("table.config", TABLE_ACTION_CONFIG); + groupListCtr.addMultiSelectAction("table.email", TABLE_ACTION_EMAIL); + } + + @Override + protected int initColumns() { + CustomCssCellRenderer nameRenderer = new BusinessGroupNameCellRenderer(); + groupListCtr.addColumnDescriptor(new CustomRenderColumnDescriptor(Cols.name.i18n(), Cols.name.ordinal(), TABLE_ACTION_LAUNCH, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT, nameRenderer)); + groupListCtr.addColumnDescriptor(false, new DefaultColumnDescriptor(Cols.key.i18n(), Cols.key.ordinal(), null, getLocale())); + groupListCtr.addColumnDescriptor(false, new DefaultColumnDescriptor(Cols.description.i18n(), Cols.description.ordinal(), null, getLocale())); + CustomCellRenderer resourcesRenderer = new BGResourcesCellRenderer(this, mainVC, getTranslator()); + groupListCtr.addColumnDescriptor(new CustomRenderColumnDescriptor(Cols.resources.i18n(), Cols.resources.ordinal(), null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT, resourcesRenderer)); + groupListCtr.addColumnDescriptor(new DefaultColumnDescriptor(Cols.tutorsCount.i18n(), Cols.tutorsCount.ordinal(), null, getLocale())); + groupListCtr.addColumnDescriptor(new DefaultColumnDescriptor(Cols.participantsCount.i18n(), Cols.participantsCount.ordinal(), null, getLocale())); + groupListCtr.addColumnDescriptor(new DefaultColumnDescriptor(Cols.freePlaces.i18n(), Cols.freePlaces.ordinal(), TABLE_ACTION_LAUNCH, getLocale())); + groupListCtr.addColumnDescriptor(new DefaultColumnDescriptor(Cols.waitingListCount.i18n(), Cols.waitingListCount.ordinal(), null, getLocale())); + CustomCellRenderer acRenderer = new BGAccessControlledCellRenderer(); + groupListCtr.addColumnDescriptor(new CustomRenderColumnDescriptor(Cols.accessTypes.i18n(), Cols.accessTypes.ordinal(), null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT, acRenderer)); + groupListCtr.addColumnDescriptor(new StaticColumnDescriptor(TABLE_ACTION_LAUNCH, "action", translate("table.header.work"))); + groupListCtr.addColumnDescriptor(new StaticColumnDescriptor(TABLE_ACTION_LAUNCH, "action", translate("table.header.remove"))); + return 11; + } + + @Override + protected void reloadModel() { + updateTableModel(new SearchBusinessGroupParams(), false); + } + + @Override + protected OLATResource getResource() { + return resource; + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/CourseMembership.java b/src/main/java/org/olat/course/member/CourseMembership.java new file mode 100644 index 00000000000..060a71d6752 --- /dev/null +++ b/src/main/java/org/olat/course/member/CourseMembership.java @@ -0,0 +1,102 @@ +/** + * <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.member; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class CourseMembership { + + private boolean repoOwner; + private boolean repoTutor; + private boolean repoParticipant; + private boolean groupTutor; + private boolean groupParticipant; + private boolean groupWaiting; + + public CourseMembership() { + // + } + + public boolean isOwner() { + return repoOwner; + } + + public boolean isTutor() { + return repoTutor || groupTutor; + } + + public boolean isParticipant() { + return repoParticipant || groupParticipant; + } + + public boolean isWaiting() { + return groupWaiting; + } + + public boolean isRepoOwner() { + return repoOwner; + } + + public void setRepoOwner(boolean repoOwner) { + this.repoOwner = repoOwner; + } + + public boolean isRepoTutor() { + return repoTutor; + } + + public void setRepoTutor(boolean repoTutor) { + this.repoTutor = repoTutor; + } + + public boolean isRepoParticipant() { + return repoParticipant; + } + + public void setRepoParticipant(boolean repoParticipant) { + this.repoParticipant = repoParticipant; + } + + public boolean isGroupTutor() { + return groupTutor; + } + + public void setGroupTutor(boolean groupTutor) { + this.groupTutor = groupTutor; + } + + public boolean isGroupParticipant() { + return groupParticipant; + } + + public void setGroupParticipant(boolean groupParticipant) { + this.groupParticipant = groupParticipant; + } + + public boolean isGroupWaiting() { + return groupWaiting; + } + + public void setGroupWaiting(boolean groupWaiting) { + this.groupWaiting = groupWaiting; + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/CourseRoleCellRenderer.java b/src/main/java/org/olat/course/member/CourseRoleCellRenderer.java new file mode 100644 index 00000000000..9ba236e8d42 --- /dev/null +++ b/src/main/java/org/olat/course/member/CourseRoleCellRenderer.java @@ -0,0 +1,71 @@ +/** + * <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.member; + +import java.util.Locale; + +import org.olat.core.gui.components.table.CustomCellRenderer; +import org.olat.core.gui.render.Renderer; +import org.olat.core.gui.render.StringOutput; +import org.olat.core.gui.translator.Translator; +import org.olat.core.util.Util; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class CourseRoleCellRenderer implements CustomCellRenderer { + + private final Translator translator; + + public CourseRoleCellRenderer(Locale locale) { + translator = Util.createPackageTranslator(CourseRoleCellRenderer.class, locale); + } + + @Override + public void render(StringOutput sb, Renderer renderer, Object val, Locale locale, int alignment, String action) { + if (val instanceof CourseMembership) { + CourseMembership membership = (CourseMembership)val; + + boolean and = false; + if(membership.isOwner()) { + and = and(sb, and); + sb.append(translator.translate("role.owner")); + } + if(membership.isTutor()) { + and = and(sb, and); + sb.append(translator.translate("role.tutor")); + } + if(membership.isParticipant()) { + and = and(sb, and); + sb.append(translator.translate("role.participant")); + } + if(membership.isWaiting()) { + and = and(sb, and); + sb.append(translator.translate("role.waiting")); + } + } + } + + private final boolean and(StringOutput sb, boolean and) { + if(and) sb.append(", "); + return true; + } +} diff --git a/src/main/java/org/olat/course/member/GroupCellRenderer.java b/src/main/java/org/olat/course/member/GroupCellRenderer.java new file mode 100644 index 00000000000..67a9f2fad0c --- /dev/null +++ b/src/main/java/org/olat/course/member/GroupCellRenderer.java @@ -0,0 +1,55 @@ +/** + * <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.member; + +import java.util.List; +import java.util.Locale; + +import org.olat.core.gui.components.table.CustomCellRenderer; +import org.olat.core.gui.render.Renderer; +import org.olat.core.gui.render.StringOutput; +import org.olat.group.BusinessGroupShort; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class GroupCellRenderer implements CustomCellRenderer { + + @Override + public void render(StringOutput sb, Renderer renderer, Object val, Locale locale, int alignment, String action) { + if (val instanceof MemberView) { + MemberView member = (MemberView)val; + List<BusinessGroupShort> groups = member.getGroups(); + if(groups != null && !groups.isEmpty()) { + boolean and = false; + for(BusinessGroupShort group:groups) { + and = and(sb, and); + sb.append(group.getName()); + } + } + } + } + + private final boolean and(StringOutput sb, boolean and) { + if(and) sb.append(", "); + return true; + } +} diff --git a/src/main/java/org/olat/course/member/MemberListController.java b/src/main/java/org/olat/course/member/MemberListController.java new file mode 100644 index 00000000000..cca71c9125c --- /dev/null +++ b/src/main/java/org/olat/course/member/MemberListController.java @@ -0,0 +1,44 @@ +/** + * <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.member; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.control.WindowControl; +import org.olat.repository.RepositoryEntry; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class MemberListController extends AbstractMemberListController { + + private final SearchMembersParams searchParams; + + public MemberListController(UserRequest ureq, WindowControl wControl, + RepositoryEntry repoEntry, SearchMembersParams searchParams) { + super(ureq, wControl, repoEntry, "all_member_list"); + this.searchParams = searchParams; + } + + @Override + public SearchMembersParams getSearchParams() { + return searchParams; + } +} diff --git a/src/main/java/org/olat/course/member/MemberListTableModel.java b/src/main/java/org/olat/course/member/MemberListTableModel.java new file mode 100644 index 00000000000..c264e3c1c2c --- /dev/null +++ b/src/main/java/org/olat/course/member/MemberListTableModel.java @@ -0,0 +1,76 @@ +/** + * <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.member; + +import java.util.Collections; + +import org.olat.core.gui.components.table.DefaultTableDataModel; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class MemberListTableModel extends DefaultTableDataModel<MemberView> { + + private final int numOfColumns; + + public MemberListTableModel(int numOfColumns) { + super(Collections.<MemberView>emptyList()); + this.numOfColumns = numOfColumns; + } + + @Override + public int getColumnCount() { + return numOfColumns; + } + + @Override + public Object getValueAt(int row, int col) { + MemberView member = getObject(row); + switch(Cols.values()[col]) { + case firstName: return member.getFirstName(); + case lastName: return member.getLastName(); + case firstTime: return member.getFirstTime(); + case lastTime: return member.getLastTime(); + case role: return member.getMembership(); + case groups: return member; + default: return "ERROR"; + } + } + + public enum Cols { + firstName("table.header.firstName"), + lastName("table.header.lastName"), + firstTime("table.header.firstTime"), + lastTime("table.header.lastTime"), + role("table.header.role"), + groups("table.header.groups"); + + private final String i18n; + + private Cols(String i18n) { + this.i18n = i18n; + } + + public String i18n() { + return i18n; + } + } +} diff --git a/src/main/java/org/olat/course/member/MemberView.java b/src/main/java/org/olat/course/member/MemberView.java new file mode 100644 index 00000000000..98e925a89d5 --- /dev/null +++ b/src/main/java/org/olat/course/member/MemberView.java @@ -0,0 +1,126 @@ +/** + * <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.member; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.olat.group.BusinessGroupShort; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class MemberView { + + private final Long identityKey; + private String firstName; + private String lastName; + private Date firstTime; + private Date lastTime; + private final CourseMembership membership = new CourseMembership(); + private List<BusinessGroupShort> groups; + + + public MemberView(Long identityKey) { + this.identityKey = identityKey; + } + + public Long getIdentityKey() { + return identityKey; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public CourseMembership getMembership() { + return membership; + } + + public List<BusinessGroupShort> getGroups() { + + return groups; + } + + public void setGroups(List<BusinessGroupShort> groups) { + this.groups = groups; + } + + public void addGroup(BusinessGroupShort group) { + if(group == null) return; + if(groups == null) { + groups = new ArrayList<BusinessGroupShort>(3); + } + groups.add(group); + } + + public Date getFirstTime() { + return firstTime; + } + + public void setFirstTime(Date firstTime) { + if(firstTime == null) return; + if(this.firstTime == null || this.firstTime.compareTo(firstTime) > 0) { + this.firstTime = firstTime; + } + } + + public Date getLastTime() { + return lastTime; + } + + public void setLastTime(Date lastTime) { + if(lastTime == null) return; + if(this.lastTime == null || this.lastTime.compareTo(lastTime) < 0) { + this.lastTime = lastTime; + } + } + + @Override + public int hashCode() { + return identityKey == null ? 2878 : identityKey.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(this == obj) { + return true; + } + if(obj instanceof MemberView) { + MemberView member = (MemberView)obj; + return identityKey != null && identityKey.equals(member.getIdentityKey()); + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/MembersManagementMainController.java b/src/main/java/org/olat/course/member/MembersManagementMainController.java new file mode 100644 index 00000000000..e8b830dd91a --- /dev/null +++ b/src/main/java/org/olat/course/member/MembersManagementMainController.java @@ -0,0 +1,184 @@ +/** + * <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.member; + +import java.util.List; + +import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.link.Link; +import org.olat.core.gui.components.link.LinkFactory; +import org.olat.core.gui.components.panel.Panel; +import org.olat.core.gui.components.tree.GenericTreeModel; +import org.olat.core.gui.components.tree.GenericTreeNode; +import org.olat.core.gui.components.tree.MenuTree; +import org.olat.core.gui.components.tree.TreeNode; +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.MainLayoutBasicController; +import org.olat.core.gui.control.generic.dtabs.Activateable2; +import org.olat.core.id.context.ContextEntry; +import org.olat.core.id.context.StateEntry; +import org.olat.core.logging.activity.ActionType; +import org.olat.core.util.tree.TreeHelper; +import org.olat.course.CourseFactory; +import org.olat.course.ICourse; +import org.olat.repository.RepositoryEntry; +import org.olat.resource.accesscontrol.AccessControlModule; +import org.olat.resource.accesscontrol.ui.OrdersAdminController; +import org.olat.util.logging.activity.LoggingResourceable; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class MembersManagementMainController extends MainLayoutBasicController implements Activateable2 { + + private static final String CMD_MEMBERS = "cmd.members"; + private static final String CMD_GROUPS = "cmd.groups"; + private static final String CMD_BOOKING = "cmd.booking"; + private static final String CMD_RIGHTS = "cmd.rights"; + + private final Link back; + private final MenuTree menuTree; + private final VelocityContainer mainVC; + private final LayoutMain3ColsController columnLayoutCtr; + + private OrdersAdminController ordersController; + private CourseBusinessGroupListController groupsCtrl; + private MembersOverviewController membersOverviewCtrl; + + private final RepositoryEntry repoEntry; + private final AccessControlModule acModule; + + public MembersManagementMainController(UserRequest ureq, WindowControl wControl, RepositoryEntry re) { + super(ureq, wControl); + this.repoEntry = re; + acModule = CoreSpringFactory.getImpl(AccessControlModule.class); + + //logging + getUserActivityLogger().setStickyActionType(ActionType.admin); + ICourse course = CourseFactory.loadCourse(re.getOlatResource()); + addLoggingResourceable(LoggingResourceable.wrap(course)); + + //ui stuff + menuTree = new MenuTree("menuTree"); + menuTree.setTreeModel(buildTreeModel()); + menuTree.setRootVisible(false); + menuTree.addListener(this); + + mainVC = createVelocityContainer("main_members"); + back = LinkFactory.createLinkBack(mainVC, this); + mainVC.put("backLink", back); + + columnLayoutCtr = new LayoutMain3ColsController(ureq, getWindowControl(), menuTree, null, mainVC, "members-" + repoEntry.getKey()); + listenTo(columnLayoutCtr); + putInitialPanel(columnLayoutCtr.getInitialComponent()); + + selectMenuItem(ureq, CMD_MEMBERS); + } + + private GenericTreeModel buildTreeModel() { + GenericTreeModel gtm = new GenericTreeModel(); + GenericTreeNode root = new GenericTreeNode(); + root.setTitle(translate("menu.members")); + root.setAltText(translate("menu.members.alt")); + gtm.setRootNode(root); + + GenericTreeNode node = new GenericTreeNode(translate("menu.members"), CMD_MEMBERS); + node.setAltText(translate("menu.members.alt")); + root.addChild(node); + + node = new GenericTreeNode(translate("menu.groups"), CMD_GROUPS); + node.setAltText(translate("menu.groups.alt")); + root.addChild(node); + + if(acModule.isEnabled()) { + node = new GenericTreeNode(translate("menu.orders"), CMD_BOOKING); + node.setAltText(translate("menu.orders.alt")); + root.addChild(node); + } + + node = new GenericTreeNode(translate("menu.rights"), CMD_RIGHTS); + node.setAltText(translate("menu.rights.alt")); + root.addChild(node); + return gtm; + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + if (source == menuTree) { + if (event.getCommand().equals(MenuTree.COMMAND_TREENODE_CLICKED)) { + TreeNode selTreeNode = menuTree.getSelectedNode(); + Object cmd = selTreeNode.getUserObject(); + selectMenuItem(ureq, cmd); + } + } else if (source == back) { + fireEvent(ureq, Event.DONE_EVENT); + } + } + + private void selectMenuItem(UserRequest ureq, Object cmd) { + if(CMD_MEMBERS.equals(cmd)) { + if(membersOverviewCtrl == null) { + membersOverviewCtrl = new MembersOverviewController(ureq, getWindowControl(), repoEntry); + listenTo(membersOverviewCtrl); + } + mainVC.put("content", membersOverviewCtrl.getInitialComponent()); + } else if(CMD_GROUPS.equals(cmd)) { + if(groupsCtrl == null) { + groupsCtrl = new CourseBusinessGroupListController(ureq, getWindowControl(), repoEntry.getOlatResource()); + listenTo(groupsCtrl); + } + groupsCtrl.reloadModel(); + mainVC.put("content", groupsCtrl.getInitialComponent()); + } else if(CMD_BOOKING.equals(cmd)) { + if(ordersController == null) { + ordersController = new OrdersAdminController(ureq, getWindowControl(), repoEntry.getOlatResource()); + listenTo(ordersController); + } + mainVC.put("content", ordersController.getInitialComponent()); + } else if(CMD_RIGHTS.equals(cmd)) { + mainVC.put("content", new Panel("empty")); + } + + TreeNode selTreeNode = TreeHelper.findNodeByUserObject(cmd, menuTree.getTreeModel().getRootNode()); + if (selTreeNode != null && !selTreeNode.getIdent().equals(menuTree.getSelectedNodeId())) { + menuTree.setSelectedNodeId(selTreeNode.getIdent()); + } + } + + + + @Override + public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { + + } + + +} diff --git a/src/main/java/org/olat/course/member/MembersOverviewController.java b/src/main/java/org/olat/course/member/MembersOverviewController.java new file mode 100644 index 00000000000..c873b22b64d --- /dev/null +++ b/src/main/java/org/olat/course/member/MembersOverviewController.java @@ -0,0 +1,205 @@ +/** + * <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.member; + +import java.util.List; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.link.Link; +import org.olat.core.gui.components.link.LinkFactory; +import org.olat.core.gui.components.panel.Panel; +import org.olat.core.gui.components.segmentedview.SegmentViewComponent; +import org.olat.core.gui.components.segmentedview.SegmentViewEvent; +import org.olat.core.gui.components.segmentedview.SegmentViewFactory; +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.core.gui.control.generic.dtabs.Activateable2; +import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.BusinessControlFactory; +import org.olat.core.id.context.ContextEntry; +import org.olat.core.id.context.StateEntry; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; +import org.olat.core.util.resource.OresHelper; +import org.olat.repository.RepositoryEntry; +import org.olat.util.logging.activity.LoggingResourceable; + +/** + * + * The members overview. + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class MembersOverviewController extends BasicController implements Activateable2 { + + private final Link allMembersLink, ownersLink, tutorsLink, participantsLink, waitingListLink, searchLink; + private final SegmentViewComponent segmentView; + private final VelocityContainer mainVC; + + private MemberListController allMemberListCtrl; + private MemberListController ownersCtrl; + private MemberListController tutorsCtrl; + private MemberListController participantsCtrl; + private MemberListController waitingCtrl; + + private final RepositoryEntry repoEntry; + + public MembersOverviewController(UserRequest ureq, WindowControl wControl, RepositoryEntry repoEntry) { + super(ureq, wControl); + this.repoEntry = repoEntry; + + mainVC = createVelocityContainer("members_overview"); + segmentView = SegmentViewFactory.createSegmentView("segments", mainVC, this); + + allMembersLink = LinkFactory.createLink("members.all", mainVC, this); + segmentView.addSegment(allMembersLink, true); + ownersLink = LinkFactory.createLink("owners", mainVC, this); + segmentView.addSegment(ownersLink, false); + tutorsLink = LinkFactory.createLink("tutors", mainVC, this); + segmentView.addSegment(tutorsLink, false); + participantsLink = LinkFactory.createLink("participants", mainVC, this); + segmentView.addSegment(participantsLink, false); + waitingListLink = LinkFactory.createLink("waitinglist", mainVC, this); + segmentView.addSegment(waitingListLink, false); + searchLink = LinkFactory.createLink("search", mainVC, this); + segmentView.addSegment(searchLink, false); + + updateAllMembers(ureq); + putInitialPanel(mainVC); + } + + @Override + protected void doDispose() { + // + } + + @Override + public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { + // + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + if(event instanceof SegmentViewEvent) { + SegmentViewEvent sve = (SegmentViewEvent)event; + String segmentCName = sve.getComponentName(); + Component clickedLink = mainVC.getComponent(segmentCName); + if (clickedLink == allMembersLink) { + updateAllMembers(ureq); + } else if (clickedLink == ownersLink){ + updateOwners(ureq); + } else if (clickedLink == tutorsLink){ + updateTutors(ureq); + } else if (clickedLink == participantsLink) { + updateParticipants(ureq); + } else if (clickedLink == waitingListLink) { + updateWaitingList(ureq); + } else if (clickedLink == searchLink) { + updateSearch(ureq); + } + } + } + + private MemberListController updateAllMembers(UserRequest ureq) { + if(allMemberListCtrl == null) { + OLATResourceable ores = OresHelper.createOLATResourceableInstance("AllMembers", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); + SearchMembersParams searchParams = new SearchMembersParams(true, true, true, true, true, false); + allMemberListCtrl = new MemberListController(ureq, bwControl, repoEntry, searchParams); + listenTo(allMemberListCtrl); + } + + allMemberListCtrl.reloadModel(); + mainVC.put("membersCmp", allMemberListCtrl.getInitialComponent()); + addToHistory(ureq, allMemberListCtrl); + return allMemberListCtrl; + } + + private MemberListController updateOwners(UserRequest ureq) { + if(ownersCtrl == null) { + OLATResourceable ores = OresHelper.createOLATResourceableInstance("Owners", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); + SearchMembersParams searchParams = new SearchMembersParams(true, false, false, false, false, false); + ownersCtrl = new MemberListController(ureq, bwControl, repoEntry, searchParams); + listenTo(ownersCtrl); + } + + ownersCtrl.reloadModel(); + mainVC.put("membersCmp", ownersCtrl.getInitialComponent()); + addToHistory(ureq, ownersCtrl); + return ownersCtrl; + } + + private MemberListController updateTutors(UserRequest ureq) { + if(tutorsCtrl == null) { + OLATResourceable ores = OresHelper.createOLATResourceableInstance("Tutors", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); + SearchMembersParams searchParams = new SearchMembersParams(false, true, false, true, false, false); + tutorsCtrl = new MemberListController(ureq, bwControl, repoEntry, searchParams); + listenTo(tutorsCtrl); + } + + tutorsCtrl.reloadModel(); + mainVC.put("membersCmp", tutorsCtrl.getInitialComponent()); + addToHistory(ureq, tutorsCtrl); + return tutorsCtrl; + } + + private MemberListController updateParticipants(UserRequest ureq) { + if(participantsCtrl == null) { + OLATResourceable ores = OresHelper.createOLATResourceableInstance("Tutors", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); + SearchMembersParams searchParams = new SearchMembersParams(false, false, true, false, true, false); + participantsCtrl = new MemberListController(ureq, bwControl, repoEntry, searchParams); + listenTo(participantsCtrl); + } + + participantsCtrl.reloadModel(); + mainVC.put("membersCmp", participantsCtrl.getInitialComponent()); + addToHistory(ureq, participantsCtrl); + return participantsCtrl; + } + + private MemberListController updateWaitingList(UserRequest ureq) { + if(waitingCtrl == null) { + OLATResourceable ores = OresHelper.createOLATResourceableInstance("WaitingList", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); + SearchMembersParams searchParams = new SearchMembersParams(false, false, false, false, false, true); + waitingCtrl = new MemberListController(ureq, bwControl, repoEntry, searchParams); + listenTo(waitingCtrl); + } + + waitingCtrl.reloadModel(); + mainVC.put("membersCmp", waitingCtrl.getInitialComponent()); + addToHistory(ureq, waitingCtrl); + return waitingCtrl; + } + + private void updateSearch(UserRequest ureq) { + mainVC.put("memberList", new Panel("empty")); + } +} diff --git a/src/main/java/org/olat/course/member/SearchMembersParams.java b/src/main/java/org/olat/course/member/SearchMembersParams.java new file mode 100644 index 00000000000..b16d862dfdd --- /dev/null +++ b/src/main/java/org/olat/course/member/SearchMembersParams.java @@ -0,0 +1,76 @@ +package org.olat.course.member; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class SearchMembersParams { + private boolean repoOwners; + private boolean repoTutors; + private boolean repoParticipants; + private boolean groupTutors; + private boolean groupParticipants; + private boolean groupWaitingList; + + public SearchMembersParams() { + // + } + + public SearchMembersParams(boolean repoOwners, boolean repoTutors, boolean repoParticipants, + boolean groupTutors, boolean groupParticipants, boolean groupWaitingList) { + this.repoOwners = repoOwners; + this.repoTutors = repoTutors; + this.repoParticipants = repoParticipants; + this.groupTutors = groupTutors; + this.groupParticipants = groupParticipants; + this.groupWaitingList = groupWaitingList; + } + + public boolean isRepoOwners() { + return repoOwners; + } + + public void setRepoOwners(boolean repoOwners) { + this.repoOwners = repoOwners; + } + + public boolean isRepoTutors() { + return repoTutors; + } + + public void setRepoTutors(boolean repoTutors) { + this.repoTutors = repoTutors; + } + + public boolean isRepoParticipants() { + return repoParticipants; + } + + public void setRepoParticipants(boolean repoParticipants) { + this.repoParticipants = repoParticipants; + } + + public boolean isGroupTutors() { + return groupTutors; + } + + public void setGroupTutors(boolean groupTutors) { + this.groupTutors = groupTutors; + } + + public boolean isGroupParticipants() { + return groupParticipants; + } + + public void setGroupParticipants(boolean groupParticipants) { + this.groupParticipants = groupParticipants; + } + + public boolean isGroupWaitingList() { + return groupWaitingList; + } + + public void setGroupWaitingList(boolean groupWaitingList) { + this.groupWaitingList = groupWaitingList; + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/_content/all_member_list.html b/src/main/java/org/olat/course/member/_content/all_member_list.html new file mode 100644 index 00000000000..963f2f3490a --- /dev/null +++ b/src/main/java/org/olat/course/member/_content/all_member_list.html @@ -0,0 +1,3 @@ +<div class="b_clearfix"> + $r.render("memberList") +</div> \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/_content/group_list.html b/src/main/java/org/olat/course/member/_content/group_list.html new file mode 100644 index 00000000000..7085875e520 --- /dev/null +++ b/src/main/java/org/olat/course/member/_content/group_list.html @@ -0,0 +1,7 @@ +<h4 class="b_with_small_icon_left b_group_icon"> + $r.translate("menu.groups") +</h4> + +<div class="b_clearfix"> + $r.render("groupList") +</div> \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/_content/main_members.html b/src/main/java/org/olat/course/member/_content/main_members.html new file mode 100644 index 00000000000..de1cb07ac2d --- /dev/null +++ b/src/main/java/org/olat/course/member/_content/main_members.html @@ -0,0 +1,4 @@ +$r.render("backLink") +#if($r.available("content")) + $r.render("content") +#end \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/_content/members_overview.html b/src/main/java/org/olat/course/member/_content/members_overview.html new file mode 100644 index 00000000000..b57b8ffe749 --- /dev/null +++ b/src/main/java/org/olat/course/member/_content/members_overview.html @@ -0,0 +1,11 @@ +<h4 class="b_with_small_icon_left b_group_icon"> + $r.translate("menu.members") +</h4> +<div class="b_clearfix"> + $r.render("segments") + + #if($r.available("membersCmp")) + $r.render("membersCmp") + #end + +</div> \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/member/_i18n/LocalStrings_de.properties new file mode 100644 index 00000000000..9b6cee03072 --- /dev/null +++ b/src/main/java/org/olat/course/member/_i18n/LocalStrings_de.properties @@ -0,0 +1,29 @@ +#Mon Mar 02 09:54:04 CET 2009 +menu.members=Mitglieder +menu.members.alt=Mitglieder +menu.groups=Gruppen +menu.groups.alt=Grupper +menu.orders=Buchungen +menu.orders.alt=Buchungen +menu.rights=Rechte +menu.rights.alt=Rechte +members.all=Alle +owners=Besitzer +tutors=Betreuer +participants=Teilnehmer +waitinglist=Warteliste +search=Suche +action=Aktion +role.owner=Besitzer +role.tutor=Betreuer +role.participant=Teilnehmer +role.waiting=Warteliste +table.header.work=Bearbeiten +table.header.remove=Entfernen +table.header.firstName=Vorname +table.header.lastName=Name +table.header.firstTime=Beitritt +table.header.lastTime=Zuletzt besucht +table.header.role=Rolle +table.header.groups=Gruppe +nomembers=Es wurden keine Mitglieder gefunden die Ihren Kriterien entsprechen. diff --git a/src/main/java/org/olat/course/member/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/member/_i18n/LocalStrings_en.properties new file mode 100644 index 00000000000..9a79f686027 --- /dev/null +++ b/src/main/java/org/olat/course/member/_i18n/LocalStrings_en.properties @@ -0,0 +1,29 @@ +#Fri Jan 21 13:51:21 CET 2011 +menu.members=Members +menu.members.alt=Members management +menu.groups=Groups +menu.groups.alt=Groups management +menu.orders=Booking +menu.orders.alt=Booking management +menu.rights=Rights +menu.rights.alt=Rights management +members.all=All +owners=Owners +tutors=Coaches +participants=Participants +waitinglist=Waiting list +search=Search +action=Action +role.owner=Propriétaire +role.tutor=Coach +role.participant=Participant +role.waiting=En attente +table.header.work=Work +table.header.remove=Remove +table.header.firstName=First name +table.header.lastName=Last name +table.header.firstTime=Joining +table.header.lastTime=Last visit +table.header.role=Roles +table.header.groups=Groups +nomembers=There are no members matching your criteria. \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/member/_i18n/LocalStrings_fr.properties new file mode 100644 index 00000000000..994da22ed2f --- /dev/null +++ b/src/main/java/org/olat/course/member/_i18n/LocalStrings_fr.properties @@ -0,0 +1,25 @@ +#Sun Sep 05 11:25:04 CEST 2010 +menu.members=Membres +menu.members.alt=Administration des membres du cours +menu.groups=Groupes +menu.groups.alt=Administration des groupes +menu.orders=Réservations +menu.orders.alt=Administration des r\u00E9servations +menu.rights=Droits +menu.rights.alt=Administration des droits du cours +members.all=Tous +owners=Propri\u00E9taires +tutors=Coaches +participants=Participants +waitinglist=Liste d'attente +search=Recherche +action=Action +table.header.work=Editer +table.header.remove=Enlever +table.header.firstName=Pr\u00E9nom +table.header.lastName=Nom +table.header.firstTime=Admission +table.header.lastTime=Derni\u00E8re visite +table.header.role=R\u00D4les +table.header.groups=Groupes +nomembers.nogroup=Aucun membre correspondant \u00E0 vos crit\u00E8res n'a \u00E9t\u00E9 trouv\u00E9. \ No newline at end of file diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java index 185d85771c0..d10701c9823 100644 --- a/src/main/java/org/olat/course/run/RunMainController.java +++ b/src/main/java/org/olat/course/run/RunMainController.java @@ -101,7 +101,7 @@ import org.olat.course.db.CustomDBMainController; import org.olat.course.editor.PublishEvent; import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.groupsandrights.CourseRights; -import org.olat.course.groupsandrights.ui.CourseGroupManagementMainController; +import org.olat.course.member.MembersManagementMainController; import org.olat.course.nodes.CourseNode; import org.olat.course.run.calendar.CourseCalendarController; import org.olat.course.run.glossary.CourseGlossaryFactory; @@ -122,7 +122,6 @@ import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryStatus; import org.olat.repository.RepositoryManager; import org.olat.repository.controllers.EntryChangedEvent; -import org.olat.resource.accesscontrol.ui.SecurityGroupsRepositoryMainController; import org.olat.util.logging.activity.LoggingResourceable; /** @@ -798,17 +797,9 @@ public class RunMainController extends MainLayoutBasicController implements Gene } else throw new OLATSecurityException("wanted to activate editor, but no according right"); - } else if (cmd.equals("groupmngt")) { + } else if (cmd.equals("unifiedusermngt")) { if (hasCourseRight(CourseRights.RIGHT_GROUPMANAGEMENT) || isCourseAdmin) { - currentToolCtr = new CourseGroupManagementMainController(ureq, getWindowControl(), course); - listenTo(currentToolCtr); - all.setContent(currentToolCtr.getInitialComponent()); - } else throw new OLATSecurityException("clicked groupmanagement, but no according right"); - //fxdiff VCRP-1,2: access control of resources - } else if (cmd.equals("simplegroupmngt")) { - if (hasCourseRight(CourseRights.RIGHT_GROUPMANAGEMENT) || isCourseAdmin) { - boolean mayModifyMembers = true; - currentToolCtr = new SecurityGroupsRepositoryMainController(ureq, getWindowControl(), course, courseRepositoryEntry, mayModifyMembers); + currentToolCtr = new MembersManagementMainController(ureq, getWindowControl(), courseRepositoryEntry); listenTo(currentToolCtr); all.setContent(currentToolCtr.getInitialComponent()); } else throw new OLATSecurityException("clicked groupmanagement, but no according right"); @@ -1108,9 +1099,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene } if (hasCourseRight(CourseRights.RIGHT_GROUPMANAGEMENT) || isCourseAdmin) { //fxdiff VCRP-1,2: access control of resources - myTool.addLink("simplegroupmngt", translate("command.opensimplegroupmngt")); - // - myTool.addLink("groupmngt", translate("command.opengroupmngt")); + myTool.addLink("unifiedusermngt", translate("command.opensimplegroupmngt")); } if (hasCourseRight(CourseRights.RIGHT_ARCHIVING) || isCourseAdmin) { myTool.addLink("archiver", translate("command.openarchiver")); diff --git a/src/main/java/org/olat/group/BusinessGroupService.java b/src/main/java/org/olat/group/BusinessGroupService.java index 5d8141bf32f..01f3d97715e 100644 --- a/src/main/java/org/olat/group/BusinessGroupService.java +++ b/src/main/java/org/olat/group/BusinessGroupService.java @@ -433,7 +433,7 @@ public interface BusinessGroupService { * @param businessGroups * @return The list of group keys where the identity is either participant or owner */ - public List<BusinessGroupMembership> getBusinessGroupMembership(Identity identity, Collection<Long> businessGroups); + public List<BusinessGroupMembership> getBusinessGroupMembership(Collection<Long> businessGroups, Identity... identity); /** * Checks if an identity is in a business group with a specific key, either as owner or diff --git a/src/main/java/org/olat/group/BusinessGroupView.java b/src/main/java/org/olat/group/BusinessGroupView.java index c7627711fb9..cc3ce332332 100644 --- a/src/main/java/org/olat/group/BusinessGroupView.java +++ b/src/main/java/org/olat/group/BusinessGroupView.java @@ -56,6 +56,8 @@ public interface BusinessGroupView extends BusinessGroupShort, Persistable, Crea public long getNumOfParticipants(); + public long getNumWaiting(); + public long getNumOfOffers(); public long getNumOfValidOffers(); diff --git a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java index fcebe1ff5ef..36e533a0478 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java @@ -236,16 +236,27 @@ public class BusinessGroupDAO { return res.intValue(); } - public List<BusinessGroupMembershipViewImpl> getMembershipInfoInBusinessGroups(Identity identity, Collection<Long> groupKeys) { + public List<BusinessGroupMembershipViewImpl> getMembershipInfoInBusinessGroups(Collection<Long> groupKeys, Identity... identity) { StringBuilder sb = new StringBuilder(); - sb.append("select membership from ").append(BusinessGroupMembershipViewImpl.class.getName()).append(" as membership ") - .append(" where membership.identityKey=:identId "); + sb.append("select membership from ").append(BusinessGroupMembershipViewImpl.class.getName()).append(" as membership "); + boolean and = false; + if(identity != null && identity.length > 0) { + and = and(sb, and); + sb.append("membership.identityKey in (:identIds) "); + } if(groupKeys != null && !groupKeys.isEmpty()) { - sb.append(" and (membership.ownerGroupKey in (:groupKeys) or membership.participantGroupKey in (:groupKeys) or membership.waitingGroupKey in (:groupKeys))"); + and = and(sb, and); + sb.append("(membership.ownerGroupKey in (:groupKeys) or membership.participantGroupKey in (:groupKeys) or membership.waitingGroupKey in (:groupKeys))"); } - TypedQuery<BusinessGroupMembershipViewImpl> query = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), BusinessGroupMembershipViewImpl.class) - .setParameter("identId", identity.getKey()); + TypedQuery<BusinessGroupMembershipViewImpl> query = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), BusinessGroupMembershipViewImpl.class); + if(identity != null && identity.length > 0) { + List<Long> ids = new ArrayList<Long>(identity.length); + for(Identity id:identity) { + ids.add(id.getKey()); + } + query.setParameter("identIds", ids); + } if(groupKeys != null && !groupKeys.isEmpty()) { query.setParameter("groupKeys", groupKeys); } @@ -924,7 +935,7 @@ public class BusinessGroupDAO { return string.toLowerCase(); } - private boolean where(StringBuilder sb, boolean where) { + private final boolean where(StringBuilder sb, boolean where) { if(where) { sb.append(" and "); } else { @@ -933,8 +944,15 @@ public class BusinessGroupDAO { return true; } - private boolean or(StringBuilder sb, boolean or) { + private final boolean and(StringBuilder sb, boolean and) { + if(and) sb.append(" and "); + else sb.append(" where "); + return true; + } + + private final boolean or(StringBuilder sb, boolean or) { if(or) sb.append(" or "); + else sb.append(" "); return true; } } diff --git a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java index 3fb7cc04778..1152a3d33f3 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java @@ -1321,9 +1321,9 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD @Override @Transactional(readOnly=true) - public List<BusinessGroupMembership> getBusinessGroupMembership(Identity identity, Collection<Long> businessGroups) { - List<BusinessGroupMembershipViewImpl> views = businessGroupDAO.getMembershipInfoInBusinessGroups(identity, businessGroups); - + public List<BusinessGroupMembership> getBusinessGroupMembership(Collection<Long> businessGroups, Identity... identity) { + List<BusinessGroupMembershipViewImpl> views = + businessGroupDAO.getMembershipInfoInBusinessGroups(businessGroups, identity); Map<Long, BusinessGroupMembershipImpl> memberships = new HashMap<Long, BusinessGroupMembershipImpl>(); for(BusinessGroupMembershipViewImpl membership: views) { diff --git a/src/main/java/org/olat/group/model/BusinessGroupViewImpl.java b/src/main/java/org/olat/group/model/BusinessGroupViewImpl.java index 19cb3b494ae..6251da53d45 100644 --- a/src/main/java/org/olat/group/model/BusinessGroupViewImpl.java +++ b/src/main/java/org/olat/group/model/BusinessGroupViewImpl.java @@ -52,6 +52,7 @@ public class BusinessGroupViewImpl extends PersistentObject implements BusinessG private long numOfOwners; private long numOfParticipants; + private long numWaiting; private long numOfRelations; private long numOfOffers; private long numOfValidOffers; @@ -83,6 +84,15 @@ public class BusinessGroupViewImpl extends PersistentObject implements BusinessG this.numOfParticipants = numOfParticipants; } + @Override + public long getNumWaiting() { + return numWaiting; + } + + public void setNumWaiting(long numWaiting) { + this.numWaiting = numWaiting; + } + @Override public long getNumOfOffers() { return numOfOffers; diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java index 40ff61baa64..8fc62678cc6 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java @@ -62,6 +62,7 @@ import org.olat.core.id.Roles; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; +import org.olat.core.util.Util; import org.olat.core.util.mail.MailNotificationEditController; import org.olat.core.util.mail.MailTemplate; import org.olat.core.util.resource.OresHelper; @@ -87,6 +88,7 @@ import org.olat.group.ui.wizard.BGMergeStep; import org.olat.group.ui.wizard.BGUserMailTemplate; import org.olat.group.ui.wizard.BGUserManagementController; import org.olat.repository.RepositoryEntryShort; +import org.olat.resource.OLATResource; import org.olat.resource.accesscontrol.ACService; import org.olat.resource.accesscontrol.model.OLATResourceAccess; import org.olat.resource.accesscontrol.model.PriceMethodBundle; @@ -96,7 +98,7 @@ import org.olat.util.logging.activity.LoggingResourceable; * * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com */ -abstract class AbstractBusinessGroupListController extends BasicController implements Activateable2 { +public abstract class AbstractBusinessGroupListController extends BasicController implements Activateable2 { protected static final String TABLE_ACTION_LEAVE = "bgTblLeave"; protected static final String TABLE_ACTION_LAUNCH = "bgTblLaunch"; protected static final String TABLE_ACTION_ACCESS = "bgTblAccess"; @@ -135,7 +137,7 @@ abstract class AbstractBusinessGroupListController extends BasicController imple protected final CollaborationToolsFactory collaborationTools; public AbstractBusinessGroupListController(UserRequest ureq, WindowControl wControl, String page) { - super(ureq, wControl); + super(ureq, wControl, Util.createPackageTranslator(AbstractBusinessGroupListController.class, ureq.getLocale())); admin = ureq.getUserSession().getRoles().isOLATAdmin() || ureq.getUserSession().getRoles().isGroupManager(); businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); @@ -703,16 +705,20 @@ abstract class AbstractBusinessGroupListController extends BasicController imple updateTableModel(lastSearchParams, false); } + protected OLATResource getResource() { + return null; + } + protected List<BusinessGroupView> updateTableModel(SearchBusinessGroupParams params, boolean alreadyMarked) { List<BusinessGroupView> groups; if(params == null) { groups = new ArrayList<BusinessGroupView>(); } else { - groups = businessGroupService.findBusinessGroupViews(params, null, 0, -1); + groups = businessGroupService.findBusinessGroupViews(params, getResource(), 0, -1); } lastSearchParams = params; if(groups.isEmpty()) { - groupListModel.setEntries(Collections.<BGTableItem>emptyList(), Collections.<Long,BusinessGroupMembership>emptyMap()); + groupListModel.setEntries(Collections.<BGTableItem>emptyList()); groupListCtr.modelChanged(); return groups; } @@ -728,7 +734,7 @@ abstract class AbstractBusinessGroupListController extends BasicController imple } //retrieve all user's membership if there are more than 50 groups - List<BusinessGroupMembership> groupsAsOwner = businessGroupService.getBusinessGroupMembership(getIdentity(), groupKeysWithMembers); + List<BusinessGroupMembership> groupsAsOwner = businessGroupService.getBusinessGroupMembership(groupKeysWithMembers, getIdentity()); Map<Long, BusinessGroupMembership> memberships = new HashMap<Long, BusinessGroupMembership>(); for(BusinessGroupMembership membership: groupsAsOwner) { memberships.put(membership.getGroupKey(), membership); @@ -785,7 +791,7 @@ abstract class AbstractBusinessGroupListController extends BasicController imple items.add(tableItem); } - groupListModel.setEntries(items, memberships); + groupListModel.setEntries(items); groupListCtr.modelChanged(); return groups; } diff --git a/src/main/java/org/olat/group/ui/main/BGTableItem.java b/src/main/java/org/olat/group/ui/main/BGTableItem.java index bba136ff87b..20efed0c806 100644 --- a/src/main/java/org/olat/group/ui/main/BGTableItem.java +++ b/src/main/java/org/olat/group/ui/main/BGTableItem.java @@ -86,6 +86,14 @@ public class BGTableItem { return businessGroup.getNumOfParticipants(); } + public long getNumOfOwners() { + return businessGroup.getNumOfOwners(); + } + + public long getNumWaiting() { + return businessGroup.getNumWaiting(); + } + public Integer getMaxParticipants() { return businessGroup.getMaxParticipants(); } @@ -190,6 +198,8 @@ public class BGTableItem { private final Long key; private final String name; private final Integer maxParticipants; + private long numWaiting; + private long numOfOwners; private long numOfParticipants; private final boolean waitingListEnabled; private final boolean autoCloseRanksEnabled; @@ -206,6 +216,8 @@ public class BGTableItem { key = group.getKey(); name = group.getName().intern(); maxParticipants = group.getMaxParticipants(); + numWaiting = group.getNumWaiting(); + numOfOwners = group.getNumOfOwners(); numOfParticipants = group.getNumOfParticipants(); waitingListEnabled = group.getWaitingListEnabled() == null ? false : group.getWaitingListEnabled().booleanValue(); autoCloseRanksEnabled = group.getAutoCloseRanksEnabled() == null ? false : group.getAutoCloseRanksEnabled().booleanValue(); @@ -239,6 +251,14 @@ public class BGTableItem { return numOfParticipants; } + public long getNumOfOwners() { + return numOfOwners; + } + + public long getNumWaiting() { + return numWaiting; + } + public boolean isWaitingListEnabled() { return waitingListEnabled; } diff --git a/src/main/java/org/olat/group/ui/main/BusinessGroupTableModelWithType.java b/src/main/java/org/olat/group/ui/main/BusinessGroupTableModelWithType.java index b671c166409..fa9dafd308d 100644 --- a/src/main/java/org/olat/group/ui/main/BusinessGroupTableModelWithType.java +++ b/src/main/java/org/olat/group/ui/main/BusinessGroupTableModelWithType.java @@ -26,9 +26,7 @@ package org.olat.group.ui.main; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import java.util.Map; import org.apache.commons.lang.StringEscapeUtils; import org.olat.core.gui.UserRequest; @@ -45,9 +43,7 @@ import org.olat.group.BusinessGroupMembership; */ public class BusinessGroupTableModelWithType extends DefaultTableDataModel<BGTableItem> { private final int columnCount; - private Translator trans; - - private Map<Long, BusinessGroupMembership> memberships; + private final Translator trans; /** * @param owned list of business groups @@ -105,18 +101,14 @@ public class BusinessGroupTableModelWithType extends DefaultTableDataModel<BGTab return wrapped.getBusinessGroupLastUsage(); case role: return wrapped.getMembership(); - case firstTime: - if(memberships != null) { - BusinessGroupMembership membership = wrapped.getMembership(); - return membership == null ? null : membership.getCreationDate(); - } - return null; - case lastTime: - if(memberships != null) { - BusinessGroupMembership membership = wrapped.getMembership(); - return membership == null ? null : membership.getLastModified(); - } - return null; + case firstTime: { + BusinessGroupMembership membership = wrapped.getMembership(); + return membership == null ? null : membership.getCreationDate(); + } + case lastTime: { + BusinessGroupMembership membership = wrapped.getMembership(); + return membership == null ? null : membership.getLastModified(); + } case key: return wrapped.getBusinessGroupKey().toString(); case freePlaces: { @@ -127,6 +119,21 @@ public class BusinessGroupTableModelWithType extends DefaultTableDataModel<BGTab } return "∞"; } + case participantsCount: { + long count = wrapped.getNumOfParticipants(); + return count < 0 ? "0" : Long.toString(count); + } + case tutorsCount: { + long count = wrapped.getNumOfOwners(); + return count < 0 ? "0" : Long.toString(count); + } + case waitingListCount: { + if(wrapped.isWaitingListEnabled()) { + long count = wrapped.getNumWaiting(); + return count < 0 ? "0" : Long.toString(count); + } + return "-"; + } case wrapper: return wrapped; default: @@ -140,44 +147,31 @@ public class BusinessGroupTableModelWithType extends DefaultTableDataModel<BGTab return new BusinessGroupTableModelWithType(trans, columnCount); } - public boolean filterEditableGroups(UserRequest ureq, List<BusinessGroup> groups) { - if(ureq.getUserSession().getRoles().isOLATAdmin() || ureq.getUserSession().getRoles().isGroupManager()) { - return false; - } - - int countBefore = groups.size(); - for(Iterator<BusinessGroup> it=groups.iterator(); it.hasNext(); ) { - BusinessGroup group = it.next(); - BusinessGroupMembership membership = memberships.get(group.getKey()); - if(membership == null || !membership.isOwner()) { - it.remove(); - } - } - return groups.size() != countBefore; - } - public boolean filterEditableGroupKeys(UserRequest ureq, List<Long> groupKeys) { if(ureq.getUserSession().getRoles().isOLATAdmin() || ureq.getUserSession().getRoles().isGroupManager()) { return false; } int countBefore = groupKeys.size(); - for(Iterator<Long> it=groupKeys.iterator(); it.hasNext(); ) { - Long groupKey = it.next(); - BusinessGroupMembership membership = memberships.get(groupKey); - if(membership == null || !membership.isOwner()) { - it.remove(); + + for(BGTableItem item:getObjects()) { + Long groupKey = item.getBusinessGroupKey(); + if(groupKeys.contains(groupKey)) { + BusinessGroupMembership membership = item.getMembership(); + if(membership == null || !membership.isOwner()) { + groupKeys.remove(groupKey); + } } } + return groupKeys.size() != countBefore; } /** * @param owned */ - public void setEntries(List<BGTableItem> owned, Map<Long, BusinessGroupMembership> memberships) { + public void setEntries(List<BGTableItem> owned) { setObjects(owned); - this.memberships = memberships; } public void removeBusinessGroup(BusinessGroup bg) { @@ -207,6 +201,9 @@ public class BusinessGroupTableModelWithType extends DefaultTableDataModel<BGTab lastTime("table.header.lastTime"), key("table.header.key"), freePlaces("table.header.freePlaces"), + participantsCount("table.header.participantsCount"), + tutorsCount("table.header.tutorsCount"), + waitingListCount("table.header.waitingListCount"), wrapper(""), card("table.header.businesscard"); diff --git a/src/main/java/org/olat/group/ui/main/OverviewBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/OverviewBusinessGroupListController.java index bc49d0a1e70..602d569ab85 100644 --- a/src/main/java/org/olat/group/ui/main/OverviewBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/OverviewBusinessGroupListController.java @@ -144,6 +144,7 @@ public class OverviewBusinessGroupListController extends BasicController impleme ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); favoritGroupsCtrl = new FavoritBusinessGroupListController(ureq, bwControl); + listenTo(favoritGroupsCtrl); } favoritGroupsCtrl.updateMarkedGroups(); mainVC.put("groupList", favoritGroupsCtrl.getInitialComponent()); @@ -157,6 +158,7 @@ public class OverviewBusinessGroupListController extends BasicController impleme ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); allGroupsCtrl = new BusinessGroupListController(ureq, bwControl); + listenTo(allGroupsCtrl); } allGroupsCtrl.updateAllGroups(); mainVC.put("groupList", allGroupsCtrl.getInitialComponent()); @@ -170,6 +172,7 @@ public class OverviewBusinessGroupListController extends BasicController impleme ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); ownedGroupsCtrl = new OwnedBusinessGroupListController(ureq, bwControl); + listenTo(ownedGroupsCtrl); } ownedGroupsCtrl.updateOwnedGroups(); mainVC.put("groupList", ownedGroupsCtrl.getInitialComponent()); @@ -183,6 +186,7 @@ public class OverviewBusinessGroupListController extends BasicController impleme ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); searchGroupsCtrl = new SearchBusinessGroupListController(ureq, bwControl); + listenTo(searchGroupsCtrl); } searchGroupsCtrl.updateSearch(ureq); mainVC.put("groupList", searchGroupsCtrl.getInitialComponent()); diff --git a/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_de.properties index d1de97ec856..693b953a04b 100644 --- a/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_de.properties @@ -80,6 +80,9 @@ table.header.firstTime=Beitritt table.header.lastTime=Zuletzt besucht table.header.key=ID table.header.freePlaces=Plätze +table.header.tutorsCount=Betreuer +table.header.participantsCount=Belegt +table.header.waitingListCount=Warteliste table.access=Beitreten table.access.waitingList=Warteliste eintragen table.delete=Löschen diff --git a/src/main/java/org/olat/group/ui/management/BGManagementController.java b/src/main/java/org/olat/group/ui/management/BGManagementController.java deleted file mode 100644 index af230b85a14..00000000000 --- a/src/main/java/org/olat/group/ui/management/BGManagementController.java +++ /dev/null @@ -1,1176 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <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 -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <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> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.group.ui.management; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Locale; - -import org.olat.NewControllerFactory; -import org.olat.admin.securitygroup.gui.UserControllerFactory; -import org.olat.admin.user.UserTableDataModel; -import org.olat.basesecurity.BaseSecurity; -import org.olat.basesecurity.BaseSecurityManager; -import org.olat.basesecurity.Constants; -import org.olat.basesecurity.SecurityGroup; -import org.olat.collaboration.CollaborationTools; -import org.olat.collaboration.CollaborationToolsFactory; -import org.olat.core.CoreSpringFactory; -import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; -import org.olat.core.gui.ShortName; -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -import org.olat.core.gui.components.link.Link; -import org.olat.core.gui.components.link.LinkFactory; -import org.olat.core.gui.components.panel.Panel; -import org.olat.core.gui.components.table.DefaultColumnDescriptor; -import org.olat.core.gui.components.table.StaticColumnDescriptor; -import org.olat.core.gui.components.table.Table; -import org.olat.core.gui.components.table.TableController; -import org.olat.core.gui.components.table.TableEvent; -import org.olat.core.gui.components.table.TableGuiConfiguration; -import org.olat.core.gui.components.tree.GenericTreeModel; -import org.olat.core.gui.components.tree.GenericTreeNode; -import org.olat.core.gui.components.tree.MenuTree; -import org.olat.core.gui.components.tree.TreeModel; -import org.olat.core.gui.components.tree.TreeNode; -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.MainLayoutBasicController; -import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; -import org.olat.core.gui.control.generic.modal.DialogBoxController; -import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; -import org.olat.core.gui.control.generic.tool.ToolController; -import org.olat.core.gui.control.generic.tool.ToolFactory; -import org.olat.core.gui.translator.Translator; -import org.olat.core.id.Identity; -import org.olat.core.id.Roles; -import org.olat.core.id.User; -import org.olat.core.id.UserConstants; -import org.olat.core.id.context.BusinessControlFactory; -import org.olat.core.logging.AssertException; -import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; -import org.olat.core.util.Util; -import org.olat.core.util.coordinate.CoordinatorManager; -import org.olat.core.util.event.GenericEventListener; -import org.olat.core.util.i18n.I18nManager; -import org.olat.core.util.mail.ContactList; -import org.olat.core.util.mail.ContactMessage; -import org.olat.group.BusinessGroup; -import org.olat.group.BusinessGroupModule; -import org.olat.group.BusinessGroupService; -import org.olat.group.GroupLoggingAction; -import org.olat.group.area.BGArea; -import org.olat.group.area.BGAreaManager; -import org.olat.group.ui.BGControllerFactory; -import org.olat.group.ui.BusinessGroupTableModel; -import org.olat.group.ui.NewAreaController; -import org.olat.group.ui.NewBGController; -import org.olat.group.ui.area.BGAreaEditController; -import org.olat.group.ui.area.BGAreaTableModel; -import org.olat.group.ui.edit.BusinessGroupEditController; -import org.olat.group.ui.edit.BusinessGroupModifiedEvent; -import org.olat.group.ui.run.BusinessGroupMainRunController; -import org.olat.group.ui.run.BusinessGroupSendToChooserForm; -import org.olat.group.ui.wizard.BGCopyWizardController; -import org.olat.group.ui.wizard.BGMultipleCopyWizardController; -import org.olat.group.ui.wizard.MemberListWizardController; -import org.olat.modules.co.ContactFormController; -import org.olat.resource.OLATResource; -import org.olat.user.HomePageConfig; -import org.olat.user.HomePageConfigManagerImpl; -import org.olat.user.HomePageDisplayController; -import org.olat.user.UserManager; -import org.olat.util.logging.activity.LoggingResourceable; - - -/** - * Description:<BR/> This controller provides a complete groupmanagement for a - * given group context. The provided functionality is configured using the - * BGConfigurationFlags. If you want to use this class, don't use the - * constructor but get an instance using the BGControllerFactory <P/> Initial - * Date: Aug 25, 2004 - * - * @author gnaegi - */ -public class BGManagementController extends MainLayoutBasicController implements GenericEventListener { - - // Menu commands - private static final String CMD_OVERVIEW = "cmd.overview"; - private static final String CMD_GROUPLIST = "cmd.grouplist"; - private static final String CMD_AREALIST = "cmd.arealist"; - // Toolbox commands - private static final String CMD_GROUP_CREATE = "cmd.group.create"; - private static final String CMD_AREA_CREATE = "cmd.area.create"; - private static final String CMD_CLOSE = "cmd.close"; - private static final String CMD_BACK = "cmd.back"; - // List commands - private static final String CMD_GROUP_RUN = "cmd.group.run"; - private static final String CMD_GROUP_MESSAGE = "cmd.group.message"; - private static final String CMD_GROUP_EDIT = "cmd.group.edit"; - private static final String CMD_GROUP_DELETE = "cmd.group.delete"; - private static final String CMD_GROUP_COPY = "cmd.group.copy"; - private static final String CMD_GROUP_COPY_MULTIPLE = "cmd.group.copy.multiple"; - private static final String CMD_AREA_EDIT = "cmd.area.edit"; - private static final String CMD_AREA_DELETE = "cmd.area.delete"; - // User commands - private static final String CMD_USER_LIST = "cmd.user.list"; - private static final String CMD_USER_DETAILS = "cmd.user.details"; - private static final String CMD_USER_REMOVE_GROUP_PART = "cmd.user.remove.group.part"; - private static final String CMD_USER_REMOVE_GROUP_OWN = "cmd.user.remove.group.own"; - private static final String CMD_USER_MESSAGE = "cmd.user.message"; - private static final String CMD_OWNERS_MESSAGE = "cmd.owners.message"; - private static final String CMD_PARTICIPANTS_MESSAGE = "cmd.participants.message"; - private static final String CMD_LIST_MEMBERS_WITH_GROUPS = "cmd.list.members.with.groups"; - private static final String CMD_LIST_MEMBERS_WITH_AREAS = "cmd.list.members.with.areas"; - - private static final int STATE_OVERVIEW = 1; - private static final int STATE_CONTEXT_REMOVED = 3; - private static final int STATE_GROUP_CREATE_FORM = 100; - private static final int STATE_GROUP_EDIT = 101; - private static final int STATE_GROUP_LIST = 102; - private static final int STATE_AREA_CREATE_FORM = 200; - private static final int STATE_AREA_EDIT = 201; - private static final int STATE_AREA_LIST = 202; - - private static final int STATE_USER_LIST = 300; - private static final int STATE_USER_DETAILS = 301; - - private BusinessGroupEditController groupEditCtr; - private BGAreaEditController areaEditCtr; - private VelocityContainer overviewVC, newGroupVC, sendMessageVC, vc_sendToChooserForm; - private BusinessGroupSendToChooserForm sendToChooserForm; - private Translator businessGroupTranslator; - private boolean isGMAdminOwner; - private VelocityContainer newAreaVC, areaListVC, groupListVC, userListVC, userDetailsVC; - private BusinessGroupTableModel groupListModel; - private BGAreaTableModel areaListModel; - private TableController groupListCtr, areaListCtr, ownerListCtr, participantListCtr; - private UserTableDataModel ownerListModel, participantListModel; - private HomePageDisplayController homePageDisplayController; - private DialogBoxController confirmDeleteGroup, confirmDeleteArea; - private ContactFormController contactCtr; - private BGCopyWizardController bgCopyWizardCtr; - private BGMultipleCopyWizardController bgMultipleCopyWizardCtr; - - private final boolean backLink; - - // Layout components and controllers - private Panel content; - private LayoutMain3ColsController columnLayoutCtr; - private MenuTree olatMenuTree; - private ToolController toolC; - - // Managers - private final UserManager userManager; - private final BGAreaManager areaManager; - private final BaseSecurity securityManager; - private final BusinessGroupModule groupModule; - private final BusinessGroupService businessGroupService; - - // Workflow variables - private final OLATResource resource; - - private List<ShortName> areaFilters; - private BGArea currentAreaFilter; - private Component backComponent, currentComponent; - private BusinessGroup currentGroup; - private BGArea currentArea; - private Identity currentIdentity; - private Link backButton; - private NewBGController groupCreateController; - private NewAreaController areaCreateController; - - private CloseableModalController closeableModalController; - private MemberListWizardController memberListWizardController; - - /** - * Use BGControllerFactrory to create such a controller. DO NOT USE THIS - * CONSTRUCTOR! - * - * @param ureq - * @param wControl - * @param bgContext - * @param controllerFlags - */ - public BGManagementController(UserRequest ureq, WindowControl wControl, OLATResource resource, String resourceName, boolean backLink) { - super(ureq, wControl); - this.resource = resource; - this.backLink = backLink; - - // Initialize managers - userManager = CoreSpringFactory.getImpl(UserManager.class); - areaManager = CoreSpringFactory.getImpl(BGAreaManager.class); - securityManager = CoreSpringFactory.getImpl(BaseSecurity.class); - groupModule = CoreSpringFactory.getImpl(BusinessGroupModule.class); - businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); - - businessGroupTranslator = Util.createPackageTranslator(BusinessGroupMainRunController.class, ureq.getLocale()); - // Initialize translator - // 1 - package translator with default group fallback translators and type - // translator - setTranslator(Util.createPackageTranslator(BGControllerFactory.class, getLocale(), getTranslator())); - // user translator - - // initialize all velocity containers - initVC(resourceName); - - // Layout is controlled with generic controller: menu - content - tools - // Navigation menu - olatMenuTree = new MenuTree("olatMenuTree"); - TreeModel tm = buildTreeModel(ureq); - olatMenuTree.setTreeModel(tm); - olatMenuTree.setSelectedNodeId(tm.getRootNode().getIdent()); - olatMenuTree.addListener(this); - // Content - content = new Panel("content"); - // Tools - // 1 create empty Tools and init menuAndToolController - // 2 set correct tools using setTools method (override step 1) - toolC = ToolFactory.createToolController(getWindowControl()); - listenTo(toolC); - columnLayoutCtr = new LayoutMain3ColsController(ureq, getWindowControl(), olatMenuTree, toolC.getInitialComponent(), content, "groupmngt"); - listenTo(columnLayoutCtr); - - doOverview(ureq); - - putInitialPanel(columnLayoutCtr.getInitialComponent()); - - //disposed message controller - //must be created beforehand - Panel empty = new Panel("empty");//empty panel set as "menu" and "tool" - Controller courseCloser = new DisposedBGAManagementController(ureq, wControl, this); - listenTo(courseCloser); - Controller disposedBGAManagementController = new LayoutMain3ColsController(ureq, wControl, empty, empty, courseCloser.getInitialComponent(), "disposedgroupmngt"); - listenTo(disposedBGAManagementController); - setDisposedMsgController(disposedBGAManagementController); - - // register for changes in this group context - CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, ureq.getIdentity(), resource); - } - - /** - * @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) - */ - @Override - public void event(UserRequest ureq, Component source, Event event) { - String cmd = event.getCommand(); - if (source == olatMenuTree) { - if (cmd.equals(MenuTree.COMMAND_TREENODE_CLICKED)) { - handleMenuCommands(ureq); - } - } else if (source == backButton){ - doUsersList(ureq, true); // for now init whole table models again - } else if (source instanceof Link) { - Link link = (Link) source; - BusinessGroup group = (BusinessGroup) link.getUserObject(); - String groupKey = group.getKey().toString(); - if (link.getCommand().indexOf(CMD_USER_REMOVE_GROUP_PART) == 0) { - doRemoveUserFromParticipatingGroup(ureq.getIdentity(), this.currentIdentity, groupKey); - doUserDetails(ureq); - } else if (link.getCommand().indexOf(CMD_USER_REMOVE_GROUP_OWN) == 0) { - doRemoveUserFromOwnedGroup(ureq, groupKey); - doUserDetails(ureq); - } - } - } - - /** - * @see org.olat.core.util.event.GenericEventListener#event(org.olat.core.gui.control.Event) - */ - public void event(Event event) { - if (event instanceof BusinessGroupModifiedEvent) { - if (event.getCommand().equals(BusinessGroupModifiedEvent.CONFIGURATION_MODIFIED_EVENT)) { - // update reference to updated business group object - BusinessGroup modifiedGroup = businessGroupService.loadBusinessGroup(currentGroup); - if (groupListModel != null) { - List<BusinessGroup> groups = groupListModel.getObjects(); - if (groups.contains(currentGroup)) { - int i = groups.indexOf(currentGroup); - groups.set(i, modifiedGroup); - } - } - currentGroup = modifiedGroup; - } - } - } - - private void doGroupMessage(UserRequest ureq) { - List<Identity> list = securityManager.getIdentitiesOfSecurityGroup(currentGroup.getPartipiciantGroup()); - list.addAll(securityManager.getIdentitiesOfSecurityGroup(currentGroup.getOwnerGroup())); - doContactForm(ureq); - sendMessageVC.contextPut("title", translate("group.message", currentGroup.getName())); - } - - /**removeAsListenerAndDispose - * @param ureq - */ - private void doContactForm(UserRequest ureq) { - if (vc_sendToChooserForm == null) { - vc_sendToChooserForm = new VelocityContainer("cosendtochooser", BusinessGroupMainRunController.class, "cosendtochooser", businessGroupTranslator, this); - } - removeAsListenerAndDispose(sendToChooserForm); - sendToChooserForm = new BusinessGroupSendToChooserForm(ureq, getWindowControl(), this.currentGroup, getIsGMAdminOwner(ureq)); - listenTo(sendToChooserForm); - vc_sendToChooserForm.put("vc_sendToChooserForm", sendToChooserForm.getInitialComponent()); - content.setContent(vc_sendToChooserForm); - } - - /** - * @param ureq - * @return - */ - private boolean getIsGMAdminOwner(UserRequest ureq) { - isGMAdminOwner = ureq.getUserSession().getRoles().isOLATAdmin() - || ureq.getUserSession().getRoles().isGroupManager() - || (currentGroup != null && securityManager.isIdentityPermittedOnResourceable(ureq.getIdentity(), Constants.PERMISSION_ACCESS, currentGroup)); - return isGMAdminOwner; - } - - private void doOwnersMessage(UserRequest ureq) { - List<Identity> owners = ownerListModel.getObjects(); - doSendMessage(owners, translate("owners.message.to"), ureq); - sendMessageVC.contextPut("title", translate("owners.message")); - } - - private void doParticipantsMessage(UserRequest ureq) { - List<Identity> participants = participantListModel.getObjects(); - doSendMessage(participants, translate("participants.message.to"), ureq); - sendMessageVC.contextPut("title", translate("participants.message")); - } - - private void doUserMessage(UserRequest ureq) { - List<Identity> users = new ArrayList<Identity>(); - users.add(currentIdentity); - User user = currentIdentity.getUser(); - Locale loc = I18nManager.getInstance().getLocaleOrDefault(user.getPreferences().getLanguage()); - doSendMessage(users, user.getProperty(UserConstants.FIRSTNAME, loc) + " " + user.getProperty(UserConstants.LASTNAME, loc), ureq); - - String fullName = userManager.getUserDisplayName(user); - sendMessageVC.contextPut("title", getTranslator().translate("user.message", new String[] { fullName })); - } - - private void doSendMessage(List<Identity> identities, String mailToName, UserRequest ureq) { - ContactMessage cmsg = new ContactMessage(ureq.getIdentity()); - ContactList contactList = new ContactList(mailToName); - contactList.addAllIdentites(identities); - cmsg.addEmailTo(contactList); - removeAsListenerAndDispose(contactCtr); - contactCtr = new ContactFormController(ureq, getWindowControl(), false, true, false, false, cmsg); - listenTo(contactCtr); - sendMessageVC.put("contactForm", contactCtr.getInitialComponent()); - setMainContent(sendMessageVC); - } - - private void doAreaDeleteConfirm(UserRequest ureq) { - confirmDeleteArea = activateYesNoDialog(ureq, null, translate("area.delete", this.currentArea.getName() ), confirmDeleteArea); - } - - private void doGroupDeleteConfirm(UserRequest ureq) { - String confirmDeleteGroupText; - List<String> deleteableList = businessGroupService.getDependingDeletablableListFor(currentGroup, ureq.getLocale()); - if (deleteableList.isEmpty()) { - confirmDeleteGroupText = translate("group.delete", this.currentGroup.getName() ); - } else { - StringBuilder buf = new StringBuilder(); - for (String element : deleteableList) { - if (buf.length() > 0) buf.append(" ,"); - buf.append(element); - } - String[] args = new String[] {this.currentGroup.getName(), buf.toString()}; - confirmDeleteGroupText = translate("group.delete.in.use", args ); - } - confirmDeleteGroup = activateYesNoDialog(ureq, null, confirmDeleteGroupText, confirmDeleteGroup); - } - - private void listMembers(UserRequest ureq, String cmd) { - if(CMD_LIST_MEMBERS_WITH_GROUPS.equals(cmd)) { - removeAsListenerAndDispose(memberListWizardController); - memberListWizardController = new MemberListWizardController(ureq, getWindowControl(), resource, MemberListWizardController.GROUPS_MEMBERS); - listenTo(memberListWizardController); - } else if(CMD_LIST_MEMBERS_WITH_AREAS.equals(cmd)) { - removeAsListenerAndDispose(memberListWizardController); - memberListWizardController = new MemberListWizardController(ureq, getWindowControl(), resource, MemberListWizardController.AREAS_MEMBERS); - listenTo(memberListWizardController); - } - if(memberListWizardController!=null) { - removeAsListenerAndDispose(closeableModalController); - closeableModalController = new CloseableModalController(getWindowControl(), translate("close"), memberListWizardController.getInitialComponent()); - listenTo(closeableModalController); - closeableModalController.activate(); - } - } - - /** - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, - * org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event) - */ - @Override - public void event(UserRequest ureq, Controller source, Event event) { - String cmd = event.getCommand(); - if (source == toolC) { - handleToolCommands(ureq, cmd); - } else if (source == groupEditCtr) { - if (event == Event.CANCELLED_EVENT) { // when group was locked - releaseAdminLockAndGroupMUE(); - doBack(); - } - } else if (source == bgCopyWizardCtr) { - if (event.equals(Event.DONE_EVENT)) { - BusinessGroup newGroup = bgCopyWizardCtr.getNewGroup(); - if (newGroup == null) { - throw new AssertException("bgCopyWizardCtr.getNewGroup returned null"); - } else { - releaseAdminLockAndGroupMUE(); - getWindowControl().pop(); - this.currentGroup = newGroup; - doGroupEdit(ureq); - } - } else if (event.equals(Event.CANCELLED_EVENT)) { - getWindowControl().pop(); - } - } else if (source == bgMultipleCopyWizardCtr) { - if (event.equals(Event.DONE_EVENT)) { - releaseAdminLockAndGroupMUE(); - getWindowControl().pop(); - doGroupList(ureq, true); - } else if (event.equals(Event.CANCELLED_EVENT)) { - getWindowControl().pop(); - } - } else if (source == confirmDeleteGroup) { - if (DialogBoxUIFactory.isYesEvent(event)) { // yes case - releaseAdminLockAndGroupMUE(); - LoggingResourceable lri = LoggingResourceable.wrap(currentGroup); - doGroupDelete(); - doGroupList(ureq, false); - // do logging - ThreadLocalUserActivityLogger.log(GroupLoggingAction.GROUP_DELETED, getClass(), lri); - showInfo("info.group.deleted"); - } - } else if (source == areaEditCtr) { - // TODO event: changed area: update models - } else if (source == confirmDeleteArea) { - if (DialogBoxUIFactory.isYesEvent(event)) { // yes case - LoggingResourceable lri = LoggingResourceable.wrap(currentArea); - doAreaDelete(); - doAreaList(ureq, false); - // do logging - ThreadLocalUserActivityLogger.log(GroupLoggingAction.AREA_DELETED, getClass(), lri); - } - } else if (source == contactCtr) { - if (event.equals(Event.DONE_EVENT) || event.equals(Event.CANCELLED_EVENT)) { - doBack(); - } - } else if (source == groupListCtr) { - if (event.equals(TableController.EVENT_NOFILTER_SELECTED)) { - this.currentAreaFilter = null; - doGroupList(ureq, true); - } else if (event.equals(TableController.EVENT_FILTER_SELECTED)) { - this.currentAreaFilter = (BGArea) groupListCtr.getActiveFilter(); - doGroupList(ureq, true); - } else if (cmd.equals(Table.COMMANDLINK_ROWACTION_CLICKED)) { - TableEvent te = (TableEvent) event; - String actionid = te.getActionId(); - int rowid = te.getRowId(); - BusinessGroup selectedGroup = groupListModel.getBusinessGroupAt(rowid); - currentGroup = CoreSpringFactory.getImpl(BusinessGroupService.class).loadBusinessGroup(selectedGroup.getKey()); - if(currentGroup == null) { - groupListModel.removeBusinessGroup(selectedGroup); - groupListCtr.modelChanged(); - } else if (actionid.equals(CMD_GROUP_EDIT)) { - doGroupEdit(ureq); - } else if (actionid.equals(CMD_GROUP_RUN)) { - String bsuinessPath = "[BusinessGroup:" + currentGroup.getKey() + "]"; - NewControllerFactory.getInstance().launch(bsuinessPath, ureq, getWindowControl()); - } else if (actionid.equals(CMD_GROUP_DELETE)) { - doGroupDeleteConfirm(ureq); - } - } - } else if (source == areaListCtr) { - if (cmd.equals(Table.COMMANDLINK_ROWACTION_CLICKED)) { - TableEvent te = (TableEvent) event; - String actionid = te.getActionId(); - int rowid = te.getRowId(); - this.currentArea = areaListModel.getObject(rowid); - if (actionid.equals(CMD_AREA_EDIT)) { - doAreaEdit(ureq); - } else if (actionid.equals(CMD_AREA_DELETE)) { - doAreaDeleteConfirm(ureq); - } - } - } else if (source == ownerListCtr) { - if (cmd.equals(Table.COMMANDLINK_ROWACTION_CLICKED)) { - TableEvent te = (TableEvent) event; - String actionid = te.getActionId(); - int rowid = te.getRowId(); - this.currentIdentity = ownerListModel.getIdentityAt(rowid); - if (actionid.equals(CMD_USER_DETAILS)) { - doUserDetails(ureq); - } - } - } else if (source == participantListCtr) { - if (cmd.equals(Table.COMMANDLINK_ROWACTION_CLICKED)) { - TableEvent te = (TableEvent) event; - String actionid = te.getActionId(); - int rowid = te.getRowId(); - this.currentIdentity = participantListModel.getIdentityAt(rowid); - if (actionid.equals(CMD_USER_DETAILS)) { - doUserDetails(ureq); - } - } - } else if (source == groupCreateController){ - if (event == Event.DONE_EVENT) { - releaseAdminLockAndGroupMUE(); - this.currentGroup = groupCreateController.getCreatedGroup(); - doGroupEdit(ureq); - // do loggin is already done in create controller - } else if (event == Event.CANCELLED_EVENT) { - doBack(); - } - } else if (source == areaCreateController){ - if (event == Event.DONE_EVENT) { - releaseAdminLockAndGroupMUE(); - BGArea createdArea = areaCreateController.getCreatedArea(); - if (createdArea != null) { - this.currentArea = createdArea; - doAreaEdit(ureq); - } else { - showInfo("error.area.name.exists"); - } - // do loggin is already done in create controller - } else if (event == Event.CANCELLED_EVENT) { - doBack(); - } - } else if (source == memberListWizardController) { - closeableModalController.deactivate(); - } else if (source == sendToChooserForm) { - if (event == Event.DONE_EVENT) { - removeAsListenerAndDispose(contactCtr); - contactCtr = createContactFormController(ureq); - listenTo(contactCtr); - sendMessageVC.put("contactForm", contactCtr.getInitialComponent()); - setMainContent(sendMessageVC); - } else if (event == Event.CANCELLED_EVENT) { - content.setContent(this.currentComponent); - } - } - } - - private void handleToolCommands(UserRequest ureq, String cmd) { - if (cmd.equals(CMD_CLOSE)) { - releaseAdminLockAndGroupMUE(); - // Send done event to parent controller - fireEvent(ureq, Event.DONE_EVENT); - } else if (cmd.equals(CMD_BACK)) { - releaseAdminLockAndGroupMUE(); - // Send back event to parent controller - fireEvent(ureq, Event.BACK_EVENT); - } else if (cmd.equals(CMD_GROUP_CREATE)) { - createNewGroupController(ureq, getWindowControl()); - } else if (cmd.equals(CMD_AREA_CREATE)) { - createNewAreaController(ureq, getWindowControl()); - } else if (cmd.equals(CMD_GROUP_RUN)) { - String bsuinessPath = "[BusinessGroup:" + currentGroup.getKey() + "]"; - NewControllerFactory.getInstance().launch(bsuinessPath, ureq, getWindowControl()); - } else if (cmd.equals(CMD_GROUP_COPY)) { - doGroupCopy(ureq); - } else if (cmd.equals(CMD_GROUP_COPY_MULTIPLE)) { - doMultipleGroupCopy(ureq); - } else if (cmd.equals(CMD_GROUP_DELETE)) { - doGroupDeleteConfirm(ureq); - } else if (cmd.equals(CMD_GROUP_MESSAGE)) { - doGroupMessage(ureq); - } else if (cmd.equals(CMD_AREA_DELETE)) { - doAreaDeleteConfirm(ureq); - } else if (cmd.equals(CMD_PARTICIPANTS_MESSAGE)) { - doParticipantsMessage(ureq); - } else if (cmd.equals(CMD_OWNERS_MESSAGE)) { - doOwnersMessage(ureq); - } else if (cmd.equals(CMD_USER_MESSAGE)) { - doUserMessage(ureq); - } else if (cmd.equals(CMD_LIST_MEMBERS_WITH_GROUPS)) { - listMembers(ureq,CMD_LIST_MEMBERS_WITH_GROUPS); - } else if(cmd.equals(CMD_LIST_MEMBERS_WITH_AREAS)) { - listMembers(ureq,CMD_LIST_MEMBERS_WITH_AREAS); - } - - } - - private void handleMenuCommands(UserRequest ureq) { - TreeNode selTreeNode = olatMenuTree.getSelectedNode(); - String cmd = (String) selTreeNode.getUserObject(); - - releaseAdminLockAndGroupMUE(); - if (cmd.equals(CMD_OVERVIEW)) { - doOverview(ureq); - } else if (cmd.equals(CMD_GROUPLIST)) { - this.currentAreaFilter = null; - doGroupList(ureq, true); - } else if (cmd.equals(CMD_AREALIST)) { - doAreaList(ureq, true); - } else if (cmd.equals(CMD_USER_LIST)) { - doUsersList(ureq, true); - } - } - - private TreeModel buildTreeModel(UserRequest ureq) { - GenericTreeModel gtm = new GenericTreeModel(); - GenericTreeNode root = new GenericTreeNode(); - root.setTitle(translate("menu.index")); - root.setUserObject(CMD_OVERVIEW); - root.setAltText(translate("menu.index.alt")); - gtm.setRootNode(root); - - GenericTreeNode gtn = new GenericTreeNode(); - gtn.setTitle(translate("menu.allgroups")); - gtn.setUserObject(CMD_GROUPLIST); - gtn.setAltText(translate("menu.allgroups.alt")); - root.addChild(gtn); - - gtn = new GenericTreeNode(); - gtn.setTitle(translate("menu.allareas")); - gtn.setUserObject(CMD_AREALIST); - gtn.setAltText(translate("menu.allareas.alt")); - root.addChild(gtn); - - gtn = new GenericTreeNode(); - gtn.setTitle(translate("menu.allusers")); - gtn.setUserObject(CMD_USER_LIST); - gtn.setAltText(translate("menu.allusers.alt")); - root.addChild(gtn); - - return gtm; - } - - private void setTools(UserRequest ureq, int state) { - removeAsListenerAndDispose(toolC); - toolC = ToolFactory.createToolController(getWindowControl()); - listenTo(toolC); - columnLayoutCtr.setCol2(toolC.getInitialComponent()); - if (state == STATE_CONTEXT_REMOVED) { - toolC.addHeader(translate("tools.title.groupmanagement")); - toolC.addLink(CMD_CLOSE, translate(CMD_CLOSE), null, "b_toolbox_close"); - return; - } - - toolC.addHeader(translate("tools.title.groupmanagement")); - - boolean canCreateGroup = canCreateBusinessGroup(ureq); - - // Generic actions - if(canCreateGroup) { - toolC.addLink(CMD_GROUP_CREATE, translate(CMD_GROUP_CREATE)); - } - - toolC.addLink(CMD_AREA_CREATE, translate(CMD_AREA_CREATE)); - if (backLink) toolC.addLink(CMD_BACK, translate(CMD_BACK)); - toolC.addLink(CMD_CLOSE, translate(CMD_CLOSE), null, "b_toolbox_close"); - - toolC.addHeader(translate("tools.title.listmembers")); - toolC.addLink(CMD_LIST_MEMBERS_WITH_GROUPS, translate(CMD_LIST_MEMBERS_WITH_GROUPS)); - toolC.addLink(CMD_LIST_MEMBERS_WITH_AREAS, translate(CMD_LIST_MEMBERS_WITH_AREAS)); - - if (state == STATE_GROUP_EDIT) { - toolC.addHeader(translate("tools.title.group")); - toolC.addLink(CMD_GROUP_MESSAGE, translate(CMD_GROUP_MESSAGE)); - toolC.addLink(CMD_GROUP_RUN, translate(CMD_GROUP_RUN)); - if(canCreateGroup) { - toolC.addLink(CMD_GROUP_COPY, translate(CMD_GROUP_COPY)); - toolC.addLink(CMD_GROUP_COPY_MULTIPLE, translate(CMD_GROUP_COPY_MULTIPLE)); - toolC.addLink(CMD_GROUP_DELETE, translate(CMD_GROUP_DELETE)); - } - } - - if (state == STATE_AREA_EDIT) { - toolC.addHeader(translate("tools.title.area")); - toolC.addLink(CMD_AREA_DELETE, translate(CMD_AREA_DELETE)); - } - - if (state == STATE_USER_LIST) { - toolC.addHeader(translate("tools.title.userlist")); - toolC.addLink(CMD_OWNERS_MESSAGE, translate(CMD_OWNERS_MESSAGE)); - toolC.addLink(CMD_PARTICIPANTS_MESSAGE, translate(CMD_PARTICIPANTS_MESSAGE)); - } - - if (state == STATE_USER_DETAILS) { - toolC.addHeader(translate("tools.title.user")); - toolC.addLink(CMD_USER_MESSAGE, translate(CMD_USER_MESSAGE)); - } - - } - - private boolean canCreateBusinessGroup(UserRequest ureq) { - Roles roles = ureq.getUserSession().getRoles(); - if(roles.isOLATAdmin() || roles.isGroupManager() - || (roles.isAuthor() && groupModule.isAuthorAllowedCreate()) - || (!roles.isGuestOnly() && !roles.isInvitee() && groupModule.isUserAllowedCreate())) { - return true; - } - return false; - } - - private void initVC(String resourceName) { - // push group type as 'type' for type specific help pages - // Overview page - overviewVC = createVelocityContainer("overview"); - overviewVC.contextPut("resourceName", resourceName); - - // Create new group form - newGroupVC = createVelocityContainer("newgroup"); - // Group list - groupListVC = createVelocityContainer("grouplist"); - // Group message - sendMessageVC = createVelocityContainer("sendmessage"); - - newAreaVC = createVelocityContainer("newarea"); - // Area list - areaListVC = createVelocityContainer("arealist"); - - // User list - userListVC = createVelocityContainer("userlist"); - // User details - userDetailsVC = new VelocityContainer("userdetails", Util.getPackageVelocityRoot(this.getClass()) + "/userdetails.html", - Util.createPackageTranslator(HomePageDisplayController.class, getLocale(), getTranslator()) - , this); - backButton = LinkFactory.createButtonSmall("back", userDetailsVC, this); - } - - private void doOverview(UserRequest ureq) { - setMainContent(overviewVC); - - int numOfGroups = businessGroupService.countBusinessGroups(null, resource); - int numOfParticipants = businessGroupService.countMembersOf(resource, false, true); - int numOfOwners = businessGroupService.countMembersOf(resource, true, false); - - // number of groups - overviewVC.contextPut("numbGroups", new Integer(numOfGroups)); - // number of owners - overviewVC.contextPut("numbTotal", new Integer(numOfOwners + numOfParticipants)); - overviewVC.contextPut("numbOwners", new Integer(numOfOwners)); - overviewVC.contextPut("numbParticipants", new Integer(numOfParticipants)); - // number of areas - overviewVC.contextPut("numbAreas", new Integer(areaManager.countBGAreasInContext(resource))); - - setTools(ureq, STATE_OVERVIEW); - } - - /* - * create and init controller to create new area(s) - */ - private void createNewAreaController(UserRequest ureq, WindowControl wControl) { - removeAsListenerAndDispose(areaCreateController); - areaCreateController = new NewAreaController(ureq, wControl, resource, true, null); - listenTo(areaCreateController); - - newAreaVC.put("areaCreateForm", areaCreateController.getInitialComponent()); - setMainContent(newAreaVC); - setTools(ureq, STATE_AREA_CREATE_FORM); - } - - private void createNewGroupController(UserRequest ureq, WindowControl wControl) { - removeAsListenerAndDispose(groupCreateController); - groupCreateController = new NewBGController(ureq, wControl, resource); - listenTo(groupCreateController); - - newGroupVC.put("groupCreateForm", groupCreateController.getInitialComponent()); - setMainContent(newGroupVC); - setTools(ureq, STATE_GROUP_CREATE_FORM); - } - - private void doGroupCopy(UserRequest ureq) { - removeAsListenerAndDispose(bgCopyWizardCtr); - bgCopyWizardCtr = new BGCopyWizardController(ureq, getWindowControl(), currentGroup); - listenTo(bgCopyWizardCtr); - removeAsListenerAndDispose(closeableModalController); - closeableModalController = new CloseableModalController(getWindowControl(), translate("close"), bgCopyWizardCtr.getInitialComponent()); - listenTo(closeableModalController); - - closeableModalController.activate(); - } - - private void doMultipleGroupCopy(UserRequest ureq) { - removeAsListenerAndDispose(bgMultipleCopyWizardCtr); - bgMultipleCopyWizardCtr = new BGMultipleCopyWizardController(ureq, getWindowControl(), currentGroup); - listenTo(bgMultipleCopyWizardCtr); - removeAsListenerAndDispose(closeableModalController); - closeableModalController = new CloseableModalController(getWindowControl(), translate("close"), bgMultipleCopyWizardCtr.getInitialComponent()); - listenTo(closeableModalController); - closeableModalController.activate(); - } - - private void doGroupEdit(UserRequest ureq) { - removeAsListenerAndDispose(groupEditCtr); - groupEditCtr = new BusinessGroupEditController(ureq, getWindowControl(), currentGroup); - listenTo(groupEditCtr); - // add as listener to BusinessGroup so we are being notified about changes. - CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, ureq.getIdentity(), currentGroup); - - setMainContent(groupEditCtr.getInitialComponent()); - if (groupEditCtr.isLockAcquired()) { - setTools(ureq, STATE_GROUP_EDIT); - } - // else don't change the tools state - } - - private void doGroupDelete() { - // remove this controller as listener from the group - CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, currentGroup); - // now delete group and update table model - businessGroupService.deleteBusinessGroup(currentGroup); - if (groupListModel != null) { - groupListModel.getObjects().remove(currentGroup); - groupListCtr.modelChanged(); - } - currentGroup = null; - } - - private void doGroupList(UserRequest ureq, boolean initializeModel) { - // Init table only once - if (groupListCtr == null) { - TableGuiConfiguration tableConfig = new TableGuiConfiguration(); - tableConfig.setTableEmptyMessage(translate("grouplist.no.groups")); - // init group list filter controller - - removeAsListenerAndDispose(groupListCtr); - groupListCtr = new TableController(tableConfig, ureq, getWindowControl(), this.areaFilters, this.currentAreaFilter, - translate("grouplist.areafilter.title"), translate("grouplist.areafilter.nofilter"), getTranslator()); - listenTo(groupListCtr); - groupListCtr.addColumnDescriptor(new DefaultColumnDescriptor("grouplist.table.name", 0, CMD_GROUP_RUN, ureq.getLocale())); - groupListCtr.addColumnDescriptor(new DefaultColumnDescriptor("grouplist.table.desc", 1, null, ureq.getLocale())); - groupListCtr.addColumnDescriptor(new StaticColumnDescriptor(CMD_GROUP_EDIT, "grouplist.table.edit", translate(CMD_GROUP_EDIT))); - if(canCreateBusinessGroup(ureq)) { - groupListCtr.addColumnDescriptor(new StaticColumnDescriptor(CMD_GROUP_DELETE, "grouplist.table.delete", translate(CMD_GROUP_DELETE))); - } - groupListVC.put("groupListTableCtr", groupListCtr.getInitialComponent()); - } - if (groupListModel == null || initializeModel) { - // 1. group list model: if area filter is set use only groups from given - // area - List<BusinessGroup> groups; - if (currentAreaFilter == null) { - groups = businessGroupService.findBusinessGroups(null, resource, 0, -1); - } else { - groups = areaManager.findBusinessGroupsOfArea(currentAreaFilter); // filtered - // groups - } - groupListModel = new BusinessGroupTableModel(groups); - groupListCtr.setTableDataModel(groupListModel); - - // 2. find areas for group list filter - List<BGArea> areas = areaManager.findBGAreasInContext(resource); - areaFilters = new ArrayList<ShortName>(areas); - groupListCtr.setFilters(this.areaFilters, currentAreaFilter); - } - setMainContent(groupListVC); - setTools(ureq, STATE_GROUP_LIST); - } - - private void doAreaEdit(UserRequest ureq) { - removeAsListenerAndDispose(areaEditCtr); - areaEditCtr = new BGAreaEditController(ureq, getWindowControl(), this.currentArea); - listenTo(areaEditCtr); - - setMainContent(areaEditCtr.getInitialComponent()); - setTools(ureq, STATE_AREA_EDIT); - } - - private void doAreaDelete() { - areaManager.deleteBGArea(this.currentArea); - if (areaListModel != null) { - areaListModel.getObjects().remove(this.currentArea); - areaListCtr.modelChanged(); - } - this.currentArea = null; - } - - private void doAreaList(UserRequest ureq, boolean initializeModel) { - if (areaListModel == null || initializeModel) { - List<BGArea> areas = areaManager.findBGAreasInContext(resource); - areaListModel = new BGAreaTableModel(areas, getTranslator()); - - if (areaListCtr != null) areaListCtr.dispose(); - TableGuiConfiguration tableConfig = new TableGuiConfiguration(); - tableConfig.setTableEmptyMessage(translate("arealist.no.areas")); - removeAsListenerAndDispose(areaListCtr); - areaListCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); - listenTo(areaListCtr); - areaListCtr.addColumnDescriptor(new DefaultColumnDescriptor("arealist.table.name", 0, null, ureq.getLocale())); - areaListCtr.addColumnDescriptor(new DefaultColumnDescriptor("arealist.table.desc", 1, null, ureq.getLocale())); - areaListCtr.addColumnDescriptor(new StaticColumnDescriptor(CMD_AREA_EDIT, "arealist.table.edit", translate(CMD_AREA_EDIT))); - areaListCtr.addColumnDescriptor(new StaticColumnDescriptor(CMD_AREA_DELETE, "arealist.table.delete", translate(CMD_AREA_DELETE))); - areaListCtr.setTableDataModel(areaListModel); - areaListVC.put("arealisttable", areaListCtr.getInitialComponent()); - } - setMainContent(areaListVC); - setTools(ureq, STATE_AREA_LIST); - } - - private void doUsersList(UserRequest ureq, boolean initializeModel) { - // 1. init owners list - if (ownerListModel == null || initializeModel) { - List<Identity> owners = businessGroupService.getMembersOf(resource, true, false); - - TableGuiConfiguration tableConfig = new TableGuiConfiguration(); - tableConfig.setPreferencesOffered(true, "ownerListController"); - tableConfig.setTableEmptyMessage(translate("userlist.owners.noOwners")); - - removeAsListenerAndDispose(ownerListCtr); - ownerListCtr = UserControllerFactory.createTableControllerFor(tableConfig, owners, ureq, getWindowControl(), CMD_USER_DETAILS); - listenTo(ownerListCtr); - - ownerListModel = (UserTableDataModel) ownerListCtr.getTableDataModel(); - - userListVC.put("ownerlisttable", ownerListCtr.getInitialComponent()); - } - userListVC.contextPut("showOwners", Boolean.TRUE); - - - // 2. init participants list - if (participantListModel == null || initializeModel) { - List<Identity> participants = businessGroupService.getMembersOf(resource, false, true); - - TableGuiConfiguration tableConfig = new TableGuiConfiguration(); - tableConfig.setPreferencesOffered(true, "participantsListController"); - tableConfig.setTableEmptyMessage(translate("userlist.participants.noParticipants")); - - removeAsListenerAndDispose(participantListCtr); - participantListCtr = UserControllerFactory.createTableControllerFor(tableConfig, participants, ureq, getWindowControl(), CMD_USER_DETAILS); - listenTo(participantListCtr); - - participantListModel = (UserTableDataModel) participantListCtr.getTableDataModel(); - - userListVC.put("participantlisttable", participantListCtr.getInitialComponent()); - } - // 3. set content - setMainContent(userListVC); - setTools(ureq, STATE_USER_LIST); - } - - private void doUserDetails(UserRequest ureq) { - // 1. expose the identity details - userDetailsVC.contextPut("identity", this.currentIdentity); - - HomePageConfig homePageConfig = HomePageConfigManagerImpl.getInstance().loadConfigFor(currentIdentity.getName()); - removeAsListenerAndDispose(homePageDisplayController); - homePageDisplayController = new HomePageDisplayController(ureq, getWindowControl(), homePageConfig); - listenTo(homePageDisplayController); - userDetailsVC.put("userdetailsform", homePageDisplayController.getInitialComponent()); - // 2. expose the owner groups of the identity - List<BusinessGroup> ownerGroups = businessGroupService.findBusinessGroupsOwnedBy(currentIdentity, resource); - Link[] ownerGroupLinks= new Link[ownerGroups.size()]; - int ownerNumber = 0; - for (BusinessGroup group:ownerGroups) { - Link tmp = LinkFactory.createCustomLink("cmd.user.remove.group.own." + group.getKey(), "cmd.user.remove.group.own." + group.getKey(), "userdetails.remove", Link.BUTTON_SMALL, userDetailsVC, this); - tmp.setUserObject(group); - ownerGroupLinks[ownerNumber++] = tmp; - } - userDetailsVC.contextPut("ownerGroupLinks", ownerGroupLinks); - userDetailsVC.contextPut("noOwnerGroups", (ownerGroups.size() > 0 ? Boolean.FALSE : Boolean.TRUE)); - userDetailsVC.contextPut("showOwnerGroups", Boolean.TRUE); - - // 3. expose the participant groups of the identity - List<BusinessGroup> participantGroups = businessGroupService.findBusinessGroupsAttendedBy(currentIdentity, resource); - Link[] participantGroupLinks= new Link[participantGroups.size()]; - int participantNumber = 0; - for (BusinessGroup group: participantGroups) { - Link tmp = LinkFactory.createCustomLink("cmd.user.remove.group.part." + group.getKey(), "cmd.user.remove.group.part." + group.getKey(), "userdetails.remove", Link.BUTTON_SMALL, userDetailsVC, this); - tmp.setUserObject(group); - participantGroupLinks[participantNumber++] = tmp; - } - userDetailsVC.contextPut("noParticipantGroups", (participantGroups.size() > 0 ? Boolean.FALSE : Boolean.TRUE)); - userDetailsVC.contextPut("participantGroupLinks", participantGroupLinks); - // 4. set content - setMainContent(userDetailsVC); - setTools(ureq, STATE_USER_DETAILS); - } - - private void doRemoveUserFromParticipatingGroup(Identity ureqIdentity, Identity toRemoveIdentity, String groupKey) { - Long key = Long.valueOf(groupKey); - BusinessGroup group = CoreSpringFactory.getImpl(BusinessGroupService.class).loadBusinessGroup(key); - if(group != null) { - List<Identity> identities = new ArrayList<Identity>(1); - identities.add(toRemoveIdentity); - businessGroupService.removeParticipants(ureqIdentity, identities, group); - } - } - - private void doRemoveUserFromOwnedGroup(UserRequest ureq, String groupKey) { - Long key = Long.valueOf(groupKey); - BusinessGroup group = CoreSpringFactory.getImpl(BusinessGroupService.class).loadBusinessGroup(key); - if(group != null) { - businessGroupService.removeOwners(ureq.getIdentity(), Collections.singletonList(currentIdentity), group); - } - } - - /** - * generates the email adress list. - * @param ureq - * @return a contact form controller for this group - */ - private ContactFormController createContactFormController(UserRequest ureq) { - BaseSecurity scrtMngr = BaseSecurityManager.getInstance(); - - ContactMessage cmsg = new ContactMessage(ureq.getIdentity()); - // two named ContactLists, the new way using the contact form - // the same name as in the checkboxes are taken as contactlist names - ContactList ownerCntctLst = new ContactList(businessGroupTranslator.translate("sendtochooser.form.chckbx.owners")); - ContactList partipCntctLst = new ContactList(businessGroupTranslator.translate("sendtochooser.form.chckbx.partip")); - ContactList waitingListContactList = new ContactList(businessGroupTranslator.translate("sendtochooser.form.chckbx.waitingList")); - - if (sendToChooserForm.ownerChecked().equals(BusinessGroupSendToChooserForm.NLS_RADIO_ALL)) { - SecurityGroup owners = this.currentGroup.getOwnerGroup(); - List<Identity> ownerList = scrtMngr.getIdentitiesOfSecurityGroup(owners); - ownerCntctLst.addAllIdentites(ownerList); - cmsg.addEmailTo(ownerCntctLst); - } else { - if (sendToChooserForm.ownerChecked().equals(BusinessGroupSendToChooserForm.NLS_RADIO_CHOOSE)) { - SecurityGroup owners = this.currentGroup.getOwnerGroup(); - List<Identity> ownerList = scrtMngr.getIdentitiesOfSecurityGroup(owners); - for (Identity identity : new ArrayList<Identity>(ownerList)) { - boolean keyIsSelected = false; - for (Long key : sendToChooserForm.getSelectedOwnerKeys()) { - if (key.equals(identity.getKey())) { - keyIsSelected = true; - break; - } - } - if (!keyIsSelected) { - ownerList.remove(identity); - } - } - ownerCntctLst.addAllIdentites(ownerList); - cmsg.addEmailTo(ownerCntctLst); - } - } - - if (sendToChooserForm != null) { - if (sendToChooserForm.participantChecked().equals(BusinessGroupSendToChooserForm.NLS_RADIO_ALL)) { - SecurityGroup participants = this.currentGroup.getPartipiciantGroup(); - List<Identity> participantsList = scrtMngr.getIdentitiesOfSecurityGroup(participants); - partipCntctLst.addAllIdentites(participantsList); - cmsg.addEmailTo(partipCntctLst); - } else { - if (sendToChooserForm.participantChecked().equals(BusinessGroupSendToChooserForm.NLS_RADIO_CHOOSE)) { - SecurityGroup participants = this.currentGroup.getPartipiciantGroup(); - List<Identity> participantsList = scrtMngr.getIdentitiesOfSecurityGroup(participants); - for (Identity identity : new ArrayList<Identity>(participantsList)) { - boolean keyIsSelected = false; - for (Long key : sendToChooserForm.getSelectedPartipKeys()) { - if (key.equals(identity.getKey())) { - keyIsSelected = true; - break; - } - } - if (!keyIsSelected) { - participantsList.remove(identity); - } - } - partipCntctLst.addAllIdentites(participantsList); - cmsg.addEmailTo(partipCntctLst); - } - } - - } - if (sendToChooserForm != null && getIsGMAdminOwner(ureq) && this.currentGroup.getWaitingListEnabled().booleanValue()) { - if (sendToChooserForm.waitingListChecked().equals(BusinessGroupSendToChooserForm.NLS_RADIO_ALL)) { - SecurityGroup waitingList = this.currentGroup.getWaitingGroup(); - List<Identity> waitingListIdentities = scrtMngr.getIdentitiesOfSecurityGroup(waitingList); - waitingListContactList.addAllIdentites(waitingListIdentities); - cmsg.addEmailTo(waitingListContactList); - } else { - if (sendToChooserForm.waitingListChecked().equals(BusinessGroupSendToChooserForm.NLS_RADIO_CHOOSE)) { - SecurityGroup waitingList = this.currentGroup.getWaitingGroup(); - List<Identity> waitingListIdentities = scrtMngr.getIdentitiesOfSecurityGroup(waitingList); - for (Identity identity : new ArrayList<Identity>(waitingListIdentities)) { - boolean keyIsSelected = false; - for (Long key : sendToChooserForm.getSelectedWaitingKeys()) { - if (key.equals(identity.getKey())) { - keyIsSelected = true; - break; - } - } - if (!keyIsSelected) { - waitingListIdentities.remove(identity); - } - } - waitingListContactList.addAllIdentites(waitingListIdentities); - cmsg.addEmailTo(waitingListContactList); - } - } - } - String resourceUrl = BusinessControlFactory.getInstance().getAsURIString(getWindowControl().getBusinessControl(), true); - cmsg.setSubject( businessGroupTranslator.translate("businessgroup.contact.subject", new String[]{ this.currentGroup.getName()} ) ); - cmsg.setBodyText( businessGroupTranslator.translate("businessgroup.contact.bodytext", new String[]{ this.currentGroup.getName(), resourceUrl} ) ); - CollaborationTools collabTools = CollaborationToolsFactory.getInstance().getOrCreateCollaborationTools(this.currentGroup); - ContactFormController cofocntrllr = collabTools.createContactFormController(ureq, getWindowControl(), cmsg); - return cofocntrllr; - } - - private void setMainContent(Component component) { - content.setContent(component); - this.backComponent = this.currentComponent; - this.currentComponent = component; - } - - private void doBack() { - content.setContent(this.backComponent); - this.currentComponent = this.backComponent; - } - - @Override - protected void doDispose() { - - CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, resource); - - releaseAdminLockAndGroupMUE(); - } - - /** - * add every Admin child controller which must be disposed. So that all locks - * on (OLAT)resources are free-ed up on leaving an admin gui area. - */ - private void releaseAdminLockAndGroupMUE() { - // deregister for group change events - if (this.currentGroup != null) { - CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, this.currentGroup); - } - // this is done by simply disposing the businessgroup managing controller - removeAsListenerAndDispose(groupEditCtr); - } - - /** - * only for disposedBGAmanagementController! - * @param ureq - */ - void fireDoneEvent(UserRequest ureq){ - fireEvent(ureq, Event.DONE_EVENT); - } - -} \ No newline at end of file diff --git a/src/main/java/org/olat/group/ui/management/DisposedBGAManagementController.java b/src/main/java/org/olat/group/ui/management/DisposedBGAManagementController.java deleted file mode 100644 index ec1e1bcfd4a..00000000000 --- a/src/main/java/org/olat/group/ui/management/DisposedBGAManagementController.java +++ /dev/null @@ -1,84 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <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 -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <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> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ -package org.olat.group.ui.management; - -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -import org.olat.core.gui.components.link.Link; -import org.olat.core.gui.components.link.LinkFactory; -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; - -/** - * Description:<br> - * TODO: patrickb Class Description for DisposedBGAManagementController - * - * <P> - * Initial Date: 27.04.2008 <br> - * @author patrickb - */ -class DisposedBGAManagementController extends BasicController { - - private Link closeLink; - private BGManagementController managementController; - - protected DisposedBGAManagementController(UserRequest ureq, WindowControl control, BGManagementController managementController) { - super(ureq, control); - VelocityContainer initialContent = createVelocityContainer("disposedbgmanagement"); - closeLink = LinkFactory.createButton("bgmanagement.disposed.command.close", initialContent, this); - putInitialPanel(initialContent); - this.managementController = managementController; - } - - /** - * @see org.olat.core.gui.control.DefaultController#doDispose() - */ - @Override - protected void doDispose() { - // TODO Auto-generated method stub - - } - - /** - * @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) - */ - @Override - protected void event(UserRequest ureq, Component source, Event event) { - if(source == closeLink){ - //lock is already released in doDispose() of managementController - //the way to remove controller correctly is to send the DoneEvent, but - //source of DoneEvent must be the disposed BGManagementController Instance - // - //this way of coupling is only 'allowed' for Controller and its - //DisposedController !! - managementController.fireDoneEvent(ureq); - dispose(); - } - - } - -} diff --git a/src/main/java/org/olat/group/ui/management/_content/arealist.html b/src/main/java/org/olat/group/ui/management/_content/arealist.html deleted file mode 100644 index 6406e2e6981..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/arealist.html +++ /dev/null @@ -1,4 +0,0 @@ -<h4 class="b_with_small_icon_left b_group_icon"> - $r.translate("arealist.title") -</h4> -$r.render("arealisttable") diff --git a/src/main/java/org/olat/group/ui/management/_content/contextedit.html b/src/main/java/org/olat/group/ui/management/_content/contextedit.html deleted file mode 100644 index 504c267aede..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/contextedit.html +++ /dev/null @@ -1,13 +0,0 @@ -#if($editingAllowed) - $r.render("contexteditor") -#else - <h4 class="b_with_small_icon_left b_group_icon"> - $r.translate("contextedit.title") - </h4> - <p> - $r.translate("contextedit.owners.info") - </p> - <p> - $r.render("owners") - </p> -#end \ No newline at end of file diff --git a/src/main/java/org/olat/group/ui/management/_content/disposedbgmanagement.html b/src/main/java/org/olat/group/ui/management/_content/disposedbgmanagement.html deleted file mode 100644 index 516196965b2..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/disposedbgmanagement.html +++ /dev/null @@ -1,5 +0,0 @@ -<h4>$r.translate("bgmanagement.disposed.title")</h4> -<p>$r.translate("context.removed")</p> -<p> -$r.render("bgmanagement.disposed.command.close") -</p> diff --git a/src/main/java/org/olat/group/ui/management/_content/grouplist.html b/src/main/java/org/olat/group/ui/management/_content/grouplist.html deleted file mode 100644 index 4f451bef76e..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/grouplist.html +++ /dev/null @@ -1,4 +0,0 @@ -<h4 class="b_with_small_icon_left b_group_icon"> - $r.translate("grouplist.title") -</h4> -$r.render("groupListTableCtr") diff --git a/src/main/java/org/olat/group/ui/management/_content/newarea.html b/src/main/java/org/olat/group/ui/management/_content/newarea.html deleted file mode 100644 index 0131af7bc83..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/newarea.html +++ /dev/null @@ -1,6 +0,0 @@ -<fieldset> - <legend class="b_with_small_icon_left b_group_icon"> - $r.translate("newarea.title") - </legend> - $r.render("areaCreateForm") -</fieldset> \ No newline at end of file diff --git a/src/main/java/org/olat/group/ui/management/_content/newgroup.html b/src/main/java/org/olat/group/ui/management/_content/newgroup.html deleted file mode 100644 index b93652153b4..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/newgroup.html +++ /dev/null @@ -1,6 +0,0 @@ -<fieldset> - <legend class="b_with_small_icon_left b_group_icon"> - $r.translate("newgroup.title") - </legend> - $r.render("groupCreateForm") -</fieldset> \ No newline at end of file diff --git a/src/main/java/org/olat/group/ui/management/_content/overview.html b/src/main/java/org/olat/group/ui/management/_content/overview.html deleted file mode 100644 index a26a337892f..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/overview.html +++ /dev/null @@ -1,15 +0,0 @@ -<h4 class="b_with_small_icon_left b_group_icon"> - $r.translate("overview.title") "$resourceName" -</h4> -<p>$r.translate("overview.intro")</p> -<hr /> -<h5>$r.translate("overview.overview")</h5> -<p> - <table class="b_table"> - <tr><td>$r.translate("overview.numb.groups"):</td><td>$numbGroups</td></tr> - <tr><td>$r.translate("overview.numb.total"):</td><td>$numbTotal</td></tr> - <tr><td>$r.translate("overview.numb.owners"):</td><td>$numbOwners</td></tr> - <tr><td>$r.translate("overview.numb.participants"):</td><td>$numbParticipants</td></tr> - <tr><td>$r.translate("overview.numb.areas"):</td><td>$numbAreas</td></tr> - </table> -</p> diff --git a/src/main/java/org/olat/group/ui/management/_content/sendmessage.html b/src/main/java/org/olat/group/ui/management/_content/sendmessage.html deleted file mode 100644 index c7969736460..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/sendmessage.html +++ /dev/null @@ -1,6 +0,0 @@ -<fieldset> - <legend class="b_with_small_icon_left b_group_icon"> - $title - </legend> - $r.render("contactForm") -</fieldset> \ No newline at end of file diff --git a/src/main/java/org/olat/group/ui/management/_content/userdetails.html b/src/main/java/org/olat/group/ui/management/_content/userdetails.html deleted file mode 100644 index 2b22f6df603..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/userdetails.html +++ /dev/null @@ -1,49 +0,0 @@ -<h4 class="b_with_small_icon_left b_group_icon"> - $r.translate("userdetails.title") $identity.getUser().getProperty("firstName", $locale) $identity.getUser().getProperty("lastName", $locale) -</h4> -$r.render("back") - -#if ($showOwnerGroups) - <br /> - <br /> - <h5>$r.translate("userdetails.ownergroups.title")</h5> - #if ($noOwnerGroups) - $r.translate("userdetails.ownergroups.noGroups") - #else - <table width="70%" class="b_table"> - #foreach($link in $ownerGroupLinks) - <tr> - #set ($groupName = $link.getUserObject().getName()) - <td width="10%">$velocityCount</td> - <td width="80%">${groupName}</td> - <td width="30%">$r.render("cmd.user.remove.group.own.${link.getUserObject().getKey()}")</td> - </tr> - #end - </table> - #end -#end - -<br /> -<br /> -<h5>$r.translate("userdetails.participantgroups.title")</h5> -#if ($noParticipantGroups) - $r.translate("userdetails.participantgroups.noGroups") -#else - <table width="70%" class="b_table"> - #foreach($link in $participantGroupLinks) - <tr> - #set ($groupName = $link.getUserObject().getName()) - <td width="10%">$velocityCount</td> - <td width="80%">${groupName}</td> - <td width="30%">$r.render("cmd.user.remove.group.part.${link.getUserObject().getKey()}")</td> - </tr> - #end - </table> -#end - -<br /> -<br /> -<h5>$r.translate("userdetails.user.title")</h5> -<div> - $r.render("userdetailsform") -</div> diff --git a/src/main/java/org/olat/group/ui/management/_content/userlist.html b/src/main/java/org/olat/group/ui/management/_content/userlist.html deleted file mode 100644 index ed028d2eef6..00000000000 --- a/src/main/java/org/olat/group/ui/management/_content/userlist.html +++ /dev/null @@ -1,15 +0,0 @@ -<h4 class="b_with_small_icon_left b_group_icon"> - $r.translate("userlist.title") -</h4> -#if ($showOwners) - <p> - <strong>$r.translate("userlist.owners.title")</strong> - $r.render("ownerlisttable") - </p> -#end -<p> - <strong>$r.translate("userlist.participants.title")</strong> -</p> -<p> - $r.render("participantlisttable") -</p> \ No newline at end of file diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_ar.properties deleted file mode 100644 index 96fad8b6b12..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_ar.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Mon Mar 15 14:10:22 CET 2010 -area.delete=\u061F \u0644\u0646 \u064A\u0645\u0643\u0646 \u062D\u0630\u0641 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A.<b>{0}</b> \u0647\u0644 \u062A\u0631\u064A\u062F \u0641\u0644\u0627\u064B \u062D\u0630\u0641 \u0645\u062C\u0627\u0644 \u0627\u0644\u062A\u0639\u0644\u064A\u0645 -arealist.no.areas=\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645\u060C \u064A\u0631\u062C\u0649 \u0625\u0646\u0634\u0627\u0621 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0623\u0648\u0644\u0627\u064B \u0645\u0646 \u062E\u0644\u0627\u0644 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0648\u062C\u0648\u062F\u0629 \u0639\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646. -arealist.table.delete=\u062D\u0630\u0641 -arealist.table.desc=\u0627\u0644\u0648\u0635\u0641 -arealist.table.edit=\u062A\u0639\u062F\u064A\u0644 -arealist.table.name=\u0627\u0644\u0627\u0633\u0645 -arealist.title=\u0645\u062C\u0627\u0644 \u0627\u0644\u062A\u0639\u0644\u064A\u0645 \u062F\u0627\u062E\u0644 \u0627\u0644\u0645\u0642\u0631\u0631 -bgmanagement.disposed.command.close=\u0625\u063A\u0644\u0627\u0642 \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -bgmanagement.disposed.title=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629. -cmd.area.create=\u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u062C\u062F\u064A\u062F -cmd.area.delete=\u062D\u0630\u0641 -cmd.area.edit=\u062A\u0639\u062F\u064A\u0644 -cmd.back=\u0633\u064A\u0627\u0642 \u0645\u062C\u0645\u0648\u0639\u0629 \u0645\u062E\u062A\u0644\u0641 -cmd.close=\u0625\u063A\u0644\u0627\u0642 -cmd.group.copy=\u0646\u0633\u062E -cmd.group.copy.multiple=\u0646\u0633\u062E \u0623\u0643\u062B\u0631 \u0645\u0646 \u0645\u0631\u0629 -cmd.group.delete=\u062D\u0630\u0641 -cmd.group.edit=\u062A\u0639\u062F\u064A\u0644 -cmd.group.message=\u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0649 \u0627\u0644\u0623\u0639\u0636\u0627\u0621 -cmd.group.run=\u0623\u0628\u062F\u0623 -cmd.list.members.with.areas=\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0648\u0646 \u0641\u0649 \u0645\u062C\u0627\u0644\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u064A\u0645 -cmd.list.members.with.groups=\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0648\u0646 \u0641\u0649 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A -cmd.owners.message=\u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0624\u0644\u0641\u064A\u0646 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u064A\u0646 -cmd.participants.message=\u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u064A\u0646 -cmd.user.message=\u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u064A\u0646 -context.removed=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0645 \u0641\u0635\u0644\u0647\u0627 \u0639\u0646 \u0627\u0644\u0645\u0642\u0631\u0631 \u0627\u0644\u062F\u0631\u0627\u0633\u0649\u060C \u064A\u0631\u062C\u0649 \u0625\u0639\u0627\u062F\u0629 \u062A\u0634\u063A\u064A\u0644 \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629. -contextedit.owners.info=\u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629 \u062A\u0639\u0631\u0636 \u0645\u062F\u064A\u0631\u0648\u0627 \u0625\u062F\u0631\u0627\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629\u060C \u0642\u0645 \u0628\u0627\u0644\u0627\u062A\u0635\u0627\u0644 \u0628\u0647\u0624\u0644\u0627\u0621 \u0627\u0644\u0623\u0634\u062E\u0627\u0635 \u062D\u062A\u0649 \u062A\u0635\u0628\u062D \u0645\u062F\u064A\u0631 \u0623\u0648 \u062D\u062A\u0649 \u062A\u0643\u0648\u0646 \u0642\u0627\u062F\u0631\u0627\u064B \u0639\u0644\u0649 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0641\u0649 \u0645\u0642\u0631\u0631\u0627\u062A \u0623\u062E\u0631\u0649. -contextedit.title=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -error.area.name.exists=\u0627\u0633\u0645 \u0645\u062C\u0627\u0644 \u0627\u0644\u062A\u0639\u0644\u064A\u0645 \u0645\u0633\u062A\u062E\u062F\u0645 \u0628\u0627\u0644\u0641\u0639\u0644 \u0641\u0649 \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629\u060C \u064A\u0631\u062C\u0649 \u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0633\u0645 \u0622\u062E\u0631. -group.delete=\u0645\u0639 \u0643\u0644 \u0645\u0627 \u0644\u0647 \u0639\u0644\u0627\u0642\u0629 \u0628\u0647\u0627\u061F <b>{0}</b> \u0647\u0644 \u062A\u0631\u064A\u062F \u0641\u0639\u0644\u0627\u064B \u062D\u0630\u0641 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -group.delete.in.use=\u0645\u0639 \u0643\u0644 \u0631\u0648\u0627\u0628\u0637\u0647\u0627\u061F <b>{0}</b> \u0647\u0630\u0647 \u0627\u0644\u0645\u062F\u062E\u0644\u0627\u062A \u064A\u0645\u0643\u0646 \u0623\u064A\u0636\u0627 \u062D\u0630\u0641\u0647\u0627\u060C \u0647\u0644 \u062A\u0631\u064A\u062F \u0641\u0639\u0644\u0627\u064B \u062D\u0630\u0641 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u060C<b>`{1}`</b> \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0645\u0633\u062A\u062E\u062F\u0645\u0629 \u0628\u0648\u0627\u0633\u0637\u0629 -group.message=<i>{0}</i> \u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -group.message.to=\u0627\u0644\u0645\u062F\u0631\u0633\u0648\u0646 \u0648\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0648\u0646 -grouplist.areafilter.nofilter=\u0639\u0631\u0636 \u0643\u0644 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A -grouplist.areafilter.title=\u062A\u0635\u0641\u064A\u0629 \u0645\u062C\u0627\u0644 \u0627\u0644\u062A\u0639\u0644\u064A\u0645 -grouplist.no.groups=\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0645\u062C\u0645\u0648\u0639\u0629\u060C \u0648\u064A\u0631\u062C\u0649 \u0625\u0646\u0634\u0627\u0621 \u0645\u062C\u0645\u0648\u0639\u0629 \u0623\u0648\u0644\u0627\u064B \u0645\u0646 \u062E\u0644\u0627\u0644 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0648\u062C\u0648\u062F\u0629 \u0639\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646. -grouplist.table.delete=\u062D\u0630\u0641 -grouplist.table.desc=\u0627\u0644\u0648\u0635\u0641 -grouplist.table.edit=\u062A\u0639\u062F\u064A\u0644 -grouplist.table.name=\u0627\u0644\u0627\u0633\u0645 -grouplist.title=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -info.group.deleted=\u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0645 \u062D\u0630\u0641\u0647\u0627 -menu.allareas=\u0643\u0644 \u0645\u062C\u0627\u0644\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u064A\u0645 -menu.allareas.alt=\u0642\u0627\u0626\u0645\u0629 \u0628\u0643\u0644 \u0645\u062C\u0627\u0644\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u064A\u0645 -menu.allgroups=\u0643\u0644 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A -menu.allgroups.alt=\u0642\u0627\u0626\u0645\u0629 \u0628\u0643\u0644 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A -menu.allusers=\u0643\u0644 \u0627\u0644\u0623\u0639\u0636\u0627\u0621 -menu.allusers.alt=\u0642\u0627\u0626\u0645\u0629 \u0628\u0643\u0644 \u0627\u0644\u0623\u0639\u0636\u0627\u0621 \u0645\u0646 \u0643\u0644 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A -menu.editcontext=\u0627\u0644\u0625\u062F\u0627\u0631\u0629 -menu.editcontext.alt=\u062D\u062F\u062F \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0644\u0644\u0645\u0642\u0631\u0631\u0627\u062A \u0627\u0644\u0623\u062E\u0631\u0649 \u0623\u0648 \u062D\u062F\u062F \u0623\u0634\u062E\u0627\u0635 \u0622\u062E\u0631\u064A\u064A\u0646 \u0643\u0645\u062F\u064A\u0631\u064A\u0646 \u0644\u0625\u062F\u0627\u0631\u0629 \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629. -newarea.title=\u0625\u0646\u0634\u0627\u0621 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u062C\u062F\u064A\u062F -overview.numb.areas=\u0639\u062F\u062F \u0645\u062C\u0627\u0644\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u064A\u0645 -overview.numb.groups=\u0639\u062F\u062F \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A -overview.numb.owners=\u0639\u062F\u062F \u0627\u0644\u0645\u062F\u0631\u0633\u064A\u0646 -overview.numb.participants=\u0639\u062F\u062F \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u064A\u0646 -overview.numb.total=\u0639\u062F\u062F \u0623\u0639\u0636\u0627\u0621 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -overview.otherResources=\u0627\u0646\u062A\u0628\u0627\u0647\: \u0645\u0642\u0631\u0631\u0627\u062A \u0623\u062E\u0631\u0649 -overview.otherResources.info=\:\u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0645\u0633\u062A\u062E\u062F\u0645\u0629 \u0623\u064A\u0636\u0627\u064B \u0641\u0649 \u0645\u0642\u0631\u0631\u0627\u062A \u0623\u062E\u0631\u0649\! \u0648\u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0641\u0649 \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0633\u064A\u062A\u0645 \u062A\u0637\u0628\u064A\u0642\u0647\u0627 \u062A\u0644\u0642\u0627\u0626\u064A\u0627\u064B \u0639\u0644\u0649 \u0627\u0644\u0645\u0642\u0631\u0631\u0627\u062A \u0627\u0644\u062A\u0627\u0644\u064A\u0629 -overview.overview=\u0646\u0638\u0631\u0629 \u0639\u0627\u0645\u0629 -owners.message=\u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0624\u0644\u0641\u064A\u0646 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u064A\u0646 -owners.message.to=\u0643\u0644 \u0627\u0644\u0645\u0624\u0644\u0641\u064A\u0646 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u064A\u0646 -participants.message=\u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0649 \u0643\u0644 \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u064A\u0646 -participants.message.to=\u0643\u0644 \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u064A\u0646 -rightgroup.message.to=\u0623\u0639\u0636\u0627\u0621 \u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u062D\u0642\u0648\u0642 -tools.title.area=\u0623\u0646\u0634\u0637\u0629 \u0645\u062C\u0627\u0644\u0627\u062A \u0627\u0644\u062A\u0639\u0644\u064A\u0645 -tools.title.group=\u0623\u0646\u0634\u0637\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -tools.title.groupmanagement=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -tools.title.listmembers=\u0625\u0646\u0634\u0627\u0621 \u0642\u0648\u0627\u0626\u0645 -tools.title.listmembers.warning.noAreas=\u0644\u0627 \u064A\u0645\u0643\u0646 \u0625\u0646\u0634\u0627\u0621 \u0623\u0649 \u0642\u0648\u0627\u0626\u0645 \u062D\u064A\u062B \u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062C\u0627\u0644\u0627\u062A \u062A\u0639\u0644\u064A\u0645 \u0641\u0649 \u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0631\u0631. -tools.title.listmembers.warning.noGroups=\u0644\u0627 \u064A\u0645\u0643\u0646 \u0625\u0646\u0634\u0627\u0621 \u0623\u0649 \u0642\u0648\u0627\u0626\u0645 \u062D\u064A\u062B \u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0641\u0649 \u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0631\u0631. -tools.title.rightmanagement=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u062D\u0642\u0648\u0642 -tools.title.user=\u0623\u0646\u0634\u0637\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 -tools.title.userlist=\u0627\u062A\u0635\u0627\u0644 -user.message=<i>{0} {1}</i> \u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 -userdetails.ownergroups.noGroups=\u0647\u0630\u0627 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0644\u064A\u0633 \u0641\u0649 \u0623\u0649 \u0645\u062C\u0645\u0648\u0639\u0629 -userdetails.ownergroups.title=\u0645\u0624\u0644\u0641\u0649 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u064A\u0646 -userdetails.participantgroups.noGroups=\u0647\u0630\u0627 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0644\u0627 \u064A\u0634\u0627\u0631\u0643 \u0641\u0649 \u0623\u0649 \u0645\u062C\u0645\u0648\u0639\u0629. -userdetails.participantgroups.title=\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0648\u0646 \u0641\u0649 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 -userdetails.remove=\u062D\u0630\u0641 -userdetails.title=\u062A\u0641\u0627\u0635\u064A\u0644 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 -userdetails.user.title=\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062E\u0635\u0649 \u0644\u0644\u0645\u0633\u062A\u062E\u062F\u0645 -userlist.owners.noOwners=\u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0644\u0627 \u062A\u062A\u0636\u0645\u0646 \u0645\u0624\u0644\u0641\u064A\u0646 \u0645\u0633\u0627\u0639\u062F\u064A\u0646 -userlist.owners.title=\u0627\u0644\u0645\u0624\u0644\u0641\u064A\u0646 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u064A\u0646 -userlist.participants.noParticipants=\u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0644\u064A\u0633 \u0628\u0647\u0627 \u0645\u0634\u0627\u0631\u0643\u064A\u0646 -userlist.participants.title=\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0648\u0646 -userlist.title=\u0642\u0627\u0626\u0645\u0629 \u0628\u0643\u0644 \u0627\u0644\u0623\u0639\u0636\u0627\u0621 diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_bg.properties deleted file mode 100644 index 8a08cf7c57f..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_bg.properties +++ /dev/null @@ -1,86 +0,0 @@ -#Wed Jun 03 20:16:54 CEST 2009 -area.delete=\u041D\u0430\u0438\u0441\u0442\u0438\u043D\u0430 \u043B\u0438 \u0438\u0441\u043A\u0430\u0442\u0435 \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435 \u0443\u0447\u0435\u0431\u043D\u0438\u044F \u043F\u043E\u0442\u043E\u043A <b>{0}</b>? \u0413\u0440\u0443\u043F\u0438\u0442\u0435 \u043D\u044F\u043C\u0430 \u0434\u0430 \u0431\u044A\u0434\u0430\u0442 \u0438\u0437\u0442\u0440\u0438\u0442\u0438. -arealist.no.areas=\u041D\u0435 \u0441\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0438 \u0443\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438. \u041C\u043E\u043B\u044F, \u0441\u044A\u0437\u0434\u0430\u0439\u0442\u0435 \u043F\u044A\u0440\u0432\u043E \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A \u043A\u0430\u0442\u043E \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u0442\u0435 \u043C\u0435\u043D\u044E\u0442\u043E \u0432\u0434\u044F\u0441\u043D\u043E. -arealist.table.delete=\u0418\u0437\u0442\u0440\u0438\u0439\u0442\u0435 -arealist.table.desc=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 -arealist.table.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0430\u0439\u0442\u0435 -arealist.table.name=\u0418\u043C\u0435 -arealist.title=\u0423\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438 \u0432 \u043A\u0443\u0440\u0441\u0430 -bgmanagement.disposed.command.close=\u0417\u0430\u0442\u0432\u043E\u0440\u0435\u0442\u0435 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u0430 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -bgmanagement.disposed.title=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u044A\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0435 \u0434\u0435\u0430\u043A\u0442\u0438\u0432\u0438\u0440\u0430\u043D. -cmd.area.create=\u041D\u043E\u0432 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A -cmd.area.delete=\u0418\u0437\u0442\u0440\u0438\u0439\u0442\u0435 -cmd.area.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0430\u0439\u0442\u0435 -cmd.back=\u0420\u0430\u0437\u043B\u0438\u0447\u0435\u043D \u0433\u0440\u0443\u043F\u043E\u0432 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 -cmd.close=\u0417\u0430\u0442\u0432\u043E\u0440\u0435\u0442\u0435 -cmd.group.copy=\u041A\u043E\u043F\u0438\u0440\u0430\u0439\u0442\u0435 -cmd.group.copy.multiple=\u041A\u043E\u043F\u0438\u0440\u0430\u0439\u0442\u0435 \u043F\u043E\u0432\u0435\u0447\u0435 \u043E\u0442 \u0432\u0435\u0434\u043D\u044A\u0436 -cmd.group.delete=\u0418\u0437\u0442\u0440\u0438\u0439\u0442\u0435 -cmd.group.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0430\u0439\u0442\u0435 -cmd.group.message=\u0418-\u043C\u0435\u0439\u043B \u0434\u043E \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 -cmd.group.run=\u041E\u0442\u0432\u043E\u0440\u0435\u0442\u0435 -cmd.list.members.with.areas=\u0423\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 \u0432 \u0443\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438 -cmd.list.members.with.groups=\u0423\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 \u0432 \u0433\u0440\u0443\u043F\u0438 -cmd.owners.message=\u0418-\u043C\u0435\u0439\u043B \u0434\u043E \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u0438\u0446\u0438 -cmd.participants.message=\u0418-\u043C\u0435\u0439\u043B \u0434\u043E \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 -cmd.user.message=\u0418-\u043C\u0435\u0439\u043B \u0434\u043E \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u0438 -context.removed=\u0422\u043E\u0437\u0438 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0435 \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D \u043E\u0442 \u043D\u0435\u0433\u043E\u0432\u0438\u044F \u043A\u0443\u0440\u0441 \u0432 \u043C\u043E\u043C\u0435\u043D\u0442\u0430. \u041C\u043E\u043B\u044F, \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439\u0442\u0435 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u0430 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430. -contextedit.owners.info=\u0421\u043B\u0435\u0434\u043D\u0438\u044F\u0442 \u0441\u043F\u0438\u0441\u044A\u043A \u043F\u043E\u043A\u0430\u0437\u0432\u0430 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u0430 \u0442\u043E\u0437\u0438 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430. \u0421\u0432\u044A\u0440\u0436\u0435\u0442\u0435 \u0441\u0435 \u0441 \u0435\u0434\u0438\u043D \u043E\u0442 \u0442\u044F\u0445, \u0437\u0430 \u0434\u0430 \u0441\u0442\u0430\u043D\u0435\u0442\u0435 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440 \u0438\u043B\u0438 \u0434\u0430 \u043C\u043E\u0436\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u0442\u0435 \u0442\u0435\u0437\u0438 \u0433\u0440\u0443\u043F\u0438 \u0432 \u0434\u0440\u0443\u0433\u0438 \u043A\u0443\u0440\u0441\u043E\u0432\u0435. -contextedit.title=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u0430 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -error.area.name.exists=\u0418\u043C\u0435\u0442\u043E \u043D\u0430 \u0442\u043E\u0437\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A \u0432\u0435\u0447\u0435 \u0435 \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u043E \u0432 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442\u0430 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430, \u043C\u043E\u043B\u044F, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u043E \u0438\u043C\u0435. -group.delete=\u041D\u0430\u0438\u0441\u0442\u0438\u043D\u0430 \u043B\u0438 \u0438\u0441\u043A\u0430\u0442\u0435 \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435 \u0433\u0440\u0443\u043F\u0430\u0442\u0430 <b>{0}</b>, \u0437\u0430\u0435\u0434\u043D\u043E \u0441 \u0432\u0441\u0438\u0447\u043A\u0438 \u043D\u0435\u0439\u043D\u0438 \u0430\u0441\u043E\u0446\u0438\u0430\u0446\u0438\u0438? -group.message=\u0418-\u043C\u0435\u0439\u043B \u0434\u043E \u0433\u0440\u0443\u043F\u0430 <i>{0}</i> -group.message.to=\u0418\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0438 \u0438 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 -grouplist.areafilter.nofilter=\u041F\u043E\u043A\u0430\u0436\u0435\u0442\u0435 \u0432\u0441\u0438\u0447\u043A\u0438 \u0433\u0440\u0443\u043F\u0438 -grouplist.areafilter.title=\u0424\u0438\u043B\u0442\u044A\u0440 \u0437\u0430 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A -grouplist.no.groups=\u041D\u0435 \u0441\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0438 \u0433\u0440\u0443\u043F\u0438. \u041C\u043E\u043B\u044F, \u0441\u044A\u0437\u0434\u0430\u0439\u0442\u0435 \u043F\u044A\u0440\u0432\u043E \u0433\u0440\u0443\u043F\u0430 \u043A\u0430\u0442\u043E \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u0442\u0435 \u043C\u0435\u043D\u044E\u0442\u043E \u0432\u0434\u044F\u0441\u043D\u043E. -grouplist.table.delete=\u0418\u0437\u0442\u0440\u0438\u0439\u0442\u0435 -grouplist.table.desc=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 -grouplist.table.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0430\u0439\u0442\u0435 -grouplist.table.name=\u0418\u043C\u0435 -grouplist.title=\u0421\u043F\u0438\u0441\u044A\u043A \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -info.group.deleted=\u0422\u0430\u0437\u0438 \u0433\u0440\u0443\u043F\u0430 \u0435 \u0438\u0437\u0442\u0440\u0438\u0442\u0430 -menu.allareas=\u0412\u0441\u0438\u0447\u043A\u0438 \u0443\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438 -menu.allareas.alt=\u041D\u0430\u043F\u0440\u0430\u0432\u0435\u0442\u0435 \u0441\u043F\u0438\u0441\u044A\u043A \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u0443\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438 -menu.allgroups=\u0412\u0441\u0438\u0447\u043A\u0438 \u0433\u0440\u0443\u043F\u0438 -menu.allgroups.alt=\u041D\u0430\u043F\u0440\u0430\u0432\u0435\u0442\u0435 \u0441\u043F\u0438\u0441\u044A\u043A \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u0433\u0440\u0443\u043F\u0438 -menu.allusers=\u0412\u0441\u0438\u0447\u043A\u0438 \u0447\u043B\u0435\u043D\u043E\u0432\u0435 -menu.allusers.alt=\u041D\u0430\u043F\u0440\u0430\u0432\u0435\u0442\u0435 \u0441\u043F\u0438\u0441\u044A\u043A \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u0447\u043B\u0435\u043D\u043E\u0432\u0435 \u043E\u0442 \u0432\u0441\u0438\u0447\u043A\u0438 \u0433\u0440\u0443\u043F\u0438 -menu.editcontext=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043D\u0435 -menu.editcontext.alt=\u0417\u0430\u0447\u0438\u0441\u043B\u0435\u0442\u0435 \u0442\u043E\u0432\u0430 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u043A\u044A\u043C \u0434\u0440\u0443\u0433\u0438 \u043A\u0443\u0440\u0441\u043E\u0432\u0435 \u0438\u043B\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u0438 \u0445\u043E\u0440\u0430 \u043A\u0430\u0442\u043E \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0438 \u043D\u0430 \u0442\u043E\u0437\u0438 \u043C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430. -newarea.title=\u0421\u044A\u0437\u0434\u0430\u0439\u0442\u0435 \u043D\u043E\u0432 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A -overview.numb.areas=\u0411\u0440\u043E\u0439 \u0443\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438 -overview.numb.groups=\u0411\u0440\u043E\u0439 \u0433\u0440\u0443\u043F\u0438 -overview.numb.owners=\u0411\u0440\u043E\u0439 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A \u043F\u0440\u0435\u043F\u043E\u0434\u0430\u0432\u0430\u0442\u0435\u043B\u0438 -overview.numb.participants=\u0411\u0440\u043E\u0439 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 -overview.numb.total=\u0411\u0440\u043E\u0439 \u0447\u043B\u0435\u043D\u043E\u0432\u0435 \u0432 \u0446\u044F\u043B\u0430\u0442\u0430 \u0433\u0440\u0443\u043F\u0430 -overview.otherResources=\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435\: \u0434\u0440\u0443\u0433\u0438 \u043A\u0443\u0440\u0441\u043E\u0432\u0435 -overview.otherResources.info=\u0422\u0435\u0437\u0438 \u0433\u0440\u0443\u043F\u0438 \u0441\u0435 \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u0442 \u0441\u044A\u0449\u043E \u0432 \u0434\u0440\u0443\u0433\u0438 \u043A\u0443\u0440\u0441\u043E\u0432\u0435\! \u041F\u0440\u043E\u043C\u0435\u043D\u0438\u0442\u0435 \u0432 \u0442\u0435\u0437\u0438 \u0433\u0440\u0443\u043F\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0441\u0435 \u043E\u0442\u0440\u0430\u0437\u044F\u0432\u0430\u0442 \u0432 \u0441\u043B\u0435\u0434\u043D\u0438\u0442\u0435 \u043A\u0443\u0440\u0441\u043E\u0432\u0435\: -overview.overview=\u041F\u0440\u0435\u0433\u043B\u0435\u0434 -owners.message=\u0418-\u043C\u0435\u0439\u043B \u0434\u043E \u0432\u0441\u0438\u0447\u043A\u0438 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u0438\u0446\u0438 -owners.message.to=\u0412\u0441\u0438\u0447\u043A\u0438 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u0438\u0446\u0438 -participants.message=\u0418-\u043C\u0435\u0439\u043B \u0434\u043E \u0432\u0441\u0438\u0447\u043A\u0438 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 -participants.message.to=\u0412\u0441\u0438\u0447\u043A\u0438 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 -rightgroup.message.to=\u0427\u043B\u0435\u043D\u043E\u0432\u0435 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0441\u044A\u0441 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u043D\u0438 \u043F\u0440\u0430\u0432\u0430 -tools.title.area=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0432 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A -tools.title.group=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0432 \u0433\u0440\u0443\u043F\u0430 -tools.title.groupmanagement=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -tools.title.listmembers=\u0421\u044A\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u043F\u0438\u0441\u044A\u0446\u0438 -tools.title.listmembers.warning.noAreas=\u041D\u0435 \u0435 \u0432\u044A\u0437\u043C\u043E\u0436\u043D\u043E \u0434\u0430 \u0431\u044A\u0434\u0430\u0442 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u043D\u0438 \u0441\u043F\u0438\u0441\u044A\u0446\u0438, \u0437\u0430\u0449\u043E\u0442\u043E \u0432 \u0442\u043E\u0437\u0438 \u043A\u0443\u0440\u0441 \u043D\u044F\u043C\u0430 \u0443\u0447\u0435\u0431\u043D\u0438 \u043F\u043E\u0442\u043E\u0446\u0438. -tools.title.listmembers.warning.noGroups=\u041D\u0435 \u0435 \u0432\u044A\u0437\u043C\u043E\u0436\u043D\u043E \u0434\u0430 \u0431\u044A\u0434\u0430\u0442 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u043D\u0438 \u0441\u043F\u0438\u0441\u044A\u0446\u0438, \u0437\u0430\u0449\u043E\u0442\u043E \u0432 \u0442\u043E\u0437\u0438 \u043A\u0443\u0440\u0441 \u043D\u044F\u043C\u0430 \u0433\u0440\u0443\u043F\u0438. -tools.title.rightmanagement=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0442 \u043D\u0430 \u043F\u0440\u0430\u0432\u0430 -tools.title.user=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043D\u0430 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B -tools.title.userlist=\u041A\u043E\u043D\u0442\u0430\u043A\u0442 -user.message=\u0418-\u043C\u0435\u0439\u043B \u0434\u043E \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B <i>{0} {1}</i> -userdetails.ownergroups.noGroups=\u0422\u043E\u0437\u0438 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B \u043D\u044F\u043C\u0430 \u0433\u0440\u0443\u043F\u0430 -userdetails.ownergroups.title=\u0421\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u0438\u0446\u0438 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 -userdetails.participantgroups.noGroups=\u0422\u043E\u0437\u0438 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B \u043D\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0430 \u0432 \u043D\u0438\u043A\u043E\u044F \u0433\u0440\u0443\u043F\u0430. -userdetails.participantgroups.title=\u0423\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 \u0432 \u0433\u0440\u0443\u043F\u0438 -userdetails.remove=\u0418\u0437\u0442\u0440\u0438\u0439\u0442\u0435 -userdetails.title=\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438 \u0437\u0430 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B -userdetails.user.title=\u041F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u0441\u043A\u0438 \u043F\u0440\u043E\u0444\u0438\u043B -userlist.owners.noOwners=\u041D\u0438\u043A\u043E\u044F \u043E\u0442 \u0442\u0435\u0437\u0438 \u0433\u0440\u0443\u043F\u0438 \u043D\u044F\u043C\u0430 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u0438\u0446\u0438 -userlist.owners.title=\u0421\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u0438\u0446\u0438 -userlist.participants.noParticipants=\u041D\u0438\u043A\u043E\u044F \u043E\u0442 \u0442\u0435\u0437\u0438 \u0433\u0440\u0443\u043F\u0438 \u043D\u0435 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 -userlist.participants.title=\u0423\u0447\u0430\u0441\u0442\u043D\u0438\u0446\u0438 -userlist.title=\u0421\u043F\u0438\u0441\u044A\u043A \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u0447\u043B\u0435\u043D\u043E\u0432\u0435 diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_cs.properties deleted file mode 100644 index 26b3c16d2f3..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_cs.properties +++ /dev/null @@ -1,85 +0,0 @@ -#Mon Mar 02 09:54:14 CET 2009 -area.delete=Opravdu chcete smazat tuto studijn\u00ED oblast <b>{0}</b>? Skupina nebude smaz\u00E1na. -arealist.no.areas=\u017D\u00E1dn\u00E9 studijn\u00ED oblasti nenalezeny. Vytvo\u0159te nejd\u0159\u00EDve studijn\u00ED oblast. -arealist.table.delete=Smazat -arealist.table.desc=Popis -arealist.table.edit=Upravit -arealist.table.name=Jm\u00E9no -arealist.title=Studijn\u00ED oblast uvnit\u0159 kurzu -bgmanagement.disposed.command.close=Zav\u0159\u00EDt spr\u00E1vu skupin -bgmanagement.disposed.title=Spr\u00E1va skupin znemo\u017En\u011Bna. -cmd.area.create=Nov\u00E1 studijn\u00ED oblast -cmd.area.delete=Smazat -cmd.area.edit=Upravit -cmd.back=Jin\u00FD skupinov\u00FD kontext -cmd.close=Zav\u0159\u00EDt -cmd.group.copy=Kop\u00EDrovat -cmd.group.copy.multiple=Kop\u00EDrovat v\u00EDce ne\u017E jednou -cmd.group.delete=Smazat -cmd.group.edit=Upravit -cmd.group.message=E-mail \u010Dlen\u016Fm -cmd.group.run=Spustit -cmd.list.members.with.areas=\u00DA\u010Dastn\u00EDci oblast\u00ED -cmd.list.members.with.groups=\u00DA\u010Dastn\u00EDci skupin -cmd.owners.message=E-mail vlastn\u00EDk\u016Fm -cmd.participants.message=E-mail \u010Dlen\u016Fm -cmd.user.message=E-mail u\u017Eivatel\u016Fm -context.removed=Tato administrace skupiny je odd\u011Blena od kurzu. Pros\u00EDm, restartujte administraci skupiny. -contextedit.owners.info=Seznam administr\u00E1tor\u016F pro tuto skupinu. Kontaktujte n\u011Bkter\u00E9ho z nich, aby V\u00E1s p\u0159i\u0159adil k administr\u00E1tor\u016Fm nebo umo\u017Enil pou\u017Eit\u00ED v kurzech. -contextedit.title=Administrace spr\u00E1vce skupin -error.area.name.exists=Jm\u00E9no studijn\u00ED oblasti je ji\u017E pou\u017Eito, vyberte jin\u00E9. -group.delete=Opravdu chcete smazat skupinu <b>{0}</b> s jej\u00EDmi vztahy? -group.message=E-mail skupin\u011B <i>{0}</i> -group.message.to=Lekto\u0159i a \u00FA\u010Dastn\u00EDci -grouplist.areafilter.nofilter=Zobrazit v\u0161echny skupiny -grouplist.areafilter.title=Filtr studijn\u00EDch oblast\u00ED -grouplist.no.groups=\u017D\u00E1dn\u00E1 skupina nenalezena. Nejd\u0159\u00EDve vytvo\u0159te skupinu. -grouplist.table.delete=Smazat -grouplist.table.desc=Popis -grouplist.table.edit=Upravit -grouplist.table.name=Jm\u00E9no -grouplist.title=Seznam skupin -menu.allareas=V\u0161echny studijn\u00ED oblasti -menu.allareas.alt=Seznam v\u0161ech studijn\u00EDch oblast\u00ED -menu.allgroups=V\u0161echny skupiny -menu.allgroups.alt=Seznam v\u0161ech skupin -menu.allusers=V\u0161ichni \u010Dlenov\u00E9 -menu.allusers.alt=Seznam v\u0161ech \u010Deln\u016F v\u0161ech skupin -menu.editcontext=Administrace -menu.editcontext.alt=P\u0159i\u0159adit tuto administraci skupiny jin\u00FDm kurz\u016Fm nebo p\u0159i\u0159adit jin\u00E9 u\u017Eivatele jako administr\u00E1tory t\u00E9to skupiny. -newarea.title=Vytvo\u0159it novou studijn\u00ED oblast -overview.numb.areas=Po\u010Det studijn\u00EDch oblast\u00ED -overview.numb.groups=Po\u010Det skupin -overview.numb.owners=Po\u010Det garant\u016F -overview.numb.participants=Po\u010Det \u010Dlen\u016F -overview.numb.total=Celkov\u00FD po\u010Det \u010Dlen\u016F skupin -overview.otherResources=Pozor\: ostatn\u00ED kurzy -overview.otherResources.info=Tyto skupiny jsou pou\u017E\u00EDv\u00E1ny tak\u00E9 v jin\u00FDch kurzech\! \u00DApravy t\u011Bchto skupin se automaticky projev\u00ED v t\u011Bchto kurzech\: -overview.overview=P\u0159ehled -owners.message=E-mail v\u0161em \u010Dlen\u016Fm -owners.message.to=V\u0161ichni \u010Dlenov\u00E9 -participants.message=E-mail v\u0161em \u010Dlen\u016Fm -participants.message.to=V\u0161ichni \u010Dlenov\u00E9 -rightgroup.message.to=\u010Clenov\u00E9 skupiny pr\u00E1v -tools.title.area=Akce studijn\u00ED oblasti -tools.title.group=Skupiny akc\u00ED -tools.title.groupmanagement=Administrace skupin -tools.title.listmembers=Vytvo\u0159it seznamy -tools.title.listmembers.warning.noAreas=Varov\u00E1n\u00ED\: archivace nen\u00ED mo\u017En\u00E1 proto\u017Ee chyb\u00ED studijn\u00ED oblasti -tools.title.listmembers.warning.noGroups=Varov\u00E1n\u00ED\: archivace nen\u00ED mo\u017En\u00E1 proto\u017Ee chyb\u00ED studijn\u00ED skupiny -tools.title.rightmanagement=Administrace pr\u00E1v -tools.title.user=Akce u\u017Eivatele -tools.title.userlist=Kontakt -user.message=E-mail u\u017Eivateli <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Tento u\u017Eivatel nem\u00E1 skupinu -userdetails.ownergroups.title=Vlastn\u00EDci skupiny -userdetails.participantgroups.noGroups=Tento u\u017Eivatel nen\u00ED \u010Dlenem \u017E\u00E1dn\u00E9 skupiny. -userdetails.participantgroups.title=\u010Clen skupin -userdetails.remove=Odstranit -userdetails.title=Podrobnosti u\u017Eivatele -userdetails.user.title=U\u017Eivatelsk\u00FD profil -userlist.owners.noOwners=\u017D\u00E1dn\u00E1 z t\u011Bchto skupin nem\u00E1 vlastn\u00EDka -userlist.owners.title=Vlastn\u00EDci -userlist.participants.noParticipants=\u017D\u00E1dn\u00E1 z t\u011Bchto skupin nem\u00E1 \u010Dleny -userlist.participants.title=\u010Cleny -userlist.title=Seznam v\u0161ech u\u017Eivatel\u016F diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_da.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_da.properties deleted file mode 100644 index 26e856b0efb..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_da.properties +++ /dev/null @@ -1,83 +0,0 @@ -#Mon Mar 02 09:54:09 CET 2009 -area.delete=Er du sikker p\u00E5 at du vil slette l\u00E6ringsomr\u00E5det <b>{0}</b>? Grupper vil ikke blive slettet. -arealist.no.areas=Ingen l\u00E6ringsomr\u00E5der er fundet. Opret venligst et l\u00E6ringsomr\u00E5de f\u00F8rst ved hj\u00E6lp af menuen til h\u00F8jre. -arealist.table.delete=Slet -arealist.table.desc=Beskrivelse -arealist.table.edit=Modificer -arealist.table.name=Navn -arealist.title=L\u00E6ringsomr\u00E5de indenfor kurset -cmd.area.create=Nyt l\u00E6ringsomr\u00E5de -cmd.area.delete=Slet -cmd.area.edit=Modificer -cmd.back=En anden gruppekontekst -cmd.close=Luk -cmd.group.copy=Kopier -cmd.group.copy.multiple=Kopier mere end en gang -cmd.group.delete=Slet -cmd.group.edit=Modificer -cmd.group.message=E-mail til medlemmerne -cmd.group.run=Start -cmd.list.members.with.areas=Medlemmer i omr\u00E5der -cmd.list.members.with.groups=Medlemmer i grupper -cmd.owners.message=E-mail til ejere -cmd.participants.message=E-mail til medlemmerne -cmd.user.message=E-mail til brugere -context.removed=Denne gruppeadministration er pt adskilt fra dette kursus. Genstart venligst gruppeadministrationen. -contextedit.owners.info=Den f\u00F8lgende liste viser administratorerne i denne gruppeadministration. Kontakt en af disse personer for at blive administrator eller for at f\u00E5 lov til at benytte disse grupper i andre kurser. -contextedit.title=Administration af gruppeadministration -error.area.name.exists=Navnet p\u00E5 dette l\u00E6ringsomr\u00E5de er allerede brugt i denne gruppeadministration, v\u00E6lg venligst et andet. -group.delete=Er du sikker p\u00E5 at du vil slette gruppen <b>{0}</b> og alle forbindelser? -group.message=E-mail til gruppen <i>{0}</i> -group.message.to=Tr\u00E6nere og medlemmer -grouplist.areafilter.nofilter=Vis alle grupper -grouplist.areafilter.title=L\u00E6ringsomr\u00E5defilter -grouplist.no.groups=Ingen grupper er fundet. Opret venligst en gruppe f\u00F8rst ved hj\u00E6lp af menuen til h\u00F8jre. -grouplist.table.delete=Slet -grouplist.table.desc=Beskrivelse -grouplist.table.edit=Modificer -grouplist.table.name=Navn -grouplist.title=Gruppeliste -menu.allareas=Alle l\u00E6ringsomr\u00E5der -menu.allareas.alt=Vis alle l\u00E6ringsomr\u00E5der -menu.allgroups=Alle grupper -menu.allgroups.alt=Vis alle grupper -menu.allusers=Alle medlemmer -menu.allusers.alt=Vis alle medlemmer fra alle grupper -menu.editcontext=Administration -menu.editcontext.alt=Tildel dene gruppeadministration til andre kurser eller udpeg andre personer som administratorer for denne gruppeadministration -newarea.title=Opret nyt l\u00E6ringsomr\u00E5de -overview.numb.areas=Antal l\u00E6ringsomr\u00E5der -overview.numb.groups=Antal grupper -overview.numb.owners=Antal tutorer -overview.numb.participants=Antal medlemmer -overview.numb.total=Totale antal gruppemedlemmer -overview.otherResources=Bem\u00E6rk\: andre kurser -overview.otherResources.info=Disse grupper benyttes ligeledes i andre kurser\! \u00C6ndringer til disse grupper vil automatisk f\u00E5 indflydelse p\u00E5 f\u00F8lgende kurser\: -overview.overview=Oversigt -owners.message=E-mail til alle ejere -owners.message.to=Alle ejere -participants.message=E-mail til alle medlemmerne -participants.message.to=Alle medlemmerne -rightgroup.message.to=Medlemmer af rettighedsgruppen -tools.title.area=Handlinger l\u00E6ringsomr\u00E5de -tools.title.group=Handlingsgruppe -tools.title.groupmanagement=Gruppeadministration -tools.title.listmembers=Opret lister -tools.title.listmembers.warning.noAreas=Advarsel\: arkivering er ikke muligt p\u00E5 grund af manglende l\u00E6ringsomr\u00E5der -tools.title.listmembers.warning.noGroups=Advarsel\: arkivering er ikke muligt p\u00E5 grund af manglende grupper -tools.title.rightmanagement=Rettighedsadministration -tools.title.user=Handlingsbruger -tools.title.userlist=Kontakt -user.message=E-mail til bruger <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Denne bruger har ingen grupper -userdetails.ownergroups.title=Gruppeejere -userdetails.participantgroups.noGroups=Denne bruger deltager ikke som medlem i nogen gruppe -userdetails.participantgroups.title=Medlemmer i grupper -userdetails.remove=Fjern -userdetails.title=Detaljer om bruger -userdetails.user.title=Brugerprofil -userlist.owners.noOwners=Ingen af disse grupper har ejere -userlist.owners.title=Ejere -userlist.participants.noParticipants=Ingen af disse grupper har medlemmer -userlist.participants.title=Medlemmer -userlist.title=Liste over alle brugere diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_de.properties deleted file mode 100644 index dcee9a26ac5..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_de.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Mon Mar 02 09:54:04 CET 2009 -area.delete=Wollen Sie den Lernbereich <b>{0}</b> wirklich l\u00F6schen? Es werden dabei keine Gruppen gel\u00F6scht. -arealist.no.areas=Es wurde kein Lernbereich gefunden. Bitte erstellen Sie einen Lernbereich mit Hilfe des Menus auf der rechten Seite. -arealist.table.delete=L\u00F6schen -arealist.table.desc=Beschreibung -arealist.table.edit=Editieren -arealist.table.name=Name -arealist.title=Lernbereiche im Kurs -bgmanagement.disposed.command.close=Gruppenmanagement schliessen -bgmanagement.disposed.title=Gruppenmanagement ist ung\u00FCltig geworden. -cmd.area.create=Neuer Lernbereich -cmd.area.delete=L\u00F6schen -cmd.area.edit=Editieren -cmd.back=Anderer Gruppenkontext -cmd.close=Schliessen -cmd.group.copy=Kopieren -cmd.group.copy.multiple=Mehrfach kopieren -cmd.group.delete=L\u00F6schen -cmd.group.edit=Editieren -cmd.group.message=E-Mail an Mitglieder -cmd.group.run=Starten -cmd.list.members.with.areas=Lernbereichsmitglieder -cmd.list.members.with.groups=Gruppenmitglieder -cmd.owners.message=E-Mail an Besitzer -cmd.participants.message=E-Mail an Teilnehmer -cmd.user.message=E-Mail an Benutzer -context.removed=Dieses Gruppenmanagement ist in diesem Moment von diesem Kurs getrennt worden. Bitte starten Sie das Gruppenmanagement erneut. -contextedit.owners.info=Die folgende Liste zeigt die Verwalter dieses Gruppenmanagements. Kontaktieren Sie eine dieser Personen, um selber Verwalter zu werden und diese Gruppen auch in einem anderen Kurs verwenden zu k\u00F6nnen. -contextedit.title=Verwaltung des Gruppenmanagements -error.area.name.exists=Dieser Lernbereichsname wird in diesem Gruppenmanagement bereits verwendet. Bitte w\u00E4hlen Sie einen anderen Namen. -group.delete=Wollen Sie die Gruppe <b>{0}</b> mit allen Verkn\u00FCpfungen wirklich l\u00F6schen? -group.delete.in.use=Die Gruppe wird benutzt von <b>`{1}`</b>. Diese Eintr\u00E4ge werden auch gel\u00F6scht. Wollen Sie die Gruppe <b>{0}</b> mit allen Verkn\u00FCpfungen wirklich l\u00F6schen? -group.message=E-Mail an Gruppe <i>{0}</i> -group.message.to=Betreuer und Teilnehmer -grouplist.areafilter.nofilter=Alle Gruppen anzeigen -grouplist.areafilter.title=Filter nach Lernbereich -grouplist.no.groups=Es wurde keine Gruppe gefunden. Bitte erstellen Sie zuerst eine Gruppe mit Hilfe des Menus auf der rechten Seite. -grouplist.table.delete=L\u00F6schen -grouplist.table.desc=Beschreibung -grouplist.table.edit=Editieren -grouplist.table.name=Name -grouplist.title=Gruppenliste -info.group.deleted=Die Gruppe wurde gel\u00F6scht. -menu.allareas=Alle Lernbereiche -menu.allareas.alt=Alle Lernbereiche auflisten -menu.allgroups=Alle Gruppen -menu.allgroups.alt=Alle Gruppen auflisten -menu.allusers=Alle Mitglieder -menu.allusers.alt=Mitglieder aller Gruppen auflisten -menu.editcontext=Administration -menu.editcontext.alt=Weisen Sie diese Gruppenverwaltung anderen Kursen zu oder ernennen Sie Personen zu Verwalter dieses Gruppenmanagements. -newarea.title=Neuen Lernbereich erstellen -overview.numb.areas=Anzahl Lernbereiche -overview.numb.groups=Anzahl Gruppen -overview.numb.owners=Anzahl Betreuer -overview.numb.participants=Anzahl Teilnehmer -overview.numb.total=Anzahl Mitglieder total -overview.otherResources=Achtung\: andere Kurse -overview.otherResources.info=Diese Gruppen werden auch in anderen Kursen verwendet\! \u00C4nderungen an diesen Gruppen werden automatisch auch in den folgenden Kursen angewendet\: -overview.overview=\u00DCbersicht -owners.message=E-Mail an alle Besitzer -owners.message.to=Alle Besitzer -participants.message=E-Mail an alle Teilnehmer -participants.message.to=Alle Teilnehmer -rightgroup.message.to=Mitglieder der Rechtegruppe -tools.title.area=Aktionen Lernbereich -tools.title.group=Aktionen Gruppe -tools.title.groupmanagement=Gruppenmanagement -tools.title.listmembers=Listen erstellen -tools.title.listmembers.warning.noAreas=Sie k\u00F6nnen keine Listen erstellen, da es in diesem Kurs keine Lernbereiche gibt. -tools.title.listmembers.warning.noGroups=Sie k\u00F6nnen keine Listen erstellen, da es in diesem Kurs keine Gruppen gibt. -tools.title.rightmanagement=Rechtemanagement -tools.title.user=Aktionen Benutzer -tools.title.userlist=Kontaktieren -user.message=E-Mail an Benutzer <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Dieser Benutzer besitzt keine Gruppen. -userdetails.ownergroups.title=Besitzer von Gruppen -userdetails.participantgroups.noGroups=Dieser Benutzer nimmt in keiner Gruppe teil. -userdetails.participantgroups.title=Teilnehmer in Gruppen -userdetails.remove=Austragen -userdetails.title=Details zum Benutzer -userdetails.user.title=Benutzerprofil -userlist.owners.noOwners=Es sind keiner Gruppe Besitzer zugewiesen. -userlist.owners.title=Besitzer -userlist.participants.noParticipants=Es sind keiner Gruppe Teilnehmer zugewiesen. -userlist.participants.title=Teilnehmer -userlist.title=Liste aller Mitglieder diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_el.properties deleted file mode 100644 index 744dcaff8ce..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_el.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Wed Sep 15 12:01:44 CEST 2010 -area.delete=\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03C3\u03AF\u03B3\u03BF\u03C5\u03C1\u03B1 \u03BD\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 <b>{0}</b>? \u039F\u03B9 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 \u03B4\u03B5\u03BD \u03B8\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03BF\u03CD\u03BD. -arealist.no.areas=\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AD\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03BF\u03CD\u03BC\u03B5 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03C4\u03B5 \u03BC\u03AF\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03CE\u03BD\u03C4\u03B1\u03C2 \u03C4\u03BF \u03BC\u03B5\u03BD\u03BF\u03CD \u03B4\u03B5\u03BE\u03B9\u03AC. -arealist.table.delete=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE -arealist.table.desc=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE -arealist.table.edit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 -arealist.table.name=\u038C\u03BD\u03BF\u03BC\u03B1 -arealist.title=\u03A0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C3\u03C4\u03BF \u03BC\u03AC\u03B8\u03B7\u03BC\u03B1 -bgmanagement.disposed.command.close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2. -bgmanagement.disposed.title=\u0397 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C4\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03B1\u03BA\u03C5\u03C1\u03CE\u03B8\u03B7\u03BA\u03B5. -cmd.area.create=\u039D\u03AD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -cmd.area.delete=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE -cmd.area.edit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 -cmd.back=\u0394\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC \u03C0\u03BB\u03B1\u03AF\u03C3\u03B9\u03BF \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 -cmd.close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF -cmd.group.copy=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE -cmd.group.copy.multiple=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C0\u03B5\u03C1\u03B9\u03C3\u03C3\u03CC\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC \u03BC\u03AF\u03B1 \u03C6\u03BF\u03C1\u03AD\u03C2 -cmd.group.delete=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE -cmd.group.edit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 -cmd.group.message=E-mail \u03C3\u03C4\u03B1 \u03BC\u03AD\u03BB\u03B7 -cmd.group.run=\u0395\u03BA\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 -cmd.list.members.with.areas=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 \u03C3\u03B5 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AD\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -cmd.list.members.with.groups=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 \u03C3\u03B5 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 -cmd.owners.message=E-mail \u03C3\u03C4\u03BF\u03C5\u03C2 \u03BA\u03B1\u03C4\u03CC\u03C7\u03BF\u03C5\u03C2 -cmd.participants.message=E-mail \u03C3\u03C4\u03BF\u03C5\u03C2 \u03C3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03BF\u03BD\u03C4\u03B5\u03C2 -cmd.user.message=E-mail \u03C3\u03C4\u03BF\u03C5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 -context.removed=\u0397 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03AD\u03C7\u03B5\u03B9 \u03B1\u03C0\u03BF\u03C3\u03C0\u03B1\u03C3\u03C4\u03B5\u03AF \u03C0\u03C1\u03BF\u03C2 \u03C4\u03BF \u03C0\u03B1\u03C1\u03CC\u03BD \u03B1\u03C0\u03CC \u03C4\u03BF \u03BC\u03AC\u03B8\u03B7\u03BC\u03B1. \u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03BF\u03CD\u03BC\u03B5 \u03B5\u03C0\u03B1\u03BD\u03B5\u03BA\u03BA\u03B9\u03BD\u03AE\u03C3\u03C4\u03B5 \u03C4\u03B7 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2. -contextedit.owners.info=\u0397 \u03B1\u03BA\u03CC\u03BB\u03BF\u03C5\u03B8\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BB\u03B1\u03BC\u03B2\u03AC\u03BD\u03B5\u03B9 \u03C4\u03BF\u03C5\u03C2 \u03B4\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AD\u03C2 \u03B1\u03C5\u03C4\u03AE\u03C2 \u03C4\u03B7\u03C2 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2. \u0395\u03C0\u03B9\u03BA\u03BF\u03B9\u03BD\u03C9\u03BD\u03AE\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03BA\u03AC\u03C0\u03BF\u03B9\u03BF\u03BD \u03B1\u03C0\u03CC \u03B1\u03C5\u03C4\u03BF\u03CD\u03C2 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B3\u03AF\u03BD\u03B5\u03C4\u03B1\u03B9 \u03B4\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2 \u03AE \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03AD\u03C7\u03B5\u03C4\u03B5 \u03C4\u03B7 \u03B4\u03C5\u03BD\u03B1\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1 \u03C7\u03C1\u03AE\u03C3\u03B7\u03C2 \u03C4\u03C9\u03BD \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD \u03C3\u03B5 \u03AC\u03BB\u03BB\u03B1 \u03BC\u03B1\u03B8\u03AE\u03BC\u03B1\u03C4\u03B1. -contextedit.title=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 -error.area.name.exists=\u03A4\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C4\u03B7\u03C2 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03AD\u03B4\u03B7 \u03C3\u03C4\u03B7 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2, \u03C0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03BF\u03CD\u03BC\u03B5 \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC. -group.delete=\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03C3\u03AF\u03B3\u03BF\u03C5\u03C1\u03B1 \u03BD\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03BF\u03BC\u03AC\u03B4\u03B1 <b>{0}</b> \u03BC\u03B5 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03C4\u03B7\u03C2? -group.delete.in.use=\u0391\u03C5\u03C4\u03AE \u03B7 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B1\u03C0\u03CC <b>`{1}`</b>. \u0391\u03C5\u03C4\u03AD\u03C2 \u03BF\u03B9 \u03B5\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AD\u03C2 \u03BC\u03C0\u03BF\u03C1\u03BF\u03CD\u03BD \u03BD\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03BF\u03CD\u03BD. \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03C0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03B9\u03BA\u03AC \u03BD\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03BF\u03BC\u03AC\u03B4\u03B1 <b>{0}</b> \u03BC\u03B1\u03B6\u03AF \u03BC\u03B5 \u03CC\u03BB\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03C3\u03C5\u03BD\u03B4\u03AD\u03C3\u03BC\u03BF\u03C5\u03C2 \u03C4\u03B7\u03C2; -group.message=E-mail \u03C3\u03C4\u03B7\u03BD \u03BF\u03BC\u03AC\u03B4\u03B1 <i>{0}</i> -group.message.to=\u0395\u03BA\u03C0\u03B1\u03B9\u03B4\u03B5\u03C5\u03C4\u03AD\u03C2 \u03BA\u03B1\u03B9 \u03C3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03BF\u03BD\u03C4\u03B5\u03C2 -grouplist.areafilter.nofilter=\u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -grouplist.areafilter.title=\u03A6\u03AF\u03BB\u03C4\u03C1\u03BF \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -grouplist.no.groups=\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2. \u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03BF\u03CD\u03BC\u03B5 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03C4\u03B5 \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03CE\u03BD\u03C4\u03B1\u03C2 \u03C4\u03BF \u03BC\u03B5\u03BD\u03BF\u03CD \u03B4\u03B5\u03BE\u03B9\u03AC. -grouplist.table.delete=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE -grouplist.table.desc=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE -grouplist.table.edit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 -grouplist.table.name=\u038C\u03BD\u03BF\u03BC\u03B1 -grouplist.title=\u039B\u03AF\u03C3\u03C4\u03B1 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -info.group.deleted=\u0397 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03AD\u03C7\u03B5\u03B9 \u03B4\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03B5\u03AF -menu.allareas=\u038C\u03BB\u03B5\u03C2 \u03BF\u03B9 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AD\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -menu.allareas.alt=\u039B\u03AF\u03C3\u03C4\u03B1 \u03BC\u03B5 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AD\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -menu.allgroups=\u038C\u03BB\u03B5\u03C2 \u03BF\u03B9 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 -menu.allgroups.alt=\u039B\u03AF\u03C3\u03C4\u03B1 \u03BC\u03B5 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 -menu.allusers=\u038C\u03BB\u03B1 \u03C4\u03B1 \u03BC\u03AD\u03BB\u03B7 -menu.allusers.alt=\u039B\u03AF\u03C3\u03C4\u03B1 \u03BC\u03B5 \u03CC\u03BB\u03B1 \u03C4\u03B1 \u03BC\u03AD\u03BB\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -menu.editcontext=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 -menu.editcontext.alt=\u0391\u03BD\u03AC\u03B8\u03B5\u03C3\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03C3\u03B5 \u03AC\u03BB\u03BB\u03B1 \u03BC\u03B1\u03B8\u03AE\u03BC\u03B1\u03C4\u03B1 \u03AE \u03BF\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03AC\u03BB\u03BB\u03C9\u03BD \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD \u03C9\u03C2 \u03B4\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AD\u03C2 \u03C4\u03B7\u03C2 \u03B4\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2. -newarea.title=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BD\u03AD\u03B1\u03C2 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -overview.numb.areas=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03CE\u03BD \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -overview.numb.groups=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -overview.numb.owners=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03B5\u03BA\u03C0\u03B1\u03B9\u03B4\u03B5\u03C5\u03C4\u03CE\u03BD -overview.numb.participants=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C3\u03C5\u03BC\u03BC\u03B5\u03C4\u03B5\u03C7\u03CC\u03BD\u03C4\u03C9\u03BD -overview.numb.total=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03BC\u03B5\u03BB\u03CE\u03BD \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 -overview.otherResources=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE\: \u0386\u03BB\u03BB\u03B1 \u03BC\u03B1\u03B8\u03AE\u03BC\u03B1\u03C4\u03B1 -overview.otherResources.info=\u0391\u03C5\u03C4\u03AD\u03C2 \u03BF\u03B9 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9 \u03BA\u03B1\u03B9 \u03C3\u03B5 \u03AC\u03BB\u03BB\u03B1 \u03BC\u03B1\u03B8\u03AE\u03BC\u03B1\u03C4\u03B1\! \u039F\u03B9 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03AD\u03C2 \u03C4\u03B9\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 \u03B5\u03C6\u03B1\u03C1\u03BC\u03CC\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B1 \u03C3\u03C4\u03B1 \u03B1\u03BA\u03CC\u03BB\u03BF\u03C5\u03B8\u03B1 \u03BC\u03B1\u03B8\u03AE\u03BC\u03B1\u03C4\u03B1\: -overview.overview=\u0395\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 -owners.message=E-mail \u03C3\u03B5 \u03CC\u03BB\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03BA\u03B1\u03C4\u03CC\u03C7\u03BF\u03C5\u03C2 -owners.message.to=\u038C\u03BB\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03BA\u03B1\u03C4\u03CC\u03C7\u03BF\u03C5\u03C2 -participants.message=E-mail \u03C3\u03B5 \u03CC\u03BB\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03C3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03BF\u03BD\u03C4\u03B5\u03C2 -participants.message.to=\u038C\u03BB\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03C3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03BF\u03BD\u03C4\u03B5\u03C2 -rightgroup.message.to=\u039C\u03AD\u03BB\u03B7 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03B4\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD -tools.title.area=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B5\u03C2 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE\u03C2 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -tools.title.group=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B5\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 -tools.title.groupmanagement=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C0\u03BB\u03B1\u03B9\u03C3\u03AF\u03BF\u03C5 -tools.title.listmembers=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BB\u03B9\u03C3\u03C4\u03CE\u03BD -tools.title.listmembers.warning.noAreas=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE\: \u03B7 \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03AD\u03C4\u03B7\u03C3\u03B7 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B1\u03B4\u03CD\u03BD\u03B1\u03C4\u03B7 \u03BB\u03CC\u03B3\u03C9 \u03B5\u03BB\u03BB\u03B9\u03C0\u03CE\u03BD \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03CE\u03BD \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 -tools.title.listmembers.warning.noGroups=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE\: \u03B7 \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03AD\u03C4\u03B7\u03C3\u03B7 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B1\u03B4\u03CD\u03BD\u03B1\u03C4\u03B7 \u03BB\u03CC\u03B3\u03C9 \u03B5\u03BB\u03BB\u03B9\u03C0\u03CE\u03BD \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -tools.title.rightmanagement=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03B4\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD -tools.title.user=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 -tools.title.userlist=\u0395\u03C0\u03B9\u03BA\u03BF\u03B9\u03BD\u03C9\u03BD\u03AF\u03B1 -user.message=E-mail \u03C3\u03C4\u03BF \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 <i>{0} {1}</i> -userdetails.ownergroups.noGroups=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03BA\u03B1\u03BC\u03AF\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 -userdetails.ownergroups.title=\u039A\u03AC\u03C4\u03BF\u03C7\u03BF\u03C2 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD -userdetails.participantgroups.noGroups=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03C3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03B5\u03B9 \u03C3\u03B5 \u03BA\u03B1\u03BC\u03AF\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1. -userdetails.participantgroups.title=\u03A3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03C9\u03BD \u03C3\u03B5 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 -userdetails.remove=\u039A\u03B1\u03C4\u03AC\u03C1\u03B3\u03B7\u03C3\u03B7 -userdetails.title=\u039B\u03B5\u03C0\u03C4\u03BF\u03BC\u03AD\u03C1\u03B5\u03B9\u03B5\u03C2 \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD -userdetails.user.title=\u03A0\u03C1\u03BF\u03C6\u03AF\u03BB \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 -userlist.owners.noOwners=\u039A\u03B1\u03BC\u03AF\u03B1 \u03B1\u03C0\u03CC \u03B1\u03C5\u03C4\u03AD\u03C2 \u03C4\u03B9\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03BA\u03B1\u03C4\u03CC\u03C7\u03BF\u03C5\u03C2 -userlist.owners.title=\u039A\u03AC\u03C4\u03BF\u03B9\u03C7\u03BF\u03B9 -userlist.participants.noParticipants=\u039A\u03B1\u03BC\u03AF\u03B1 \u03B1\u03C0\u03CC \u03B1\u03C5\u03C4\u03AD\u03C2 \u03C4\u03B9\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03BF\u03BD\u03C4\u03B5\u03C2 -userlist.participants.title=\u03A3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03BF\u03BD\u03C4\u03B5\u03C2 -userlist.title=\u039B\u03AF\u03C3\u03C4\u03B1 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_en.properties deleted file mode 100644 index 7010b764f32..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_en.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Mon Feb 01 14:35:25 CET 2010 -area.delete=Do you really want to delete the learning area <b>{0}</b>? Groups will not be deleted. -arealist.no.areas=No learning areas found. Please create a learning area first by using the menu on the right. -arealist.table.delete=Delete -arealist.table.desc=Description -arealist.table.edit=Edit -arealist.table.name=Name -arealist.title=Learning area within course -bgmanagement.disposed.command.close=Close group management -bgmanagement.disposed.title=Group management invalidated. -cmd.area.create=New learning area -cmd.area.delete=Delete -cmd.area.edit=Edit -cmd.back=Different group context -cmd.close=Close -cmd.group.copy=Copy -cmd.group.copy.multiple=Copy more than once -cmd.group.delete=Delete -cmd.group.edit=Edit -cmd.group.message=E-mail to members -cmd.group.run=Start -cmd.list.members.with.areas=Participants in learning areas -cmd.list.members.with.groups=Participants in groups -cmd.owners.message=E-mail to owners -cmd.participants.message=E-mail to participants -cmd.user.message=E-mail to users -context.removed=This group management is currently separated from its course. Please restart group management. -contextedit.owners.info=The following list shows the administrators of this group management. Contact one of these persons to become administrator or to be able to use these groups in other courses. -contextedit.title=Administration of group management -error.area.name.exists=The name of this learning area is already used in this group management, please select another one. -group.delete=Do you really want to delete the group <b>{0}</b> along with all its relations? -group.delete.in.use=This group is used by <b>`{1}`</b>. These entries can also be deleted. Do you really want to delete the group <b>{0}</b> along with all its links? -group.message=E-mail to group <i>{0}</i> -group.message.to=Tutors and participants -grouplist.areafilter.nofilter=Show all groups -grouplist.areafilter.title=Learning area filter -grouplist.no.groups=No groups found. Please create a group first by using the menu on the right. -grouplist.table.delete=Delete -grouplist.table.desc=Description -grouplist.table.edit=Edit -grouplist.table.name=Name -grouplist.title=Group list -info.group.deleted=This group has been deleted -menu.allareas=All learning areas -menu.allareas.alt=List all learning areas -menu.allgroups=All groups -menu.allgroups.alt=List all groups -menu.allusers=All members -menu.allusers.alt=List all members from all groups -menu.editcontext=Administration -menu.editcontext.alt=Assign this group administration to other courses or appoint other persons as administrators of this group management. -newarea.title=Create a new learning area -overview.numb.areas=Number of learning areas -overview.numb.groups=Number of groups -overview.numb.owners=Number of tutors -overview.numb.participants=Number of participants -overview.numb.total=Number of entire group members -overview.otherResources=Attention\: other courses -overview.otherResources.info=These groups are also used in other courses\! Modifications of these groups automatically apply in the following courses\: -overview.overview=Overview -owners.message=E-mail to all owners -owners.message.to=All owners -participants.message=E-mail to all participants -participants.message.to=All participants -rightgroup.message.to=Members of right group -tools.title.area=Actions learning area -tools.title.group=Actions group -tools.title.groupmanagement=Group management -tools.title.listmembers=Create lists -tools.title.listmembers.warning.noAreas=It is not possible to generate any lists since there are no learning areas in this course. -tools.title.listmembers.warning.noGroups=It is not possible to generate any lists since there are no groups in this course. -tools.title.rightmanagement=Rights management -tools.title.user=Actions user -tools.title.userlist=Contact -user.message=E-mail to user <i>{0} {1}</i> -userdetails.ownergroups.noGroups=This user has no group -userdetails.ownergroups.title=Group owners -userdetails.participantgroups.noGroups=This user does not participate in any group. -userdetails.participantgroups.title=Participants in groups -userdetails.remove=Remove -userdetails.title=User details -userdetails.user.title=User profile -userlist.owners.noOwners=None of these groups contains owners -userlist.owners.title=Owners -userlist.participants.noParticipants=None of these groups contains participants -userlist.participants.title=Participants -userlist.title=List of all members diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_es.properties deleted file mode 100644 index e29e4f57d40..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_es.properties +++ /dev/null @@ -1,86 +0,0 @@ -#Mon Mar 09 04:37:15 CET 2009 -area.delete=\u00BFDeseas realmente eliminar el \u00E1rea de aprendizaje <b>{0}</b>? Los grupos no se eliminar\u00E1n. -arealist.no.areas=No se han encontrado \u00E1reas de aprendizaje. Por favor crea un \u00E1rea de aprendizaje con el men\u00FA de la derecha. -arealist.table.delete=Eliminar -arealist.table.desc=Descripci\u00F3n -arealist.table.edit=Editar -arealist.table.name=Nombre -arealist.title=\u00C1rea de aprendizaje dentro del curso -bgmanagement.disposed.command.close=Cerrar Gesti\u00F3n de grupo -bgmanagement.disposed.title=Gesti\u00F3n de grupo invalidada. -cmd.area.create=Nueva \u00E1rea de aprendizaje -cmd.area.delete=Eliminar -cmd.area.edit=Editar -cmd.back=Contexto de grupo diferente -cmd.close=Cerrar -cmd.group.copy=Copiar -cmd.group.copy.multiple=Copiar m\u00E1s de una vez -cmd.group.delete=Eliminar -cmd.group.edit=Editar -cmd.group.message=E-mail a los miembros -cmd.group.run=Iniciar -cmd.list.members.with.areas=Participantes con \u00E1reas -cmd.list.members.with.groups=Participantes con grupos -cmd.owners.message=E-mail a los propietarios -cmd.participants.message=E-mail a los participantes -cmd.user.message=E-mail a los usuarios -context.removed=Este administrador de grupo est\u00E1 actualmente separado de este curso. Por favor reinicia el administrador de grupo. -contextedit.owners.info=La lista siguiente muestra a los administradores de este administrador de grupo. Contacta con una de estas personas para poder utilizar estos grupos en otros cursos. -contextedit.title=Administraci\u00F3n de la direcci\u00F3n del grupo -error.area.name.exists=El nombre de esta \u00E1rea de aprendizaje ya est\u00E1 en uso en esta administraci\u00F3n de grupo, por favor selecciona otro. -group.delete=\u00BFDeseas eliminar realmente el grupo <b>{0}</b> y todas sus relaciones? -group.message=E-mail al grupo <i>{0}</i> -group.message.to=Tutores y participantes -grouplist.areafilter.nofilter=Mostar todos los grupos -grouplist.areafilter.title=Filtro de \u00E1rea de aprendizaje -grouplist.no.groups=No se han encontrado grupos. Por favor crea primero un grupo con el men\u00FA de la derecha. -grouplist.table.delete=Eliminar -grouplist.table.desc=Descripci\u00F3n -grouplist.table.edit=Editar -grouplist.table.name=Nombre -grouplist.title=Lista de grupos -info.group.deleted=Este grupo ha sido eliminado -menu.allareas=Todas las \u00E1reas de aprendizaje -menu.allareas.alt=Listar todas las \u00E1reas de aprendizaje -menu.allgroups=Todos los grupos -menu.allgroups.alt=Listar todos los grupos -menu.allusers=Todos los miembros -menu.allusers.alt=Listar todos los miembros de todos los grupos -menu.editcontext=Administraci\u00F3n -menu.editcontext.alt=Asignar esta administraci\u00F3n de grupo a otros cursos o designar a otras personas como administradores de esta administraci\u00F3n de grupo. -newarea.title=Crear una nueva \u00E1rea de aprendizaje -overview.numb.areas=N\u00FAmero de \u00E1reas de aprendizaje -overview.numb.groups=N\u00FAmero de grupos -overview.numb.owners=N\u00FAmero de tutores -overview.numb.participants=N\u00FAmero de participantes -overview.numb.total=N\u00FAmero total de miembros del grupo -overview.otherResources=Atenci\u00F3n\: otros cursos -overview.otherResources.info=Estos grupos se utilizan tambi\u00E9n en otros cursos\! Las modificaciones de estos grupos se aplican autom\u00E1ticamente tambi\u00E9n en los cursos siguientes\: -overview.overview=Vista r\u00E1pida -owners.message=E-mail a todos los propietarios -owners.message.to=Todos los propietarios -participants.message=E-mail a todos los participantes -participants.message.to=Todos los particpantes -rightgroup.message.to=Miembros del grupo de permisos -tools.title.area=Actividades del area de aprendizaje -tools.title.group=Actividades de grupo -tools.title.groupmanagement=Administraci\u00F3n de grupo -tools.title.listmembers=Crear listos -tools.title.listmembers.warning.noAreas=Crear listas no posible porque faltan \u00E1reas de aprendizaje en este curso. -tools.title.listmembers.warning.noGroups=Crear listas no posible faltan grupos en este curso. -tools.title.rightmanagement=Administr. de permisos -tools.title.user=Actividades de usuario -tools.title.userlist=Contactar -user.message=E-mail a usuarios <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Este usuario no posee grupo -userdetails.ownergroups.title=Propietarios de grupo -userdetails.participantgroups.noGroups=Este usuario no participa en ning\u00FAn grupo. -userdetails.participantgroups.title=Participantes de los grupos -userdetails.remove=Borrar -userdetails.title=Detalles de usuario -userdetails.user.title=Perfil de usuario -userlist.owners.noOwners=Ninguno de estos grupos tiene propietario(s) -userlist.owners.title=Propietarios -userlist.participants.noParticipants=Ninguno de estos grupos tiene participantes -userlist.participants.title=Participantes -userlist.title=Listar todos los usuarios diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_fa.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_fa.properties deleted file mode 100644 index 925e386eeb3..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_fa.properties +++ /dev/null @@ -1,78 +0,0 @@ -#Mon Mar 02 09:54:13 CET 2009 -area.delete=Do you really want to delete the learning area <b>{0}</b>? Groups will not be deleted. -arealist.no.areas=No learning areas found. Please create a learning area first using the menu on the right. -arealist.table.delete=Delete -arealist.table.desc=Description -arealist.table.edit=Edit -arealist.table.name=Name -arealist.title=Learning area within course -cmd.area.create=New learning area -cmd.area.delete=Delete -cmd.area.edit=Edit -cmd.back=Different group context -cmd.close=Close -cmd.group.copy=Copy -cmd.group.copy.multiple=Copy more than once -cmd.group.delete=Delete -cmd.group.edit=Edit -cmd.group.message=E-mail to members -cmd.group.run=Start -cmd.owners.message=E-mail to owners -cmd.participants.message=E-mail to participants -cmd.user.message=E-mail to users -context.removed=This group management is currently separated from this course. Please restart the group management. -contextedit.owners.info=The following list shows the administrators of this group management. Contact one of these persons to become administrator or to be able to use these groups in other courses. -contextedit.title=Administration of group management -error.area.name.exists=The name of this learning area is already used in this group management, please select another. -group.delete=Do you really want to delete the group <b>{0}</b> with all its relations? -group.message=E-mail to group <i>{0}</i> -group.message.to=Coaches and participants -grouplist.areafilter.nofilter=Show all groups -grouplist.areafilter.title=Learning area filter -grouplist.no.groups=No groups found. Please create a group first using the menu on the right. -grouplist.table.delete=Delete -grouplist.table.desc=Description -grouplist.table.edit=Edit -grouplist.table.name=Name -grouplist.title=Group list -menu.allareas=All learning areas -menu.allareas.alt=List all learning areas -menu.allgroups=All groups -menu.allgroups.alt=List all groups -menu.allusers=All members -menu.allusers.alt=List all members from all groups -menu.editcontext=Administration -menu.editcontext.alt=Assign this group administration to other courses or appoint other persons as administrators of this group management. -newarea.title=Create new learning area -overview.numb.areas=Number of learning areas -overview.numb.groups=Number of groups -overview.numb.owners=Number of tutors -overview.numb.participants=Number of participants -overview.numb.total=Number of total group members -overview.otherResources=Attention\: other courses -overview.otherResources.info=These groups are also used in other courses\! Modifications of these groups automatically apply in the following courses\: -overview.overview=Overview -owners.message=E-mail to all owners -owners.message.to=All owners -participants.message=E-mail to all participants -participants.message.to=All participants -rightgroup.message.to=Members of right group -tools.title.area=Actions learning area -tools.title.group=Actions group -tools.title.groupmanagement=Group management -tools.title.rightmanagement=Rights management -tools.title.user=Actions user -tools.title.userlist=Contact -user.message=E-mail to user <i>{0} {1}</i> -userdetails.ownergroups.noGroups=This user has no group -userdetails.ownergroups.title=Group owners -userdetails.participantgroups.noGroups=This user does not participate in any group. -userdetails.participantgroups.title=Participant in groups -userdetails.remove=Remove -userdetails.title=User details -userdetails.user.title=User profile -userlist.owners.noOwners=None of these groups contain owners -userlist.owners.title=Owners -userlist.participants.noParticipants=None of these groups contain participants -userlist.participants.title=Participants -userlist.title=List of all users diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_fr.properties deleted file mode 100644 index 5b7ace4008d..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_fr.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Tue Dec 21 13:29:36 CET 2010 -area.delete=Voulez-vous vraiment supprimer le domaine d'\u00E9tude <b>{0}</b>? Aucun groupe n'est effac\u00E9 pendant cette op\u00E9ration. -arealist.no.areas=Pas de domaine d'\u00E9tude trouv\u00E9. Cr\u00E9ez SVP d'abord un domaine d'\u00E9tude \u00E0 l'aide du menu \u00E0 droite. -arealist.table.delete=Effacer -arealist.table.desc=Description -arealist.table.edit=Editer -arealist.table.name=Nom -arealist.title=Domaines d'\u00E9tude dans le cours -bgmanagement.disposed.command.close=Fermer la gestion des groupes -bgmanagement.disposed.title=La gestion des groupes est devenu invalide. -cmd.area.create=Nouveau domaine d'\u00E9tude -cmd.area.delete=Effacer -cmd.area.edit=Editer -cmd.back=Autre contexte de groupes -cmd.close=Fermer -cmd.group.copy=Copier -cmd.group.copy.multiple=Copier plusieurs fois -cmd.group.delete=Effacer -cmd.group.edit=Editer -cmd.group.message=E-mail aux membres -cmd.group.run=Demarrer -cmd.list.members.with.areas=Membre dans domaine d'\u00E9tude -cmd.list.members.with.groups=Membres dans groupe -cmd.owners.message=E-mail aux propri\u00E9taires -cmd.participants.message=E-mail aux participants -cmd.user.message=E-mail aux utilisateurs -context.removed=Cette gestion des groupes est s\u00E9par\u00E9e de ce cours en ce moment. Red\u00E9marrez le management des groupes SVP. -contextedit.owners.info=La liste suivante montre les administrateurs de cette gestion de groupe. Contactez une de ces personnes pour devenir administrateur et pouvoir ainsi utiliser ces groupes aussi dans un autre cours. -contextedit.title=Administration de la gestion des groupes -error.area.name.exists=Ce nom de domaine d'\u00E9tude est d\u00E9j\u00E0 utilis\u00E9 dans cette gestion de groupe. Choisissez un autre nom SVP. -group.delete=Voulez-vous vraiment supprimer le groupe <b>{0}</b> avec toutes les connexions? -group.delete.in.use=Ce groupe est utilis\u00E9 de <b>`{1}`</b>. Ces entr\u00E9es seront \u00E9galement effac\u00E9es. Voulez-vous vraiment effacer le groupe <b>{0}</b> avec tous les liens? -group.message=E-mail au groupe <i>{0}</i> -group.message.to=Tuteurs et participants -grouplist.areafilter.nofilter=Afficher tout les groupes -grouplist.areafilter.title=Filtre selon domaine d'\u00E9tude -grouplist.no.groups=Pas de groupes trouv\u00E9s. Cr\u00E9ez SVP d'abord un groupe \u00E0 l'aide du menu \u00E0 droite. -grouplist.table.delete=Supprimer -grouplist.table.desc=Description -grouplist.table.edit=Editer -grouplist.table.name=Nom -grouplist.title=Liste des groupes -info.group.deleted=Le groupe a \u00E9t\u00E9 supprim\u00E9 -menu.allareas=Tous les domaines d'\u00E9tude -menu.allareas.alt=Lister tous les domaines d'\u00E9tude -menu.allgroups=Tous les groupes -menu.allgroups.alt=Lister tous les groupes -menu.allusers=Tous les membres -menu.allusers.alt=Lister les membres de tous les groupes -menu.editcontext=Administration -menu.editcontext.alt=Affectez cette gestion de groupe \u00E0 un autre cours, ou nommez d'autres personnes comme administrateurs de cette gestion de groupe. -newarea.title=Cr\u00E9er un nouveau domaine d'\u00E9tude -overview.numb.areas=Nombre de domaines d'\u00E9tude -overview.numb.groups=Nombre de groupes -overview.numb.owners=Nombre de tuteurs -overview.numb.participants=Nombre de participants -overview.numb.total=Nombre total de membres -overview.otherResources=Attention\: autres cours -overview.otherResources.info=Ces groupes sont utilis\u00E9s aussi dans d'autres cours\! Des changements chez ces groupes s'appliquent automatiquement aussi aux cours suivants\: -overview.overview=Aper\u00E7u -owners.message=E-mail \u00E0 tous les propri\u00E9taires -owners.message.to=Tous les propri\u00E9taires -participants.message=E-mail \u00E0 tous les participants -participants.message.to=Tous les participants -rightgroup.message.to=Membres du groupe de droits -tools.title.area=Actions domaine d'\u00E9tude -tools.title.group=Actions groupe -tools.title.groupmanagement=Gestion des groupes -tools.title.listmembers=Cr\u00E9er listes -tools.title.listmembers.warning.noAreas=Attention\: l'archivage ne peut pas \u00EAtre effectu\u00E9 pour cause de domaines d'\u00E9tude manquants. -tools.title.listmembers.warning.noGroups=Attention\: l'archivage ne peut pas \u00EAtre effectu\u00E9 \u00E0 cause de groupes manquants. -tools.title.rightmanagement=Gestion des droits -tools.title.user=Actions utilisateur -tools.title.userlist=Contacter -user.message=E-mail \u00E0 l'utilisateur <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Cet utilisateur n'est propri\u00E9taire d'aucun groupe. -userdetails.ownergroups.title=Propri\u00E9taire de groupes -userdetails.participantgroups.noGroups=Cet utilisateur ne participe \u00E0 aucun groupe. -userdetails.participantgroups.title=Participant aux groupes -userdetails.remove=Enlever -userdetails.title=D\u00E9tails de l'utilisateur -userdetails.user.title=Profil de l'utilisateur -userlist.owners.noOwners=A aucun groupe ne sont affect\u00E9s des propri\u00E9taires -userlist.owners.title=Propri\u00E9taires -userlist.participants.noParticipants=A aucun groupe ne sont affect\u00E9s des participants. -userlist.participants.title=Participants -userlist.title=Liste de tous les membres diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_it.properties deleted file mode 100644 index 364c4285eb9..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_it.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Tue Dec 21 20:51:26 CET 2010 -area.delete=Vuole veramente eliminare l'area di studio <b>{0}</b>?. Non ne consegue l'eliminazione di alcun gruppo. -arealist.no.areas=Non \u00E8 stata trovata alcuna area di studio. Crei prima un'area di studio con l'ausilio del menu sul lato desto. -arealist.table.delete=Eliminare -arealist.table.desc=Descrizione -arealist.table.edit=Editare -arealist.table.name=Nome -arealist.title=Aree di studio nel corso -bgmanagement.disposed.command.close=Chiudere la gestione dei gruppi -bgmanagement.disposed.title=La gestione dei gruppi \u00E8 stata invalidata. -cmd.area.create=Nuova area di studio -cmd.area.delete=Eliminare -cmd.area.edit=Editare -cmd.back=Altro contesto di gruppo -cmd.close=Chiudere -cmd.group.copy=Copia -cmd.group.copy.multiple=Copiare pi\u00F9 volte -cmd.group.delete=Eliminare -cmd.group.edit=Editare -cmd.group.message=E-mail ai membri -cmd.group.run=Avviare -cmd.list.members.with.areas=Partecipanti in aree di studio -cmd.list.members.with.groups=Partecipanti in gruppi -cmd.owners.message=E-mail ai proprietari -cmd.participants.message=E-mail ai partecipanti -cmd.user.message=E-mail agli utenti -context.removed=Questa gestione dei gruppi \u00E8 stata separata in questo momento da questo corso. Riavvii la gestione dei gruppi, p.f. -contextedit.owners.info=La lista seguente mostra gli amministratori di questa gestione dei gruppi. Contatti una di queste persone per diventare amministratore e poter utilizzare questi gruppi anche in un altro corso. -contextedit.title=Amministrazione della gestione dei gruppi -error.area.name.exists=Questo nome per l'area di studio \u00E8 gi\u00E0 in uso in questa gestione dei gruppi. Ne scelga un altro, p.f. -group.delete=Vuole veramente eliminare il gruppo <b>{0}</b> con tutti i collegamenti? -group.delete.in.use=Questo gruppo viene utilizzato da <b>`{1}`</b>. Anche queste entrate verranno eliminate. Desidera veramente eliminare il gruppo <b>{0}</b> con tutti i collegamenti? -group.message=E-mail al gruppo <i>{0}</i> -group.message.to=Tutori e partecipanti -grouplist.areafilter.nofilter=Visualizza tutti i gruppi -grouplist.areafilter.title=Filtro per area di studio -grouplist.no.groups=Non \u00E8 stato trovato alcun gruppo. Crei prima un gruppo con l'ausilio del menu sul lato destro. -grouplist.table.delete=Eliminare -grouplist.table.desc=Descrizione -grouplist.table.edit=Editare -grouplist.table.name=Nome -grouplist.title=Lista dei gruppi -info.group.deleted=Il gruppo \u00E8 stato eliminato -menu.allareas=Tutte le aree di studio -menu.allareas.alt=Elenco di tutte le aree di studio -menu.allgroups=Tutti i gruppi -menu.allgroups.alt=Elenco di tutti i gruppi -menu.allusers=Tutti i partecipanti -menu.allusers.alt=Elenco di tutti i partecipanti -menu.editcontext=Amministrazione -menu.editcontext.alt=Attribuisca questa amministrazione dei gruppi ad altri corsi o nomini altri amministratori di questa gestione dei gruppi. -newarea.title=Creazione di una nuova area di studio -overview.numb.areas=Numero aree di studio -overview.numb.groups=Numero gruppi -overview.numb.owners=Numero tutori -overview.numb.participants=Numero partecipanti -overview.numb.total=Numero totale partecipanti -overview.otherResources=Attenzione\: altri corsi -overview.otherResources.info=Questi gruppi vengono utilizzati anche in altri corsi\! Qualsiasi modifica applicata a questi gruppi vale anche per corsi seguenti\: -overview.overview=Visione d'insieme -owners.message=E-mail a tutti i proprietari -owners.message.to=Tutti i proprietari -participants.message=E-mail a tutti i partecipanti -participants.message.to=Tutti i partecipanti -rightgroup.message.to=Membri del gruppo con diritti -tools.title.area=Azioni area di studio -tools.title.group=Azioni gruppo -tools.title.groupmanagement=Gestione dei gruppi -tools.title.listmembers=Creare liste -tools.title.listmembers.warning.noAreas=Non \u00E8 possibile creare alcuna lista, in questo corso non ci sono aree di studio. -tools.title.listmembers.warning.noGroups=Non \u00E8 possibile creare alcuna lista, in questo corso non ci sono gruppi. -tools.title.rightmanagement=Gestione dei diritti -tools.title.user=Azioni utente -tools.title.userlist=Contatta -user.message=E-mail all'utente <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Questo utente non possiede alcun gruppo. -userdetails.ownergroups.title=Proprietario di gruppi -userdetails.participantgroups.noGroups=Questo utente non partecipa ad alcun gruppo. -userdetails.participantgroups.title=Partecipante a gruppi -userdetails.remove=Rimuovere -userdetails.title=Dettagli sull'utente -userdetails.user.title=Profilo dell'utente -userlist.owners.noOwners=A nessun gruppo sono stati assegnati dei proprietari. -userlist.owners.title=Proprietari -userlist.participants.noParticipants=A nessun gruppo sono stati assegnati dei partecipanti. -userlist.participants.title=Partecipanti -userlist.title=Lista di tutti i membri diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_jp.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_jp.properties deleted file mode 100644 index 2d4c15b38ac..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_jp.properties +++ /dev/null @@ -1,25 +0,0 @@ -#Fri Oct 16 01:30:39 CEST 2009 -arealist.title=\u30B3\u30FC\u30B9\u5185\u306E\u5B66\u7FD2\u30A8\u30EA\u30A2 -bgmanagement.disposed.command.close=\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406\u3092\u9589\u3058\u308B -cmd.area.create=\u65B0\u3057\u3044\u5B66\u7FD2\u30A8\u30EA\u30A2 -cmd.close=\u9589\u3058\u308B -cmd.list.members.with.areas=\u5B66\u7FD2\u30A8\u30EA\u30A2\u306E\u53C2\u52A0\u8005 -cmd.list.members.with.groups=\u30B0\u30EB\u30FC\u30D7\u306E\u53C2\u52A0\u8005 -menu.allareas=\u3059\u3079\u3066\u306E\u5B66\u7FD2\u30A8\u30EA\u30A2 -menu.allusers=\u3059\u3079\u3066\u306E\u30E1\u30F3\u30D0\u30FC -menu.editcontext=\u7BA1\u7406 -overview.numb.areas=\u5B66\u7FD2\u30A8\u30EA\u30A2\u6570 -overview.numb.groups=\u30B0\u30EB\u30FC\u30D7\u6570 -overview.numb.owners=\u30C1\u30E5\u30FC\u30BF\u30FC\u6570 -overview.numb.participants=\u53C2\u52A0\u8005\u6570 -overview.numb.total=\u7DCF\u30B0\u30EB\u30FC\u30D7\u30E1\u30F3\u30D0\u30FC\u6570 -overview.overview=\u30AA\u30FC\u30D0\u30FC\u30D3\u30E5\u30FC -owners.message=\u3059\u3079\u3066\u306E\u30AA\u30FC\u30CA\u30FC\u306B\u30E1\u30FC\u30EB\u9001\u4FE1\u3059\u308B -owners.message.to=\u3059\u3079\u3066\u306E\u30AA\u30FC\u30CA\u30FC -participants.message=\u3059\u3079\u3066\u306E\u53C2\u52A0\u8005\u306B\u30E1\u30FC\u30EB\u9001\u4FE1\u3059\u308B -participants.message.to=\u3059\u3079\u3066\u306E\u53C2\u52A0\u8005 -rightgroup.message.to=\u6A29\u5229\u30B0\u30EB\u30FC\u30D7\u6570 -tools.title.groupmanagement=\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406 -tools.title.listmembers=\u30EA\u30B9\u30C8\u3092\u4F5C\u6210\u3059\u308B -tools.title.rightmanagement=\u6A29\u9650\u7BA1\u7406 -tools.title.userlist=\u30B3\u30F3\u30BF\u30AF\u30C8 diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_lt.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_lt.properties deleted file mode 100644 index 9e3c6dfe267..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_lt.properties +++ /dev/null @@ -1,78 +0,0 @@ -#Mon Mar 02 09:54:02 CET 2009 -area.delete=Ar j\u016Bs tikrai norite i\u0161trinti mokymosi viet\u0105 <b>{0}</b>? Grup\u0117s nebus i\u0161trintos. -arealist.no.areas=Nerasta mokymosi viet\u0173. Pirmiausia pra\u0161ome susikurti mokymosi viet\u0105 naudojantis de\u0161in\u0117je esan\u010Diu meniu. -arealist.table.delete=Pa\u0161alinti -arealist.table.desc=Apra\u0161ymas -arealist.table.edit=Redaguoti -arealist.table.name=Pavadinimas -arealist.title=Mokymosi vieta kursuose -cmd.area.create=Nauja mokymosi vieta -cmd.area.delete=Pa\u0161alinti -cmd.area.edit=Redaguoti -cmd.back=Skirtingas grup\u0117s kontekstas -cmd.close=U\u017Edaryti -cmd.group.copy=Kopijuoti -cmd.group.copy.multiple=Daugiau nei vien\u0105 kart\u0105 -cmd.group.delete=Pa\u0161alinti -cmd.group.edit=Redaguoti -cmd.group.message=Nusi\u0173sti el. lai\u0161kas nariams -cmd.group.run=Prad\u0117ti -cmd.owners.message=Nusi\u0173sti el. lai\u0161kas savininkams -cmd.participants.message=Nusi\u0173sti el. lai\u0161kas dalyviams -cmd.user.message=Nusi\u0173sti el. lai\u0161kas naudotojams -context.removed=\u0160ios grup\u0117s valdymas dabar yra atskirtas nuo kurso. Pra\u0161ome perleisti grup\u0117s valdym\u0105. -contextedit.owners.info=\u0160iame s\u0105ra\u0161e pateikti \u0161ios grup\u0117s valdymo administratoriai. Susisiekite su vienu i\u0161 \u0161i\u0173 asmen\u0173, jeigu norite tapti administratoriumi arba jei norite naudoti \u0161ias grupes kituose kursuose. -contextedit.title=Grup\u0117s valdymo administravimas -error.area.name.exists=\u0160ios mokymosi vietos pavadinimas jau yra naudojamas grup\u0117s valdyme, pra\u0161ome pasirinkti kit\u0105. -group.delete=Ar j\u016Bs tikrai norite pa\u0161alinti grup\u0119 <b>{0}</b> su visais jos ry\u0161iais? -group.message=Nusi\u0173sti el. lai\u0161k\u0105 grupei <i>{0}</i> -group.message.to=Treneriai ir dalyviai -grouplist.areafilter.nofilter=Rodyti visas grupes -grouplist.areafilter.title=Mokymosi vietos filtras -grouplist.no.groups=Grupi\u0173 nerasta. Pra\u0161ome pirmiausia sukurti grup\u0119 naudodami meniu de\u0161in\u0117je. -grouplist.table.delete=Pa\u0161alinti -grouplist.table.desc=Apra\u0161ymas -grouplist.table.edit=Redaguoti -grouplist.table.name=Pavadinimas -grouplist.title=Grup\u0117s s\u0105ra\u0161as -menu.allareas=Visos mokymosi grup\u0117s -menu.allareas.alt=Mokymosi plot\u0173 s\u0105ra\u0161as -menu.allgroups=Visos grup\u0117s -menu.allgroups.alt=Vis\u0173 grupi\u0173 s\u0105ra\u0161as -menu.allusers=Visi nariai -menu.allusers.alt=Vis\u0173 grupi\u0173 vis\u0173 nari\u0173 s\u0105ra\u0161as -menu.editcontext=Administravimas -menu.editcontext.alt=Paskirti \u0161ios grup\u0117s administravim\u0105 kitiems kursams arba nurodyti kitus asmenis kaip administratorius \u0161ios grup\u0117s valdymui. -newarea.title=Sukurti mokymosi viet\u0105 -overview.numb.areas=Mokymosi viet\u0173 skai\u010Dius -overview.numb.groups=Grupi\u0173 skai\u010Dius -overview.numb.owners=Repetitori\u0173 skai\u010Dius -overview.numb.participants=Dalyvi\u0173 skai\u010Dius -overview.numb.total=Vis\u0173 grup\u0117s nari\u0173 skai\u010Dius -overview.otherResources=D\u0117mesio\: kiti kursai -overview.otherResources.info=\u0160ios grup\u0117s taip pat naudojamos kituose kursuose\! Visos modifikacijos \u0161ioms grup\u0117s automati\u0161kai \u012Fvykdomos ir pateiktuose kursuose\: -overview.overview=Per\u017Ei\u016Bra -owners.message=Nusi\u0173sti el. lai\u0161k\u0105 visiems savininkams -owners.message.to=Visi savininkai -participants.message=Nusi\u0173sti el. lai\u0161k\u0105 visiems dalyviams -participants.message.to=Visi dalyviai -rightgroup.message.to=Teisi\u0173 grup\u0117s nariai -tools.title.area=Veiksm\u0173 mokymo vieta -tools.title.group=Veiksm\u0173 grup\u0117 -tools.title.groupmanagement=Grup\u0117s valdymas -tools.title.rightmanagement=Teisi\u0173 valdymas -tools.title.user=Veiksm\u0173 naudotojas -tools.title.userlist=Susisiekti -user.message=Nusi\u0173sti el. lai\u0161k\u0105 naudotojui <i>{0} {1}</i> -userdetails.ownergroups.noGroups=\u0160is naudotojas neturi grup\u0117s -userdetails.ownergroups.title=Grup\u0117s savininkas -userdetails.participantgroups.noGroups=\u0160is naudotojas nedalyvauja jokioje grup\u0117je. -userdetails.participantgroups.title=Dalyviai grup\u0117se -userdetails.remove=Pa\u0161alinti -userdetails.title=I\u0161samiau apie naudotoj\u0105 -userdetails.user.title=Naudotojo profilis -userlist.owners.noOwners=Nei viena \u0161i\u0173 grupi\u0173 neturi \u0161eiminink\u0173 -userlist.owners.title=\u0160eimininkai -userlist.participants.noParticipants=Nei viena \u0161i\u0173 grupi\u0173 neturi dalyvi\u0173 -userlist.participants.title=Dalyviai -userlist.title=Vis\u0173 vartotoj\u0173 s\u0105ra\u0161as diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_nl_NL.properties deleted file mode 100644 index e4937cadd3e..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_nl_NL.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Thu Sep 08 16:42:45 CEST 2011 -area.delete=Weet u zeker dat u deze leerruimte wilt verwijderen <b>{0}</b>? Groepen zullen niet verwijderd worden. -arealist.no.areas=Geen leerruimtes gevonden. Gelieve eerst een leerruimte aan te maken door het menu aan uw rechterkant te gebruiken. -arealist.table.delete=Verwijderen -arealist.table.desc=Beschrijving -arealist.table.edit=Editeren -arealist.table.name=Naam -arealist.title=Leerruimte binnen cursus -bgmanagement.disposed.command.close=Sluit groepsmanagement -bgmanagement.disposed.title=Groepsmanagement ongeldig geworden. -cmd.area.create=Nieuwe leerruimte -cmd.area.delete=Verwijderen -cmd.area.edit=Editeren -cmd.back=Andere groepscontext -cmd.close=Sluiten -cmd.group.copy=Kopi\u00EBren -cmd.group.copy.multiple=Meer dan eens kopi\u00EBren -cmd.group.delete=Verwijderen -cmd.group.edit=Editeren -cmd.group.message=E-mail naar leden -cmd.group.run=Start -cmd.list.members.with.areas=Cursisten in leerruimtes -cmd.list.members.with.groups=Cursisten in groepen -cmd.owners.message=E-mail naar eigenaars -cmd.participants.message=E-mail naar cursisten -cmd.user.message=E-mail naar gebruikers -context.removed=Dit groepsmanagement is momenteel afgescheiden van zijn cursus. Gelieve groepsmanagement te herstarten. -contextedit.owners.info=De volgende lijst toont de adminiatrator van dit groepsmanagement. Contacteer \u00E9\u00E9n van deze personen on een administrator te worden of om de mogelijkheid te hebben om deze groepen in andere cursussen te gebruiken. -contextedit.title=Administratie van groepsmanagement -error.area.name.exists=De naam van deze leerruimte wordt al gebruikt in dit groepsmanagement, gelieve een andere te selecteren. -group.delete=Weet u zeker dat u de groep <b>{0}</b> samen met al zijn relaties wilt verwijderen? -group.delete.in.use=Deze groep wordt gebruikt door <b>`{1}`</b>. deze bijdragen kunnen ook verwijderd worden. Weet u zeker dat u de groep <b>{0}</b> met al zijn links wilt verwijderen? -group.message=E-mail aan groep <i>{0}</i> -group.message.to=Docenten en cursisten -grouplist.areafilter.nofilter=Toon alle groepen -grouplist.areafilter.title=Leerruimte filter -grouplist.no.groups=Geen groepen gevonden. Gelieve eerst een groep aan te maken door het menu aan de rechterkant te gebruiken. -grouplist.table.delete=Verwijderen -grouplist.table.desc=Beschrijving -grouplist.table.edit=Editeren -grouplist.table.name=Naam -grouplist.title=Groepslijst -info.group.deleted=Deze groep werd verwijderd. -menu.allareas=Alle leerruimtes -menu.allareas.alt=Alle leerruimtes lijsten -menu.allgroups=Alle groepen -menu.allgroups.alt=Lijst alle groepen -menu.allusers=Alle leden -menu.allusers.alt=Lijst alle leden van alle groepen -menu.editcontext=Administratie -menu.editcontext.alt=Wijs deze groepsadministratie toe aan andere cursussen of wijs een andere persoon aan als administrator van dit groepsmanagement. -newarea.title=Een nieuwe leerruimte aanmaken -overview.numb.areas=Aantal leerruimtes -overview.numb.groups=Aantal groepen -overview.numb.owners=Aantal docenten -overview.numb.participants=Aantal cursisten -overview.numb.total=Volledige aantal groepsleden -overview.otherResources=Opgelet\: andere cursussen -overview.otherResources.info=Deze groepen worden ook gebruikt in andere cursussen. Aanpassingen van deze groepen gelden automatisch in de volgende groepen\: -overview.overview=Overzicht -owners.message=E-mail aan alle eigenaars -owners.message.to=Alle eigenaars -participants.message=E-mail aan alle cursisten -participants.message.to=Alle deelnemers -rightgroup.message.to=Leden van rechtgroepen -tools.title.area=Acties leerruimtes -tools.title.group=Acties groep -tools.title.groupmanagement=Groepsmanagement -tools.title.listmembers=Lijst aanmaken -tools.title.listmembers.warning.noAreas=Het is niet mogelijk om lijsten te genereren sinds er geen leerruimtes zijn in deze cursus. -tools.title.listmembers.warning.noGroups=Het is niet mogelijk om lijsten te genereren sinds er geen groepen zijn in deze cursus. -tools.title.rightmanagement=Rechtenbeheer -tools.title.user=Acties gebruiker -tools.title.userlist=Contacteren -user.message=E-mail aan gebruiker <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Deze gebruiker heeft geen groep -userdetails.ownergroups.title=Groepeigenaars -userdetails.participantgroups.noGroups=Deze gebruiker neemt geen deel in aan groep. -userdetails.participantgroups.title=Cursisten in groepen -userdetails.remove=Verplaatsen -userdetails.title=Gebruiker details -userdetails.user.title=Gebruikersprofiel -userlist.owners.noOwners=Geen van deze groepen bevat eigenaars -userlist.owners.title=Eigenaars -userlist.participants.noParticipants=Geen van deze groepen bevat deelnemers -userlist.participants.title=Deelnemers -userlist.title=Lijst van alle leden diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pl.properties deleted file mode 100644 index 370a1b7acff..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pl.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Sat Mar 13 23:56:33 CET 2010 -area.delete=Czy na pewno chcesz usun\u0105\u0107 obszar edukacyjny <b>{0}</b>? Grupy nie zostan\u0105 usuni\u0119te. -arealist.no.areas=Nie znaleziono \u017Cadnych obszar\u00F3w edukacyjnych. Utw\u00F3rz najpierw obszar edukacyjny przy u\u017Cyciu menu po prawo. -arealist.table.delete=Usu\u0144 -arealist.table.desc=Opis -arealist.table.edit=Edytuj -arealist.table.name=Nazwa -arealist.title=Obszar edukacyjny kontekstu -bgmanagement.disposed.command.close=Zamknij zarz\u0105dzanie grup\u0105 -bgmanagement.disposed.title=Zarz\u0105dzanie grup\u0105 zosta\u0142o uniewa\u017Cnione. -cmd.area.create=Nowy obszar edukacyjny -cmd.area.delete=Usu\u0144 -cmd.area.edit=Edytuj -cmd.back=Inny kontekst grupy -cmd.close=Zamknij -cmd.group.copy=Kopiuj -cmd.group.copy.multiple=Kopiuj wielokrotnie -cmd.group.delete=Usu\u0144 -cmd.group.edit=Edytuj -cmd.group.message=E-mail do grupy -cmd.group.run=Uruchom -cmd.list.members.with.areas=Uczestnicy obszar\u00F3w -cmd.list.members.with.groups=Uczestnicy grup -cmd.owners.message=E-mail do w\u0142a\u015Bcicieli -cmd.participants.message=E-mail do uczestnik\u00F3w -cmd.user.message=E-mail do u\u017Cytkownik\u00F3w -context.removed=To zarz\u0105dzanie grup\u0105 jest obecnie odseparowane od tego kursu. Uruchom ponownie zarz\u0105dzanie grup\u0105. -contextedit.owners.info=Poni\u017Csza lista zawiera administrator\u00F3w tej grupy. Skontaktuj si\u0119 z jedn\u0105 z tych os\u00F3b, aby zosta\u0107 administratorem. -contextedit.title=Administracja zarz\u0105dzania grup\u0105 -error.area.name.exists=Nazwa tego obszaru edukacyjnego jest ju\u017C u\u017Cyta w tym zarz\u0105dzaniu grup\u0105, wybierz inn\u0105. -group.delete=Czy na pewno chcesz usun\u0105\u0107 grup\u0119 <b>{0}</b> z wszystkimi jej powi\u0105zaniami? -group.delete.in.use=Ta grupa jest u\u017Cywana przez <b>`{1}`</b>. Te wpisy tak\u017Ce mog\u0105 zosta\u0107 usuni\u0119te. Czy na pewno chcesz usun\u0105\u0107 grup\u0119 <b>{0}</b>, wraz ze wszystkimi jej po\u0142\u0105czeniami? -group.message=E-mail do grupy <i>{0}</i> -group.message.to=W\u0142a\u015Bciciele i uczestnicy -grouplist.areafilter.nofilter=Poka\u017C wszystkie grupy -grouplist.areafilter.title=Filtr obszaru edukacyjnego -grouplist.no.groups=Nie znaleziono \u017Cadnych grup. Utw\u00F3rz najpierw grup\u0119 przy u\u017Cyciu menu po prawo. -grouplist.table.delete=Usu\u0144 -grouplist.table.desc=Opis -grouplist.table.edit=Edycja -grouplist.table.name=Nazwa -grouplist.title=Lista grup -info.group.deleted=Grupa zosta\u0142a usuni\u0119ta -menu.allareas=Obszary edukacyjne -menu.allareas.alt=Poka\u017C wszystkie obszary edukacyjne -menu.allgroups=Wszystkie grupy -menu.allgroups.alt=Poka\u017C wszystkie grupy -menu.allusers=Cz\u0142onkowie -menu.allusers.alt=Poka\u017C wszystkich cz\u0142onk\u00F3w z wszystkich grup -menu.editcontext=Administracja -menu.editcontext.alt=Przypisz administracj\u0119 grupy do innych kurs\u00F3w lub mianuj inne osoby administratorami tego zarz\u0105dzania grup\u0105. -newarea.title=Utw\u00F3rz nowy obszar edukacyjny -overview.numb.areas=Liczba obszar\u00F3w edukacyjnych -overview.numb.groups=Liczba grup -overview.numb.owners=Liczba nauczycieli -overview.numb.participants=Liczba uczestnik\u00F3w -overview.numb.total=Liczba wszystkich cz\u0142onk\u00F3w grup -overview.otherResources=Uwaga\: inne kursy -overview.otherResources.info=Te grupy s\u0105 u\u017Cywane w innych kursach\! Modyfikacje tych grup automatycznie b\u0119d\u0105 zastosowane w nast\u0119puj\u0105cych kursach\: -overview.overview=Podsumowanie -owners.message=E-mail do wszystkich w\u0142a\u015Bcicieli -owners.message.to=Wszyscy w\u0142a\u015Bciciele -participants.message=E-mail do wszystkich uczestnik\u00F3w -participants.message.to=Wszyscy uczestnicy -rightgroup.message.to=Cz\u0142onkowie grupy uprawnie\u0144 -tools.title.area=Grupa edukacyjna akcji -tools.title.group=Grupa akcji -tools.title.groupmanagement=Zarz\u0105dzanie grup\u0105 -tools.title.listmembers=Utw\u00F3rz listy -tools.title.listmembers.warning.noAreas=Uwaga\! Archiwizacja jest niemo\u017Cliwa w zwi\u0105zku z brakiem obszar\u00F3w edukacyjnych -tools.title.listmembers.warning.noGroups=Uwaga\! Archiwizacja jest niemo\u017Cliwa w zwi\u0105zku z brakiem grup. -tools.title.rightmanagement=Zarz\u0105dzanie uprawnieniami -tools.title.user=U\u017Cytkownik akcji -tools.title.userlist=Kontakt -user.message=E-mail do u\u017Cytkownika <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Ten u\u017Cytkownik nie posiada grup -userdetails.ownergroups.title=W\u0142a\u015Bciciele grupy -userdetails.participantgroups.noGroups=Ten u\u017Cytkownik nie uczestniczy w \u017Cadnej grupie. -userdetails.participantgroups.title=Uczestnik w grupach -userdetails.remove=Usu\u0144 -userdetails.title=Szczeg\u00F3\u0142y u\u017Cytkownika -userdetails.user.title=Profil u\u017Cytkownika -userlist.owners.noOwners=\u017Badna z tych grup nie zawiera w\u0142a\u015Bcicieli -userlist.owners.title=W\u0142a\u015Bciciele -userlist.participants.noParticipants=\u017Badna z tych grup nie zawiera uczestnik\u00F3w -userlist.participants.title=Uczestnicy -userlist.title=Lista wszystkich u\u017Cytkownik\u00F3w diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pt_BR.properties deleted file mode 100644 index b7f36718d69..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pt_BR.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Tue Jun 08 14:32:13 CEST 2010 -area.delete=Voc\u00EA realmente quer apagar a \u00E1rea de ensino <b>{0}</b>? Os grupos n\u00E3o ser\u00E3o apagados. -arealist.no.areas=Nenhuma \u00E1rea de ensino encontrada. Favor primeiramente criar uma \u00E1rea de ensino usando o menu \u00E0 direita. -arealist.table.delete=Apagar -arealist.table.desc=Descri\u00E7\u00E3o -arealist.table.edit=Editar -arealist.table.name=Nome -arealist.title=\u00C1rea de ensino dentro do curso -bgmanagement.disposed.command.close=Fechar Administra\u00E7\u00E3o de grupo -bgmanagement.disposed.title=Administra\u00E7\u00E3o de grupo invalidada. -cmd.area.create=Nova \u00E1rea de ensino -cmd.area.delete=Apagar -cmd.area.edit=Editar -cmd.back=Contexto de grupo diferente -cmd.close=Fechar -cmd.group.copy=Copiar -cmd.group.copy.multiple=Copiar mais de uma vez -cmd.group.delete=Apagar -cmd.group.edit=Editar -cmd.group.message=E-mail aos membros -cmd.group.run=Entrar no grupo -cmd.list.members.with.areas=Participantes em \u00E1reas de ensino -cmd.list.members.with.groups=Participantes em grupos -cmd.owners.message=E-mail aos propriet\u00E1rios -cmd.participants.message=E-mail aos participantes -cmd.user.message=E-mail aos usu\u00E1rios -context.removed=Este grupo gestor est\u00E1 atualmente separado deste curso. Favor reiniciar a administra\u00E7\u00E3o de grupos. -contextedit.owners.info=A seguinte lista mostra os administradores deste grupo gestor. Contactar uma destas pessoas para se tornar administrador ou para poder usar estes grupos em outros cursos. -contextedit.title=Administar grupo gestor -error.area.name.exists=O nome desta \u00E1rea de ensino j\u00E1 \u00E9 usado neste grupo gestor, favor selecionar outro. -group.delete=Voc\u00EA realmente quer apagar o grupo <b>{0}</b> com todas suas rela\u00E7\u00F5es? -group.delete.in.use=Este grupo \u00E9 usado por <b>`{1}`</b>. Estas entradas tamb\u00E9m podem ser apagados. Voc\u00EA realmente deseja excluir o grupo <b>{0}</b> juntamente com todos os seus links? -group.message=E-mail ao grupo <i>{0}</i> -group.message.to=Instrutores e participantes -grouplist.areafilter.nofilter=Exibir todos grupos -grouplist.areafilter.title=Filtro de \u00E1rea de ensino -grouplist.no.groups=Nenhum grupo encontrado. Favor primeiramente criar um grupo usando o menu \u00E0 direita. -grouplist.table.delete=Apagar -grouplist.table.desc=Descri\u00E7\u00E3o -grouplist.table.edit=Editar -grouplist.table.name=Nome -grouplist.title=Lista de grupos -info.group.deleted=Esse grupo foi removido -menu.allareas=Todas \u00E1reas de ensino -menu.allareas.alt=Listar todas \u00E1reas de ensino -menu.allgroups=Todos grupos -menu.allgroups.alt=Listar todos grupos -menu.allusers=Todos membros -menu.allusers.alt=Listar todos membros de todos grupos -menu.editcontext=Administra\u00E7\u00E3o -menu.editcontext.alt=Atribuir este grupo gestor a outros cursos ou apontar outras pessoas como administradores deste grupo gestor. -newarea.title=Criar nova \u00E1rea de ensino -overview.numb.areas=N\u00FAmero de \u00E1reas de ensino -overview.numb.groups=N\u00FAmero de grupos -overview.numb.owners=N\u00FAmero de tutores -overview.numb.participants=N\u00FAmero de participantes -overview.numb.total=N\u00FAmero total de membros de grupos -overview.otherResources=Aten\u00E7\u00E3o\: outros cursos -overview.otherResources.info=Estes grupos s\u00E3o usados tamb\u00E9m em outros cursos\! As modifica\u00E7\u00F5es destes grupos aplicam-se automaticamente nos seguintes cursos\: -overview.overview=Vis\u00E3o geral -owners.message=E-mail a todos propriet\u00E1rios -owners.message.to=Todos propriet\u00E1rios -participants.message=E-mail a todos participantes -participants.message.to=Todos participantes -rightgroup.message.to=Membros do grupo de direitos -tools.title.area=A\u00E7\u00F5es de \u00E1rea de ensino -tools.title.group=A\u00E7\u00F5es de grupo -tools.title.groupmanagement=Administrar grupos -tools.title.listmembers=Criar listas -tools.title.listmembers.warning.noAreas=Aten\u00E7\u00E3o\: arquivamento n\u00E3o foi poss\u00EDvel por falta de \u00E1reas de ensino -tools.title.listmembers.warning.noGroups=Aten\u00E7\u00E3o\: arquivamento n\u00E3o foi poss\u00EDvel por falta de grupos -tools.title.rightmanagement=Administrar direitos -tools.title.user=A\u00E7\u00F5es de usu\u00E1rio -tools.title.userlist=Contato -user.message=E-mail ao usu\u00E1rio <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Este usu\u00E1rio n\u00E3o tem grupo -userdetails.ownergroups.title=Propriet\u00E1rios do grupo -userdetails.participantgroups.noGroups=Este usu\u00E1rio n\u00E3o participa de nenhum grupo. -userdetails.participantgroups.title=Participante em grupos -userdetails.remove=Remover -userdetails.title=Detalhes do usu\u00E1rio -userdetails.user.title=Perfil do usu\u00E1rio -userlist.owners.noOwners=Nenhum destes grupos cont\u00E9m propriet\u00E1rios -userlist.owners.title=Propriet\u00E1rios -userlist.participants.noParticipants=Nenhum destes grupos cont\u00E9m participantes -userlist.participants.title=Participantes -userlist.title=Lista de todos os usu\u00E1rios diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pt_PT.properties deleted file mode 100644 index 487aabd1b23..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_pt_PT.properties +++ /dev/null @@ -1,83 +0,0 @@ -#Mon Mar 02 09:54:05 CET 2009 -area.delete=Voc\u00EA realmente quer apagar a \u00E1rea de ensino <b>{0}</b>? Os grupos n\u00E3o ser\u00E3o apagados. -arealist.no.areas=Nenhuma \u00E1rea de ensino encontrada. Favor primeiramente criar uma \u00E1rea de ensino usando o menu \u00E0 direita. -arealist.table.delete=Apagar -arealist.table.desc=Descri\u00E7\u00E3o -arealist.table.edit=Editar -arealist.table.name=Nome -arealist.title=\u00C1rea de ensino dentro do curso -cmd.area.create=Nova \u00E1rea de ensino -cmd.area.delete=Apagar -cmd.area.edit=Editar -cmd.back=Contexto de grupo diferente -cmd.close=Fechar -cmd.group.copy=Copiar -cmd.group.copy.multiple=Copiar mais de uma vez -cmd.group.delete=Apagar -cmd.group.edit=Editar -cmd.group.message=E-mail aos membros -cmd.group.run=Entrar no grupo -cmd.list.members.with.areas=Participantes em \u00E1reas de ensino -cmd.list.members.with.groups=Participantes em grupos -cmd.owners.message=E-mail aos propriet\u00E1rios -cmd.participants.message=E-mail aos participantes -cmd.user.message=E-mail aos usu\u00E1rios -context.removed=Este grupo gestor est\u00E1 atualmente separado deste curso. Favor reiniciar a administra\u00E7\u00E3o de grupos. -contextedit.owners.info=A seguinte lista mostra os administradores deste grupo gestor. Contactar uma destas pessoas para se tornar administrador ou para poder usar estes grupos em outros cursos. -contextedit.title=Administar grupo gestor -error.area.name.exists=O nome desta \u00E1rea de ensino j\u00E1 \u00E9 usado neste grupo gestor, favor selecionar outro. -group.delete=Voc\u00EA realmente quer apagar o grupo <b>{0}</b> com todas suas rela\u00E7\u00F5es? -group.message=E-mail ao grupo <i>{0}</i> -group.message.to=Instrutores e participantes -grouplist.areafilter.nofilter=Exibir todos grupos -grouplist.areafilter.title=Filtro de \u00E1rea de ensino -grouplist.no.groups=Nenhum grupo encontrado. Favor primeiramente criar um grupo usando o menu \u00E0 direita. -grouplist.table.delete=Apagar -grouplist.table.desc=Descri\u00E7\u00E3o -grouplist.table.edit=Editar -grouplist.table.name=Nome -grouplist.title=Lista de grupos -menu.allareas=Todas \u00E1reas de ensino -menu.allareas.alt=Listar todas \u00E1reas de ensino -menu.allgroups=Todos grupos -menu.allgroups.alt=Listar todos grupos -menu.allusers=Todos membros -menu.allusers.alt=Listar todos membros de todos grupos -menu.editcontext=Administra\u00E7\u00E3o -menu.editcontext.alt=Atribuir este grupo gestor a outros cursos ou apontar outras pessoas como administradores deste grupo gestor. -newarea.title=Criar nova \u00E1rea de ensino -overview.numb.areas=N\u00FAmero de \u00E1reas de ensino -overview.numb.groups=N\u00FAmero de grupos -overview.numb.owners=N\u00FAmero de tutores -overview.numb.participants=N\u00FAmero de participantes -overview.numb.total=N\u00FAmero total de membros de grupos -overview.otherResources=Aten\u00E7\u00E3o\: outros cursos -overview.otherResources.info=Estes grupos s\u00E3o usados tamb\u00E9m em outros cursos\! As modifica\u00E7\u00F5es destes grupos aplicam-se automaticamente nos seguintes cursos\: -overview.overview=Vis\u00E3o geral -owners.message=E-mail a todos propriet\u00E1rios -owners.message.to=Todos propriet\u00E1rios -participants.message=E-mail a todos participantes -participants.message.to=Todos participantes -rightgroup.message.to=Membros do grupo de direitos -tools.title.area=A\u00E7\u00F5es de \u00E1rea de ensino -tools.title.group=A\u00E7\u00F5es de grupo -tools.title.groupmanagement=Administrar grupos -tools.title.listmembers=Criar listas -tools.title.listmembers.warning.noAreas=Aten\u00E7\u00E3o\: arquivamento n\u00E3o foi poss\u00EDvel por falta de \u00E1reas de ensino -tools.title.listmembers.warning.noGroups=Aten\u00E7\u00E3o\: arquivamento n\u00E3o foi poss\u00EDvel por falta de grupos -tools.title.rightmanagement=Administrar direitos -tools.title.user=A\u00E7\u00F5es de usu\u00E1rio -tools.title.userlist=Contato -user.message=E-mail ao usu\u00E1rio <i>{0} {1}</i> -userdetails.ownergroups.noGroups=Este usu\u00E1rio n\u00E3o tem grupo -userdetails.ownergroups.title=Propriet\u00E1rios do grupo -userdetails.participantgroups.noGroups=Este usu\u00E1rio n\u00E3o participa de nenhum grupo. -userdetails.participantgroups.title=Participante em grupos -userdetails.remove=Remover -userdetails.title=Detalhes do usu\u00E1rio -userdetails.user.title=Perfil do usu\u00E1rio -userlist.owners.noOwners=Nenhum destes grupos cont\u00E9m propriet\u00E1rios -userlist.owners.title=Propriet\u00E1rios -userlist.participants.noParticipants=Nenhum destes grupos cont\u00E9m participantes -userlist.participants.title=Participantes -userlist.title=Lista de todos os usu\u00E1rios diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_ru.properties deleted file mode 100644 index e1829f29ab7..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_ru.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Sun Jan 24 08:29:49 CET 2010 -area.delete=\u0412\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F <b>{0}</b>? \u0413\u0440\u0443\u043F\u043F\u044B \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u043D\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u044B. -arealist.no.areas=\u041E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u043D\u0435 \u0431\u044B\u043B\u043E \u043D\u0430\u0439\u0434\u0435\u043D\u043E. \u041F\u043E\u0436\u0430\u0439\u043B\u0443\u0441\u0442\u0430, \u0441\u043E\u0437\u0434\u0430\u0439\u0442\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044F \u043C\u0435\u043D\u044E \u0441 \u043F\u0440\u0430\u0432\u043E\u0439 \u0441\u0442\u043E\u0440\u043E\u043D\u044B. -arealist.table.delete=\u0423\u0434\u0430\u043B\u0438\u0442\u044C -arealist.table.desc=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 -arealist.table.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C -arealist.table.name=\u0418\u043C\u044F -arealist.title=\u041E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0432 \u043A\u0443\u0440\u0441\u0435 -bgmanagement.disposed.command.close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u0430\u043C\u0438 -bgmanagement.disposed.title=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u0430\u043C\u0438 \u0441\u0442\u0430\u043B\u043E \u043D\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E. -cmd.area.create=\u041D\u043E\u0432\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -cmd.area.delete=\u0423\u0434\u0430\u043B\u0438\u0442\u044C -cmd.area.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C -cmd.back=\u0414\u0440\u0443\u0433\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u043E\u0439 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 -cmd.close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C -cmd.group.copy=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C -cmd.group.copy.multiple=\u041C\u043D\u043E\u0433\u043E\u043A\u0440\u0430\u0442\u043D\u043E \u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C -cmd.group.delete=\u0423\u0434\u0430\u043B\u0438\u0442\u044C -cmd.group.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C -cmd.group.message=E-mail \u0447\u043B\u0435\u043D\u0430\u043C \u0433\u0440\u0443\u043F\u043F\u044B -cmd.group.run=\u041D\u0430\u0447\u0430\u0442\u044C -cmd.list.members.with.areas=\u0427\u043B\u0435\u043D\u044B \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -cmd.list.members.with.groups=\u0427\u043B\u0435\u043D\u044B \u0433\u0440\u0443\u043F\u043F -cmd.owners.message=E-mail \u0432\u043B\u0430\u0434\u0435\u043B\u044C\u0446\u0443 -cmd.participants.message=E-mail \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0443 -cmd.user.message=E-mail \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E -context.removed=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u0430\u043D\u043D\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 \u0431\u044B\u043B\u043E \u0432 \u044D\u0442\u043E\u0442 \u043C\u043E\u043C\u0435\u043D\u0442 \u043E\u0442\u0434\u0435\u043B\u0435\u043D\u043E \u043E\u0442 \u044D\u0442\u043E\u0433\u043E \u043A\u0443\u0440\u0441\u0430. \u041F\u043E\u0436\u0430\u0439\u043B\u0443\u0441\u0442\u0430, \u043E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u0430\u043D\u043D\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 \u0437\u0430\u043D\u043E\u0432\u043E. -contextedit.owners.info=\u0412 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C \u0441\u043F\u0438\u0441\u043A\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u044B \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u044B, \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0435 \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0439. \u0421\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043E\u0434\u043D\u0438\u043C \u0438\u0437 \u044D\u0442\u0438\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u0441\u0430\u043C\u043E\u043C\u0443 \u0441\u0442\u0430\u0442\u044C \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u043C \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u044B \u0438 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u044D\u0442\u0443 \u0433\u0440\u0443\u043F\u043F\u0443 \u0432 \u0434\u0440\u0443\u0433\u043E\u043C \u043A\u0443\u0440\u0441\u0435. -contextedit.title=\u041E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0433\u0440\u0443\u043F\u043F\u0430\u043C\u0438 -error.area.name.exists=\u0422\u0430\u043A\u043E\u0435 \u0438\u043C\u044F \u0434\u043B\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0443\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0439. \u041F\u043E\u0436\u0430\u0439\u043B\u0443\u0441\u0442\u0430, \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043E\u0435 \u0438\u043C\u044F. -group.delete=\u0412\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443 <b>{0}</b> \u0441\u043E \u0432\u0441\u0435\u043C\u0438 \u0435\u0451 \u0441\u0432\u044F\u0437\u044F\u043C\u0438? -group.delete.in.use=\u042D\u0442\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u043C <b>`{1}`</b>. \u042D\u0442\u0438 \u0437\u0430\u043F\u0438\u0441\u0438 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u044B. \u0412\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443 <b>{0}</b> \u0432\u043C\u0435\u0441\u0442\u0435 \u0441\u043E \u0432\u0441\u0435\u043C\u0438 \u0441\u0432\u043E\u0438\u043C\u0438 \u0441\u0441\u044B\u043B\u043A\u0430\u043C\u0438? -group.message=E-mail \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u043F\u044B <i>{0}</i> -group.message.to=\u0420\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u0438 \u0438 \u0423\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0438 -grouplist.areafilter.nofilter=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u0433\u0440\u0443\u043F\u043F\u044B -grouplist.areafilter.title=\u0424\u0438\u043B\u044C\u0442\u0440 \u043F\u043E \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -grouplist.no.groups=\u0413\u0440\u0443\u043F\u043F\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430. \u041F\u043E\u0436\u0430\u0439\u043B\u0443\u0441\u0442\u0430, \u0441\u043E\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0433\u0440\u0443\u043F\u043F\u0443 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044F \u043C\u0435\u043D\u044E \u0441 \u043F\u0440\u0430\u0432\u043E\u0439 \u0441\u0442\u043E\u0440\u043E\u043D\u044B. -grouplist.table.delete=\u0423\u0434\u0430\u043B\u0438\u0442\u044C -grouplist.table.desc=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 -grouplist.table.edit=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C -grouplist.table.name=\u0418\u043C\u044F -grouplist.title=\u0421\u043F\u0438\u0441\u043E\u043A \u0433\u0440\u0443\u043F\u043F -info.group.deleted=\u042D\u0442\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u0431\u044B\u043B\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0430 -menu.allareas=\u0412\u0441\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -menu.allareas.alt=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -menu.allgroups=\u0412\u0441\u0435 \u0433\u0440\u0443\u043F\u043F\u044B -menu.allgroups.alt=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u0433\u0440\u0443\u043F\u043F\u044B -menu.allusers=\u0412\u0441\u0435 \u0447\u043B\u0435\u043D\u044B \u0433\u0440\u0443\u043F\u043F -menu.allusers.alt=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0447\u043B\u0435\u043D\u043E\u0432 \u0432\u0441\u0435\u0445 \u0433\u0440\u0443\u043F\u043F -menu.editcontext=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 -menu.editcontext.alt=\u041F\u0440\u0438\u0441\u043E\u0435\u0434\u0438\u043D\u0438\u0442\u0435 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 \u0434\u0440\u0443\u0433\u0438\u043C \u043A\u0443\u0440\u0441\u0430\u043C \u0438\u043B\u0438 \u0432\u043E\u0437\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0432 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u044B, \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0438\u0445 \u0434\u0430\u043D\u043D\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0439. -newarea.title=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -overview.numb.areas=\u0427\u0438\u0441\u043B\u043E \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -overview.numb.groups=\u0427\u0438\u0441\u043B\u043E \u0433\u0440\u0443\u043F\u043F -overview.numb.owners=\u0427\u0438\u0441\u043B\u043E \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u0435\u0439 -overview.numb.participants=\u0427\u0438\u0441\u043B\u043E \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u043E\u0432 -overview.numb.total=\u0427\u0438\u0441\u043B\u043E \u0447\u043B\u0435\u043D\u043E\u0432 \u0433\u0440\u0443\u043F\u043F\u044B (\u043F\u043E\u043B\u043D\u043E\u0441\u0442\u044C\u044E) -overview.otherResources=\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435\: \u0434\u0440\u0443\u0433\u0438\u0435 \u043A\u0443\u0440\u0441\u044B -overview.otherResources.info=\u042D\u0442\u0438 \u0433\u0440\u0443\u043F\u043F\u044B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F \u0442\u0430\u043A\u0436\u0435 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043A\u0443\u0440\u0441\u0430\u0445\! \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432 \u044D\u0442\u0438\u0445 \u0433\u0440\u0443\u043F\u043F\u0430\u0445 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043F\u043E\u0432\u043B\u0435\u043A\u0443\u0442 \u0437\u0430 \u0441\u043E\u0431\u043E\u0439 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u043A\u0443\u0440\u0441\u0430\u0445\: -overview.overview=\u041E\u0431\u0437\u043E\u0440 -owners.message=E-mail \u0432\u0441\u0435\u043C \u0432\u0430\u0434\u0435\u043B\u044C\u0446\u0430\u043C -owners.message.to=\u0412\u0441\u0435 \u0432\u043B\u0430\u0434\u0435\u043B\u044C\u0446\u044B -participants.message=E-mail \u0432\u0441\u0435\u043C \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0430\u043C -participants.message.to=\u0412\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0438 -rightgroup.message.to=\u0427\u043B\u0435\u043D\u044B \u0433\u0440\u0443\u043F\u043F\u044B \u043F\u0440\u0430\u0432 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 -tools.title.area=\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 - \u041E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F -tools.title.group=\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 - \u0413\u0440\u0443\u043F\u043F\u0430 -tools.title.groupmanagement=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u043E\u0439 -tools.title.listmembers=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0441\u043F\u0438\u0441\u043A\u0438 -tools.title.listmembers.warning.noAreas=\u0410\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u043E\u0438\u0437\u0432\u0435\u0434\u0435\u043D\u043E \u043F\u043E \u043F\u0440\u0438\u0447\u0438\u043D\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. -tools.title.listmembers.warning.noGroups=\u0410\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0440\u043E\u0438\u0437\u0432\u0435\u0434\u0435\u043D\u043E \u043F\u043E \u043F\u0440\u0438\u0447\u0438\u043D\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044F \u0433\u0440\u0443\u043F\u043F. -tools.title.rightmanagement=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043F\u0440\u0430\u0432\u0430\u043C\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 -tools.title.user=\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 - \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C -tools.title.userlist=\u0421\u0432\u044F\u0437\u0430\u0442\u044C\u0441\u044F -user.message=E-mail \u0432\u0441\u0435\u043C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u043C <i>{0} {1}</i> -userdetails.ownergroups.noGroups=\u042D\u0442\u043E\u0442 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0432\u043B\u0430\u0434\u0435\u043B\u044C\u0446\u0435\u043C \u0433\u0440\u0443\u043F\u043F. -userdetails.ownergroups.title=\u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446 \u0433\u0440\u0443\u043F\u043F -userdetails.participantgroups.noGroups=\u042D\u0442\u043E\u0442 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043D\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0438 \u0432 \u043E\u0434\u043D\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u0435. -userdetails.participantgroups.title=\u0423\u0447\u0430\u0441\u0442\u043D\u0438\u043A \u0432 \u0433\u0440\u0443\u043F\u043F\u0430\u0445 -userdetails.remove=\u0412\u044B\u0447\u0435\u0440\u043A\u043D\u0443\u0442\u044C -userdetails.title=\u0414\u0435\u0442\u0430\u043B\u0438 \u043E \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435 -userdetails.user.title=\u041F\u0440\u043E\u0444\u0438\u043B\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F -userlist.owners.noOwners=\u041D\u0438 \u043E\u0434\u043D\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u0435 \u043D\u0435 \u0431\u044B\u043B\u043E \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u043E \u0432\u043B\u0430\u0434\u0435\u043B\u044C\u0446\u0430. -userlist.owners.title=\u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446 -userlist.participants.noParticipants=\u041D\u0438 \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u043E\u0432. -userlist.participants.title=\u0423\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0438 -userlist.title=\u0421\u043F\u0438\u0441\u043E\u043A \u0432\u0441\u0435\u0445 \u0447\u043B\u0435\u043D\u043E\u0432 \u0433\u0440\u0443\u043F\u043F\u044B diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_sq.properties deleted file mode 100644 index f022a1d12e3..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_sq.properties +++ /dev/null @@ -1,81 +0,0 @@ -#Mon Mar 02 09:54:11 CET 2009 -area.delete=Do you really want to delete the learning area <b>{0}</b>? Groups will not be deleted. -arealist.no.areas=No learning areas found. Please create a learning area first by using the menu on the right. -arealist.table.delete=Delete -arealist.table.desc=Description -arealist.table.edit=Edit -arealist.table.name=Name -arealist.title=Learning area within course -cmd.area.create=New learning area -cmd.area.delete=Delete -cmd.area.edit=Edit -cmd.back=Different group context -cmd.close=Close -cmd.group.copy=Copy -cmd.group.copy.multiple=Copy more than once -cmd.group.delete=Delete -cmd.group.edit=Edit -cmd.group.message=E-mail to members -cmd.group.run=Start -cmd.list.members.with.areas=Participants along with areas -cmd.list.members.with.groups=Participants along with groups -cmd.owners.message=E-mail to owners -cmd.participants.message=E-mail to participants -cmd.user.message=E-mail to users -context.removed=This group management is currently separated from its course. Please restart the group management. -contextedit.owners.info=The following list shows the administrators of this group management. Contact one of these persons to become administrator or to be able to use these groups in other courses. -contextedit.title=Administration of group management -error.area.name.exists=The name of this learning area is already used in this group management, please select another. -group.delete=Do you really want to delete the group <b>{0}</b> along with all its relations? -group.message=E-mail to group <i>{0}</i> -group.message.to=Coaches and participants -grouplist.areafilter.nofilter=Show all groups -grouplist.areafilter.title=Learning area filter -grouplist.no.groups=No groups found. Please create a group first by using the menu on the right. -grouplist.table.delete=Delete -grouplist.table.desc=Description -grouplist.table.edit=Edit -grouplist.table.name=Name -grouplist.title=Group list -menu.allareas=All learning areas -menu.allareas.alt=List all learning areas -menu.allgroups=All groups -menu.allgroups.alt=List all groups -menu.allusers=All members -menu.allusers.alt=List all members from all groups -menu.editcontext=Administration -menu.editcontext.alt=Assign this group administration to other courses or appoint other persons as administrators of this group management. -newarea.title=Create a new learning area -overview.numb.areas=Number of learning areas -overview.numb.groups=Number of groups -overview.numb.owners=Number of tutors -overview.numb.participants=Number of participants -overview.numb.total=Number of total group members -overview.otherResources=Attention\: other courses -overview.otherResources.info=These groups are also used in other courses\! Modifications of these groups automatically apply in the following courses\: -overview.overview=Overview -owners.message=E-mail to all owners -owners.message.to=All owners -participants.message=E-mail to all participants -participants.message.to=All participants -rightgroup.message.to=Members of right group -tools.title.area=Actions learning area -tools.title.group=Actions group -tools.title.groupmanagement=Group management -tools.title.listmembers=Create lists -tools.title.rightmanagement=Rights management -tools.title.user=Actions user -tools.title.userlist=Contact -user.message=E-mail to user <i>{0} {1}</i> -userdetails.ownergroups.noGroups=This user has no group -userdetails.ownergroups.title=Group owners -userdetails.participantgroups.noGroups=This user does not participate in any group. -userdetails.participantgroups.title=Participant in groups -userdetails.remove=Remove -userdetails.title=User details -userdetails.user.title=User profile -userlist.owners.noOwners=None of these groups contain owners -userlist.owners.title=Owners -userlist.participants.noParticipants=None of these groups contain participants -userlist.participants.title=Participants -userlist.title=List of all members diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_zh_CN.properties deleted file mode 100644 index 10e9709f660..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_zh_CN.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Fri Feb 12 08:27:45 CET 2010 -area.delete=\u4F60\u786E\u5B9A\u8981\u5220\u9664\u5B66\u4E60\u533A\u57DF<b>{0}</b>?\u7FA4\u7EC4\u5C06\u8981\u88AB\u5220\u9664 -arealist.no.areas=\u6CA1\u6709\u53D1\u73B0\u5B66\u4E60\u533A\u57DF\uFF0C\u8BF7\u4F7F\u7528\u53F3\u8FB9\u7684\u83DC\u5355\u521B\u9020\u4E00\u4E2A\u5B66\u4E60\u533A\u57DF -arealist.table.delete=\u5220\u9664 -arealist.table.desc=\u8BF4\u660E -arealist.table.edit=\u7F16\u8F91 -arealist.table.name=\u59D3\u540D -arealist.title=\u8BFE\u7A0B\u91CC\u7684\u5B66\u4E60\u533A\u57DF -bgmanagement.disposed.command.close=\u5173\u95ED\u7FA4\u7EC4\u7BA1\u7406 -bgmanagement.disposed.title=\u7FA4\u7EC4\u7BA1\u7406\u5DF2\u5931\u6548\u3002 -cmd.area.create=\u65B0\u5EFA\u5B66\u4E60\u533A\u57DF -cmd.area.delete=\u5220\u9664 -cmd.area.edit=\u7F16\u8F91 -cmd.back=\u4E0D\u540C\u7684\u7FA4\u7EC4\u4E0A\u4E0B\u6587 -cmd.close=\u5173\u95ED -cmd.group.copy=\u590D\u5236 -cmd.group.copy.multiple=\u591A\u6B21\u590D\u5236 -cmd.group.delete=\u5220\u9664 -cmd.group.edit=\u7F16\u8F91 -cmd.group.message=\u7ED9\u6210\u5458\u53D1\u7535\u5B50\u90AE\u4EF6 -cmd.group.run=\u5F00\u59CB -cmd.list.members.with.areas=\u5B66\u4E60\u533A\u57DF\u4E2D\u7684\u53C2\u4E0E\u8005 -cmd.list.members.with.groups=\u7FA4\u7EC4\u4E2D\u7684\u53C2\u4E0E\u8005 -cmd.owners.message=\u7ED9\u6240\u6709\u8005\u53D1\u9001E-mail -cmd.participants.message=\u7ED9\u53C2\u4E0E\u8005\u53D1\u9001E-mail -cmd.user.message=\u7ED9\u7528\u6237\u53D1\u9001E-mail -context.removed=\u8BE5\u7EC4\u7BA1\u7406\u5F53\u524D\u6B63\u4ECE\u8BE5\u8BFE\u7A0B\u5206\u79BB\u51FA\u6765\u3002\u8BF7\u91CD\u65B0\u5F00\u59CB\u7FA4\u7EC4\u7BA1\u7406 -contextedit.owners.info=\u4E0B\u9762\u7684\u76EE\u5F55\u663E\u793A\u4E86\u8FD9\u4E2A\u7EC4\u7BA1\u7406\u7684\u7BA1\u7406\u5458\u3002\u5176\u4E2D\u4E00\u4E2A\u53EF\u4EE5\u6210\u5176\u4ED6\u8BFE\u7A0B\u91CC\u7684\u7BA1\u7406\u5458\u6216\u8005\u53EF\u4EE5\u5728\u5176\u4ED6\u8BFE\u7A0B\u91CC\u4F7F\u7528\u8005\u4E2A\u7EC4 -contextedit.title=\u7EC4\u7BA1\u7406\u7684\u673A\u6784 -error.area.name.exists=\u5728\u7EC4\u7BA1\u7406\u4E2D\uFF0C\u5B66\u4E60\u533A\u57DF\u7684\u540D\u5B57\u5DF2\u7ECF\u88AB\u4F7F\u7528\uFF0C\u8BF7\u9009\u62E9\u5176\u4ED6\u7684\u3002 -group.delete=\u4F60\u60F3\u786E\u5B9A\u8981\u5220\u9664\u7EC4<b>{0}</b>\u53CA\u5176\u8054\u7CFB\uFF1F -group.delete.in.use=<b>`{1}`</b>\u6B63\u4F7F\u7528\u6B64\u7FA4\u7EC4\u3002\u4E5F\u53EF\u4EE5\u5220\u9664\u8FD9\u4E9B\u6761\u76EE\u3002\u60A8\u771F\u8981\u5220\u9664\u7FA4\u7EC4<b>{0}</b> \u4EE5\u53CA\u4E0E\u5B83\u76F8\u5173\u7684\u6240\u6709\u94FE\u63A5\uFF1F -group.message=\u7ED9\u7EC4<i>{0}</i>\u53D1\u9001E-mail -group.message.to=\u6307\u5BFC\u6559\u5E08\u548C\u53C2\u4E0E\u8005 -grouplist.areafilter.nofilter=\u663E\u793A\u6240\u6709\u7FA4\u7EC4 -grouplist.areafilter.title=\u5B66\u4E60\u533A\u57DF\u9009\u62E9\u5668 -grouplist.no.groups=\u672A\u53D1\u73B0\u7FA4\u7EC4\uFF0C\u8BF7\u4F7F\u7528\u5DE6\u8FB9\u83DC\u5355\u521B\u5EFA\u7FA4\u7EC4 -grouplist.table.delete=\u5220\u9664 -grouplist.table.desc=\u8BF4\u660E -grouplist.table.edit=\u7F16\u8F91 -grouplist.table.name=\u540D\u5B57 -grouplist.title=\u7EC4\u76EE\u5F55 -info.group.deleted=\u6B21\u7FA4\u7EC4\u5DF2\u5220\u9664 -menu.allareas=\u6240\u6709\u5B66\u4E60\u533A\u57DF -menu.allareas.alt=\u5217\u51FA\u6240\u6709\u5B66\u4E60\u533A\u57DF -menu.allgroups=\u6240\u6709\u7FA4\u7EC4 -menu.allgroups.alt=\u5217\u51FA\u6240\u6709\u7FA4\u7EC4 -menu.allusers=\u6240\u6709\u6210\u5458 -menu.allusers.alt=\u5217\u51FA\u6240\u6709\u7FA4\u7EC4\u6240\u6709\u6210\u5458 -menu.editcontext=\u7BA1\u7406 -menu.editcontext.alt=\u628A\u8BE5\u6743\u9650\u7EC4\u5206\u914D\u7ED9\u5176\u5B83\u8BFE\u7A0B\u6216\u8005\u6307\u5B9A\u5176\u4ED6\u4EBA\u5458\u4F1A\u4E3A\u7FA4\u7EC4\u7BA1\u7406\u5458\u7684\u4EBA\u3002 -newarea.title=\u521B\u5EFA\u65B0\u7684\u5B66\u4E60\u533A\u57DF -overview.numb.areas=\u5B66\u4E60\u533A\u57DF\u4E2A\u6570 -overview.numb.groups=\u7FA4\u7EC4\u4E2A\u6570 -overview.numb.owners=\u8F85\u5BFC\u6559\u5E08\u4E2A\u6570 -overview.numb.participants=\u53C2\u4E0E\u8005\u4E2A\u6570 -overview.numb.total=\u6240\u6709\u7FA4\u7EC4\u6210\u5458\u4E2A\u6570 -overview.otherResources=\u6CE8\u610F\uFF1A\u5176\u4ED6\u8BFE\u7A0B -overview.otherResources.info=\u5176\u4ED6\u7684\u8BFE\u7A0B\u4E5F\u4F7F\u7528\u8BE5\u7EC4\uFF01\u8BE5\u7EC4\u4FEE\u6539\u4FE1\u606F\u81EA\u52A8\u5E94\u7528\u4E8E\u4EE5\u4E0B\u8BFE\u7A0B\: -overview.overview=\u6982\u8FF0 -owners.message=\u7ED9\u6240\u6709\u8005\u53D1\u9001E-mail -owners.message.to=\u5168\u90E8\u6240\u6709\u8005 -participants.message=\u7ED9\u6240\u6709\u53C2\u4E0E\u8005\u53D1\u9001E-mail -participants.message.to=\u6240\u6709\u53C2\u4E0E\u8005 -rightgroup.message.to=\u6743\u9650\u7EC4\u6210\u5458 -tools.title.area=\u64CD\u4F5C\u5B66\u4E60\u533A\u57DF -tools.title.group=\u64CD\u4F5C\u7FA4\u7EC4 -tools.title.groupmanagement=\u7FA4\u7EC4\u7BA1\u7406 -tools.title.listmembers=\u521B\u5EFA\u5217\u8868 -tools.title.listmembers.warning.noAreas=\u5982\u679C\u5728\u6B64\u5B66\u7A0B\u4E2D\u6CA1\u6709\u5B66\u4E60\u533A\u57DF\uFF0C\u90A3\u4E48\u8981\u751F\u6210\u4EFB\u4F55\u5217\u8868\u90FD\u662F\u4E0D\u53EF\u80FD\u7684\u3002 -tools.title.listmembers.warning.noGroups=\u5982\u679C\u5728\u6B64\u5B66\u7A0B\u4E2D\u6CA1\u6709\u7FA4\u7EC4\uFF0C\u90A3\u4E48\u8981\u751F\u6210\u4EFB\u4F55\u5217\u8868\u90FD\u662F\u4E0D\u53EF\u80FD\u7684\u3002 -tools.title.rightmanagement=\u6743\u9650\u7EC4 -tools.title.user=\u64CD\u4F5C\u7528\u6237 -tools.title.userlist=\u8054\u7CFB\u4EBA -user.message=\u7ED9\u7528\u6237<i>{1}</i>\u53D1\u9001E-mail -userdetails.ownergroups.noGroups=\u8BE5\u7528\u6237\u672A\u53C2\u4E0E\u4EFB\u4F55\u7FA4\u7EC4 -userdetails.ownergroups.title=\u7FA4\u7EC4\u6240\u6709\u8005 -userdetails.participantgroups.noGroups=\u8BE5\u7528\u6237\u672A\u53C2\u4E0E\u4EFB\u4F55\u4E00\u4E2A\u7EC4 -userdetails.participantgroups.title=\u7FA4\u7EC4\u53C2\u4E0E\u8005 -userdetails.remove=\u79FB\u9664 -userdetails.title=\u7528\u6237\u8BE6\u60C5 -userdetails.user.title=\u7528\u6237\u8D44\u6599 -userlist.owners.noOwners=\u8FD9\u4E9B\u7EC4\u6CA1\u6709\u6240\u6709\u8005 -userlist.owners.title=\u6240\u6709\u8005 -userlist.participants.noParticipants=\u8FD9\u4E9B\u7EC4\u6CA1\u6709\u53C2\u4E0E\u8005 -userlist.participants.title=\u53C2\u4E0E\u8005 -userlist.title=\u6240\u6709\u7528\u6237\u5217\u8868 diff --git a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_zh_TW.properties deleted file mode 100644 index 95c828eb76a..00000000000 --- a/src/main/java/org/olat/group/ui/management/_i18n/LocalStrings_zh_TW.properties +++ /dev/null @@ -1,87 +0,0 @@ -#Sun Feb 07 18:20:46 CET 2010 -area.delete=\u60A8\u771F\u7684\u8981\u522A\u9664\u5B78\u7FD2\u5340\u57DF <b>{0}</b> \u55CE? \u7FA4\u7D44\u5C07\u4E0D\u6703\u88AB\u522A\u9664\u3002 -arealist.no.areas=\u627E\u4E0D\u5230\u5B78\u7FD2\u5340\u57DF\u3002\u8ACB\u5229\u7528\u53F3\u5074\u529F\u80FD\u8868\u5148\u5EFA\u7ACB\u5B78\u7FD2\u5340\u57DF\u3002 -arealist.table.delete=\u522A\u9664 -arealist.table.desc=\u8AAA\u660E -arealist.table.edit=\u7DE8\u8F2F -arealist.table.name=\u540D\u7A31 -arealist.title=\u8AB2\u7A0B\u5167\u7684\u5B78\u7FD2\u5340\u57DF -bgmanagement.disposed.command.close=\u95DC\u9589\u7FA4\u7D44\u7BA1\u7406 -bgmanagement.disposed.title=\u7FA4\u7D44\u7BA1\u7406\u5931\u6548\u3002 -cmd.area.create=\u65B0\u589E\u5B78\u7FD2\u5340\u57DF -cmd.area.delete=\u522A\u9664 -cmd.area.edit=\u7DE8\u8F2F -cmd.back=\u4E0D\u540C\u7684\u7FA4\u7D44\u80CC\u666F -cmd.close=\u95DC\u9589 -cmd.group.copy=\u8907\u88FD -cmd.group.copy.multiple=\u8907\u88FD\u8D85\u904E\u4E00\u6B21 -cmd.group.delete=\u522A\u9664 -cmd.group.edit=\u7DE8\u8F2F -cmd.group.message=\u767C\u4FE1\u7D66\u6210\u54E1 -cmd.group.run=\u555F\u52D5 -cmd.list.members.with.areas=\u5B78\u7FD2\u5340\u57DF\u5167\u7684\u53C3\u8207\u8005 -cmd.list.members.with.groups=\u7FA4\u7D44\u5167\u7684\u53C3\u8207\u8005 -cmd.owners.message=\u767C\u4FE1\u7D66\u64C1\u6709\u8005 -cmd.participants.message=\u767C\u4FE1\u7D66\u53C3\u8207\u8005 -cmd.user.message=\u767C\u4FE1\u7D66\u4F7F\u7528\u8005 -context.removed=\u9019\u500B\u7FA4\u7D44\u7BA1\u7406\u6B63\u88AB\u5F9E\u5B83\u7684\u8AB2\u7A0B\u5206\u96E2\u3002\u8ACB\u91CD\u65B0\u555F\u52D5\u7FA4\u7D44\u7BA1\u7406\u3002 -contextedit.owners.info=\u4E0B\u5217\u6E05\u55AE\u986F\u793A\u9019\u500B\u7FA4\u7D44\u7BA1\u7406\u7684\u7BA1\u7406\u8005\u3002\u806F\u7D61\u5176\u4E2D\u4E4B\u4E00\u4EE5\u6210\u70BA\u7BA1\u7406\u8005\u6216\u53EF\u4EE5\u5728\u5176\u4ED6\u8AB2\u7A0B\u4E2D\u4F7F\u7528\u9019\u4E9B\u7FA4\u7D44\u3002 -contextedit.title=\u7FA4\u7D44\u7BA1\u7406\u7684\u7BA1\u7406 -error.area.name.exists=\u9019\u500B\u5B78\u7FD2\u5340\u57DF\u7684\u540D\u7A31\u5DF2\u7D93\u7528\u5728\u9019\u500B\u7FA4\u7D44\u7BA1\u7406\u4E86\uFF0C\u8ACB\u9078\u64C7\u5176\u4ED6\u7684\u3002 -group.delete=\u60A8\u771F\u7684\u8981\u522A\u9664\u7FA4\u7D44 <b>{0}</b> \u5305\u542B\u6240\u6709\u5B83\u7684\u95DC\u9023\u55CE\uFF1F -group.delete.in.use=\u9019\u500B\u7FA4\u7D44\u88AB<b>\u300C{1}\u300D</b>\u4F7F\u7528\u3002\u9019\u4E9B\u9805\u76EE\u4E5F\u53EF\u4EE5\u88AB\u522A\u9664\u3002\u60A8\u771F\u7684\u8981\u522A\u9664\u7FA4\u7D44<b>{0}</b>\u9023\u540C\u6240\u6709\u5B83\u7684\u9023\u7D50\u55CE\uFF1F -group.message=\u767C\u4FE1\u7D66\u7FA4\u7D44 <i>{0}</i> -group.message.to=\u6559\u7DF4\u548C\u53C3\u8207\u8005 -grouplist.areafilter.nofilter=\u986F\u793A\u6240\u6709\u7FA4\u7D44 -grouplist.areafilter.title=\u5B78\u7FD2\u5340\u57DF\u904E\u6FFE\u5668 -grouplist.no.groups=\u627E\u4E0D\u5230\u7FA4\u7D44\u3002\u8ACB\u5229\u7528\u53F3\u5074\u529F\u80FD\u8868\u5148\u5EFA\u7ACB\u7FA4\u7D44\u3002 -grouplist.table.delete=\u522A\u9664 -grouplist.table.desc=\u8AAA\u660E -grouplist.table.edit=\u7DE8\u8F2F -grouplist.table.name=\u540D\u7A31 -grouplist.title=\u7FA4\u7D44\u6E05\u55AE -info.group.deleted=\u9019\u500B\u5C08\u6848\u7FA4\u7D44\u5DF2\u88AB\u522A\u9664\u4E86 -menu.allareas=\u6240\u6709\u5B78\u7FD2\u5340\u57DF -menu.allareas.alt=\u5217\u51FA\u6240\u6709\u5B78\u7FD2\u5340\u57DF -menu.allgroups=\u6240\u6709\u7FA4\u7D44 -menu.allgroups.alt=\u5217\u51FA\u6240\u6709\u7FA4\u7D44 -menu.allusers=\u6240\u6709\u6210\u54E1 -menu.allusers.alt=\u5F9E\u6240\u6709\u7FA4\u7D44\u5217\u51FA\u6240\u6709\u6210\u54E1 -menu.editcontext=\u7BA1\u7406 -menu.editcontext.alt=\u6307\u6D3E\u9019\u500B\u7FA4\u7D44\u7BA1\u7406\u7D66\u5176\u4ED6\u8AB2\u7A0B\u6216\u4EFB\u547D\u5176\u4ED6\u4EBA\u64D4\u4EFB\u9019\u500B\u7FA4\u7D44\u7BA1\u7406\u7684\u7BA1\u7406\u8005\u3002 -newarea.title=\u5EFA\u7ACB\u4E00\u500B\u65B0\u7684\u5B78\u7FD2\u5340\u57DF -overview.numb.areas=\u5B78\u7FD2\u5340\u57DF\u6578 -overview.numb.groups=\u7FA4\u7D44\u500B\u6578 -overview.numb.owners=\u6559\u5E2B\u4EBA\u6578 -overview.numb.participants=\u53C3\u8207\u8005\u4EBA\u6578 -overview.numb.total=\u6574\u500B\u7FA4\u7D44\u6210\u54E1\u4EBA\u6578 -overview.otherResources=\u6CE8\u610F\uFF1A\u5176\u4ED6\u8AB2\u7A0B -overview.otherResources.info=\u9019\u4E9B\u7FA4\u7D44\u4E5F\u4F7F\u7528\u8005\u5176\u4ED6\u8AB2\u7A0B\uFF01\u4FEE\u6539\u9019\u4E9B\u7FA4\u7D44\u6703\u81EA\u52D5\u5957\u7528\u5728\u4E0B\u5217\u8AB2\u7A0B\uFF1A -overview.overview=\u6982\u89C0 -owners.message=\u767C\u4FE1\u7D66\u6240\u6709\u64C1\u6709\u8005 -owners.message.to=\u6240\u6709\u64C1\u6709\u8005 -participants.message=\u767C\u4FE1\u7D66\u6240\u6709\u53C3\u8207\u8005 -participants.message.to=\u6240\u6709\u53C3\u8207\u8005 -rightgroup.message.to=\u6B0A\u9650\u7FA4\u7D44\u6210\u54E1 -tools.title.area=\u52D5\u4F5C\u5B78\u7FD2\u5340\u57DF -tools.title.group=\u884C\u52D5\u7FA4\u7D44 -tools.title.groupmanagement=\u7FA4\u7D44\u7BA1\u7406 -tools.title.listmembers=\u5EFA\u7ACB\u6E05\u55AE -tools.title.listmembers.warning.noAreas=\u6CE8\u610F\uFF1A\u7121\u6CD5\u5099\u4EFD\u56E0\u70BA\u6C92\u6709\u5B78\u7FD2\u5340\u57DF -tools.title.listmembers.warning.noGroups=\u6CE8\u610F\uFF1A\u7121\u6CD5\u5099\u4EFD\u56E0\u70BA\u6C92\u6709\u7FA4\u7D44 -tools.title.rightmanagement=\u6B0A\u9650\u7BA1\u7406 -tools.title.user=\u884C\u52D5\u4F7F\u7528\u8005 -tools.title.userlist=\u806F\u7D61 -user.message=\u767C\u4FE1\u7D66\u4F7F\u7528\u8005 <i>{0} {1}</i> -userdetails.ownergroups.noGroups=\u9019\u500B\u4F7F\u7528\u8005\u6C92\u6709\u7FA4\u7D44 -userdetails.ownergroups.title=\u7FA4\u7D44\u64C1\u6709\u8005 -userdetails.participantgroups.noGroups=\u9019\u500B\u4F7F\u7528\u8005\u6C92\u6709\u53C3\u8207\u4EFB\u4F55\u7FA4\u7D44\u3002 -userdetails.participantgroups.title=\u7FA4\u7D44\u5167\u7684\u53C3\u8207\u8005 -userdetails.remove=\u522A\u9664 -userdetails.title=\u4F7F\u7528\u8005\u8A73\u7D30\u8CC7\u6599 -userdetails.user.title=\u4F7F\u7528\u8005\u500B\u4EBA\u6A94\u6848 -userlist.owners.noOwners=\u6C92\u6709\u4E00\u500B\u7FA4\u7D44\u6709\u64C1\u6709\u8005 -userlist.owners.title=\u64C1\u6709\u8005 -userlist.participants.noParticipants=\u6C92\u6709\u4E00\u500B\u7FA4\u7D44\u6709\u53C3\u8207\u8005 -userlist.participants.title=\u53C3\u8207\u8005 -userlist.title=\u5217\u51FA\u6240\u6709\u6210\u54E1 diff --git a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java index 2d62a3c1981..76c63cd9dff 100644 --- a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java +++ b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java @@ -235,7 +235,7 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im } - List<BusinessGroupMembership> memberships = businessGroupService.getBusinessGroupMembership(getIdentity(), Collections.singletonList(bGroup.getKey())); + List<BusinessGroupMembership> memberships = businessGroupService.getBusinessGroupMembership(Collections.singletonList(bGroup.getKey()), getIdentity()); if(isOnWaitinglist(memberships)) { VelocityContainer vc = createVelocityContainer("waiting"); vc.contextPut("name", bGroup.getName()); diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java index 7d70172ffa0..e73f8538cec 100644 --- a/src/main/java/org/olat/repository/RepositoryManager.java +++ b/src/main/java/org/olat/repository/RepositoryManager.java @@ -81,8 +81,9 @@ import org.olat.repository.async.SetLastUsageBackgroundTask; import org.olat.repository.async.SetPropertiesBackgroundTask; import org.olat.repository.handlers.RepositoryHandler; import org.olat.repository.handlers.RepositoryHandlerFactory; +import org.olat.repository.model.RepositoryEntryMember; import org.olat.repository.model.RepositoryEntryMembership; -import org.olat.repository.model.RepositoryEntryStrictMembership; +import org.olat.repository.model.RepositoryEntryStrictMember; import org.olat.repository.model.RepositoryEntryStrictParticipant; import org.olat.repository.model.RepositoryEntryStrictTutor; import org.olat.resource.OLATResource; @@ -1124,7 +1125,7 @@ public class RepositoryManager extends BasicManager { sb.append(" or (") .append(" v.access=").append(RepositoryEntry.ACC_OWNERS).append(" and v.membersOnly=true") .append(" and v.key in (") - .append(" select vmember.key from ").append(RepositoryEntryStrictMembership.class.getName()).append(" vmember") + .append(" select vmember.key from ").append(RepositoryEntryStrictMember.class.getName()).append(" vmember") .append(" where (vmember.repoParticipantKey=:identityKey or vmember.repoTutorKey=:identityKey or vmember.repoOwnerKey=:identityKey") .append(" or vmember.groupParticipantKey=:identityKey or vmember.groupOwnerKey=:identityKey)") .append(" ))"); @@ -1139,7 +1140,7 @@ public class RepositoryManager extends BasicManager { .append(" or (") .append(" v.access=").append(RepositoryEntry.ACC_OWNERS).append(" and v.membersOnly=true") .append(" and v.key in (") - .append(" select vmember.key from ").append(RepositoryEntryStrictMembership.class.getName()).append(" vmember") + .append(" select vmember.key from ").append(RepositoryEntryStrictMember.class.getName()).append(" vmember") .append(" where (vmember.repoParticipantKey=:identityKey or vmember.repoTutorKey=:identityKey or vmember.repoOwnerKey=:identityKey") .append(" or vmember.groupParticipantKey=:identityKey or vmember.groupOwnerKey=:identityKey)") .append(" )))"); @@ -1151,7 +1152,7 @@ public class RepositoryManager extends BasicManager { StringBuilder sb = new StringBuilder(); sb.append("select count(v) from ").append(RepositoryEntry.class.getName()).append(" as v ") .append(" where v.key=:repositoryEntryKey and v.key in (") - .append(" select vmember.key from ").append(RepositoryEntryMembership.class.getName()).append(" vmember") + .append(" select vmember.key from ").append(RepositoryEntryMember.class.getName()).append(" vmember") .append(" where vmember.key=:repositoryEntryKey and ") .append(" (vmember.repoParticipantKey=:identityKey or vmember.repoTutorKey=:identityKey or vmember.repoOwnerKey=:identityKey") .append(" or vmember.groupParticipantKey=:identityKey or vmember.groupOwnerKey=:identityKey)") @@ -1660,6 +1661,56 @@ public class RepositoryManager extends BasicManager { return entries; } + /** + * Need a repository entry or identites to return a list. + * @param re + * @param identity + * @return + */ + public List<RepositoryEntryMembership> getRepositoryEntryMembership(RepositoryEntry re, Identity... identity) { + if(re == null && (identity == null || identity.length == 0)) return Collections.emptyList(); + + StringBuilder sb = new StringBuilder(400); + sb.append("select distinct membership from ").append(RepositoryEntryMembership.class.getName()).append(" membership "); + boolean and = false; + if(re != null) { + and = and(sb, and); + sb.append("(ownerRepoKey=:repoKey or tutorRepoKey=:repoKey or participantRepoKey=:repoKey)"); + } + if(identity != null && identity.length > 0) { + and = and(sb, and); + sb.append("membership.identityKey=:identityKeys"); + } + + TypedQuery<RepositoryEntryMembership> query = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), RepositoryEntryMembership.class); + if(re != null) { + query.setParameter("repoKey", re.getKey()); + } + if(identity != null && identity.length > 0) { + List<Long> ids = new ArrayList<Long>(identity.length); + for(Identity id:identity) { + ids.add(id.getKey()); + } + query.setParameter("identityKeys", ids); + } + + List<RepositoryEntryMembership> entries = query.getResultList(); + return entries; + } + + private final boolean and(StringBuilder sb, boolean and) { + if(and) sb.append(" and "); + else sb.append(" where "); + return true; + } + + private final boolean or(StringBuilder sb, boolean or) { + if(or) sb.append(" or "); + else sb.append(" "); + return true; + } + private void appendOrderBy(StringBuilder sb, String var, RepositoryEntryOrder... orderby) { if(orderby != null && orderby.length > 0) { sb.append(" order by "); diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryMember.java b/src/main/java/org/olat/repository/model/RepositoryEntryMember.java new file mode 100644 index 00000000000..61db3b2fd5b --- /dev/null +++ b/src/main/java/org/olat/repository/model/RepositoryEntryMember.java @@ -0,0 +1,109 @@ +/** + * <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.repository.model; + +import org.olat.core.commons.persistence.PersistentObject; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class RepositoryEntryMember extends PersistentObject { + + private static final long serialVersionUID = 3795108974268603941L; + + private Long repoParticipantKey; + private Long repoTutorKey; + private Long repoOwnerKey; + private Long groupParticipantKey; + private Long groupOwnerKey; + + private int access; + private boolean membersOnly; + + public Long getRepoParticipantKey() { + return repoParticipantKey; + } + + public void setRepoParticipantKey(Long repoParticipantKey) { + this.repoParticipantKey = repoParticipantKey; + } + + public Long getRepoTutorKey() { + return repoTutorKey; + } + + public void setRepoTutorKey(Long repoTutorKey) { + this.repoTutorKey = repoTutorKey; + } + + public Long getRepoOwnerKey() { + return repoOwnerKey; + } + + public void setRepoOwnerKey(Long repoOwnerKey) { + this.repoOwnerKey = repoOwnerKey; + } + + public Long getGroupParticipantKey() { + return groupParticipantKey; + } + + public void setGroupParticipantKey(Long groupParticipantKey) { + this.groupParticipantKey = groupParticipantKey; + } + + public Long getGroupOwnerKey() { + return groupOwnerKey; + } + + public void setGroupOwnerKey(Long groupOwnerKey) { + this.groupOwnerKey = groupOwnerKey; + } + + public int getAccess() { + return access; + } + + public void setAccess(int access) { + this.access = access; + } + + public boolean isMembersOnly() { + return membersOnly; + } + + public void setMembersOnly(boolean membersOnly) { + this.membersOnly = membersOnly; + } + + @Override + public int hashCode() { + return getKey() == null ? 3768 : getKey().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(this == obj) { + return true; + } + return false; + } +} diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryMembership.java b/src/main/java/org/olat/repository/model/RepositoryEntryMembership.java index 684b3a79f72..f0e5fd73417 100644 --- a/src/main/java/org/olat/repository/model/RepositoryEntryMembership.java +++ b/src/main/java/org/olat/repository/model/RepositoryEntryMembership.java @@ -19,6 +19,8 @@ */ package org.olat.repository.model; +import java.util.Date; + import org.olat.core.commons.persistence.PersistentObject; /** @@ -27,82 +29,70 @@ import org.olat.core.commons.persistence.PersistentObject; */ public class RepositoryEntryMembership extends PersistentObject { - private static final long serialVersionUID = 3795108974268603941L; - - private Long repoParticipantKey; - private Long repoTutorKey; - private Long repoOwnerKey; - private Long groupParticipantKey; - private Long groupOwnerKey; + private static final long serialVersionUID = -5404538852842562897L; - private int access; - private boolean membersOnly; + private Long identityKey; + private Date lastModified; + private Long ownerRepoKey; + private Long tutorRepoKey; + private Long participantRepoKey; - public Long getRepoParticipantKey() { - return repoParticipantKey; - } - - public void setRepoParticipantKey(Long repoParticipantKey) { - this.repoParticipantKey = repoParticipantKey; - } - - public Long getRepoTutorKey() { - return repoTutorKey; + public Long getIdentityKey() { + return identityKey; } - public void setRepoTutorKey(Long repoTutorKey) { - this.repoTutorKey = repoTutorKey; + public void setIdentityKey(Long identityKey) { + this.identityKey = identityKey; } - public Long getRepoOwnerKey() { - return repoOwnerKey; - } - - public void setRepoOwnerKey(Long repoOwnerKey) { - this.repoOwnerKey = repoOwnerKey; + public Date getLastModified() { + return lastModified; } - - public Long getGroupParticipantKey() { - return groupParticipantKey; - } - - public void setGroupParticipantKey(Long groupParticipantKey) { - this.groupParticipantKey = groupParticipantKey; + + public void setLastModified(Date lastModified) { + this.lastModified = lastModified; } - - public Long getGroupOwnerKey() { - return groupOwnerKey; + + public Long getOwnerRepoKey() { + return ownerRepoKey; } - - public void setGroupOwnerKey(Long groupOwnerKey) { - this.groupOwnerKey = groupOwnerKey; + + public void setOwnerRepoKey(Long ownerRepoKey) { + this.ownerRepoKey = ownerRepoKey; } - public int getAccess() { - return access; + public Long getTutorRepoKey() { + return tutorRepoKey; } - public void setAccess(int access) { - this.access = access; + public void setTutorRepoKey(Long tutorRepoKey) { + this.tutorRepoKey = tutorRepoKey; } - public boolean isMembersOnly() { - return membersOnly; + public Long getParticipantRepoKey() { + return participantRepoKey; } - public void setMembersOnly(boolean membersOnly) { - this.membersOnly = membersOnly; + public void setParticipantRepoKey(Long participantRepoKey) { + this.participantRepoKey = participantRepoKey; } @Override public int hashCode() { - return getKey() == null ? 3768 : getKey().hashCode(); + return getKey() == null ? 2901 : getKey().hashCode(); } + /** + * Compares the keys. + * @see java.lang.Object#equals(java.lang.Object) + */ @Override public boolean equals(Object obj) { if(this == obj) { return true; + } else if (obj instanceof RepositoryEntryMembership) { + RepositoryEntryMembership bg = (RepositoryEntryMembership)obj; + return getKey() != null && getKey().equals(bg.getKey()); } return false; } diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryStrictMembership.java b/src/main/java/org/olat/repository/model/RepositoryEntryStrictMember.java similarity index 96% rename from src/main/java/org/olat/repository/model/RepositoryEntryStrictMembership.java rename to src/main/java/org/olat/repository/model/RepositoryEntryStrictMember.java index d13cd997f05..223cb4c20af 100644 --- a/src/main/java/org/olat/repository/model/RepositoryEntryStrictMembership.java +++ b/src/main/java/org/olat/repository/model/RepositoryEntryStrictMember.java @@ -25,7 +25,7 @@ import org.olat.core.commons.persistence.PersistentObject; * * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com */ -public class RepositoryEntryStrictMembership extends PersistentObject { +public class RepositoryEntryStrictMember extends PersistentObject { private static final long serialVersionUID = 3795108974268603941L; diff --git a/src/main/java/org/olat/repository/model/RepositoryEntryViews.hbm.xml b/src/main/java/org/olat/repository/model/RepositoryEntryViews.hbm.xml index 35c66a32a69..6b7b27e4964 100644 --- a/src/main/java/org/olat/repository/model/RepositoryEntryViews.hbm.xml +++ b/src/main/java/org/olat/repository/model/RepositoryEntryViews.hbm.xml @@ -2,7 +2,7 @@ <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-lazy="false"> - <class name="org.olat.repository.model.RepositoryEntryMembership" table="o_re_member_v" mutable="false"> + <class name="org.olat.repository.model.RepositoryEntryMember" table="o_re_member_v" mutable="false"> <composite-id> <key-property name="key" column="re_id" type="long" /> <key-property name="repoOwnerKey" column="re_owner_member_id" type="long" /> @@ -16,7 +16,7 @@ <property name="membersOnly" column="re_membersonly" type="boolean"/> </class> - <class name="org.olat.repository.model.RepositoryEntryStrictMembership" table="o_re_strict_member_v" mutable="false"> + <class name="org.olat.repository.model.RepositoryEntryStrictMember" table="o_re_strict_member_v" mutable="false"> <composite-id> <key-property name="key" column="re_id" type="long" /> <key-property name="repoOwnerKey" column="re_owner_member_id" type="long" /> @@ -44,4 +44,20 @@ </composite-id> </class> + <class name="org.olat.repository.model.RepositoryEntryMembership" table="o_re_membership_v" mutable="false"> + <cache usage="read-write" /> + <id name="key" + type="long" + column="membership_id" + unsaved-value="null"> + <generator class="hilo"/> + </id> + <property name="lastModified" column="lastmodified" type="timestamp" /> + <property name="creationDate" column="creationdate" type="timestamp" /> + <property name="identityKey" column="identity_id" type="long" /> + <property name="ownerRepoKey" column="owner_re_id" type="long" /> + <property name="tutorRepoKey" column="tutor_re_id" type="long" /> + <property name="participantRepoKey" column="participant_re_id" type="long" /> + </class> + </hibernate-mapping> diff --git a/src/main/java/org/olat/resource/accesscontrol/ui/SecurityGroupMembersController.java b/src/main/java/org/olat/resource/accesscontrol/ui/SecurityGroupMembersController.java deleted file mode 100644 index 76db3ffbcda..00000000000 --- a/src/main/java/org/olat/resource/accesscontrol/ui/SecurityGroupMembersController.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * <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.resource.accesscontrol.ui; - -import org.olat.admin.securitygroup.gui.GroupController; -import org.olat.admin.securitygroup.gui.IdentitiesAddEvent; -import org.olat.admin.securitygroup.gui.IdentitiesRemoveEvent; -import org.olat.basesecurity.SecurityGroup; -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -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.StringHelper; - -/** - * - * Description:<br> - * Show and manage the members of a security group - * - * <P> - * Initial Date: 15 avr. 2011 <br> - * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com - */ -public class SecurityGroupMembersController extends BasicController { - - private final VelocityContainer mainVC; - - public SecurityGroupMembersController(UserRequest ureq, WindowControl wControl, SecurityGroup secGroup, - String title, String info, boolean mayModifierMembers, boolean keepAtLeastOne) { - super(ureq, wControl); - - mainVC = createVelocityContainer("members"); - - GroupController groupController = new GroupController(ureq, wControl, mayModifierMembers, keepAtLeastOne, false, secGroup); - listenTo(groupController); - - mainVC.put("memberList", groupController.getInitialComponent()); - if(StringHelper.containsNonWhitespace(title)) { - mainVC.contextPut("title", title); - } - if(StringHelper.containsNonWhitespace(info)) { - mainVC.contextPut("info", info); - } - putInitialPanel(mainVC); - } - - protected void doDispose() { - // - } - - @Override - protected void event(UserRequest ureq, Controller source, Event event) { - if(event instanceof IdentitiesAddEvent) { - fireEvent(ureq, event); - } else if(event instanceof IdentitiesRemoveEvent) { - fireEvent(ureq, event); - } else { - super.event(ureq, source, event); - } - } - - @Override - protected void event(UserRequest ureq, Component source, Event event) { - // - } -} \ No newline at end of file diff --git a/src/main/java/org/olat/resource/accesscontrol/ui/SecurityGroupsRepositoryMainController.java b/src/main/java/org/olat/resource/accesscontrol/ui/SecurityGroupsRepositoryMainController.java deleted file mode 100644 index 6ebf95b8794..00000000000 --- a/src/main/java/org/olat/resource/accesscontrol/ui/SecurityGroupsRepositoryMainController.java +++ /dev/null @@ -1,343 +0,0 @@ -/** - * <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.resource.accesscontrol.ui; - -import java.util.Collections; -import java.util.List; - -import org.olat.admin.securitygroup.gui.IdentitiesAddEvent; -import org.olat.admin.securitygroup.gui.IdentitiesRemoveEvent; -import org.olat.basesecurity.BaseSecurity; -import org.olat.basesecurity.BaseSecurityManager; -import org.olat.basesecurity.SecurityGroup; -import org.olat.core.CoreSpringFactory; -import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -import org.olat.core.gui.components.panel.Panel; -import org.olat.core.gui.components.tree.GenericTreeModel; -import org.olat.core.gui.components.tree.GenericTreeNode; -import org.olat.core.gui.components.tree.MenuTree; -import org.olat.core.gui.components.tree.TreeNode; -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.MainLayoutBasicController; -import org.olat.core.gui.control.generic.tool.ToolController; -import org.olat.core.gui.control.generic.tool.ToolFactory; -import org.olat.core.id.Identity; -import org.olat.core.logging.activity.ActionType; -import org.olat.core.util.nodes.INode; -import org.olat.course.CourseFactory; -import org.olat.course.ICourse; -import org.olat.course.groupsandrights.CourseGroupManager; -import org.olat.group.BusinessGroup; -import org.olat.group.BusinessGroupAddResponse; -import org.olat.group.BusinessGroupService; -import org.olat.repository.RepositoryEntry; -import org.olat.repository.RepositoryManager; -import org.olat.resource.accesscontrol.AccessControlModule; -import org.olat.util.logging.activity.LoggingResourceable; - -/** - * - * Description:<br> - * Show and manage security groups of a repository entry - * - * <P> - * Initial Date: 20 avr. 2011 <br> - * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com - */ -public class SecurityGroupsRepositoryMainController extends MainLayoutBasicController { - - private static final String CMD_CLOSE = "cmd.close"; - private static final String CMD_OWNERS = "owners"; - private static final String CMD_TUTORS = "tutors"; - private static final String CMD_PARTICIPANTS = "participants"; - private static final String CMD_ORDERS = "orders"; - - private LayoutMain3ColsController columnLayoutCtr; - private MenuTree menuTree; - private ToolController toolC; - - private final Panel mainPanel; - private SecurityGroupMembersController ownersController; - private SecurityGroupMembersController tutorsController; - private SecurityGroupMembersController participantsController; - private OrdersAdminController ordersController; - - private final RepositoryEntry repoEntry; - private final RepositoryManager rm; - private final BaseSecurity securityManager; - private final AccessControlModule acModule; - private final BusinessGroupService businessGroupService; - - private final boolean mayModifyMembers; - - /** - * Constructor for the course group management main controller - * - * @param ureq - * @param wControl - * @param course - * @param groupType - */ - public SecurityGroupsRepositoryMainController(UserRequest ureq, WindowControl wControl, ICourse course, - RepositoryEntry repoEntry, boolean mayModifyMembers) { - super(ureq, wControl); - - this.repoEntry = repoEntry; - this.mayModifyMembers = mayModifyMembers; - securityManager = BaseSecurityManager.getInstance(); - acModule = (AccessControlModule)CoreSpringFactory.getBean("acModule"); - businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); - - getUserActivityLogger().setStickyActionType(ActionType.admin); - - addLoggingResourceable(LoggingResourceable.wrap(course)); - - //lazy build security groups - rm = RepositoryManager.getInstance(); - if(repoEntry.getParticipantGroup() == null || repoEntry.getTutorGroup() == null){ - lazyUpdateRepositoryEntry(); - } - - // Navigation menu - menuTree = new MenuTree("menuTree"); - menuTree.setTreeModel(buildTreeModel()); - menuTree.addListener(this); - INode firstChild = menuTree.getTreeModel().getRootNode().getChildAt(0); - if (firstChild != null) { - menuTree.setSelectedNodeId(firstChild.getIdent()); - } - - //add tools (close) - toolC = ToolFactory.createToolController(getWindowControl()); - listenTo(toolC); - toolC.addHeader(translate("cmd.title")); - toolC.addLink(CMD_CLOSE, translate(CMD_CLOSE), null, "b_toolbox_close"); - - //now build layout controller - mainPanel = new Panel("MainSecGroups"); - columnLayoutCtr = new LayoutMain3ColsController(ureq, getWindowControl(), menuTree, toolC.getInitialComponent(), mainPanel, "SecGroups" + repoEntry.getKey()); - listenTo(columnLayoutCtr); - - //select the initial controller - TreeNode initialNode = menuTree.getSelectedNode(); - if(initialNode != null) { - Object cmd = initialNode.getDelegate() != null ? initialNode.getDelegate().getUserObject() : initialNode.getUserObject(); - selectSecurityGroup(ureq, cmd); - } else { - mainPanel.setContent(new Panel("empty")); - } - - putInitialPanel(columnLayoutCtr.getInitialComponent()); - } - - private void lazyUpdateRepositoryEntry() { - if(repoEntry.getTutorGroup() == null){ - rm.createTutorSecurityGroup(repoEntry); - } - if(repoEntry.getParticipantGroup() == null) { - rm.createParticipantSecurityGroup(repoEntry); - } - rm.updateRepositoryEntry(repoEntry); - } - - private GenericTreeModel buildTreeModel() { - GenericTreeModel gtm = new GenericTreeModel(); - GenericTreeNode root = new GenericTreeNode(); - root.setTitle(translate("members.title")); - root.setAltText(translate("members.title.alt")); - gtm.setRootNode(root); - - if(repoEntry.getOwnerGroup() != null) { - GenericTreeNode node = new GenericTreeNode(translate("members.owners"), CMD_OWNERS); - node.setAltText(translate("members.owners.alt")); - root.addChild(node); - root.setDelegate(node); - } - - if(repoEntry.getTutorGroup() != null) { - GenericTreeNode node = new GenericTreeNode(translate("members.tutors"), CMD_TUTORS); - node.setAltText(translate("members.tutors.alt")); - root.addChild(node); - if(root.getDelegate() == null) { - root.setDelegate(node); - } - } - - if(repoEntry.getParticipantGroup() != null) { - GenericTreeNode node = new GenericTreeNode(translate("members.participants"), CMD_PARTICIPANTS); - node.setAltText(translate("members.participants.alt")); - root.addChild(node); - if(root.getDelegate() == null) { - root.setDelegate(node); - } - } - - if(acModule.isEnabled()) { - GenericTreeNode node = new GenericTreeNode(translate("menu.orders"), CMD_ORDERS); - node.setAltText(translate("menu.orders.alt")); - root.addChild(node); - if(root.getDelegate() == null) { - root.setDelegate(node); - } - } - - return gtm; - } - - protected void doDispose() { - // - } - - /** - * @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 == menuTree) { - if (event.getCommand().equals(MenuTree.COMMAND_TREENODE_CLICKED)) { - TreeNode selTreeNode = menuTree.getSelectedNode(); - Object cmd = selTreeNode.getUserObject(); - selectSecurityGroup(ureq, cmd); - - // visually select delegate - if (selTreeNode.getDelegate() != null) { - menuTree.setSelectedNodeId(selTreeNode.getDelegate().getIdent()); - } - } - } - } - - private void selectSecurityGroup(UserRequest ureq, Object cmd) { - if(CMD_OWNERS.equals(cmd)) { - if(ownersController != null) { - removeAsListenerAndDispose(ownersController); - } - String title = translate("members.owners"); - String info = translate("members.owners.info"); - ownersController = new SecurityGroupMembersController(ureq, getWindowControl(), repoEntry.getOwnerGroup(), title, info, mayModifyMembers, true); - listenTo(ownersController); - mainPanel.setContent(ownersController.getInitialComponent()); - } else if(CMD_TUTORS.equals(cmd)) { - if(tutorsController != null) { - removeAsListenerAndDispose(tutorsController); - } - String title = translate("members.tutors"); - String info = translate("members.tutors.info"); - tutorsController = new SecurityGroupMembersController(ureq, getWindowControl(), repoEntry.getTutorGroup(), title, info, mayModifyMembers, false); - listenTo(tutorsController); - mainPanel.setContent(tutorsController.getInitialComponent()); - } else if(CMD_PARTICIPANTS.equals(cmd)) { - if(participantsController != null) { - removeAsListenerAndDispose(participantsController); - } - String title = translate("members.participants"); - String info = translate("members.participants.info"); - participantsController = new SecurityGroupMembersController(ureq, getWindowControl(), repoEntry.getParticipantGroup(), title, info, mayModifyMembers, false); - listenTo(participantsController); - mainPanel.setContent(participantsController.getInitialComponent()); - } else if (CMD_ORDERS.equals(cmd)) { - if(ordersController != null) { - removeAsListenerAndDispose(ordersController); - } - - ordersController = new OrdersAdminController(ureq, getWindowControl(), repoEntry.getOlatResource()); - listenTo(ordersController); - mainPanel.setContent(ordersController.getInitialComponent()); - } - } - - /** - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, - * org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event) - */ - public void event(UserRequest ureq, Controller source, Event event) { - if (source == toolC) { - if (event.getCommand().equals(CMD_CLOSE)) { - fireEvent(ureq, Event.DONE_EVENT); - } - } else if(event instanceof IdentitiesAddEvent) { - IdentitiesAddEvent identitiesAddedEvent = (IdentitiesAddEvent) event; - SecurityGroup secGroup = null; - if (source == ownersController) { - secGroup = repoEntry.getOwnerGroup(); - } else if (source == tutorsController) { - secGroup = repoEntry.getTutorGroup(); - } else if (source == participantsController) { - secGroup = repoEntry.getParticipantGroup(); - } - BusinessGroupAddResponse response = businessGroupService.addToSecurityGroupAndFireEvent(ureq.getIdentity(), identitiesAddedEvent.getAddIdentities(), secGroup); - identitiesAddedEvent.setIdentitiesAddedEvent(response.getAddedIdentities()); - identitiesAddedEvent.setIdentitiesWithoutPermission(response.getIdentitiesWithoutPermission()); - identitiesAddedEvent.setIdentitiesAlreadyInGroup(response.getIdentitiesAlreadyInGroup()); - fireEvent(ureq, Event.CHANGED_EVENT ); - } else if(event instanceof IdentitiesRemoveEvent) { - IdentitiesRemoveEvent identitiesRemoveEvent = (IdentitiesRemoveEvent)event; - List<Identity> identitiesToRemove = identitiesRemoveEvent.getRemovedIdentities(); - if (source == ownersController) { - SecurityGroup ownerGroup = repoEntry.getOwnerGroup(); - businessGroupService.removeAndFireEvent(ureq.getIdentity(), identitiesToRemove, ownerGroup); - } else if (source == tutorsController) { - SecurityGroup tutorGroup = repoEntry.getTutorGroup(); - businessGroupService.removeAndFireEvent(ureq.getIdentity(), identitiesToRemove, tutorGroup); - removeTutors(identitiesToRemove); - } else if (source == participantsController) { - SecurityGroup participantGroup = repoEntry.getParticipantGroup(); - businessGroupService.removeAndFireEvent(ureq.getIdentity(), identitiesToRemove, participantGroup); - removeParticipants(identitiesToRemove); - } - } - super.event(ureq, source, event); - } - - private void removeTutors(List<Identity> identitiesToRemove) { - for(BusinessGroup group:getCourseGroups()) { - for(Identity identityToRemove : identitiesToRemove) { - if(securityManager.isIdentityInSecurityGroup(identityToRemove, group.getOwnerGroup())) { - securityManager.removeIdentityFromSecurityGroup(identityToRemove, group.getOwnerGroup()); - } - } - } - } - - private void removeParticipants(List<Identity> identitiesToRemove) { - for(BusinessGroup group:getCourseGroups()) { - for(Identity identityToRemove : identitiesToRemove) { - if(securityManager.isIdentityInSecurityGroup(identityToRemove, group.getPartipiciantGroup())) { - securityManager.removeIdentityFromSecurityGroup(identityToRemove, group.getPartipiciantGroup()); - } - } - } - } - - private List<BusinessGroup> getCourseGroups() { - if("CourseModule".equals(repoEntry.getOlatResource().getResourceableTypeName())) { - ICourse course = CourseFactory.loadCourse(repoEntry.getOlatResource()); - CourseGroupManager gm = course.getCourseEnvironment().getCourseGroupManager(); - List<BusinessGroup> groups = gm.getAllBusinessGroups(); - return groups; - } - return Collections.emptyList(); - } -} \ No newline at end of file diff --git a/src/main/resources/database/mysql/alter_8_1_x_to_8_2_0.sql b/src/main/resources/database/mysql/alter_8_1_x_to_8_2_0.sql index 8797bc28ba4..d946ed5e2a4 100644 --- a/src/main/resources/database/mysql/alter_8_1_x_to_8_2_0.sql +++ b/src/main/resources/database/mysql/alter_8_1_x_to_8_2_0.sql @@ -99,6 +99,21 @@ create or replace view o_re_strict_tutor_v as ( where re.membersonly=1 and re.accesscode=1 ); +create or replace view o_re_membership_v as ( + select + membership.id as membership_id, + membership.identity_id as identity_id, + membership.lastmodified as lastmodified, + membership.creationdate as creationdate, + re_owner_member.repositoryentry_id as owner_re_id, + re_tutor_member.repositoryentry_id as tutor_re_id, + re_part_member.repositoryentry_id as participant_re_id + from o_bs_membership as membership + left join o_repositoryentry as re_part_member on (membership.secgroup_id = re_part_member.fk_participantgroup) + left join o_repositoryentry as re_tutor_member on (membership.secgroup_id = re_tutor_member.fk_tutorgroup) + left join o_repositoryentry as re_owner_member on (membership.secgroup_id = re_owner_member.fk_ownergroup) +); + create or replace view o_bs_gp_membership_v as ( select membership.id as membership_id, @@ -129,6 +144,12 @@ create or replace view o_gp_business_v as ( gp.autocloseranks_enabled as autocloseranks_enabled, (select count(part.id) from o_bs_membership as part where part.secgroup_id = gp.fk_partipiciantgroup) as num_of_participants, (select count(own.id) from o_bs_membership as own where own.secgroup_id = gp.fk_ownergroup) as num_of_owners, + (case when gp.waitinglist_enabled = 1 + then + (select count(waiting.id) from o_bs_membership as waiting where waiting.secgroup_id = gp.fk_partipiciantgroup) + else + 0 + end) as num_waiting, (select count(offer.offer_id) from o_ac_offer as offer where offer.fk_resource_id = gp.fk_resource and offer.is_valid=1 diff --git a/src/test/java/org/olat/group/test/BusinessGroupDAOTest.java b/src/test/java/org/olat/group/test/BusinessGroupDAOTest.java index fa88248027e..b7f73f5f62a 100644 --- a/src/test/java/org/olat/group/test/BusinessGroupDAOTest.java +++ b/src/test/java/org/olat/group/test/BusinessGroupDAOTest.java @@ -1252,7 +1252,7 @@ public class BusinessGroupDAOTest extends OlatTestCase { //check owner + attendee int countMembershipA = businessGroupDao.countMembershipInfoInBusinessGroups(id, groupKeys); Assert.assertEquals(3, countMembershipA); - List<BusinessGroupMembershipViewImpl> memberships = businessGroupDao.getMembershipInfoInBusinessGroups(id, groupKeys); + List<BusinessGroupMembershipViewImpl> memberships = businessGroupDao.getMembershipInfoInBusinessGroups(groupKeys, id); Assert.assertNotNull(memberships); Assert.assertEquals(3, memberships.size()); @@ -1274,6 +1274,40 @@ public class BusinessGroupDAOTest extends OlatTestCase { Assert.assertEquals(3, found); } + @Test + public void getMembershipInfoInBusinessGroupsWithoutIdentityParam() { + Identity id1 = JunitTestHelper.createAndPersistIdentityAsUser("is-in-grp-" + UUID.randomUUID().toString()); + Identity id2 = JunitTestHelper.createAndPersistIdentityAsUser("is-in-grp-" + UUID.randomUUID().toString()); + Identity id3 = JunitTestHelper.createAndPersistIdentityAsUser("is-in-grp-" + UUID.randomUUID().toString()); + + BusinessGroup group1 = businessGroupDao.createAndPersist(id1, "is-in-grp-1", "is-in-grp-1-desc", 0, 5, true, false, true, false, false); + BusinessGroup group2 = businessGroupDao.createAndPersist(id2, "is-in-grp-2", "is-in-grp-2-desc", 0, 5, true, false, true, false, false); + BusinessGroup group3 = businessGroupDao.createAndPersist(null, "is-in-grp-3", "is-in-grp-3-desc", 0, 5, true, false, true, false, false); + dbInstance.commitAndCloseSession(); + + securityManager.addIdentityToSecurityGroup(id1, group1.getPartipiciantGroup()); + securityManager.addIdentityToSecurityGroup(id1, group3.getWaitingGroup()); + securityManager.addIdentityToSecurityGroup(id2, group3.getOwnerGroup()); + securityManager.addIdentityToSecurityGroup(id3, group2.getWaitingGroup()); + securityManager.addIdentityToSecurityGroup(id3, group3.getPartipiciantGroup()); + dbInstance.commitAndCloseSession(); + + List<Long> groupKeys = new ArrayList<Long>(); + groupKeys.add(group1.getKey()); + groupKeys.add(group2.getKey()); + groupKeys.add(group3.getKey()); + + //check owner + attendee + waiting + List<BusinessGroupMembershipViewImpl> memberships = businessGroupDao.getMembershipInfoInBusinessGroups(groupKeys); + Assert.assertNotNull(memberships); + Assert.assertEquals(7, memberships.size()); + for(BusinessGroupMembershipViewImpl membership:memberships) { + Assert.assertNotNull(membership.getIdentityKey()); + Assert.assertNotNull(membership.getCreationDate()); + Assert.assertNotNull(membership.getLastModified()); + } + } + private boolean contains(List<BusinessGroupView> views, BusinessGroup group) { if(views != null && !views.isEmpty()) { for(BusinessGroupView view:views) { diff --git a/src/test/java/org/olat/repository/RepositoryManagerTest.java b/src/test/java/org/olat/repository/RepositoryManagerTest.java index 3357b58f69a..b09119febda 100644 --- a/src/test/java/org/olat/repository/RepositoryManagerTest.java +++ b/src/test/java/org/olat/repository/RepositoryManagerTest.java @@ -53,6 +53,7 @@ import org.olat.core.util.CodeHelper; import org.olat.core.util.resource.OresHelper; import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroupService; +import org.olat.repository.model.RepositoryEntryMembership; import org.olat.resource.OLATResource; import org.olat.resource.OLATResourceManager; import org.olat.test.JMSCodePointServerJunitHelper; @@ -390,6 +391,78 @@ public class RepositoryManagerTest extends OlatTestCase { Assert.assertFalse(isParticipant3); } + @Test + public void getRepositoryentryMembership() { + //create a repository entry with an owner and a participant + Identity admin = securityManager.findIdentityByName("administrator"); + Identity id1 = JunitTestHelper.createAndPersistIdentityAsUser("re-m-is-" + UUID.randomUUID().toString()); + Identity id2 = JunitTestHelper.createAndPersistIdentityAsUser("re-m-is-" + UUID.randomUUID().toString()); + Identity id3 = JunitTestHelper.createAndPersistIdentityAsUser("re-m-is-" + UUID.randomUUID().toString()); + Identity id4 = JunitTestHelper.createAndPersistIdentityAsUser("re-m-is-" + UUID.randomUUID().toString()); + Identity id5 = JunitTestHelper.createAndPersistIdentityAsUser("re-m-is-" + UUID.randomUUID().toString()); + Identity id6 = JunitTestHelper.createAndPersistIdentityAsUser("re-m-is-" + UUID.randomUUID().toString()); + RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry(); + dbInstance.commitAndCloseSession(); + if(securityManager.isIdentityInSecurityGroup(admin, re.getOwnerGroup())) { + securityManager.removeIdentityFromSecurityGroup(admin, re.getOwnerGroup()); + } + securityManager.addIdentityToSecurityGroup(id1, re.getOwnerGroup()); + securityManager.addIdentityToSecurityGroup(id2, re.getOwnerGroup()); + securityManager.addIdentityToSecurityGroup(id3, re.getTutorGroup()); + securityManager.addIdentityToSecurityGroup(id4, re.getTutorGroup()); + securityManager.addIdentityToSecurityGroup(id5, re.getParticipantGroup()); + securityManager.addIdentityToSecurityGroup(id6, re.getParticipantGroup()); + securityManager.addIdentityToSecurityGroup(id1, re.getParticipantGroup()); + dbInstance.commitAndCloseSession(); + + Set<Long> identityKeys = new HashSet<Long>(); + identityKeys.add(id1.getKey()); + identityKeys.add(id2.getKey()); + identityKeys.add(id3.getKey()); + identityKeys.add(id4.getKey()); + identityKeys.add(id5.getKey()); + identityKeys.add(id6.getKey()); + + //check with all identities + List<RepositoryEntryMembership> memberships = repositoryManager.getRepositoryEntryMembership(re); + Assert.assertNotNull(memberships); + Assert.assertEquals(7, memberships.size()); + for(RepositoryEntryMembership membership:memberships) { + if(membership.getOwnerRepoKey() != null) { + Assert.assertEquals(re.getKey(), membership.getOwnerRepoKey()); + } else if (membership.getTutorRepoKey() != null) { + Assert.assertEquals(re.getKey(), membership.getTutorRepoKey()); + } else if (membership.getParticipantRepoKey() != null) { + Assert.assertEquals(re.getKey(), membership.getParticipantRepoKey()); + } else { + Assert.assertTrue(false); + } + Assert.assertTrue(identityKeys.contains(membership.getIdentityKey())); + } + + //check with id1 + List<RepositoryEntryMembership> membership1s = repositoryManager.getRepositoryEntryMembership(re, id1); + Assert.assertNotNull(membership1s); + Assert.assertEquals(2, membership1s.size()); + for(RepositoryEntryMembership membership:membership1s) { + if(membership.getOwnerRepoKey() != null) { + Assert.assertEquals(re.getKey(), membership.getOwnerRepoKey()); + } else if (membership.getParticipantRepoKey() != null) { + Assert.assertEquals(re.getKey(), membership.getParticipantRepoKey()); + } else { + Assert.assertTrue(false); + } + Assert.assertEquals(id1.getKey(), membership.getIdentityKey()); + } + } + + @Test + public void getRepositoryentryMembershipAgainstDummy() { + //no repo, no identities + List<RepositoryEntryMembership> membership2s = repositoryManager.getRepositoryEntryMembership(null); + Assert.assertNotNull(membership2s); + Assert.assertTrue(membership2s.isEmpty()); + } @Test public void testCountByTypeLimitAccess() { -- GitLab