#
#  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.
#


#
# This file contains localization strings for configuration labels and
# descriptions as used in the metatype.xml descriptor generated by the
# the SCR plugin

#
# SimpleWebDavServlet
# (This servlet is directly registered with the HttpService besides the
# SlingMainServlet. Requests to this servlet do not pass by Sling)
iomanager.name = Apache Sling IOManager Service
iomanager.description = The Sling IOManager service tracks all \
 IOHandler services running on the framework and allows to access them \
 as a sorted list (based on the service.ranking property).

propertymanager.name = Apache Sling PropertyManager Service
propertymanager.description = The Sling PropertyManager service tracks all \
 PropertyManager services running on the framework and allows to access them \
 as a sorted list (based on the service.ranking property).

dirlistingexporthandler.name = Apache Sling Directory Listing Exporter Service
dirlistingexporthandler.description = The Sling Directory Listing Exporter Service \
 wraps a org.apache.jackrabbit.server.io.DirListingExportHandler instance in order to \
 run it as a service.

defaulthandler.name = Apache Sling Default Handler Service
defaulthandler.description = The Apache Sling Default Handler Service \
 wraps a org.apache.jackrabbit.server.io.DefaultHandler instance in order to \
 run it as a service.

dav.name = Apache Sling Simple WebDAV Servlet
dav.description = The Simple WebDAV Servlet allows direct access to the \
 complete Repository. It is directly accessible in its own URL space and \
 requests to this servlet do not pass by the Sling Main Servlet and request \
 processing.
 
dav.root.name = Root Path
dav.root.description = The root path at which the Simple WebDAV Servlet is \
 accessible. The default value is "/dav". Access to the repository is provided \
 in two ways. You may connect your WebDAV client directly to the root of the \
 Sling web application to access the workspace of Sling directly. The other way \
 is required if you want to connect your WebDAV client to any other workspace \
 besides the Sling workspace. In this case you connect your WebDAV client to \
 another a path comprised of this root path plus the name of the workspace. For \
 example to connect to the some_other workspace, you might connect to \
 http://slinghost/dav/some_other. 
  
dav.realm.name = Authentication Realm
dav.realm.description = The name of the HTTP Basic Authentication Realm \
 presented to the client to ask for authentication credentials to access the \
 repository.

dav.create-absolute-uri.name = Use absolute URIs
dav.create-absolute-uri.description = When set to true, create absolute URIs \
 in WebDAV responses. Otherwise, use absolute paths. (See RFC 4918, Section 8.3)

collection.types.name = Non Collection Node Types
collection.types.description = The JCR Node Types considered being \
 non-collection resources by WebDAV. Any node replying true to Node.isNodeType() \
 for one of the listed types is considered a non-collection resource. Otherwise \
 the respective node is considered a collection resource.
  
filter.prefixes.name = Filter Prefixes
filter.prefixes.description = A list of namespace prefixes indicating JCR items \
 filtered from being reported as collection members or properties. The default \
 list includes jcr and rep (Jackrabbit internal namespace prefix) items. \
 Do not modify this setting unless you know exactly what you are doing.
 
filter.uris.name = Filter URIs
filter.uris.description = A list of namespace URIs indicating JCR items \
 filtered from being reported as collection members or properties. The default \
 list is empty. Do not modify this setting unless you know exactly what you \
 are doing.
 
filter.types.name = Filter Node Types
filter.types.description = Nodetype names to be used to filter child nodes. \
 A child node can be filtered if the declaring nodetype of its definition is \
 one of the nodetype names specified in the nodetypes Element. E.g. defining \
 rep:root as filtered nodetype whould result in jcr:system being hidden but \
 no other child node of the root node, since those are defined by the nodetype \
 nt:unstructered. The default is empty. Do not modify this setting unless you \
 know exactly what you are doing.

type.collections.name = Collection Primary Type
type.collections.description = The JCR Primary Node Type to assign to nodes \
 created to reflect WebDAV collections. The default value is sling:Folder. \
 You may name any primary node type here, provided it allows the creation of \
 nodes of this type and the defined Non-Collection Primary Type below it.
 
type.noncollections.name = Non-Collection Primary Type
type.noncollections.description = The JCR Primary Node Type to assign to \
 nodes created to reflect WebDAV non-collection resources. The default value \
 is nt:file. You may name any primary node type here, provided the node type \
 is allowed to be created below nodes of the type defined for the Collection \
 Primary Type and that a child node with the name "jcr:content" may be created \
 below the non-collection resource whose type is defined by the Content Primary \
 Type.
  
type.content.name = Content Primary Type
type.content.description = The JCR Primary Node Type to assign to the \
 jcr:content child node of a WebDAV non-collection resource. The default value \
 is nt:resource. You may name any primary node type here, provided the node \
 type is allowed to be created as the jcr:content child node of the node type \
 defined by the Non-Collection Primary Type. In addition the node type must \
 allow at least the following properties: jcr:data (binary), jcr:lastModified \
 (date), and jcr:mimeType (string).
