diff options
Diffstat (limited to 'ipa-server/ipa-gui/ipagui/templates/groupeditform.kid')
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/groupeditform.kid | 150 |
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> |