You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by en...@apache.org on 2011/05/02 00:46:49 UTC
svn commit: r1098430 [4/4] - in /sling/trunk/samples: ./ accessmanager-ui/
accessmanager-ui/.settings/ accessmanager-ui/src/
accessmanager-ui/src/main/ accessmanager-ui/src/main/java/
accessmanager-ui/src/main/resources/ accessmanager-ui/src/main/resou...
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/user/update_body.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,203 @@
+<%
+/*
+ * 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 canRemove = privilegesInfo.canRemove(currentSession, authorizable.getID());
+var canUpdateMembers = privilegesInfo.canUpdateGroupMembers(currentSession, authorizable.getID());
+var valueMap = resource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
+var isMe = authorizable.getID().equals(request.getRemoteUser());
+
+var rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+
+var propNameSet = new Packages.java.util.TreeSet(valueMap.keySet());
+propNameSet.remove("declaredMemberOf");
+propNameSet.remove("memberOf");
+
+var propKeysCsv = rb.getString("csv.static.user.prop.keys");
+var items = [];
+if (propKeysCsv != null && propKeysCsv.length() > 0 && !propKeysCsv.equals("csv.static.user.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-user-body" >
+ <h3 class="ui-widget-header ui-corner-all usermgmt-header"><%=format(canEdit ? "header.update.user" : "header.view.user", 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-user-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" />
+
+ <%-- Member Of --%>
+ <% var key = "memberOf";
+ 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("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>
+ <% } /* endif(canEdit) */ %>
+ </div>
+ <%
+ } /* endwhile */
+ %>
+
+ <p id="updateSubmitBtns" class="ui-helper-clearfix">
+ <label> </label>
+ <% if (canEdit) { %><button accesskey="u" id="updateUserBtn" type="submit"><%=rb.getString("button.save")%></button><% } %>
+ <span class="noscript-hide">
+ <% if (canRemove) { %><a href="#" id="removeUserLink"><%=rb.getString("link.remove")%></a> | <% } %>
+ <% if (canEdit) { %><a href="#" id="add_property"><%=rb.getString("link.add.property")%></a><% } %>
+ </span>
+ </p>
+ </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-user-dialog" title='<%=rb.getString("dialog.title.confirm.remove")%>' style="display:none">
+ <form id='remove-user-form' action="<%=resource.path%>.delete.html" method="post">
+ <fieldset>
+ <input type="hidden" name=":redirect" value="<%=request.contextPath%>/system/userManager/user.html" />
+ <p>
+ <%=rb.getString("msg.user.confirm.remove") %>
+ </p>
+ </fieldset>
+ </form>
+</div>
+<% } /*endif(canRemove) */ %>
+
+<% if (isMe) { %>
+<div class="ui-widget ui-widget-content ui-corner-all usermgmt-body" id="update-password-body" >
+ <h3 class="ui-widget-header ui-corner-all usermgmt-header"><%=rb.getString("header.change.password")%></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-password-form" accept-charset="UTF-8"
+ action="<%=request.contextPath%><%=resource.path %>.changePassword.html"
+ method="post">
+ <fieldset>
+ <input type="hidden" value="UTF-8" name="_charset_" />
+ <input id="pwdRedirect" type="hidden" name=":redirect" value="<%=request.contextPath%><%=resource.path %>.html" />
+
+ <div class="prop-line ui-helper-clearfix">
+ <label for="oldPwd" accesskey="o"><%=propLabel("oldPwd")%>:</label>
+ <input id="oldPwd" type="password" name="oldPwd" value=''/>
+ </div>
+
+ <div class="prop-line ui-helper-clearfix">
+ <label for="newPwd" accesskey="p"><%=propLabel("newPwd")%>:</label>
+ <input id="newPwd" type="password" name="newPwd" value=''/>
+ </div>
+
+ <div class="prop-line ui-helper-clearfix">
+ <label for="newPwdConfirm" accesskey="c"><%=propLabel("newPwdConfirm")%>:</label>
+ <input id="newPwdConfirm" type="password" name="newPwdConfirm" value=''/>
+ </div>
+
+ <div class="ui-helper-clearfix">
+ <label> </label>
+ <button accesskey="d" id="updatePasswordBtn" type="submit"><%=rb.getString("button.updatePwd")%></button>
+ </div>
+ </fieldset>
+ </form>
+</div>
+<% } /*endif (isme)*/ %>
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/autocomplete.json.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/autocomplete.json.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/autocomplete.json.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/autocomplete.json.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,46 @@
+<%
+/*
+ * 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 jsonArray = new Packages.org.apache.sling.commons.json.JSONArray();
+var offset = 0;
+var maxResults = 15;
+
+var term = request.getParameter("term");
+var searchResults;
+if (term != null && term.length() > 0) {
+ var jcrSession = request.getResourceResolver().adaptTo(Packages.javax.jcr.Session);
+ var userManager = Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession);
+
+ var query = new Packages.org.apache.sling.usermgr.FindPeopleQuery(3, term, true, offset, maxResults);
+ searchResults = userManager.findAuthorizables(query);
+}
+if (searchResults) {
+ while (searchResults.hasNext()) {
+ var a = searchResults.next();
+ var jsonObj = new Packages.org.apache.sling.commons.json.JSONObject();
+ jsonObj.put("value", a.getID());
+ var labelProp = a.getProperty("displayName");
+ if (labelProp != null && labelProp.length > 0) {
+ jsonObj.put("label", labelProp[0].getString());
+ }
+
+ jsonArray.put(jsonObj);
+ }
+}
+response.getWriter().write(jsonArray.toString(2));
+%>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/body.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/body.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/body.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/body.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,74 @@
+<%
+/*
+ * 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 rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+
+var title = request.getAttribute("page.title");
+if (title == null) {
+ title = rb.getString("page.title.find.authorizables");
+}
+
+var spParam = request.getParameter("sp");
+if (spParam == null) {
+ spParam = "";
+}
+var qParam = request.getParameter("q");
+if (qParam == null) {
+ qParam = "";
+}
+var oParam = request.getParameter("o");
+if (oParam == null) {
+ oParam = "0";
+}
+%>
+<div class="ui-widget ui-widget-content ui-corner-all usermgmt-body" id="authorizables-body" >
+ <form id="find-authorizables-form" accept-charset="UTF-8"
+ action="<%=request.contextPath%><%=resource.path%>.html"
+ method="get">
+ <fieldset class="ui-helper-clearfix">
+ <input type="hidden" value="UTF-8" name="_charset_" />
+ <input type="hidden" id="searchOffset" name="o" value="<%=oParam%>" />
+
+ <div id='find-authorizables-header' class="ui-widget-header ui-corner-all ui-helper-clearfix">
+ <h3 class="usermgmt-header"><%=title%></h3>
+ <span id="find-authorizables-block">
+ <input id="findAuthorizablesQuery" type="text" name="q" value="<%=qParam%>" />
+ <button accesskey="s" id="findAuthorizablesBtn" type="submit"><%=rb.getString("button.search")%></button>
+ </span>
+ </div>
+
+ <div id="find-authorizables-quick-nav" style="display:none">
+ <%
+ var csv = rb.getString("csv.quicksearch.items");
+ var items = [];
+ if (csv != null && csv.length() > 0 && !csv.equals("csv.quicksearch.items")) {
+ items = csv.split(",");
+ }
+ for (var i = 0; i < items.length; i++) {
+ var c = items[i];
+ %>
+ <input type="radio" id="radio<%=c%>" name="sp" value="<%=c%>" <%=c.equals(spParam) ? "checked='checked'" : "" %>/><label for="radio<%=c%>"><%=c%></label>
+ <% } /*endfor*/%>
+ <input type="radio" id="radioAll" name="sp" value="*" <%="*" == spParam ? "checked='checked'" : "" %>/><label id="radioAllLabel" for="radioAll"><%=rb.getString("quicksearch.label.all")%></label>
+ <input type="radio" id="radioNone" name="sp" value="" <%="" == spParam ? "checked='checked'" : "" %> style="display:none;"/>
+ </div>
+ </fieldset>
+ </form>
+
+ <% sling.include(resource.path + ".searchresult.html"); %>
+</div>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,34 @@
+<%
+/*
+ * 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 rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+
+//header options
+request.setAttribute("page.title", rb.getString("page.title.find.authorizables"));
+
+//page sidebar template
+request.setAttribute("sidebar.template", resource.path + ".sidebar.html");
+request.setAttribute("sidebar.template.options", "sling/usermgmt");
+
+//page body template
+request.setAttribute("body.template", resource.path + ".body.html");
+//request.setAttribute("body.template.options", "sling/userManager");
+
+//render the page using the default page template
+sling.include(resource.path + ".page.html", "sling/usermgmt");
+%>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/searchresult.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/searchresult.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/searchresult.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/userManager/searchresult.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,118 @@
+<%
+/*
+ * 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 rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+var searchType = request.getAttribute("search.type");
+if (searchType == null) {
+ searchType = 3; //all Authorizables should be searched
+}
+
+function format(key, args) {
+ var value = rb.getString(key);
+ return Packages.java.text.MessageFormat.format(value, args);
+}
+
+var qParam = request.getParameter("q");
+if (qParam != null && qParam.length() == 0) {
+ qParam = "*"; //empty search == 'All'
+}
+
+var isPrefixQuery = false;
+var spParam = request.getParameter("sp");
+if (spParam != null && spParam.length() > 0) {
+ isPrefixQuery = true;
+ if (!spParam.equals("*")) {
+ qParam = spParam + "*";
+ }
+}
+
+var maxResults = 25; //rows per page
+var offset = 0;
+var oParam = request.getParameter("o"); //paging start row
+if (oParam != null && oParam.length() > 0) {
+ offset = parseInt(oParam);
+}
+
+var searchResults = null;
+if (qParam != null) {
+ var jcrSession = request.getResourceResolver().adaptTo(Packages.javax.jcr.Session);
+ var userManager = Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession);
+
+ var query = new Packages.org.apache.sling.usermgr.FindPeopleQuery(searchType, qParam, isPrefixQuery, offset, maxResults);
+ searchResults = userManager.findAuthorizables(query);
+}
+var readyToSearch = qParam == null;
+var noMatches = searchResults != null && !searchResults.hasNext();
+%>
+<div id="authorizables-results-body" >
+<% if (readyToSearch) { %>
+ <div id="search-result-ready-to-search" class="search-empty-msg ui-corner-all ui-state-highlight"><%=rb.getString("msg.readyToSearch")%></div>
+<% } else if (noMatches) { %>
+ <div id="search-result-no-matches" class="search-empty-msg ui-corner-all ui-state-highlight"><%=rb.getString("msg.noMatchesFound")%></div>
+<% } else { %>
+ <table id="search-result" width="100%" class="ui-widget ui-widget-content ui-corner-all">
+ <thead id="search-result-head" class="ui-widget-header">
+ <tr>
+ <th align="left" width="50%"><%=rb.getString("label.column.name")%></th>
+ <th align="left" width="50%"><%=rb.getString("label.column.displayName")%></th>
+ </tr>
+ </thead>
+ <tbody id="search-result-body">
+ <% var count = 0;
+ var resourceResolver = resource.getResourceResolver();
+ while (count < maxResults && searchResults.hasNext()) {
+ var a = searchResults.next();
+ count++;
+
+ var principalResource = resourceResolver.getResource("/system/userManager/" + (a.isGroup() ? "group/" : "user/") + a.getID());
+ var valueMap = principalResource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
+ %>
+ <tr <%= (count % 2 == 1) ? "" : "class='odd'" %>>
+ <td><a href="<%=request.contextPath%><%=principalResource.path%>.html"><%=a.getID()%></a></td>
+ <td><%=valueMap.get("displayName", "")%></td>
+ </tr>
+ <% } /*endwhile*/ %>
+ </tbody>
+ <%-- paging --%>
+ <tfoot id="search-result-foot" class="ui-widget-header">
+ <tr>
+ <td id="search-result-paging" align="center" colspan="2">
+ <form id="find-authorizables-paging-form" accept-charset="UTF-8"
+ action="<%=request.contextPath%><%=resource.path%>.html"
+ method="get">
+ <input type="hidden" value="UTF-8" name="_charset_" />
+ <input type="hidden" name="q" value="<%=qParam%>" />
+ <% if (offset > maxResults) { %>
+ <button id='first_page' title='<%=rb.getString("tooltip.paging.first.page") %>' type="submit" name="o" value="0"><%=rb.getString("label.paging.first.page")%></button>
+ <% }
+ if (offset > 1) { %>
+ <button id='prev_page' title='<%=rb.getString("tooltip.paging.prev.page") %>' type="submit" name="o" value="<%=Math.max(0, offset - maxResults)%>"><%=rb.getString("label.paging.prev.page")%></button>
+ <% }
+ var currentPageMsg = format("paging.current.page", [offset + 1, offset + count]);
+ %>
+ <span id='current_page'><%=currentPageMsg%></span>
+ <% if (searchResults.hasNext()) { %>
+ <button id='next_page' title='<%=rb.getString("tooltip.paging.next.page") %>' type="submit" name="o" value="<%=offset + maxResults%>"><%=rb.getString("label.paging.next.page")%></button>
+ <% } %>
+ </form>
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+<% } /*endelse*/ %>
+</div>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/usermgmt/page.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/usermgmt/page.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/usermgmt/page.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/usermgmt/page.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,117 @@
+<%
+/*
+ * 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.
+ */
+%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xml:lang="en" lang="en"
+ xmlns="http://www.w3.org/1999/xhtml"
+>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <%
+ //allow the caller to override the title by
+ // specifying request attributes.
+ var title = request.getAttribute("page.title");
+ if (title == null) {
+ title = resource.path;
+ }
+
+ var userDisplayName = null;
+ if (request.getUserPrincipal() != null && !"anonymous".equals(request.getRemoteUser())) {
+ var userResource = request.getResourceResolver().getResource("/system/userManager/user/" + request.getRemoteUser());
+ var valueMap = userResource.adaptTo(Packages.org.apache.sling.api.resource.ValueMap);
+ userDisplayName = valueMap.get("displayName", request.getRemoteUser());
+ }
+
+ var currentPage = request.contextPath + resource.path + ".html";
+ var logoutTarget = request.getAttribute("logout.target");
+ if (logoutTarget == null) {
+ logoutTarget = currentPage;
+ }
+ var rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+ %>
+ <title><%= Packages.java.text.MessageFormat.format(rb.getString("page.template.title"), title) %></title>
+
+ <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/themes/cupertino/jquery-ui.css" type="text/css"/>
+ <link rel="stylesheet" href="<%= request.getContextPath() %>/css/usermanager/usermanager.min.css" type="text/css"/>
+</head>
+<%
+//flush the buffer early so the browser can start start fetching the stylesheets and scripts in parallel
+// while the rest of the page is being rendered below.
+response.flushBuffer();
+%>
+<body>
+ <div id="menu_login" class="ui-widget ui-widget-content ui-corner-all">
+ <% if (userDisplayName != null) { %>
+ <strong id="menu_username"><%=userDisplayName%></strong> | <a href="<%=request.contextPath%>/system/sling/logout?resource=<%=logoutTarget%>" id="do_logout"><%=rb.getString("link.logout")%></a>
+ <% } else { %>
+ <a href="<%=request.contextPath%>/system/sling/selector/login?resource=<%=currentPage%>" id="do_login"><%=rb.getString("link.login")%></a>
+ <% } %>
+ </div>
+
+ <div class="title">
+ <div class="logo">
+ <a href="http://sling.apache.org">
+ <img alt='<%=rb.getString("logo.alt")%>' src="<%=request.getContextPath()%>/images/sling-logo.png"/>
+ </a>
+ </div>
+ </div>
+
+ <div class="menu">
+ <%
+ var template = request.getAttribute("sidebar.template");
+ if (template != null) {
+ var options = request.getAttribute("sidebar.template.options");
+ if (options == null) {
+ sling.include(template);
+ } else {
+ sling.include(template, options);
+ }
+ }
+ %>
+ </div>
+
+ <div id="content" class="main">
+ <noscript>
+ <div class="ui-widget" style="margin-bottom: 10px;">
+ <div style="padding: 0pt 0.7em;" class="ui-state-error ui-corner-all">
+ <p><span style="float: left; margin-right: 0.3em;" class="ui-icon ui-icon-alert"></span>
+ <%=rb.getString("msg.noscript")%></p>
+ </div>
+ </div>
+ </noscript>
+
+ <%
+ var template = request.getAttribute("body.template");
+ if (template != null) {
+ var options = request.getAttribute("body.template.options");
+ if (options == null) {
+ sling.include(template);
+ } else {
+ sling.include(template, options);
+ }
+ }
+ %>
+ </div>
+
+ <%-- scripts moved to the bottom to help the page load faster --%>
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js"></script>
+ <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8/jquery.validate.min.js"></script>
+ <script type="text/javascript" src="<%= request.getContextPath() %>/js/usermanager/usermanager.min.js"></script>
+ <script type="text/javascript">UserManager.contextPath = "<%=request.contextPath%>";</script>
+</body>
+</html>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/usermgmt/sidebar.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/usermgmt/sidebar.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/usermgmt/sidebar.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/usermgmt/sidebar.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,60 @@
+<%
+/*
+ * 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 rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+%>
+<ul id="sidebar-nav" class="ui-corner-br">
+ <li>
+ <a href="<%=request.contextPath%>/system/userManager.html"><%=rb.getString("menu.link.authorizables")%></a>
+ </li>
+ <li>
+ <a style="margin-left: 15px;" href="<%=request.contextPath%>/system/userManager/user.html"><%=rb.getString("menu.link.users")%></a>
+ </li>
+ <li>
+ <a style="margin-left: 15px;" href="<%=request.contextPath%>/system/userManager/group.html"><%=rb.getString("menu.link.groups")%></a>
+ </li>
+ <li> </li>
+ <% if (privilegesInfo.canAddUser(currentSession)) { %>
+ <li>
+ <a href="<%=request.contextPath%>/system/userManager/user.create.html"><%=rb.getString("menu.link.createUser")%></a>
+ </li>
+ <% } %>
+ <% if (privilegesInfo.canAddGroup(currentSession)) { %>
+ <li>
+ <a href="<%=request.contextPath%>/system/userManager/group.create.html"><%=rb.getString("menu.link.createGroup")%></a>
+ </li>
+ <% } %>
+ <%
+ var res = request.getResourceResolver().resolve(resource.path);
+ var authorizable = resource.adaptTo(Packages.org.apache.jackrabbit.api.security.user.Authorizable);
+ var canEdit = false;
+ if (authorizable) {
+ canEdit = privilegesInfo.canUpdateProperties(currentSession, authorizable.getID());
+ }
+ if (res.resourceType == "sling/user") { %>
+ <li>
+ <a href="<%=request.contextPath%><%=resource.path%>.html"><%=rb.getString(canEdit ? "menu.link.updateUser" : "menu.link.viewUser")%></a>
+ </li>
+ <% } %>
+ <% if (res.resourceType == "sling/group") { %>
+ <li>
+ <a href="<%=request.contextPath%><%=resource.path%>.html"><%=rb.getString(canEdit ? "menu.link.updateGroup" : "menu.link.viewGroup")%></a>
+ </li>
+ <% } %>
+</ul>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/body.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/body.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/body.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/body.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,29 @@
+<%
+/*
+ * 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 rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+
+var searchType = 1; //search only users
+request.setAttribute("search.type", searchType);
+
+var title = rb.getString("page.title.find.users");
+request.setAttribute("page.title", title);
+
+//delegate the 'authorizables' script to render the page
+sling.include(resource.path + ".body.html", "sling/userManager");
+%>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/create.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/create.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/create.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/create.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,40 @@
+<%
+/*
+ * 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);
+if (!privilegesInfo.canAddUser(currentSession)) {
+ //user can't create users.
+ response.sendError(403);
+} else {
+ var rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+
+ //header options
+ request.setAttribute("page.title", rb.getString("page.title.create.user"));
+
+ //page sidebar template
+ request.setAttribute("sidebar.template", resource.path + ".sidebar.html");
+ request.setAttribute("sidebar.template.options", "sling/usermgmt");
+
+ //page body template
+ request.setAttribute("body.template", resource.path + ".create_body.html");
+ request.setAttribute("body.template.options", null);
+
+ //render the page using the default page template
+ sling.include(resource.path + ".page.html", "sling/usermgmt");
+}
+%>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/create_body.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/create_body.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/create_body.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/create_body.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,77 @@
+<%
+/*
+ * 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);
+if (!privilegesInfo.canAddUser(currentSession)) {
+ //user can't create users.
+ response.sendError(403);
+} else {
+ var rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+%>
+<div class="ui-widget ui-widget-content ui-corner-all usermgmt-body" id="create-user-body" >
+ <h3 class="ui-widget-header ui-corner-all usermgmt-header"><%=rb.getString("page.title.create.user")%></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="create-user-form" accept-charset="UTF-8"
+ action="<%=request.contextPath%>/system/userManager/user.create.html"
+ method="post">
+ <fieldset>
+ <input type="hidden" value="UTF-8" name="_charset_" />
+ <input id="redirect" type="hidden" name=":redirect" value="<%=request.contextPath%>" />
+
+ <div class="prop-line ui-helper-clearfix">
+ <label for="userId" accesskey="u"><%=rb.getString("prop.label.userid")%>:</label>
+ <input id="userId" type="text" name=":name" />
+ </div>
+
+ <div class="prop-line ui-helper-clearfix">
+ <label for="displayName" accesskey="e"><%=rb.getString("prop.label.displayName")%>:</label>
+ <input id="displayName" type="text" name="displayName" />
+ </div>
+
+ <div class="prop-line ui-helper-clearfix">
+ <label for="email" accesskey="e"><%=rb.getString("prop.label.email")%>:</label>
+ <input id="email" type="text" name="email" />
+ </div>
+
+ <div class="prop-line ui-helper-clearfix">
+ <label for="pwd" accesskey="p"><%=rb.getString("prop.label.pwd")%>:</label>
+ <input id="pwd" type="password" name="pwd" />
+ </div>
+
+ <div class="prop-line ui-helper-clearfix">
+ <label for="pwdConfirm" accesskey="c"><%=rb.getString("prop.label.pwdConfirm")%>:</label>
+ <input id="pwdConfirm" type="password" name="pwdConfirm" />
+ </div>
+
+ <div class="ui-helper-clearfix">
+ <label> </label>
+ <button accesskey="r" id="createUserBtn" type="submit"><%=rb.getString("button.create")%></button>
+ </div>
+ </fieldset>
+ </form>
+</div>
+<% } /*endif (canAddUser) */ %>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,34 @@
+<%
+/*
+ * 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 rb = request.getResourceBundle("org.apache.sling.usermgr.Resources", null);
+
+//header options
+request.setAttribute("page.title", rb.getString("page.title.find.users"));
+
+//page sidebar template
+request.setAttribute("sidebar.template", resource.path + ".sidebar.html");
+request.setAttribute("sidebar.template.options", "sling/usermgmt");
+
+//page body template
+request.setAttribute("body.template", resource.path + ".body.html");
+//request.setAttribute("body.template.options", "sling/users");
+
+//render the page using the default page template
+sling.include(resource.path + ".page.html", "sling/usermgmt");
+%>
\ No newline at end of file
Added: sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/searchresult.html.esp
URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/searchresult.html.esp?rev=1098430&view=auto
==============================================================================
--- sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/searchresult.html.esp (added)
+++ sling/trunk/samples/usermanager-ui/src/main/resources/libs/sling/users/searchresult.html.esp Sun May 1 22:46:46 2011
@@ -0,0 +1,24 @@
+<%
+/*
+ * 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 searchType = 1; //search only users
+request.setAttribute("search.type", searchType);
+
+//delegate the 'authorizables' script to render the page
+sling.include(resource.path + ".searchresult.html", "sling/userManager");
+%>
\ No newline at end of file