From df009a5e273df85935ef07693bbcb55fefe50f1e Mon Sep 17 00:00:00 2001 From: Alexandru Epure Date: Thu, 22 Jun 2017 12:57:06 +0000 Subject: [PATCH] REPO-2520: Community: SiteMembership Java API calls should tell which site resulted in errors Changed tests asserts from (actual value, expected value) to (expected value, actual value) as recommended in the Junit Assert Javadoc. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137771 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../messages/bpm-messages_fr.properties | 2 +- .../messages/bpm-messages_it.properties | 2 +- .../messages/bpm-messages_ja.properties | 2 +- .../messages/bpm-messages_nb.properties | 2 +- .../messages/bpm-messages_pt_BR.properties | 2 +- .../messages/bpm-messages_ru.properties | 2 +- .../messages/bpm-messages_zh_CN.properties | 2 +- .../messages/quickshare-service_de.properties | 4 + .../messages/quickshare-service_es.properties | 4 + .../messages/quickshare-service_fr.properties | 4 + .../messages/quickshare-service_it.properties | 4 + .../messages/quickshare-service_ja.properties | 4 + .../messages/quickshare-service_nb.properties | 4 + .../messages/quickshare-service_nl.properties | 4 + .../quickshare-service_pt_BR.properties | 4 + .../messages/quickshare-service_ru.properties | 4 + .../quickshare-service_zh_CN.properties | 4 + .../reset-password-messages_de.properties | 15 + .../reset-password-messages_es.properties | 15 + .../reset-password-messages_fr.properties | 15 + .../reset-password-messages_it.properties | 15 + .../reset-password-messages_ja.properties | 15 + .../reset-password-messages_nb.properties | 15 + .../reset-password-messages_nl.properties | 15 + .../reset-password-messages_pt_BR.properties | 15 + .../reset-password-messages_ru.properties | 15 + .../reset-password-messages_zh_CN.properties | 15 + .../messages/templates-messages_de.properties | 6 + .../messages/templates-messages_es.properties | 6 + .../messages/templates-messages_fr.properties | 6 + .../messages/templates-messages_it.properties | 6 + .../messages/templates-messages_ja.properties | 6 + .../messages/templates-messages_nb.properties | 6 + .../messages/templates-messages_nl.properties | 6 + .../templates-messages_pt_BR.properties | 6 + .../messages/templates-messages_ru.properties | 6 + .../templates-messages_zh_CN.properties | 6 + .../workflow/workflow-messages_de.properties | 27 +- .../workflow/workflow-messages_es.properties | 27 +- .../workflow/workflow-messages_fr.properties | 27 +- .../workflow/workflow-messages_it.properties | 27 +- .../workflow/workflow-messages_ja.properties | 27 +- .../workflow/workflow-messages_nb.properties | 27 +- .../workflow/workflow-messages_nl.properties | 27 +- .../workflow-messages_pt_BR.properties | 27 +- .../workflow/workflow-messages_ru.properties | 27 +- .../workflow-messages_zh_CN.properties | 27 +- .../repo/forum/CommentServiceImpl.java | 31 +- .../alfresco/repo/site/SiteMembership.java | 270 +++++++++--------- .../org/alfresco/repo/forum/CommentsTest.java | 225 ++++++++++----- .../repo/site/SiteMembershipTest.java | 136 +++++++++ 51 files changed, 962 insertions(+), 234 deletions(-) create mode 100644 config/alfresco/messages/reset-password-messages_de.properties create mode 100644 config/alfresco/messages/reset-password-messages_es.properties create mode 100644 config/alfresco/messages/reset-password-messages_fr.properties create mode 100644 config/alfresco/messages/reset-password-messages_it.properties create mode 100644 config/alfresco/messages/reset-password-messages_ja.properties create mode 100644 config/alfresco/messages/reset-password-messages_nb.properties create mode 100644 config/alfresco/messages/reset-password-messages_nl.properties create mode 100644 config/alfresco/messages/reset-password-messages_pt_BR.properties create mode 100644 config/alfresco/messages/reset-password-messages_ru.properties create mode 100644 config/alfresco/messages/reset-password-messages_zh_CN.properties create mode 100644 source/test-java/org/alfresco/repo/site/SiteMembershipTest.java diff --git a/config/alfresco/messages/bpm-messages_fr.properties b/config/alfresco/messages/bpm-messages_fr.properties index 0cccbc10f1..884788a68b 100755 --- a/config/alfresco/messages/bpm-messages_fr.properties +++ b/config/alfresco/messages/bpm-messages_fr.properties @@ -86,6 +86,6 @@ listconstraint.bpm_allowedPriority.2=Moyenne listconstraint.bpm_allowedPriority.3=Basse listconstraint.bpm_allowedStatus.Not\ Yet\ Started=Pas encore d\u00e9marr\u00e9 listconstraint.bpm_allowedStatus.In\ Progress=En cours -listconstraint.bpm_allowedStatus.On\ Hold= Suspendu +listconstraint.bpm_allowedStatus.On\ Hold=Suspendu listconstraint.bpm_allowedStatus.Cancelled=Annul\u00e9 listconstraint.bpm_allowedStatus.Completed=Termin\u00e9 diff --git a/config/alfresco/messages/bpm-messages_it.properties b/config/alfresco/messages/bpm-messages_it.properties index e6e0486d95..28e08b123c 100755 --- a/config/alfresco/messages/bpm-messages_it.properties +++ b/config/alfresco/messages/bpm-messages_it.properties @@ -86,6 +86,6 @@ listconstraint.bpm_allowedPriority.2=Media listconstraint.bpm_allowedPriority.3=Bassa listconstraint.bpm_allowedStatus.Not\ Yet\ Started=Non ancora avviato listconstraint.bpm_allowedStatus.In\ Progress=In corso -listconstraint.bpm_allowedStatus.On\ Hold= In attesa +listconstraint.bpm_allowedStatus.On\ Hold=In attesa listconstraint.bpm_allowedStatus.Cancelled=Annullato listconstraint.bpm_allowedStatus.Completed=Completato diff --git a/config/alfresco/messages/bpm-messages_ja.properties b/config/alfresco/messages/bpm-messages_ja.properties index 24d8fc2bcf..f1204af436 100755 --- a/config/alfresco/messages/bpm-messages_ja.properties +++ b/config/alfresco/messages/bpm-messages_ja.properties @@ -86,6 +86,6 @@ listconstraint.bpm_allowedPriority.2=\u4e2d listconstraint.bpm_allowedPriority.3=\u4f4e listconstraint.bpm_allowedStatus.Not\ Yet\ Started=\u958b\u59cb\u524d listconstraint.bpm_allowedStatus.In\ Progress=\u9032\u884c\u4e2d -listconstraint.bpm_allowedStatus.On\ Hold= \u4fdd\u7559\u4e2d +listconstraint.bpm_allowedStatus.On\ Hold=\u4fdd\u7559\u4e2d listconstraint.bpm_allowedStatus.Cancelled=\u30ad\u30e3\u30f3\u30bb\u30eb\u6e08\u307f listconstraint.bpm_allowedStatus.Completed=\u5b8c\u4e86\u6e08\u307f diff --git a/config/alfresco/messages/bpm-messages_nb.properties b/config/alfresco/messages/bpm-messages_nb.properties index c3ffec4ea7..d6da74a7eb 100755 --- a/config/alfresco/messages/bpm-messages_nb.properties +++ b/config/alfresco/messages/bpm-messages_nb.properties @@ -86,6 +86,6 @@ listconstraint.bpm_allowedPriority.2=Middels listconstraint.bpm_allowedPriority.3=Lav listconstraint.bpm_allowedStatus.Not\ Yet\ Started=Enn\u00e5 ikke startet listconstraint.bpm_allowedStatus.In\ Progress=P\u00e5g\u00e5r -listconstraint.bpm_allowedStatus.On\ Hold= P\u00e5 vent +listconstraint.bpm_allowedStatus.On\ Hold=P\u00e5 vent listconstraint.bpm_allowedStatus.Cancelled=Avbrutt listconstraint.bpm_allowedStatus.Completed=Fullf\u00f8rt diff --git a/config/alfresco/messages/bpm-messages_pt_BR.properties b/config/alfresco/messages/bpm-messages_pt_BR.properties index e37c25a908..fbca26e6c2 100644 --- a/config/alfresco/messages/bpm-messages_pt_BR.properties +++ b/config/alfresco/messages/bpm-messages_pt_BR.properties @@ -86,6 +86,6 @@ listconstraint.bpm_allowedPriority.2=M\u00e9dio listconstraint.bpm_allowedPriority.3=Baixo listconstraint.bpm_allowedStatus.Not\ Yet\ Started=Ainda n\u00e3o come\u00e7ou listconstraint.bpm_allowedStatus.In\ Progress=Em andamento -listconstraint.bpm_allowedStatus.On\ Hold= Em espera +listconstraint.bpm_allowedStatus.On\ Hold=Em espera listconstraint.bpm_allowedStatus.Cancelled=Cancelado listconstraint.bpm_allowedStatus.Completed=Conclu\u00eddo diff --git a/config/alfresco/messages/bpm-messages_ru.properties b/config/alfresco/messages/bpm-messages_ru.properties index c47fc65213..5b2ce84140 100755 --- a/config/alfresco/messages/bpm-messages_ru.properties +++ b/config/alfresco/messages/bpm-messages_ru.properties @@ -86,6 +86,6 @@ listconstraint.bpm_allowedPriority.2=\u0421\u0440\u0435\u0434\u043d\u0438\u0439 listconstraint.bpm_allowedPriority.3=\u041d\u0438\u0437\u043a\u0438\u0439 listconstraint.bpm_allowedStatus.Not\ Yet\ Started=\u0415\u0449\u0435 \u043d\u0435 \u043d\u0430\u0447\u0430\u0442\u043e listconstraint.bpm_allowedStatus.In\ Progress=\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 -listconstraint.bpm_allowedStatus.On\ Hold= \u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e +listconstraint.bpm_allowedStatus.On\ Hold=\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e listconstraint.bpm_allowedStatus.Cancelled=\u041e\u0442\u043c\u0435\u043d\u0435\u043d\u043e listconstraint.bpm_allowedStatus.Completed=\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e diff --git a/config/alfresco/messages/bpm-messages_zh_CN.properties b/config/alfresco/messages/bpm-messages_zh_CN.properties index 442dc19ff1..32b8fdfb33 100755 --- a/config/alfresco/messages/bpm-messages_zh_CN.properties +++ b/config/alfresco/messages/bpm-messages_zh_CN.properties @@ -86,6 +86,6 @@ listconstraint.bpm_allowedPriority.2=\u4e2d listconstraint.bpm_allowedPriority.3=\u4f4e listconstraint.bpm_allowedStatus.Not\ Yet\ Started=\u5c1a\u672a\u5f00\u59cb listconstraint.bpm_allowedStatus.In\ Progress=\u6b63\u5728\u8fdb\u884c -listconstraint.bpm_allowedStatus.On\ Hold= \u5df2\u6682\u505c +listconstraint.bpm_allowedStatus.On\ Hold=\u5df2\u6682\u505c listconstraint.bpm_allowedStatus.Cancelled=\u5df2\u53d6\u6d88 listconstraint.bpm_allowedStatus.Completed=\u5df2\u5b8c\u6210 diff --git a/config/alfresco/messages/quickshare-service_de.properties b/config/alfresco/messages/quickshare-service_de.properties index 6bc673b7ef..a668f36507 100644 --- a/config/alfresco/messages/quickshare-service_de.properties +++ b/config/alfresco/messages/quickshare-service_de.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} hat {2} f\u00fcr Sie freigegeben + +# email template +template.quickshare-email.ftl.title={0} f\u00fcr Sie freigegeben +template.quickshare-email.ftl.detail={0} {1} hat {3} f\u00fcr Sie freigegeben. diff --git a/config/alfresco/messages/quickshare-service_es.properties b/config/alfresco/messages/quickshare-service_es.properties index 69938a534e..1edb217ea1 100644 --- a/config/alfresco/messages/quickshare-service_es.properties +++ b/config/alfresco/messages/quickshare-service_es.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} ha compartido {2} con usted + +# email template +template.quickshare-email.ftl.title={0} compartido con usted +template.quickshare-email.ftl.detail={0} {1} ha compartido {3} con usted. diff --git a/config/alfresco/messages/quickshare-service_fr.properties b/config/alfresco/messages/quickshare-service_fr.properties index 7920eab999..b64b5d19b3 100644 --- a/config/alfresco/messages/quickshare-service_fr.properties +++ b/config/alfresco/messages/quickshare-service_fr.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} a partag\u00e9 {2} avec vous + +# email template +template.quickshare-email.ftl.title={0} partag\u00e9 avec vous +template.quickshare-email.ftl.detail={0} {1} a partag\u00e9 {3} avec vous. diff --git a/config/alfresco/messages/quickshare-service_it.properties b/config/alfresco/messages/quickshare-service_it.properties index e91ff7f55c..3d0157e043 100644 --- a/config/alfresco/messages/quickshare-service_it.properties +++ b/config/alfresco/messages/quickshare-service_it.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} ha condiviso {2} con te + +# email template +template.quickshare-email.ftl.title={0} condiviso con te +template.quickshare-email.ftl.detail={0} {1} ha condiviso {3} con te. diff --git a/config/alfresco/messages/quickshare-service_ja.properties b/config/alfresco/messages/quickshare-service_ja.properties index c600e6c466..af6bfd51ea 100644 --- a/config/alfresco/messages/quickshare-service_ja.properties +++ b/config/alfresco/messages/quickshare-service_ja.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} \u304c\u3042\u306a\u305f\u3068 {2} \u3092\u5171\u6709\u3057\u307e\u3057\u305f + +# email template +template.quickshare-email.ftl.title={0} \u304c\u3042\u306a\u305f\u3068\u5171\u6709\u3055\u308c\u307e\u3057\u305f +template.quickshare-email.ftl.detail={1} {0} \u304c {3} \u3092\u3042\u306a\u305f\u3068\u5171\u6709\u3057\u307e\u3057\u305f\u3002 diff --git a/config/alfresco/messages/quickshare-service_nb.properties b/config/alfresco/messages/quickshare-service_nb.properties index 25555bb097..4b1ebabafa 100644 --- a/config/alfresco/messages/quickshare-service_nb.properties +++ b/config/alfresco/messages/quickshare-service_nb.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} delte {2} med deg + +# email template +template.quickshare-email.ftl.title={0} delt med deg +template.quickshare-email.ftl.detail={0} {1} har delt {3} med deg. diff --git a/config/alfresco/messages/quickshare-service_nl.properties b/config/alfresco/messages/quickshare-service_nl.properties index 1523c53bcc..98e0ba388b 100644 --- a/config/alfresco/messages/quickshare-service_nl.properties +++ b/config/alfresco/messages/quickshare-service_nl.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} heeft {2} met u gedeeld + +# email template +template.quickshare-email.ftl.title={0} is met u gedeeld +template.quickshare-email.ftl.detail={0} {1} heeft {3} met u gedeeld. diff --git a/config/alfresco/messages/quickshare-service_pt_BR.properties b/config/alfresco/messages/quickshare-service_pt_BR.properties index 654a23dafc..1349fc3257 100644 --- a/config/alfresco/messages/quickshare-service_pt_BR.properties +++ b/config/alfresco/messages/quickshare-service_pt_BR.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} compartilhou {2} com voc\u00ea + +# email template +template.quickshare-email.ftl.title={0} compartilhado com voc\u00ea +template.quickshare-email.ftl.detail={0} {1} compartilhou {3} com voc\u00ea. diff --git a/config/alfresco/messages/quickshare-service_ru.properties b/config/alfresco/messages/quickshare-service_ru.properties index 6a235ee7f5..f486148be5 100644 --- a/config/alfresco/messages/quickshare-service_ru.properties +++ b/config/alfresco/messages/quickshare-service_ru.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0441\u044f {2} \u0441 \u0432\u0430\u043c\u0438 + +# email template +template.quickshare-email.ftl.title={0} \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 +template.quickshare-email.ftl.detail={0} {1} \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0441\u044f {3} \u0441 \u0432\u0430\u043c\u0438. diff --git a/config/alfresco/messages/quickshare-service_zh_CN.properties b/config/alfresco/messages/quickshare-service_zh_CN.properties index a312d7ff39..f5e2411885 100644 --- a/config/alfresco/messages/quickshare-service_zh_CN.properties +++ b/config/alfresco/messages/quickshare-service_zh_CN.properties @@ -1,2 +1,6 @@ # QuickShare Service quickshare.notifier.email.subject={0} {1} \u4e0e\u60a8\u5171\u4eab {2} + +# email template +template.quickshare-email.ftl.title=\u4e0e\u60a8\u5171\u4eab\u7684 {0} +template.quickshare-email.ftl.detail={0} {1} \u5df2\u4e0e\u60a8\u5171\u4eab {3}\u3002 diff --git a/config/alfresco/messages/reset-password-messages_de.properties b/config/alfresco/messages/reset-password-messages_de.properties new file mode 100644 index 0000000000..faafe31753 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_de.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=Passwort zur\u00fccksetzen +reset-password-confirmation.email.subject=Passwort erfolgreich zur\u00fcckgesetzt + +# Request reset password email +templates.reset-password-email.ftl.title=Passwort zur\u00fccksetzen +templates.reset-password-email.ftl.detail=Sie haben k\u00fcrzlich eine \u00c4nderung des Passworts f\u00fcr Ihr Benutzerkonto angefordert. +templates.reset-password-email.ftl.ignore_message=Wenn Sie ein Zur\u00fccksetzen Ihres Passworts nicht angefordert haben oder es nicht \u00e4ndern m\u00f6chten, dann k\u00f6nnen Sie diese Nachricht ignorieren und l\u00f6schen. Ihr Benutzerkonto bleibt dabei sicher. +templates.reset-password-email.ftl.having_trouble_clicking_button=Klicken Sie entweder auf 'Passwort zur\u00fccksetzen' oder kopieren Sie die folgende Adresse in Ihren Webbrowser: +templates.reset-password-email.ftl.reset_password_button=Passwort zur\u00fccksetzen + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=Passwort erfolgreich zur\u00fcckgesetzt +templates.reset-password-confirm-email.ftl.detail=Das Passwort f\u00fcr Ihr Alfresco-Konto wurde k\u00fcrzlich ge\u00e4ndert. +templates.reset-password-confirm-email.ftl.note=Wenn Sie ein Zur\u00fccksetzen Ihres Passworts nicht angefordert haben, wenden Sie sich bitte unverz\u00fcglich an Ihr IT-Team. diff --git a/config/alfresco/messages/reset-password-messages_es.properties b/config/alfresco/messages/reset-password-messages_es.properties new file mode 100644 index 0000000000..5cd90560b0 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_es.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=Restablezca su contrase\u00f1a +reset-password-confirmation.email.subject=Restablecimiento de contrase\u00f1a correcto + +# Request reset password email +templates.reset-password-email.ftl.title=Restablezca su contrase\u00f1a +templates.reset-password-email.ftl.detail=Recientemente solicit\u00f3 cambiar la contrase\u00f1a de su cuenta. +templates.reset-password-email.ftl.ignore_message=Si no solicit\u00f3 un restablecimiento de contrase\u00f1a o no desea cambiarla, puede ignorar y eliminar este mensaje. Su cuenta continuar\u00e1 siendo segura. +templates.reset-password-email.ftl.having_trouble_clicking_button=Haga clic en el bot\u00f3n Restablecer contrase\u00f1a o copie y pegue la direcci\u00f3n siguiente en su navegador web: +templates.reset-password-email.ftl.reset_password_button=Restablecer contrase\u00f1a + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=Restablecimiento de contrase\u00f1a correcto +templates.reset-password-confirm-email.ftl.detail=La contrase\u00f1a de su cuenta Alfresco se cambi\u00f3 recientemente. +templates.reset-password-confirm-email.ftl.note=Si no solicit\u00f3 un restablecimiento de contrase\u00f1a, p\u00f3ngase en contacto con el equipo de TI inmediatamente. diff --git a/config/alfresco/messages/reset-password-messages_fr.properties b/config/alfresco/messages/reset-password-messages_fr.properties new file mode 100644 index 0000000000..c9bc81f4e4 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_fr.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=R\u00e9initialiser votre mot de passe +reset-password-confirmation.email.subject=R\u00e9initialisation du mot de passe r\u00e9ussie + +# Request reset password email +templates.reset-password-email.ftl.title=R\u00e9initialiser votre mot de passe +templates.reset-password-email.ftl.detail=Nous avons re\u00e7u une demande de modification du mot de passe de votre compte. +templates.reset-password-email.ftl.ignore_message=Si vous n'avez pas fait de demande de r\u00e9initialisation du mot de passe ou si vous ne souhaitez pas le modifier, ignorez et supprimez ce message. Votre compte restera prot\u00e9g\u00e9. +templates.reset-password-email.ftl.having_trouble_clicking_button=Cliquez sur le bouton R\u00e9initialiser le mot de passe ou copiez-collez l'adresse suivante dans votre navigateur Web\u00a0: +templates.reset-password-email.ftl.reset_password_button=R\u00e9initialiser le mot de passe + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=R\u00e9initialisation du mot de passe r\u00e9ussie +templates.reset-password-confirm-email.ftl.detail=Le mot de passe de votre compte Alfresco a \u00e9t\u00e9 modifi\u00e9. +templates.reset-password-confirm-email.ftl.note=Si vous n'avez pas demand\u00e9 la r\u00e9initialisation de votre mot de passe, contactez au plus vite votre service informatique. diff --git a/config/alfresco/messages/reset-password-messages_it.properties b/config/alfresco/messages/reset-password-messages_it.properties new file mode 100644 index 0000000000..e96b7af8e3 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_it.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=Ripristina password +reset-password-confirmation.email.subject=Ripristino password eseguito correttamente + +# Request reset password email +templates.reset-password-email.ftl.title=Ripristina password +templates.reset-password-email.ftl.detail=Hai recentemente richiesto di modificare la password del tuo account. +templates.reset-password-email.ftl.ignore_message=Se non ha richiesto un ripristino della password o non desideri modificarla, puoi ignorare ed eliminare questo messaggio e il tuo account rimarr\u00e0 protetto. +templates.reset-password-email.ftl.having_trouble_clicking_button=Fai clic sul pulsante Ripristina password oppure copia e incolla l'indirizzo seguente nel tuo browser Web: +templates.reset-password-email.ftl.reset_password_button=Ripristina password + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=Ripristino password eseguito correttamente +templates.reset-password-confirm-email.ftl.detail=La password del tuo account Alfresco \u00e8 stata recentemente modificata. +templates.reset-password-confirm-email.ftl.note=Se non ha richiesto un ripristino della password, contatta immediatamente il team IT. diff --git a/config/alfresco/messages/reset-password-messages_ja.properties b/config/alfresco/messages/reset-password-messages_ja.properties new file mode 100644 index 0000000000..ae588d0d97 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_ja.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8 +reset-password-confirmation.email.subject=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3057\u305f + +# Request reset password email +templates.reset-password-email.ftl.title=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8 +templates.reset-password-email.ftl.detail=\u304a\u4f7f\u3044\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u66f4\u7533\u8acb\u3092\u53d7\u3051\u4ed8\u3051\u307e\u3057\u305f\u3002 +templates.reset-password-email.ftl.ignore_message=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u66f4\u3092\u7533\u8acb\u3057\u305f\u899a\u3048\u304c\u306a\u3044\u3001\u307e\u305f\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3057\u305f\u304f\u306a\u3044\u5834\u5408\u306f\u3001\u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u7121\u8996\u3057\u3001\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002 +templates.reset-password-email.ftl.having_trouble_clicking_button=[\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8] \u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u304b\u3001\u6b21\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u30b3\u30d4\u30fc\u3057\u3066\u304a\u4f7f\u3044\u306eWeb\u30d6\u30e9\u30a6\u30b6\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002 +templates.reset-password-email.ftl.reset_password_button=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8 + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3057\u305f +templates.reset-password-confirm-email.ftl.detail=\u304a\u4f7f\u3044\u306e Alfresco \u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u6700\u8fd1\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002 +templates.reset-password-confirm-email.ftl.note=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u3092\u7533\u8acb\u3057\u305f\u899a\u3048\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u81f3\u6025 IT \u62c5\u5f53\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002 diff --git a/config/alfresco/messages/reset-password-messages_nb.properties b/config/alfresco/messages/reset-password-messages_nb.properties new file mode 100644 index 0000000000..7c4e4a1319 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_nb.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=Tilbakestill ditt passord +reset-password-confirmation.email.subject=Passordet er n\u00e5 tilbakestilt + +# Request reset password email +templates.reset-password-email.ftl.title=Tilbakestill ditt passord +templates.reset-password-email.ftl.detail=Du har nylig bedt om \u00e5 f\u00e5 passordet til din konto endret. +templates.reset-password-email.ftl.ignore_message=Hvis du ikke ba om \u00e5 f\u00e5 passordet endret og du ikke vil endre det, kan du se bort fra denne meldingen, og din konto vil fortsatt v\u00e6re trygg. +templates.reset-password-email.ftl.having_trouble_clicking_button=Enten klikk p\u00e5 knappen Tilbakestill passord, eller kopier og lim inn f\u00f8lgende adresse i nettleseren din: +templates.reset-password-email.ftl.reset_password_button=Tilbakestill passord + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=Passordet er n\u00e5 tilbakestilt +templates.reset-password-confirm-email.ftl.detail=Passordet til din Alfresco-konto ble nylig endret. +templates.reset-password-confirm-email.ftl.note=Hvis du ikke ba om \u00e5 f\u00e5r et passord tilbakestilt. skal du kontakte ditt IT-team omg\u00e5ende. diff --git a/config/alfresco/messages/reset-password-messages_nl.properties b/config/alfresco/messages/reset-password-messages_nl.properties new file mode 100644 index 0000000000..de718588ac --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_nl.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=Uw wachtwoord opnieuw instellen +reset-password-confirmation.email.subject=Wachtwoord is opnieuw ingesteld + +# Request reset password email +templates.reset-password-email.ftl.title=Uw wachtwoord opnieuw instellen +templates.reset-password-email.ftl.detail=U hebt onlangs een aanvraag ingediend voor het wijzigen van het wachtwoord voor uw account. +templates.reset-password-email.ftl.ignore_message=Als u geen aanvraag voor het opnieuw instellen van uw wachtwoord hebt ingediend of u wilt uw wachtwoord niet wijzigen, kunt u dit bericht negeren en verwijderen. Uw account blijft veilig. +templates.reset-password-email.ftl.having_trouble_clicking_button=Klik op de knop Wachtwoord opnieuw instellen of kopieer het volgende adres en plak het in uw webbrowser: +templates.reset-password-email.ftl.reset_password_button=Wachtwoord opnieuw instellen + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=Wachtwoord is opnieuw ingesteld +templates.reset-password-confirm-email.ftl.detail=Het wachtwoord voor uw Alfresco-account is onlangs gewijzigd. +templates.reset-password-confirm-email.ftl.note=Neem direct contact op met uw IT-team als u geen wijziging van uw wachtwoord hebt aangevraagd. diff --git a/config/alfresco/messages/reset-password-messages_pt_BR.properties b/config/alfresco/messages/reset-password-messages_pt_BR.properties new file mode 100644 index 0000000000..3dab47f5e2 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_pt_BR.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=Redefinir senha +reset-password-confirmation.email.subject=Senha redefinida com sucesso + +# Request reset password email +templates.reset-password-email.ftl.title=Redefinir senha +templates.reset-password-email.ftl.detail=Recentemente voc\u00ea solicitou a altera\u00e7\u00e3o da senha da sua conta. +templates.reset-password-email.ftl.ignore_message=Se voc\u00ea n\u00e3o solicitou a redefini\u00e7\u00e3o da senha ou se n\u00e3o deseja alter\u00e1-la, ignore e exclua esta mensagem. Sua conta continuar\u00e1 segura. +templates.reset-password-email.ftl.having_trouble_clicking_button=Clique no bot\u00e3o Redefinir senha ou copie e cole o endere\u00e7o a seguir no navegador da web: +templates.reset-password-email.ftl.reset_password_button=Redefinir senha + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=Senha redefinida com sucesso +templates.reset-password-confirm-email.ftl.detail=A senha da sua conta Alfresco foi alterada recentemente. +templates.reset-password-confirm-email.ftl.note=Se voc\u00ea n\u00e3o solicitou a redefini\u00e7\u00e3o da senha, entre em contato com a Equipe de TI imediatamente. diff --git a/config/alfresco/messages/reset-password-messages_ru.properties b/config/alfresco/messages/reset-password-messages_ru.properties new file mode 100644 index 0000000000..1acae9f2e3 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_ru.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c +reset-password-confirmation.email.subject=\u041f\u0430\u0440\u043e\u043b\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0431\u0440\u043e\u0448\u0435\u043d + +# Request reset password email +templates.reset-password-email.ftl.title=\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c +templates.reset-password-email.ftl.detail=\u0412\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f \u0441\u0432\u043e\u0435\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. +templates.reset-password-email.ftl.ignore_message=\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u0438 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f \u0438\u043b\u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0448\u0430 \u0443\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0439. +templates.reset-password-email.ftl.having_trouble_clicking_button=\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 "\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f" \u0438\u043b\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0430\u0434\u0440\u0435\u0441\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430: +templates.reset-password-email.ftl.reset_password_button=\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=\u041f\u0430\u0440\u043e\u043b\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0431\u0440\u043e\u0448\u0435\u043d +templates.reset-password-confirm-email.ftl.detail=\u041f\u0430\u0440\u043e\u043b\u044c \u043a \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Alfresco \u043d\u0430\u0434\u0432\u0430\u043d\u043e \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d. +templates.reset-password-confirm-email.ftl.note=\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u0438 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f, \u043d\u0435\u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u0432 \u0441\u0432\u043e\u044e \u0418\u0422-\u0441\u043b\u0443\u0436\u0431\u0443. diff --git a/config/alfresco/messages/reset-password-messages_zh_CN.properties b/config/alfresco/messages/reset-password-messages_zh_CN.properties new file mode 100644 index 0000000000..6101dd4624 --- /dev/null +++ b/config/alfresco/messages/reset-password-messages_zh_CN.properties @@ -0,0 +1,15 @@ +# Email subjects. +reset-password-request.email.subject=\u91cd\u7f6e\u60a8\u7684\u5bc6\u7801 +reset-password-confirmation.email.subject=\u5bc6\u7801\u91cd\u7f6e\u6210\u529f + +# Request reset password email +templates.reset-password-email.ftl.title=\u91cd\u7f6e\u60a8\u7684\u5bc6\u7801 +templates.reset-password-email.ftl.detail=\u60a8\u6700\u8fd1\u8bf7\u6c42\u66f4\u6539\u5e10\u6237\u7684\u5bc6\u7801\u3002 +templates.reset-password-email.ftl.ignore_message=\u5982\u679c\u60a8\u6ca1\u6709\u8bf7\u6c42\u5bc6\u7801\u91cd\u7f6e\u6216\u4e0d\u5e0c\u671b\u66f4\u6539\u5b83\uff0c\u60a8\u53ef\u4ee5\u5ffd\u7565\u6216\u5220\u9664\u6b64\u4fe1\u606f\uff0c\u5e76\u4e14\u60a8\u7684\u5e10\u6237\u5c06\u4fdd\u6301\u5b89\u5168\u3002 +templates.reset-password-email.ftl.having_trouble_clicking_button=\u5355\u51fb\u201c\u91cd\u7f6e\u5bc6\u7801\u201d\u6309\u94ae\uff0c\u6216\u590d\u5236\u7c98\u8d34\u4ee5\u4e0b\u5730\u5740\u5230\u7f51\u7edc\u6d4f\u89c8\u5668\uff1a +templates.reset-password-email.ftl.reset_password_button=\u91cd\u7f6e\u5bc6\u7801 + +# Reset password confirmation email +templates.reset-password-confirm-email.ftl.title=\u5bc6\u7801\u91cd\u7f6e\u6210\u529f +templates.reset-password-confirm-email.ftl.detail=\u60a8\u7684 Alfresco \u5e10\u6237\u7684\u5bc6\u7801\u6700\u8fd1\u5df2\u66f4\u6539\u3002 +templates.reset-password-confirm-email.ftl.note=\u5982\u679c\u60a8\u6ca1\u6709\u8bf7\u6c42\u5bc6\u7801\u91cd\u7f6e\uff0c\u8bf7\u7acb\u5373\u8054\u7cfb\u60a8\u7684 IT \u56e2\u961f\u3002 diff --git a/config/alfresco/messages/templates-messages_de.properties b/config/alfresco/messages/templates-messages_de.properties index 0abf508bf7..46c79918f1 100755 --- a/config/alfresco/messages/templates-messages_de.properties +++ b/config/alfresco/messages/templates-messages_de.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} m\u00f6chte der Site ''{1}'' auf templates.invite-email-moderated.html.see_pending=Siehe ausstehende Anfragen templates.invite-email.html.salutation_generic=Hallo, + +# common for most email templates +templates.generic-email.ftl.salutation=Hallo {0}, +templates.generic-email.ftl.copy_right=Alle Rechte vorbehalten. +templates.generic-email.ftl.contact_us=Kontakt + diff --git a/config/alfresco/messages/templates-messages_es.properties b/config/alfresco/messages/templates-messages_es.properties index a002d6b8f6..9aaff407aa 100755 --- a/config/alfresco/messages/templates-messages_es.properties +++ b/config/alfresco/messages/templates-messages_es.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} solicit\u00f3 unirse al sitio ''{ templates.invite-email-moderated.html.see_pending=Ver solicitudes pendientes templates.invite-email.html.salutation_generic=Hola: + +# common for most email templates +templates.generic-email.ftl.salutation=Hola {0}, +templates.generic-email.ftl.copy_right=Todos los derechos reservados. +templates.generic-email.ftl.contact_us=P\u00f3ngase en contacto con nosotros + diff --git a/config/alfresco/messages/templates-messages_fr.properties b/config/alfresco/messages/templates-messages_fr.properties index e082ea8643..b045f206a2 100755 --- a/config/alfresco/messages/templates-messages_fr.properties +++ b/config/alfresco/messages/templates-messages_fr.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} a demand\u00e9 \u00e0 rejoindre l templates.invite-email-moderated.html.see_pending=Consultez le document relatif aux requ\u00eates en attente templates.invite-email.html.salutation_generic=Bonjour, + +# common for most email templates +templates.generic-email.ftl.salutation=Cher/Ch\u00e8re {0}, +templates.generic-email.ftl.copy_right=Tous droits r\u00e9serv\u00e9s. +templates.generic-email.ftl.contact_us=Contactez-nous + diff --git a/config/alfresco/messages/templates-messages_it.properties b/config/alfresco/messages/templates-messages_it.properties index 3a46ce4e22..f3a9030a59 100755 --- a/config/alfresco/messages/templates-messages_it.properties +++ b/config/alfresco/messages/templates-messages_it.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} ha richiesto di aderire al sito ' templates.invite-email-moderated.html.see_pending=Visualizza Richieste in sospeso templates.invite-email.html.salutation_generic=Salve, + +# common for most email templates +templates.generic-email.ftl.salutation=Salve {0}, +templates.generic-email.ftl.copy_right=Tutti i diritti riservati. +templates.generic-email.ftl.contact_us=Contattaci + diff --git a/config/alfresco/messages/templates-messages_ja.properties b/config/alfresco/messages/templates-messages_ja.properties index 8e15aab047..323beffd95 100755 --- a/config/alfresco/messages/templates-messages_ja.properties +++ b/config/alfresco/messages/templates-messages_ja.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} \u304c {2}''\u4e0a\u306e''''{1}'' templates.invite-email-moderated.html.see_pending=\u4fdd\u7559\u4e2d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u898b\u308b templates.invite-email.html.salutation_generic=\u7686\u69d8\u3001 + +# common for most email templates +templates.generic-email.ftl.salutation={0} \u3055\u3093 +templates.generic-email.ftl.copy_right=All Rights Reserved. +templates.generic-email.ftl.contact_us=\u9023\u7d61\u5148 + diff --git a/config/alfresco/messages/templates-messages_nb.properties b/config/alfresco/messages/templates-messages_nb.properties index 929001d410..b0afcb5494 100755 --- a/config/alfresco/messages/templates-messages_nb.properties +++ b/config/alfresco/messages/templates-messages_nb.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} ba om \u00e5 bli med p\u00e5 omr\ templates.invite-email-moderated.html.see_pending=Se foresp\u00f8rsler som venter p\u00e5 svar templates.invite-email.html.salutation_generic=Hei, + +# common for most email templates +templates.generic-email.ftl.salutation=Hei {0}, +templates.generic-email.ftl.copy_right=Med enerett. +templates.generic-email.ftl.contact_us=Kontakt oss + diff --git a/config/alfresco/messages/templates-messages_nl.properties b/config/alfresco/messages/templates-messages_nl.properties index cbe1ad0262..3a6552cc50 100755 --- a/config/alfresco/messages/templates-messages_nl.properties +++ b/config/alfresco/messages/templates-messages_nl.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} heeft aangevraagd lid te worden v templates.invite-email-moderated.html.see_pending=Openstaande aanvragen bekijken templates.invite-email.html.salutation_generic=Hallo, + +# common for most email templates +templates.generic-email.ftl.salutation=Beste {0}, +templates.generic-email.ftl.copy_right=Alle rechten voorbehouden. +templates.generic-email.ftl.contact_us=Neem contact op + diff --git a/config/alfresco/messages/templates-messages_pt_BR.properties b/config/alfresco/messages/templates-messages_pt_BR.properties index 8aebc60dba..f2020bb99a 100644 --- a/config/alfresco/messages/templates-messages_pt_BR.properties +++ b/config/alfresco/messages/templates-messages_pt_BR.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} solicitou ingresso no site ''{1}' templates.invite-email-moderated.html.see_pending=Ver solicita\u00e7\u00f5es pendentes templates.invite-email.html.salutation_generic=Ol\u00e1, + +# common for most email templates +templates.generic-email.ftl.salutation=Oi {0}, +templates.generic-email.ftl.copy_right=Todos os direitos reservados. +templates.generic-email.ftl.contact_us=Entre em contato conosco + diff --git a/config/alfresco/messages/templates-messages_ru.properties b/config/alfresco/messages/templates-messages_ru.properties index 39c7595e62..ca45023539 100755 --- a/config/alfresco/messages/templates-messages_ru.properties +++ b/config/alfresco/messages/templates-messages_ru.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} \u0437\u0430\u043f\u0440\u043e\u0 templates.invite-email-moderated.html.see_pending=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 templates.invite-email.html.salutation_generic=\u041f\u0440\u0438\u0432\u0435\u0442, + +# common for most email templates +templates.generic-email.ftl.salutation=\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, {0}, +templates.generic-email.ftl.copy_right=\u0412\u0441\u0435 \u043f\u0440\u0430\u0432\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b. +templates.generic-email.ftl.contact_us=\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b + diff --git a/config/alfresco/messages/templates-messages_zh_CN.properties b/config/alfresco/messages/templates-messages_zh_CN.properties index 4a7c9d1ebf..bdc626b804 100755 --- a/config/alfresco/messages/templates-messages_zh_CN.properties +++ b/config/alfresco/messages/templates-messages_zh_CN.properties @@ -91,3 +91,9 @@ templates.invite-email-moderated.html.info={0} \u8bf7\u6c42\u52a0\u5165 {2} ''{1 templates.invite-email-moderated.html.see_pending=\u53c2\u89c1\u5f85\u51b3\u8bf7\u6c42 templates.invite-email.html.salutation_generic=\u60a8\u597d\uff0c + +# common for most email templates +templates.generic-email.ftl.salutation=\u60a8\u597d {0}\uff0c, +templates.generic-email.ftl.copy_right=\u4fdd\u7559\u6240\u6709\u6743\u5229\u3002 +templates.generic-email.ftl.contact_us=\u8054\u7cfb\u6211\u4eec + diff --git a/config/alfresco/workflow/workflow-messages_de.properties b/config/alfresco/workflow/workflow-messages_de.properties index 7dff61d385..6776eedd42 100755 --- a/config/alfresco/workflow/workflow-messages_de.properties +++ b/config/alfresco/workflow/workflow-messages_de.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=Activiti Prozess zum ver\u00f6ffentlichen von W publishWebContent.workflow.description=Ver\u00f6ffentlichen von Web Content mit der Activiti Workflow Engine ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=Dokumente zwecks Genehmi wf_workflowmodel.property.wf_reviewOutcome.title=\u00dcberpr\u00fcfungsergebnis wf_workflowmodel.property.wf_reviewOutcome.description=Dem Inhalt genehmigen oder ablehnen +activitiReview.task.wf_submitReviewTask.title=\u00dcberpr\u00fcfung starten +activitiReview.task.wf_submitReviewTask.description=Dokumente zur \u00dcberpr\u00fcfung und Genehmigung vorlegen +activitiReview.task.wf_rejectedTask.title=Abgelehnt +activitiReview.task.wf_rejectedTask.description=Abgelehnt +activitiReview.task.wf_approvedTask.title=Genehmigt +activitiReview.task.wf_approvedTask.description=Genehmigt +activitiReview.task.wf_activitiReviewTask.title=\u00dcberpr\u00fcfen +activitiReview.task.wf_activitiReviewTask.description=Dokumente zur \u00dcberpr\u00fcfung und Zustimmung + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=Dokument(e) zur \u00dcberpr\u00fcfung senden @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=Dokumentenge activitiParallelReview.property.wf_requiredApprovePercent.title=Erforderlicher Prozentsatz Genehmigung activitiParallelReview.property.wf_requiredApprovePercent.description=Prozentsatz Pr\u00fcfer, die zur Genehmigung genehmigen m\u00fcssen activitiParallelReview.task.wf_activitiReviewTask.title=\u00dcberpr\u00fcfen +activitiParallelReview.task.wf_activitiReviewTask.description=Dokumente zur \u00dcberpr\u00fcfung und Zustimmung activitiParallelReview.task.wf_rejectedParallelTask.title=Dokument abgelehnt activitiParallelReview.task.wf_approvedParallelTask.title=Dokument genehmigt activitiParallelReview.property.wf_reviewerCount.title=Anzahl Pr\u00fcfer @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=Derzeitiger Prozentsatz G activitiParallelReview.property.wf_actualPercent.description=Derzeitiger Prozentsatz Genehmigung activitiParallelReview.property.wf_reviewOutcome.title=\u00dcberpr\u00fcfungsergebnis activitiParallelReview.property.wf_reviewOutcome.description=\u00dcberpr\u00fcfungsergebnis +activitiParallelGroupReview.task.wf_activitiReviewTask.title=\u00dcberpr\u00fcfen +activitiParallelGroupReview.task.wf_activitiReviewTask.description=Dokumente zur \u00dcberpr\u00fcfung und Zustimmung # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=Gruppen\u00fcberpr\u00fcfung starten wf_workflowmodel.type.wf_submitGroupReviewTask.description=Dokumente zur \u00dcberpr\u00fcfung und Zustimmung einer Mitarbeitergruppe vorlegen +activitiReviewPooled.task.wf_activitiReviewTask.title=\u00dcberpr\u00fcfen +activitiReviewPooled.task.wf_activitiReviewTask.description=Dokumente zur \u00dcberpr\u00fcfung und Zustimmung +activitiReviewPooled.task.wf_rejectedTask.title=Dokument abgelehnt +activitiReviewPooled.task.wf_rejectedTask.description=Dokument abgelehnt +activitiReviewPooled.task.wf_approvedTask.title=Dokument genehmigt +activitiReviewPooled.task.wf_approvedTask.description=Dokument genehmigt + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=Genehmigen listconstraint.wf_reviewOutcomeOptions.Reject=Ablehnen @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=Genehmigt workflowtask.outcome.Reject=Abgelehnt workflowtask.already.done.error=Diese Aufgabe wurde bereits abgeschlossen und kann nicht mehr bearbeitet werden. + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=Zur\u00fccksetzen des Passwortes anfordern. +resetpasswordwf_resetpassword.resetpassword.workflow.description=Wird von Benutzern verwendet, um ein Zur\u00fccksetzen ihres Passwortes anzufordern. diff --git a/config/alfresco/workflow/workflow-messages_es.properties b/config/alfresco/workflow/workflow-messages_es.properties index fac0756555..b7f3923776 100755 --- a/config/alfresco/workflow/workflow-messages_es.properties +++ b/config/alfresco/workflow/workflow-messages_es.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=Publicar contenido Web con Activiti publishWebContent.workflow.description=Publicaci\u00f3n de contenido Web utilizando el motor de flujo de trabajo Activiti ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=Revisar documentos para wf_workflowmodel.property.wf_reviewOutcome.title=Revisar resultado wf_workflowmodel.property.wf_reviewOutcome.description=Aprobar y rechazar el contenido +activitiReview.task.wf_submitReviewTask.title=Iniciar revisi\u00f3n +activitiReview.task.wf_submitReviewTask.description=Enviar documentos para su revisi\u00f3n y aprobaci\u00f3n +activitiReview.task.wf_rejectedTask.title=Rechazados +activitiReview.task.wf_rejectedTask.description=Rechazados +activitiReview.task.wf_approvedTask.title=Aprobadas +activitiReview.task.wf_approvedTask.description=Aprobadas +activitiReview.task.wf_activitiReviewTask.title=Revisar +activitiReview.task.wf_activitiReviewTask.description=Documentos para revisi\u00f3n y aprobaci\u00f3n + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=Enviar documentos para revisar @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=Solicitar ap activitiParallelReview.property.wf_requiredApprovePercent.title=Porcentaje de aprobaci\u00f3n requerido activitiParallelReview.property.wf_requiredApprovePercent.description=Porcentaje de revisores que deben confirmar su aprobaci\u00f3n activitiParallelReview.task.wf_activitiReviewTask.title=Revisar +activitiParallelReview.task.wf_activitiReviewTask.description=Documentos para revisi\u00f3n y aprobaci\u00f3n activitiParallelReview.task.wf_rejectedParallelTask.title=Documento rechazado activitiParallelReview.task.wf_approvedParallelTask.title=Documento aprobado activitiParallelReview.property.wf_reviewerCount.title=N\u00famero de revisores @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=Porcentaje de aprobaci\u0 activitiParallelReview.property.wf_actualPercent.description=Porcentaje de aprobaci\u00f3n real activitiParallelReview.property.wf_reviewOutcome.title=Revisar resultado activitiParallelReview.property.wf_reviewOutcome.description=Revisar resultado +activitiParallelGroupReview.task.wf_activitiReviewTask.title=Revisar +activitiParallelGroupReview.task.wf_activitiReviewTask.description=Documentos para revisi\u00f3n y aprobaci\u00f3n # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=Iniciar revisi\u00f3n en grupo wf_workflowmodel.type.wf_submitGroupReviewTask.description=Enviar documentos para su revisi\u00f3n y aprobaci\u00f3n a un grupo de personas +activitiReviewPooled.task.wf_activitiReviewTask.title=Revisar +activitiReviewPooled.task.wf_activitiReviewTask.description=Documentos para revisi\u00f3n y aprobaci\u00f3n +activitiReviewPooled.task.wf_rejectedTask.title=Documento rechazado +activitiReviewPooled.task.wf_rejectedTask.description=Documento rechazado +activitiReviewPooled.task.wf_approvedTask.title=Documento aprobado +activitiReviewPooled.task.wf_approvedTask.description=Documento aprobado + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=Aprobar listconstraint.wf_reviewOutcomeOptions.Reject=Rechazar @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=Aprobada workflowtask.outcome.Reject=Rechazada workflowtask.already.done.error=Esta tarea ya se ha completado y no puede editarse. + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=Solicitar restablecimiento de contrase\u00f1a. +resetpasswordwf_resetpassword.resetpassword.workflow.description=Utilizado por los usuarios para solicitar el restablecimiento de su contrase\u00f1a. diff --git a/config/alfresco/workflow/workflow-messages_fr.properties b/config/alfresco/workflow/workflow-messages_fr.properties index 43079831c4..6aa6da0441 100755 --- a/config/alfresco/workflow/workflow-messages_fr.properties +++ b/config/alfresco/workflow/workflow-messages_fr.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=Processus Activiti de publication de contenu We publishWebContent.workflow.description=Publication de contenu Web \u00e0 l'aide du moteur de workflow Activi ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=R\u00e9viser des documen wf_workflowmodel.property.wf_reviewOutcome.title=R\u00e9sultat de la r\u00e9vision wf_workflowmodel.property.wf_reviewOutcome.description=Approuver ou rejeter le contenu +activitiReview.task.wf_submitReviewTask.title=D\u00e9marrer la r\u00e9vision +activitiReview.task.wf_submitReviewTask.description=Soumettre des documents pour r\u00e9vision et approbation +activitiReview.task.wf_rejectedTask.title=Rejet\u00e9 +activitiReview.task.wf_rejectedTask.description=Rejet\u00e9 +activitiReview.task.wf_approvedTask.title=Approuv\u00e9 +activitiReview.task.wf_approvedTask.description=Approuv\u00e9 +activitiReview.task.wf_activitiReviewTask.title=R\u00e9viser +activitiReview.task.wf_activitiReviewTask.description=Documents pour r\u00e9vision et approbation + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=Envoyer un (des) document(s) pour r\u00e9vision @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=Demander l'a activitiParallelReview.property.wf_requiredApprovePercent.title=Pourcentage d'approbation requis activitiParallelReview.property.wf_requiredApprovePercent.description=Pourcentage de r\u00e9viseurs qui doivent approuver le contenu pour qu'il soit approuv\u00e9 activitiParallelReview.task.wf_activitiReviewTask.title=R\u00e9viser +activitiParallelReview.task.wf_activitiReviewTask.description=Documents pour r\u00e9vision et approbation activitiParallelReview.task.wf_rejectedParallelTask.title=Document rejet\u00e9 activitiParallelReview.task.wf_approvedParallelTask.title=Document approuv\u00e9 activitiParallelReview.property.wf_reviewerCount.title=Nombre de r\u00e9viseurs @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=Pourcentage d'approbation activitiParallelReview.property.wf_actualPercent.description=Pourcentage d'approbation exact activitiParallelReview.property.wf_reviewOutcome.title=R\u00e9sultat de la r\u00e9vision activitiParallelReview.property.wf_reviewOutcome.description=R\u00e9sultat de la r\u00e9vision +activitiParallelGroupReview.task.wf_activitiReviewTask.title=R\u00e9viser +activitiParallelGroupReview.task.wf_activitiReviewTask.description=Documents pour r\u00e9vision et approbation # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=D\u00e9marrer la r\u00e9vision de groupe wf_workflowmodel.type.wf_submitGroupReviewTask.description=Soumettre des documents pour r\u00e9vision et approbation \u00e0 un groupe de personnes +activitiReviewPooled.task.wf_activitiReviewTask.title=R\u00e9viser +activitiReviewPooled.task.wf_activitiReviewTask.description=Documents pour r\u00e9vision et approbation +activitiReviewPooled.task.wf_rejectedTask.title=Document rejet\u00e9 +activitiReviewPooled.task.wf_rejectedTask.description=Document rejet\u00e9 +activitiReviewPooled.task.wf_approvedTask.title=Document approuv\u00e9 +activitiReviewPooled.task.wf_approvedTask.description=Document approuv\u00e9 + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=Approuver listconstraint.wf_reviewOutcomeOptions.Reject=Rejeter @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=Approuv\u00e9 workflowtask.outcome.Reject=Rejet\u00e9 workflowtask.already.done.error=Cette t\u00e2che a d\u00e9j\u00e0 \u00e9t\u00e9 termin\u00e9e et n'est plus modifiable. + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=Demande de r\u00e9initialisation de mot de passe. +resetpasswordwf_resetpassword.resetpassword.workflow.description=Permet aux utilisateurs de demander la r\u00e9initialisation de leur mot de passe. diff --git a/config/alfresco/workflow/workflow-messages_it.properties b/config/alfresco/workflow/workflow-messages_it.properties index 3853a94b7e..b25e788f80 100755 --- a/config/alfresco/workflow/workflow-messages_it.properties +++ b/config/alfresco/workflow/workflow-messages_it.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=Processo Activiti per la pubblicazione di conte publishWebContent.workflow.description=Pubblicazione di contenuti web utilizzando il motore Activiti di workflow ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=Esamina i documenti per wf_workflowmodel.property.wf_reviewOutcome.title=Esamina risultato wf_workflowmodel.property.wf_reviewOutcome.description=Approva o respingi il contenuto +activitiReview.task.wf_submitReviewTask.title=Avvia esame +activitiReview.task.wf_submitReviewTask.description=Invia i documenti per l'esame e l'approvazione +activitiReview.task.wf_rejectedTask.title=Respinto +activitiReview.task.wf_rejectedTask.description=Respinto +activitiReview.task.wf_approvedTask.title=Approvato +activitiReview.task.wf_approvedTask.description=Approvato +activitiReview.task.wf_activitiReviewTask.title=Esamina +activitiReview.task.wf_activitiReviewTask.description=Documenti per l'esame e l'approvazione + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=Invia documenti da esaminare @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=Richiede l'a activitiParallelReview.property.wf_requiredApprovePercent.title=Percentuale di approvazioni richiesta activitiParallelReview.property.wf_requiredApprovePercent.description=Percentuale di esaminatori che devono approvare il contenuto per l'approvazione activitiParallelReview.task.wf_activitiReviewTask.title=Esamina +activitiParallelReview.task.wf_activitiReviewTask.description=Documenti per l'esame e l'approvazione activitiParallelReview.task.wf_rejectedParallelTask.title=Documento respinto activitiParallelReview.task.wf_approvedParallelTask.title=Documento approvato activitiParallelReview.property.wf_reviewerCount.title=Numero di esaminatori @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=Percentuale di approvazio activitiParallelReview.property.wf_actualPercent.description=Percentuale di approvazioni effettiva activitiParallelReview.property.wf_reviewOutcome.title=Esamina risultato activitiParallelReview.property.wf_reviewOutcome.description=Esamina risultato +activitiParallelGroupReview.task.wf_activitiReviewTask.title=Esamina +activitiParallelGroupReview.task.wf_activitiReviewTask.description=Documenti per l'esame e l'approvazione # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=Avvia esame di gruppo wf_workflowmodel.type.wf_submitGroupReviewTask.description=Invia i documenti per l'esame e l'approvazione a un gruppo di persone +activitiReviewPooled.task.wf_activitiReviewTask.title=Esamina +activitiReviewPooled.task.wf_activitiReviewTask.description=Documenti per l'esame e l'approvazione +activitiReviewPooled.task.wf_rejectedTask.title=Documento respinto +activitiReviewPooled.task.wf_rejectedTask.description=Documento respinto +activitiReviewPooled.task.wf_approvedTask.title=Documento approvato +activitiReviewPooled.task.wf_approvedTask.description=Documento approvato + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=Approva listconstraint.wf_reviewOutcomeOptions.Reject=Respingi @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=Approvato workflowtask.outcome.Reject=Respinto workflowtask.already.done.error=Questo compito \u00e8 gi\u00e0 stato completato e non \u00e8 pi\u00f9 modificabile. + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=Richiedi reset password. +resetpasswordwf_resetpassword.resetpassword.workflow.description=Utilizzato dagli utenti per richiedere il reset della password. diff --git a/config/alfresco/workflow/workflow-messages_ja.properties b/config/alfresco/workflow/workflow-messages_ja.properties index 544db7a036..d23900a0a8 100755 --- a/config/alfresco/workflow/workflow-messages_ja.properties +++ b/config/alfresco/workflow/workflow-messages_ja.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=\u30a6\u30a7\u30d6\u30b3\u30f3\u30c6\u30f3\u30c publishWebContent.workflow.description=\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30a6\u30a7\u30d6\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u516c\u958b\u3059\u308b ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=\u6587\u66f8\u3092\u30ec wf_workflowmodel.property.wf_reviewOutcome.title=\u30ec\u30d3\u30e5\u30fc\u7d50\u679c wf_workflowmodel.property.wf_reviewOutcome.description=\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u627f\u8a8d\u307e\u305f\u306f\u5374\u4e0b\u3059\u308b +activitiReview.task.wf_submitReviewTask.title=\u30ec\u30d3\u30e5\u30fc\u306e\u958b\u59cb +activitiReview.task.wf_submitReviewTask.description=\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u7528\u306b\u6587\u66f8\u3092\u9001\u4fe1 +activitiReview.task.wf_rejectedTask.title=\u5374\u4e0b\u6e08\u307f +activitiReview.task.wf_rejectedTask.description=\u5374\u4e0b\u6e08\u307f +activitiReview.task.wf_approvedTask.title=\u627f\u8a8d\u6e08\u307f +activitiReview.task.wf_approvedTask.description=\u627f\u8a8d\u6e08\u307f +activitiReview.task.wf_activitiReviewTask.title=\u30ec\u30d3\u30e5\u30fc +activitiReview.task.wf_activitiReviewTask.description=\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u3092\u884c\u3046\u6587\u66f8 + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=\u6587\u66f8\u3092\u30ec\u30d3\u30e5\u30fc\u7528\u306b\u9001\u4fe1 @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=1\u540d\u4ee activitiParallelReview.property.wf_requiredApprovePercent.title=\u5fc5\u8981\u306a\u627f\u8a8d\u6bd4\u7387 activitiParallelReview.property.wf_requiredApprovePercent.description=\u627f\u8a8d\u3092\u53d7\u3051\u308b\u305f\u3081\u306b\u627f\u8a8d\u3059\u308b\u5fc5\u8981\u306e\u3042\u308b\u30ec\u30d3\u30e5\u30a2\u306e\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8 activitiParallelReview.task.wf_activitiReviewTask.title=\u30ec\u30d3\u30e5\u30fc +activitiParallelReview.task.wf_activitiReviewTask.description=\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u3092\u884c\u3046\u6587\u66f8 activitiParallelReview.task.wf_rejectedParallelTask.title=\u6587\u66f8\u5374\u4e0b activitiParallelReview.task.wf_approvedParallelTask.title=\u6587\u66f8\u627f\u8a8d activitiParallelReview.property.wf_reviewerCount.title=\u30ec\u30d3\u30e5\u30a2\u306e\u6570 @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=\u5b9f\u969b\u306e\u627f\ activitiParallelReview.property.wf_actualPercent.description=\u5b9f\u969b\u306e\u627f\u8a8d\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8 activitiParallelReview.property.wf_reviewOutcome.title=\u30ec\u30d3\u30e5\u30fc\u7d50\u679c activitiParallelReview.property.wf_reviewOutcome.description=\u30ec\u30d3\u30e5\u30fc\u7d50\u679c +activitiParallelGroupReview.task.wf_activitiReviewTask.title=\u30ec\u30d3\u30e5\u30fc +activitiParallelGroupReview.task.wf_activitiReviewTask.description=\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u3092\u884c\u3046\u6587\u66f8 # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=\u30b0\u30eb\u30fc\u30d7\u30ec\u30d3\u30e5\u30fc\u306e\u958b\u59cb wf_workflowmodel.type.wf_submitGroupReviewTask.description=\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u7528\u306b\u6587\u66f8\u3092\u30e6\u30fc\u30b6\u30fc\u30b0\u30eb\u30fc\u30d7\u3078\u9001\u4fe1 +activitiReviewPooled.task.wf_activitiReviewTask.title=\u30ec\u30d3\u30e5\u30fc +activitiReviewPooled.task.wf_activitiReviewTask.description=\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u3092\u884c\u3046\u6587\u66f8 +activitiReviewPooled.task.wf_rejectedTask.title=\u6587\u66f8\u5374\u4e0b +activitiReviewPooled.task.wf_rejectedTask.description=\u6587\u66f8\u5374\u4e0b +activitiReviewPooled.task.wf_approvedTask.title=\u6587\u66f8\u627f\u8a8d +activitiReviewPooled.task.wf_approvedTask.description=\u6587\u66f8\u627f\u8a8d + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=\u627f\u8a8d listconstraint.wf_reviewOutcomeOptions.Reject=\u5374\u4e0b @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=\u627f\u8a8d\u6e08\u307f workflowtask.outcome.Reject=\u5374\u4e0b\u6e08\u307f workflowtask.already.done.error=\u3053\u306e\u30bf\u30b9\u30af\u306f\u3059\u3067\u306b\u5b8c\u4e86\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u7de8\u96c6\u3067\u304d\u307e\u305b\u3093\u3002 + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u7533\u8acb +resetpasswordwf_resetpassword.resetpassword.workflow.description=\u30e6\u30fc\u30b6\u30fc\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u3092\u7533\u8acb\u3059\u308b\u969b\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 diff --git a/config/alfresco/workflow/workflow-messages_nb.properties b/config/alfresco/workflow/workflow-messages_nb.properties index e51d4217fa..b3ce3a07fb 100755 --- a/config/alfresco/workflow/workflow-messages_nb.properties +++ b/config/alfresco/workflow/workflow-messages_nb.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=Activit-prosess for publisering av Webinnhold publishWebContent.workflow.description=Publisering av Webinnhold ved hjelp av Activiti-arbeidsflytmotoren ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=Gjennomg\u00e5 dokumente wf_workflowmodel.property.wf_reviewOutcome.title=Gjennomgangsresultat wf_workflowmodel.property.wf_reviewOutcome.description=Godkjenn eller avvis innholdet +activitiReview.task.wf_submitReviewTask.title=Start gjennomgang +activitiReview.task.wf_submitReviewTask.description=Send dokumenter til gjennomgang og godkjenning +activitiReview.task.wf_rejectedTask.title=Avvist +activitiReview.task.wf_rejectedTask.description=Avvist +activitiReview.task.wf_approvedTask.title=Godkjent +activitiReview.task.wf_approvedTask.description=Godkjent +activitiReview.task.wf_activitiReviewTask.title=Gjennomg\u00e5 +activitiReview.task.wf_activitiReviewTask.description=Dokumenter til gjennomgang og godkjenning + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=Send dokumenter til gjennomgang @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=Be om dokume activitiParallelReview.property.wf_requiredApprovePercent.title=Obligatorisk godkjenningsprosent activitiParallelReview.property.wf_requiredApprovePercent.description=Prosent av korrekturlesere som m\u00e5 godkjenne for godkjennelse activitiParallelReview.task.wf_activitiReviewTask.title=Gjennomg\u00e5 +activitiParallelReview.task.wf_activitiReviewTask.description=Dokumenter til gjennomgang og godkjenning activitiParallelReview.task.wf_rejectedParallelTask.title=Dokument avvist activitiParallelReview.task.wf_approvedParallelTask.title=Dokument godkjent activitiParallelReview.property.wf_reviewerCount.title=Antall korrekturlesere @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=Faktisk godkjenningsprose activitiParallelReview.property.wf_actualPercent.description=Faktisk godkjenningsprosent activitiParallelReview.property.wf_reviewOutcome.title=Gjennomgangsresultat activitiParallelReview.property.wf_reviewOutcome.description=Gjennomgangsresultat +activitiParallelGroupReview.task.wf_activitiReviewTask.title=Gjennomg\u00e5 +activitiParallelGroupReview.task.wf_activitiReviewTask.description=Dokumenter til gjennomgang og godkjenning # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=Start gruppegjennomgang wf_workflowmodel.type.wf_submitGroupReviewTask.description=Send dokumenter til gjennomgang og godkjenning til en gruppe av personer +activitiReviewPooled.task.wf_activitiReviewTask.title=Gjennomg\u00e5 +activitiReviewPooled.task.wf_activitiReviewTask.description=Dokumenter til gjennomgang og godkjenning +activitiReviewPooled.task.wf_rejectedTask.title=Dokument avvist +activitiReviewPooled.task.wf_rejectedTask.description=Dokument avvist +activitiReviewPooled.task.wf_approvedTask.title=Dokument godkjent +activitiReviewPooled.task.wf_approvedTask.description=Dokument godkjent + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=Godkjenn listconstraint.wf_reviewOutcomeOptions.Reject=Avvis @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=Godkjent workflowtask.outcome.Reject=Avvist workflowtask.already.done.error=Denne oppgaven er allrerede fulf\u00f8rt og kan ikke lenger redigeres. + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=Be om tilbakestilling av passord. +resetpasswordwf_resetpassword.resetpassword.workflow.description=Brukes av brukere for \u00e5 be om tilbakestilling av deres passord. diff --git a/config/alfresco/workflow/workflow-messages_nl.properties b/config/alfresco/workflow/workflow-messages_nl.properties index b21341bafd..ee7dd033f8 100755 --- a/config/alfresco/workflow/workflow-messages_nl.properties +++ b/config/alfresco/workflow/workflow-messages_nl.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=Web Content Activiti-proces publiceren publishWebContent.workflow.description=Webcontent publiceren met de Activiti-workflowengine ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=Documenten reviseren om wf_workflowmodel.property.wf_reviewOutcome.title=Resultaat van revisie wf_workflowmodel.property.wf_reviewOutcome.description=De content goedkeuren of afwijzen +activitiReview.task.wf_submitReviewTask.title=Revisie starten +activitiReview.task.wf_submitReviewTask.description=Documenten ter revisie en goedkeuring verzenden +activitiReview.task.wf_rejectedTask.title=Afgewezen +activitiReview.task.wf_rejectedTask.description=Afgewezen +activitiReview.task.wf_approvedTask.title=Goedgekeurd +activitiReview.task.wf_approvedTask.description=Goedgekeurd +activitiReview.task.wf_activitiReviewTask.title=Reviseren +activitiReview.task.wf_activitiReviewTask.description=Documenten voor revisie en goedkeuring + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=Document(en) ter revisie verzenden @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=Een of meer activitiParallelReview.property.wf_requiredApprovePercent.title=Vereist goedkeuringspercentage activitiParallelReview.property.wf_requiredApprovePercent.description=Percentage van revisoren die hun goedkeuring moeten geven activitiParallelReview.task.wf_activitiReviewTask.title=Reviseren +activitiParallelReview.task.wf_activitiReviewTask.description=Documenten voor revisie en goedkeuring activitiParallelReview.task.wf_rejectedParallelTask.title=Document afgewezen activitiParallelReview.task.wf_approvedParallelTask.title=Document goedgekeurd activitiParallelReview.property.wf_reviewerCount.title=Aantal revisoren @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=Goedkeuringspercentage activitiParallelReview.property.wf_actualPercent.description=Goedkeuringspercentage activitiParallelReview.property.wf_reviewOutcome.title=Resultaat van revisie activitiParallelReview.property.wf_reviewOutcome.description=Resultaat van revisie +activitiParallelGroupReview.task.wf_activitiReviewTask.title=Reviseren +activitiParallelGroupReview.task.wf_activitiReviewTask.description=Documenten voor revisie en goedkeuring # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=Groepsrevisie starten wf_workflowmodel.type.wf_submitGroupReviewTask.description=Documenten ter revisie en goedkeuring verzenden naar een groep mensen +activitiReviewPooled.task.wf_activitiReviewTask.title=Reviseren +activitiReviewPooled.task.wf_activitiReviewTask.description=Documenten voor revisie en goedkeuring +activitiReviewPooled.task.wf_rejectedTask.title=Document afgewezen +activitiReviewPooled.task.wf_rejectedTask.description=Document afgewezen +activitiReviewPooled.task.wf_approvedTask.title=Document goedgekeurd +activitiReviewPooled.task.wf_approvedTask.description=Document goedgekeurd + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=Goedkeuren listconstraint.wf_reviewOutcomeOptions.Reject=Afwijzen @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=Goedgekeurd workflowtask.outcome.Reject=Afgewezen workflowtask.already.done.error=Deze taak is al voltooid en kan niet langer worden bewerkt. + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=Opnieuw instellen van wachtwoord aanvragen. +resetpasswordwf_resetpassword.resetpassword.workflow.description=Gebruikt door gebruikers om opnieuw instellen van wachtwoord aan te vragen. diff --git a/config/alfresco/workflow/workflow-messages_pt_BR.properties b/config/alfresco/workflow/workflow-messages_pt_BR.properties index 8fb9291303..00b3aafc75 100644 --- a/config/alfresco/workflow/workflow-messages_pt_BR.properties +++ b/config/alfresco/workflow/workflow-messages_pt_BR.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=Processo Activiti de publica\u00e7\u00e3o de co publishWebContent.workflow.description=Publica\u00e7\u00e3o de conte\u00fado da Web usando o mecanismo de fluxo de trabalho Activiti ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=Revisar documentos para wf_workflowmodel.property.wf_reviewOutcome.title=Resultado de revis\u00e3o wf_workflowmodel.property.wf_reviewOutcome.description=Aprovar ou rejeitar o conte\u00fado +activitiReview.task.wf_submitReviewTask.title=Iniciar revis\u00e3o +activitiReview.task.wf_submitReviewTask.description=Enviar documentos para revis\u00e3o e aprova\u00e7\u00e3o +activitiReview.task.wf_rejectedTask.title=Rejeitado +activitiReview.task.wf_rejectedTask.description=Rejeitado +activitiReview.task.wf_approvedTask.title=Aprovado +activitiReview.task.wf_approvedTask.description=Aprovado +activitiReview.task.wf_activitiReviewTask.title=Revisar +activitiReview.task.wf_activitiReviewTask.description=Documentos para revis\u00e3o e aprova\u00e7\u00e3o + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=Enviar documento(s) para revis\u00e3o @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=Solicitar a activitiParallelReview.property.wf_requiredApprovePercent.title=Porcentagem de aprova\u00e7\u00e3o obrigat\u00f3ria activitiParallelReview.property.wf_requiredApprovePercent.description=Porcentagem dos revisores que devem aprovar para obter a aprova\u00e7\u00e3o activitiParallelReview.task.wf_activitiReviewTask.title=Revisar +activitiParallelReview.task.wf_activitiReviewTask.description=Documentos para revis\u00e3o e aprova\u00e7\u00e3o activitiParallelReview.task.wf_rejectedParallelTask.title=Documento rejeitado activitiParallelReview.task.wf_approvedParallelTask.title=Documento aprovado activitiParallelReview.property.wf_reviewerCount.title=N\u00famero de revisores @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=Porcentagem efetiva de ap activitiParallelReview.property.wf_actualPercent.description=Porcentagem efetiva de aprova\u00e7\u00e3o activitiParallelReview.property.wf_reviewOutcome.title=Resultado de revis\u00e3o activitiParallelReview.property.wf_reviewOutcome.description=Resultado de revis\u00e3o +activitiParallelGroupReview.task.wf_activitiReviewTask.title=Revisar +activitiParallelGroupReview.task.wf_activitiReviewTask.description=Documentos para revis\u00e3o e aprova\u00e7\u00e3o # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=Iniciar revis\u00e3o em grupo wf_workflowmodel.type.wf_submitGroupReviewTask.description=Enviar documentos a um grupo de pessoas para revis\u00e3o e aprova\u00e7\u00e3o +activitiReviewPooled.task.wf_activitiReviewTask.title=Revisar +activitiReviewPooled.task.wf_activitiReviewTask.description=Documentos para revis\u00e3o e aprova\u00e7\u00e3o +activitiReviewPooled.task.wf_rejectedTask.title=Documento rejeitado +activitiReviewPooled.task.wf_rejectedTask.description=Documento rejeitado +activitiReviewPooled.task.wf_approvedTask.title=Documento aprovado +activitiReviewPooled.task.wf_approvedTask.description=Documento aprovado + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=Aprovar listconstraint.wf_reviewOutcomeOptions.Reject=Rejeitar @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=Aprovado workflowtask.outcome.Reject=Rejeitado workflowtask.already.done.error=Esta tarefa foi conclu\u00edda e n\u00e3o \u00e9 mais edit\u00e1vel. + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=Solicitar redefini\u00e7\u00e3o de senha. +resetpasswordwf_resetpassword.resetpassword.workflow.description=Os usu\u00e1rios podem solicitar a redefini\u00e7\u00e3o da senha. diff --git a/config/alfresco/workflow/workflow-messages_ru.properties b/config/alfresco/workflow/workflow-messages_ru.properties index 4133acf6cb..f51bd38d51 100755 --- a/config/alfresco/workflow/workflow-messages_ru.properties +++ b/config/alfresco/workflow/workflow-messages_ru.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=\u041f\u0440\u043e\u0446\u0435\u0441\u0441 Acti publishWebContent.workflow.description=\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u0435\u0431-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 Activiti ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=\u041f\u0440\u043e\u0432 wf_workflowmodel.property.wf_reviewOutcome.title=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 wf_workflowmodel.property.wf_reviewOutcome.description=\u041f\u0440\u0438\u043d\u044f\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 +activitiReview.task.wf_submitReviewTask.title=\u041d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 +activitiReview.task.wf_submitReviewTask.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 +activitiReview.task.wf_rejectedTask.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e +activitiReview.task.wf_rejectedTask.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e +activitiReview.task.wf_approvedTask.title=\u041f\u0440\u0438\u043d\u044f\u0442\u043e +activitiReview.task.wf_approvedTask.description=\u041f\u0440\u0438\u043d\u044f\u0442\u043e +activitiReview.task.wf_activitiReviewTask.title=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 +activitiReview.task.wf_activitiReviewTask.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=\u0417\u0430 activitiParallelReview.property.wf_requiredApprovePercent.title=\u0422\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f activitiParallelReview.property.wf_requiredApprovePercent.description=\u041f\u0440\u043e\u0446\u0435\u043d\u0442 \u0440\u0435\u0446\u0435\u043d\u0437\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0435\u0433\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f activitiParallelReview.task.wf_activitiReviewTask.title=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c +activitiParallelReview.task.wf_activitiReviewTask.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 activitiParallelReview.task.wf_rejectedParallelTask.title=\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d activitiParallelReview.task.wf_approvedParallelTask.title=\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d activitiParallelReview.property.wf_reviewerCount.title=\u0427\u0438\u0441\u043b\u043e \u0440\u0435\u0446\u0435\u043d\u0437\u0435\u043d\u0442\u043e\u0432 @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=\u0424\u0430\u043a\u0442\ activitiParallelReview.property.wf_actualPercent.description=\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f activitiParallelReview.property.wf_reviewOutcome.title=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 activitiParallelReview.property.wf_reviewOutcome.description=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 +activitiParallelGroupReview.task.wf_activitiReviewTask.title=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 +activitiParallelGroupReview.task.wf_activitiReviewTask.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=\u041d\u0430\u0447\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 wf_workflowmodel.type.wf_submitGroupReviewTask.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u0435 \u043b\u044e\u0434\u0435\u0439 +activitiReviewPooled.task.wf_activitiReviewTask.title=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 +activitiReviewPooled.task.wf_activitiReviewTask.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 +activitiReviewPooled.task.wf_rejectedTask.title=\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d +activitiReviewPooled.task.wf_rejectedTask.description=\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d +activitiReviewPooled.task.wf_approvedTask.title=\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d +activitiReviewPooled.task.wf_approvedTask.description=\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=\u041f\u0440\u0438\u043d\u044f\u0442\u044c listconstraint.wf_reviewOutcomeOptions.Reject=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=\u041f\u0440\u0438\u043d\u044f\u0442\u043e workflowtask.outcome.Reject=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e workflowtask.already.done.error=\u0417\u0430\u0434\u0430\u0447\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430, \u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c. + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f. +resetpasswordwf_resetpassword.resetpassword.workflow.description=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f. diff --git a/config/alfresco/workflow/workflow-messages_zh_CN.properties b/config/alfresco/workflow/workflow-messages_zh_CN.properties index ccdab9e463..580e261ca9 100755 --- a/config/alfresco/workflow/workflow-messages_zh_CN.properties +++ b/config/alfresco/workflow/workflow-messages_zh_CN.properties @@ -1,7 +1,7 @@ # Display labels for out-of-the-box Content-oriented Workflows ####################### -# ACTIVITI WORKFLOWS # +# ACTIVITI WORKFLOWS # ####################### # @@ -54,7 +54,7 @@ publishWebContent.workflow.title=\u53d1\u5e03 Web \u5185\u5bb9\u7684 Activiti \u publishWebContent.workflow.description=\u4f7f\u7528 Activiti \u5de5\u4f5c\u6d41\u7a0b\u5f15\u64ce\u53d1\u5e03 Web \u5185\u5bb9 ############################ -# WORKFLOW MODEL LABELS # +# WORKFLOW MODEL LABELS # ############################ # Adhoc Task Definitions @@ -92,6 +92,15 @@ wf_workflowmodel.type.wf_activitiReviewTask.description=\u590d\u67e5\u6587\u6863 wf_workflowmodel.property.wf_reviewOutcome.title=\u590d\u67e5\u7ed3\u679c wf_workflowmodel.property.wf_reviewOutcome.description=\u6279\u51c6\u6216\u62d2\u7edd\u5185\u5bb9 +activitiReview.task.wf_submitReviewTask.title=\u5f00\u59cb\u590d\u67e5 +activitiReview.task.wf_submitReviewTask.description=\u63d0\u4ea4\u6587\u6863\u4f9b\u590d\u67e5\u548c\u6279\u51c6 +activitiReview.task.wf_rejectedTask.title=\u5df2\u62d2\u7edd +activitiReview.task.wf_rejectedTask.description=\u5df2\u62d2\u7edd +activitiReview.task.wf_approvedTask.title=\u5df2\u6279\u51c6 +activitiReview.task.wf_approvedTask.description=\u5df2\u6279\u51c6 +activitiReview.task.wf_activitiReviewTask.title=\u590d\u67e5 +activitiReview.task.wf_activitiReviewTask.description=\u4f9b\u590d\u67e5\u548c\u6279\u51c6\u7684\u6587\u6863 + # Parallel Review And Approve Task Definitions wf_workflowmodel.type.wf_submitParallelReviewTask.title=\u53d1\u9001\u6587\u6863\u4f9b\u590d\u67e5 @@ -118,6 +127,7 @@ activitiParallelReview.task.wf_submitParallelReviewTask.description=\u4e00\u4f4d activitiParallelReview.property.wf_requiredApprovePercent.title=\u6240\u9700\u6279\u51c6\u767e\u5206\u6bd4 activitiParallelReview.property.wf_requiredApprovePercent.description=\u8fbe\u5230\u6279\u51c6\u6761\u4ef6\u6240\u9700\u6279\u51c6\u590d\u67e5\u8005\u6240\u5360\u767e\u5206\u6bd4 activitiParallelReview.task.wf_activitiReviewTask.title=\u590d\u67e5 +activitiParallelReview.task.wf_activitiReviewTask.description=\u4f9b\u590d\u67e5\u548c\u6279\u51c6\u7684\u6587\u6863 activitiParallelReview.task.wf_rejectedParallelTask.title=\u6587\u6863\u88ab\u62d2\u7edd activitiParallelReview.task.wf_approvedParallelTask.title=\u5df2\u6279\u51c6\u6587\u6863 activitiParallelReview.property.wf_reviewerCount.title=\u590d\u67e5\u8005\u6570 @@ -130,12 +140,21 @@ activitiParallelReview.property.wf_actualPercent.title=\u5b9e\u9645\u6279\u51c6\ activitiParallelReview.property.wf_actualPercent.description=\u5b9e\u9645\u6279\u51c6\u767e\u5206\u6bd4 activitiParallelReview.property.wf_reviewOutcome.title=\u590d\u67e5\u7ed3\u679c activitiParallelReview.property.wf_reviewOutcome.description=\u590d\u67e5\u7ed3\u679c +activitiParallelGroupReview.task.wf_activitiReviewTask.title=\u590d\u67e5 +activitiParallelGroupReview.task.wf_activitiReviewTask.description=\u4f9b\u590d\u67e5\u548c\u6279\u51c6\u7684\u6587\u6863 # Pooled Review Task Definitions wf_workflowmodel.type.wf_submitGroupReviewTask.title=\u5f00\u59cb\u7ec4\u590d\u67e5 wf_workflowmodel.type.wf_submitGroupReviewTask.description=\u5411\u4e00\u7ec4\u4eba\u5458\u63d0\u4ea4\u6587\u6863\u4f9b\u590d\u67e5\u548c\u6279\u51c6 +activitiReviewPooled.task.wf_activitiReviewTask.title=\u590d\u67e5 +activitiReviewPooled.task.wf_activitiReviewTask.description=\u4f9b\u590d\u67e5\u548c\u6279\u51c6\u7684\u6587\u6863 +activitiReviewPooled.task.wf_rejectedTask.title=\u6587\u6863\u88ab\u62d2\u7edd +activitiReviewPooled.task.wf_rejectedTask.description=\u6587\u6863\u88ab\u62d2\u7edd +activitiReviewPooled.task.wf_approvedTask.title=\u5df2\u6279\u51c6\u6587\u6863 +activitiReviewPooled.task.wf_approvedTask.description=\u5df2\u6279\u51c6\u6587\u6863 + # List constraint display labels listconstraint.wf_reviewOutcomeOptions.Approve=\u6279\u51c6 listconstraint.wf_reviewOutcomeOptions.Reject=\u62d2\u7edd @@ -146,3 +165,7 @@ workflowtask.outcome.Approve=\u5df2\u6279\u51c6 workflowtask.outcome.Reject=\u5df2\u62d2\u7edd workflowtask.already.done.error=\u6b64\u4efb\u52a1\u5df2\u5b8c\u6210\uff0c\u65e0\u6cd5\u518d\u7f16\u8f91\u3002 + +# Reset password Task Definitions +resetpasswordwf_resetpassword.resetpassword.workflow.title=\u8bf7\u6c42\u5bc6\u7801\u91cd\u7f6e\u3002 +resetpasswordwf_resetpassword.resetpassword.workflow.description=\u7531\u7528\u6237\u4f7f\u7528\u4ee5\u8bf7\u6c42\u91cd\u7f6e\u5176\u5bc6\u7801\u3002 diff --git a/source/java/org/alfresco/repo/forum/CommentServiceImpl.java b/source/java/org/alfresco/repo/forum/CommentServiceImpl.java index f24411bc0c..7ccabc873e 100644 --- a/source/java/org/alfresco/repo/forum/CommentServiceImpl.java +++ b/source/java/org/alfresco/repo/forum/CommentServiceImpl.java @@ -613,17 +613,18 @@ public class CommentServiceImpl extends AbstractLifecycleBean implements Comment NodeRef discussableNodeRef = getDiscussableAncestor(commentNodeRef); if (discussableNodeRef.equals(discussableNode)) { - if (!isWorkingCopyOrLocked(discussableNode)) + if (!isWorkingCopyOrLocked(discussableNode) + || isLockOwner(discussableNode)) { canEdit = canEditPermission(commentNodeRef); canDelete = canDeletePermission(commentNodeRef); } } - + Map map = new HashMap<>(2); map.put(CommentService.CAN_EDIT, canEdit); map.put(CommentService.CAN_DELETE, canDelete); - + return map; } @@ -637,12 +638,17 @@ public class CommentServiceImpl extends AbstractLifecycleBean implements Comment boolean isCoordinator = permissionService.hasPermission(commentNodeRef, PermissionService.COORDINATOR) == (AccessStatus.ALLOWED); return (isSiteManager || isCoordinator || currentUser.equals(creator) || currentUser.equals(owner)); } - + private boolean canDeletePermission(NodeRef commentNodeRef) { return permissionService.hasPermission(commentNodeRef, PermissionService.DELETE) == AccessStatus.ALLOWED; } + private boolean isLockOwner(NodeRef nodeRef) + { + return lockService.getLockStatus(nodeRef) == LockStatus.LOCK_OWNER; + } + private boolean isWorkingCopyOrLocked(NodeRef nodeRef) { boolean isWorkingCopy = false; @@ -667,7 +673,7 @@ public class CommentServiceImpl extends AbstractLifecycleBean implements Comment } return (isWorkingCopy || isLocked); } - + @Override public void onUpdateProperties(NodeRef commentNodeRef, Map before, Map after) { @@ -675,10 +681,11 @@ public class CommentServiceImpl extends AbstractLifecycleBean implements Comment if (discussableNodeRef != null) { if (behaviourFilter.isEnabled(ContentModel.ASPECT_LOCKABLE) - && isWorkingCopyOrLocked(discussableNodeRef)) + && isWorkingCopyOrLocked(discussableNodeRef) + && !isLockOwner(discussableNodeRef)) { List changedProperties = getChangedProperties(before, after); - + // check if comment updated (rather than some other change, eg. addition of lockable aspect only) boolean commentUpdated = false; for (QName changedProperty : changedProperties) @@ -693,7 +700,7 @@ public class CommentServiceImpl extends AbstractLifecycleBean implements Comment } } } - + if (commentUpdated) { throw new NodeLockedException(discussableNodeRef); @@ -741,20 +748,22 @@ public class CommentServiceImpl extends AbstractLifecycleBean implements Comment return results; } - + @Override public void beforeDeleteNode(final NodeRef commentNodeRef) { NodeRef discussableNodeRef = getDiscussableAncestor(commentNodeRef); if (discussableNodeRef != null) { + boolean canDelete = canDeletePermission(commentNodeRef); if (behaviourFilter.isEnabled(ContentModel.ASPECT_LOCKABLE) // eg. delete site (MNT-14671) - && isWorkingCopyOrLocked(discussableNodeRef)) + && isWorkingCopyOrLocked(discussableNodeRef) + && !isLockOwner(discussableNodeRef) + && !canDelete) { throw new NodeLockedException(discussableNodeRef); } - boolean canDelete = canDeletePermission(commentNodeRef); if (! canDelete) { throw new AccessDeniedException("Cannot delete comment"); diff --git a/source/java/org/alfresco/repo/site/SiteMembership.java b/source/java/org/alfresco/repo/site/SiteMembership.java index 404500ff86..7bba607d63 100644 --- a/source/java/org/alfresco/repo/site/SiteMembership.java +++ b/source/java/org/alfresco/repo/site/SiteMembership.java @@ -34,134 +34,142 @@ import org.alfresco.service.cmr.site.SiteRole; * @author steveglover * */ -public class SiteMembership -{ - private SiteInfo siteInfo; - private String personId; - private String firstName; - private String lastName; - private String role; - - public SiteMembership(SiteInfo siteInfo, String personId, String firstName, String lastName, String role) - { - super(); - if(siteInfo == null) - { - throw new java.lang.IllegalArgumentException(); - } - if(personId == null) - { - throw new java.lang.IllegalArgumentException(); - } - if(firstName == null) - { - throw new java.lang.IllegalArgumentException(); - } - if(lastName == null) - { - throw new java.lang.IllegalArgumentException(); - } - if(role == null) - { - throw new java.lang.IllegalArgumentException(); - } - this.siteInfo = siteInfo; - this.personId = personId; - this.firstName = firstName; - this.lastName = lastName; - this.role = role; - } - - public SiteMembership(SiteInfo siteInfo, String personId, String role) - { - super(); - if(siteInfo == null) - { - throw new java.lang.IllegalArgumentException(); - } - if(personId == null) - { - throw new java.lang.IllegalArgumentException(); - } - if(role == null) - { - throw new java.lang.IllegalArgumentException(); - } - - this.siteInfo = siteInfo; - this.personId = personId; - this.role = role; - } - - public SiteInfo getSiteInfo() - { - return siteInfo; - } - - public String getPersonId() - { - return personId; - } - - public String getFirstName() - { - return firstName; - } - - public String getLastName() - { - return lastName; - } - - public String getRole() - { - return role; - } - - @Override - public int hashCode() - { - final int prime = 31; - int result = 1; - result = prime * result - + ((personId == null) ? 0 : personId.hashCode()); - result = prime * result + ((role == null) ? 0 : role.hashCode()); - result = prime * result - + ((getSiteInfo() == null) ? 0 : getSiteInfo().hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - SiteMembership other = (SiteMembership) obj; - if (personId == null) { - if (other.personId != null) - return false; - } else if (!personId.equals(other.personId)) - return false; - if (role != other.role) - return false; - if (getSiteInfo() == null) { - if (other.getSiteInfo() != null) - return false; - } else if (!getSiteInfo().equals(other.getSiteInfo())) - return false; - return true; - } - - @Override - public String toString() - { - return "SiteMembership [siteInfo=" + getSiteInfo() - + ", personId=" + personId + ", firstName=" + firstName - + ", lastName=" + lastName + ", role=" + role + "]"; - } - -} +public class SiteMembership +{ + private SiteInfo siteInfo; + private String personId; + private String firstName; + private String lastName; + private String role; + + public SiteMembership(SiteInfo siteInfo, String personId, String firstName, String lastName, + String role) + { + super(); + if (siteInfo == null) + { + throw new java.lang.IllegalArgumentException(); + } + if (personId == null) + { + throw new java.lang.IllegalArgumentException( + "Person required building site membership of " + siteInfo.getShortName()); + } + if (firstName == null) + { + throw new java.lang.IllegalArgumentException( + "FirstName required building site membership of " + siteInfo.getShortName()); + } + if (lastName == null) + { + throw new java.lang.IllegalArgumentException( + "LastName required building site membership of " + siteInfo.getShortName()); + } + if (role == null) + { + throw new java.lang.IllegalArgumentException( + "Role required building site membership of " + siteInfo.getShortName()); + } + this.siteInfo = siteInfo; + this.personId = personId; + this.firstName = firstName; + this.lastName = lastName; + this.role = role; + } + + public SiteMembership(SiteInfo siteInfo, String personId, String role) + { + super(); + if (siteInfo == null) + { + throw new java.lang.IllegalArgumentException(); + } + if (personId == null) + { + throw new java.lang.IllegalArgumentException( + "Person required building site membership of " + siteInfo.getShortName()); + } + if (role == null) + { + throw new java.lang.IllegalArgumentException( + "Role required building site membership of " + siteInfo.getShortName()); + } + + this.siteInfo = siteInfo; + this.personId = personId; + this.role = role; + } + + public SiteInfo getSiteInfo() + { + return siteInfo; + } + + public String getPersonId() + { + return personId; + } + + public String getFirstName() + { + return firstName; + } + + public String getLastName() + { + return lastName; + } + + public String getRole() + { + return role; + } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + ((personId == null) ? 0 : personId.hashCode()); + result = prime * result + ((role == null) ? 0 : role.hashCode()); + result = prime * result + ((getSiteInfo() == null) ? 0 : getSiteInfo().hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + SiteMembership other = (SiteMembership) obj; + if (personId == null) + { + if (other.personId != null) + return false; + } + else if (!personId.equals(other.personId)) + return false; + if (role != other.role) + return false; + if (getSiteInfo() == null) + { + if (other.getSiteInfo() != null) + return false; + } + else if (!getSiteInfo().equals(other.getSiteInfo())) + return false; + return true; + } + + @Override + public String toString() + { + return "SiteMembership [siteInfo=" + getSiteInfo() + ", personId=" + personId + + ", firstName=" + firstName + ", lastName=" + lastName + ", role=" + role + "]"; + } + +} diff --git a/source/test-java/org/alfresco/repo/forum/CommentsTest.java b/source/test-java/org/alfresco/repo/forum/CommentsTest.java index 4cc6b6e4c3..e24bb5c805 100644 --- a/source/test-java/org/alfresco/repo/forum/CommentsTest.java +++ b/source/test-java/org/alfresco/repo/forum/CommentsTest.java @@ -1,34 +1,35 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ +/* + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ package org.alfresco.repo.forum; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.Serializable; import java.util.ArrayList; @@ -41,6 +42,7 @@ import org.alfresco.model.ForumModel; import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.domain.activities.ActivityPostDAO; import org.alfresco.repo.domain.activities.ActivityPostEntity; +import org.alfresco.repo.lock.mem.Lifetime; import org.alfresco.repo.model.Repository; import org.alfresco.repo.policy.BehaviourFilter; import org.alfresco.repo.security.authentication.AuthenticationComponent; @@ -50,6 +52,9 @@ import org.alfresco.repo.security.permissions.impl.ModelDAO; import org.alfresco.repo.security.permissions.impl.PermissionServiceImpl; import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.transaction.RetryingTransactionHelper; +import org.alfresco.service.cmr.lock.LockService; +import org.alfresco.service.cmr.lock.LockType; +import org.alfresco.service.cmr.lock.NodeLockedException; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentService; @@ -65,6 +70,7 @@ import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.cmr.site.SiteVisibility; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; +import org.alfresco.util.GUID; import org.alfresco.util.PropertyMap; import org.alfresco.util.test.junitrules.AlfrescoPerson; import org.alfresco.util.test.junitrules.ApplicationContextInit; @@ -83,33 +89,35 @@ import org.junit.rules.RuleChain; * Test class for some {@link ForumModel forum model}-related functionality, specifically comments. * There is no (fully-featured) "CommentService" or "DiscussionService" and the REST API simply creates the appropriate * content structure as required by the forum model. - * + * * @author Neil McErlean * @since 4.0 */ public class CommentsTest { private static final ApplicationContextInit APP_CONTEXT_INIT = new ApplicationContextInit(); - + public static final String USER_ONE_NAME = "userone"; + public static final String USER_TWO_NAME = "usertwo"; + public static final String USER_THREE_NAME = "userthree"; public static final AlfrescoPerson TEST_USER1 = new AlfrescoPerson(APP_CONTEXT_INIT, USER_ONE_NAME); - + // Tie them together in a static Rule Chain @ClassRule public static RuleChain STATIC_RULE_CHAIN = RuleChain.outerRule(APP_CONTEXT_INIT) .around(TEST_USER1); - + // A JUnit Rule to run all tests as user1 public RunAsFullyAuthenticatedRule runAsRule = new RunAsFullyAuthenticatedRule(TEST_USER1); - + // A JUnit Rule to manage test nodes use in each test method public TemporaryNodes testNodes = new TemporaryNodes(APP_CONTEXT_INIT); public TemporarySites testSites = new TemporarySites(APP_CONTEXT_INIT); - + // Tie them together in a non-static rule chain. @Rule public RuleChain ruleChain = RuleChain.outerRule(runAsRule) .around(testSites) .around(testNodes); - + // Services private static BehaviourFilter behaviourFilter; private static ContentService contentService; @@ -124,13 +132,14 @@ public class CommentsTest private static ActivityPostDAO postDAO; private static PermissionServiceImpl permissionServiceImpl; private static ModelDAO permissionModelDAO; + private static LockService lockService; // These NodeRefs are used by the test methods. private static NodeRef COMPANY_HOME; private SiteInfo testSite; private NodeRef testFolder; private List testDocs; - + @BeforeClass public static void initBasicServices() throws Exception { behaviourFilter = (BehaviourFilter)APP_CONTEXT_INIT.getApplicationContext().getBean("policyBehaviourFilter"); @@ -139,7 +148,7 @@ public class CommentsTest repositoryHelper = (Repository)APP_CONTEXT_INIT.getApplicationContext().getBean("repositoryHelper"); siteService = (SiteService)APP_CONTEXT_INIT.getApplicationContext().getBean("SiteService"); transactionHelper = (RetryingTransactionHelper)APP_CONTEXT_INIT.getApplicationContext().getBean("retryingTransactionHelper"); - + authenticationComponent = (AuthenticationComponent)APP_CONTEXT_INIT.getApplicationContext().getBean("authenticationComponent"); commentService = (CommentService)APP_CONTEXT_INIT.getApplicationContext().getBean("commentService"); authenticationService = (MutableAuthenticationService)APP_CONTEXT_INIT.getApplicationContext().getBean("AuthenticationService"); @@ -147,10 +156,11 @@ public class CommentsTest postDAO = (ActivityPostDAO)APP_CONTEXT_INIT.getApplicationContext().getBean("postDAO"); permissionServiceImpl = (PermissionServiceImpl)APP_CONTEXT_INIT.getApplicationContext().getBean("permissionServiceImpl"); permissionModelDAO = (ModelDAO)APP_CONTEXT_INIT.getApplicationContext().getBean("permissionsModelDAO"); - + lockService = (LockService)APP_CONTEXT_INIT.getApplicationContext().getBean("lockService"); + COMPANY_HOME = repositoryHelper.getCompanyHome(); } - + @Before public void createSomeContentForCommentingOn() throws Exception { // Create some content which we will comment on. @@ -160,16 +170,14 @@ public class CommentsTest testDocs = new ArrayList(3); for (int i = 0; i < 3; i++) { - NodeRef testNode = testNodes.createQuickFile(MimetypeMap.MIMETYPE_TEXT_PLAIN, COMPANY_HOME, "testDocInFolder" + i, TEST_USER1.getUsername()); + NodeRef testNode = testNodes.createQuickFile(MimetypeMap.MIMETYPE_TEXT_PLAIN, testFolder, "testDocInFolder_" + GUID.generate() + "_" + i, TEST_USER1.getUsername()); testDocs.add(testNode); } } - + // MNT-11667 "createComment" method creates activity for users who are not supposed to see the file @Test public void testMNT11667() throws Exception { - final String userTwo = "usertwo"; - try { transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() @@ -179,17 +187,17 @@ public class CommentsTest { authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName()); - createUser(userTwo); + createUser(USER_TWO_NAME); assertTrue(siteService.hasSite(testSite.getShortName())); authenticationComponent.setCurrentUser(USER_ONE_NAME); // invite user to a site with 'Collaborator' role - siteService.setMembership(testSite.getShortName(), userTwo, SiteModel.SITE_COLLABORATOR); + siteService.setMembership(testSite.getShortName(), USER_TWO_NAME, SiteModel.SITE_COLLABORATOR); assertEquals(SiteModel.SITE_MANAGER, siteService.getMembersRole(testSite.getShortName(), USER_ONE_NAME)); - assertEquals(SiteModel.SITE_COLLABORATOR, siteService.getMembersRole(testSite.getShortName(), userTwo)); + assertEquals(SiteModel.SITE_COLLABORATOR, siteService.getMembersRole(testSite.getShortName(), USER_TWO_NAME)); // get container of site NodeRef doclib = siteService.getContainer(testSite.getShortName(), SiteService.DOCUMENT_LIBRARY); @@ -233,7 +241,7 @@ public class CommentsTest assertTrue(permissionServiceImpl.hasPermission(nodeRef, getPermission(PermissionService.WRITE)) == AccessStatus.ALLOWED); assertTrue(permissionServiceImpl.hasPermission(nodeRef, getPermission(PermissionService.DELETE)) == AccessStatus.ALLOWED); - authenticationComponent.setCurrentUser(userTwo); + authenticationComponent.setCurrentUser(USER_TWO_NAME); assertTrue(permissionServiceImpl.hasPermission(nodeRef, getPermission(PermissionService.READ)) == AccessStatus.DENIED); assertTrue(permissionServiceImpl.hasPermission(nodeRef, getPermission(PermissionService.WRITE)) == AccessStatus.DENIED); @@ -248,24 +256,24 @@ public class CommentsTest { authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName()); - if (personService.personExists(userTwo)) + if (personService.personExists(USER_TWO_NAME)) { - personService.deletePerson(userTwo); + personService.deletePerson(USER_TWO_NAME); } - if (authenticationService.authenticationExists(userTwo)) + if (authenticationService.authenticationExists(USER_TWO_NAME)) { - authenticationService.deleteAuthentication(userTwo); + authenticationService.deleteAuthentication(USER_TWO_NAME); } } } - + private PermissionReference getPermission(String permission) { return permissionModelDAO.getPermissionReference(null, permission); } - + private void createUser(String userName) { // if user with given user name doesn't already exist then create user @@ -273,7 +281,7 @@ public class CommentsTest { // create user authenticationService.createAuthentication(userName, "password".toCharArray()); - + // create person properties PropertyMap personProps = new PropertyMap(); personProps.put(ContentModel.PROP_USERNAME, userName); @@ -282,12 +290,12 @@ public class CommentsTest personProps.put(ContentModel.PROP_EMAIL, "FirstName123.LastName123@email.com"); personProps.put(ContentModel.PROP_JOBTITLE, "JobTitle123"); personProps.put(ContentModel.PROP_JOBTITLE, "Organisation123"); - + // create person node for user personService.createPerson(personProps); } } - + /** * This test method comments on some nodes asserting that the commentCount rollup property * responds correctly to the changing number of comments. @@ -304,28 +312,28 @@ public class CommentsTest { assertCommentCountIs(nr, 0); } - + // Comment on each node twice Map> mapDiscussableToComments = new HashMap>(); - + for (NodeRef nr : testDocs) { final ArrayList comments = new ArrayList(); mapDiscussableToComments.put(nr, comments); - + comments.add(applyComment(nr, "Test comment 1 " + System.currentTimeMillis())); Thread.sleep(50); // 50 ms sleep so comments aren't simultaneous. - + comments.add(applyComment(nr, "Test comment 2 " + System.currentTimeMillis())); Thread.sleep(50); } - + // Check that the rollup comment counts are accurate. for (NodeRef nr : testDocs) { assertCommentCountIs(nr, 2); } - + // Remove comments for (Map.Entry> entry : mapDiscussableToComments.entrySet()) { @@ -363,39 +371,126 @@ public class CommentsTest assertTrue("Not enough test docs for this test case", testDocs.size() >= 2); NodeRef node1 = testDocs.get(0); NodeRef node2 = testDocs.get(1); - + // We will simulate pre-Swift commenting by temporarily disabling the behaviours that add the aspect & do the rollups. behaviourFilter.disableBehaviour(ForumModel.TYPE_POST); - + for (NodeRef nr : new NodeRef[]{node1, node2}) { // All test nodes initially do not have the commentsRollup aspect. assertFalse("Test node had comments rollup aspect.", nodeService.hasAspect(nr, ForumModel.ASPECT_COMMENTS_ROLLUP)); } - + // Comment on each node - we need to save one comment noderef in order to delete it later. NodeRef commentOnNode1 = applyComment(node1, "Hello", true); applyComment(node1, "Bonjour", true); applyComment(node2, "Hola", true); applyComment(node2, "Bout ye?", true); - + // Check that the rollup comment counts are still not present. And re-enable the behaviours after we check. for (NodeRef nr : new NodeRef[]{node1, node2}) { assertFalse("Test node had comments rollup aspect.", nodeService.hasAspect(nr, ForumModel.ASPECT_COMMENTS_ROLLUP)); } behaviourFilter.enableBehaviour(ForumModel.TYPE_POST); - + // Now the addition or deletion of a comment, should trigger a recalculation of the comment rollup from scratch. applyComment(node2, "hello again"); nodeService.deleteNode(commentOnNode1); assertCommentCountIs(node2, 3); assertCommentCountIs(node1, 1); - + return null; } }); } + + /** + * REPO-2557, ALF-21907 + */ + @Test public void testAddingCommentOnLockedNode() + { + // create user 2 and 3 + transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName()); + createUser(USER_TWO_NAME); + createUser(USER_THREE_NAME); + siteService.setMembership(testSite.getShortName(), USER_TWO_NAME, SiteModel.SITE_MANAGER); + siteService.setMembership(testSite.getShortName(), USER_THREE_NAME, SiteModel.SITE_MANAGER); + return null; + } + }); + + // switch to user 1 + authenticationComponent.setCurrentUser(USER_ONE_NAME); + + // create some comments + final NodeRef testDoc = testDocs.get(0); + transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + applyComment(testDoc, "Hello 1"); + applyComment(testDoc, "Hello 2"); + return null; + } + }); + + authenticationComponent.setCurrentUser(USER_TWO_NAME); + + // lock node + transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + lockService.lock(testDoc, LockType.WRITE_LOCK, (int) 3600, Lifetime.PERSISTENT, "someInfo"); + return null; + } + }); + + authenticationComponent.setCurrentUser(USER_THREE_NAME); + + try + { + transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + applyComment(testDoc, "Hello 3"); + return null; + } + }); + fail("NodeLockedException not thrown"); + } + catch(NodeLockedException e) + { + // Fails because is not the lock owner + } + + // change to lock owner + authenticationComponent.setCurrentUser(USER_TWO_NAME); + + transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + applyComment(testDoc, "Hello 3"); + return null; + } + }); + + assertCommentCountIs(testDoc, 3); + + authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName()); + } /** * This test method tests that nodes whose commentCount is set to -1 have their commentCounts recalculated. diff --git a/source/test-java/org/alfresco/repo/site/SiteMembershipTest.java b/source/test-java/org/alfresco/repo/site/SiteMembershipTest.java new file mode 100644 index 0000000000..5c787dfa72 --- /dev/null +++ b/source/test-java/org/alfresco/repo/site/SiteMembershipTest.java @@ -0,0 +1,136 @@ +/* + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.repo.site; + +import static org.junit.Assert.assertEquals; + +import java.util.UUID; + +import org.alfresco.service.cmr.site.SiteInfo; +import org.alfresco.service.cmr.site.SiteVisibility; +import org.junit.Before; +import org.junit.Test; + +/** + * Test Membership constructor logs. Based on REPO-2520 + * + * @author Alexandru Epure + */ +public class SiteMembershipTest +{ + SiteInfo siteInfo; + SiteMembership siteMember; + String personId = UUID.randomUUID().toString(); + String firstName = UUID.randomUUID().toString(); + String lastName = UUID.randomUUID().toString(); + String role = "Consumer"; + + String personErrorMessage = "Person required building site membership of "; + String firstNameErrorMessage = "FirstName required building site membership of "; + String lastNameErrorMessage = "LastName required building site membership of "; + String roleErrorMessage = "Role required building site membership of "; + + @Before + public void createSite() + { + String sitePreset = "testSiteMembershipPreset"; + String shortName = "testSiteMembershipShortName"; + String title = "testSiteMembershipTile"; + String description = "testSiteMembershipDescription"; + siteInfo = new SiteInfoImpl(sitePreset, shortName, title, description, + SiteVisibility.PUBLIC, null); + } + + @Test + public void testNullpersonInfo() throws Exception + { + try + { + siteMember = new SiteMembership(siteInfo, null, firstName, lastName, role); + } + catch (IllegalArgumentException e) + { + assertEquals(personErrorMessage + siteInfo.getShortName(), e.getMessage()); + } + + try + { + siteMember = new SiteMembership(siteInfo, null, role); + } + catch (IllegalArgumentException e) + { + assertEquals(personErrorMessage + siteInfo.getShortName(), e.getMessage()); + } + } + + @Test + public void testNullRole() throws Exception + { + try + { + siteMember = new SiteMembership(siteInfo, personId, firstName, lastName, null); + } + catch (IllegalArgumentException e) + { + assertEquals(roleErrorMessage + siteInfo.getShortName(), e.getMessage()); + } + + try + { + siteMember = new SiteMembership(siteInfo, personId, null); + } + catch (IllegalArgumentException e) + { + assertEquals(roleErrorMessage + siteInfo.getShortName(), e.getMessage()); + } + } + + @Test + public void testNullFirstName() throws Exception + { + try + { + siteMember = new SiteMembership(siteInfo, personId, null, lastName, role); + } + catch (IllegalArgumentException e) + { + assertEquals(firstNameErrorMessage + siteInfo.getShortName(), e.getMessage()); + } + } + + @Test + public void testNullLastNale() throws Exception + { + try + { + siteMember = new SiteMembership(siteInfo, personId, firstName, null, role); + } + catch (IllegalArgumentException e) + { + assertEquals(lastNameErrorMessage + siteInfo.getShortName(), e.getMessage()); + } + } +}