diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/blogpost.lib.js b/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/blogpost.lib.js index 68d255f8d1..bb97754290 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/blogpost.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/blogpost.lib.js @@ -113,7 +113,7 @@ function getBlogPostData(node) */ function hasExternalBlogConfiguration(node) { - if (node === null) + if (node === null || !node.hasPermission("ReadProperties")) { return false; } diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/post/blog-post.delete_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/post/blog-post.delete_ru.properties index 365cc36500..c59af9e878 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/post/blog-post.delete_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/post/blog-post.delete_ru.properties @@ -1 +1 @@ -blog-post.msg.deleted=\u0411\u043b\u043e\u0433 {0} \u0443\u0434\u0430\u043b\u0435\u043d \ No newline at end of file +blog-post.msg.deleted=\u0411\u043B\u043E\u0433 {0} \u0443\u0434\u0430\u043B\u0435\u043D \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/discussions/posts/forum-post.delete_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/discussions/posts/forum-post.delete_ru.properties index f962fd9ec0..17d1965195 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/discussions/posts/forum-post.delete_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/discussions/posts/forum-post.delete_ru.properties @@ -1,2 +1,2 @@ -forum-post.msg.deleted=\u0423\u0437\u0435\u043b {0} \u0443\u0434\u0430\u043b\u0435\u043d -forum-post.msg.marked.removed=\u0423\u0437\u0435\u043b {0} \u043e\u0442\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \ No newline at end of file +forum-post.msg.deleted=\u0423\u0437\u0435\u043B {0} \u0443\u0434\u0430\u043B\u0435\u043D +forum-post.msg.marked.removed=\u0423\u0437\u0435\u043B {0} \u043E\u0442\u043C\u0435\u0447\u0435\u043D \u043A\u0430\u043A \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0439 \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links-delete.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links-delete.post_ru.properties index 9d0ba81ad7..d8f88ac260 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links-delete.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links-delete.post_ru.properties @@ -1,3 +1,3 @@ -links-delete.err.not.found=\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0441\u0441\u044b\u043b\u043e\u043a -links-delete.access.denied=\u041d\u0435\u0442 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c '{0}' -links-delete.msg.deleted=\u0423\u0437\u0435\u043b {0} \u0443\u0434\u0430\u043b\u0435\u043d \ No newline at end of file +links-delete.err.not.found=\u041D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0438\u043C\u0435\u043D\u0430 \u0441\u0441\u044B\u043B\u043E\u043A +links-delete.access.denied=\u041D\u0435\u0442 \u043F\u0440\u0430\u0432 \u043D\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438 \u0441 \u0438\u043C\u0435\u043D\u0435\u043C '{0}' +links-delete.msg.deleted=\u0423\u0437\u0435\u043B {0} \u0443\u0434\u0430\u043B\u0435\u043D \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.post_ru.properties index fdfefef72d..68585e201c 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.post_ru.properties @@ -1,2 +1,2 @@ -links.err.access.denied=\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 -links.err.not.found=\u0421\u0441\u044b\u043b\u043a\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \ No newline at end of file +links.err.access.denied=\u0423 \u0432\u0430\u0441 \u043D\u0435\u0442 \u043F\u0440\u0430\u0432 \u043D\u0430 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438 +links.err.not.found=\u0421\u0441\u044B\u043B\u043A\u0430 \u0441 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u0438\u043C\u0435\u043D\u0435\u043C \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430 \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.put_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.put_ru.properties index fdfefef72d..68585e201c 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.put_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.put_ru.properties @@ -1,2 +1,2 @@ -links.err.access.denied=\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 -links.err.not.found=\u0421\u0441\u044b\u043b\u043a\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \ No newline at end of file +links.err.access.denied=\u0423 \u0432\u0430\u0441 \u043D\u0435\u0442 \u043F\u0440\u0430\u0432 \u043D\u0430 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438 +links.err.not.found=\u0421\u0441\u044B\u043B\u043A\u0430 \u0441 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u0438\u043C\u0435\u043D\u0435\u043C \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430 \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/person/user-csv-upload.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/person/user-csv-upload.post_ru.properties index 6dd733fb92..d82c4b70a4 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/person/user-csv-upload.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/person/user-csv-upload.post_ru.properties @@ -1,11 +1,11 @@ # User CSV Upload Web Script I18N -person.err.userCSV.invalidForm=\u0414\u0430\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0430 \u043a\u0430\u043a \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u0430\u044f -person.err.userCSV.noFile=\u0424\u0430\u0439\u043b\u044b \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b -person.err.userCSV.corruptFile=\u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0431\u044b\u043b \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d \u0438\u043b\u0438 \u0443\u0441\u0435\u0447\u0435\u043d +person.err.userCSV.invalidForm=\u0414\u0430\u043D\u043D\u0430\u044F \u0444\u043E\u0440\u043C\u0430 \u043D\u0435 \u0431\u044B\u043B\u0430 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u0430 \u043A\u0430\u043A \u0441\u043E\u0441\u0442\u0430\u0432\u043D\u0430\u044F +person.err.userCSV.noFile=\u0424\u0430\u0439\u043B\u044B \u043D\u0435 \u0431\u044B\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u044B +person.err.userCSV.corruptFile=\u0414\u0430\u043D\u043D\u044B\u0439 \u0444\u0430\u0439\u043B \u0431\u044B\u043B \u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0435\u043D \u0438\u043B\u0438 \u0443\u0441\u0435\u0447\u0435\u043D -person.err.userCSV.general=\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 -person.err.userCSV.generalArgs=\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: {0} -person.err.userCSV.blankColumn=\u0421\u0442\u043e\u043b\u0431\u0435\u0446 {0} (\u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 {1}) \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442, \u043d\u043e \u0431\u044b\u043b \u043f\u0443\u0441\u0442\u044b\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 {2} +person.err.userCSV.general=\u041F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0432\u043E\u0437\u043D\u0438\u043A\u043B\u0430 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430 +person.err.userCSV.generalArgs=\u041F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0432\u043E\u0437\u043D\u0438\u043A\u043B\u0430 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430: {0} +person.err.userCSV.blankColumn=\u0421\u0442\u043E\u043B\u0431\u0435\u0446 {0} (\u043D\u043E\u043C\u0435\u0440 \u0441\u0442\u043E\u043B\u0431\u0446\u0430 {1}) \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C, \u043D\u043E \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0442\u0430\u043A\u043E\u0432\u044B\u043C \u0432 \u0441\u0442\u0440\u043E\u043A\u0435 {2} -person.msg.userCSV.created=\u0421\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f {0} +person.msg.userCSV.created=\u0421\u043E\u0437\u0434\u0430\u043D \u0434\u043B\u044F {0} person.msg.userCSV.existing=\u0423\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.delete.js b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.delete.js index f13f5148ca..d346d84761 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.delete.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.delete.js @@ -1,16 +1,47 @@ function main() { - // Try and get the person - var userid = url.templateArgs.userid; - var person = people.getPerson(userid); - if (person == null) - { - // 404 since person resource could not be found - status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + " could not be found"); - return; - } - - preferenceService.clearPreferences(userid, args["pf"]); + // Try and get the person + var userid = url.templateArgs.userid; + var person = people.getPerson(userid); + if (person == null) + { + // 404 since person resource could not be found + status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + + " could not be found"); + return; + } + + try + { + preferenceService.clearPreferences(userid, args["pf"]); + } + catch (error) + { + var msg = error.message; + + if (logger.isLoggingEnabled()) + { + logger.log(msg); + } + + // determine if the exception was UnauthorizedAccessException, if so + // return 401 status code + if (msg.indexOf("UnauthorizedAccessException") != -1) + { + status.setCode(status.STATUS_UNAUTHORIZED, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 401 status code"); + } + else + { + status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 500 status code"); + } + return; + } } main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js index b40c3b6b54..032b45fdd1 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js @@ -6,15 +6,47 @@ function main() if (person == null) { // 404 since person resource could not be found - status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + " could not be found"); + status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + + " could not be found"); + return; + } + + var preferences = null; + try + { + // Get the preferences for the person + var preferences = preferenceService.getPreferences(userid, args["pf"]); + + // Convert the preferences to JSON and place in the model + model.preferences = jsonUtils.toJSONString(preferences); + } + catch (error) + { + var msg = error.message; + + if (logger.isLoggingEnabled()) + { + logger.log(msg); + } + + // determine if the exception was UnauthorizedAccessException, if so + // return 401 status code + if (msg.indexOf("UnauthorizedAccessException") != -1) + { + status.setCode(status.STATUS_UNAUTHORIZED, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 401 status code"); + } + else + { + status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 500 status code"); + } return; } - - // Get the preferences for the person - var preferences = preferenceService.getPreferences(userid, args["pf"]); - - // Convert the preferences to JSON and place in the model - model.preferences = jsonUtils.toJSONString(preferences); } main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.post.json.js b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.post.json.js index aea97e76c8..fdc5eb331c 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.post.json.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.post.json.js @@ -1,20 +1,51 @@ function main() { - // Try and get the person - var userid = url.templateArgs.userid; - var person = people.getPerson(userid); - if (person == null) - { - // 404 since person resource could not be found - status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + " could not be found"); - return; - } - - // Convert the passed json into a native JS object - var preferences = jsonUtils.toObject(json); - - // Set the preferences - preferenceService.setPreferences(userid, preferences); + // Try and get the person + var userid = url.templateArgs.userid; + var person = people.getPerson(userid); + if (person == null) + { + // 404 since person resource could not be found + status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + + " could not be found"); + return; + } + + // Convert the passed json into a native JS object + var preferences = jsonUtils.toObject(json); + + try + { + // Set the preferences + preferenceService.setPreferences(userid, preferences); + } + catch (error) + { + var msg = error.message; + + if (logger.isLoggingEnabled()) + { + logger.log(msg); + } + + // determine if the exception was UnauthorizedAccessException, if so + // return 401 status code + if (msg.indexOf("UnauthorizedAccessException") != -1) + { + status.setCode(status.STATUS_UNAUTHORIZED, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 401 status code"); + } + else + { + status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 500 status code"); + } + return; + } } main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/publishing/authform.get_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/publishing/authform.get_ru.properties index c01106c14b..cc8da5f396 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/publishing/authform.get_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/publishing/authform.get_ru.properties @@ -1,6 +1,6 @@ -authForm.title=Alfresco » \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 -authForm.heading=\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043a\u0430\u043d\u0430\u043b\u043e\u0432 -authForm.directions=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0432\u043e\u0438 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f {0} -authForm.user=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f: -authForm.password=\u041f\u0430\u0440\u043e\u043b\u044c: -authForm.login=\u0412\u043e\u0439\u0442\u0438 +authForm.title=Alfresco » \u0421\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E\u0431 \u0430\u0443\u0442\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u043A\u0430\u043D\u0430\u043B\u043E\u0432 +authForm.heading=\u0410\u0443\u0442\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u043A\u0430\u043D\u0430\u043B\u043E\u0432 +authForm.directions=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0432\u043E\u0438 \u0438\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u0434\u043B\u044F {0} +authForm.user=\u0418\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F: +authForm.password=\u041F\u0430\u0440\u043E\u043B\u044C: +authForm.login=\u0412\u043E\u0439\u0442\u0438 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 index 836c71d9cb..d3d8573d51 100755 --- 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 @@ -1,2 +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 +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 index 69e50ebc30..e832215029 100755 --- 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 @@ -1,2 +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 +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 index 69e50ebc30..e832215029 100755 --- 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 @@ -1,2 +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 +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/documentlibrary-v2/parse-args.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary-v2/parse-args.lib.js index bda1f32c85..108342a019 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary-v2/parse-args.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary-v2/parse-args.lib.js @@ -89,62 +89,69 @@ var Common = */ getLocation: function Common_getLocation(node, libraryRoot) { - var location = null, - qnamePaths = node.qnamePath.split("/"), - displayPaths = node.displayPath.split("/"); - - if (libraryRoot == undefined && qnamePaths[2] != TYPE_SITES) + try { - libraryRoot = companyhome; - } + var location = null, + qnamePaths = node.qnamePath.split("/"), + displayPaths = node.displayPath.split("/"); - if (libraryRoot) - { - // Generate the path from the supplied library root - location = + if (libraryRoot == undefined && qnamePaths[2] != TYPE_SITES) { - site: null, - container: null, - path: "/" + displayPaths.slice(libraryRoot.displayPath.split("/").length + 1, displayPaths.length).join("/"), - file: node.name - }; - } - else if ((qnamePaths.length > 4) && (qnamePaths[2] == TYPE_SITES)) - { - var siteId = displayPaths[3], - siteNode = Common.getSite(siteId), - containerId = qnamePaths[4].substr(3); + libraryRoot = companyhome; + } - if (siteNode != null) + if (libraryRoot) { - var containerNode = siteNode.getContainer(containerId); - location = + // Generate the path from the supplied library root + location = { - site: siteId, - siteNode: siteNode, - siteTitle: siteNode.title, - sitePreset: siteNode.sitePreset, - container: containerId, - containerNode: containerNode, - containerType: containerNode.typeShort, - path: "/" + displayPaths.slice(5, displayPaths.length).join("/"), + site: null, + container: null, + path: "/" + displayPaths.slice(libraryRoot.displayPath.split("/").length + 1, displayPaths.length).join("/"), file: node.name }; } - } - - if (location == null) - { - location = + else if ((qnamePaths.length > 4) && (qnamePaths[2] == TYPE_SITES)) { - site: null, - container: null, - path: "/" + displayPaths.slice(2, displayPaths.length).join("/"), - file: node.name - }; + var siteId = displayPaths[3], + siteNode = Common.getSite(siteId), + containerId = qnamePaths[4].substr(3); + + if (siteNode != null) + { + var containerNode = siteNode.getContainer(containerId); + location = + { + site: siteId, + siteNode: siteNode, + siteTitle: siteNode.title, + sitePreset: siteNode.sitePreset, + container: containerId, + containerNode: containerNode, + containerType: containerNode.typeShort, + path: "/" + displayPaths.slice(5, displayPaths.length).join("/"), + file: node.name + }; + } + } + + if (location == null) + { + location = + { + site: null, + container: null, + path: "/" + displayPaths.slice(2, displayPaths.length).join("/"), + file: node.name + }; + } + + return location; + } + catch(e) + { + return null; } - - return location; }, /** @@ -275,6 +282,11 @@ var ParseArgs = // Parent location parameter adjustment location = Common.getLocation(pathNode, libraryRoot); + if (location === null) + { + status.setCode(status.STATUS_GONE, "Location is 'null'. (No permission?)"); + return null; + } if (path !== "") { location.path = ParseArgs.combinePaths(location.path, location.file); diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js index 4fddba9ffd..d3d32f40cc 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js @@ -29,7 +29,7 @@ function runAction(p_params) var workingCopy = assetNode.checkout(); if (workingCopy === null) { - status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, "Could not checkout: " + p_params.path); + status.setCode(status.STATUS_FORBIDDEN, "Could not checkout: " + p_params.path); return; } 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 f3db17daf5..0080943544 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 @@ -1034,7 +1034,7 @@ function getQueryTemplate() template: "%(cm:name cm:title cm:description ia:whatEvent ia:descriptionEvent lnk:title lnk:description TEXT TAG)" }], qt = new XML(config.script)["default-query-template"]; - if (qt != null && qt.length != 0) + if (qt != null && qt.length() != 0) { t[0].template = qt.toString(); } 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 25a10f292c..7987a39ea3 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,3 +1,2 @@ -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 -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 +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 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 index 78346f663f..f514ab997e 100755 --- 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 @@ -1 +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 +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/source/java/org/alfresco/repo/web/scripts/activities/SiteActivitySystemTest.java b/source/java/org/alfresco/repo/web/scripts/activities/SiteActivitySystemTest.java index 0e64750a66..35843c934e 100644 --- a/source/java/org/alfresco/repo/web/scripts/activities/SiteActivitySystemTest.java +++ b/source/java/org/alfresco/repo/web/scripts/activities/SiteActivitySystemTest.java @@ -568,8 +568,8 @@ public class SiteActivitySystemTest extends TestCase getUserFeed(null, site3, ticket, false, false, false, 6); getUserFeed(null, null, ticket, false, false, false, 14); // no filter - getUserFeed(null, null, ticket, false, true, false, 14); // exclude any from user1 - getUserFeed(null, null, ticket, false, false, true, 0); // exclude all except user1 + getUserFeed(null, null, ticket, false, true, false, 12); // exclude any from user1 + getUserFeed(null, null, ticket, false, false, true, 2); // exclude all except user1 getUserFeed(null, null, ticket, false, true, true, 0); // exclude all (NOOP) // TODO - add more (eg. other non-admin user activities) diff --git a/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java b/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java index 4b4332dd5d..c27f97f1f7 100644 --- a/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java +++ b/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java @@ -67,6 +67,9 @@ public abstract class AbstractCalendarListingWebScript extends AbstractCalendarW String startA = (String)resultA.get(RESULT_START); String startB = (String)resultB.get(RESULT_START); + startA = startA.replace("Z", "+00:00"); + startB = startB.replace("Z", "+00:00"); + //check and parse iso8601 date without time zone (All day events are stripped of time zone) DateTime sa = startA.length()>23?fmtTz.parseDateTime(startA):fmtNoTz.parseDateTime(startA); DateTime sb = startB.length()>23?fmtTz.parseDateTime(startB):fmtNoTz.parseDateTime(startB); diff --git a/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java b/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java index 87c6e649b5..7097a7104f 100644 --- a/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java +++ b/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java @@ -805,7 +805,7 @@ public class StreamContent extends AbstractWebScript implements ResourceLoaderAw if (logger.isDebugEnabled()) logger.debug("Attaching content using filename: " + attachFileName); - headerValue += "; filename*=UTF-8''" + WebDAVHelper.encodeURL(attachFileName) + "; filename=\"" + attachFileName + "\""; + headerValue += "; filename=\"" + attachFileName + "\"; filename*=UTF-8''" + WebDAVHelper.encodeURL(attachFileName); } // set header based on filename - will force a Save As from the browse if it doesn't recognize it diff --git a/source/java/org/alfresco/repo/webdav/GetMethod.java b/source/java/org/alfresco/repo/webdav/GetMethod.java index cb33888a8d..4ade2ff1b0 100644 --- a/source/java/org/alfresco/repo/webdav/GetMethod.java +++ b/source/java/org/alfresco/repo/webdav/GetMethod.java @@ -194,12 +194,17 @@ public class GetMethod extends WebDAVMethod } String fname = (String) getNodeService().getProperty(nodeInfo.getLinkNodeRef(), ContentModel.PROP_NAME); - String webDavUrl = m_request.getServerName() + ":" + m_request.getServerPort() + rootURL + WebDAVHelper.encodeURL(fname, m_userAgent); - - StringBuilder urlStr = new StringBuilder(); + StringBuilder urlStr = new StringBuilder(200); urlStr.append("[InternetShortcut]\r\n"); urlStr.append("URL=file://"); - urlStr.append(webDavUrl); + urlStr.append(m_request.getServerName()); + // Only append the port if it is non-default for compatibility with XP + int port = m_request.getServerPort(); + if (port != 80) + { + urlStr.append(":").append(port); + } + urlStr.append(rootURL).append(WebDAVHelper.encodeURL(fname, m_userAgent)); urlStr.append("\r\n"); m_response.setHeader(WebDAV.HEADER_CONTENT_TYPE, "text/plain; charset=ISO-8859-1"); diff --git a/source/java/org/alfresco/repo/webdav/WebDAVHelper.java b/source/java/org/alfresco/repo/webdav/WebDAVHelper.java index 784b03425c..03633532d2 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVHelper.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVHelper.java @@ -33,6 +33,7 @@ import javax.servlet.http.HttpServletResponse; import org.alfresco.jlan.util.IPAddress; import org.alfresco.model.ContentModel; +import org.alfresco.repo.lock.LockUtils; import org.alfresco.repo.tenant.TenantService; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.action.ActionService; @@ -960,4 +961,16 @@ public class WebDAVHelper return strPath; } + + /** + * Indicates if the node is unlocked or the current user has a WRITE_LOCK
+ * + * @see LockService#isLockedOrReadOnly(NodeRef) + * + * @param nodeRef the node reference + */ + public boolean isLockedOrReadOnly(final NodeRef nodeRef) + { + return LockUtils.isLockedOrReadOnly(nodeRef, m_serviceRegistry.getLockService()); + } } diff --git a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java index 5f27a02a74..de926a5bfd 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java @@ -64,8 +64,6 @@ import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.search.SearchService; import org.alfresco.service.cmr.security.AuthenticationService; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.service.cmr.site.SiteInfo; -import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.TempFileProvider; @@ -1006,52 +1004,24 @@ public abstract class WebDAVMethod protected LockInfo checkNode(FileInfo fileInfo, boolean ignoreShared, boolean lockMethod) throws WebDAVServerException { LockInfo nodeLockInfo = getNodeLockInfo(fileInfo); - nodeLockInfo.getRWLock().readLock().lock(); try { String nodeETag = getDAVHelper().makeQuotedETag(fileInfo); + NodeRef nodeRef = fileInfo.getNodeRef(); - + + // Handle the case where there are no conditions and no lock token stored on the node. Node just needs to be writable with no shared locks if (m_conditions == null) - { - if (!nodeLockInfo.isLocked()) + { + // ALF-3681 fix. WebDrive 10 client doesn't send If header when locked resource is updated so check the node by lockOwner. + if (!nodeLockInfo.isExclusive() || (m_userAgent != null && m_userAgent.equals(WebDAV.AGENT_MICROSOFT_DATA_ACCESS_INTERNET_PUBLISHING_PROVIDER_DAV))) { - // Not locked - return nodeLockInfo; - } - - if (nodeLockInfo.isShared()) - { - if (nodeLockInfo.getSharedLockTokens().isEmpty()) + if (getDAVHelper().isLockedOrReadOnly(nodeRef) || (!ignoreShared && nodeLockInfo.isShared() && !nodeLockInfo.getSharedLockTokens().isEmpty())) { - // Although flagged as shared - no shared locks. - return nodeLockInfo; - } - if (!ignoreShared) - { - // Shared locks exist throw new WebDAVServerException(WebDAV.WEBDAV_SC_LOCKED); } - } - else - { - // ALF-3681 fix. WebDrive 10 client doesn't send If header when locked resource is updated so check the node by lockOwner. - if (m_userAgent != null && m_userAgent.equals(WebDAV.AGENT_MICROSOFT_DATA_ACCESS_INTERNET_PUBLISHING_PROVIDER_DAV)) - { - String currentUser = getAuthenticationService().getCurrentUserName(); - String lockOwner = nodeLockInfo.getOwner(); - if (lockOwner.equals(currentUser)) - { - // OK to write - lock is owned by current user. - return nodeLockInfo; - } - else - { - // Exclusive lock, owned by someone else - throw new WebDAVServerException(WebDAV.WEBDAV_SC_LOCKED); - } - } + return nodeLockInfo; } }