Index: lams_central/src/java/org/lamsfoundation/lams/web/OrganisationGroupAction.java =================================================================== diff -u -r617a2d7073677293da56a8b86366e09df33c86ef -raf507c977983918438951ba8c52c4944a74dfc00 --- lams_central/src/java/org/lamsfoundation/lams/web/OrganisationGroupAction.java (.../OrganisationGroupAction.java) (revision 617a2d7073677293da56a8b86366e09df33c86ef) +++ lams_central/src/java/org/lamsfoundation/lams/web/OrganisationGroupAction.java (.../OrganisationGroupAction.java) (revision af507c977983918438951ba8c52c4944a74dfc00) @@ -417,23 +417,10 @@ orgGrouping = new OrganisationGrouping(); orgGrouping.setOrganisationId(organisationId); } - - // check if there is no grouping with the same name + // update grouping name String orgGroupingName = orgGroupingJSON.getString("name"); - if (!orgGroupingName.equals(orgGrouping.getName())) { - Map duplicateCheckProperties = new TreeMap(); - duplicateCheckProperties.put("organisationId", organisationId); - duplicateCheckProperties.put("name", orgGroupingName); + orgGrouping.setName(orgGroupingName); - List duplicateOrgGrouping = getUserManagementService() - .findByProperties(OrganisationGrouping.class, duplicateCheckProperties); - if (duplicateOrgGrouping.isEmpty()) { - orgGrouping.setName(orgGroupingName); - } else { - throw new InvalidParameterException("Grouping with name \"" + orgGroupingName + "\" already exists"); - } - } - getUserManagementService().saveOrganisationGrouping(orgGrouping, orgGroups); return null; } Index: lams_central/web/includes/javascript/orgGroup.js =================================================================== diff -u -ra0bea10c9022cc2146b3067858932029ca721683 -raf507c977983918438951ba8c52c4944a74dfc00 --- lams_central/web/includes/javascript/orgGroup.js (.../orgGroup.js) (revision a0bea10c9022cc2146b3067858932029ca721683) +++ lams_central/web/includes/javascript/orgGroup.js (.../orgGroup.js) (revision af507c977983918438951ba8c52c4944a74dfc00) @@ -22,6 +22,16 @@ // initialisation based on mode if (!lessonMode) { $('#groupingName').val(grouping.name); + + // ability to save a grouping on pressing the Enter key in the name input field + $('#groupingName').on('keyup', function (e) { + //remove alert class if it was applied + $("#grouping-name-blank-error,#grouping-name-non-unique-error").hide(); + + if (e.keyCode == 13) { + saveGroups(); + } + }); } if (canEdit) { @@ -371,12 +381,35 @@ $('.errorMessage').hide(); var groupingName = $('#groupingName').val(); + // course grouping name can not be blank if (!groupingName) { - // course grouping name can not be blank - $('#groupingNameBlankError').show(); + $('#grouping-name-blank-error').show(); + $('#groupingName').focus(); return false; } + // course grouping name should be unique + var isGroupingNameUnique = false; + $.ajax({ + dataType : 'json', + url : LAMS_URL + 'monitoring/grouping.do', + cache : false, + async : false, + data : { + 'method' : 'checkGroupingNameUnique', + 'organisationID' : grouping.organisationId, + 'name' : groupingName + }, + success : function(response) { + isGroupingNameUnique = response.isGroupingNameUnique; + } + }); + if ((grouping.name != groupingName) && !isGroupingNameUnique) { + $('#grouping-name-non-unique-error').show(); + $('#groupingName').focus(); + return false; + } + // ask if removing new, empty groups is OK var acceptEmptyGroups = true; var groupContainers = $('#groupsTable .groupContainer').not('#newGroupPlaceholder'); Index: lams_central/web/orgGroup.jsp =================================================================== diff -u -r2fab2e212d7c46f61829635d0834821eb5484837 -raf507c977983918438951ba8c52c4944a74dfc00 --- lams_central/web/orgGroup.jsp (.../orgGroup.jsp) (revision 2fab2e212d7c46f61829635d0834821eb5484837) +++ lams_central/web/orgGroup.jsp (.../orgGroup.jsp) (revision af507c977983918438951ba8c52c4944a74dfc00) @@ -69,17 +69,24 @@ + + + + + + + + + + +
readonly="readonly" /> - - - -