blob: 711f57aa781b243a98df5db962ebd2efd663927a [file] [log] [blame]
<%
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var privilegesInfo = sling.getService(Packages.org.apache.sling.jackrabbit.usermanager.AuthorizablePrivilegesInfo);
var authorizable = resource.adaptTo(Packages.org.apache.jackrabbit.api.security.user.Authorizable);
var canEdit = privilegesInfo.canUpdateProperties(currentSession, authorizable.getID());
var canModifyMembers = privilegesInfo.canUpdateGroupMembers(currentSession, authorizable.getID());
var canRemove = privilegesInfo.canRemove(currentSession, authorizable.getID());
var valueMap = resource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
var rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
var propNameSet = new Packages.java.util.TreeSet(valueMap.keySet());
propNameSet.remove("declaredMemberOf");
propNameSet.remove("members");
propNameSet.remove("declaredMembers");
propNameSet.remove("memberOf");
var propKeysCsv = rb.getString("csv.static.group.prop.keys");
var items = [];
if (propKeysCsv != null && propKeysCsv.length() > 0 && !propKeysCsv.equals("csv.static.group.prop.keys")) {
items = propKeysCsv.split(",");
}
for (var i=0; i < items.length; i++) {
propNameSet.add(items[i]);
}
function propLabel(propName) {
var key = "prop.label." + propName;
var value = rb.getString(key);
if (value == key) {
return propName;
}
return value;
};
function format(key, args) {
var value = rb.getString(key);
return Packages.java.text.MessageFormat.format(value, args);
}
function displayName(path) {
var res = request.getResourceResolver().resolve(path);
var resValueMap = res.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
var value = resValueMap.get("displayName");
if (value == null) {
value = path.substring(path.lastIndexOf('/') + 1)
}
return value;
}
%>
<div class="ui-widget ui-widget-content ui-corner-all usermgmt-body" id="update-group-body" >
<h3 class="ui-widget-header ui-corner-all usermgmt-header"><%=format(canEdit ? "header.update.group" : "header.view.group", authorizable.getID())%></h3>
<div class="info-msg-block" style="display:none;">
<div class="ui-state-highlight ui-corner-all">
<p>
<span class="ui-icon ui-icon-info"></span>
<span class="info-msg-text"></span>
</p>
</div>
</div>
<form id="update-group-form" accept-charset="UTF-8"
action="<%=request.contextPath%><%=resource.path %>.update.html"
method="post">
<fieldset>
<input type="hidden" value="UTF-8" name="_charset_" />
<input id="redirect" type="hidden" name=":redirect" value="<%=request.contextPath%><%=resource.path %>.html" />
<%-- Declared Members --%>
<% var key = "declaredMembers";
var value = valueMap.get(key);
%>
<div class="prop-line ui-helper-clearfix">
<label for="<%=key%>"><%=propLabel(key)%>:</label>
<ol id="<%=key%>">
<li id="<%=key%>__empty" <%= value.length == 0 ? "" : "style='display:none'" %>><%=rb.getString("declaredMembers.empty")%></li>
<%
for (i = 0; i < value.length; i++) {
var group = value[i];
%>
<li>
<a href="<%=request.contextPath%><%=group%>.html"><%=displayName(group)%></a>
<% if (canModifyMembers) { %>
<input type="hidden" name=":member" value="<%=group%>" />
<a href='#' class="noscript-hide remove-member" title='<%=rb.getString("tooltip.removeMember")%>'><span class="ui-icon ui-icon-circle-close"></span></a>
<% } /* endif(canModifyMembers) */ %>
</li>
<%
}/* endfor */
%>
</ol>
</div>
<%-- Member Of --%>
<% key = "memberOf";
value = valueMap.get(key);
%>
<div class="prop-line ui-helper-clearfix">
<label for="<%=key%>"><%=propLabel(key)%>:</label>
<ol id="<%=key%>">
<li id="<%=key%>__empty" <%= value.length == 0 ? "" : "style='display:none'" %>><%=rb.getString("memberOf.empty")%></li>
<%
for (i = 0; i < value.length; i++) {
var group = value[i];
%>
<li>
<a href="<%=request.contextPath%><%=group%>.html"><%=displayName(group)%></a>
</li>
<%
}/* endfor */
%>
</ol>
</div>
<%
var it = propNameSet.iterator();
while (it.hasNext()) {
key = it.next();
value = valueMap.get(key);
if (value == null) {
value = "";
}
%>
<div class="prop-line ui-helper-clearfix">
<label for="<%=key%>"><%=propLabel(key) %>:</label>
<input id="<%=key%>" type="text" name="<%=key%>" value='<%=value%>' <%= canEdit ? "" : "disabled=\"disabled\" readonly=\"readonly\" class=\"disabled\""%>/>
<% if (canEdit) { %><a href='#' class="noscript-hide remove-property" title='<%=rb.getString("tooltip.removeProperty")%>'><span class="ui-icon ui-icon-circle-close"></span></a><% } %>
</div>
<%
} /* endwhile */
%>
<div id="updateSubmitBtns" class="ui-helper-clearfix">
<label>&#160;</label>
<% if (canEdit) { %><button accesskey="u" id="updateGroupBtn" type="submit"><%=rb.getString("button.save")%></button><% } %>
<span class="noscript-hide">
<% if (canRemove) { %><a href="#" id="removeGroupLink"><%=rb.getString("link.remove")%></a><% } %>
<% if (canEdit) { %>| <a href="#" id="add_property"><%=rb.getString("link.add.property")%></a><% } %>
<% if (canModifyMembers) { %>| <a href="#" id="add_member"><%=rb.getString("link.add.member")%></a><% } %>
</span>
</div>
</fieldset>
</form>
</div>
<% if (canEdit) { %>
<div id="add-property-dialog" title='<%=rb.getString("dialog.title.add.property")%>' style="display:none">
<form id='add-property-form' action="#">
<fieldset>
<label for="newPropName"><%=rb.getString("label.property.name")%></label>
<input type="text" name="name" id="newPropName" />
</fieldset>
</form>
</div>
<% } /*endif(canEdit) */ %>
<% if (canRemove) { %>
<div id="remove-group-dialog" title='<%=rb.getString("dialog.title.confirm.remove")%>' style="display:none">
<form id='remove-group-form' action="<%=request.contextPath%><%=resource.path%>.delete.html" method="post">
<fieldset>
<input type="hidden" name=":redirect" value="<%=request.contextPath%>/system/userManager/group.html" />
<p>
<%=rb.getString("msg.group.confirm.remove") %>
</p>
</fieldset>
</form>
</div>
<% } /*endif(canRemove) */ %>
<% if (canModifyMembers) { %>
<div id="add-member-dialog" title='<%=rb.getString("dialog.title.add.member") %>' style="display:none">
<form id='add-group-member-form' action="#" >
<fieldset>
<label for="memberName"><%=rb.getString("label.group.name") %></label>
<input type="text" name=":member" id="memberName" />
</fieldset>
</form>
</div>
<% } /*endif(canModifyMembers) */ %>