summaryrefslogtreecommitdiffstats
path: root/ipa-server/ipa-gui/ipagui
diff options
context:
space:
mode:
Diffstat (limited to 'ipa-server/ipa-gui/ipagui')
-rw-r--r--ipa-server/ipa-gui/ipagui/forms/group.py4
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/groupeditform.kid99
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/groupeditsearch.kid24
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/groupshow.kid14
4 files changed, 104 insertions, 37 deletions
diff --git a/ipa-server/ipa-gui/ipagui/forms/group.py b/ipa-server/ipa-gui/ipagui/forms/group.py
index d3cfda6fc..5c836ec17 100644
--- a/ipa-server/ipa-gui/ipagui/forms/group.py
+++ b/ipa-server/ipa-gui/ipagui/forms/group.py
@@ -11,7 +11,7 @@ class GroupFields():
group_orig = widgets.HiddenField(name="group_orig")
member_data = widgets.HiddenField(name="member_data")
- dn_to_cn_json = widgets.HiddenField(name="dn_to_cn_json")
+ dn_to_info_json = widgets.HiddenField(name="dn_to_info_json")
class GroupNewValidator(validators.Schema):
cn = validators.String(not_empty=True)
@@ -48,7 +48,7 @@ class GroupEditForm(widgets.Form):
fields = [GroupFields.gidnumber, GroupFields.description,
GroupFields.cn_hidden, GroupFields.editprotected_hidden,
GroupFields.group_orig, GroupFields.member_data,
- GroupFields.dn_to_cn_json]
+ GroupFields.dn_to_info_json]
validator = GroupEditValidator()
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
index 9f5549669..e543b5fa5 100644
--- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
@@ -11,9 +11,21 @@ from ipagui.helpers import ipahelper
<?python searchurl = tg.url('/groupedit_search') ?>
<script type="text/javascript">
+
+ // Stored as the values in the dn_to_info_hash
+ MemberDisplayInfo = Class.create();
+ MemberDisplayInfo.prototype = {
+ initialize: function(name, descr, type) {
+ this.name = name;
+ this.descr = descr;
+ this.type = type;
+ },
+ };
+
+
// this is used for round-trip recontruction of the names.
// the hidden fields only contain dns.
- var dn_to_cn_hash = new Hash();
+ var dn_to_info_hash = new Hash();
// used to filter search results.
// records dns already in the group
@@ -41,14 +53,33 @@ from ipagui.helpers import ipahelper
}
/*
+ * Renders the information about the member into the passed in
+ * element. This is used by addmember and removemember to
+ * consistently create the dom for the member information
+ * (name, descr) and add icons/font changes correct for each type.
+ */
+ function renderMemberInfo(newdiv, info) {
+ if (info.type == "user") {
+ newdiv.appendChild(document.createTextNode(
+ info.name.escapeHTML() + " " + info.descr.escapeHTML() + " "));
+ } else if (info.type == "group") {
+ ital = document.createElement('i');
+ ital.appendChild(document.createTextNode(
+ info.name.escapeHTML() + " " +
+ info.descr.escapeHTML() + " "));
+ newdiv.appendChild(ital);
+ }
+ }
+
+ /*
* Callback used for afterFinish in scriptaculous effect
*/
function removeElement(effect) {
Element.remove(effect.element);
}
- function addmember(dn, cn) {
- dn_to_cn_hash[dn] = cn;
+ function addmember(dn, info) {
+ dn_to_info_hash[dn] = info;
if ((added_hash[dn] == 1) || (member_hash[dn] == 1)) {
return null;
@@ -56,8 +87,7 @@ from ipagui.helpers import ipahelper
added_hash[dn] = 1;
var newdiv = document.createElement('div');
- newdiv.appendChild(document.createTextNode(
- cn.escapeHTML() + " "));
+ renderMemberInfo(newdiv, info);
var undolink = document.createElement('a');
undolink.setAttribute('href', '');
@@ -80,8 +110,8 @@ from ipagui.helpers import ipahelper
return newdiv
}
- function addmemberHandler(element, dn, cn) {
- var newdiv = addmember(dn, cn)
+ function addmemberHandler(element, dn, info) {
+ var newdiv = addmember(dn, info)
if (newdiv != null) {
new Effect.Fade(Element.up(element));
new Effect.Appear(newdiv);
@@ -89,12 +119,11 @@ from ipagui.helpers import ipahelper
}
}
- function removemember(dn, cn) {
- dn_to_cn_hash[dn] = cn;
+ function removemember(dn, info) {
+ dn_to_info_hash[dn] = info;
var newdiv = document.createElement('div');
- newdiv.appendChild(document.createTextNode(
- cn.escapeHTML() + " "));
+ renderMemberInfo(newdiv, info);
orig_div_id = dn_to_member_div_id[dn];
var undolink = document.createElement('a');
@@ -118,8 +147,8 @@ from ipagui.helpers import ipahelper
return newdiv
}
- function removememberHandler(element, dn, cn) {
- var newdiv = removemember(dn, cn);
+ function removememberHandler(element, dn, info) {
+ var newdiv = removemember(dn, info);
new Effect.Fade(Element.up(element));
new Effect.Appear(newdiv);
/* Element.up(element).remove(); */
@@ -151,8 +180,8 @@ from ipagui.helpers import ipahelper
}
function preSubmit() {
- var json = dn_to_cn_hash.toJSON();
- $('form_dn_to_cn_json').value = json;
+ var json = dn_to_info_hash.toJSON();
+ $('form_dn_to_info_json').value = json;
return true;
}
</script>
@@ -225,16 +254,30 @@ from ipagui.helpers import ipahelper
member_uid = member.get('uid')
if member_uid:
- member_cn = "%s %s (%s)" % (member.get('givenName'),
- member.get('sn'),
- member.get('uid'))
+ member_name = "%s %s" % (member.get('givenName'),
+ member.get('sn'))
+ member_descr = "(%s)" % member.get('uid')
+ member_type = "user"
else:
- member_cn = "%s [group]" % member.get('cn')
- member_cn_esc = ipahelper.javascript_string_escape(member_cn)
+ member_name = member.get('cn')
+ member_descr = "[group]"
+ member_type = "group"
+ member_name_esc = ipahelper.javascript_string_escape(member_name)
+ member_descr_esc = ipahelper.javascript_string_escape(member_descr)
+ member_type_esc = ipahelper.javascript_string_escape(member_type)
?>
- ${member_cn}
+ <span id="member-info-${div_counter}"></span>
+ <script type="text/javascript">
+ renderMemberInfo($('member-info-${div_counter}'),
+ new MemberDisplayInfo('${member_name_esc}',
+ '${member_descr_esc}',
+ '${member_type_esc}'));
+ </script>
<a href="#"
- onclick="removememberHandler(this, '${member_dn_esc}', '${member_cn_esc}');
+ onclick="removememberHandler(this, '${member_dn_esc}',
+ new MemberDisplayInfo('${member_name_esc}',
+ '${member_descr_esc}',
+ '${member_type_esc}'));
return false;"
>remove</a>
<script type="text/javascript">
@@ -295,8 +338,8 @@ from ipagui.helpers import ipahelper
* This section restores the contents of the add and remove lists
* dynamically if we have to refresh the page
*/
- if ($('form_dn_to_cn_json').value != "") {
- dn_to_cn_hash = new Hash($('form_dn_to_cn_json').value.evalJSON());
+ if ($('form_dn_to_info_json').value != "") {
+ dn_to_info_hash = new Hash($('form_dn_to_info_json').value.evalJSON());
}
if ($('form_editprotected').value != "") {
@@ -320,8 +363,8 @@ from ipagui.helpers import ipahelper
dnadd_esc = ipahelper.javascript_string_escape(dnadd)
?>
var dn = "${dnadd_esc}";
- var cn = dn_to_cn_hash[dn];
- var newdiv = addmember(dn, cn);
+ var info = dn_to_info_hash[dn];
+ var newdiv = addmember(dn, info);
if (newdiv != null) {
newdiv.style.display = 'block';
}
@@ -332,8 +375,8 @@ from ipagui.helpers import ipahelper
dndel_esc = ipahelper.javascript_string_escape(dndel)
?>
var dn = "${dndel_esc}";
- var cn = dn_to_cn_hash[dn];
- var newdiv = removemember(dn, cn);
+ 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';
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditsearch.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditsearch.kid
index d8c20f191..1e24cf14e 100644
--- a/ipa-server/ipa-gui/ipagui/templates/groupeditsearch.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/groupeditsearch.kid
@@ -20,11 +20,18 @@ from ipagui.helpers import ipahelper
ent_dn_esc = ipahelper.javascript_string_escape(entity.dn)
ent_uid = entity.uid
if ent_uid:
- ent_cn = "%s %s (%s)" % (entity.givenName, entity.sn, entity.uid)
+ ent_name = "%s %s" % (entity.givenName, entity.sn)
+ ent_descr = "(%s)" % entity.uid
+ ent_type = "user"
else:
- ent_cn = "%s [group]" % entity.cn
- ent_cn_esc = ipahelper.javascript_string_escape(ent_cn)
+ ent_name = entity.cn
+ ent_descr = "[group]"
+ ent_type = "group"
+ ent_name_esc = ipahelper.javascript_string_escape(ent_name)
+ ent_descr_esc = ipahelper.javascript_string_escape(ent_descr)
+ ent_type_esc = ipahelper.javascript_string_escape(ent_type)
?>
+ <span id="search-info-${search_div_counter}"></span>
<script type="text/javascript">
if ((added_hash["${ent_dn_esc}"] == 1) ||
(member_hash["${ent_dn_esc}"] == 1)) {
@@ -32,10 +39,17 @@ from ipagui.helpers import ipahelper
} else {
results_counter = results_counter + 1;
}
+
+ renderMemberInfo($('search-info-${search_div_counter}'),
+ new MemberDisplayInfo('${ent_name_esc}',
+ '${ent_descr_esc}',
+ '${ent_type_esc}'));
</script>
- ${ent_cn}
<a href=""
- onclick="addmemberHandler(this, '${ent_dn_esc}', '${ent_cn_esc}');
+ onclick="addmemberHandler(this, '${ent_dn_esc}',
+ new MemberDisplayInfo('${ent_name_esc}',
+ '${ent_descr_esc}',
+ '${ent_type_esc}'));
return false;"
>add</a>
<?python
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupshow.kid b/ipa-server/ipa-gui/ipagui/templates/groupshow.kid
index 776b63959..a79f268cc 100644
--- a/ipa-server/ipa-gui/ipagui/templates/groupshow.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/groupshow.kid
@@ -40,14 +40,24 @@
if member_uid:
member_cn = "%s %s" % (member.get('givenName'), member.get('sn'))
member_desc = "(%s)" % member_uid
+ member_type = "user"
view_url = tg.url('usershow', uid=member_uid)
else:
member_cn = "%s" % member.get('cn')
member_desc = "[group]"
+ member_type = "group"
view_url = tg.url('groupshow', cn=member_cn)
?>
- <a href="${view_url}"
- >${member_cn}</a> ${member_desc}
+ <span py:if='member_type == "user"'>
+ <a href="${view_url}"
+ >${member_cn}</a> ${member_desc}
+ </span>
+ <span py:if='member_type == "group"'>
+ <i>
+ <a href="${view_url}"
+ >${member_cn}</a> ${member_desc}
+ </i>
+ </span>
</div>
<br/>