summaryrefslogtreecommitdiffstats
path: root/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
diff options
context:
space:
mode:
authorKevin McCarthy <kmccarth@redhat.com>2007-09-17 11:46:48 -0700
committerKevin McCarthy <kmccarth@redhat.com>2007-09-17 11:46:48 -0700
commitcc1585daff35398f198cf2e398b8187ca990bf5e (patch)
treea0e18bda023256d3fa9180739aa0f3559a8df432 /ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
parent65e4d27e99cb939926f4e9e972a9c27d81c3b976 (diff)
downloadfreeipa-cc1585daff35398f198cf2e398b8187ca990bf5e.tar.gz
freeipa-cc1585daff35398f198cf2e398b8187ca990bf5e.tar.xz
freeipa-cc1585daff35398f198cf2e398b8187ca990bf5e.zip
Persist adds and removes on a server round trip.
Diffstat (limited to 'ipa-server/ipa-gui/ipagui/templates/groupeditform.kid')
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/groupeditform.kid73
1 files changed, 62 insertions, 11 deletions
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
index dc7eb3dda..b9b5df2b4 100644
--- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
@@ -1,13 +1,18 @@
<div xmlns:py="http://purl.org/kid/ns#"
class="simpleroster">
- <form action="${action}" name="${name}" method="${method}" class="tableform">
+ <form action="${action}" name="${name}" method="${method}" class="tableform"
+ onsubmit="preSubmit()" >
<?python searchurl = tg.url('/userlist_ajax') ?>
<script type="text/javascript">
+ // this is used for round-trip recontruction of the names.
+ // the hidden fields only contain uids.
+ var uid_to_cn_hash = new Hash();
+
function toggleProtectedFields(checkbox) {
- gidnumberField = $('form_gidnumber');
+ var gidnumberField = $('form_gidnumber');
if (checkbox.checked) {
gidnumberField.disabled = false;
} else {
@@ -23,11 +28,13 @@
}
function adduser(uid, cn) {
- newdiv = document.createElement('div');
+ uid_to_cn_hash[uid] = cn;
+
+ var newdiv = document.createElement('div');
newdiv.appendChild(document.createTextNode(
cn.escapeHTML() + " (" + uid.escapeHTML() + ") "));
- undolink = document.createElement('a');
+ var undolink = document.createElement('a');
undolink.setAttribute('href', '');
undolink.setAttribute('onclick',
'new Effect.Fade(Element.up(this), {afterFinish: removeElement});' +
@@ -35,7 +42,7 @@
undolink.appendChild(document.createTextNode("undo"));
newdiv.appendChild(undolink);
- uidInfo = document.createElement('input');
+ var uidInfo = document.createElement('input');
uidInfo.setAttribute('type', 'hidden');
uidInfo.setAttribute('name', 'uidadd');
uidInfo.setAttribute('value', uid);
@@ -48,18 +55,20 @@
}
function adduserHandler(element, uid, cn) {
- newdiv = adduser(uid, cn)
+ var newdiv = adduser(uid, cn)
new Effect.Fade(Element.up(element));
new Effect.Appear(newdiv);
/* Element.up(element).remove(); */
}
function removeuser(uid, cn) {
- newdiv = document.createElement('div');
+ uid_to_cn_hash[uid] = cn;
+
+ var newdiv = document.createElement('div');
newdiv.appendChild(document.createTextNode(
cn.escapeHTML() + " (" + uid.escapeHTML() + ") "));
- undolink = document.createElement('a');
+ var undolink = document.createElement('a');
undolink.setAttribute('href', '');
undolink.setAttribute('onclick',
'new Effect.Fade(Element.up(this), {afterFinish: removeElement});' +
@@ -68,7 +77,7 @@
undolink.appendChild(document.createTextNode("undo"));
newdiv.appendChild(undolink);
- uidInfo = document.createElement('input');
+ var uidInfo = document.createElement('input');
uidInfo.setAttribute('type', 'hidden');
uidInfo.setAttribute('name', 'uiddel');
uidInfo.setAttribute('value', uid);
@@ -81,7 +90,7 @@
}
function removeuserHandler(element, uid, cn) {
- newdiv = removeuser(uid, cn);
+ var newdiv = removeuser(uid, cn);
new Effect.Fade(Element.up(element));
new Effect.Appear(newdiv);
/* Element.up(element).remove(); */
@@ -109,6 +118,12 @@
parameters: { uid: $('uid').value } });
return false;
}
+
+ function preSubmit() {
+ var json = uid_to_cn_hash.toJSON();
+ $('form_uid_to_cn_json').value = json;
+ return true;
+ }
</script>
<div py:for="field in hidden_fields"
@@ -178,7 +193,7 @@
member.get('sn', ''))
?>
${member_name}
- <a href=""
+ <a href="#"
onclick="removeuserHandler(this, '${member_uid}', '${member_name}');
return false;"
>remove</a>
@@ -227,4 +242,40 @@
</table>
</form>
+
+ <script type="text/javascript">
+ /*
+ * This section restores the contents of the add and remove lists
+ * dynamically if we have to refresh the page
+ */
+ if ($('form_uid_to_cn_json').value != "") {
+ uid_to_cn_hash = new Hash($('form_uid_to_cn_json').value.evalJSON());
+ }
+ </script>
+
+ <?python
+ uidadds = value.get('uidadd', [])
+ if not(isinstance(uidadds,list) or isinstance(uidadds,tuple)):
+ uidadds = [uidadds]
+
+ uiddels = value.get('uiddel', [])
+ if not(isinstance(uiddels,list) or isinstance(uiddels,tuple)):
+ uiddels = [uiddels]
+ ?>
+
+ <script py:for="uidadd in uidadds">
+ var uid = "${uidadd}";
+ var cn = uid_to_cn_hash[uid];
+ var newdiv = adduser(uid, cn);
+ newdiv.style.display = 'block';
+ </script>
+
+ <script py:for="uiddel in uiddels">
+ var uid = "${uiddel}";
+ var cn = uid_to_cn_hash[uid];
+ var newdiv = removeuser(uid, cn);
+ newdiv.style.display = 'block';
+ $('member-' + uid).style.display = 'none';
+ </script>
+
</div>