sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bdelacre...@apache.org
Subject svn commit: r1632548 [1/10] - in /sling/trunk/contrib/explorers/resourceeditor: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/sling/ src/main/java/org/apache/sling/reseditor/ src/main/less/ src/m...
Date Fri, 17 Oct 2014 12:17:40 GMT
Author: bdelacretaz
Date: Fri Oct 17 12:17:38 2014
New Revision: 1632548

URL: http://svn.apache.org/r1632548
Log:
SLING-4001 - Resource Editor contribution

Added:
    sling/trunk/contrib/explorers/resourceeditor/   (with props)
    sling/trunk/contrib/explorers/resourceeditor/.gitignore
    sling/trunk/contrib/explorers/resourceeditor/LICENSE.txt
    sling/trunk/contrib/explorers/resourceeditor/NOTICE
    sling/trunk/contrib/explorers/resourceeditor/README
    sling/trunk/contrib/explorers/resourceeditor/layout.js
    sling/trunk/contrib/explorers/resourceeditor/pom.xml
    sling/trunk/contrib/explorers/resourceeditor/src/
    sling/trunk/contrib/explorers/resourceeditor/src/main/
    sling/trunk/contrib/explorers/resourceeditor/src/main/java/
    sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/
    sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/
    sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/
    sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/
    sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/DownloadBinaryProperty.java
    sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/ResEditorResourceProvider.java
    sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/SelectorBasedResourceDecorator.java
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/alerts.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/badges.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/bootstrap.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/breadcrumbs.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/button-groups.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/buttons.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/carousel.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/close.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/code.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/component-animations.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/dropdowns.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/forms.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/glyphicons.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/grid.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/input-groups.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/jumbotron.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/labels.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/list-group.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/media.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/mixins.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/modals.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/navbar.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/navs.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/normalize.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/pager.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/pagination.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/panels.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/popovers.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/print.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/progress-bars.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/alerts.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/buttons.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/elements.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/forms.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/modals.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/navs.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/reseditor.less   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/scaffolding.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/reseditor/variables.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/responsive-utilities.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/scaffolding.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/tables.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/theme.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/thumbnails.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/tooltip.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/type.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/utilities.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/variables.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/less/wells.less
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/animate.min.css
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/bootbox.reseditor.css
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/bootstrap.css
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/browser_ie.css   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font.css
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/font_ie.css
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/shake.css
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/css/style.css
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/Michroma.eot   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/font/Michroma.woff   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/32px.png   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/40px.png   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/add.png   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/alu.gif   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/file.png   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/folder_lightgray.png   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/remove.png   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/right_arrow_lightgray.png   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/root.png   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/img/throbber.gif   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/JSTreeAdapter.reseditor.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/LoginController.reseditor.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/MainController.reseditor.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/TreeController.reseditor.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/bootbox.min.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/bootstrap.min.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/jquery.min.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/jquery.scrollTo-min.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/reseditor/content/js/jstree.js
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/sling/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/sling/servlet/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/sling/servlet/default/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/sling/servlet/default/reseditor/
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/sling/servlet/default/reseditor/html.jsp
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/sling/servlet/default/reseditor/nodes.json.incl.jsp   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/sling/servlet/default/reseditor/nodes.json.jsp   (with props)
    sling/trunk/contrib/explorers/resourceeditor/src/main/resources/SLING-INF/libs/sling/servlet/default/reseditor/rootnodes.json.jsp   (with props)

Propchange: sling/trunk/contrib/explorers/resourceeditor/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Oct 17 12:17:38 2014
@@ -0,0 +1,14 @@
+target
+bin
+*.iml
+*.ipr
+*.iws
+.settings
+.project
+.classpath
+.externalToolBuilders
+maven-eclipse.xml
+
+
+
+

Added: sling/trunk/contrib/explorers/resourceeditor/.gitignore
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/.gitignore?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/.gitignore (added)
+++ sling/trunk/contrib/explorers/resourceeditor/.gitignore Fri Oct 17 12:17:38 2014
@@ -0,0 +1,14 @@
+.classpath
+.project
+target
+.settings
+.DS_Store
+pom.xml.releaseBackup
+release.properties
+pom.xml.tag
+pom.xml.next
+website/
+jcrbrowser/src/main/resources/SLING-INF/libs/jcrbrowser/content/css/bootstrap.css
+jcrbrowser/.externalToolBuilders/Maven_Ant_Builder.launch
+jcrbrowser/maven-eclipse.xml
+org.sboehme.treeview/.externalToolBuilders/Maven_Ant_Builder.launch

Added: sling/trunk/contrib/explorers/resourceeditor/LICENSE.txt
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/LICENSE.txt?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/LICENSE.txt (added)
+++ sling/trunk/contrib/explorers/resourceeditor/LICENSE.txt Fri Oct 17 12:17:38 2014
@@ -0,0 +1,176 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
\ No newline at end of file

Added: sling/trunk/contrib/explorers/resourceeditor/NOTICE
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/NOTICE?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/NOTICE (added)
+++ sling/trunk/contrib/explorers/resourceeditor/NOTICE Fri Oct 17 12:17:38 2014
@@ -0,0 +1,40 @@
+Sling Resource Editor
+Copyright 2014 Apache Software Foundation
+
++++ Third party libraries +++
+
+++ Apache Sling  - http://sling.apache.org/ ++
+Apache 2 license from http://www.apache.org/licenses/LICENSE-2.0.html 
+
+++ Twitter Bootstrap - http://getbootstrap.com/
+MIT License from http://opensource.org/licenses/MIT
+
+++ Glyphicons included in Twitter Bootstrap ++
+http://glyphicons.com/license/ states that the version that is included in Twitter Bootstrap uses the same license as Twitter Bootstrap.
+
+++ Bootbox - http://bootboxjs.com/ ++
+MIT License from http://opensource.org/licenses/MIT
+
+++ Google Webfonts - http://www.google.com/webfonts ++
+Quote from the about page at http://www.google.com/webfonts#AboutPlace:about
+All of the fonts are Open Source. This means that you are free to share your favorites with friends and colleagues. You can even customize them for your own use, or collaborate with the original designer to improve them. And you can use them in every way you want, privately or commercially ��� in print, on your computer, or in your websites.
+
+++ Less CSS compiler - http://lesscss.org/ ++
+Apache 2 license from http://www.apache.org/licenses/LICENSE-2.0.html
+
+++ jQuery - http://jquery.org/ ++
+MIT License from http://opensource.org/licenses/MIT
+
+++ jQuery scrollTo plugin - http://flesler.blogspot.com/2007/10/jqueryscrollto.html ++
+MIT License from http://opensource.org/licenses/MIT
+
+++ The background image img/alu.gif - http://www.grsites.com/archive/textures/view/source=archive/id=2237 ++
+Attribution from http://www.apache.org/licenses/LICENSE-2.0.html
+
+++ Animate.css - https://github.com/daneden/animate.css ++
+MIT License from http://opensource.org/licenses/MIT
+
+++ jsTree - http://www.jstree.com ++
+MIT License from http://opensource.org/licenses/MIT
+
+ 
\ No newline at end of file

Added: sling/trunk/contrib/explorers/resourceeditor/README
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/README?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/README (added)
+++ sling/trunk/contrib/explorers/resourceeditor/README Fri Oct 17 12:17:38 2014
@@ -0,0 +1,25 @@
+Apache Sling Resource Editor 
+
+The Apache Sling Resource Editor allows to edit Apache Sling content based on the Sling API. 
+
+++ Deploy Binaries ++
+o Install Apache Sling (see http://sling.apache.org/site/getting-and-building-sling.html)
+o Navigate to the OSGi Repository page of the management console within your running Sling instance (/system/console/obr)
+o If the OSGi Repository page is not there, install `http://search.maven.org/#artifactdetails|org.apache.felix|org.apache.felix.webconsole.plugins.obr|1.0.2|bundle` at `system/console/bundles` to make it available.
+o Add the OSGi repository URL (http://www.jcrbrowser.org/sling/obr/repository.xml). 
+o Search for the "Apache Sling Resource Editor" resource and navigate to the latest version.
+o Click "Deploy and Start".
+o At /system/console/bundles you will see that the Resource Editor bundle is active.
+o Open "/.reseditor.html" at your server to see the web application.
+
+++ Build the Sling Resource Editor ++
+o Deploy the binaries as described above. 
+o Download and install Git from http://www.git-scm.com/download
+o Call `git clone git://github.com/sandroboehme/resourceeditor.git` in a shell. It will create the resourceeditor subfolder containing the source. 
+o Change to the resourceeditor subdirectory and call `mvn clean package` there to install the sources into the running Sling instance.
+
+++ Develop with the Sling Resource Editor ++
+o Use `mvn install` to deploy changes of Java classes
+o To have frontend changes automatically deployed call `mvn install`
+o To have the less sources automatically compiled call `mvn lesscss:compile -Dlesscss.watch=true`
+

Added: sling/trunk/contrib/explorers/resourceeditor/layout.js
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/layout.js?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/layout.js (added)
+++ sling/trunk/contrib/explorers/resourceeditor/layout.js Fri Oct 17 12:17:38 2014
@@ -0,0 +1,265 @@
+function handleSaveLayout() {
+	var e = $(".demo").html();
+	if (e != window.demoHtml) {
+		saveLayout();
+		window.demoHtml = e
+	}
+}
+function handleJsIds() {
+	handleModalIds();
+	handleAccordionIds();
+	handleCarouselIds();
+	handleTabsIds()
+}
+function handleAccordionIds() {
+	var e = $(".demo #myAccordion");
+	var t = randomNumber();
+	var n = "panel-" + t;
+	var r;
+	e.attr("id", n);
+	e.find(".panel").each(function(e, t) {
+		r = "panel-element-" + randomNumber();
+		$(t).find(".panel-title").each(function(e, t) {
+			$(t).attr("data-parent", "#" + n);
+			$(t).attr("href", "#" + r)
+		});
+		$(t).find(".panel-collapse").each(function(e, t) {
+			$(t).attr("id", r)
+		})
+	})
+}
+function handleCarouselIds() {
+	var e = $(".demo #myCarousel");
+	var t = randomNumber();
+	var n = "carousel-" + t;
+	e.attr("id", n);
+	e.find(".carousel-indicators li").each(function(e, t) {
+		$(t).attr("data-target", "#" + n)
+	});
+	e.find(".left").attr("href", "#" + n);
+	e.find(".right").attr("href", "#" + n)
+}
+function handleModalIds() {
+	var e = $(".demo #myModalLink");
+	var t = randomNumber();
+	var n = "modal-container-" + t;
+	var r = "modal-" + t;
+	e.attr("id", r);
+	e.attr("href", "#" + n);
+	e.next().attr("id", n)
+}
+function handleTabsIds() {
+	var e = $(".demo #myTabs");
+	var t = randomNumber();
+	var n = "tabs-" + t;
+	e.attr("id", n);
+	e.find(".tab-pane").each(function(e, t) {
+		var n = $(t).attr("id");
+		var r = "panel-" + randomNumber();
+		$(t).attr("id", r);
+		$(t).parent().parent().find("a[href=#" + n + "]").attr("href", "#" + r)
+	})
+}
+function randomNumber() {
+	return randomFromInterval(1, 1e6)
+}
+function randomFromInterval(e, t) {
+	return Math.floor(Math.random() * (t - e + 1) + e)
+}
+function gridSystemGenerator() {
+	$(".lyrow .preview input").bind("keyup", function() {
+		var e = 0;
+		var t = "";
+		var n = false;
+		var r = $(this).val().split(" ", 12);
+		$.each(r, function(r, i) {
+			if (!n) {
+				if (parseInt(i) <= 0)
+					n = true;
+				e = e + parseInt(i);
+				t += '<div class="col-md-' + i + ' column"></div>'
+			}
+		});
+		if (e == 12 && !n) {
+			$(this).parent().next().children().html(t);
+			$(this).parent().prev().show()
+		} else {
+			$(this).parent().prev().hide()
+		}
+	})
+}
+function configurationElm(e, t) {
+	$(".demo").delegate(".configuration > a", "click", function(e) {
+		e.preventDefault();
+		var t = $(this).parent().next().next().children();
+		$(this).toggleClass("active");
+		t.toggleClass($(this).attr("rel"))
+	});
+	$(".demo").delegate(".configuration .dropdown-menu a", "click",
+			function(e) {
+				e.preventDefault();
+				var t = $(this).parent().parent();
+				var n = t.parent().parent().next().next().children();
+				t.find("li").removeClass("active");
+				$(this).parent().addClass("active");
+				var r = "";
+				t.find("a").each(function() {
+					r += $(this).attr("rel") + " "
+				});
+				t.parent().removeClass("open");
+				n.removeClass(r);
+				n.addClass($(this).attr("rel"))
+			})
+}
+function removeElm() {
+	$(".demo").delegate(".remove", "click", function(e) {
+		e.preventDefault();
+		$(this).parent().remove();
+		if (!$(".demo .lyrow").length > 0) {
+			clearDemo()
+		}
+	})
+}
+function clearDemo() {
+	$(".demo").empty()
+}
+function removeMenuClasses() {
+	$("#menu-layoutit li button").removeClass("active")
+}
+function changeStructure(e, t) {
+	$("#download-layout ." + e).removeClass(e).addClass(t)
+}
+function cleanHtml(e) {
+	$(e).parent().append($(e).children().html())
+}
+function downloadLayoutSrc() {
+	var e = "";
+	$("#download-layout").children().html($(".demo").html());
+	var t = $("#download-layout").children();
+	t.find(".preview, .configuration, .drag, .remove").remove();
+	t.find(".lyrow").addClass("removeClean");
+	t.find(".box-element").addClass("removeClean");
+	t.find(".lyrow .lyrow .lyrow .lyrow .lyrow .removeClean").each(function() {
+		cleanHtml(this)
+	});
+	t.find(".lyrow .lyrow .lyrow .lyrow .removeClean").each(function() {
+		cleanHtml(this)
+	});
+	t.find(".lyrow .lyrow .lyrow .removeClean").each(function() {
+		cleanHtml(this)
+	});
+	t.find(".lyrow .lyrow .removeClean").each(function() {
+		cleanHtml(this)
+	});
+	t.find(".lyrow .removeClean").each(function() {
+		cleanHtml(this)
+	});
+	t.find(".removeClean").each(function() {
+		cleanHtml(this)
+	});
+	t.find(".removeClean").remove();
+	$("#download-layout .column").removeClass("ui-sortable");
+	$("#download-layout .row-fluid").removeClass("clearfix").children()
+			.removeClass("column");
+	if ($("#download-layout .container").length > 0) {
+		changeStructure("row-fluid", "row")
+	}
+	formatSrc = $.htmlClean($("#download-layout").html(), {
+		format : true,
+		allowedAttributes : [ [ "id" ], [ "class" ], [ "data-toggle" ],
+				[ "data-target" ], [ "data-parent" ], [ "role" ],
+				[ "data-dismiss" ], [ "aria-labelledby" ], [ "aria-hidden" ],
+				[ "data-slide-to" ], [ "data-slide" ] ]
+	});
+	$("#download-layout").html(formatSrc);
+	$("#downloadModal textarea").empty();
+	$("#downloadModal textarea").val(formatSrc)
+}
+var currentDocument = null;
+var timerSave = 2e3;
+var demoHtml = $(".demo").html();
+$(window).resize(function() {
+	$("body").css("min-height", $(window).height() - 90);
+	$(".demo").css("min-height", $(window).height() - 160)
+});
+$(document).ready(function() {
+	$("body").css("min-height", $(window).height() - 90);
+	$(".demo").css("min-height", $(window).height() - 160);
+	$(".demo, .demo .column").sortable({
+		connectWith : ".column",
+		opacity : .35,
+		handle : ".drag"
+	});
+	$(".sidebar-nav .lyrow").draggable({
+		connectToSortable : ".demo",
+		helper : "clone",
+		handle : ".drag",
+		drag : function(e, t) {
+			t.helper.width(400)
+		},
+		stop : function(e, t) {
+			$(".demo .column").sortable({
+				opacity : .35,
+				connectWith : ".column"
+			})
+		}
+	});
+	$(".sidebar-nav .box").draggable({
+		connectToSortable : ".column",
+		helper : "clone",
+		handle : ".drag",
+		drag : function(e, t) {
+			t.helper.width(400)
+		},
+		stop : function() {
+			handleJsIds()
+		}
+	});
+	$("[data-target=#downloadModal]").click(function(e) {
+		e.preventDefault();
+		downloadLayoutSrc()
+	});
+	$("#download").click(function() {
+		downloadLayout();
+		return false
+	});
+	$("#downloadhtml").click(function() {
+		downloadHtmlLayout();
+		return false
+	});
+	$("#edit").click(function() {
+		$("body").removeClass("devpreview sourcepreview");
+		$("body").addClass("edit");
+		removeMenuClasses();
+		$(this).addClass("active");
+		return false
+	});
+	$("#clear").click(function(e) {
+		e.preventDefault();
+		clearDemo()
+	});
+	$("#devpreview").click(function() {
+		$("body").removeClass("edit sourcepreview");
+		$("body").addClass("devpreview");
+		removeMenuClasses();
+		$(this).addClass("active");
+		return false
+	});
+	$("#sourcepreview").click(function() {
+		$("body").removeClass("edit");
+		$("body").addClass("devpreview sourcepreview");
+		removeMenuClasses();
+		$(this).addClass("active");
+		return false
+	});
+	$(".nav-header").click(function() {
+		$(".sidebar-nav .boxes, .sidebar-nav .rows").hide();
+		$(this).next().slideDown()
+	});
+	removeElm();
+	configurationElm();
+	gridSystemGenerator();
+	setInterval(function() {
+		handleSaveLayout()
+	}, timerSave)
+})

Added: sling/trunk/contrib/explorers/resourceeditor/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/pom.xml?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/pom.xml (added)
+++ sling/trunk/contrib/explorers/resourceeditor/pom.xml Fri Oct 17 12:17:38 2014
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 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>
+	<groupId>org.apache.sling</groupId>
+	<artifactId>resource-editor</artifactId>
+	<packaging>bundle</packaging>
+	<version>1.0-SNAPSHOT</version>
+	<name>Apache Sling Resource Editor</name>
+	<description>A resource editor for Apache Sling.</description>
+	<repositories>
+		<repository>
+			<id>com.springsource.repository.bundles.release</id>
+			<name>SpringSource Enterprise Bundle Repository - SpringSource Bundle
+			Releases</name>
+			<url>http://repository.springsource.com/maven/bundles/release</url>
+		</repository>
+
+		<repository>
+			<id>com.springsource.repository.bundles.external</id>
+			<name>SpringSource Enterprise Bundle Repository - External Bundle
+			Releases</name>
+			<url>http://repository.springsource.com/maven/bundles/external</url>
+		</repository>
+	</repositories>
+	<scm>
+		<developerConnection>scm:git:https://sandroboehme@github.com/sandroboehme/resourceeditor.git</developerConnection>
+		<url>https://github.com/sandroboehme/resourceeditor</url>
+	</scm>
+
+	<build>
+		<resources>
+			<resource>
+				<directory>src/main/less</directory>
+			</resource>
+			<resource>
+				<directory>src/main/resources</directory>
+			</resource>
+		</resources>
+		<plugins>
+			<plugin>
+				<groupId>org.lesscss</groupId>
+				<artifactId>lesscss-maven-plugin</artifactId>
+				<version>1.7.0.1.1-SNAPSHOT</version>
+				<configuration>
+					<outputDirectory>${project.basedir}/src/main/resources/SLING-INF/libs/reseditor/content/css</outputDirectory>
+					<includes>
+						<include>bootstrap.less</include>
+					</includes>
+				</configuration>
+				<executions>
+					<execution>
+						<goals>
+							<goal>compile</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-scr-plugin</artifactId>
+				<version>1.7.2</version>
+				<executions>
+					<execution>
+						<id>generate-scr-descriptor</id>
+						<goals>
+							<goal>scr</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<version>2.3.7</version>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Sling-Initial-Content>SLING-INF/libs/sling/servlet/default/reseditor;overwrite:=true;path:=/libs/sling/servlet/default/reseditor,SLING-INF/libs/reseditor;overwrite:=true;path:=/libs/reseditor</Sling-Initial-Content>
+						<Import-Package>*,javax.servlet;version="[2.5.0,
+							3.1.0)",javax.servlet.http;version="[2.5.0,
+							3.1.0)",javax.servlet.jsp.jstl.core,javax.servlet.jsp.jstl.fmt,javax.servlet.jsp.jstl.sql,javax.servlet.jsp.jstl.tlv,
+							org.apache.xalan.serialize,org.apache.xalan.templates,org.apache.xml.utils,org.apache.xpath,org.apache.xpath.objects,
+							org.apache.taglibs.standard,org.apache.taglibs.standard.extra.spath,org.apache.taglibs.standard.functions,org.apache.taglibs.standard.lang.jstl,org.apache.taglibs.standard.lang.jstl.parser,org.apache.taglibs.standard.lang.jstl.test,org.apache.taglibs.standard.lang.jstl.test.beans,org.apache.taglibs.standard.lang.support,org.apache.taglibs.standard.resources,org.apache.taglibs.standard.tag.common.core,org.apache.taglibs.standard.tag.common.fmt,org.apache.taglibs.standard.tag.common.sql,org.apache.taglibs.standard.tag.common.xml,org.apache.taglibs.standard.tag.el.core,org.apache.taglibs.standard.tag.el.fmt,org.apache.taglibs.standard.tag.el.sql,org.apache.taglibs.standard.tag.el.xml,org.apache.taglibs.standard.tag.rt.core,org.apache.taglibs.standard.tag.rt.fmt,org.apache.taglibs.standard.tag.rt.sql,org.apache.taglibs.standard.tag.rt.xml,org.apache.taglibs.standard.tei,org.apache.taglibs.standard.tlv,
+						</Import-Package>
+						<Require-Bundle>de.sandroboehme.jsnodetypes</Require-Bundle>
+						<Private-Package>
+							org.apache.sling.reseditor.*
+						</Private-Package>
+					</instructions>
+					<remoteOBR>www.jcrbrowser.org</remoteOBR>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>1.6</source>
+					<target>1.6</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.sling</groupId>
+				<artifactId>maven-sling-plugin</artifactId>
+				<version>2.1.0</version>
+				<executions>
+					<execution>
+						<id>install-bundle</id>
+						<goals>
+							<goal>validate</goal>
+							<goal>install</goal>
+						</goals>
+						<configuration>
+							<mountByFS>true</mountByFS>
+							<slingUrl>http://localhost:8080/system/console</slingUrl>
+							<user>admin</user>
+							<password>admin</password>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-release-plugin</artifactId>
+				<version>2.2.2</version>
+			</plugin>
+
+		</plugins>
+		<extensions>
+			<extension>
+				<groupId>org.apache.maven.wagon</groupId>
+				<artifactId>wagon-webdav-jackrabbit</artifactId>
+				<version>2.2</version>
+			</extension>
+		</extensions>
+	</build>
+	<dependencies>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.compendium</artifactId>
+			<version>4.2.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.core</artifactId>
+			<version>4.2.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>javax.jcr</groupId>
+			<artifactId>jcr</artifactId>
+			<version>2.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.sling</groupId>
+			<artifactId>org.apache.sling.api</artifactId>
+			<version>2.2.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>1.5.10</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.scr.annotations</artifactId>
+			<version>1.6.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.11</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+	<distributionManagement>
+<!-- 		<repository> -->
+<!-- 			<id>localSling</id> -->
+<!-- 			<url>dav:http://localhost:8080/obr</url> -->
+<!-- 		</repository> -->
+		<repository>
+			<id>www.jcrbrowser.org</id>
+			<url>dav:http://www.jcrbrowser.org/sling/obr</url>
+		</repository>
+	</distributionManagement>
+</project>

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/DownloadBinaryProperty.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/DownloadBinaryProperty.java?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/DownloadBinaryProperty.java (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/DownloadBinaryProperty.java Fri Oct 17 12:17:38 2014
@@ -0,0 +1,124 @@
+/*
+ * 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.reseditor;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.ValueFormatException;
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceNotFoundException;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Streams the content of the property specified by the request parameter
+ * 'property' to the response of the request.
+ */
+@Component
+@Service(Servlet.class)
+@Properties({
+		@Property(name = "service.description", value = "Download Servlet for binary properties"),
+		@Property(name = "service.vendor", value = "The Apache Software Foundation"),
+		@Property(name = "sling.servlet.selectors", value = "property"),
+		@Property(name = "sling.servlet.extensions", value = "download"),
+		@Property(name = "sling.servlet.resourceTypes", value = "sling/servlet/default")
+
+})
+public class DownloadBinaryProperty extends SlingSafeMethodsServlet {
+
+	private static final long serialVersionUID = -1L;
+
+	/** default log */
+	private final Logger log = LoggerFactory
+			.getLogger(DownloadBinaryProperty.class);
+
+	@Override
+	protected void doGet(SlingHttpServletRequest request,
+			SlingHttpServletResponse response) throws ServletException,
+			IOException {
+		String propertyName = request.getParameter("property");
+		if ("".equals(propertyName) || propertyName == null)
+			throw new ResourceNotFoundException("No property specified.");
+
+		ServletOutputStream out = response.getOutputStream();
+		Resource resource = request.getResource();
+		Node currentNode = resource.adaptTo(Node.class);
+		javax.jcr.Property property = null;
+		try {
+			property = currentNode.getProperty(propertyName);
+		} catch (PathNotFoundException e) {
+			response.sendError(HttpServletResponse.SC_NOT_FOUND, "Not found.");
+			throw new ResourceNotFoundException("Not found.");
+		} catch (RepositoryException e) {
+			response.sendError(HttpServletResponse.SC_NOT_FOUND, "Not found.");
+			throw new ResourceNotFoundException("Not found.");
+		}
+		InputStream stream = null;
+		try {
+			if (property == null || property.getType() != PropertyType.BINARY) {
+				response.sendError(HttpServletResponse.SC_NOT_FOUND, "Not found.");
+				throw new ResourceNotFoundException("Not found.");
+			}
+			long length = property.getLength();
+			if (length > 0) {
+				if (length < Integer.MAX_VALUE) {
+					response.setContentLength((int) length);
+				} else {
+					response.setHeader("Content-Length", String.valueOf(length));
+				}
+			}
+			stream = property.getStream();
+			byte[] buf = new byte[2048];
+			int rd;
+			while ((rd = stream.read(buf)) >= 0) {
+				out.write(buf, 0, rd);
+			}
+		} catch (ValueFormatException e) {
+			response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
+					"Error downloading the property content.");
+			log.debug("error reading the property " + property + " of path "
+					+ resource.getPath(), e);
+		} catch (RepositoryException e) {
+			response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
+					"Error downloading the property content.");
+			log.debug("error reading the property " + property + " of path "
+					+ resource.getPath(), e);
+		} finally {
+			stream.close();
+		}
+
+	}
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/ResEditorResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/ResEditorResourceProvider.java?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/ResEditorResourceProvider.java (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/ResEditorResourceProvider.java Fri Oct 17 12:17:38 2014
@@ -0,0 +1,71 @@
+/*
+ * 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.reseditor;
+
+import java.util.Iterator;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceProvider;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.SyntheticResource;
+
+//@Component
+//@Service
+//@Properties({
+//    @Property(name=ResourceProvider.ROOTS, value=ResEditorResourceProvider.ROOT)
+//})
+public class ResEditorResourceProvider implements ResourceProvider{
+    public static final String ROOT = "reseditor";
+    public static final String ABS_ROOT = "/" + ROOT;
+
+    
+    /** ResourceProvider interface */
+    public Resource getResource(ResourceResolver resolver, HttpServletRequest req, String path) {
+        // Synthetic resource for the root, so that /reseditor works
+        if((ABS_ROOT).equals(path)) {
+            return new SyntheticResource(resolver, path, "reseditor");
+        }
+        Resource originalResource = resolver.resolve(req, path.substring(ROOT.length()));
+        return originalResource;
+    }
+
+    /** ResourceProvider interface */
+    public Resource getResource(ResourceResolver resolver, String path) {
+        // Synthetic resource for the root, so that /reseditor works
+        if((ABS_ROOT).equals(path)) {
+            return new SyntheticResource(resolver, path, "reseditor");
+        }
+        Resource originalResource = resolver.resolve(path.substring(ROOT.length()+1));
+        return originalResource;
+    }
+
+    /** ResourceProvider interface */
+    public Iterator<Resource> listChildren(Resource parent) {
+    	ResourceResolver resourceResolver = parent.getResourceResolver();
+    	Resource resource = resourceResolver.resolve("/");
+    	return resource.listChildren();
+    }
+    
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/SelectorBasedResourceDecorator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/SelectorBasedResourceDecorator.java?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/SelectorBasedResourceDecorator.java (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/java/org/apache/sling/reseditor/SelectorBasedResourceDecorator.java Fri Oct 17 12:17:38 2014
@@ -0,0 +1,88 @@
+/*
+ * 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.reseditor;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceDecorator;
+import org.apache.sling.api.resource.ResourceMetadata;
+import org.apache.sling.api.resource.ResourceWrapper;
+
+/**
+ * Overrules the resource resolver to let the Sling Resource Editor render servlets that
+ * have been registered by path.
+ * 
+ * E.g. the login servlet is registered by path using the URL
+ * /system/sling/login. When calling /system/sling/login.reseditor.html the
+ * servlet would usually be called to render the request. To render this
+ * resource with the Sling Resource Editor instead, this ResourceDecorator removes the 
+ * servlet resource type for requests that use the 'reseditor' selector in 
+ * the path.
+ * 
+ */
+public class SelectorBasedResourceDecorator implements ResourceDecorator {
+
+	private static final String RESEDITOR_RESOURCE_TYPE = "reseditor";
+	private static final String RESEDITOR_SELECTOR = "reseditor";
+
+	/**
+	 * @see org.apache.sling.api.resource.ResourceDecorator#decorate(org.apache.sling.api.resource.Resource,
+	 *      javax.servlet.http.HttpServletRequest)
+	 */
+	public Resource decorate(Resource resource, HttpServletRequest request) {
+		String pathInfo = request.getPathInfo();
+		return getResourceEditorResourceWrapper(resource,
+				pathInfo);
+	}
+
+	/**
+	 * @see org.apache.sling.api.resource.ResourceDecorator#decorate(org.apache.sling.api.resource.Resource)
+	 */
+	public Resource decorate(Resource resource) {
+		Resource result = null;
+		if (resource != null) {
+			ResourceMetadata resourceMetadata = resource.getResourceMetadata();
+			if (resourceMetadata != null) {
+				String resolutionPathInfo = resourceMetadata.getResolutionPathInfo();
+				result = getResourceEditorResourceWrapper(resource,resolutionPathInfo);
+			}
+		}
+		return result;
+	}
+
+	private Resource getResourceEditorResourceWrapper(Resource resource, String resolutionPathInfo) {
+		Resource result = null;
+		if (resolutionPathInfo != null && resolutionPathInfo.endsWith("." + RESEDITOR_SELECTOR + ".html")) {
+			result = new ResourceWrapper(resource) {
+				@Override
+				public String getResourceType() {
+					/*
+					 * It overwrites the resource types to avoid that the servlet 
+					 * resource types have a higher priority then the
+					 * Resource Editor's html.jsp.
+					 */
+					return RESEDITOR_RESOURCE_TYPE;
+				}
+
+			};
+		}
+		return result;
+	}
+}
\ No newline at end of file

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/alerts.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/alerts.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/alerts.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/alerts.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,67 @@
+//
+// Alerts
+// --------------------------------------------------
+
+
+// Base styles
+// -------------------------
+
+.alert {
+  padding: @alert-padding;
+  margin-bottom: @line-height-computed;
+  border: 1px solid transparent;
+  border-radius: @alert-border-radius;
+
+  // Headings for larger alerts
+  h4 {
+    margin-top: 0;
+    // Specified for the h4 to prevent conflicts of changing @headings-color
+    color: inherit;
+  }
+  // Provide class for links that match alerts
+  .alert-link {
+    font-weight: @alert-link-font-weight;
+  }
+
+  // Improve alignment and spacing of inner content
+  > p,
+  > ul {
+    margin-bottom: 0;
+  }
+  > p + p {
+    margin-top: 5px;
+  }
+}
+
+// Dismissable alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+.alert-dismissable {
+ padding-right: (@alert-padding + 20);
+
+  // Adjust close link position
+  .close {
+    position: relative;
+    top: -2px;
+    right: -21px;
+    color: inherit;
+  }
+}
+
+// Alternate styles
+//
+// Generate contextual modifier classes for colorizing the alert.
+
+.alert-success {
+  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);
+}
+.alert-info {
+  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);
+}
+.alert-warning {
+  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);
+}
+.alert-danger {
+  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/badges.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/badges.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/badges.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/badges.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,55 @@
+//
+// Badges
+// --------------------------------------------------
+
+
+// Base classes
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: @font-size-small;
+  font-weight: @badge-font-weight;
+  color: @badge-color;
+  line-height: @badge-line-height;
+  vertical-align: baseline;
+  white-space: nowrap;
+  text-align: center;
+  background-color: @badge-bg;
+  border-radius: @badge-border-radius;
+
+  // Empty badges collapse automatically (not available in IE8)
+  &:empty {
+    display: none;
+  }
+
+  // Quick fix for badges in buttons
+  .btn & {
+    position: relative;
+    top: -1px;
+  }
+  .btn-xs & {
+    top: 0;
+    padding: 1px 5px;
+  }
+}
+
+// Hover state, but only for links
+a.badge {
+  &:hover,
+  &:focus {
+    color: @badge-link-hover-color;
+    text-decoration: none;
+    cursor: pointer;
+  }
+}
+
+// Account for counters in navs
+a.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: @badge-active-color;
+  background-color: @badge-active-bg;
+}
+.nav-pills > li > a > .badge {
+  margin-left: 3px;
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/bootstrap.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/bootstrap.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/bootstrap.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/bootstrap.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,51 @@
+// Core variables and mixins
+@import "variables.less";
+@import "mixins.less";
+
+// Reset
+@import "normalize.less";
+@import "print.less";
+
+// Core CSS
+@import "scaffolding.less";
+@import "type.less";
+@import "code.less";
+@import "grid.less";
+@import "tables.less";
+@import "forms.less";
+@import "buttons.less";
+
+// Components
+@import "component-animations.less";
+@import "glyphicons.less";
+@import "dropdowns.less";
+@import "button-groups.less";
+@import "input-groups.less";
+@import "navs.less";
+@import "navbar.less";
+@import "breadcrumbs.less";
+@import "pagination.less";
+@import "pager.less";
+@import "labels.less";
+@import "badges.less";
+@import "jumbotron.less";
+@import "thumbnails.less";
+@import "alerts.less";
+@import "progress-bars.less";
+@import "media.less";
+@import "list-group.less";
+@import "panels.less";
+@import "wells.less";
+@import "close.less";
+
+// Components w/ JavaScript
+@import "modals.less";
+@import "tooltip.less";
+@import "popovers.less";
+@import "carousel.less";
+
+// Utility classes
+@import "utilities.less";
+@import "responsive-utilities.less";
+
+@import "reseditor/reseditor.less";

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/breadcrumbs.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/breadcrumbs.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/breadcrumbs.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/breadcrumbs.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,26 @@
+//
+// Breadcrumbs
+// --------------------------------------------------
+
+
+.breadcrumb {
+  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;
+  margin-bottom: @line-height-computed;
+  list-style: none;
+  background-color: @breadcrumb-bg;
+  border-radius: @border-radius-base;
+
+  > li {
+    display: inline-block;
+
+    + li:before {
+      content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
+      padding: 0 5px;
+      color: @breadcrumb-color;
+    }
+  }
+
+  > .active {
+    color: @breadcrumb-active-color;
+  }
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/button-groups.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/button-groups.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/button-groups.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/button-groups.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,226 @@
+//
+// Button groups
+// --------------------------------------------------
+
+// Make the div behave like a button
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle; // match .btn alignment given font-size hack above
+  > .btn {
+    position: relative;
+    float: left;
+    // Bring the "active" button to the front
+    &:hover,
+    &:focus,
+    &:active,
+    &.active {
+      z-index: 2;
+    }
+    &:focus {
+      // Remove focus outline when dropdown JS adds it after closing the menu
+      outline: none;
+    }
+  }
+}
+
+// Prevent double borders when buttons are next to each other
+.btn-group {
+  .btn + .btn,
+  .btn + .btn-group,
+  .btn-group + .btn,
+  .btn-group + .btn-group {
+    margin-left: -1px;
+  }
+}
+
+// Optional: Group multiple button groups together for a toolbar
+.btn-toolbar {
+  margin-left: -5px; // Offset the first child's margin
+  &:extend(.clearfix all);
+
+  .btn-group,
+  .input-group {
+    float: left;
+  }
+  > .btn,
+  > .btn-group,
+  > .input-group {
+    margin-left: 5px;
+  }
+}
+
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+
+// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
+.btn-group > .btn:first-child {
+  margin-left: 0;
+  &:not(:last-child):not(.dropdown-toggle) {
+    .border-right-radius(0);
+  }
+}
+// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  .border-left-radius(0);
+}
+
+// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child {
+  > .btn:last-child,
+  > .dropdown-toggle {
+    .border-right-radius(0);
+  }
+}
+.btn-group > .btn-group:last-child > .btn:first-child {
+  .border-left-radius(0);
+}
+
+// On active and open, don't show outline
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+
+
+// Sizing
+//
+// Remix the default button sizing classes into new ones for easier manipulation.
+
+.btn-group-xs > .btn { &:extend(.btn-xs); }
+.btn-group-sm > .btn { &:extend(.btn-sm); }
+.btn-group-lg > .btn { &:extend(.btn-lg); }
+
+
+// Split button dropdowns
+// ----------------------
+
+// Give the line between buttons some depth
+.btn-group > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+}
+
+// The clickable button for toggling the menu
+// Remove the gradient and set the same inset shadow as the :active state
+.btn-group.open .dropdown-toggle {
+  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+
+  // Show no shadow for `.btn-link` since it has no other button styles.
+  &.btn-link {
+    .box-shadow(none);
+  }
+}
+
+
+// Reposition the caret
+.btn .caret {
+  margin-left: 0;
+}
+// Carets in other button sizes
+.btn-lg .caret {
+  border-width: @caret-width-large @caret-width-large 0;
+  border-bottom-width: 0;
+}
+// Upside down carets for .dropup
+.dropup .btn-lg .caret {
+  border-width: 0 @caret-width-large @caret-width-large;
+}
+
+
+// Vertical button groups
+// ----------------------
+
+.btn-group-vertical {
+  > .btn,
+  > .btn-group,
+  > .btn-group > .btn {
+    display: block;
+    float: none;
+    width: 100%;
+    max-width: 100%;
+  }
+
+  // Clear floats so dropdown menus can be properly placed
+  > .btn-group {
+    &:extend(.clearfix all);
+    > .btn {
+      float: none;
+    }
+  }
+
+  > .btn + .btn,
+  > .btn + .btn-group,
+  > .btn-group + .btn,
+  > .btn-group + .btn-group {
+    margin-top: -1px;
+    margin-left: 0;
+  }
+}
+
+.btn-group-vertical > .btn {
+  &:not(:first-child):not(:last-child) {
+    border-radius: 0;
+  }
+  &:first-child:not(:last-child) {
+    border-top-right-radius: @border-radius-base;
+    .border-bottom-radius(0);
+  }
+  &:last-child:not(:first-child) {
+    border-bottom-left-radius: @border-radius-base;
+    .border-top-radius(0);
+  }
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) {
+  > .btn:last-child,
+  > .dropdown-toggle {
+    .border-bottom-radius(0);
+  }
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  .border-top-radius(0);
+}
+
+
+
+// Justified button groups
+// ----------------------
+
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+  > .btn,
+  > .btn-group {
+    float: none;
+    display: table-cell;
+    width: 1%;
+  }
+  > .btn-group .btn {
+    width: 100%;
+  }
+}
+
+
+// Checkbox and radio options
+[data-toggle="buttons"] > .btn > input[type="radio"],
+[data-toggle="buttons"] > .btn > input[type="checkbox"] {
+  display: none;
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/buttons.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/buttons.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/buttons.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/buttons.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,159 @@
+//
+// Buttons
+// --------------------------------------------------
+
+
+// Base styles
+// --------------------------------------------------
+
+.btn {
+  display: inline-block;
+  margin-bottom: 0; // For input.btn
+  font-weight: @btn-font-weight;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+  border: 1px solid transparent;
+  white-space: nowrap;
+  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);
+  .user-select(none);
+
+  &,
+  &:active,
+  &.active {
+    &:focus {
+      .tab-focus();
+    }
+  }
+
+  &:hover,
+  &:focus {
+    color: @btn-default-color;
+    text-decoration: none;
+  }
+
+  &:active,
+  &.active {
+    outline: 0;
+    background-image: none;
+    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+  }
+
+  &.disabled,
+  &[disabled],
+  fieldset[disabled] & {
+    cursor: not-allowed;
+    pointer-events: none; // Future-proof disabling of clicks
+    .opacity(.65);
+    .box-shadow(none);
+  }
+}
+
+
+// Alternate buttons
+// --------------------------------------------------
+
+.btn-default {
+  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);
+}
+.btn-primary {
+  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);
+}
+// Success appears as green
+.btn-success {
+  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);
+}
+// Info appears as blue-green
+.btn-info {
+  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);
+}
+// Warning appears as orange
+.btn-warning {
+  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);
+}
+// Danger and error appear as red
+.btn-danger {
+  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);
+}
+
+
+// Link buttons
+// -------------------------
+
+// Make a button look and behave like a link
+.btn-link {
+  color: @link-color;
+  font-weight: normal;
+  cursor: pointer;
+  border-radius: 0;
+
+  &,
+  &:active,
+  &[disabled],
+  fieldset[disabled] & {
+    background-color: transparent;
+    .box-shadow(none);
+  }
+  &,
+  &:hover,
+  &:focus,
+  &:active {
+    border-color: transparent;
+  }
+  &:hover,
+  &:focus {
+    color: @link-hover-color;
+    text-decoration: underline;
+    background-color: transparent;
+  }
+  &[disabled],
+  fieldset[disabled] & {
+    &:hover,
+    &:focus {
+      color: @btn-link-disabled-color;
+      text-decoration: none;
+    }
+  }
+}
+
+
+// Button Sizes
+// --------------------------------------------------
+
+.btn-lg {
+  // line-height: ensure even-numbered height of button next to large input
+  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
+}
+.btn-sm {
+  // line-height: ensure proper height of button next to small input
+  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
+}
+.btn-xs {
+  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);
+}
+
+
+// Block button
+// --------------------------------------------------
+
+.btn-block {
+  display: block;
+  width: 100%;
+  padding-left: 0;
+  padding-right: 0;
+}
+
+// Vertically space out multiple block buttons
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+
+// Specificity overrides
+input[type="submit"],
+input[type="reset"],
+input[type="button"] {
+  &.btn-block {
+    width: 100%;
+  }
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/carousel.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/carousel.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/carousel.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/carousel.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,232 @@
+//
+// Carousel
+// --------------------------------------------------
+
+
+// Wrapper for the slide container and indicators
+.carousel {
+  position: relative;
+}
+
+.carousel-inner {
+  position: relative;
+  overflow: hidden;
+  width: 100%;
+
+  > .item {
+    display: none;
+    position: relative;
+    .transition(.6s ease-in-out left);
+
+    // Account for jankitude on images
+    > img,
+    > a > img {
+      &:extend(.img-responsive);
+      line-height: 1;
+    }
+  }
+
+  > .active,
+  > .next,
+  > .prev { display: block; }
+
+  > .active {
+    left: 0;
+  }
+
+  > .next,
+  > .prev {
+    position: absolute;
+    top: 0;
+    width: 100%;
+  }
+
+  > .next {
+    left: 100%;
+  }
+  > .prev {
+    left: -100%;
+  }
+  > .next.left,
+  > .prev.right {
+    left: 0;
+  }
+
+  > .active.left {
+    left: -100%;
+  }
+  > .active.right {
+    left: 100%;
+  }
+
+}
+
+// Left/right controls for nav
+// ---------------------------
+
+.carousel-control {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  width: @carousel-control-width;
+  .opacity(@carousel-control-opacity);
+  font-size: @carousel-control-font-size;
+  color: @carousel-control-color;
+  text-align: center;
+  text-shadow: @carousel-text-shadow;
+  // We can't have this transition here because WebKit cancels the carousel
+  // animation if you trip this while in the middle of another animation.
+
+  // Set gradients for backgrounds
+  &.left {
+    #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));
+  }
+  &.right {
+    left: auto;
+    right: 0;
+    #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));
+  }
+
+  // Hover/focus state
+  &:hover,
+  &:focus {
+    outline: none;
+    color: @carousel-control-color;
+    text-decoration: none;
+    .opacity(.9);
+  }
+
+  // Toggles
+  .icon-prev,
+  .icon-next,
+  .glyphicon-chevron-left,
+  .glyphicon-chevron-right {
+    position: absolute;
+    top: 50%;
+    z-index: 5;
+    display: inline-block;
+  }
+  .icon-prev,
+  .glyphicon-chevron-left {
+    left: 50%;
+  }
+  .icon-next,
+  .glyphicon-chevron-right {
+    right: 50%;
+  }
+  .icon-prev,
+  .icon-next {
+    width:  20px;
+    height: 20px;
+    margin-top: -10px;
+    margin-left: -10px;
+    font-family: serif;
+  }
+
+  .icon-prev {
+    &:before {
+      content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
+    }
+  }
+  .icon-next {
+    &:before {
+      content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
+    }
+  }
+}
+
+// Optional indicator pips
+//
+// Add an unordered list with the following class and add a list item for each
+// slide your carousel holds.
+
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  margin-left: -30%;
+  padding-left: 0;
+  list-style: none;
+  text-align: center;
+
+  li {
+    display: inline-block;
+    width:  10px;
+    height: 10px;
+    margin: 1px;
+    text-indent: -999px;
+    border: 1px solid @carousel-indicator-border-color;
+    border-radius: 10px;
+    cursor: pointer;
+
+    // IE8-9 hack for event handling
+    //
+    // Internet Explorer 8-9 does not support clicks on elements without a set
+    // `background-color`. We cannot use `filter` since that's not viewed as a
+    // background color by the browser. Thus, a hack is needed.
+    //
+    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
+    // set alpha transparency for the best results possible.
+    background-color: #000 \9; // IE8
+    background-color: rgba(0,0,0,0); // IE9
+  }
+  .active {
+    margin: 0;
+    width:  12px;
+    height: 12px;
+    background-color: @carousel-indicator-active-bg;
+  }
+}
+
+// Optional captions
+// -----------------------------
+// Hidden by default for smaller viewports
+.carousel-caption {
+  position: absolute;
+  left: 15%;
+  right: 15%;
+  bottom: 20px;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: @carousel-caption-color;
+  text-align: center;
+  text-shadow: @carousel-text-shadow;
+  & .btn {
+    text-shadow: none; // No shadow for button elements in carousel-caption
+  }
+}
+
+
+// Scale up controls for tablets and up
+@media screen and (min-width: @screen-sm-min) {
+
+  // Scale up the controls a smidge
+  .carousel-control {
+    .glyphicon-chevron-left,
+    .glyphicon-chevron-right,
+    .icon-prev,
+    .icon-next {
+      width: 30px;
+      height: 30px;
+      margin-top: -15px;
+      margin-left: -15px;
+      font-size: 30px;
+    }
+  }
+
+  // Show and left align the captions
+  .carousel-caption {
+    left: 20%;
+    right: 20%;
+    padding-bottom: 30px;
+  }
+
+  // Move up the indicators
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/close.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/close.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/close.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/close.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,33 @@
+//
+// Close icons
+// --------------------------------------------------
+
+
+.close {
+  float: right;
+  font-size: (@font-size-base * 1.5);
+  font-weight: @close-font-weight;
+  line-height: 1;
+  color: @close-color;
+  text-shadow: @close-text-shadow;
+  .opacity(.2);
+
+  &:hover,
+  &:focus {
+    color: @close-color;
+    text-decoration: none;
+    cursor: pointer;
+    .opacity(.5);
+  }
+
+  // Additional properties for button version
+  // iOS requires the button element instead of an anchor tag.
+  // If you want the anchor version, it requires `href="#"`.
+  button& {
+    padding: 0;
+    cursor: pointer;
+    background: transparent;
+    border: 0;
+    -webkit-appearance: none;
+  }
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/code.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/code.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/code.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/code.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,63 @@
+//
+// Code (inline and block)
+// --------------------------------------------------
+
+
+// Inline and block code styles
+code,
+kbd,
+pre,
+samp {
+  font-family: @font-family-monospace;
+}
+
+// Inline code
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: @code-color;
+  background-color: @code-bg;
+  white-space: nowrap;
+  border-radius: @border-radius-base;
+}
+
+// User input typically entered via keyboard
+kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: @kbd-color;
+  background-color: @kbd-bg;
+  border-radius: @border-radius-small;
+  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
+}
+
+// Blocks of code
+pre {
+  display: block;
+  padding: ((@line-height-computed - 1) / 2);
+  margin: 0 0 (@line-height-computed / 2);
+  font-size: (@font-size-base - 1); // 14px to 13px
+  line-height: @line-height-base;
+  word-break: break-all;
+  word-wrap: break-word;
+  color: @pre-color;
+  background-color: @pre-bg;
+  border: 1px solid @pre-border-color;
+  border-radius: @border-radius-base;
+
+  // Account for some code outputs that place code tags in pre tags
+  code {
+    padding: 0;
+    font-size: inherit;
+    color: inherit;
+    white-space: pre-wrap;
+    background-color: transparent;
+    border-radius: 0;
+  }
+}
+
+// Enable scrollable blocks of code
+.pre-scrollable {
+  max-height: @pre-scrollable-max-height;
+  overflow-y: scroll;
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/component-animations.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/component-animations.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/component-animations.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/component-animations.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,29 @@
+//
+// Component animations
+// --------------------------------------------------
+
+// Heads up!
+//
+// We don't use the `.opacity()` mixin here since it causes a bug with text
+// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.
+
+.fade {
+  opacity: 0;
+  .transition(opacity .15s linear);
+  &.in {
+    opacity: 1;
+  }
+}
+
+.collapse {
+  display: none;
+  &.in {
+    display: block;
+  }
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  .transition(height .35s ease);
+}

Added: sling/trunk/contrib/explorers/resourceeditor/src/main/less/dropdowns.less
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/explorers/resourceeditor/src/main/less/dropdowns.less?rev=1632548&view=auto
==============================================================================
--- sling/trunk/contrib/explorers/resourceeditor/src/main/less/dropdowns.less (added)
+++ sling/trunk/contrib/explorers/resourceeditor/src/main/less/dropdowns.less Fri Oct 17 12:17:38 2014
@@ -0,0 +1,213 @@
+//
+// Dropdown menus
+// --------------------------------------------------
+
+
+// Dropdown arrow/caret
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top:   @caret-width-base solid;
+  border-right: @caret-width-base solid transparent;
+  border-left:  @caret-width-base solid transparent;
+}
+
+// The dropdown wrapper (div)
+.dropdown {
+  position: relative;
+}
+
+// Prevent the focus on the dropdown toggle when closing dropdowns
+.dropdown-toggle:focus {
+  outline: 0;
+}
+
+// The dropdown menu (ul)
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: @zindex-dropdown;
+  display: none; // none by default, but block on "open" of the menu
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0; // override default ul
+  list-style: none;
+  font-size: @font-size-base;
+  background-color: @dropdown-bg;
+  border: 1px solid @dropdown-fallback-border; // IE8 fallback
+  border: 1px solid @dropdown-border;
+  border-radius: @border-radius-base;
+  .box-shadow(0 6px 12px rgba(0,0,0,.175));
+  background-clip: padding-box;
+
+  // Aligns the dropdown menu to right
+  //
+  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
+  &.pull-right {
+    right: 0;
+    left: auto;
+  }
+
+  // Dividers (basically an hr) within the dropdown
+  .divider {
+    .nav-divider(@dropdown-divider-bg);
+  }
+
+  // Links within the dropdown menu
+  > li > a {
+    display: block;
+    padding: 3px 20px;
+    clear: both;
+    font-weight: normal;
+    line-height: @line-height-base;
+    color: @dropdown-link-color;
+    white-space: nowrap; // prevent links from randomly breaking onto new lines
+  }
+}
+
+// Hover/Focus state
+.dropdown-menu > li > a {
+  &:hover,
+  &:focus {
+    text-decoration: none;
+    color: @dropdown-link-hover-color;
+    background-color: @dropdown-link-hover-bg;
+  }
+}
+
+// Active state
+.dropdown-menu > .active > a {
+  &,
+  &:hover,
+  &:focus {
+    color: @dropdown-link-active-color;
+    text-decoration: none;
+    outline: 0;
+    background-color: @dropdown-link-active-bg;
+  }
+}
+
+// Disabled state
+//
+// Gray out text and ensure the hover/focus state remains gray
+
+.dropdown-menu > .disabled > a {
+  &,
+  &:hover,
+  &:focus {
+    color: @dropdown-link-disabled-color;
+  }
+}
+// Nuke hover/focus effects
+.dropdown-menu > .disabled > a {
+  &:hover,
+  &:focus {
+    text-decoration: none;
+    background-color: transparent;
+    background-image: none; // Remove CSS gradient
+    .reset-filter();
+    cursor: not-allowed;
+  }
+}
+
+// Open state for the dropdown
+.open {
+  // Show the menu
+  > .dropdown-menu {
+    display: block;
+  }
+
+  // Remove the outline when :focus is triggered
+  > a {
+    outline: 0;
+  }
+}
+
+// Menu positioning
+//
+// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
+// menu with the parent.
+.dropdown-menu-right {
+  left: auto; // Reset the default from `.dropdown-menu`
+  right: 0;
+}
+// With v3, we enabled auto-flipping if you have a dropdown within a right
+// aligned nav component. To enable the undoing of that, we provide an override
+// to restore the default dropdown menu alignment.
+//
+// This is only for left-aligning a dropdown menu within a `.navbar-right` or
+// `.pull-right` nav component.
+.dropdown-menu-left {
+  left: 0;
+  right: auto;
+}
+
+// Dropdown section headers
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: @font-size-small;
+  line-height: @line-height-base;
+  color: @dropdown-header-color;
+}
+
+// Backdrop to catch body clicks on mobile, etc.
+.dropdown-backdrop {
+  position: fixed;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  top: 0;
+  z-index: (@zindex-dropdown - 10);
+}
+
+// Right aligned dropdowns
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+//
+// Just add .dropup after the standard .dropdown class and you're set, bro.
+// TODO: abstract this so that the navbar fixed styles are not placed here?
+
+.dropup,
+.navbar-fixed-bottom .dropdown {
+  // Reverse the caret
+  .caret {
+    border-top: 0;
+    border-bottom: @caret-width-base solid;
+    content: "";
+  }
+  // Different positioning for bottom up menu
+  .dropdown-menu {
+    top: auto;
+    bottom: 100%;
+    margin-bottom: 1px;
+  }
+}
+
+
+// Component alignment
+//
+// Reiterate per navbar.less and the modified component alignment there.
+
+@media (min-width: @grid-float-breakpoint) {
+  .navbar-right {
+    .dropdown-menu {
+      .dropdown-menu-right();
+    }
+    // Necessary for overrides of the default right aligned menu.
+    // Will remove come v4 in all likelihood.
+    .dropdown-menu-left {
+      .dropdown-menu-left();
+    }
+  }
+}
+



Mime
View raw message