summaryrefslogtreecommitdiffstats
path: root/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
diff options
context:
space:
mode:
Diffstat (limited to 'ipa-server/ipa-gui/ipagui/templates/groupeditform.kid')
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/groupeditform.kid129
1 files changed, 79 insertions, 50 deletions
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
index 9e388ee70..0a48dbeb5 100644
--- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
@@ -3,22 +3,31 @@
<form action="${action}" name="${name}" method="${method}" class="tableform"
onsubmit="preSubmit()" >
+<?python
+from ipagui.helpers import ipahelper
+?>
+
<?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();
+ // the hidden fields only contain dns.
+ var dn_to_cn_hash = new Hash();
// used to filter search results.
- // records uids already in the group
+ // records dns already in the group
var member_hash = new Hash();
// used to prevent double adding
- // records uid to be added
+ // records dns to be added
var added_hash = new Hash();
+ // Tracks the div ids that each member belongs to.
+ // Since dn's will contain illegal characters for div ids, this is used
+ // to map them to the correct div
+ var dn_to_member_div_id = new Hash();
+
function toggleProtectedFields(checkbox) {
var gidnumberField = $('form_gidnumber');
@@ -38,32 +47,32 @@
Element.remove(effect.element);
}
- function adduser(uid, cn) {
- uid_to_cn_hash[uid] = cn;
+ function adduser(dn, cn) {
+ dn_to_cn_hash[dn] = cn;
- if ((added_hash[uid] == 1) || (member_hash[uid] == 1)) {
+ if ((added_hash[dn] == 1) || (member_hash[dn] == 1)) {
return null;
}
- added_hash[uid] = 1;
+ added_hash[dn] = 1;
var newdiv = document.createElement('div');
newdiv.appendChild(document.createTextNode(
- cn.escapeHTML() + " (" + uid.escapeHTML() + ") "));
+ cn.escapeHTML() + " "));
var undolink = document.createElement('a');
undolink.setAttribute('href', '');
undolink.setAttribute('onclick',
'new Effect.Fade(Element.up(this), {afterFinish: removeElement});' +
- 'added_hash.remove("' + uid + '");' +
+ 'added_hash.remove("' + jsStringEscape(dn) + '");' +
'return false;');
undolink.appendChild(document.createTextNode("undo"));
newdiv.appendChild(undolink);
- var uidInfo = document.createElement('input');
- uidInfo.setAttribute('type', 'hidden');
- uidInfo.setAttribute('name', 'uidadd');
- uidInfo.setAttribute('value', uid);
- newdiv.appendChild(uidInfo);
+ var dnInfo = document.createElement('input');
+ dnInfo.setAttribute('type', 'hidden');
+ dnInfo.setAttribute('name', 'dnadd');
+ dnInfo.setAttribute('value', dn);
+ newdiv.appendChild(dnInfo);
newdiv.style.display = 'none';
$('newmembers').appendChild(newdiv);
@@ -71,8 +80,8 @@
return newdiv
}
- function adduserHandler(element, uid, cn) {
- var newdiv = adduser(uid, cn)
+ function adduserHandler(element, dn, cn) {
+ var newdiv = adduser(dn, cn)
if (newdiv != null) {
new Effect.Fade(Element.up(element));
new Effect.Appear(newdiv);
@@ -80,27 +89,28 @@
}
}
- function removeuser(uid, cn) {
- uid_to_cn_hash[uid] = cn;
+ function removeuser(dn, cn) {
+ dn_to_cn_hash[dn] = cn;
var newdiv = document.createElement('div');
newdiv.appendChild(document.createTextNode(
- cn.escapeHTML() + " (" + uid.escapeHTML() + ") "));
+ cn.escapeHTML() + " "));
+ orig_div_id = dn_to_member_div_id[dn];
var undolink = document.createElement('a');
undolink.setAttribute('href', '');
undolink.setAttribute('onclick',
'new Effect.Fade(Element.up(this), {afterFinish: removeElement});' +
- "new Effect.Appear($('member-" + uid + "'));" +
+ "new Effect.Appear($('" + orig_div_id + "'));" +
'return false;');
undolink.appendChild(document.createTextNode("undo"));
newdiv.appendChild(undolink);
- var uidInfo = document.createElement('input');
- uidInfo.setAttribute('type', 'hidden');
- uidInfo.setAttribute('name', 'uiddel');
- uidInfo.setAttribute('value', uid);
- newdiv.appendChild(uidInfo);
+ var dnInfo = document.createElement('input');
+ dnInfo.setAttribute('type', 'hidden');
+ dnInfo.setAttribute('name', 'dndel');
+ dnInfo.setAttribute('value', dn);
+ newdiv.appendChild(dnInfo);
newdiv.style.display = 'none';
$('delmembers').appendChild(newdiv);
@@ -108,8 +118,8 @@
return newdiv
}
- function removeuserHandler(element, uid, cn) {
- var newdiv = removeuser(uid, cn);
+ function removeuserHandler(element, dn, cn) {
+ var newdiv = removeuser(dn, cn);
new Effect.Fade(Element.up(element));
new Effect.Appear(newdiv);
/* Element.up(element).remove(); */
@@ -141,8 +151,8 @@
}
function preSubmit() {
- var json = uid_to_cn_hash.toJSON();
- $('form_uid_to_cn_json').value = json;
+ var json = dn_to_cn_hash.toJSON();
+ $('form_dn_to_cn_json').value = json;
return true;
}
</script>
@@ -207,20 +217,32 @@
</div>
<div>
- <div py:for="member in members" id="member-${member.get('uid')}">
+ <?python div_counter = 1 ?>
+ <div py:for="member in members" id="member-${div_counter}">
<?python
+ member_dn = member.get('dn')
+ member_dn_esc = ipahelper.javascript_string_escape(member_dn)
+
member_uid = member.get('uid')
+ member_uid_esc = ipahelper.javascript_string_escape(member_uid)
+
member_name = "%s %s" % (member.get('givenname', ''),
member.get('sn', ''))
+ member_name_esc = ipahelper.javascript_string_escape(member_name)
?>
${member_name} (${member_uid})
<a href="#"
- onclick="removeuserHandler(this, '${member_uid}', '${member_name}');
+ onclick="removeuserHandler(this, '${member_dn_esc}',
+ '${member_name_esc} (${member_uid_esc})');
return false;"
>remove</a>
<script type="text/javascript">
- member_hash["${member_uid}"] = 1;
+ dn_to_member_div_id['${member_dn_esc}'] = "member-${div_counter}";
+ member_hash["${member_dn_esc}"] = 1;
</script>
+ <?python
+ div_counter = div_counter + 1
+ ?>
</div>
</div>
@@ -272,8 +294,8 @@
* 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());
+ if ($('form_dn_to_cn_json').value != "") {
+ dn_to_cn_hash = new Hash($('form_dn_to_cn_json').value.evalJSON());
}
if ($('form_editprotected').value != "") {
@@ -283,30 +305,37 @@
</script>
<?python
- uidadds = value.get('uidadd', [])
- if not(isinstance(uidadds,list) or isinstance(uidadds,tuple)):
- uidadds = [uidadds]
+ dnadds = value.get('dnadd', [])
+ if not(isinstance(dnadds,list) or isinstance(dnadds,tuple)):
+ dnadds = [dnadds]
- uiddels = value.get('uiddel', [])
- if not(isinstance(uiddels,list) or isinstance(uiddels,tuple)):
- uiddels = [uiddels]
+ dndels = value.get('dndel', [])
+ if not(isinstance(dndels,list) or isinstance(dndels,tuple)):
+ dndels = [dndels]
?>
- <script py:for="uidadd in uidadds">
- var uid = "${uidadd}";
- var cn = uid_to_cn_hash[uid];
- var newdiv = adduser(uid, cn);
+ <script py:for="dnadd in dnadds">
+ <?python
+ dnadd_esc = ipahelper.javascript_string_escape(dnadd)
+ ?>
+ var dn = "${dnadd_esc}";
+ var cn = dn_to_cn_hash[dn];
+ var newdiv = adduser(dn, cn);
if (newdiv != null) {
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);
+ <script py:for="dndel in dndels">
+ <?python
+ dndel_esc = ipahelper.javascript_string_escape(dndel)
+ ?>
+ var dn = "${dndel_esc}";
+ var cn = dn_to_cn_hash[dn];
+ var newdiv = removeuser(dn, cn);
newdiv.style.display = 'block';
- $('member-' + uid).style.display = 'none';
+ orig_div_id = dn_to_member_div_id[dn]
+ $(orig_div_id).style.display = 'none';
</script>
</div>