diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/queries.post.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/queries.post.desc.xml index 1089ead385..d9379042bd 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/cmis/queries.post.desc.xml +++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/queries.post.desc.xml @@ -1,4 +1,4 @@ - + Issue Query (query) + Issue Query (query) - +
Results ${search.startIndex} - <#if search.startIndex == 0>0<#else>${search.startIndex + search.totalPageItems - 1} of ${search.totalResults} for ${search.searchTerms} visible to user <#if person??>${person.properties.userName}<#else>unknown.Results ${search.startIndex} - <#if search.startIndex == 0>0<#else>${search.startIndex + search.totalPageItems - 1} of ${search.totalResults} for ${search.searchTerms?html} visible to user <#if person??>${person.properties.userName}<#else>unknown.

diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/search/keywordsearch.get.portlet.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/search/keywordsearch.get.portlet.ftl index 7ef3004391..5c31883afa 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/search/keywordsearch.get.portlet.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/search/keywordsearch.get.portlet.ftl @@ -1,18 +1,18 @@ - +
Results ${search.startIndex} - ${search.startIndex + search.totalPageItems - 1} of ${search.totalResults} for ${search.searchTerms} visible to user <#if person??>${person.properties.userName}<#else>unknown.Results ${search.startIndex} - ${search.startIndex + search.totalPageItems - 1} of ${search.totalResults} for ${search.searchTerms?html} visible to user <#if person??>${person.properties.userName}<#else>unknown.

<#list search.results as row> - + <#if row.properties.description?? == true> - + diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl index 77d229ef48..695b9d5e21 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl @@ -42,7 +42,8 @@ <#macro nodeJSON node> { "id": ${node.id?c}, - "txnId": ${node.transaction.id?c}, + "nodeRef": "${node.nodeRef}", + "txnId": ${node.txnId?c}, "status": "<#if node.deleted>d<#else>u" } diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get_ru.properties new file mode 100755 index 0000000000..836c71d9cb --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get_ru.properties @@ -0,0 +1,2 @@ +calendar.err.event.not.found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: {0} +calendar.err.invalid.json=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 JSON: {0} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.post_ru.properties new file mode 100755 index 0000000000..69e50ebc30 --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.post_ru.properties @@ -0,0 +1,2 @@ +calendar.err.event.not.found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: {0} +calendar.err.invalid.json=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 JSON: {0} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.put_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.put_ru.properties new file mode 100755 index 0000000000..69e50ebc30 --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.put_ru.properties @@ -0,0 +1,2 @@ +calendar.err.event.not.found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: {0} +calendar.err.invalid.json=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 JSON: {0} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js index 76d6fdefad..f3db17daf5 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js @@ -827,7 +827,7 @@ function getSearchResults(params) // work out if "from" and/or "to" are specified - use MIN and MAX otherwise; // we only want the "YYYY-MM-DD" part of the ISO date value - so crop the strings from = (sepindex === 0 ? "MIN" : propValue.substr(0, 10)); - to = (sepindex === propValue.length - 1 ? "MAX" : propValue.substr(sepindex + 1, sepindex + 10)); + to = (sepindex === propValue.length - 1 ? "MAX" : propValue.substr(sepindex + 1, 10)); } else { diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/move.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/move.post_ru.properties index de9396c137..25a10f292c 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/move.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/move.post_ru.properties @@ -1,2 +1,3 @@ page-moved=\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0430 -page-moved-here=\u0441\u044e\u0434\u0430 \ No newline at end of file +page-moved-here=\u0441\u044e\u0434\u0430 +page-not-found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/page.get_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/page.get_ru.properties new file mode 100755 index 0000000000..78346f663f --- /dev/null +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/page.get_ru.properties @@ -0,0 +1 @@ +page-not-found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \ No newline at end of file diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml index 6cd620697a..4b08a8b53c 100644 --- a/config/alfresco/web-scripts-application-context.xml +++ b/config/alfresco/web-scripts-application-context.xml @@ -558,6 +558,7 @@ + @@ -1497,6 +1498,7 @@ parent="webscript"> + values = row.getValues(); + CmisPropertiesType properties = new CmisPropertiesType(); + Map values = row.getValues(); - // for each column... - for (CMISResultSetColumn column : columns) - { - CmisProperty property = propertiesUtil.createProperty(column.getName(), column.getCMISDataType(), values.get(column.getName())); - if (property != null) + // for each column... + for (CMISResultSetColumn column : columns) { - property.setQueryName(column.getName()); - properties.getProperty().add(property); + CmisProperty property = propertiesUtil.createProperty(column.getName(), column.getCMISDataType(), values.get(column.getName())); + if (property != null) + { + property.setQueryName(column.getName()); + properties.getProperty().add(property); + } } - } - - CmisObjectType object = new CmisObjectType(); - object.setProperties(properties); - if (includeAllowableActions) - { - object.setAllowableActions(determineObjectAllowableActions(identifier)); - } - if (null != includeRelationships) - { - appendWithRelationships(nodeRef, createPropertyFilter((String) null), includeRelationships, includeAllowableActions, renditionFilter, object); - } - if (renditionFilter != null) - { - List renditions = getRenditions(identifier, renditionFilter); - if (renditions != null && !renditions.isEmpty()) + + CmisObjectType object = new CmisObjectType(); + object.setProperties(properties); + if (includeAllowableActions) { - object.getRendition().addAll(renditions); + object.setAllowableActions(determineObjectAllowableActions(identifier)); } + if (null != includeRelationships) + { + appendWithRelationships(nodeRef, createPropertyFilter((String) null), includeRelationships, includeAllowableActions, renditionFilter, object); + } + if (renditionFilter != null) + { + List renditions = getRenditions(identifier, renditionFilter); + if (renditions != null && !renditions.isEmpty()) + { + object.getRendition().addAll(renditions); + } + } + response.getObjects().getObjects().add(object); + idx++; } - response.getObjects().getObjects().add(object); - idx++; + response.getObjects().setNumItems(BigInteger.valueOf(numItems)); + boolean hasMoreItems = (maxItems != -1 ? (numItems - (skipCount + maxItems)) > 0 : false) || resultSet.hasMore(); + response.getObjects().setHasMoreItems(hasMoreItems); + } + finally + { + if (resultSet != null) {resultSet.close();} } - response.getObjects().setNumItems(BigInteger.valueOf(numItems)); - boolean hasMoreItems = (maxItems != -1 ? (numItems - (skipCount + maxItems)) > 0 : false) || resultSet.hasMore(); - response.getObjects().setHasMoreItems(hasMoreItems); return response; } diff --git a/source/java/org/alfresco/repo/web/scripts/activities/feed/UserFeedRetrieverWebScript.java b/source/java/org/alfresco/repo/web/scripts/activities/feed/UserFeedRetrieverWebScript.java index 8da8b1e361..0b91f2ccdd 100644 --- a/source/java/org/alfresco/repo/web/scripts/activities/feed/UserFeedRetrieverWebScript.java +++ b/source/java/org/alfresco/repo/web/scripts/activities/feed/UserFeedRetrieverWebScript.java @@ -58,6 +58,8 @@ public class UserFeedRetrieverWebScript extends DeclarativeWebScript private ActivityService activityService; private SubscriptionService subscriptionService; + private boolean userNamesAreCaseSensitive = false; + public void setActivityService(ActivityService activityService) { this.activityService = activityService; @@ -66,8 +68,13 @@ public class UserFeedRetrieverWebScript extends DeclarativeWebScript public void setSubscriptionService(SubscriptionService subscriptionService) { this.subscriptionService = subscriptionService; - } + } + public void setUserNamesAreCaseSensitive(boolean userNamesAreCaseSensitive) + { + this.userNamesAreCaseSensitive = userNamesAreCaseSensitive; + } + /* (non-Javadoc) * @see org.alfresco.web.scripts.DeclarativeWebScript#executeImpl(org.alfresco.web.scripts.WebScriptRequest, org.alfresco.web.scripts.WebScriptResponse) */ @@ -122,7 +129,10 @@ public class UserFeedRetrieverWebScript extends DeclarativeWebScript PagingFollowingResults following = subscriptionService.getFollowing(AuthenticationUtil.getRunAsUser(), new PagingRequest(-1, null)); if (following.getPage() != null) { - userFilter.addAll(following.getPage()); + for (String userName : following.getPage()) + { + userFilter.add(this.userNamesAreCaseSensitive ? userName : userName.toLowerCase()); + } } } } diff --git a/source/java/org/alfresco/repo/web/scripts/invite/InviteServiceTest.java b/source/java/org/alfresco/repo/web/scripts/invite/InviteServiceTest.java index 378e188780..f6f7300304 100644 --- a/source/java/org/alfresco/repo/web/scripts/invite/InviteServiceTest.java +++ b/source/java/org/alfresco/repo/web/scripts/invite/InviteServiceTest.java @@ -29,8 +29,8 @@ import org.alfresco.repo.invitation.WorkflowModelNominatedInvitation; import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory; import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.security.authentication.MutableAuthenticationDao; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; +import org.alfresco.repo.security.authentication.MutableAuthenticationDao; import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; @@ -40,7 +40,6 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; import org.alfresco.service.cmr.security.AuthorityService; -import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.security.MutableAuthenticationService; import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.site.SiteInfo; @@ -303,7 +302,7 @@ public class InviteServiceTest extends BaseWebScriptTest // Set people = - personService.getPeopleFilteredByProperty(ContentModel.PROP_EMAIL, inviteeEmail); + personService.getPeopleFilteredByProperty(ContentModel.PROP_EMAIL, inviteeEmail, 1000); for (NodeRef person : people) { String userName = DefaultTypeConverter.INSTANCE.convert(String.class, @@ -336,35 +335,6 @@ public class InviteServiceTest extends BaseWebScriptTest }}); } - private void addUserToGroup(String groupName, String userName) - { - // get the full name for the group - String fullGroupName = this.authorityService.getName( - AuthorityType.GROUP, groupName); - - // create group if it does not exist - if (this.authorityService.authorityExists(fullGroupName) == false) - { - this.authorityService.createAuthority(AuthorityType.GROUP, fullGroupName); - } - - // add the user to the group - this.authorityService.addAuthority(fullGroupName, userName); - } - - private void removeUserFromGroup(String groupName, String userName) - { - // get the full name for the group - String fullGroupName = this.authorityService.getName( - AuthorityType.GROUP, groupName); - - // remove user from the group - this.authorityService.removeAuthority(fullGroupName, userName); - - // delete the group - this.authorityService.deleteAuthority(fullGroupName); - } - public static String PERSON_FIRSTNAME = "FirstName123"; public static String PERSON_LASTNAME = "LastName123"; public static String PERSON_JOBTITLE = "JobTitle123"; @@ -647,10 +617,8 @@ public class InviteServiceTest extends BaseWebScriptTest // - // test that invitation represented by invite ID (of invitation started - // above) - // is no longer pending (as a result of the invitation having being - // accepted) + // test that invitation represented by invite ID (of invitation started above) + // is no longer pending (as a result of the invitation having being accepted) // // get pending invite matching inviteId from invite started above (run as inviter user) @@ -678,10 +646,8 @@ public class InviteServiceTest extends BaseWebScriptTest rejectInvite(inviteId, inviteTicket, Status.STATUS_CONFLICT); // - // test that invite represented by invite ID (of invitation started - // above) - // is no longer pending (as a result of the invitation having being - // rejected) + // test that invite represented by invite ID (of invitation started above) + // is no longer pending (as a result of the invitation having being rejected) // // get pending invite matching inviteId from invite started above (run as inviter user) diff --git a/source/java/org/alfresco/repo/web/scripts/rendition/patch/PatchThumbnailsAsRenditionsGet.java b/source/java/org/alfresco/repo/web/scripts/rendition/patch/PatchThumbnailsAsRenditionsGet.java index c2b7adc876..590c8e5335 100644 --- a/source/java/org/alfresco/repo/web/scripts/rendition/patch/PatchThumbnailsAsRenditionsGet.java +++ b/source/java/org/alfresco/repo/web/scripts/rendition/patch/PatchThumbnailsAsRenditionsGet.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2010 Alfresco Software Limited. + * Copyright (C) 2005-2012 Alfresco Software Limited. * * This file is part of Alfresco * @@ -92,11 +92,18 @@ public class PatchThumbnailsAsRenditionsGet extends DeclarativeWebScript { logger.debug("Patching legacy thumbnails by applying appropriate rendition aspect"); } + List resultNodeRefs = null; + ResultSet types = null; - ResultSet types = searchService.query(SPACES_STORE, SearchService.LANGUAGE_LUCENE, QUERY); - - final List resultNodeRefs = types.getNodeRefs(); - types.close(); + try + { + types = searchService.query(SPACES_STORE, SearchService.LANGUAGE_LUCENE, QUERY); + resultNodeRefs = types.getNodeRefs(); + } + finally + { + if (types != null) {types.close();} + } long patchedNodeRefs = 0; diff --git a/source/java/org/alfresco/repo/web/scripts/solr/NodesGet.java b/source/java/org/alfresco/repo/web/scripts/solr/NodesGet.java index d96725b33e..4ae04be500 100644 --- a/source/java/org/alfresco/repo/web/scripts/solr/NodesGet.java +++ b/source/java/org/alfresco/repo/web/scripts/solr/NodesGet.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.Set; import org.alfresco.repo.domain.node.Node; +import org.alfresco.repo.domain.qname.QNameDAO; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.solr.NodeParameters; import org.alfresco.repo.solr.SOLRTrackingComponent; @@ -62,6 +63,8 @@ public class NodesGet extends DeclarativeWebScript private TenantService tenantService; + private QNameDAO qnameDAO; + public void setSolrTrackingComponent(SOLRTrackingComponent solrTrackingComponent) { this.solrTrackingComponent = solrTrackingComponent; @@ -70,8 +73,13 @@ public class NodesGet extends DeclarativeWebScript public void setTenantService(TenantService tenantService) { this.tenantService = tenantService; - } + } + public void setQnameDAO(QNameDAO qnameDAO) + { + this.qnameDAO = qnameDAO; + } + @Override protected Map executeImpl(WebScriptRequest req, Status status) { @@ -178,12 +186,12 @@ public class NodesGet extends DeclarativeWebScript nodeParameters.setMaxResults(maxResults); - WebNodeQueryCallback nodeQueryCallback = new WebNodeQueryCallback(maxResults, storeRef, tenantService); + WebNodeQueryCallback nodeQueryCallback = new WebNodeQueryCallback(maxResults, storeRef, tenantService, qnameDAO); solrTrackingComponent.getNodes(nodeParameters, nodeQueryCallback); Map model = new HashMap(1, 1.0f); - List nodes = nodeQueryCallback.getNodes(); + List nodes = nodeQueryCallback.getNodes(); model.put("nodes", nodes); if (logger.isDebugEnabled()) @@ -203,25 +211,64 @@ public class NodesGet extends DeclarativeWebScript } } + public static class NodeRecord + { + private final Long id; + private final Long txnId; + private final boolean isDeleted; + private final String nodeRef; + + public NodeRecord(Node node, QNameDAO qnameDAO) + { + this.id = node.getId(); + this.txnId = node.getTransaction().getId(); + this.isDeleted = node.getNodeStatus(qnameDAO).isDeleted(); + this.nodeRef = node.getNodeRef().toString(); + } + + public Long getId() + { + return id; + } + + public Long getTxnId() + { + return txnId; + } + + public boolean isDeleted() + { + return isDeleted; + } + + public String getNodeRef() + { + return nodeRef; + } + } + /** * Callback for DAO get nodes query */ private class WebNodeQueryCallback implements NodeQueryCallback { - private ArrayList nodes; + private ArrayList nodes; private StoreRef storeRef; private TenantService tenantService; - public WebNodeQueryCallback(int count, StoreRef storeRef, TenantService tenantService) + private QNameDAO qnameDAO; + + public WebNodeQueryCallback(int count, StoreRef storeRef, TenantService tenantService, QNameDAO qnameDAO) { super(); this.storeRef = storeRef; this.tenantService = tenantService; + this.qnameDAO = qnameDAO; - nodes = new ArrayList(count == 0 || count == Integer.MAX_VALUE ? 100 : count); + nodes = new ArrayList(count == 0 || count == Integer.MAX_VALUE ? 100 : count); } @Override @@ -234,19 +281,19 @@ public class NodesGet extends DeclarativeWebScript StoreRef baseStoreRef = new StoreRef(tenantStoreRef.getProtocol(), tenantService.getBaseName(tenantStoreRef.getIdentifier(), true)); if (storeRef.equals(baseStoreRef)) { - nodes.add(node); + nodes.add(new NodeRecord(node, qnameDAO)); } } else { - nodes.add(node); + nodes.add(new NodeRecord(node, qnameDAO)); } // continue - get next node return true; } - public List getNodes() + public List getNodes() { return nodes; }
${row.name}${row.name?html}
${row.properties.description}${row.properties.description?html}