diff options
author | Kevin McCarthy <kmccarth@redhat.com> | 2007-09-28 16:01:42 -0700 |
---|---|---|
committer | Kevin McCarthy <kmccarth@redhat.com> | 2007-09-28 16:01:42 -0700 |
commit | dbf8c1aeb98c730b7f4a83bfc15062040e331083 (patch) | |
tree | 4b1b422e9993d103bffb8764a5b6bc04388f7296 /ipa-server/ipa-gui/ipagui/templates/usereditform.kid | |
parent | 0cfccd0f8cf77fd2a4197cb47becea85173ca48a (diff) | |
download | freeipa-dbf8c1aeb98c730b7f4a83bfc15062040e331083.tar.gz freeipa-dbf8c1aeb98c730b7f4a83bfc15062040e331083.tar.xz freeipa-dbf8c1aeb98c730b7f4a83bfc15062040e331083.zip |
Add group management to the user edit page.
Added a couple more API calls to make the inverse operations easier.
Diffstat (limited to 'ipa-server/ipa-gui/ipagui/templates/usereditform.kid')
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/usereditform.kid | 164 |
1 files changed, 163 insertions, 1 deletions
diff --git a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid index 3f7db50d7..36c65fb16 100644 --- a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid @@ -1,6 +1,16 @@ <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 +from ipagui.helpers import ipahelper +?> + + <script type="text/javascript" charset="utf-8" + src="${tg.url('/static/javascript/dynamicedit.js')}"></script> + + <?python searchurl = tg.url('/useredit_search') ?> <script type="text/javascript"> function toggleProtectedFields(checkbox) { @@ -22,6 +32,40 @@ $('form_editprotected').value = ''; } } + + 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() { + $('searchresults').update("Searching..."); + new Ajax.Updater('searchresults', + '${searchurl}', + { asynchronous:true, + parameters: { criteria: $('criteria').value }, + evalScripts: true }); + return false; + } + + // override dynamicedit.js version + // we don't need to show [group] nor italize groups + function renderMemberInfo(newdiv, info) { + if (info.type == "group") { + newdiv.appendChild(document.createTextNode( + info.name.escapeHTML() + " ")); + } + } </script> @@ -213,6 +257,81 @@ </tr> </table> + <div> + <div class="formsection">Groups</div> + + <div class="floatlist"> + <div class="floatheader">To Remove:</div> + <div id="delmembers"> + </div> + </div> + + <div> + <?python div_counter = 1 ?> + <div py:for="group in user_groups" id="member-${div_counter}"> + <?python + group_dn = group.get('dn') + group_dn_esc = ipahelper.javascript_string_escape(group_dn) + + group_name = group.get('cn') + group_descr = "[group]" + group_type = "group" + + group_name_esc = ipahelper.javascript_string_escape(group_name) + group_descr_esc = ipahelper.javascript_string_escape(group_descr) + group_type_esc = ipahelper.javascript_string_escape(group_type) + ?> + <span id="member-info-${div_counter}"></span> + <script type="text/javascript"> + renderMemberInfo($('member-info-${div_counter}'), + new MemberDisplayInfo('${group_name_esc}', + '${group_descr_esc}', + '${group_type_esc}')); + </script> + <a href="#" + onclick="removememberHandler(this, '${group_dn_esc}', + new MemberDisplayInfo('${group_name_esc}', + '${group_descr_esc}', + '${group_type_esc}')); + return false;" + >remove</a> + <script type="text/javascript"> + dn_to_member_div_id['${group_dn_esc}'] = "member-${div_counter}"; + member_hash["${group_dn_esc}"] = 1; + </script> + <?python + div_counter = div_counter + 1 + ?> + </div> + </div> + + </div> + + <div style="clear:both"> + <div class="formsection">Add Groups</div> + + <div class="floatlist"> + <div class="floatheader">To Add:</div> + <div id="newmembers"> + </div> + </div> + + <div> + <div id="search"> + <input id="criteria" type="text" name="criteria" + onkeypress="return enterDoSearch(event);" /> + <input type="button" value="Find" + onclick="return doSearch();" + /> + </div> + <div id="searchresults"> + </div> + </div> + </div> + + + + <table class="formtable" cellpadding="2" cellspacing="0" border="0"> <tr> <th> @@ -232,9 +351,52 @@ </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_dn_to_info_json').value != "") { + dn_to_info_hash = new Hash($('form_dn_to_info_json').value.evalJSON()); + } + if ($('form_editprotected').value != "") { $('toggleprotected_checkbox').checked = true; toggleProtectedFields($('toggleprotected_checkbox')); } </script> + + <?python + dnadds = value.get('dnadd', []) + if not(isinstance(dnadds,list) or isinstance(dnadds,tuple)): + dnadds = [dnadds] + + dndels = value.get('dndel', []) + if not(isinstance(dndels,list) or isinstance(dndels,tuple)): + dndels = [dndels] + ?> + + <script py:for="dnadd in dnadds"> + <?python + dnadd_esc = ipahelper.javascript_string_escape(dnadd) + ?> + var dn = "${dnadd_esc}"; + var info = dn_to_info_hash[dn]; + var newdiv = addmember(dn, info); + if (newdiv != null) { + newdiv.style.display = 'block'; + } + </script> + + <script py:for="dndel in dndels"> + <?python + dndel_esc = ipahelper.javascript_string_escape(dndel) + ?> + var dn = "${dndel_esc}"; + var info = dn_to_info_hash[dn]; + var newdiv = removemember(dn, info); + newdiv.style.display = 'block'; + orig_div_id = dn_to_member_div_id[dn] + $(orig_div_id).style.display = 'none'; + </script> + </div> |