Added: sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/acl_body.html.esp URL: http://svn.apache.org/viewvc/sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/acl_body.html.esp?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/acl_body.html.esp (added) +++ sling/trunk/samples/accessmanager-ui/src/main/resources/libs/sling/servlet/default/acl_body.html.esp Sun May 1 22:46:46 2011 @@ -0,0 +1,122 @@ +<% +/* + * 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 = new Packages.org.apache.sling.jcr.jackrabbit.accessmanager.PrivilegesInfo(); +if (!privilegesInfo.canReadAccessControl(currentNode)) { + //user can't read the ACL. + response.sendError(403); +} else { + if (!response.isCommitted()) { + //don't allow caching of this page + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-control", "no-cache, must-revalidate"); + } + + var canModify = privilegesInfo.canModifyAccessControl(currentNode); + + var rb = request.getResourceBundle("org.apache.sling.accessmanager.Resources", null); + + function format(key, args) { + var value = rb.getString(key); + return Packages.java.text.MessageFormat.format(value, args); + } +%> + +<div class="ui-widget ui-widget-content ui-corner-all accessmgmt-body" id="update-acl-block" > +<% if (canModify) { %> + <div id='modify-acl-header' class="ui-widget-header ui-corner-all ui-helper-clearfix"> + <h3 class="accessmgmt-header"><%=format("header.update.acl", [currentNode.name])%></h3> + <span id="add-ace-block"> + <a href="<%=request.contextPath%><%=resource.path%>.ace.html"><%=rb.getString("menu.link.add.ace")%></a> + </span> + </div> +<% } else { /*end if(canModify) */ %> + <h3 class="ui-widget-header ui-corner-all accessmgmt-header"><%=format("header.view.acl", [currentNode.name])%></h3> +<% } /* endelse */ %> + +<% + var accessMap = privilegesInfo.getDeclaredAccessRights(currentNode); + if (accessMap.isEmpty()) { +%> + <div id="acl-list-empty" class="ui-corner-all ui-state-highlight"><%=rb.getString("msg.acl.empty")%></div> +<% } else { %> + <table id="acl-list" width="100%" class="ui-widget ui-widget-content ui-corner-all"> + <thead class="ui-widget-header"> + <tr> + <th align="left"><%=rb.getString("column.authorizable.header")%></th> + <th align="left" width="125px"><%=rb.getString("column.privileges.header")%></th> + <th align="left" width="75px"> </th> + </tr> + </thead> + <tbody> + <% + var jcrSession = request.getResourceResolver().adaptTo(Packages.javax.jcr.Session); + var userManager = Packages.org.apache.sling.jcr.base.util.AccessControlUtil.getUserManager(jcrSession); + + var entrySet = accessMap.entrySet(); + var iterator = entrySet.iterator(); + while (iterator.hasNext()) { + var entry = iterator.next(); + var principal = entry.getKey(); + var accessrights = entry.getValue(); + + var userDisplayName = principal.getName(); + var authorizable = userManager.getAuthorizable(principal.getName()); + if (authorizable) { + var values = authorizable.getProperty("displayName"); + if (values != null && values.length > 0) { + userDisplayName = values[0].getString(); + } + } + %> + <tr> + <td> + <a title='<%=rb.getString(canModify ? "menu.link.update.ace" : "menu.link.view.ace")%>' + href="<%=request.contextPath%><%=currentNode.path%>.ace.html?pid=<%=principal.getName()%>"><%=userDisplayName%></a> + </td> + <td width="125px"> + <%=accessrights.getPrivilegeSetDisplayName(request.locale)%> + </td> + <td width="75px"> + <% if (canModify) { %> + <form method="post" + action="<%=request.contextPath%><%=currentNode.path%>.deleteAce.html" > + <div> + <input type="hidden" name=":redirect" value="<%=request.contextPath%><%=currentNode.path%>.acl.html" /> + <input type="hidden" name=":applyTo" value="<%=principal.getName()%>" /> + <button class="remove-ace" type="submit">Delete</button> + </div> + </form> + <% } /* endif(canModify) */ %> + </td> + </tr> +<% } /* endwhile */ %> + </tbody> + </table> +<% } /* endelse */%> +</div> + +<% if (canModify) { %> +<div id="remove-ace-dialog" title='<%=rb.getString("dialog.title.confirm.remove")%>' style="display:none"> + <p> + <%=rb.getString("msg.ace.confirm.remove") %> + </p> +</div> +<% } /*endif(canModify) */ %> +<% } /* end else (access check) */ %>
Modified: sling/trunk/samples/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/samples/pom.xml?rev=1098430&r1=1098429&r2=1098430&view=diff ============================================================================== --- sling/trunk/samples/pom.xml (original) +++ sling/trunk/samples/pom.xml Sun May 1 22:46:46 2011 @@ -68,5 +68,7 @@ <module>slingbucks</module> <module>installing-dependencies</module> <module>framework-fragment</module> + <module>usermanager-ui</module> + <module>accessmanager-ui</module> </modules> </project> Added: sling/trunk/samples/usermanager-ui/.classpath URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/.classpath?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/.classpath (added) +++ sling/trunk/samples/usermanager-ui/.classpath Sun May 1 22:46:46 2011 @@ -0,0 +1,9 @@ +<classpath> + <classpathentry kind="src" path="src/main/java" including="**/*.java"/> + <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/> + <classpathentry kind="src" path="target/maven-shared-archive-resources" excluding="**/*.java"/> + <classpathentry kind="output" path="target/classes"/> + <classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar"/> + <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-api/2.2.5/jackrabbit-api-2.2.5.jar"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> +</classpath> \ No newline at end of file Propchange: sling/trunk/samples/usermanager-ui/.classpath ------------------------------------------------------------------------------ svn:eol-style = native Added: sling/trunk/samples/usermanager-ui/.project URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/.project?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/.project (added) +++ sling/trunk/samples/usermanager-ui/.project Sun May 1 22:46:46 2011 @@ -0,0 +1,13 @@ +<projectDescription> + <name>org.apache.sling.samples.usermanager.ui</name> + <comment>Sample Sling UI for user management operations. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment> + <projects/> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> \ No newline at end of file Propchange: sling/trunk/samples/usermanager-ui/.project ------------------------------------------------------------------------------ svn:eol-style = native Added: sling/trunk/samples/usermanager-ui/.settings/org.eclipse.jdt.core.prefs URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/.settings/org.eclipse.jdt.core.prefs?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/.settings/org.eclipse.jdt.core.prefs (added) +++ sling/trunk/samples/usermanager-ui/.settings/org.eclipse.jdt.core.prefs Sun May 1 22:46:46 2011 @@ -0,0 +1,11 @@ +#Sun Apr 25 16:53:23 PDT 2010 +encoding//src/main/java=UTF-8 +encoding//target/scr-plugin-generated=UTF-8 +org.eclipse.jdt.core.compiler.compliance=1.5 +encoding//target/maven-shared-archive-resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding//src/main/resources=UTF-8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.source=1.5 Added: sling/trunk/samples/usermanager-ui/README.txt URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/README.txt?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/README.txt (added) +++ sling/trunk/samples/usermanager-ui/README.txt Sun May 1 22:46:46 2011 @@ -0,0 +1,50 @@ +Sling user management UI sample +--------------------- + +WHY THIS SAMPLE? +---------------- +This demonstrates some sample UI for user self-regirstration and profile update. + +HOW TO INSTALL +-------------- +Build this bundle and install it in Sling. + +For example, if Sling is running on port 8080 (which happens if you start +the launchpad/testing module with "mvn jetty:run"), this will build and +install it: + + mvn -P autoInstallBundle clean install -Dsling.url=http://localhost:8080/system/console + +To verify that the bundle is correctly installed: + +1) http://localhost:8080/apps/espblog/html.esp must return the html.esp + script. + +2) The console at http://localhost:8080/system/console/bundles must + list the bundle named "Sling - ESP blog sample" as active. + +HOW TO TEST +----------- +Start by logging in at http://localhost:8080/?sling:authRequestLogin=true, +using username=admin and password=admin (or use the "login" link on the +/index.html page). + +Once logged in, /index.html should say "you are currently logged in as +user "admin" to workspace "default". + +Then, http://localhost:8080/content/espblog/*.html should display the "Sling ESP +blog sample" page, with the Home/Admin/New Post/... menu. + +If you get Sling's default HTML rendition instead ("Resource dumped by +HtmlRendererServlet") that's probably because the "path-based-rtp" bundle +is not installed. Run the above "mvn...clean install" command in the +sling/samples/path-based-rtp folder to install it, and reload the page. + +Create a new post using the "New Post" menu. + +The post can include an attachment, if that's an image the included +ThumbnailGeneratorService generates thumbnails in different sizes, displayed +on the post's page. This happens asynchronously, so depending on your +machine's speed the thumbnails might only appear after a few seconds. + +The ESP scripts are found under /apps/espblog in the repository. Propchange: sling/trunk/samples/usermanager-ui/README.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: sling/trunk/samples/usermanager-ui/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/pom.xml?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/pom.xml (added) +++ sling/trunk/samples/usermanager-ui/pom.xml Sun May 1 22:46:46 2011 @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="UTF-8"?> + <!-- + 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. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.sling</groupId> + <artifactId>sling</artifactId> + <version>9</version> + <relativePath>../../parent/pom.xml</relativePath> + </parent> + + <groupId>org.apache.sling.samples</groupId> + <artifactId>org.apache.sling.samples.usermanager.ui</artifactId> + <packaging>bundle</packaging> + <version>0.9-SNAPSHOT</version> + <name>Apache Sling User Manager UI sample</name> + <description> + Sample Sling UI for user manager operations. + </description> + + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/samples/usermanager-ui</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/samples/usermanager-ui</developerConnection> + <url>http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui</url> + </scm> + + <pluginRepositories> + <!-- for yui-compressor-maven-plugin --> + <pluginRepository> + <name>oss.sonatype.org</name> + <id>oss.sonatype.org</id> + <url>http://oss.sonatype.org/content/groups/public</url> + </pluginRepository> + </pluginRepositories> + + <build> + <plugins> + <!-- use the yui-compressor to minify the js and css files --> + <plugin> + <groupId>net.alchim31.maven</groupId> + <artifactId>yuicompressor-maven-plugin</artifactId> + <executions> + <execution> + <phase>process-resources</phase> + <goals> + <goal>compress</goal> + </goals> + </execution> + </executions> + <configuration> + <sourceDirectory>${basedir}/src/main/resources</sourceDirectory> + <outputDirectory>${basedir}/src/main/resources</outputDirectory> + <suffix>.min</suffix> + <excludes> + <exclude>**/*.min.*</exclude> + </excludes> + <!-- + <aggregations> + <aggregation> + <insertNewLine>true</insertNewLine> + <output>${basedir}/src/main/resources/js/usermanager/usermanager.all.min.js</output> + <includes> + <include>jquery/jquery-1.5.1.min.js</include> + <include>jquery/jquery-ui-1.8.11.custom.min.js</include> + <include>jquery/jquery-validate/jquery.validate.min.js</include> + <include>usermanager.min.js</include> + </includes> + </aggregation> + <aggregation> + <insertNewLine>true</insertNewLine> + <output>${basedir}/src/main/resources/js/usermanager/usermanager.all.js</output> + <includes> + <include>jquery/jquery-1.5.1.min.js</include> + <include>jquery/jquery-ui-1.8.11.custom.min.js</include> + <include>jquery/jquery-validate/jquery.validate.js</include> + <include>usermanager.js</include> + </includes> + </aggregation> + </aggregations> + --> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-scr-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package> + org.apache.sling.usermgr + </Export-Package> + <Sling-Bundle-Resources> + /images, + /css/usermanager, + /js/usermanager, + /libs/sling/group, + /libs/sling/groups, + /libs/sling/user, + /libs/sling/userManager, + /libs/sling/usermgmt, + /libs/sling/users + </Sling-Bundle-Resources> + <Sling-Initial-Content> + SLING-INF/i18n;overwrite:=false;uninstall:=false;path:=/etc/i18n/org.apache.sling.samples.usermanager.ui + </Sling-Initial-Content> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <excludePackageNames></excludePackageNames> + </configuration> + </plugin> + </plugins> + </reporting> + + <dependencies> + <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>jackrabbit-api</artifactId> + <version>2.2.5</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.jcr</groupId> + <artifactId>jcr</artifactId> + </dependency> + </dependencies> +</project> Propchange: sling/trunk/samples/usermanager-ui/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: sling/trunk/samples/usermanager-ui/src/main/java/org/apache/sling/usermgr/FindPeopleQuery.java URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/java/org/apache/sling/usermgr/FindPeopleQuery.java?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/src/main/java/org/apache/sling/usermgr/FindPeopleQuery.java (added) +++ sling/trunk/samples/usermanager-ui/src/main/java/org/apache/sling/usermgr/FindPeopleQuery.java Sun May 1 22:46:46 2011 @@ -0,0 +1,120 @@ +/* + * 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. + */ +package org.apache.sling.usermgr; + +import org.apache.jackrabbit.api.security.user.Group; +import org.apache.jackrabbit.api.security.user.Query; +import org.apache.jackrabbit.api.security.user.QueryBuilder; +import org.apache.jackrabbit.api.security.user.User; +import org.apache.jackrabbit.api.security.user.UserManager; +import org.apache.jackrabbit.api.security.user.QueryBuilder.Direction; + +/** + * Simple Query to find Users/Groups + */ +public class FindPeopleQuery implements Query { + + private int searchType; + private String searchQuery; + private boolean isPrefixQuery; + private long offset; + private long maxResults; + + /** + * Constructor. The parameters specify what to query for. + * + * @param searchType the type to search for. + * One of: {@link UserManager#SEARCH_TYPE_USER}, {@link UserManager#SEARCH_TYPE_GROUP} + * or {@link UserManager#SEARCH_TYPE_AUTHORIZABLE} + * @param searchQuery the term to search for + * @param isPrefixQuery true if this is a simple prefix query + * @param offset the offset to start the results from + * @param maxResults the maximum number of rows to retrieve + */ + public FindPeopleQuery(int searchType, String searchQuery, + boolean isPrefixQuery, long offset, long maxResults) { + this.searchType = searchType; + this.searchQuery = searchQuery; + this.isPrefixQuery = isPrefixQuery; + this.offset = offset; + this.maxResults = maxResults; + } + + /* (non-Javadoc) + * @see org.apache.jackrabbit.api.security.user.Query#build(org.apache.jackrabbit.api.security.user.QueryBuilder) + */ + public <T> void build(QueryBuilder<T> builder) { + if (UserManager.SEARCH_TYPE_USER == searchType) { + builder.setSelector(User.class); + } else if (UserManager.SEARCH_TYPE_GROUP == searchType) { + builder.setSelector(Group.class); + } + + //JCR-952: case-insensive sort needs jackrabbit 2.3+ + // builder.setSortOrder("fn:lower-case(@rep:principalName)", Direction.ASCENDING); + builder.setSortOrder("@rep:principalName", Direction.ASCENDING); + builder.setLimit(offset, maxResults + 1); //max + 1 so we can tell if there are more on the next page + + String encodedTerm = encodeForLikeClause(searchQuery); + if (isPrefixQuery) { + String lcEncodedTerm = encodedTerm.toLowerCase(); + //check for a case insensitive match in principalName + builder.setCondition(builder.or(builder.nameMatches(encodedTerm + "%"), + builder.nameMatches(lcEncodedTerm + "%")) + ); + } else { + //check for a match in the name or displayName + builder.setCondition(builder.or(builder.nameMatches("%" + encodedTerm + "%"), + builder.like("@displayName", "%" + encodedTerm + "%"))); + } + } + + /** + * Encodes the special characters of a term to provide a valid like clause + * @param rawValue the value to encode + * @return encoded value safe to use in a query like clause + */ + static String encodeForLikeClause(String rawValue) { + if (rawValue == null || rawValue.length() == 0) { + return rawValue; + } + + char wrappingQuoteChar = '\''; + // encode + StringBuffer encoded = new StringBuffer(); + for (int i = 0; i < rawValue.length(); i++) { + char c = rawValue.charAt(i); + if (c == '%' || c == '_' || c == '\\') { + encoded.append('\\'); //escape the special character + } else if (c == wrappingQuoteChar) { + encoded.append(c); //double up the character to match the literal quote character + } + if (c == '*') { + //change the '*' wildcard to '%' + encoded.append('%'); + } else if (c == '?') { + //change the '?' wildcard to '_' + encoded.append('_'); + } else { + encoded.append(c); + } + } + return encoded.toString(); + } +} Propchange: sling/trunk/samples/usermanager-ui/src/main/java/org/apache/sling/usermgr/FindPeopleQuery.java ------------------------------------------------------------------------------ svn:eol-style = native Added: sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json (added) +++ sling/trunk/samples/usermanager-ui/src/main/resources/SLING-INF/i18n/resources.json Sun May 1 22:46:46 2011 @@ -0,0 +1,444 @@ +{ +/* + * 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. + */ + "en": { + "jcr:mixinTypes": [ + "mix:language" + ], + "jcr:language": "en", + "sling:basename": "org.apache.sling.usermgr.Resources", + + "page.template.title": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.template.title", + "sling:message": "{0} : Sling" + }, + "msg.noscript": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "msg.noscript", + "sling:message": "Your browser has scripting disabled. Please enable scripting for a better experience." + }, + + "link.login": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "link.login", + "sling:message": "Login" + }, + "link.logout": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "link.logout", + "sling:message": "Logout" + }, + "logo.alt": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "logo.alt", + "sling:message": "Apache Sling" + }, + + + "page.title.update.group": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.update.group", + "sling:message": "Update Group" + }, + + "header.update.group": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "header.update.group", + "sling:message": "Update Group: {0}" + }, + + "page.title.view.group": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.view.group", + "sling:message": "View Group" + }, + + "header.view.group": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "header.view.group", + "sling:message": "View Group: {0}" + }, + + "prop.label.email": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.email", + "sling:message": "E-Mail" + }, + "prop.label.displayName": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.displayName", + "sling:message": "Display Name" + }, + "prop.label.password": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.password", + "sling:message": "Password" + }, + "prop.label.confirmPassword": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.confirmPassword", + "sling:message": "Confirm Password" + }, + "prop.label.memberOf": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.memberOf", + "sling:message": "Member Of" + }, + "prop.label.declaredMembers": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.declaredMembers", + "sling:message": "Declared Members" + }, + + "button.save": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "button.save", + "sling:message": "Save" + }, + "link.remove": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "link.remove", + "sling:message": "Remove" + }, + "link.add.property": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "link.add.property", + "sling:message": "Add Property" + }, + "link.add.member": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "link.add.member", + "sling:message": "Add Member" + }, + "tooltip.removeMember": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "tooltip.removeMember", + "sling:message": "Remove Member" + }, + + "dialog.title.add.property": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "dialog.title.add.property", + "sling:message": "Add New Property" + }, + "label.property.name": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "label.property.name", + "sling:message": "Name" + }, + + "dialog.title.confirm.remove": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "dialog.title.confirm.remove", + "sling:message": "Confirm Remove" + }, + "msg.group.confirm.remove": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "msg.group.confirm.remove", + "sling:message": "Are you sure you want to delete this group?" + }, + + "dialog.title.add.member": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "dialog.title.add.member", + "sling:message": "Add Group Member" + }, + "label.group.name": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "label.group.name", + "sling:message": "Name" + }, + + + + "page.title.find.groups": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.find.groups", + "sling:message": "Find Groups" + }, + "button.search": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "button.search", + "sling:message": "Search" + }, + "label.column.name": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "label.column.name", + "sling:message": "Name" + }, + "label.column.displayName": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "label.column.displayName", + "sling:message": "Display Name" + }, + "msg.readyToSearch": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "msg.readyToSearch", + "sling:message": "Ready to Search" + }, + "msg.noMatchesFound": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "msg.noMatchesFound", + "sling:message": "No Matches Found" + }, + + "csv.quicksearch.items": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "csv.quicksearch.items", + "sling:message": "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" + }, + + "quicksearch.label.all": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "quicksearch.label.all", + "sling:message": "All" + }, + + + "page.title.create.group": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.create.group", + "sling:message": "Create Group" + }, + "prop.label.groupid": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.groupid", + "sling:message": "Group ID" + }, + "prop.label.displayName": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.displayName", + "sling:message": "Display Name" + }, + "button.create": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "button.create", + "sling:message": "Create" + }, + + + + "page.title.update.user": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.update.user", + "sling:message": "Update User" + }, + "header.update.user": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "header.update.user", + "sling:message": "Update User: {0}" + }, + "page.title.view.user": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.view.user", + "sling:message": "View User" + }, + "header.view.user": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "header.view.user", + "sling:message": "View User: {0}" + }, + + "msg.user.confirm.remove": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "msg.user.confirm.remove", + "sling:message": "Are you sure you want to delete this user?" + }, + + "header.change.password": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "header.change.password", + "sling:message": "Change Password" + }, + "prop.label.oldPwd": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.oldPwd", + "sling:message": "Old Password" + }, + "prop.label.newPwd": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.newPwd", + "sling:message": "New Password" + }, + "prop.label.newPwdConfirm": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.newPwdConfirm", + "sling:message": "Confirm Password" + }, + "button.updatePwd": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "button.updatePwd", + "sling:message": "Update" + }, + + "csv.static.group.prop.keys": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "csv.static.group.prop.keys", + "sling:message": "displayName" + }, + "csv.static.user.prop.keys": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "csv.static.user.prop.keys", + "sling:message": "displayName,email" + }, + + + "tooltip.removeProperty": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "tooltip.removeProperty", + "sling:message": "Remove Property" + }, + + + + "menu.link.authorizables": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.authorizables", + "sling:message": "Authorizables" + }, + "menu.link.users": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.users", + "sling:message": "Users" + }, + "menu.link.groups": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.groups", + "sling:message": "Groups" + }, + "menu.link.createUser": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.createUser", + "sling:message": "Create User" + }, + "menu.link.createGroup": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.createGroup", + "sling:message": "Create Group" + }, + "menu.link.updateUser": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.updateUser", + "sling:message": "Update User" + }, + "menu.link.updateGroup": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.updateGroup", + "sling:message": "Update Group" + }, + "menu.link.viewUser": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.viewUser", + "sling:message": "View User" + }, + "menu.link.viewGroup": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "menu.link.viewGroup", + "sling:message": "View Group" + }, + + "page.title.find.authorizables": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.find.authorizables", + "sling:message": "Find Authorizables" + }, + + + "page.title.find.users": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.find.users", + "sling:message": "Find Users" + }, + + "page.title.create.user": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "page.title.create.user", + "sling:message": "Create User" + }, + "prop.label.userid": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.userid", + "sling:message": "User ID" + }, + "prop.label.email": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.email", + "sling:message": "E-Mail" + }, + "prop.label.pwd": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.pwd", + "sling:message": "Password" + }, + "prop.label.pwdConfirm": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "prop.label.pwdConfirm", + "sling:message": "Confirm Password" + }, + + "declaredMembers.empty": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "declaredMembers.empty", + "sling:message": "No Members" + }, + "memberOf.empty": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "memberOf.empty", + "sling:message": "No Groups" + }, + + + + "paging.current.page": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "paging.current.page", + "sling:message": "{0} to {1}" + }, + "label.paging.first.page": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "label.paging.first.page", + "sling:message": "|<" + }, + "label.paging.prev.page": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "label.paging.prev.page", + "sling:message": "<<" + }, + "label.paging.next.page": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "label.paging.next.page", + "sling:message": ">>" + }, + "tooltip.paging.first.page": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "tooltip.paging.first.page", + "sling:message": "First Page" + }, + "tooltip.paging.prev.page": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "tooltip.paging.prev.page", + "sling:message": "Previous Page" + }, + "tooltip.paging.next.page": { + "jcr:primaryType": "sling:MessageEntry", + "sling:key": "tooltip.paging.next.page", + "sling:message": "Next Page" + } + + } +} Added: sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css (added) +++ sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css Sun May 1 22:46:46 2011 @@ -0,0 +1,444 @@ +/*! + * 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. + */ +body { + background-color: #ffffff; + color: #3b3b3b; + font-family: Tahoma, Arial, sans-serif; + font-size: 10pt; + line-height: 140%; + margin: 0; + padding: 0; +} + +a { + color: #1980af; + text-decoration: none; +} + +a:visited { + color: #1980af; +} + +a:hover { + color: #1faae9; + text-decoration: underline; +} + +img, a img +{ + border: none; +} + +.title { + position: absolute; + left: 1px; + right: 1px; + top: 25px; + height: 81px; + background: url(../../images/gradient.png) + repeat-x; + background-position: bottom; +} + +.logo { + position: absolute; + width: 15em; + height: 81px; + text-align: center; +} + +.header { + text-align: right; + margin-right: 20pt; +} + +.menu { + border-top: 10px solid #f9bb00; + position: absolute; + top: 107px; + left: 1px; + width: 15em; + bottom: 0px; + padding: 0px; + background-color: #fcfcfc +} + +.menu ul { + background-color: #fdf5d9; + list-style: none; + padding-left: 0px; + margin-top: 0px; + padding-top: 2em; + padding-bottom: 2em; + margin-left: 0px; + color: #4a4a43 +} + +.menu ul li { + padding-left: 4em; + padding-top: 2px; + padding-bottom: 2px; +} + +.menu ul li.ui-state-highlight { + font-weight: bold; +} + +.menu a { + color: #4a4a43 +} + +.main { + position: absolute; + border-top: 10px solid #cde0ea; + top: 107px; + left: 15em; + right: 1px; + margin-left: 2px; + padding: 10px 10px; +} + + +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +/* --- Login/Logout Links ---*/ +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ + +#menu_login +{ + display: inline; + margin: 10px 20px; + font-size: 11px; + padding: 5px 7px; + position: absolute; + right: 0; + top: 0; + z-index: 10; +} + +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +/* --- User Manager Pages ---*/ +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ + +.usermgmt-body +{ + padding: 5px; +} + +.usermgmt-header +{ + font-size: 14px; + padding: 5px 10px; + margin: 0 0 10px 0; +} + +.info-msg-block +{ + margin-left: 10px; + margin-right: 10px; + margin-bottom: 10px; +} +.info-msg-block p +{ + margin: 5px; +} +.info-msg-block span.ui-icon +{ + float: left; +} +.info-msg-text +{ + margin-left: 5px; +} + +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +/* --- User/Group Search Pages ---*/ +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ + +#find-authorizables-form fieldset +{ + border: none; + margin: 0; + padding: 0; + line-height: 20px; +} + +.search-empty-msg { + line-height: 100px; + font-size: large; + font-weight: bold; + text-align: center; +} + +#authorizables-body +{ + min-width: 750px; +} + +#find-authorizables-quick-nav +{ + padding: 2px 4px; +} + +#authorizables-results-body +{ + margin-top: 5px; +} + +#find-authorizables-quick-nav label +{ + width: auto; + padding: 3px 5px; +} + +#find-authorizables-quick-nav .ui-button-text-only .ui-button-text +{ + line-height: 1; + padding: 3px 3px; + font-size: 10pt; +} +#find-authorizables-block .ui-button-text-only .ui-button-text +{ + line-height: 1; + padding: 5px 5px; + font-size: 10pt; +} + +#search-result-paging .ui-button-text-only .ui-button-text +{ + line-height: 1; + font-size: 10pt; +} +#search-result-paging span#current_page { + margin-left: 6px; + margin-right: 6px; +} + +#find-authorizables-block +{ + float: right; + line-height: 33px; + padding-right: 10px; +} + +#find-authorizables-block input +{ + padding: 0 4px; + font-size: 10pt; +} + +#search-result td, +#search-result th +{ + padding: 5px; +} + +#search-result tr.odd +{ + background-color: #eee; +} + +#find-authorizables-header +{ + margin-bottom: 5px; +} + +#find-authorizables-header h3 +{ + font-size: 14px; + font-weight: bold; + display: inline; + line-height: 33px; +} + + +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +/* --- Create User/Group Pages ---*/ +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ + +#create-user-form, +#create-group-form +{ + margin: 0px; + padding: 0px; +} + +#create-user-form fieldset, +#create-group-form fieldset +{ + border: none; + margin: 0; + padding: 0; + line-height: 20px; +} + +#create-user-form label, +#create-group-form label +{ + float: left; + display: inline; + width: 15%; + text-align: right; +} + +#create-user-form input, +#create-group-form input +{ + margin-left: 10px; + width: 75%; +} + +#create-user-form button, +#create-group-form button +{ + margin-left: 10px; +} + +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +/* --- Update User/Group Pages ---*/ +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ + +#update-user-form, +#update-password-form, +#update-group-form +{ + margin: 0px; + padding: 0px; +} + +#update-user-form fieldset, +#update-password-form fieldset, +#update-group-form fieldset, +#remove-user-form fieldset, +#remove-group-form fieldset, +#add-property-form fieldset, +#add-group-member-form fieldset +{ + border: none; + margin: 0; + padding: 0; + line-height: 20px; +} + +#update-user-form label, +#update-password-form label, +#update-group-form label, +#add-property-form label, +#add-group-member-form label +{ + float: left; + display: inline; + width: 15%; + text-align: right; +} + +#update-user-form input, +#update-password-form input, +#update-group-form input, +#add-property-form input, +#add-group-member-form input +{ + margin-left: 10px; + width: 75%; +} + +#update-user-form button, +#update-password-form button, +#update-group-form button +{ + margin-left: 10px; +} + +#update-user-form ol, +#update-group-form ol +{ + float: left; + display: inline; + width: 65%; + margin: 0 5px 0 10px; + padding-left: 0; + list-style-position: inside; + list-style-type: none; +} + +#update-password-body +{ + margin-top: 10px; +} + +#update-password-form label +{ + width: 15%; + text-align: right; +} + +#update-password-form input +{ + margin-left: 10px; + width: 75%; +} + +#update-password-form button +{ + margin-left: 10px; +} + +.prop-line +{ + margin-bottom: 5px; + line-height: 26px; +} + +.prop-line .remove-property, +.prop-line .remove-member +{ + position: absolute; + margin: 5px 5px; +} + +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +/* --- Widget style tweaks ---*/ +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ + +.ui-autocomplete-loading +{ + background: white url('../../images/ui-anim_basic_16x16.gif') right center no-repeat; +} + +.noscript-hide +{ + display:none; +} + + +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +/* --- Validation error styles ---*/ +/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +input.error, textarea.error +{ + border: 1px dotted red; +} + +label.error, label.error +{ + color: red; + font-style: italic; + font-weight: bold; + margin-left: 15%; + padding-left: 10px; + text-align: left !important; + width: auto !important; +} \ No newline at end of file Propchange: sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.css ------------------------------------------------------------------------------ svn:eol-style = native Added: sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.min.css URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.min.css?rev=1098430&view=auto ============================================================================== --- sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.min.css (added) +++ sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.min.css Sun May 1 22:46:46 2011 @@ -0,0 +1,58 @@ +/*!* 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. */ body{background-color:#fff;color:#3b3b3b;font-family:Tahoma,Arial,sans-serif;font-size:10pt;line-height:140%;margin:0;padding:0;} +a{color:#1980af;text-decoration:none;} +a:visited{color:#1980af;} +a:hover{color:#1faae9;text-decoration:underline;} +img,a img{border:none;} +.title{position:absolute;left:1px;right:1px;top:25px;height:81px;background:url(../../images/gradient.png) repeat-x;background-position:bottom;} +.logo{position:absolute;width:15em;height:81px;text-align:center;} +.header{text-align:right;margin-right:20pt;} +.menu{border-top:10px solid #f9bb00;position:absolute;top:107px;left:1px;width:15em;bottom:0;padding:0;background-color:#fcfcfc;} +.menu ul{background-color:#fdf5d9;list-style:none;padding-left:0;margin-top:0;padding-top:2em;padding-bottom:2em;margin-left:0;color:#4a4a43;} +.menu ul li{padding-left:4em;padding-top:2px;padding-bottom:2px;} +.menu ul li.ui-state-highlight{font-weight:bold;} +.menu a{color:#4a4a43;} +.main{position:absolute;border-top:10px solid #cde0ea;top:107px;left:15em;right:1px;margin-left:2px;padding:10px 10px;} +#menu_login{display:inline;margin:10px 20px;font-size:11px;padding:5px 7px;position:absolute;right:0;top:0;z-index:10;} +.usermgmt-body{padding:5px;} +.usermgmt-header{font-size:14px;padding:5px 10px;margin:0 0 10px 0;} +.info-msg-block{margin-left:10px;margin-right:10px;margin-bottom:10px;} +.info-msg-block p{margin:5px;} +.info-msg-block span.ui-icon{float:left;} +.info-msg-text{margin-left:5px;} +#find-authorizables-form fieldset{border:none;margin:0;padding:0;line-height:20px;} +.search-empty-msg{line-height:100px;font-size:large;font-weight:bold;text-align:center;} +#authorizables-body{min-width:750px;} +#find-authorizables-quick-nav{padding:2px 4px;} +#authorizables-results-body{margin-top:5px;} +#find-authorizables-quick-nav label{width:auto;padding:3px 5px;} +#find-authorizables-quick-nav .ui-button-text-only .ui-button-text{line-height:1;padding:3px 3px;font-size:10pt;} +#find-authorizables-block .ui-button-text-only .ui-button-text{line-height:1;padding:5px 5px;font-size:10pt;} +#search-result-paging .ui-button-text-only .ui-button-text{line-height:1;font-size:10pt;} +#search-result-paging span#current_page{margin-left:6px;margin-right:6px;} +#find-authorizables-block{float:right;line-height:33px;padding-right:10px;} +#find-authorizables-block input{padding:0 4px;font-size:10pt;} +#search-result td,#search-result th{padding:5px;} +#search-result tr.odd{background-color:#eee;} +#find-authorizables-header{margin-bottom:5px;} +#find-authorizables-header h3{font-size:14px;font-weight:bold;display:inline;line-height:33px;} +#create-user-form,#create-group-form{margin:0;padding:0;} +#create-user-form fieldset,#create-group-form fieldset{border:none;margin:0;padding:0;line-height:20px;} +#create-user-form label,#create-group-form label{float:left;display:inline;width:15%;text-align:right;} +#create-user-form input,#create-group-form input{margin-left:10px;width:75%;} +#create-user-form button,#create-group-form button{margin-left:10px;} +#update-user-form,#update-password-form,#update-group-form{margin:0;padding:0;} +#update-user-form fieldset,#update-password-form fieldset,#update-group-form fieldset,#remove-user-form fieldset,#remove-group-form fieldset,#add-property-form fieldset,#add-group-member-form fieldset{border:none;margin:0;padding:0;line-height:20px;} +#update-user-form label,#update-password-form label,#update-group-form label,#add-property-form label,#add-group-member-form label{float:left;display:inline;width:15%;text-align:right;} +#update-user-form input,#update-password-form input,#update-group-form input,#add-property-form input,#add-group-member-form input{margin-left:10px;width:75%;} +#update-user-form button,#update-password-form button,#update-group-form button{margin-left:10px;} +#update-user-form ol,#update-group-form ol{float:left;display:inline;width:65%;margin:0 5px 0 10px;padding-left:0;list-style-position:inside;list-style-type:none;} +#update-password-body{margin-top:10px;} +#update-password-form label{width:15%;text-align:right;} +#update-password-form input{margin-left:10px;width:75%;} +#update-password-form button{margin-left:10px;} +.prop-line{margin-bottom:5px;line-height:26px;} +.prop-line .remove-property,.prop-line .remove-member{position:absolute;margin:5px 5px;} +.ui-autocomplete-loading{background:white url('../../images/ui-anim_basic_16x16.gif') right center no-repeat;} +.noscript-hide{display:none;} +input.error,textarea.error{border:1px dotted red;} +label.error,label.error{color:red;font-style:italic;font-weight:bold;margin-left:15%;padding-left:10px;text-align:left!important;width:auto!important;} \ No newline at end of file Propchange: sling/trunk/samples/usermanager-ui/src/main/resources/css/usermanager/usermanager.min.css ------------------------------------------------------------------------------ svn:eol-style = native Added: sling/trunk/samples/usermanager-ui/src/main/resources/images/ajax-loader.gif URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/images/ajax-loader.gif?rev=1098430&view=auto ============================================================================== Binary file - no diff available. Propchange: sling/trunk/samples/usermanager-ui/src/main/resources/images/ajax-loader.gif ------------------------------------------------------------------------------ svn:mime-type = image/gif Added: sling/trunk/samples/usermanager-ui/src/main/resources/images/gradient.png URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/images/gradient.png?rev=1098430&view=auto ============================================================================== Binary file - no diff available. Propchange: sling/trunk/samples/usermanager-ui/src/main/resources/images/gradient.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: sling/trunk/samples/usermanager-ui/src/main/resources/images/sling-logo.png URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/images/sling-logo.png?rev=1098430&view=auto ============================================================================== Binary file - no diff available. Propchange: sling/trunk/samples/usermanager-ui/src/main/resources/images/sling-logo.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: sling/trunk/samples/usermanager-ui/src/main/resources/images/ui-anim_basic_16x16.gif URL: http://svn.apache.org/viewvc/sling/trunk/samples/usermanager-ui/src/main/resources/images/ui-anim_basic_16x16.gif?rev=1098430&view=auto ============================================================================== Binary file - no diff available. Propchange: sling/trunk/samples/usermanager-ui/src/main/resources/images/ui-anim_basic_16x16.gif ------------------------------------------------------------------------------ svn:mime-type = image/gif