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.kid150
1 files changed, 149 insertions, 1 deletions
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
index 34b8a0080..dc7eb3dda 100644
--- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
@@ -2,15 +2,113 @@
class="simpleroster">
<form action="${action}" name="${name}" method="${method}" class="tableform">
+
+ <?python searchurl = tg.url('/userlist_ajax') ?>
+
<script type="text/javascript">
function toggleProtectedFields(checkbox) {
- gidnumberField = document.getElementById('form_gidnumber');
+ gidnumberField = $('form_gidnumber');
if (checkbox.checked) {
gidnumberField.disabled = false;
} else {
gidnumberField.disabled = true;
}
}
+
+ /*
+ * Callback used for afterFinish in scriptaculous effect
+ */
+ function removeElement(effect) {
+ Element.remove(effect.element);
+ }
+
+ function adduser(uid, cn) {
+ newdiv = document.createElement('div');
+ newdiv.appendChild(document.createTextNode(
+ cn.escapeHTML() + " (" + uid.escapeHTML() + ") "));
+
+ undolink = document.createElement('a');
+ undolink.setAttribute('href', '');
+ undolink.setAttribute('onclick',
+ 'new Effect.Fade(Element.up(this), {afterFinish: removeElement});' +
+ 'return false;');
+ undolink.appendChild(document.createTextNode("undo"));
+ newdiv.appendChild(undolink);
+
+ uidInfo = document.createElement('input');
+ uidInfo.setAttribute('type', 'hidden');
+ uidInfo.setAttribute('name', 'uidadd');
+ uidInfo.setAttribute('value', uid);
+ newdiv.appendChild(uidInfo);
+
+ newdiv.style.display = 'none';
+ $('newmembers').appendChild(newdiv);
+
+ return newdiv
+ }
+
+ function adduserHandler(element, uid, cn) {
+ 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');
+ newdiv.appendChild(document.createTextNode(
+ cn.escapeHTML() + " (" + uid.escapeHTML() + ") "));
+
+ undolink = document.createElement('a');
+ undolink.setAttribute('href', '');
+ undolink.setAttribute('onclick',
+ 'new Effect.Fade(Element.up(this), {afterFinish: removeElement});' +
+ "new Effect.Appear($('member-" + uid + "'));" +
+ 'return false;');
+ undolink.appendChild(document.createTextNode("undo"));
+ newdiv.appendChild(undolink);
+
+ uidInfo = document.createElement('input');
+ uidInfo.setAttribute('type', 'hidden');
+ uidInfo.setAttribute('name', 'uiddel');
+ uidInfo.setAttribute('value', uid);
+ newdiv.appendChild(uidInfo);
+
+ newdiv.style.display = 'none';
+ $('delmembers').appendChild(newdiv);
+
+ return newdiv
+ }
+
+ function removeuserHandler(element, uid, cn) {
+ newdiv = removeuser(uid, cn);
+ new Effect.Fade(Element.up(element));
+ new Effect.Appear(newdiv);
+ /* Element.up(element).remove(); */
+ }
+
+ function enterDoSearch(e) {
+ var keyPressed;
+ if (window.event) {
+ keyPressed = window.event.keyCode;
+ } else {
+ keyPressed = e.which;
+ }
+
+ if (keyPressed == 13) {
+ return doSearch();
+ } else {
+ return true;
+ }
+ }
+
+ function doSearch() {
+ new Ajax.Updater('searchresults',
+ '${searchurl}',
+ { asynchronous:true,
+ parameters: { uid: $('uid').value } });
+ return false;
+ }
</script>
<div py:for="field in hidden_fields"
@@ -63,6 +161,56 @@
</tr>
</table>
+ <div>
+ <div class="formsection">Group Members</div>
+
+ <div style="float:right; width:50%">
+ <div>To Remove:</div>
+ <div id="delmembers">
+ </div>
+ </div>
+
+ <div>
+ <div py:for="member in members" id="member-${member.get('uid')}">
+ <?python
+ member_uid = member.get('uid')
+ member_name = "%s %s" % (member.get('givenname', ''),
+ member.get('sn', ''))
+ ?>
+ ${member_name}
+ <a href=""
+ onclick="removeuserHandler(this, '${member_uid}', '${member_name}');
+ return false;"
+ >remove</a>
+ </div>
+ </div>
+
+ </div>
+
+ <div style="clear:both">
+ <div class="formsection">Add Persons</div>
+
+ <div style="float:right; width:50%">
+ <div>To Add:</div>
+ <div id="newmembers">
+ </div>
+ </div>
+
+ <div>
+ <div id="search">
+ <input id="uid" type="text" name="uid"
+ onkeypress="return enterDoSearch(event);" />
+ <input type="button" value="Find Users"
+ onclick="return doSearch();"
+ />
+ </div>
+ <div id="searchresults">
+ </div>
+ </div>
+ </div>
+
+
+
<table class="formtable" cellpadding="2" cellspacing="0" border="0">
<tr>
<th>