Merged HEAD-QA to HEAD (4.2) (including moving test classes into separate folders)

51903 to 54309 


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@54310 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Samuel Langlois
2013-08-20 17:17:31 +00:00
parent a91f6e2535
commit 788d3c9c89
777 changed files with 77820 additions and 23746 deletions

View File

@@ -2,7 +2,7 @@
<classpath> <classpath>
<classpathentry kind="src" path="source/java"/> <classpathentry kind="src" path="source/java"/>
<classpathentry kind="src" path="source/generated"/> <classpathentry kind="src" path="source/generated"/>
<classpathentry kind="src" path="source/test/java"/> <classpathentry kind="src" path="source/test-java"/>
<classpathentry exported="true" kind="lib" path="source/test-resources"/> <classpathentry exported="true" kind="lib" path="source/test-resources"/>
<classpathentry exported="true" kind="lib" path="config"/> <classpathentry exported="true" kind="lib" path="config"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>

View File

@@ -0,0 +1,14 @@
# Messages returned by the Rest API framework
framework.exception.ApiDefault=Unknown error calling the Rest API
framework.exception.ConstraintViolated=A constraint was violated
framework.exception.InvalidArgument=An invalid argument was received {0}
framework.exception.InvalidQuery=An invalid WHERE query was received. {0}
framework.exception.InvalidSelect=An invalid SELECT query was received. {0}
framework.exception.NotFound={0} was not found
framework.exception.EntityNotFound=The entity with id: {0} was not found
framework.exception.RelationshipNotFound=The relationship resource was not found for the entity with id: {0} and a relationship id of {1}
framework.exception.PermissionDenied=Permission was denied
framework.exception.StaleEntity=Attempt to update a stale entity
framework.exception.UnsupportedResourceOperation=The operation is unsupported
framework.exception.DeletedResource=In this version of the API resource {0} has been deleted

View File

@@ -0,0 +1,12 @@
# Messages returned by the Rest API framework
framework.exception.ApiDefault=Unbekannter Fehler beim Abrufen der Rest API
framework.exception.ConstraintViolated=Eine Bedingung wurde verletzt
framework.exception.InvalidArgument=Ein ung\u00fcltiges Argument wurde erhalten
framework.exception.NotFound={0} nicht gefunden
framework.exception.EntityNotFound=Die Einheit mit der ID {0} wurde nicht gefunden
framework.exception.RelationshipNotFound=Die Beziehungsressource f\u00fcr die Einheit mit der ID {0} und einer Beziehungs-ID {1} wurde nicht gefunden
framework.exception.PermissionDenied=Berechtigung nicht erteilt
framework.exception.StaleEntity=Versuch, eine gegenstandslose Datei zu aktualiseren
framework.exception.UnsupportedResourceOperation=Der Vorgang wird nicht unterst\u00fctzt
framework.exception.DeletedResource=In dieser Version der API wurde die Ressource {0} gel\u00f6scht

View File

@@ -0,0 +1,12 @@
# Messages returned by the Rest API framework
framework.exception.ApiDefault=Error desconocido al llamar a la API de Rest
framework.exception.ConstraintViolated=Se ha violado una restricci\u00f3n
framework.exception.InvalidArgument=Se ha recibido un argumento no v\u00e1lido
framework.exception.NotFound=No se ha encontrado {0}
framework.exception.EntityNotFound=No se ha encontrado la entidad con id: {0}
framework.exception.RelationshipNotFound=No se ha encontrado el recurso de relaci\u00f3n para la entidad con id: {0} y un id de relaci\u00f3n de {1}
framework.exception.PermissionDenied=Se ha denegado el permiso
framework.exception.StaleEntity=Intento de actualizar una entidad obsoleta
framework.exception.UnsupportedResourceOperation=No se admite la operaci\u00f3n
framework.exception.DeletedResource=En esta versi\u00f3n de la API, se ha eliminado el recurso {0}

View File

@@ -0,0 +1,12 @@
# Messages returned by the Rest API framework
framework.exception.ApiDefault=Erreur inconnue lors de l'appel de l'API Rest
framework.exception.ConstraintViolated=Une contrainte n'a pas \u00e9t\u00e9 respect\u00e9e
framework.exception.InvalidArgument=Un argument non valide a \u00e9t\u00e9 re\u00e7u
framework.exception.NotFound={0} introuvable
framework.exception.EntityNotFound=L''entit\u00e9 associ\u00e9e \u00e0 l''id : {0} est introuvable
framework.exception.RelationshipNotFound=La ressource de relation est introuvable pour l''entit\u00e9 associ\u00e9e \u00e0 l''id : {0} et pour un id de relation de {1}
framework.exception.PermissionDenied=Droit d'acc\u00e8s refus\u00e9
framework.exception.StaleEntity=Tentative de mise \u00e0 jour d'une entit\u00e9 hors service
framework.exception.UnsupportedResourceOperation=L'op\u00e9ration n'est pas prise en charge
framework.exception.DeletedResource=Dans cette version de l''API, la ressource {0} a \u00e9t\u00e9 supprim\u00e9e

View File

@@ -0,0 +1,12 @@
# Messages returned by the Rest API framework
framework.exception.ApiDefault=Errore sconosciuto durante la chiamata Rest API
framework.exception.ConstraintViolated=Vincolo violato
framework.exception.InvalidArgument=Argomento non valido ricevuto
framework.exception.NotFound={0} non trovato
framework.exception.EntityNotFound=L''entit\u00e0 con ID {0} non \u00e8 stata trovata
framework.exception.RelationshipNotFound=La risorsa di relazione non \u00e8 stata trovata per l''entit\u00e0 con ID {0} e un ID di relazione {1}
framework.exception.PermissionDenied=Permesso negato
framework.exception.StaleEntity=Tentativo di aggiornare un'entit\u00e0 obsoleta
framework.exception.UnsupportedResourceOperation=Operazione non supportata
framework.exception.DeletedResource=In questa versione della risorsa API, {0} \u00e8 stato eliminato

View File

@@ -0,0 +1,12 @@
# Messages returned by the Rest API framework
framework.exception.ApiDefault=Rest API\u306e\u547c\u3073\u51fa\u3057\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
framework.exception.ConstraintViolated=\u5236\u7d04\u9055\u53cd\u304c\u767a\u751f\u3057\u307e\u3057\u305f
framework.exception.InvalidArgument=\u7121\u52b9\u306a\u5f15\u6570\u3092\u53d7\u3051\u53d6\u308a\u307e\u3057\u305f
framework.exception.NotFound={0}\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f
framework.exception.EntityNotFound=ID\u304c{0}\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f
framework.exception.RelationshipNotFound=ID\u304c{0}\u3001\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7ID\u304c{1}\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f
framework.exception.PermissionDenied=\u6a29\u9650\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f
framework.exception.StaleEntity=\u53e4\u3044\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u66f4\u65b0\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f
framework.exception.UnsupportedResourceOperation=\u3053\u306e\u64cd\u4f5c\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
framework.exception.DeletedResource=API\u30ea\u30bd\u30fc\u30b9"{0}"\u306e\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u524a\u9664\u3055\u308c\u3066\u3044\u307e\u3059

View File

@@ -0,0 +1,961 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="publicapi.webscripts.store" parent="webscripts.repoclasspathstore">
<property name="mustExist"><value>true</value></property>
<property name="classPath"><value>alfresco/templates/publicapi</value></property>
</bean>
<bean id="publicapi.webscripts.searchpath" class="org.springframework.extensions.webscripts.SearchPath">
<property name="searchPath">
<list>
<ref bean="publicapi.webscripts.store" />
</list>
</property>
</bean>
<bean id="publicapi.index" class="org.springframework.extensions.webscripts.JaxRSUriIndex"/>
<bean id="publicapi.index.prototype" class="org.springframework.extensions.webscripts.JaxRSUriIndex" scope="prototype"/>
<bean id="publicapi.registry" class="org.alfresco.rest.api.PublicApiDeclarativeRegistry">
<property name="container" ref="publicapi.container" />
<property name="uriIndex" ref="publicapi.index" />
<property name="searchPath" ref="publicapi.webscripts.searchpath" />
<property name="defaultWebScript"><value>webscript.default</value></property>
<property name="getNetworksWebScript" ref="getNetworksWebScript" />
<property name="getNetworkWebScript" ref="getNetworkWebScript" />
</bean>
<bean id="publicapi.registry.prototype" parent="publicapi.registry" scope="prototype">
<property name="uriIndex" ref="publicapi.index.prototype" />
</bean>
<bean id="publicapi.container" class="org.alfresco.rest.api.PublicApiRepositoryContainer" parent="webscripts.abstractcontainer" init-method="setup">
<property name="name"><value>Public Api</value></property>
<property name="registryFactory">
<bean class="org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean">
<property name="targetBeanName"><idref local="publicapi.registry.prototype"/></property>
</bean>
</property>
<!-- Use the time-limited transaction helper to keep request times to an acceptable duration -->
<property name="transactionService" ref="transactionService" />
<!-- The transaction helper used to generate error responses must be unlimited -->
<property name="fallbackTransactionHelper" ref="retryingTransactionHelper" />
<property name="authorityService" ref="AuthorityService" />
<property name="repository" ref="repositoryHelper" />
<property name="repositoryImageResolver" ref="webscripts.repo.imageresolver" />
<property name="templateProcessorRegistry" ref="webscripts.repo.registry.templateprocessor" />
<property name="scriptProcessorRegistry" ref="webscripts.repo.registry.scriptprocessor" />
<property name="descriptorService" ref="DescriptorService" />
<property name="tenantAdminService" ref="tenantAdminService" />
<property name="webScriptsRegistryCache" ref="publicapi.webScriptsRegistryCache"/>
<property name="encryptTempFiles" value="${webscripts.encryptTempFiles}"/>
<property name="tempDirectoryName" value="${webscripts.tempDirectoryName}"/>
<property name="memoryThreshold" value="${webscripts.memoryThreshold}"/>
<property name="maxContentSize" value="${webscripts.setMaxContentSize}"/>
</bean>
<!-- Public Api Authenticator -->
<bean id="webScriptAuthenticationListener" class="org.alfresco.repo.web.auth.NoopAuthenticationListener"/>
<bean id="publicapi.tenantAuthenticator" class="org.alfresco.rest.api.PublicApiTenantAuthentication">
<property name="tenantAdminService" ref="tenantAdminService"/>
</bean>
<bean id="publicapi.authenticator" class="org.alfresco.rest.api.PublicApiAuthenticatorFactory">
<property name="authenticationService" ref="AuthenticationService" />
<property name="authenticationListener" ref="webScriptAuthenticationListener"/>
<property name="transactionHelper" ref="web.retryingTransactionHelper" />
<property name="tenantAuthentication" ref="publicapi.tenantAuthenticator"/>
<property name="validAuthentictorKeys">
<bean class="org.springframework.util.StringUtils" factory-method="commaDelimitedListToSet">
<constructor-arg type="java.lang.String" value="${alfresco.authentication.validAuthenticatorKeys}"/>
</bean>
</property>
<property name="outboundHeaders">
<bean class="org.springframework.util.StringUtils" factory-method="commaDelimitedListToSet">
<constructor-arg type="java.lang.String" value="${alfresco.authentication.gateway.outboundHeaders}"/>
</bean>
</property>
</bean>
<bean id="apiBootstrapBean" class="org.alfresco.rest.framework.core.ApiBootstrap">
<property name="apiDictionary" ref="apiLookup" />
</bean>
<bean id="apiLookup" class="org.alfresco.rest.framework.core.ResourceLookupDictionary">
</bean>
<bean id="frameworkMessageResourceBundles" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
<property name="resourceBundles">
<list>
<value>alfresco.messages.rest-framework-messages</value>
</list>
</property>
</bean>
<bean id="restJsonModule" class="org.alfresco.rest.framework.jacksonextensions.RestJsonModule">
<property name="jsonSerializers">
<list>
<bean class="org.alfresco.rest.framework.jacksonextensions.SerializerOfExecutionResult" />
<bean class="org.alfresco.rest.framework.jacksonextensions.SerializerOfCollectionWithPaging" />
<bean class="org.alfresco.rest.framework.jacksonextensions.NodeRefSerializer" />
</list>
</property>
<property name="jsonDeserializers">
<map>
<entry key="org.alfresco.service.cmr.repository.NodeRef"><bean class="org.alfresco.rest.framework.jacksonextensions.NodeRefDeserializer" /></entry>
<entry key="java.lang.String"><bean class="org.alfresco.rest.framework.jacksonextensions.RestApiStringDeserializer" /></entry>
<entry key="org.alfresco.rest.api.model.Target"><bean class="org.alfresco.rest.framework.jacksonextensions.TargetDeserializer" /></entry>
</map>
</property>
</bean>
<bean id="jsonHelper" class="org.alfresco.rest.framework.jacksonextensions.JacksonHelper">
<property name="module" ref="restJsonModule" />
</bean>
<bean id="simpleMappingExceptionResolver" class="org.alfresco.rest.framework.core.exceptions.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<map>
<entry key="org.alfresco.rest.framework.core.exceptions.ApiException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_INTERNAL_SERVER_ERROR}" />
<entry key="org.alfresco.rest.framework.core.exceptions.InvalidArgumentException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_BAD_REQUEST}" />
<entry key="org.alfresco.rest.framework.core.exceptions.NotFoundException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_NOT_FOUND}" />
<entry key="org.alfresco.rest.framework.core.exceptions.EntityNotFoundException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_NOT_FOUND}" />
<entry key="org.alfresco.rest.framework.core.exceptions.RelationshipResourceNotFoundException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_NOT_FOUND}" />
<entry key="org.alfresco.rest.framework.core.exceptions.PermissionDeniedException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_FORBIDDEN}" />
<entry key="org.alfresco.rest.framework.core.exceptions.UnsupportedResourceOperationException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_METHOD_NOT_ALLOWED}" />
<entry key="org.alfresco.rest.framework.core.exceptions.ConstraintViolatedException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_CONFLICT}" />
<entry key="org.alfresco.rest.framework.core.exceptions.StaleEntityException" value="#{T(org.springframework.extensions.webscripts.Status).STATUS_CONFLICT}" />
</map>
</property>
</bean>
<!-- Using annotation-config=false means AutowiredAnnotationBeanPostProcessor
and CommonAnnotationBeanPostProcessor are both NOT included implicitly -->
<!-- context:component-scan base-package="org.alfresco.deleteme" annotation-config="false"
/> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"
/> -->
<bean id="apiWebScriptParent" abstract="true" parent="webscript">
<property name="resolver" ref="simpleMappingExceptionResolver" />
<property name="jsonHelper" ref="jsonHelper" />
</bean>
<alias name="webscript.org.alfresco.api.ResourceWebScript.get" alias="executorForHttpGet"/>
<bean id="webscriptHelper" class="org.alfresco.rest.framework.webscripts.ResourceWebScriptHelper">
<property name="locator" ref="apiLookup" />
<property name="executor" ref="executorForHttpGet" />
</bean>
<!-- Webscripts -->
<bean id="webscript.org.alfresco.api.ResourceWebScript.get"
class="org.alfresco.rest.framework.webscripts.ResourceWebScriptGet" parent="apiWebScriptParent">
<property name="helper" ref="webscriptHelper" />
<property name="locator" ref="apiLookup" />
<property name="transactionService" ref="transactionService" />
<property name="streamer" ref="webscript.content.streamer" />
</bean>
<bean id="webscript.org.alfresco.api.ResourceWebScript.post"
class="org.alfresco.rest.framework.webscripts.ResourceWebScriptPost" parent="apiWebScriptParent">
<property name="helper" ref="webscriptHelper" />
<property name="locator" ref="apiLookup" />
<property name="transactionService" ref="transactionService" />
<property name="streamer" ref="webscript.content.streamer" />
</bean>
<bean id="webscript.org.alfresco.api.ResourceWebScript.put"
class="org.alfresco.rest.framework.webscripts.ResourceWebScriptPut" parent="apiWebScriptParent">
<property name="helper" ref="webscriptHelper" />
<property name="locator" ref="apiLookup" />
<property name="transactionService" ref="transactionService" />
<property name="streamer" ref="webscript.content.streamer" />
</bean>
<bean id="webscript.org.alfresco.api.ResourceWebScript.delete"
class="org.alfresco.rest.framework.webscripts.ResourceWebScriptDelete" parent="apiWebScriptParent">
<property name="helper" ref="webscriptHelper" />
<property name="locator" ref="apiLookup" />
<property name="transactionService" ref="transactionService" />
<property name="streamer" ref="webscript.content.streamer" />
</bean>
<bean id="webscript.org.alfresco.api.InfoWebScript.get"
class="org.alfresco.rest.framework.webscripts.metadata.InfoWebScriptGet" parent="apiWebScriptParent">
<property name="lookupDictionary" ref="apiLookup" />
</bean>
<bean id="webscript.org.alfresco.api.MetaDataWebScript.options"
class="org.alfresco.rest.framework.webscripts.metadata.WebScriptOptionsMetaData" parent="apiWebScriptParent">
<property name="lookupDictionary" ref="apiLookup" />
</bean>
<!-- Bean defintions, hopefully later we can replace them with autowired
beans -->
<bean id="defaultExceptionInterceptor" class="org.alfresco.rest.api.impl.ExceptionInterceptor">
<property name="exceptionHandlers">
<list>
<bean class="org.alfresco.rest.api.impl.DefaultExceptionHandler"/>
</list>
</property>
</bean>
<bean id="legacyExceptionInterceptor" class="org.alfresco.rest.api.impl.ExceptionInterceptor">
<property name="exceptionHandlers">
<list>
<bean class="org.alfresco.rest.api.impl.LegacyExceptionHandler"/>
</list>
</property>
</bean>
<bean id="siteMembershipRequestsExceptionInterceptor" class="org.alfresco.rest.api.impl.ExceptionInterceptor">
<property name="exceptionHandlers">
<list>
<bean class="org.alfresco.rest.api.impl.SiteMembershipRequestsExceptionHandler"/>
</list>
</property>
</bean>
<bean id="activitySummaryProcessorRegistry" class="org.alfresco.util.registry.NamedObjectRegistry">
<property name="storageType" value="org.alfresco.rest.api.impl.activities.ActivitySummaryProcessor"/>
</bean>
<bean id="activitySummaryParser" class="org.alfresco.rest.api.impl.activities.ActivitySummaryParser">
<property name="processors" ref="activitySummaryProcessorRegistry" />
</bean>
<bean id="commentsActivitySummaryProcessor" class="org.alfresco.rest.api.impl.activities.BaseActivitySummaryProcessor">
<property name="registry" ref="activitySummaryParser" />
<property name="eventTypes">
<list>
<value>org.alfresco.comments.comment-created</value>
<value>org.alfresco.comments.comment-updated</value>
<value>org.alfresco.comments.comment-deleted</value>
</list>
</property>
</bean>
<bean id="documentLibraryActivitySummaryProcessor" class="org.alfresco.rest.api.impl.activities.BaseActivitySummaryProcessor">
<property name="registry" ref="activitySummaryParser" />
<property name="eventTypes">
<list>
<value>org.alfresco.documentlibrary.files-added</value>
<value>org.alfresco.documentlibrary.files-updated</value>
<value>org.alfresco.documentlibrary.files-deleted</value>
<value>org.alfresco.documentlibrary.file-added</value>
<value>org.alfresco.documentlibrary.file-created</value>
<value>org.alfresco.documentlibrary.file-deleted</value>
<value>org.alfresco.documentlibrary.file-liked</value>
<value>org.alfresco.documentlibrary.inline-edit</value>
<value>org.alfresco.documentlibrary.folder-liked</value>
<value>org.alfresco.documentlibrary.folder-added</value>
<value>org.alfresco.documentlibrary.folder-deleted</value>
<value>org.alfresco.documentlibrary.folders-added</value>
<value>org.alfresco.documentlibrary.folders-deleted</value>
</list>
</property>
</bean>
<bean id="siteActivitySummaryProcessor" class="org.alfresco.rest.api.impl.activities.SiteActivitySummaryProcessor">
<property name="registry" ref="activitySummaryParser" />
<property name="eventTypes">
<list>
<value>org.alfresco.site.user-joined</value>
<value>org.alfresco.site.user-left</value>
<value>org.alfresco.site.user-role-changed</value>
<value>org.alfresco.site.group-added</value>
<value>org.alfresco.site.group-removed</value>
<value>org.alfresco.site.group-role-changed</value>
</list>
</property>
</bean>
<bean id="discussionsActivitySummaryProcessor" class="org.alfresco.rest.api.impl.activities.DiscussionsActivitySummaryProcessor">
<property name="registry" ref="activitySummaryParser" />
<property name="eventTypes">
<list>
<value>org.alfresco.discussions.reply-created</value>
</list>
</property>
</bean>
<bean id="subscriptionsActivitySummaryProcessor" class="org.alfresco.rest.api.impl.activities.SubscriptionsActivitySummaryProcessor">
<property name="registry" ref="activitySummaryParser" />
<property name="eventTypes">
<list>
<value>org.alfresco.subscriptions.followed</value>
<value>org.alfresco.subscriptions.subscribed</value>
</list>
</property>
</bean>
<bean id="wikiActivitySummaryProcessor" class="org.alfresco.rest.api.impl.activities.BaseActivitySummaryProcessor">
<property name="registry" ref="activitySummaryParser" />
<property name="eventTypes">
<list>
<value>org.alfresco.wiki.page-created</value>
<value>org.alfresco.wiki.page-edited</value>
<value>org.alfresco.wiki.page-renamed</value>
<value>org.alfresco.wiki.page-deleted</value>
</list>
</property>
</bean>
<bean id="nodeRatingSchemeRegistry" class="org.alfresco.util.registry.NamedObjectRegistry">
<property name="storageType" value="org.alfresco.rest.api.impl.node.ratings.RatingScheme"/>
</bean>
<bean id="apiLikesRatingScheme" class="org.alfresco.rest.api.impl.node.ratings.LikesRatingScheme">
<property name="nodeService" ref="NodeService" />
<property name="dictionaryService" ref="DictionaryService" />
<property name="activityService" ref="activityService" />
<property name="siteService" ref="SiteService" />
<property name="nodeRatingSchemeRegistry" ref="nodeRatingSchemeRegistry" />
<property name="ratingService" ref="RatingService" />
</bean>
<bean id="apiFiveStarRatingScheme" class="org.alfresco.rest.api.impl.node.ratings.FiveStarRatingScheme">
<property name="nodeService" ref="NodeService" />
<property name="dictionaryService" ref="DictionaryService" />
<property name="activityService" ref="activityService" />
<property name="siteService" ref="SiteService" />
<property name="nodeRatingSchemeRegistry" ref="nodeRatingSchemeRegistry" />
<property name="ratingService" ref="RatingService" />
</bean>
<bean id="activities" class="org.alfresco.rest.api.impl.ActivitiesImpl">
<property name="people" ref="people" />
<property name="activityService" ref="activityService" />
<property name="activitySummaryParser" ref="activitySummaryParser" />
<property name="tenantService" ref="tenantService" />
<property name="sites" ref="sites" />
</bean>
<bean id="Activities" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Activities</value>
</property>
<property name="target">
<ref bean="activities" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="comments" class="org.alfresco.rest.api.impl.CommentsImpl">
<property name="nodes" ref="nodes" />
<property name="nodeService" ref="NodeService" />
<property name="commentService" ref="CommentService" />
<property name="contentService" ref="ContentService" />
<property name="permissionService" ref="PermissionService" />
<property name="lockService" ref="LockService" />
<property name="typeConstraint">
<bean class="org.alfresco.util.TypeConstraint" init-method="init">
<property name="nodeService" ref="NodeService" />
<property name="expectedTypes">
<list>
<value>{http://www.alfresco.org/model/content/1.0}folder</value>
<value>{http://www.alfresco.org/model/content/1.0}content</value>
<value>{http://www.alfresco.org/model/cmis/custom}*</value>
</list>
</property>
<property name="excludedTypes">
<list>
<value>{http://www.alfresco.org/model/forum/1.0}forums</value>
<value>{http://www.alfresco.org/model/forum/1.0}forum</value>
<value>{http://www.alfresco.org/model/forum/1.0}topic</value>
<value>{http://www.alfresco.org/model/forum/1.0}post</value>
<value>{http://www.alfresco.org/model/content/1.0}category</value>
</list>
</property>
</bean>
</property>
</bean>
<bean id="Comments" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Comments</value>
</property>
<property name="target">
<ref bean="comments" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="nodeRatings" class="org.alfresco.rest.api.impl.NodeRatingsImpl">
<property name="nodes" ref="nodes" />
<property name="ratingService" ref="RatingService" />
<property name="nodeRatingSchemeRegistry" ref="nodeRatingSchemeRegistry" />
<property name="typeConstraint">
<bean class="org.alfresco.util.TypeConstraint" init-method="init">
<property name="nodeService" ref="NodeService" />
<property name="expectedTypes">
<list>
<value>{http://www.alfresco.org/model/content/1.0}folder</value>
<value>{http://www.alfresco.org/model/content/1.0}content</value>
<value>{http://www.alfresco.org/model/cmis/custom}*</value>
</list>
</property>
<property name="excludedTypes">
<list>
<value>{http://www.alfresco.org/model/forum/1.0}forums</value>
<value>{http://www.alfresco.org/model/forum/1.0}forum</value>
<value>{http://www.alfresco.org/model/forum/1.0}topic</value>
<value>{http://www.alfresco.org/model/forum/1.0}post</value>
<value>{http://www.alfresco.org/model/content/1.0}category</value>
</list>
</property>
</bean>
</property>
</bean>
<bean id="NodeRatings" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.NodeRatings</value>
</property>
<property name="target">
<ref bean="nodeRatings" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="nodes" class="org.alfresco.rest.api.impl.NodesImpl">
<property name="nodeService" ref="NodeService" />
<property name="dictionaryService" ref="DictionaryService" />
<property name="cmisConnector" ref="CMISConnector" />
</bean>
<bean id="Nodes" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Nodes</value>
</property>
<property name="target">
<ref bean="nodes" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="favourites" class="org.alfresco.rest.api.impl.FavouritesImpl">
<property name="people" ref="People" />
<property name="sites" ref="Sites" />
<property name="nodes" ref="Nodes" />
<property name="siteService" ref="SiteService" />
<property name="favouritesService" ref="FavouritesService" />
</bean>
<bean id="Favourites" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Favourites</value>
</property>
<property name="target">
<ref bean="favourites" />
</property>
<property name="interceptorNames">
<list>
<idref bean="defaultExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="siteMembershipRequests" class="org.alfresco.rest.api.impl.SiteMembershipRequestsImpl">
<property name="people" ref="People" />
<property name="sites" ref="Sites" />
<property name="nodeService" ref="NodeService" />
<property name="siteService" ref="SiteService" />
<property name="invitationService" ref="invitationService" />
<property name="networksService" ref="networksService" />
</bean>
<bean id="SiteMembershipRequests" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.SiteMembershipRequests</value>
</property>
<property name="target">
<ref bean="siteMembershipRequests" />
</property>
<property name="interceptorNames">
<list>
<idref bean="siteMembershipRequestsExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="people" class="org.alfresco.rest.api.impl.PeopleImpl">
<property name="nodes" ref="Nodes" />
<property name="sites" ref="sites" />
<property name="siteService" ref="SiteService" />
<property name="nodeService" ref="NodeService" />
<property name="personService" ref="PersonService" />
<property name="authenticationService" ref="AuthenticationService" />
<property name="contentUsageService" ref="contentUsageImpl" />
<property name="contentService" ref="ContentService" />
<property name="thumbnailService" ref="ThumbnailService" />
</bean>
<bean id="People" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.People</value>
</property>
<property name="target">
<ref bean="people" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="preferences" class="org.alfresco.rest.api.impl.PreferencesImpl">
<property name="people" ref="people" />
<property name="preferenceService" ref="PreferenceService" />
</bean>
<bean id="Preferences" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Preferences</value>
</property>
<property name="target">
<ref bean="preferences" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="sites" class="org.alfresco.rest.api.impl.SitesImpl">
<property name="dictionaryService" ref="DictionaryService" />
<property name="nodes" ref="Nodes" />
<property name="people" ref="people" />
<property name="nodeService" ref="NodeService" />
<property name="siteService" ref="SiteService" />
<property name="favouritesService" ref="FavouritesService" />
<property name="preferenceService" ref="PreferenceService" />
</bean>
<bean id="Sites" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Sites</value>
</property>
<property name="target">
<ref bean="sites" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="tags" class="org.alfresco.rest.api.impl.TagsImpl">
<property name="nodes" ref="nodes" />
<property name="taggingService" ref="TaggingService" />
<property name="typeConstraint">
<bean class="org.alfresco.util.TypeConstraint" init-method="init">
<property name="nodeService" ref="NodeService" />
<property name="expectedTypes">
<list>
<value>{http://www.alfresco.org/model/content/1.0}folder</value>
<value>{http://www.alfresco.org/model/content/1.0}content</value>
<value>{http://www.alfresco.org/model/cmis/custom}*</value>
</list>
</property>
<property name="excludedTypes">
<list>
<value>{http://www.alfresco.org/model/forum/1.0}forums</value>
<value>{http://www.alfresco.org/model/forum/1.0}forum</value>
<value>{http://www.alfresco.org/model/forum/1.0}topic</value>
<value>{http://www.alfresco.org/model/forum/1.0}post</value>
<value>{http://www.alfresco.org/model/content/1.0}category</value>
</list>
</property>
</bean>
</property>
</bean>
<bean id="Tags" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Tags</value>
</property>
<property name="target">
<ref bean="tags" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="networks" class="org.alfresco.rest.api.impl.NetworksImpl">
<property name="people" ref="People" />
<property name="networksService" ref="networksService" />
</bean>
<bean id="Networks" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.api.Networks</value>
</property>
<property name="target">
<ref bean="networks" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<!-- API webscripts -->
<bean class="org.alfresco.rest.api.sites.SiteEntityResource">
<property name="sites" ref="Sites" />
</bean>
<bean class="org.alfresco.rest.api.networks.NetworksEntityResource">
<property name="networks" ref="Networks" />
</bean>
<bean class="org.alfresco.rest.api.sites.SiteMembersRelation">
<property name="sites" ref="Sites" />
</bean>
<bean class="org.alfresco.rest.api.sites.SiteContainersRelation">
<property name="sites" ref="Sites" />
</bean>
<bean class="org.alfresco.rest.api.people.PeopleEntityResource">
<property name="people" ref="People" />
</bean>
<bean class="org.alfresco.rest.api.tags.TagsEntityResource">
<property name="tags" ref="Tags" />
</bean>
<bean class="org.alfresco.rest.api.people.PersonSitesRelation">
<property name="sites" ref="Sites" />
</bean>
<bean class="org.alfresco.rest.api.people.PersonNetworksRelation">
<property name="networks" ref="Networks" />
</bean>
<bean class="org.alfresco.rest.api.people.PersonActivitiesRelation">
<property name="activities" ref="Activities" />
</bean>
<bean class="org.alfresco.rest.api.people.PersonPreferencesRelation">
<property name="preferences" ref="Preferences" />
</bean>
<bean class="org.alfresco.rest.api.people.PersonFavouriteSitesRelation">
<property name="sites" ref="Sites" />
</bean>
<bean class="org.alfresco.rest.api.nodes.NodesEntityResource">
<property name="nodes" ref="Nodes" />
</bean>
<bean class="org.alfresco.rest.api.nodes.NodeCommentsRelation">
<property name="comments" ref="Comments" />
</bean>
<bean class="org.alfresco.rest.api.nodes.NodeRatingsRelation">
<property name="nodeRatings" ref="NodeRatings" />
</bean>
<bean class="org.alfresco.rest.api.nodes.NodeTagsRelation">
<property name="tags" ref="Tags" />
</bean>
<bean class="org.alfresco.rest.api.people.PersonFavouritesRelation">
<property name="favourites" ref="Favourites" />
</bean>
<bean class="org.alfresco.rest.api.people.PersonSiteMembershipRequestsRelation">
<property name="siteMembershipRequests" ref="SiteMembershipRequests" />
</bean>
<bean id="getNetworksWebScript"
class="org.alfresco.rest.api.NetworksWebScriptGet">
<property name="networks" ref="Networks" />
<property name="jsonHelper" ref="jsonHelper" />
<property name="helper" ref="webscriptHelper" />
</bean>
<bean id="getNetworkWebScript"
class="org.alfresco.rest.api.NetworkWebScriptGet">
<property name="networks" ref="Networks" />
<property name="jsonHelper" ref="jsonHelper" />
<property name="helper" ref="webscriptHelper" />
</bean>
<!-- OpenCMIS -->
<bean id="publicApiCMISServiceFactory" class="org.alfresco.opencmis.PublicApiAlfrescoCmisServiceFactory" init-method="init">
<property name="cmisConnector" ref="CMISConnector" />
<property name="cmisTransactions" ref="CMISService_Transactions" />
<property name="cmisExceptions" ref="CMISService_Exceptions" />
<property name="cmisControl" ref="CMISService_Control" />
<property name="cmisStreams" ref="CMISService_Streams" />
<property name="authorityService" ref="AuthorityService" />
<property name="tenantAdminService" ref="tenantAdminService"/>
<property name="networksService" ref="networksService"/>
</bean>
<bean id="publicApiCMISServiceFactory1.1" class="org.alfresco.opencmis.PublicApiAlfrescoCmisServiceFactory" init-method="init">
<property name="cmisConnector" ref="CMISConnector1.1" />
<property name="cmisTransactions" ref="CMISService_Transactions" />
<property name="cmisExceptions" ref="CMISService_Exceptions" />
<property name="cmisControl" ref="CMISService_Control" />
<property name="cmisStreams" ref="CMISService_Streams" />
<property name="authorityService" ref="AuthorityService" />
<property name="tenantAdminService" ref="tenantAdminService"/>
<property name="networksService" ref="networksService"/>
</bean>
<bean id="cmisDispatcherRegistry" class="org.alfresco.opencmis.CMISDispatcherRegistryImpl">
</bean>
<bean id="cmisAtomPubDispatcher" class="org.alfresco.opencmis.PublicApiAtomPubCMISDispatcher" init-method="init">
<property name="descriptorService" ref="DescriptorService"/>
<property name="cmisServiceFactory" ref="publicApiCMISServiceFactory"/>
<property name="registry" ref="cmisDispatcherRegistry" />
<property name="serviceName" value="cmis" />
<property name="baseUrlGenerator" ref="baseUrlGenerator" />
<property name="version" value="1.0"/>
</bean>
<bean id="cmisAtomPubDispatcher1.1" class="org.alfresco.opencmis.PublicApiAtomPubCMISDispatcher" init-method="init">
<property name="descriptorService" ref="DescriptorService"/>
<property name="cmisServiceFactory" ref="publicApiCMISServiceFactory1.1"/>
<property name="registry" ref="cmisDispatcherRegistry" />
<property name="serviceName" value="cmis" />
<property name="baseUrlGenerator" ref="baseUrlGenerator" />
<property name="version" value="1.1"/>
</bean>
<bean id="cmisBrowserDispatcher1.0" class="org.alfresco.opencmis.PublicApiBrowserCMISDispatcher" init-method="init">
<property name="descriptorService" ref="DescriptorService"/>
<property name="cmisServiceFactory" ref="publicApiCMISServiceFactory"/>
<property name="baseUrlGenerator" ref="baseUrlGenerator"/>
<property name="registry" ref="cmisDispatcherRegistry" />
<property name="serviceName" value="cmis" />
<property name="version" value="1.0"/>
</bean>
<bean id="cmisBrowserDispatcher1.1" class="org.alfresco.opencmis.PublicApiBrowserCMISDispatcher" init-method="init">
<property name="descriptorService" ref="DescriptorService"/>
<property name="cmisServiceFactory" ref="publicApiCMISServiceFactory1.1"/>
<property name="baseUrlGenerator" ref="baseUrlGenerator"/>
<property name="registry" ref="cmisDispatcherRegistry" />
<property name="serviceName" value="cmis" />
<property name="version" value="1.1"/>
</bean>
<bean id="webscript.org.alfresco.api.opencmis.OpenCMIS.get"
class="org.alfresco.opencmis.CMISWebScript">
<property name="registry" ref="cmisDispatcherRegistry" />
</bean>
<bean id="webscript.org.alfresco.api.opencmis.OpenCMIS.post"
class="org.alfresco.opencmis.CMISWebScript">
<property name="registry" ref="cmisDispatcherRegistry" />
</bean>
<bean id="webscript.org.alfresco.api.opencmis.OpenCMIS.put"
class="org.alfresco.opencmis.CMISWebScript">
<property name="registry" ref="cmisDispatcherRegistry" />
</bean>
<bean id="webscript.org.alfresco.api.opencmis.OpenCMIS.delete"
class="org.alfresco.opencmis.CMISWebScript">
<property name="registry" ref="cmisDispatcherRegistry" />
</bean>
<bean id="webscript.org.alfresco.api.opencmis.OpenCMIS.options"
class="org.alfresco.opencmis.CMISWebScript">
<property name="registry" ref="cmisDispatcherRegistry" />
</bean>
<bean id="webscript.org.alfresco.api.opencmis.OpenCMIS.head"
class="org.alfresco.opencmis.CMISWebScript">
<property name="registry" ref="cmisDispatcherRegistry" />
</bean>
<bean id="cmisPathGenerator" class="org.alfresco.opencmis.PublicApiPathGenerator">
</bean>
<bean id="baseUrlGenerator" class="org.alfresco.opencmis.DefaultBaseUrlGenerator">
<property name="overrideContext" value="${opencmis.context.override}" />
<property name="contextOverride" value="${opencmis.context.value}" />
<property name="overrideServletPath" value="${opencmis.servletpath.override}" />
<property name="servletPathOverride" value="${opencmis.servletpath.value}" />
<property name="overrideServer" value="${opencmis.server.override}" />
<property name="serverOverride" value="${opencmis.server.value}" />
<property name="pathGenerator" ref="cmisPathGenerator" />
</bean>
<!-- Workflow REST API -->
<bean id="restVariableHelper" class="org.alfresco.rest.workflow.api.impl.RestVariableHelper">
<property name="nodeService" ref="nodeService" />
<property name="namespaceService" ref="namespaceService" />
</bean>
<bean id="baseWorkflowRest" class="org.alfresco.rest.workflow.api.impl.WorkflowRestImpl" abstract="true">
<property name="activitiProcessEngine" ref="activitiProcessEngine" />
<property name="authorityService" ref="authorityService" />
<property name="deployWorkflowsInTenant" value="${system.workflow.deployWorkflowsInTenant}" />
<property name="dictionaryService" ref="DictionaryService" />
<property name="namespaceService" ref="NamespaceService" />
<property name="tenantService" ref="tenantService" />
</bean>
<bean id="deployments" class="org.alfresco.rest.workflow.api.impl.DeploymentsImpl" parent="baseWorkflowRest">
</bean>
<bean id="Deployments" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.workflow.api.Deployments</value>
</property>
<property name="target">
<ref bean="deployments" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="processDefinitions" class="org.alfresco.rest.workflow.api.impl.ProcessDefinitionsImpl" parent="baseWorkflowRest">
<property name="messageService" ref="messageService" />
<property name="engineId" value="activiti" />
<property name="deployWorkflowsInTenant" value="${system.workflow.deployWorkflowsInTenant}" />
</bean>
<bean id="ProcessDefinitions" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.workflow.api.ProcessDefinitions</value>
</property>
<property name="target">
<ref bean="processDefinitions" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="processes" class="org.alfresco.rest.workflow.api.impl.ProcessesImpl" parent="baseWorkflowRest">
<property name="workflowPackageComponent" ref="workflowPackageImpl"/>
<property name="serviceRegistry" ref="ServiceRegistry" />
<property name="authorityDAO" ref="authorityDAO" />
<property name="nodeService" ref="nodeService"/>
<property name="personService" ref="PersonService" />
<property name="messageService" ref="messageService" />
<property name="engineId" value="activiti" />
<property name="repositoryHelper" ref="repositoryHelper" />
<property name="restVariableHelper" ref="restVariableHelper" />
</bean>
<bean id="Processes" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.workflow.api.Processes</value>
</property>
<property name="target">
<ref bean="processes" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean id="tasks" class="org.alfresco.rest.workflow.api.impl.TasksImpl" parent="baseWorkflowRest">
<property name="restVariableHelper" ref="restVariableHelper" />
<property name="messageService" ref="messageService" />
<property name="processes" ref="processes"/>
</bean>
<bean id="Tasks" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.rest.workflow.api.Tasks</value>
</property>
<property name="target">
<ref bean="tasks" />
</property>
<property name="interceptorNames">
<list>
<idref bean="legacyExceptionInterceptor" />
</list>
</property>
</bean>
<bean class="org.alfresco.rest.workflow.api.deployments.DeploymentsRestEntityResource">
<property name="deployments" ref="Deployments"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.processdefinitions.ProcessDefinitionsRestEntityResource">
<property name="processDefinitions" ref="ProcessDefinitions"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.processdefinitions.StartFormModelRelation">
<property name="processDefinitions" ref="processDefinitions"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.processes.ProcessesRestEntityResource">
<property name="processes" ref="Processes"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.processes.ProcessItemsRelation">
<property name="processes" ref="processes"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.processes.ProcessVariablesRelation">
<property name="processes" ref="processes"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.tasks.TasksRestEntityResource">
<property name="tasks" ref="Tasks"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.tasks.TaskCandidatesRelation">
<property name="tasks" ref="Tasks"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.tasks.TaskVariablesRelation">
<property name="tasks" ref="Tasks"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.tasks.TaskFormModelRelation">
<property name="tasks" ref="Tasks"/>
</bean>
<bean class="org.alfresco.rest.workflow.api.tasks.TaskItemsRelation">
<property name="tasks" ref="tasks"/>
</bean>
</beans>

View File

@@ -11,7 +11,8 @@
<bean id="webDAVLockService" class="org.alfresco.repo.webdav.WebDAVLockServiceImpl"> <bean id="webDAVLockService" class="org.alfresco.repo.webdav.WebDAVLockServiceImpl">
<property name="lockService"> <property name="lockService">
<ref bean="LockService" /> <!-- TODO: change from LockService to lockService to be reviewed -->
<ref bean="lockService" />
</property> </property>
<property name="nodeService"> <property name="nodeService">
<ref bean="NodeService" /> <ref bean="NodeService" />
@@ -22,7 +23,6 @@
<property name="checkOutCheckInService"> <property name="checkOutCheckInService">
<ref bean="CheckoutCheckinService" /> <ref bean="CheckoutCheckinService" />
</property> </property>
<property name="lockStoreFactory" ref="webdavLockStoreFactory"/>
</bean> </bean>
<bean id="baseWebDAVHelper" class="org.alfresco.repo.webdav.WebDAVHelper" abstract="true"> <bean id="baseWebDAVHelper" class="org.alfresco.repo.webdav.WebDAVHelper" abstract="true">
@@ -75,7 +75,15 @@
<value>${system.webdav.url.path.prefix}</value> <value>${system.webdav.url.path.prefix}</value>
</property> </property>
</bean> </bean>
<bean id="defaultImageResolver" class="org.alfresco.repo.utils.FacesImageResolver" />
<bean id="webDAVHelper" class="org.alfresco.repo.webdav.WebDAVHelper" parent="baseWebDAVHelper" /> <bean id="webDAVHelper" class="org.alfresco.repo.webdav.WebDAVHelper" parent="baseWebDAVHelper" />
<!-- Content Streamer -->
<bean id="webscript.content.streamer" class="org.alfresco.repo.web.scripts.content.ContentStreamer">
<property name="nodeService" ref="NodeService" />
<property name="mimetypeService" ref="MimetypeService" />
<property name="contentService" ref="ContentService" />
</bean>
</beans> </beans>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Options meta info for a resource</shortname>
<description>Shows the options for a particular rest api call</description>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles GET of resource info for api resources</shortname>
<description>Returns a json respresentation with metadata describing the resources</description>
<url>/{apiScope}/{apiName}/versions/{apiVersion}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<transaction allow="readonly">required</transaction>
</webscript>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles DELETE of a resource</shortname>
<description>Hands back a little bit of JSON</description>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note: the transaction is created in AbstractResourceWebScript -->
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles Get of a resource</shortname>
<description>Hands back the JSON response</description>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note: the transaction is created in AbstractResourceWebScript -->
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles POST of a resource</shortname>
<description>Hands back a little bit of JSON</description>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note: the transaction is created in AbstractResourceWebScript -->
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles PUT of a resource</shortname>
<description>Hands back a little bit of JSON</description>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}/</url>
<url>/{apiScope}/{apiName}/versions/{apiVersion}/{collectionResource}/{entityId}/{relationResource}/{relationshipId}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note: the transaction is created in AbstractResourceWebScript -->
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles OpenCMIS DELETE Requests</shortname>
<description>Handles OpenCMIS DELETE Requests</description>
<url>/cmis/versions/{apiVersion}/{binding}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note transactions are handled by the CMISServiceFactory -->
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles OpenCMIS GET Requests</shortname>
<description>Handles OpenCMIS GET Requests</description>
<url>/cmis/versions/{apiVersion}/{binding}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note transactions are handled by the CMISServiceFactory -->
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles OpenCMIS HEAD Requests</shortname>
<description>Handles OpenCMIS HEAD Requests</description>
<url>/cmis/versions/{apiVersion}/{binding}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note transactions are handled by the CMISServiceFactory -->
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles OpenCMIS OPTIONS Requests</shortname>
<description>Handles OpenCMIS OPTIONS Requests</description>
<url>/cmis/versions/{apiVersion}/{binding}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note transactions are handled by the CMISServiceFactory -->
<transaction>none</transaction>
</webscript>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles OpenCMIS POST Requests</shortname>
<description>Handles OpenCMIS POST Requests</description>
<url>/cmis/versions/{apiVersion}/{binding}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note transactions are handled by the CMISServiceFactory -->
<transaction>none</transaction>
<formdata multipart-processing="false"/>
</webscript>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<webscript>
<shortname>Handles OpenCMIS PUT Requests</shortname>
<description>Handles OpenCMIS PUT Requests</description>
<url>/cmis/versions/{apiVersion}/{binding}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}/{id}</url>
<url>/{apiScope}/cmis/versions/{apiVersion}/{binding}/{operation}</url>
<authentication>user</authentication>
<format default="json">argument</format>
<!-- Note transactions are handled by the CMISServiceFactory -->
<transaction>none</transaction>
<formdata multipart-processing="false"/>
</webscript>

View File

@@ -1,8 +1,8 @@
<script type="text/javascript" src="/alfresco/yui/build/yahoo/yahoo.js"></script> <script type="text/javascript" src="${url.context}/yui/build/yahoo/yahoo.js"></script>
<script type="text/javascript" src="/alfresco/yui/build/event/event.js" ></script> <script type="text/javascript" src="${url.context}/yui/build/event/event.js" ></script>
<script type="text/javascript" src="/alfresco/yui/build/dom/dom.js" ></script> <script type="text/javascript" src="${url.context}/yui/build/dom/dom.js" ></script>
<script type="text/javascript" src="/alfresco/yui/build/calendar/calendar.js"></script> <script type="text/javascript" src="${url.context}/yui/build/calendar/calendar.js"></script>
<link type="text/css" rel="stylesheet" href="/alfresco/yui/build/calendar/assets/calendar.css"> <link type="text/css" rel="stylesheet" href="${url.context}/yui/build/calendar/assets/calendar.css">
<script type="text/javascript"> <script type="text/javascript">
YAHOO.namespace("example.calendar"); YAHOO.namespace("example.calendar");

View File

@@ -1,21 +1,21 @@
<!-- Calendar Code v2.1 --> <!-- Calendar Code v2.1 -->
<link rel="stylesheet" type="text/css" href="/alfresco/yui/example.css"> <link rel="stylesheet" type="text/css" href="${url.context}/yui/example.css">
<link rel="stylesheet" type="text/css" href="/alfresco/yui/assets/tabview.css"> <link rel="stylesheet" type="text/css" href="${url.context}/yui/assets/tabview.css">
<link rel="stylesheet" type="text/css" href="/alfresco/yui/assets/round_tabs.css"> <link rel="stylesheet" type="text/css" href="${url.context}/yui/assets/round_tabs.css">
<link type="text/css" rel="stylesheet" href="/alfresco/yui/fonts.css"/> <link type="text/css" rel="stylesheet" href="${url.context}/yui/fonts.css"/>
<link type="text/css" rel="stylesheet" href="/alfresco/yui/assets/calendar.css"/> <link type="text/css" rel="stylesheet" href="${url.context}/yui/assets/calendar.css"/>
<link type="text/css" rel="stylesheet" href="/alfresco/yui/Custom.css"/> <link type="text/css" rel="stylesheet" href="${url.context}/yui/Custom.css"/>
<script type="text/javascript" src="/alfresco/yui/yahoo.js"></script> <script type="text/javascript" src="${url.context}/yui/yahoo.js"></script>
<script type="text/javascript" src="/alfresco/yui/event.js"></script> <script type="text/javascript" src="${url.context}/yui/event.js"></script>
<script type="text/javascript" src="/alfresco/yui/dom.js"></script> <script type="text/javascript" src="${url.context}/yui/dom.js"></script>
<script type="text/javascript" src="/alfresco/yui/element-beta.js"></script> <script type="text/javascript" src="${url.context}/yui/element-beta.js"></script>
<script type="text/javascript" src="/alfresco/yui/tabview.js"></script> <script type="text/javascript" src="${url.context}/yui/tabview.js"></script>
<script type="text/javascript" src="/alfresco/yui/yahoo-min.js" ></script> <script type="text/javascript" src="${url.context}/yui/yahoo-min.js" ></script>
<script type="text/javascript" src="/alfresco/yui/event-min.js" ></script> <script type="text/javascript" src="${url.context}/yui/event-min.js" ></script>
<script type="text/javascript" src="/alfresco/yui/connection-min.js" ></script> <script type="text/javascript" src="${url.context}/yui/connection-min.js" ></script>
<script type="text/javascript" src="/alfresco/yui/calendar.js"></script> <script type="text/javascript" src="${url.context}/yui/calendar.js"></script>
<script type="text/javascript"> <script type="text/javascript">
var tabView; var tabView;
@@ -23,27 +23,27 @@ var spaceRef = '${args["nodeRef"]}';
function showColorWindow(txtColor) function showColorWindow(txtColor)
{ {
win2 = window.open("/alfresco/images/calendar/color_picker.htm", "colorwind", "height=160,width=200,status=0"); win2 = window.open("${url.context}/images/calendar/color_picker.htm", "colorwind", "height=160,width=200,status=0");
win2.colorControl = txtColor; win2.colorControl = txtColor;
} }
</script> </script>
<script type="text/javascript" src="/alfresco/scripts/calendar/calendarScripts.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/calendarScripts.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/initializeEventDetails.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/initializeEventDetails.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/saveEventDetails.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/saveEventDetails.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/eventRetrieversMonthView.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/eventRetrieversMonthView.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/eventRetrieversWeekView.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/eventRetrieversWeekView.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/captureWeekViewEvents.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/captureWeekViewEvents.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/eventRetrieversDayView.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/eventRetrieversDayView.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/captureDayViewEvents.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/captureDayViewEvents.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/eventCaptureHandlers.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/eventCaptureHandlers.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/editEventHandlers.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/editEventHandlers.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/calendarSearch.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/calendarSearch.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/calendarUtil.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/calendarUtil.js" ></script>
<script type="text/javascript" src="/alfresco/scripts/calendar/ColorPicker2.js" ></script> <script type="text/javascript" src="${url.context}/scripts/calendar/ColorPicker2.js" ></script>
<link type="text/css" rel="stylesheet" href="/alfresco/css/calendar/calendarMain.css"/> <link type="text/css" rel="stylesheet" href="${url.context}/css/calendar/calendarMain.css"/>
<style type="text/css"> <style type="text/css">
#demo .yui-content { padding:1em; } /* pad content container */ #demo .yui-content { padding:1em; } /* pad content container */
@@ -64,11 +64,11 @@ function showColorWindow(txtColor)
<div id="showMonthEvents"> <div id="showMonthEvents">
<BR> <BR>
<div style="text-align:center"> <div style="text-align:center">
<img src="/alfresco/yui/img/prev.gif" title="Previous Year" onclick="addYearsMonthView(-1)" style="cursor:pointer" /> <img src="${url.context}/yui/img/prev.gif" title="Previous Year" onclick="addYearsMonthView(-1)" style="cursor:pointer" />
<img src="/alfresco/yui/img/prevMinor.gif" title="Previous Month" onclick="addMonthsMonthView(-1)" style="cursor:pointer" /> <img src="${url.context}/yui/img/prevMinor.gif" title="Previous Month" onclick="addMonthsMonthView(-1)" style="cursor:pointer" />
<img src="/alfresco/yui/img/now.gif" title="This Month" onclick="setCurrentMonthView(event)" style="cursor:pointer" /> <img src="${url.context}/yui/img/now.gif" title="This Month" onclick="setCurrentMonthView(event)" style="cursor:pointer" />
<img src="/alfresco/yui/img/nextMinor.gif" title="Next Month" onclick="addMonthsMonthView(1)" style="cursor:pointer"/> <img src="${url.context}/yui/img/nextMinor.gif" title="Next Month" onclick="addMonthsMonthView(1)" style="cursor:pointer"/>
<img src="/alfresco/yui/img/next.gif" title="Next Year" onclick="addYearsMonthView(1)" style="cursor:pointer" /> <img src="${url.context}/yui/img/next.gif" title="Next Year" onclick="addYearsMonthView(1)" style="cursor:pointer" />
<span id="spnCurrentDisplayMonth"></span> <span id="spnCurrentDisplayMonth"></span>
</div> </div>
@@ -92,9 +92,9 @@ function showColorWindow(txtColor)
<div id="showWeekEvents"> <div id="showWeekEvents">
<BR> <BR>
<div style="text-align:center"> <div style="text-align:center">
<img src="/alfresco/yui/img/prevMinor.gif" title="Previous Week" onclick="callLoadersWeekView(-7)" style="cursor:pointer" /> <img src="${url.context}/yui/img/prevMinor.gif" title="Previous Week" onclick="callLoadersWeekView(-7)" style="cursor:pointer" />
<img src="/alfresco/yui/img/now.gif" title="This Week" onclick="callLoadersWeekView(0)" style="cursor:pointer" /> <img src="${url.context}/yui/img/now.gif" title="This Week" onclick="callLoadersWeekView(0)" style="cursor:pointer" />
<img src="/alfresco/yui/img/nextMinor.gif" title="Next Week" onclick="callLoadersWeekView(7)" style="cursor:pointer" /> <img src="${url.context}/yui/img/nextMinor.gif" title="Next Week" onclick="callLoadersWeekView(7)" style="cursor:pointer" />
<span id="spnCurrentDisplayWeek"></span> <span id="spnCurrentDisplayWeek"></span>
</div> </div>
<table id="tabWeekViewMain" border="0" cellpadding="2" cellspacing="2" width="100%"> <table id="tabWeekViewMain" border="0" cellpadding="2" cellspacing="2" width="100%">
@@ -117,9 +117,9 @@ function showColorWindow(txtColor)
<div id="showDayEvents"> <div id="showDayEvents">
<BR> <BR>
<div style="text-align:center"> <div style="text-align:center">
<img src="/alfresco/yui/img/prevMinor.gif" title="Previous Day" onclick="callLoadersDayView(-1)" style="cursor:pointer" /> <img src="${url.context}/yui/img/prevMinor.gif" title="Previous Day" onclick="callLoadersDayView(-1)" style="cursor:pointer" />
<img src="/alfresco/yui/img/now.gif" title="Today" onclick="callLoadersDayView(0)" style="cursor:pointer" /> <img src="${url.context}/yui/img/now.gif" title="Today" onclick="callLoadersDayView(0)" style="cursor:pointer" />
<img src="/alfresco/yui/img/nextMinor.gif" title="Next Day" onclick="callLoadersDayView(1)" style="cursor:pointer" /> <img src="${url.context}/yui/img/nextMinor.gif" title="Next Day" onclick="callLoadersDayView(1)" style="cursor:pointer" />
<span id="spnCurrentDisplayDay"></span> <span id="spnCurrentDisplayDay"></span>
</div> </div>
<table id="tabDayViewMain" border="0" cellpadding="2" cellspacing="2" width="100%"> <table id="tabDayViewMain" border="0" cellpadding="2" cellspacing="2" width="100%">

View File

@@ -13,5 +13,5 @@
<url>/collaboration/tagQuery?n={nodeRef?}&amp;m={maxResults?}&amp;s={sortOrder?}</url> <url>/collaboration/tagQuery?n={nodeRef?}&amp;m={maxResults?}&amp;s={sortOrder?}</url>
<format default="json">argument</format> <format default="json">argument</format>
<authentication>user</authentication> <authentication>user</authentication>
<transaction>required</transaction> <transaction allow="readonly">required</transaction>
</webscript> </webscript>

View File

@@ -153,6 +153,10 @@ function resolveVirtualNodeRef(nodeRef)
{ {
node = companyhome.childrenByXPath("st:sites")[0]; node = companyhome.childrenByXPath("st:sites")[0];
} }
else if (nodeRef == "alfresco://shared")
{
node = companyhome.childrenByXPath("app:shared")[0];
}
return node; return node;
} }

View File

@@ -4,7 +4,7 @@
<url>/api/admin/restrictions</url> <url>/api/admin/restrictions</url>
<format default="json" /> <format default="json" />
<authentication>guest</authentication> <authentication>guest</authentication>
<transaction allow="readwrite">required</transaction> <transaction allow="readonly">required</transaction>
<family>Admin</family> <family>Admin</family>
<lifecycle>internal</lifecycle> <lifecycle>internal</lifecycle>
</webscript> </webscript>

View File

@@ -8,6 +8,7 @@
"readOnly" : ${readOnly?string("true","false")}, "readOnly" : ${readOnly?string("true","false")},
"updated" : ${updated?string("true","false")}, "updated" : ${updated?string("true","false")},
"licenseValidUntil" : <#if licenseValidUntil??>${licenseValidUntil?c}<#else>null</#if>, "licenseValidUntil" : <#if licenseValidUntil??>${licenseValidUntil?c}<#else>null</#if>,
"licenseHolder" : "<#if licenseHolder??>${licenseHolder}</#if>",
"level" : ${level?c}, "level" : ${level?c},
"warnings": [<#list warnings as x>"${x}"<#if x_has_next>, </#if></#list>], "warnings": [<#list warnings as x>"${x}"<#if x_has_next>, </#if></#list>],
"errors": [<#list errors as x>"${x}"<#if x_has_next>, </#if></#list>] "errors": [<#list errors as x>"${x}"<#if x_has_next>, </#if></#list>]

View File

@@ -25,7 +25,7 @@
</description> </description>
<url>/api/archive/{store_type}/{store_id}/{id}</url> <url>/api/archive/{store_type}/{store_id}/{id}</url>
<format default="json" /> <format default="json" />
<authentication>admin</authentication> <authentication runas="admin">user</authentication>
<transaction>required</transaction> <transaction>required</transaction>
<lifecycle>internal</lifecycle> <lifecycle>internal</lifecycle>
</webscript> </webscript>

View File

@@ -12,7 +12,7 @@
<url>/api/archive/{store_type}/{store_id}</url> <url>/api/archive/{store_type}/{store_id}</url>
<url>/api/archive/{store_type}/{store_id}/{id}</url> <url>/api/archive/{store_type}/{store_id}/{id}</url>
<format default="json" /> <format default="json" />
<authentication>admin</authentication> <authentication runas="admin">user</authentication>
<transaction>required</transaction> <transaction>required</transaction>
<lifecycle>internal</lifecycle> <lifecycle>internal</lifecycle>
</webscript> </webscript>

View File

@@ -1,13 +1,14 @@
<webscript> <webscript>
<shortname>GET archived (deleted) items</shortname> <shortname>GET archived (deleted) items</shortname>
<description> <description>
Gets all nodes that have been deleted and remain in the archive store. Gets all nodes that have been deleted by the current user and remain in the archive store.
If the user is an Administrator, then all the deleted nodes are fetched (regardless of who deleted the nodes).
The URL template includes a store_type and a store_id and only nodes which were The URL template includes a store_type and a store_id and only nodes which were
originally contained within the specified store will be included in the result set. originally contained within the specified store will be included in the result set.
</description> </description>
<url>/api/archive/{store_type}/{store_id}?maxItems={maxItems?}&amp;skipCount={skipCount?}</url> <url>/api/archive/{store_type}/{store_id}?maxItems={maxItems?}&amp;skipCount={skipCount?}&amp;nf={namefilter?}</url>
<format default="json" /> <format default="json" />
<authentication>admin</authentication> <authentication runas="admin">user</authentication>
<transaction allow="readonly">required</transaction> <transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle> <lifecycle>internal</lifecycle>
<args> <args>

View File

@@ -16,7 +16,8 @@
"displayPath": "${deletedNode.displayPath!""}", "displayPath": "${deletedNode.displayPath!""}",
"firstName": "${deletedNode.firstName!""}", "firstName": "${deletedNode.firstName!""}",
"lastName": "${deletedNode.lastName!""}", "lastName": "${deletedNode.lastName!""}",
"nodeType": "${deletedNode.nodeType!""}" "nodeType": "${deletedNode.nodeType!""}",
"isContentType": ${deletedNode.isContentType?string}
}<#if deletedNode_has_next>,</#if> }<#if deletedNode_has_next>,</#if>
</#list> </#list>
] ]

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=Name der Anwendung nicht angegeben.
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=Anwendung wurde nicht gefunden: {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=Es wurde kein Pfad nach dem Anwendungsnamen angegeben.
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=Parameter 'action' muss auf 'enable' oder 'disable' eingestellt sein.
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound=''valueType'' nicht erkannt: {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=''{0}'' kann nicht in Typ ''{1}'' konvertiert werden.

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=Nombre de aplicaci\u00f3n no suministrado.
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=Aplicaci\u00f3n no encontrada: {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=No se ha suministrado la ruta despu\u00e9s del nombre de la aplicaci\u00f3n.
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=El par\u00e1metro 'action' debe ser 'enable' o 'disable'
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound=''valueType'' no reconocido: {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=No se pudo convertir ''{0}'' al tipo ''{1}''

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=Le nom de l'application n'est pas pr\u00e9cis\u00e9.
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=Application introuvable\u00a0: {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=Aucun chemin n'a \u00e9t\u00e9 pr\u00e9cis\u00e9 apr\u00e8s le nom d'application.
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=Le param\u00e8tre ''action'' doit \u00eatre soit ''activer'' ou ''d\u00e9sactiver''
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound=''valueType'' non reconnu\u00a0: {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=Impossible de convertir ''{0}'' en type ''{1}''

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=Nome applicazione non fornito.
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=Applicazione non trovata: {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=Non \u00e8 stato fornito alcun percorso dopo il nome dell'applicazione.
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=Il parametro 'azione' deve essere 'abilita' o 'disabilita'
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound=''valueType'' non riconosciuto: {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=Impossibile convertire ''{0}'' nel tipo ''{1}''

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\uff1a {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d\u306e\u5f8c\u306b\u30d1\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=\u30d1\u30e9\u30e1\u30fc\u30bf\u300caction\u300d\u306f\u3001\u300cenable\u300d\u307e\u305f\u306f\u300cdisable\u300d\u306e\u3069\u3061\u3089\u304b\u306b\u3057\u3066\u304f\u3060\u3055\u3044
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound=\u300cvalueType\u300d\u306f\u8a8d\u5b9a\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\uff1a {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=''{0}''\u3092\u30bf\u30a4\u30d7''{1}''\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=Programnavn ikke gitt.
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=Program ikke funnet: {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=Ingen sti har blitt gitt etter programnavnet.
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=Parameteren 'handling' m\u00e5 enten v\u00e6re 'aktiver' eller 'deaktiver'
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound='valueType' ikke gjenkjent: {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=Kan ikke konvertere ''{0}'' til type ''{1}''

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=Applicatienaam niet verstrekt.
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=Applicatie niet gevonden: {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=Er was geen pad verstrekt na de applicatienaam.
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=Parameter 'action' moet 'enable' of 'disable' zijn
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound=''valueType'' niet herkend: {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=Kan ''{0}'' niet converteren naar type ''{1}''

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=\u0418\u043c\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e.
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e: {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=\u041f\u043e\u0441\u043b\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u043f\u0443\u0442\u044c.
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 '\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435' \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 '\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c' \u0438\u043b\u0438 '\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c'
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound=\u0422\u0438\u043f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d: {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c ''{0}'' \u0432 \u0442\u0438\u043f ''{1}''

View File

@@ -1,7 +1,7 @@
# Audit Control Web Script I18N # Audit Control Web Script I18N
audit.err.app.notProvided=Application name not supplied. audit.err.app.notProvided=\u672a\u63d0\u4f9b\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0\u3002
audit.err.app.notFound=Application not found: {0} audit.err.app.notFound=\u5e94\u7528\u7a0b\u5e8f\u672a\u627e\u5230\uff1a {0}
audit.err.path.notProvided=No path was supplied after the application name. audit.err.path.notProvided=\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0\u540e\u672a\u63d0\u4f9b\u4efb\u4f55\u8def\u5f84\u3002
audit.err.action.invalid=Parameter 'action' must be either 'enable' or 'disable' audit.err.action.invalid=\u53c2\u6570 'action' \u5fc5\u987b\u662f 'enable' \u6216 'disable'
audit.err.value.classNotFound=''valueType'' not recognised: {0} audit.err.value.classNotFound=''valueType'' \u672a\u8bc6\u522b\uff1a {0}
audit.err.value.convertFailed=Unable to convert ''{0}'' to type ''{1}'' audit.err.value.convertFailed=\u65e0\u6cd5\u5c06\u201c{0}\u201d\u8f6c\u6362\u4e3a\u7c7b\u578b\u201c{1}\u201d

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=ID f\u00fcr Audit-Eintrag nicht angegeben
audit.err.entry.id.notfound=ID f\u00fcr Audit-Eintrag {1} nicht gefunden

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=Id. de entrada de auditoria no suministrado
audit.err.entry.id.notfound=Id. de entrada de auditoria {1} no suministrado

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=L'ID de l'entr\u00e9e d'audit n'est pas fourni
audit.err.entry.id.notfound=ID de l''entr\u00e9e d''audit {1} introuvable

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=ID voce di controllo non fornito
audit.err.entry.id.notfound=ID voce di controllo {1} non trovato

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=\u76e3\u67fb\u30a8\u30f3\u30c8\u30eaid\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
audit.err.entry.id.notfound=\u76e3\u67fb\u30a8\u30f3\u30c8\u30eaid{1}\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=Revisjonsoppf\u00f8ring id ikke angitt
audit.err.entry.id.notfound=Revisjonsoppf\u00f8ring id {1} ikke angitt

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=Audit-entry is niet verstrekt
audit.err.entry.id.notfound=Audit-entry-id {1} niet gevonden

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u0443\u0434\u0438\u0442\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d
audit.err.entry.id.notfound=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u0443\u0434\u0438\u0442\u0430 {1} \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d

View File

@@ -0,0 +1,2 @@
audit.err.entry.id.notProvided=\u5ba1\u8ba1\u6761\u76ee id \u672a\u63d0\u4f9b
audit.err.entry.id.notfound=\u5ba1\u8ba1\u6761\u76ee id {1} \u672a\u627e\u5230

View File

@@ -9,7 +9,7 @@
[/#if] [/#if]
[/@compress] [/@compress]
[/#macro] [/#macro]
[#assign luceneQuery = "@cm\\:name:\"" + args.query + "*\" AND TYPE:\\{http\\://www.alfresco.org/model/content/1.0\\}folder AND NOT TYPE:\\{http\\://www.alfresco.org/model/wcmappmodel/1.0\\}webfolder"] [#assign luceneQuery = "@cm\\:name:\"" + args.query + "*\" AND TYPE:\\{http\\://www.alfresco.org/model/content/1.0\\}folder AND NOT TYPE:\\{http\\://www.alfresco.org/model/wcmappmodel/1.0\\}webfolder AND PATH:\"app\\:company_home//*\""]
[#assign matches = companyhome.childrenByLuceneSearch[luceneQuery]] [#assign matches = companyhome.childrenByLuceneSearch[luceneQuery]]
{ {
"data" : "data" :
@@ -21,4 +21,4 @@
}[#if match != matches?last],[/#if] }[#if match != matches?last],[/#if]
[/#list] [/#list]
] ]
} }

View File

@@ -24,7 +24,7 @@
<html> <html>
<head> <head>
<title>Bulk Filesystem Import Status</title> <title>Bulk Filesystem Import Status</title>
<link rel="stylesheet" href="/alfresco/css/main.css" type="text/css"/> <link rel="stylesheet" href="${url.context}/css/main.css" type="text/css"/>
[#if importStatus.inProgress()] [#if importStatus.inProgress()]
<meta http-equiv="refresh" content="${refreshIntervalInSeconds}" /> <meta http-equiv="refresh" content="${refreshIntervalInSeconds}" />
[/#if] [/#if]

View File

@@ -47,7 +47,9 @@
if (result) if (result)
{ {
result = validateRequired(form.targetPath, document.getElementById("targetPathMessage"), "Target space is mandatory."); result = ( (validateRequired(form.targetPath, document.getElementById("targetSpaceMessage"), "Target space or noderef is mandatory.")) ||
(validateRequired(form.targetNodeRef, document.getElementById("targetSpaceMessage"), "Target space or noderef is mandatory."))
) ;
} }
return result; return result;
@@ -67,17 +69,31 @@
<tr> <tr>
<td>Import directory:</td><td><input type="text" name="sourceDirectory" size="128" /></td><td id="sourceDirectoryMessage" style="color:red"></td> <td>Import directory:</td><td><input type="text" name="sourceDirectory" size="128" /></td><td id="sourceDirectoryMessage" style="color:red"></td>
</tr> </tr>
<tr>
<td><br/><label for="targetPath">Target space :</label></td>
<td id="targetSpaceMessage" style="color:red"></td>
</tr>
<tr> <tr>
<!-- TODO i18n for this string --> <!-- TODO i18n for this string -->
<td><br/><label for="targetPath">Target space (NodeRef or Path):</label></td> <td><br/><label for="targetPath">Path:</label></td>
<td> <td>
<div id="targetNodeRefAutoComplete"> <div id="targetNodeRefAutoComplete">
<input id="targetPath" type="text" name="targetPath" size="128" /> <input id="targetPath" type="text" name="targetPath" size="128" />
<div id="targetPathAutoSuggestContainer"></div> <div id="targetPathAutoSuggestContainer"></div>
</div> </div>
</td> </td>
<td id="targetPathMessage" style="color:red"></td>
</tr> </tr>
<tr>
<!-- TODO i18n for this string -->
<td><br/><label for="targetNodeRef">or NodeRef:</label></td>
<td>
<input id="targetNodeRef" type="text" name="targetNodeRef" size="128" />
</td>
</tr>
<tr> <tr>
<td colspan="3">&nbsp;</td> <td colspan="3">&nbsp;</td>
</tr> </tr>

View File

@@ -45,7 +45,8 @@ function main()
var data = var data =
{ {
title: json.get("itemTitle"), title: json.get("itemTitle"),
page: json.get("page") + (strParams != "" ? "?" + strParams.substring(0, strParams.length - 1) : "") page: json.get("page") + (strParams != "" ? "?" + strParams.substring(0, strParams.length - 1) : ""),
nodeRef: node.getNodeRef()
} }
activities.postActivity("org.alfresco.comments.comment-updated", json.get("site"), "comments", jsonUtils.toJSONString(data)); activities.postActivity("org.alfresco.comments.comment-updated", json.get("site"), "comments", jsonUtils.toJSONString(data));

View File

@@ -1,8 +1,8 @@
<webscript> <webscript>
<shortname>Get property definitions</shortname> <shortname>Get property definitions</shortname>
<description>Gets the collection of property definitions.</description> <description>Gets the collection of property definitions.</description>
<url>/api/classes/{classname}/properties?nsp={namespacePrefix?}&amp;n={name?}</url> <url>/api/classes/{classname}/properties?nsp={namespacePrefix?}&amp;n={name?}&amp;type={allowedType?}</url>
<url>/api/properties?nsp={namespacePrefix?}&amp;n={name?}</url> <url>/api/properties?nsp={namespacePrefix?}&amp;n={name?}&amp;type={allowedType?}</url>
<format default="json">argument</format> <format default="json">argument</format>
<authentication>user</authentication> <authentication>user</authentication>
<transaction allow="readonly">required</transaction> <transaction allow="readonly">required</transaction>

View File

@@ -165,7 +165,7 @@ function main()
} }
else else
{ {
parent = search.findNode(nodeRef); parent = resolveNode(nodeRef);
categoryResults = parent.children; categoryResults = parent.children;
} }
@@ -367,6 +367,10 @@ function resolveNode(reference)
{ {
node = companyhome.childrenByXPath("st:sites")[0]; node = companyhome.childrenByXPath("st:sites")[0];
} }
else if (reference == "alfresco://shared")
{
node = companyhome.childrenByXPath("app:shared")[0];
}
else if (reference.indexOf("://") > 0) else if (reference.indexOf("://") > 0)
{ {
node = search.findNode(reference); node = search.findNode(reference);

View File

@@ -1,3 +1,3 @@
links-delete.err.not.found=Ingen gyldige koblingsnavn ble angitt links-delete.err.not.found=Ingen gyldige koblingsnavn ble angitt
links-delete.access.denied=Du har ikke tillatelse til \u00e5 slette koblingen med navnet ''{0}'' links-delete.access.denied=Du har ikke tillatelse til \u00e5 slette koblingen med navnet '{0}'
links-delete.msg.deleted=Slettet node {0} links-delete.msg.deleted=Slettet node {0}

View File

@@ -60,6 +60,7 @@
"create": "${links.hasPermission("CreateChildren")?string}" "create": "${links.hasPermission("CreateChildren")?string}"
} }
}, },
"totalRecordsUpper": ${data.totalRecordsUpper?string("true","false")},
<@gen.pagedResults data=data ; item> <@gen.pagedResults data=data ; item>
<@linkJSON item=item /> <@linkJSON item=item />
</@gen.pagedResults> </@gen.pagedResults>

View File

@@ -2,6 +2,7 @@
<shortname>Get sites</shortname> <shortname>Get sites</shortname>
<description>Get a collection of the sites of which a a person is an explicit member.</description> <description>Get a collection of the sites of which a a person is an explicit member.</description>
<url>/api/people/{userid}/sites?size={pagesize?}&amp;pos={position?}&amp;roles={roles?}</url> <url>/api/people/{userid}/sites?size={pagesize?}&amp;pos={position?}&amp;roles={roles?}</url>
<url>/api/people/{userid}/sites/{filter}?size={pagesize?}&amp;pos={position?}&amp;roles={roles?}</url>
<format default="json">argument</format> <format default="json">argument</format>
<authentication>user</authentication> <authentication>user</authentication>
<transaction allow="readonly">required</transaction> <transaction allow="readonly">required</transaction>

View File

@@ -1,27 +1,85 @@
function main() function main()
{ {
// Get the user name of the person to get // Get the user name of the person to get
var userName = url.templateArgs.userid; var userName = url.templateArgs.userid;
// Get the person who has that user name // Get the person who has that user name
var person = people.getPerson(userName); var person = people.getPerson(userName);
if (person === null) if (person === null)
{ {
// Return 404 - Not Found // Return 404 - Not Found
status.setCode(status.STATUS_NOT_FOUND, "Person " + userName + " does not exist"); status.setCode(status.STATUS_NOT_FOUND, "Person " + userName + " does not exist");
return; return;
} }
// Get the list of sites // Get the filter param
var size = 0, var filter = url.templateArgs.filter
sizeString = args["size"];
if (sizeString != null) if (filter)
{ {
size = parseInt(sizeString); if (filter !== "recent" && filter !== "favourites")
} {
model.sites = siteService.listUserSites(userName, size); // Return 404 - Not Found
model.roles = (args["roles"] !== null ? args["roles"] : "managers"); status.setCode(status.STATUS_NOT_FOUND, "Filter " + filter + " is not recognised");
return;
}
}
// Get the list of sites
var size = 0,
sizeString = args["size"];
if (sizeString != null)
{
size = parseInt(sizeString);
}
var sites = siteService.listUserSites(userName, size);
if (filter)
{
var filterObj = {},
filteredSites = [];
if (filter == "recent")
{
var recentSites = preferenceService.getPreferences(userName, "org.alfresco.share.sites.recent")
filterObj = recentSites.org.alfresco.share.sites.recent;
}
else if (filter == "favourites")
{
favouriteSites = preferenceService.getPreferences(userName, "org.alfresco.share.sites.favourites");
filterObj = favouriteSites.org.alfresco.share.sites.favourites
}
for (var i = 0; i < sites.length; i++)
{
for (var key in filterObj)
{
if (filterObj[key] == sites[i].shortName || key == sites[i].shortName)
{
if (filter != "favourites" ||
filterObj[key] == true)
{
filteredSites.push(sites[i]);
}
}
}
}
model.sites = filteredSites;
}
else
{
// Sort sites alphabetically by title, ignoring case.
sites.sort(function(a,b)
{
if(a.title.toLowerCase() < b.title.toLowerCase()) return -1;
if(a.title.toLowerCase() > b.title.toLowerCase()) return 1;
})
model.sites = sites;
}
model.roles = (args["roles"] !== null ? args["roles"] : "managers");
} }
main(); main();

View File

@@ -16,7 +16,10 @@ function main()
try try
{ {
// Set the preferences // Set the preferences
preferenceService.setPreferences(userid, preferences); if (preferenceService.getAllowWrite())
{
preferenceService.setPreferences(userid, preferences);
}
} }
catch (error) catch (error)
{ {

View File

@@ -1,9 +1,7 @@
<webscript> <webscript>
<shortname>Channel Authorisation Form</shortname> <shortname>Channel Authorisation Form</shortname>
<description><![CDATA[ <description><![CDATA[
Used to post back credentials to publish to a channel. Returns a JSON object with one text property: "authStatus". Used to post back credentials to publish to a channel.
This property has one of three values: "AUTHORISED", "RETRY", or "UNAUTHORISED". The RETRY status indicates that
the last authorisation attempt failed, but the user may retry at least once more.
]]></description> ]]></description>
<url>/api/publishing/channels/{store_protocol}/{store_id}/{node_id}/authform</url> <url>/api/publishing/channels/{store_protocol}/{store_id}/{node_id}/authform</url>
<format default="html"/> <format default="html"/>
@@ -24,16 +22,4 @@
<description>The identifier of the node that represents the relevant publishing channel.</description> <description>The identifier of the node that represents the relevant publishing channel.</description>
</arg> </arg>
</args> </args>
<responses>
<response>
<format>json</format>
<type>
<![CDATA[
{
"authStatus": string
}
]]>
</type>
</response>
</responses>
</webscript> </webscript>

View File

@@ -29,7 +29,7 @@ function findNodeInSite()
var node = site.getContainer(containerId); var node = site.getContainer(containerId);
if (node === null) if (node === null)
{ {
node = site.createContainer(containerId); node = site.aquireContainer(containerId);
if (node === null) if (node === null)
{ {
status.setCode(status.STATUS_NOT_FOUND, "Unable to fetch container '" + containerId + "' of site '" + siteId + "'. (No write permission?)"); status.setCode(status.STATUS_NOT_FOUND, "Unable to fetch container '" + containerId + "' of site '" + siteId + "'. (No write permission?)");
@@ -68,6 +68,10 @@ function findFromReference()
{ {
node = companyhome.childrenByXPath("st:sites")[0]; node = companyhome.childrenByXPath("st:sites")[0];
} }
else if (nodeRef == "alfresco://shared")
{
node = companyhome.childrenByXPath("app:shared")[0];
}
else else
{ {
node = search.findNode(nodeRef); node = search.findNode(nodeRef);

View File

@@ -0,0 +1,8 @@
<webscript>
<shortname>Get state of inherited rules</shortname>
<description>Returns the state of inherited rule flag</description>
<url>/api/node/{store_type}/{store_id}/{id}/ruleset/inheritrules/state</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
</webscript>

View File

@@ -0,0 +1,19 @@
function main ()
{
var nodeRef = url.templateArgs.store_type + "://" + url.templateArgs.store_id + "/" + url.templateArgs.id,
node = search.findNode(nodeRef),
ASPECT_IGNORE_INHERITED_RULES = "rule:ignoreInheritedRules";
model.nodeRef = nodeRef;
// Aspect indicates that rules are ignored.
if (node.hasAspect(ASPECT_IGNORE_INHERITED_RULES) == true)
{
model.inheritRules = false;
} else
{
model.inheritRules = true;
}
};
main();

View File

@@ -0,0 +1,7 @@
{
"data" :
{
"nodeRef": "${nodeRef?string}",
"inheritRules": "${inheritRules?string}"
}
}

View File

@@ -0,0 +1,8 @@
<webscript>
<shortname>Toggles the inherit rule state</shortname>
<description>Toggles the state of the inherit rules flag</description>
<url>/api/node/{store_type}/{store_id}/{id}/ruleset/inheritrules/toggle</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
</webscript>

View File

@@ -0,0 +1,20 @@
function main ()
{
var nodeRef = url.templateArgs.store_type + "://" + url.templateArgs.store_id + "/" + url.templateArgs.id,
node = search.findNode(nodeRef),
ASPECT_IGNORE_INHERITED_RULES = "rule:ignoreInheritedRules";
model.nodeRef = nodeRef;
if (node.hasAspect(ASPECT_IGNORE_INHERITED_RULES) == true)
{
node.removeAspect(ASPECT_IGNORE_INHERITED_RULES);
model.inheritRules = true;
} else
{
node.addAspect(ASPECT_IGNORE_INHERITED_RULES);
model.inheritRules = false;
}
};
main();

View File

@@ -0,0 +1,7 @@
{
"data" :
{
"nodeRef": "${nodeRef?string}",
"inheritRules": "${inheritRules?string}"
}
}

View File

@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://a9.com/-/spec/opensearch/1.1/"> <head profile="http://a9.com/-/spec/opensearch/1.1/">
<title>Alfresco Keyword Search: ${search.searchTerms?html}</title> <title>Alfresco Keyword Search: ${search.searchTerms?html}</title>
<link rel="stylesheet" href="/alfresco/css/main.css" TYPE="text/css"> <link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css">
<link rel="search" type="application/opensearchdescription+xml" href="${url.serviceContext}/api/search/keyword/description.xml" title="Alfresco Keyword Search"/> <link rel="search" type="application/opensearchdescription+xml" href="${url.serviceContext}/api/search/keyword/description.xml" title="Alfresco Keyword Search"/>
<meta name="totalResults" content="${search.totalResults}"/> <meta name="totalResults" content="${search.totalResults}"/>
<meta name="startIndex" content="${search.startIndex}"/> <meta name="startIndex" content="${search.startIndex}"/>

View File

@@ -1,7 +1,7 @@
<html> <html>
<head profile="http://a9.com/-/spec/opensearch/1.1/"> <head profile="http://a9.com/-/spec/opensearch/1.1/">
<title>Alfresco Person Search: ${search.searchTerms?html}</title> <title>Alfresco Person Search: ${search.searchTerms?html}</title>
<link rel="stylesheet" href="/alfresco/css/main.css" TYPE="text/css"> <link rel="stylesheet" href="${url.context}/css/main.css" TYPE="text/css">
<link rel="search" type="application/opensearchdescription+xml" href="${url.serviceContext}/api/search/person/description.xml" title="Alfresco Person Search"/> <link rel="search" type="application/opensearchdescription+xml" href="${url.serviceContext}/api/search/person/description.xml" title="Alfresco Person Search"/>
<meta name="totalResults" content="${search.totalResults}"/> <meta name="totalResults" content="${search.totalResults}"/>
<meta name="startIndex" content="${search.startIndex}"/> <meta name="startIndex" content="${search.startIndex}"/>

View File

@@ -2,6 +2,12 @@
<shortname>Create Web site</shortname> <shortname>Create Web site</shortname>
<description> <![CDATA[ <description> <![CDATA[
Creates a new Web site based on the site preset and details provided. Creates a new Web site based on the site preset and details provided.
<br />
Please note: this method only creates a site at the repository level, it does not create a fully functional site.
It should be considered for internal use only at the moment.
Currently, creating a site programmatically needs to be done in the Share context, using the create-site module.
Further information can be found at the address http://your_domain:8080/share/page/index/uri/modules/create-site.post
within your Alfresco installation.
<br /> <br />
The following properties may be set. The following properties may be set.

View File

@@ -12,7 +12,7 @@
<url>/api/path/{store_type}/{store_id}/{id}/content{property}/thumbnails/{thumbnailname}?c={queueforcecreate?}&amp;ph={placeholder?}</url> <url>/api/path/{store_type}/{store_id}/{id}/content{property}/thumbnails/{thumbnailname}?c={queueforcecreate?}&amp;ph={placeholder?}</url>
<url>/api/node/{store_type}/{store_id}/{id}/content{property}/thumbnails/{thumbnailname}/{filename}?c={queueforcecreate?}&amp;ph={placeholder?}</url> <url>/api/node/{store_type}/{store_id}/{id}/content{property}/thumbnails/{thumbnailname}/{filename}?c={queueforcecreate?}&amp;ph={placeholder?}</url>
<url>/api/path/{store_type}/{store_id}/{id}/content{property}/thumbnails/{thumbnailname}/{filename}?c={queueforcecreate?}&amp;ph={placeholder?}</url> <url>/api/path/{store_type}/{store_id}/{id}/content{property}/thumbnails/{thumbnailname}/{filename}?c={queueforcecreate?}&amp;ph={placeholder?}</url>
<transaction allow="readwrite" buffer="-1">required</transaction> <transaction allow="readonly">required</transaction>
<format default="">argument</format> <format default="">argument</format>
<authentication>user</authentication> <authentication>user</authentication>
<transaction>required</transaction> <transaction>required</transaction>

View File

@@ -7,12 +7,14 @@
HTML form data HTML form data
<ul> <ul>
<li>filedata, (mandatory) HTML type file</li> <li>filedata, (mandatory) HTML type file</li>
<li>siteid</li> <li>You must specify one of:
<li>containerid</li> <br>&nbsp;destination (the folder NodeRef where the node will be created)
<li>uploaddirectory</li> <br>&nbsp;updateNodeRef (the NodeRef of an existing node that will be updated)
<li>updatenoderef</li> <br>&nbsp;siteid and containerid (the Site name and the container in that site where the document will be created)
<li>description</li> </li>
<li>contenttype</li> <li>uploaddirectory - name of the folder (either in the site container or the destination) where the document will be uploaded. This folder must already exist</li>
<li>description - Description for a version update (versionDescription)</li>
<li>contenttype - The content type that this document should be specialised to</li>
<li>majorversion</li> <li>majorversion</li>
<li>overwrite</li> <li>overwrite</li>
<li>thumbnails</li> <li>thumbnails</li>

View File

@@ -15,7 +15,6 @@ function exitUpload(statusCode, statusMsg)
status.code = statusCode; status.code = statusCode;
status.message = statusMsg; status.message = statusMsg;
status.redirect = true; status.redirect = true;
formdata.cleanup();
} }
function main() function main()
@@ -47,7 +46,7 @@ function main()
// Note: DON'T use a "!==" comparison for "null" here. // Note: DON'T use a "!==" comparison for "null" here.
var fnFieldValue = function(p_field) var fnFieldValue = function(p_field)
{ {
return field.value.length() > 0 && field.value != "null" ? field.value : null; return p_field.value.length() > 0 && p_field.value != "null" ? p_field.value : null;
}; };
// allow the locale to be set via an argument // allow the locale to be set via an argument
@@ -88,18 +87,17 @@ function main()
case "uploaddirectory": case "uploaddirectory":
uploadDirectory = fnFieldValue(field); uploadDirectory = fnFieldValue(field);
if (uploadDirectory !== null) if ((uploadDirectory !== null) && (uploadDirectory.length() > 0))
{ {
// Remove any leading "/" from the uploadDirectory if (uploadDirectory.charAt(uploadDirectory.length() - 1) != "/")
if (uploadDirectory.substr(0, 1) == "/")
{
uploadDirectory = uploadDirectory.substr(1);
}
// Ensure uploadDirectory ends with "/" if not the root folder
if ((uploadDirectory.length > 0) && (uploadDirectory.substring(uploadDirectory.length - 1) != "/"))
{ {
uploadDirectory = uploadDirectory + "/"; uploadDirectory = uploadDirectory + "/";
} }
// Remove any leading "/" from the uploadDirectory
if (uploadDirectory.charAt(0) == "/")
{
uploadDirectory = uploadDirectory.substr(1);
}
} }
break; break;
@@ -133,6 +131,13 @@ function main()
} }
} }
//MNT-7213 When alf_data runs out of disk space, Share uploads result in a success message, but the files do not appear
if (formdata.fields.length == 0)
{
exitUpload(404, " No disk space available");
return;
}
// Ensure mandatory file attributes have been located. Need either destination, or site + container or updateNodeRef // Ensure mandatory file attributes have been located. Need either destination, or site + container or updateNodeRef
if ((filename === null || content === null) || (destination === null && (siteId === null || containerId === null) && updateNodeRef === null)) if ((filename === null || content === null) || (destination === null && (siteId === null || containerId === null) && updateNodeRef === null))
{ {
@@ -296,8 +301,7 @@ function main()
// Record the file details ready for generating the response // Record the file details ready for generating the response
model.document = existingFile; model.document = existingFile;
// We're finished - bail out here // MNT-8745 fix: Do not clean formdata temp files to allow for retries. Temp files will be deleted later when GC call DiskFileItem#finalize() method or by temp file cleaner.
formdata.cleanup();
return; return;
} }
else else
@@ -372,9 +376,7 @@ function main()
// Record the file details ready for generating the response // Record the file details ready for generating the response
model.document = newFile; model.document = newFile;
} }
// MNT-8745 fix: Do not clean formdata temp files to allow for retries. Temp files will be deleted later when GC call DiskFileItem#finalize() method or by temp file cleaner.
// final cleanup of temporary resources created during request processing
formdata.cleanup();
} }
catch (e) catch (e)
{ {
@@ -383,10 +385,18 @@ function main()
// file cleanup. // file cleanup.
// capture exception, annotate it accordingly and re-throw // capture exception, annotate it accordingly and re-throw
if (e.message && e.message.indexOf("org.alfresco.service.cmr.usage.ContentQuotaException") == 0) if (e.message && e.message.indexOf("AccessDeniedException") != -1)
{
e.code = 403;
}
else if (e.message && e.message.indexOf("org.alfresco.service.cmr.usage.ContentQuotaException") == 0)
{ {
e.code = 413; e.code = 413;
} }
else if (e.message && e.message.indexOf("org.alfresco.repo.content.ContentLimitViolationException") == 0)
{
e.code = 409;
}
else else
{ {
e.code = 500; e.code = 500;

View File

@@ -54,7 +54,7 @@ function main()
logoNode.properties.content.guessMimetype(filename); logoNode.properties.content.guessMimetype(filename);
var resizedImage = logoNode.transformImage(logoNode.properties.content.mimetype, transformationOptions, tmpFolder); var resizedImage = logoNode.transformImage(logoNode.properties.content.mimetype, transformationOptions, tmpFolder);
logoNode.properties.content.write(resizedImage.properties.content); logoNode.properties.content.write(resizedImage.properties.content);
resizedImage.remove(); // CLOUD-951, no need to delete the resizedImage, as removing the tmpFolder will remove resizedImage too.
tmpFolder.remove(); tmpFolder.remove();
logoNode.save(); logoNode.save();

View File

@@ -1,2 +1,2 @@
calendar.err.event.not.found=Kan ikke finne hendelse: {0} calendar.err.event.not.found=Kan ikke finne hendelse: {0}
calendar.err.invalid.json=Ugyldig JSON: {0} calendar.err.invalid.json=Ugyldig JSON: {0}

View File

@@ -12,10 +12,18 @@ PRODID:-//Alfresco Software//Calendar 1.1//EN
<#assign created = event.createdAt> <#assign created = event.createdAt>
BEGIN:VEVENT BEGIN:VEVENT
UID:${event.nodeRef.id} UID:${event.nodeRef.id}
<#if item.allDayEnd?exists>
DTSTART;VALUE=DATE:${from?string(dateFormat)}
DTEND;VALUE=DATE:${item.allDayEnd?string(dateFormat)}
<#else>
DTSTART:${from?string(dateFormat)}T${from?string(timeFormat)}Z DTSTART:${from?string(dateFormat)}T${from?string(timeFormat)}Z
DTEND:${to?string(dateFormat)}T${to?string(timeFormat)}Z DTEND:${to?string(dateFormat)}T${to?string(timeFormat)}Z
</#if>
SUMMARY:${event.title!""} SUMMARY:${event.title!""}
DTSTAMP:${created?string(dateFormat)}T${created?string(timeFormat)}Z DTSTAMP:${created?string(dateFormat)}T${created?string(timeFormat)}Z
<#if event.recurrenceRule??>
RRULE:${event.recurrenceRule}
</#if>
<#if event.description?exists> <#if event.description?exists>
DESCRIPTION:${event.description?replace("\\", "\\\\")?replace(",", "\\,")?replace(";", "\\;")?replace("\r?\n", "\\n", "r")} DESCRIPTION:${event.description?replace("\\", "\\\\")?replace(",", "\\,")?replace(";", "\\;")?replace("\r?\n", "\\n", "r")}
</#if> </#if>

View File

@@ -26,7 +26,13 @@
"allday": "${event.allday?string}", "allday": "${event.allday?string}",
"tags": [<#list event.tags as tag>"${tag}"<#if tag_has_next>,</#if></#list>], "tags": [<#list event.tags as tag>"${tag}"<#if tag_has_next>,</#if></#list>],
"duration": "${event.duration}", "duration": "${event.duration}",
"isoutlook": "${event.isoutlook?string}" "isoutlook": "${event.isoutlook?string}",
"permissions":
{
"isEdit": ${event.canEdit?string},
"isDelete": ${event.canDelete?string}
}
}<#if event_has_next>,</#if> }<#if event_has_next>,</#if>
</#list> </#list>
] ]

View File

@@ -10,7 +10,7 @@ function getDraftBlogPostList()
" -ISNOTNULL:\"{http://www.alfresco.org/model/content/1.0}published\"" + " -ISNOTNULL:\"{http://www.alfresco.org/model/content/1.0}published\"" +
" +@cm\\:creator:\"" + person.properties.userName + '"'; " +@cm\\:creator:\"" + person.properties.userName + '"';
nodes = search.luceneSearch(q, 'cm:modified', false, 3); nodes = search.luceneSearch(q, '@cm:modified', false, 3);
return processResults(nodes, 3); return processResults(nodes, 3);
} }
@@ -21,7 +21,7 @@ function getWikiPages()
" +PATH:\"/app:company_home/st:sites/*/cm:wiki/*\"" + " +PATH:\"/app:company_home/st:sites/*/cm:wiki/*\"" +
" +@cm\\:modifier:\"" + person.properties.userName + '"'; " +@cm\\:modifier:\"" + person.properties.userName + '"';
nodes = search.luceneSearch(q, 'cm:modified', false, 3); nodes = search.luceneSearch(q, '@cm:modified', false, 3);
return processResults(nodes, 3); return processResults(nodes, 3);
} }
@@ -34,7 +34,7 @@ function getDiscussions()
// NOTE: pull back all posts as first reply on each post will also find the root post // NOTE: pull back all posts as first reply on each post will also find the root post
// the posts will be discarded until the root post for each topic is found. // the posts will be discarded until the root post for each topic is found.
nodes = search.luceneSearch(q, 'cm:modified', false); nodes = search.luceneSearch(q, '@cm:modified', false);
return processResults(nodes, 3); return processResults(nodes, 3);
} }

View File

@@ -126,7 +126,7 @@ var Evaluator =
else if (type.indexOf(":") > 0 && node.isSubType("cm:cmobject")) else if (type.indexOf(":") > 0 && node.isSubType("cm:cmobject"))
{ {
obj = Evaluator.getContentObject(value); obj = Evaluator.getContentObject(value);
if (obj == null) if (obj == null || !obj.hasPermission("Read"))
{ {
return false; return false;
} }

View File

@@ -244,6 +244,10 @@ var ParseArgs =
{ {
node = companyhome.childrenByXPath("st:sites")[0]; node = companyhome.childrenByXPath("st:sites")[0];
} }
else if (reference == "alfresco://shared")
{
node = companyhome.childrenByXPath("app:shared")[0];
}
else if (reference.indexOf("://") > 0) else if (reference.indexOf("://") > 0)
{ {
node = search.findNode(reference); node = search.findNode(reference);

View File

@@ -7,6 +7,6 @@
<url>/slingshot/doclib2/doclist/{type}/node/{store_type}/{store_id}/{id}</url> <url>/slingshot/doclib2/doclist/{type}/node/{store_type}/{store_id}/{id}</url>
<format default="json">argument</format> <format default="json">argument</format>
<authentication>user</authentication> <authentication>user</authentication>
<transaction allow="readwrite" buffersize="0">required</transaction> <transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle> <lifecycle>internal</lifecycle>
</webscript> </webscript>

View File

@@ -115,6 +115,7 @@ var Filters =
case "all": case "all":
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath + "//*\""; filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath + "//*\"";
filterQuery += " +TYPE:\"cm:content\""; filterQuery += " +TYPE:\"cm:content\"";
filterQuery += " -ASPECT:\"cm:checkedOut\"";
filterParams.query = filterQuery + filterQueryDefaults; filterParams.query = filterQuery + filterQueryDefaults;
break; break;

View File

@@ -85,16 +85,28 @@ var Common =
* @method getLocation * @method getLocation
* @param node {ScriptNode} Node to generate location for * @param node {ScriptNode} Node to generate location for
* @param libraryRoot {ScriptNode} Optional node to work out relative location from. * @param libraryRoot {ScriptNode} Optional node to work out relative location from.
* @param parent {ScriptNode} Optional parent to use instead of assuming primary parent path
* @return {object} Location object literal. * @return {object} Location object literal.
*/ */
getLocation: function Common_getLocation(node, libraryRoot) getLocation: function Common_getLocation(node, libraryRoot, parent)
{ {
try try
{ {
var location = null, var location = null,
qnamePaths,
displayPaths;
if (parent)
{
qnamePaths = (parent.qnamePath + "/_").split("/");
displayPaths = (parent.displayPath + "/" + parent.name).split("/");
}
else
{
qnamePaths = node.qnamePath.split("/"), qnamePaths = node.qnamePath.split("/"),
displayPaths = node.displayPath.split("/"); displayPaths = node.displayPath.split("/");
}
if (libraryRoot == undefined && qnamePaths[2] != TYPE_SITES) if (libraryRoot == undefined && qnamePaths[2] != TYPE_SITES)
{ {
libraryRoot = companyhome; libraryRoot = companyhome;
@@ -205,7 +217,6 @@ var ParseArgs =
libraryRoot = ParseArgs.resolveNode(libraryRoot); libraryRoot = ParseArgs.resolveNode(libraryRoot);
} }
if (url.templateArgs.store_type !== null) if (url.templateArgs.store_type !== null)
{ {
/** /**
@@ -247,27 +258,12 @@ var ParseArgs =
rootNode = siteNode.getContainer(containerId); rootNode = siteNode.getContainer(containerId);
if (rootNode === null) if (rootNode === null)
{ {
rootNode = siteNode.createContainer(containerId, containerType || "cm:folder"); rootNode = siteNode.aquireContainer(containerId, containerType || "cm:folder", {"cm:description": "Document Library"});
if (rootNode === null) if (rootNode === null)
{ {
status.setCode(status.STATUS_GONE, "Document Library container '" + containerId + "' not found in '" + siteId + "'. (No permission?)"); status.setCode(status.STATUS_GONE, "Document Library container '" + containerId + "' not found in '" + siteId + "'. (No permission?)");
return null; return null;
} }
rootNode.properties["cm:description"] = "Document Library";
/**
* MOB-593: Add email alias on documentLibrary container creation
*
rootNode.addAspect("emailserver:aliasable");
var emailAlias = siteId;
if (containerId != "documentLibrary")
{
emailAlias += "-" + containerId;
}
rootNode.properties["emailserver:alias"] = emailAlias;
*/
rootNode.save();
} }
} }
@@ -281,7 +277,14 @@ var ParseArgs =
} }
// Parent location parameter adjustment // Parent location parameter adjustment
location = Common.getLocation(pathNode, libraryRoot); var parentNode = null;
if (path.length > 0)
{
var p = path.split("/");
p.pop();
parentNode = rootNode.childByNamePath(p.join("/"));
}
location = Common.getLocation(pathNode, libraryRoot, parentNode);
if (location === null) if (location === null)
{ {
status.setCode(status.STATUS_GONE, "Location is 'null'. (No permission?)"); status.setCode(status.STATUS_GONE, "Location is 'null'. (No permission?)");
@@ -356,6 +359,10 @@ var ParseArgs =
{ {
node = companyhome.childrenByXPath("st:sites")[0]; node = companyhome.childrenByXPath("st:sites")[0];
} }
else if (reference == "alfresco://shared")
{
node = companyhome.childrenByXPath("app:shared")[0];
}
else if (reference.indexOf("://") > 0) else if (reference.indexOf("://") > 0)
{ {
if (reference.indexOf(":") < reference.indexOf("://")) if (reference.indexOf(":") < reference.indexOf("://"))

View File

@@ -175,24 +175,11 @@ function getSiteInputParams()
var rootNode = siteNode.getContainer(containerId); var rootNode = siteNode.getContainer(containerId);
if (rootNode === null) if (rootNode === null)
{ {
rootNode = siteNode.createContainer(containerId); rootNode = siteNode.aquireContainer(containerId);
if (rootNode === null) if (rootNode === null)
{ {
return "Component container '" + containerId + "' not found in '" + siteId + "'."; return "Component container '" + containerId + "' not found in '" + siteId + "'.";
} }
/**
* MOB-593: Add email alias on documentLibrary container creation
*
rootNode.addAspect("emailserver:aliasable");
var emailAlias = siteId;
if (containerId != "documentLibrary")
{
emailAlias += "-" + containerId;
}
rootNode.properties["emailserver:alias"] = emailAlias;
rootNode.save();
*/
} }
} }

View File

@@ -33,8 +33,18 @@ function runAction(p_params)
} }
else if (p_params.destNode.isLocked && !p_params.destNode.hasAspect("trx:transferred")) else if (p_params.destNode.isLocked && !p_params.destNode.hasAspect("trx:transferred"))
{ {
// ...or, if the node is locked then just unlock it... var assocs = p_params.destNode.getAssocs();
p_params.destNode.unlock(); if (assocs["{http://www.alfresco.org/model/content/1.0}workingcopylink"] !==null && assocs["{http://www.alfresco.org/model/content/1.0}workingcopylink"][0])
{
// original document: edit offline case
originalDoc = assocs["{http://www.alfresco.org/model/content/1.0}workingcopylink"][0].cancelCheckout();
}
else
{
// original document: edit online case
// ...or, if the node is locked then just unlock it...
p_params.destNode.unlock();
}
} }
var resultId = originalDoc.name, var resultId = originalDoc.name,

View File

@@ -7,6 +7,6 @@
<url>/slingshot/doclib/doclist/{type}/node/{store_type}/{store_id}/{id}</url> <url>/slingshot/doclib/doclist/{type}/node/{store_type}/{store_id}/{id}</url>
<format default="json">argument</format> <format default="json">argument</format>
<authentication>user</authentication> <authentication>user</authentication>
<transaction allow="readwrite" buffersize="0">required</transaction> <transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle> <lifecycle>internal</lifecycle>
</webscript> </webscript>

View File

@@ -0,0 +1,9 @@
<webscript>
<shortname>Create Fodler Templates</shortname>
<description>Document List Component - Create Folder Templates GET data webscript</description>
<url>/slingshot/doclib/folder-templates</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,10 @@
/**
* Document List Component: Create New Node - get list of available node templates in the Data Dictionary
*/
function main()
{
var nodes = search.selectNodes('/app:company_home/app:dictionary/app:space_templates/*[subtypeOf("cm:folder")]');
return nodes;
}
model.nodes = main();

View File

@@ -0,0 +1,15 @@
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
[
<#list nodes as node>
{
"nodeRef": "${node.nodeRef}",
"name": "${node.name}",
"title": "${node.properties.title!""}",
"description": "${node.properties.description!""}"
}<#if node_has_next>,</#if>
</#list>
]
}
</#escape>

View File

@@ -0,0 +1,9 @@
<webscript>
<shortname>Create Folder Templates</shortname>
<description>Document List Component - Create Folder Templates POST data webscript</description>
<url>/slingshot/doclib/folder-templates</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,6 @@
<#escape x as jsonUtils.encodeJSONString(x)>
{
"success": true,
"name": "${name}"
}
</#escape>

View File

@@ -0,0 +1,36 @@
/**
* Document List Component: Create New Node - create copy of node template in the Data Dictionary
*/
function main()
{
// get the arguments - expecting the "sourceNodeRef" and "parentNodeRef" of the source node to copy
// and the parent node to contain the new copy of the source.
var sourceNodeRef = json.get("sourceNodeRef");
if (sourceNodeRef == null || sourceNodeRef.length === 0)
{
status.setCode(status.STATUS_BAD_REQUEST, "Mandatory 'sourceNodeRef' parameter missing.");
return;
}
var parentNodeRef = json.get("parentNodeRef");
if (parentNodeRef == null || parentNodeRef.length === 0)
{
status.setCode(status.STATUS_BAD_REQUEST, "Mandatory 'parentNodeRef' parameter missing.");
return;
}
// get the nodes and perform the copy - permission failures etc. will produce a status code response
var sourceNode = search.findNode(sourceNodeRef),
parentNode = search.findNode(parentNodeRef);
if (sourceNode == null || parentNode == null)
{
status.setCode(status.STATUS_NOT_FOUND, "Source or destination node is missing for copy operation.");
}
var copy = sourceNode.copy(parentNode, true);
copy.properties["cm:name"] = json.get("prop_cm_name").toString();
copy.properties["cm:description"] = json.get("prop_cm_description").toString();
copy.properties["cm:title"] = json.get("prop_cm_title").toString();
copy.save();
model.name = json.get("prop_cm_name").toString();
}
main();

View File

@@ -5,6 +5,6 @@
<url>/slingshot/doclib/images/site/{site}/{container}</url> <url>/slingshot/doclib/images/site/{site}/{container}</url>
<format default="json">argument</format> <format default="json">argument</format>
<authentication>user</authentication> <authentication>user</authentication>
<transaction allow="readwrite" buffersize="0">required</transaction> <transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle> <lifecycle>internal</lifecycle>
</webscript> </webscript>

View File

@@ -1,6 +1,7 @@
<#escape x as jsonUtils.encodeJSONString(x)> <#escape x as jsonUtils.encodeJSONString(x)>
{ {
"success": true, "success": true,
"name": "${name}" "name": "${result.name}",
"nodeRef": "${result.nodeRef}"
} }
</#escape> </#escape>

View File

@@ -25,7 +25,7 @@ function main()
{ {
status.setCode(status.STATUS_NOT_FOUND, "Source or destination node is missing for copy operation."); status.setCode(status.STATUS_NOT_FOUND, "Source or destination node is missing for copy operation.");
} }
model.name = sourceNode.copy(parentNode).name; model.result = sourceNode.copy(parentNode);
} }
main(); main();

View File

@@ -380,27 +380,12 @@ var ParseArgs =
rootNode = siteNode.getContainer(containerId); rootNode = siteNode.getContainer(containerId);
if (rootNode === null) if (rootNode === null)
{ {
rootNode = siteNode.createContainer(containerId, containerType || "cm:folder"); rootNode = siteNode.aquireContainer(containerId, containerType || "cm:folder", {"cm:description": "Document Library"});
if (rootNode === null) if (rootNode === null)
{ {
status.setCode(status.STATUS_GONE, "Document Library container '" + containerId + "' not found in '" + siteId + "'. (No permission?)"); status.setCode(status.STATUS_GONE, "Document Library container '" + containerId + "' not found in '" + siteId + "'. (No permission?)");
return null; return null;
} }
rootNode.properties["cm:description"] = "Document Library";
/**
* MOB-593: Add email alias on documentLibrary container creation
*
rootNode.addAspect("emailserver:aliasable");
var emailAlias = siteId;
if (containerId != "documentLibrary")
{
emailAlias += "-" + containerId;
}
rootNode.properties["emailserver:alias"] = emailAlias;
*/
rootNode.save();
} }
} }
@@ -484,6 +469,10 @@ var ParseArgs =
{ {
node = companyhome.childrenByXPath("st:sites")[0]; node = companyhome.childrenByXPath("st:sites")[0];
} }
else if (reference == "alfresco://shared")
{
node = companyhome.childrenByXPath("app:shared")[0];
}
else if (reference.indexOf("://") > 0) else if (reference.indexOf("://") > 0)
{ {
if (reference.indexOf(":") < reference.indexOf("://")) if (reference.indexOf(":") < reference.indexOf("://"))

View File

@@ -96,7 +96,8 @@ function parsePermissions(p_permissions, p_settable)
authority = authority =
{ {
avatar: null, avatar: null,
name: authorityId name: authorityId,
displayName: null
}; };
nameProperty = "name"; nameProperty = "name";
} }

View File

@@ -9,7 +9,7 @@
"avatar": "${"api/node/" + perm.authority.avatar.nodeRef?string?replace('://','/') + "/content/thumbnails/avatar"}", "avatar": "${"api/node/" + perm.authority.avatar.nodeRef?string?replace('://','/') + "/content/thumbnails/avatar"}",
</#if> </#if>
"name": "${perm.authority.name}", "name": "${perm.authority.name}",
"displayName": "${perm.authority.displayName}" "displayName": "${perm.authority.displayName!perm.authority.name}"
}, },
"role": "${perm.role}" "role": "${perm.role}"
}<#if perm_has_next>,</#if> }<#if perm_has_next>,</#if>

View File

@@ -7,6 +7,6 @@
<url>/slingshot/doclib/treenode/node/{store_type}/{store_id}/{id}</url> <url>/slingshot/doclib/treenode/node/{store_type}/{store_id}/{id}</url>
<format default="json">argument</format> <format default="json">argument</format>
<authentication>user</authentication> <authentication>user</authentication>
<transaction allow="readwrite" buffersize="0">required</transaction> <transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle> <lifecycle>internal</lifecycle>
</webscript> </webscript>

Some files were not shown because too many files have changed in this diff Show More