diff options
author | Kevin McCarthy <kmccarth@redhat.com> | 2007-09-17 15:24:11 -0700 |
---|---|---|
committer | Kevin McCarthy <kmccarth@redhat.com> | 2007-09-17 15:24:11 -0700 |
commit | 8190404706252774394110c4375633721df08641 (patch) | |
tree | d487fe5d312a338c5ff8cbe4cda975417a8f3b5f /ipa-server | |
parent | cc1585daff35398f198cf2e398b8187ca990bf5e (diff) | |
download | freeipa-8190404706252774394110c4375633721df08641.tar.gz freeipa-8190404706252774394110c4375633721df08641.tar.xz freeipa-8190404706252774394110c4375633721df08641.zip |
Prevent members from being added added twice.
Display search message while in progress.
Correctly calculate number of search results after filtering.
Diffstat (limited to 'ipa-server')
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/groupeditform.kid | 36 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/userlistajax.kid | 29 |
2 files changed, 54 insertions, 11 deletions
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid index b9b5df2b..df0095d9 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid @@ -11,6 +11,15 @@ // the hidden fields only contain uids. var uid_to_cn_hash = new Hash(); + // used to filter search results. + // records uids already in the group + var member_hash = new Hash(); + + // used to prevent double adding + // records uid to be added + var added_hash = new Hash(); + + function toggleProtectedFields(checkbox) { var gidnumberField = $('form_gidnumber'); if (checkbox.checked) { @@ -30,6 +39,11 @@ function adduser(uid, cn) { uid_to_cn_hash[uid] = cn; + if ((added_hash[uid] == 1) || (member_hash[uid] == 1)) { + return null; + } + added_hash[uid] = 1; + var newdiv = document.createElement('div'); newdiv.appendChild(document.createTextNode( cn.escapeHTML() + " (" + uid.escapeHTML() + ") ")); @@ -38,6 +52,7 @@ undolink.setAttribute('href', ''); undolink.setAttribute('onclick', 'new Effect.Fade(Element.up(this), {afterFinish: removeElement});' + + 'added_hash.remove("' + uid + '");' + 'return false;'); undolink.appendChild(document.createTextNode("undo")); newdiv.appendChild(undolink); @@ -56,9 +71,11 @@ function adduserHandler(element, uid, cn) { var newdiv = adduser(uid, cn) - new Effect.Fade(Element.up(element)); - new Effect.Appear(newdiv); - /* Element.up(element).remove(); */ + if (newdiv != null) { + new Effect.Fade(Element.up(element)); + new Effect.Appear(newdiv); + /* Element.up(element).remove(); */ + } } function removeuser(uid, cn) { @@ -112,10 +129,12 @@ } function doSearch() { + $('searchresults').update("Searching..."); new Ajax.Updater('searchresults', '${searchurl}', { asynchronous:true, - parameters: { uid: $('uid').value } }); + parameters: { uid: $('uid').value }, + evalScripts: true }); return false; } @@ -192,11 +211,14 @@ member_name = "%s %s" % (member.get('givenname', ''), member.get('sn', '')) ?> - ${member_name} + ${member_name} (${member_uid}) <a href="#" onclick="removeuserHandler(this, '${member_uid}', '${member_name}'); return false;" >remove</a> + <script type="text/javascript"> + member_hash["${member_uid}"] = 1; + </script> </div> </div> @@ -267,7 +289,9 @@ var uid = "${uidadd}"; var cn = uid_to_cn_hash[uid]; var newdiv = adduser(uid, cn); - newdiv.style.display = 'block'; + if (newdiv != null) { + newdiv.style.display = 'block'; + } </script> <script py:for="uiddel in uiddels"> diff --git a/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid b/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid index ebfb879b..a2d6a921 100644 --- a/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid +++ b/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid @@ -1,14 +1,33 @@ <div xmlns:py="http://purl.org/kid/ns#"> + <div id="search-results-count"> + </div> + <script type="text/javascript"> + search_string = "${uid}"; + results_counter = 0; + </script> <div py:if='(users != None) and (len(users) > 0)'> - <div>${len(users)} results returned:</div> - <div py:for="user in users"> + <div py:for="user in users" id="search-${user.uid}"> + <script type="text/javascript"> + if ((added_hash["${user.uid}"] == 1) || + (member_hash["${user.uid}"] == 1)) { + $("search-${user.uid}").style.display = 'none'; + } else { + results_counter = results_counter + 1; + } + </script> ${user.givenName} ${user.sn} (${user.uid}) <a href="" onclick="adduserHandler(this, '${user.uid}', '${user.cn}'); return false;" >add</a> </div> </div> - <div py:if='(users != None) and (len(users) == 0)'> - No results found for "${uid}" - </div> + <script type="text/javascript"> + if (results_counter == 0) { + $('search-results-count').appendChild(document.createTextNode( + "No results found for " + search_string)); + } else { + $('search-results-count').appendChild(document.createTextNode( + "" + results_counter + " results found:")); + } + </script> </div> |