Merged 5.1-MNT1 (5.1.0) to HEAD (5.1)

115426 adavis: ACE-4520: Merged 5.1.N (5.1.1) to 5.1-MNT1 (5.1.0)
      << All the MNT-13871 commits at the end of phase 2 testing of 4.2.5 >>
      111899: Merged 5.0.N (5.0.3) to 5.1.N (5.1.0) (PARTIAL MERGE)
         111834: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            111589: Merged V4.1-BUG-FIX (4.1.11) to V4.2-BUG-FIX (4.2.6)
               111531: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                  -  Added small changes required for compilation of authorization module.,
      111901: Merged 5.0.N (5.0.3) to 5.1.N (5.1.0) (PARTIAL MERGE)
         111836: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            111765: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               111600: Merged V4.1-BUG-FIX (4.1.11) to PATCHES/V4.2.5 (4.2.5)
                  MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
                     - Extra changes that are required to make authorization module build green.,
      112553: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         112540: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            112447: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
               - Added configuration required to compile authorised-users module.,
      113101: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         112930: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            112707 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               112677 dvaserin: MNT-14780 (MNT-13871): Licence Error message when in overage
                - Place overage buffer information into License MBean and use it in admin license ftl.
               112634 adavis: MNT-13871: Merged DEV (V4.2.5-MNT-13871-LATEST) to V4.2.5 (4.2.5)
                  111550: Merged DEV (4.1.11) to DEV (4.2.5)
                     MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
                        - Merged all made changes in core alfresco projects as single commit to fresh dev branch forked from V4.1-BUG-FIX.
                     MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
                        - added try/finally approach to reset show delete users flag to default value.,
                  111574: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                     - Added V4.2.5 specific changes.,
                  111582: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                     - Updated the jar to correspond with the latest changes in authorised-users/4.2,
                  111751: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                     - Removed unnecessary configuration.,
                  111752: Merged DEV (V4.1.11) to DEV (V4.2.5)
                     111632: MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
                        - Fixed unit tests for build plan: https://bamboo.alfresco.com/bamboo/browse/DEV-ENT414-1,
                  111753: Merged DEV (4.1.11) to DEV (V4.2.5)
                     111719: MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
                        - Updated authorization related icons with ones provided by Mark Howarth.
                        - Information message in Deauthorize Dialog was changed to the on provided by Mark Howarth.,
                  111754: MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
                     - Updated to the latest authorised-users lib.,
                  111761: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                     - Fix for the SchemaReferenceFileTest.,
                  111800: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                     - Modified the test to create a tenant in a retrying transaction to solve the DataIntegrityViolationException.,
                  111801: Megred DEV (4.1.11) to DEV (4.2.5)
                     111795: MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
                        - Updated Deleted column to display text instead of tick icon.
                        - Added name for actions column.,
                  111813: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                     - Updated to the latest authorisation jar to fix the Scema Reference test.,
                  112020: MNT-14775: De-authorisation pop-up has similar title to first line of text
                    - Remove the duplicated text from the pop-up body
                    - Updated link to point the 4.2 documentation,
                  112134: MNT-14763: [UserAuth] New entries are added in the authorization table for each different username case
                   - Update authorization jar,
                  112144: MNT-13871: Optimized strings in users.get.properties,
                  112184: MNT-14762 : [UserAuth]Users from the ALFRESCO_ADMINISTRATORS LDAP group are not pre-authorized
                     - Updated authorized-users jar with fix for ldap administrators pre-authorization.,
                  112196: MNT-14729 : [UserAuth] The column header for the Deauthorize and Reauthorize button should have a name
                     - Updated name for re/de-authorize actions column.,
                  112202: MNT-14763: [UserAuth] New entries are added in the authorization table for each different username case
                   - Add new authorization jar to fix null errors,
                  112203: MNT-14779: System behaviour when system set read only due to licence exception
                   - Force read-write transaction for LoginPost script.,
                  112225: MNT-14763: [UserAuth] New entries are added in the authorization table for each different username case
                   - Add new authorization jar after unit test fixing.,
                  112226: MNT-14740 : [UserAuth] The message for the failed re authorization is not displayed onIE
                     - Code for reloading page was wrapped with YAHOO.lang.later() function.,
                  112247: MNT-14747 : [UserAuth]The Autorization State isn't change when the user logs via FTP.
                     - Updated authorization jar with fix for kerberos unit test.,
                  112259: MNT-14776: Heading banner text when using all allowed authorised users.
                     - Changed the message.
                     - Updated the authorised-users jar.,
                  112269: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                   - Wrap methods that uses 'authenticationComponent.setCurrentUser' into RetryingTransaction for retrying on DataIntegrityViolationException.,
                  112285: MNT-14747 : [UserAuth]The Autorization State isn't change when the user logs via FTP.
                     - Updated version for authorized-users jar.,
                  112388: MNT-14809: [UserAuth] On a cluster setup after running the hourly job only one node goes into R/O mode
                     - Updated the authorised-users.jar,
                  112439: MNT-14815 : Wrong documentation link used in the deauthorize message window
                     - Corrected link to documentation.,
                  112445: MNT-14818 : [UserAuth] Missing quotation mark in the user reauthorization window message
                     - Corrected message for reauthorization dialog.,
                  112450: MNT-14802: [UserAuth] License warning message displayed for all the users
                     - Updated the authorised-users jar.,
                  112454: MNT-14780: Licence Error message when in overage
                   - Make license warn messages on admin console the same as banner warn messages.,
                  112471: MNT-14773 : Sort state not persisted after authorisation action
                     - Sorting/paging state is now persists in sessionStorage.,
                  112478: MNT-14773 : Sort state not persisted after authorisation action
                     - Corrected previous fix.,
                  112483: MNT-14814: [UserAuth] System goes into R/O mode after running the hourly job
                     - Updated the authorised-users jar to the latest version.,
                  112512: MNT-14833: [UserAuth] User cannot login on both nodes (cluster env.)
                   - Update authorization jar.,
                  112556: MNT-14787: [UserAuth] Login via NFS works when the license limit exceed
                     - Modified the exception handling of setCurrentUser method. Now all the exceptions are rethrown.,
                  112570: MNT-14838: Correct the Max Users string in the Admin Console License Screen
                     - Corrected the string, remove the incorrect translations from the bundle.,
                  112572: REVERSE MERGED  <<code is not worth to implement>>
                     112471 : MNT-14773 : Sort state not persisted after authorisation action
                        - Sorting/paging state is now persists in sessionStorage. 
                     112478 : MNT-14773 : Sort state not persisted after authorisation action
                        - Corrected previous fix. ,
                  112610: MNT-14837 : Report license overage to the log files on authorization/deauthorization of users
                     - Updated users authorization jar file.,
                  112627: MNT-14839: [UserAuth]Alfresco goes in read -only after reauthorize a user from LDAP ALFESCO_ADMINISTRATORS group
                     - Updated the authorised-users jar to the latest version.
         Merged DEV (V5.0.2-MNT-13871) to 5.0.N (5.0.3)
            111954: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
               - Removed context reference to authorization.,
            112003: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
               -  Added copying of sources and configuration from authorised-users to the output directory during build.,
            112014: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
               - Modified the build configuration to unpack the resources to the test folders.,
            112027: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
               - Added unpacking of authorisation resources to repoitory-crypto project.,
            112067: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
               - Removed unpacking of resources, changed the context imports to point to authorization.,
         112952: Merged DEV (V5.0.2-MNT-13871) to 5.0.N (5.0.3)
            111887: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
               - Corrected the authorised-users version to correspond to 5.0.,
         113060: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113059 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113058 adavis: MNT-13871: Count authorised users as those who've logged in, not total # of person objects
                  - Version dependency for alfresco-authorised-users moved to top level pom,
      113103: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         113036 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113030 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113019 amukha: MNT-14862 MNT-13871: [UserAuth] Login via FTP works when the license limit exceed
                  - Corrected the AlfrescoFtpAuthenticator to rollback teh transaction if an exception was thrown.,
      113215: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         113213 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3) (PARTIAL MERGE)
            113209 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113124: MNT-13871: MNT-14875: The table creation code for authorised-user (MNT-13871) need to be moved back into the main Alfresco code base
                  - Added the scripts to the main code base.
                  - Updated the authorised-users.jar,
               113203: MNT-13871: MNT-14875: The table creation code for authorised-user (MNT-13871) need to be moved back into the main Alfresco code base
                  - Moved the patch to the main code.
                  - Updated the authorised-users.jar
               113128: MNT-14867 (MNT-13871) : [UserAuth] License user limit exceeded by adding users to ALFRESCO_ADMINISTRATORS LDAP group
                  - Updated auhtorised-users jar.,,
      113246: MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
         - Try to fix one of the two build errors on 5.1.N as a result of r113101,
      113578: MNT-14901 MNT-13871: 4.2.5 User Auth code merged to 5.1.N caused 2 build failures
         - Fixed the test SiteServiceImplTest.testGroupMembership ,
      113647: MNT-14901 MNT-13871: 4.2.5 User Auth code merged to 5.1.N caused 2 build failures
         - Fixed the test SiteServiceImplTest.testListSiteMemberships that failed after testGroupMembership was fixed, but didn't delete the created site.,
      113935: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113924 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113914 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113903 gbroadbent: GERMAN: Updated bundle based on EN-rev112938,
      113936: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113925 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113915 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113904 gbroadbent: SPANISH: Updated bundle based on EN-rev112938,
      113937: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113926 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113916 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113905 gbroadbent: FRENCH: Updated bundle based on EN-rev112938,
      113939: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113927 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113917 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113906 gbroadbent: ITALIAN: Updated bundle based on EN-rev112938,
      113940: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113928 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113918 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113907 gbroadbent: JAPANESE: Updated bundle based on EN-rev112938,
      113941: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113929 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113919 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113908 gbroadbent: NORWEGIAN Bokmal: Updated bundle based on EN-rev112938,
      113942: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113930 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113920 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113909 gbroadbent: DUCTH: Updated bundle based on EN-rev112938,
      113943: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113931 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113921 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113910 gbroadbent: BRAZILIAN PORTUGUESE: Updated bundle based on EN-rev112938,
      113944: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113932 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113922 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113911 gbroadbent: SIMPLIFIED Chinese: Updated bundle based on EN-rev112938,
      113945: MNT-13871: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) (PARTIAL MERGE)
         113933 adavis: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            113923 adavis: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               113912 gbroadbent: RUSSIAN: Updated bundle based on EN-rev112938,
      114046: MNT-14901 MNT-13871: 4.2.5 User Auth code merged to 5.1.N caused 2 build failures
         - Removed the hardcoded value in the test.,
      114589: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114485 amorarasu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114335 amukha: Merged V4.1-BUG-FIX (4.1.11) to V4.2-BUG-FIX (4.2.6)
               114334 amukha: MNT-14984 MNT-13871: Modification to the User Authentication Warning wording.
                  - Changed the warning message.,
      114828: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114749 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114703 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114574 gbroadbent: GERMAN: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871,
      114829: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114750 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114704 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114575 gbroadbent: SPANISH: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871,
      114830: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114751 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114705 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114576 gbroadbent: FRENCH: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871,
      114831: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114752 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114706 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114577 gbroadbent: ITALIAN: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871,
      114832: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114753 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114708 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114578 gbroadbent: JAPANESE: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871,
      114833: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114754 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114709 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114579 gbroadbent: DUTCH: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871,
      114834: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114755 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114710 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114580 gbroadbent: RUSSIAN: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871,
      114835: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114756 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114711 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114593 gbroadbent: SIMP CHINESE: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871,
      114836: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1)
         114757 rmunteanu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
            114712 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
               114594 gbroadbent: NORWEGIAN Bokmal: Updated file based on EN-rev114472. Fix for MNT-14984 MNT-13871


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@115664 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2015-10-30 00:09:37 +00:00
parent b6aa21f5f0
commit 1bf5fb2b73
35 changed files with 1525 additions and 976 deletions

View File

@@ -49,4 +49,7 @@
<import resource="classpath:alfresco/invitation-service-context.xml"/>
<import resource="classpath:alfresco/webdav-context.xml"/>
<import resource="classpath*:alfresco/patch/*-context.xml" />
<import resource="classpath*:alfresco/dbscripts/*-context.xml" />
<import resource="classpath*:alfresco/enterprise/authorization-context.xml" />
<import resource="classpath*:alfresco/enterprise/enterprise-usage-services-context.xml" />
</beans>

View File

@@ -28,6 +28,7 @@
<value>classpath:alfresco/caches.properties</value>
<!-- Enterprise defaults -->
<!-- Overrides supplied if this is an enterprise install (none exist for community) -->
<value>classpath*:alfresco/enterprise/caches.properties</value>
<value>classpath*:alfresco/enterprise/repository.properties</value>
<!-- <value>classpath:alfresco/jndi.properties</value> -->
<!-- Overrides supplied by modules -->

View File

@@ -0,0 +1,34 @@
--
-- Title: Create Authorization Status
-- Database: MySQL InnoDB
-- Since: V4.1.11 Schema 5156
-- Author: Pavel Yurkevich
--
-- Please contact support@alfresco.com if you need assistance with the upgrade.
--
CREATE TABLE alf_auth_status
(
id BIGINT NOT NULL AUTO_INCREMENT,
username VARCHAR(100) NOT NULL,
deleted BIT NOT NULL,
authorized BIT NOT NULL,
checksum BLOB NOT NULL,
authaction VARCHAR(10) NOT NULL,
UNIQUE INDEX idx_alf_auth_usr_stat (username, authorized),
INDEX idx_alf_auth_action (authaction),
INDEX idx_alf_auth_deleted (deleted),
PRIMARY KEY (id)
) ENGINE=InnoDB;
--
-- Record script finish
--
DELETE FROM alf_applied_patch WHERE id = 'patch.db-V4.1-AuthorizationTables';
INSERT INTO alf_applied_patch
(id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report)
VALUES
(
'patch.db-V4.1-AuthorizationTables', 'Manually executed script upgrade V4.1: Authorization status tables',
0, 6075, -1, 6076, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed'
);

View File

@@ -765,6 +765,64 @@
</index>
</indexes>
</table>
<table name="alf_auth_status">
<columns>
<column name="id" order="1">
<type>bigint</type>
<nullable>false</nullable>
<autoincrement>true</autoincrement>
</column>
<column name="username" order="2">
<type>varchar(100)</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="deleted" order="3">
<type>bit</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="authorized" order="4">
<type>bit</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="checksum" order="5">
<type>blob</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="authaction" order="6">
<type>varchar(10)</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
</columns>
<primarykey name="PRIMARY">
<columnnames>
<columnname order="1">id</columnname>
</columnnames>
</primarykey>
<foreignkeys/>
<indexes>
<index name="idx_alf_auth_usr_stat" unique="true">
<columnnames>
<columnname>username</columnname>
<columnname>authorized</columnname>
</columnnames>
</index>
<index name="idx_alf_auth_deleted" unique="false">
<columnnames>
<columnname>deleted</columnname>
</columnnames>
</index>
<index name="idx_alf_auth_action" unique="false">
<columnnames>
<columnname>authaction</columnname>
</columnnames>
</index>
</indexes>
</table>
<table name="alf_authority">
<columns>
<column name="id" order="1">

View File

@@ -0,0 +1,35 @@
--
-- Title: Create Authorization Status
-- Database: PostgreSQL
-- Since: V4.1.11 Schema 5156
-- Author: Alex Mukha
--
-- Please contact support@alfresco.com if you need assistance with the upgrade.
--
CREATE SEQUENCE alf_auth_status_seq START WITH 1 INCREMENT BY 1;
CREATE TABLE alf_auth_status
(
id INT8 NOT NULL,
username VARCHAR(100) NOT NULL,
deleted BOOL NOT NULL,
authorized BOOL NOT NULL,
checksum BYTEA NOT NULL,
authaction VARCHAR(10) NOT NULL,
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX idx_alf_auth_usr_stat ON alf_auth_status (username, authorized);
CREATE INDEX idx_alf_auth_deleted ON alf_auth_status (deleted);
CREATE INDEX idx_alf_auth_action ON alf_auth_status (authaction);
--
-- Record script finish
--
DELETE FROM alf_applied_patch WHERE id = 'patch.db-V4.1-AuthorizationTables';
INSERT INTO alf_applied_patch
(id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report)
VALUES
(
'patch.db-V4.1-AuthorizationTables', 'Manually executed script upgrade V4.1: Authorization status tables',
0, 6075, -1, 6076, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed'
);

View File

@@ -22,6 +22,7 @@
<sequence name="alf_audit_model_seq"/>
<sequence name="alf_authority_alias_seq"/>
<sequence name="alf_authority_seq"/>
<sequence name="alf_auth_status_seq"/>
<sequence name="alf_child_assoc_seq"/>
<sequence name="alf_content_data_seq"/>
<sequence name="alf_content_url_seq"/>
@@ -905,6 +906,64 @@
</index>
</indexes>
</table>
<table name="alf_auth_status">
<columns>
<column name="id" order="1">
<type>int8</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="username" order="2">
<type>varchar(100)</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="deleted" order="3">
<type>bool</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="authorized" order="4">
<type>bool</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="checksum" order="5">
<type>bytea</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
<column name="authaction" order="6">
<type>varchar(10)</type>
<nullable>false</nullable>
<autoincrement>false</autoincrement>
</column>
</columns>
<primarykey name="alf_auth_status_pkey">
<columnnames>
<columnname order="1">id</columnname>
</columnnames>
</primarykey>
<indexes>
<index name="idx_alf_auth_usr_stat" unique="true">
<columnnames>
<columnname>username</columnname>
<columnname>authorized</columnname>
</columnnames>
</index>
<index name="idx_alf_auth_deleted" unique="false">
<columnnames>
<columnname>deleted</columnname>
</columnnames>
</index>
<index name="idx_alf_auth_action" unique="false">
<columnnames>
<columnname>authaction</columnname>
</columnnames>
</index>
</indexes>
<foreignkeys/>
</table>
<table name="alf_child_assoc">
<columns>
<column name="id" order="1">

View File

@@ -22,6 +22,7 @@
<value>classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoCreate-UsageTables.sql</value>
<value>classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoCreate-SubscriptionTables.sql</value>
<value>classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoCreate-TenantTables.sql</value>
<value>classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoCreate-AuthorizationTables.sql</value>
</list>
</property>
</bean>
@@ -59,6 +60,7 @@
<ref bean="patch.db-V4.1-createIdxAlfNodeTQN" />
<ref bean="patch.db-V4.2-restructure-idx_alf_nprop_s-MSSQL" />
<ref bean="patch.db-V4.2-migrate-locale-multilingual" />
<ref bean="patch.db-V4.1-AuthorizationTables" />
<ref bean="patch.db-V5.0-ContentUrlEncryptionTables" />
<ref bean="patch.db-V5.1-metadata-query-indexes" />
</list>

View File

@@ -84,6 +84,11 @@
<property name="keyResourceLoader" ref="springKeyResourceLoader"/>
<property name="validateKeyChanges" value="true"/>
<property name="encryptionKeysRegistry" ref="encryptionKeysRegistry"/>
<property name="keysToValidate">
<set>
<value>metadata</value>
</set>
</property>
</bean>
<bean id="keyProvider" class="org.alfresco.encryption.KeystoreKeyProvider" init-method="init">

View File

@@ -47,7 +47,7 @@ cm_contentmodel.property.cm_lastName.title=Nachname
cm_contentmodel.property.cm_lastName.description=Nachname der Person
cm_contentmodel.property.cm_middleName.title=Zweitname
cm_contentmodel.property.cm_middleName.description=Zweitname der Person
cm_contentmodel.property.cm_email.title=E-Mail Adresse
cm_contentmodel.property.cm_email.title=E-Mail-Adresse
cm_contentmodel.property.cm_email.description=E-Mail-Adresse der Person
cm_contentmodel.property.cm_homeFolderProvider.title=Home-Ordnerprovider
cm_contentmodel.property.cm_homeFolderProvider.description=Home-Ordnerprovider
@@ -277,7 +277,7 @@ cm_contentmodel.property.cm_taggable.description=Tags
cm_contentmodel.aspect.cm_attachable.title=Anhangf\u00e4hig
cm_contentmodel.aspect.cm_attachable.description=L\u00e4sst andere Repository Objekte als Anhang zu
cm_contentmodel.association.cm_attachments.title=Anlagen
cm_contentmodel.association.cm_attachments.title=Anh\u00e4nge
cm_contentmodel.association.cm_attachments.description=Angeh\u00e4ngte Repository-Objekte
cm_contentmodel.aspect.cm_emailed.title=Per E-Mail versandt

View File

@@ -23,7 +23,7 @@ cm_contentmodel.property.cm_content.description=Contenuto
cm_contentmodel.property.cm_content.cm_content.size=Dimensioni
cm_contentmodel.property.cm_content.cm_content.mimetype=Tipo MIME
cm_contentmodel.type.cm_linkfile.title=Link a file
cm_contentmodel.type.cm_linkfile.title=Collega file
cm_contentmodel.type.cm_linkfile.description=Link a un altro file
cm_contentmodel.property.cm_path.title=Percorso file collegato
cm_contentmodel.property.cm_path.description=Percorso del file collegato
@@ -39,8 +39,8 @@ cm_contentmodel.type.cm_person.description=Persona
cm_contentmodel.property.cm_userName.title=Nome utente
cm_contentmodel.property.cm_userName.description=Nome utente della persona
cm_contentmodel.property.cm_homeFolder.title=Cartella homepage
cm_contentmodel.property.cm_homeFolder.description=Cartella della homepage della persona
cm_contentmodel.property.cm_homeFolder.title=Cartella home page
cm_contentmodel.property.cm_homeFolder.description=Cartella della home page della persona
cm_contentmodel.property.cm_firstName.title=Nome
cm_contentmodel.property.cm_firstName.description=Nome della persona
cm_contentmodel.property.cm_lastName.title=Cognome
@@ -49,20 +49,20 @@ cm_contentmodel.property.cm_middleName.title=Secondo nome
cm_contentmodel.property.cm_middleName.description=Secondo nome della persona
cm_contentmodel.property.cm_email.title=Indirizzo e-mail
cm_contentmodel.property.cm_email.description=Indirizzo e-mail della persona
cm_contentmodel.property.cm_homeFolderProvider.title=Provider cartella homepage
cm_contentmodel.property.cm_homeFolderProvider.description=Provider cartella homepage
cm_contentmodel.property.cm_defaultHomeFolderPath.title=Percorso cartella homepage
cm_contentmodel.property.cm_defaultHomeFolderPath.description=Percorso alla cartella homepage della persona
cm_contentmodel.property.cm_presenceProvider.title=Provider Presense
cm_contentmodel.property.cm_presenceProvider.description=Provider Presense
cm_contentmodel.property.cm_presenceUsername.title=Nome utente Presense
cm_contentmodel.property.cm_presenceUsername.description=Nome utente Presense
cm_contentmodel.property.cm_homeFolderProvider.title=Provider cartella home page
cm_contentmodel.property.cm_homeFolderProvider.description=Provider cartella home page
cm_contentmodel.property.cm_defaultHomeFolderPath.title=Percorso cartella home page
cm_contentmodel.property.cm_defaultHomeFolderPath.description=Percorso della cartella home page della persona
cm_contentmodel.property.cm_presenceProvider.title=Presence Provider
cm_contentmodel.property.cm_presenceProvider.description=Presence Provider
cm_contentmodel.property.cm_presenceUsername.title=Nome utente Presence
cm_contentmodel.property.cm_presenceUsername.description=Nome utente Presence
cm_contentmodel.property.cm_jobtitle.title=Qualifica
cm_contentmodel.property.cm_jobtitle.description=Qualifica della persona
cm_contentmodel.property.cm_location.title=Localit\u00e0
cm_contentmodel.property.cm_location.description=Localit\u00e0 della persona
cm_contentmodel.property.cm_persondescription.title=Sommario
cm_contentmodel.property.cm_persondescription.description=Sommario della persona
cm_contentmodel.property.cm_persondescription.title=Riepilogo
cm_contentmodel.property.cm_persondescription.description=Riepilogo della persona
cm_contentmodel.property.cm_telephone.title=Telefono
cm_contentmodel.property.cm_telephone.description=Numero di telefono della persona
cm_contentmodel.property.cm_mobile.title=Cellulare
@@ -78,11 +78,11 @@ cm_contentmodel.property.cm_companyaddress2.description=Riga 2 dell'indirizzo de
cm_contentmodel.property.cm_companyaddress3.title=Riga 3 indirizzo
cm_contentmodel.property.cm_companyaddress3.description=Riga 3 dell'indirizzo dell'azienda della persona
cm_contentmodel.property.cm_companypostcode.title=Codice postale
cm_contentmodel.property.cm_companypostcode.description=Codice postale dell'azienda della persona
cm_contentmodel.property.cm_companypostcode.description=Codice postale (CAP) dell'azienda della persona
cm_contentmodel.property.cm_companytelephone.title=Telefono
cm_contentmodel.property.cm_companytelephone.description=Numero di telefono dell'azienda della persona
cm_contentmodel.property.cm_companyfax.title=Fax
cm_contentmodel.property.cm_companyfax.description=Numero fax dell'azienda della persona
cm_contentmodel.property.cm_companyfax.description=Numero di fax dell'azienda della persona
cm_contentmodel.property.cm_companyemail.title=E-mail
cm_contentmodel.property.cm_companyemail.description=Indirizzo e-mail dell'azienda della persona
cm_contentmodel.property.cm_skype.title=Skype
@@ -90,9 +90,9 @@ cm_contentmodel.property.cm_skype.description=ID utente Skype della persona
cm_contentmodel.property.cm_instantmsg.title=Messaggistica immediata
cm_contentmodel.property.cm_instantmsg.description=ID utente messaggistica immediata della persona
cm_contentmodel.property.cm_userStatus.title=Stato
cm_contentmodel.property.cm_userStatus.description=Stato corrente della persona
cm_contentmodel.property.cm_userStatus.description=Stato attuale della persona
cm_contentmodel.property.cm_userStatusTime.title=Ora stato
cm_contentmodel.property.cm_userStatusTime.description=Ora ultimo aggiornamento dello stato della persona
cm_contentmodel.property.cm_userStatusTime.description=Ora dell'ultimo aggiornamento dello stato della persona
cm_contentmodel.property.cm_googleusername.title=Nome utente Google
cm_contentmodel.property.cm_googleusername.description=Nome utente Google della persona
cm_contentmodel.property.cm_sizeCurrent.title=Uso
@@ -114,8 +114,8 @@ cm_contentmodel.type.cm_category.description=Categoria
cm_contentmodel.association.cm_subcategories.title=Categorie
cm_contentmodel.association.cm_subcategories.description=Sottocategorie della categoria
cm_contentmodel.aspect.cm_titled.title=Titolato
cm_contentmodel.aspect.cm_titled.description=Titolato
cm_contentmodel.aspect.cm_titled.title=Con titolo
cm_contentmodel.aspect.cm_titled.description=Con titolo
cm_contentmodel.property.cm_title.title=Titolo
cm_contentmodel.property.cm_title.description=Titolo del contenuto
cm_contentmodel.property.cm_description.title=Descrizione
@@ -139,18 +139,18 @@ cm_contentmodel.aspect.cm_author.description=Autore
cm_contentmodel.property.cm_author.title=Autore
cm_contentmodel.property.cm_author.description=Autore
cm_contentmodel.aspect.cm_localizable.title=Localizable
cm_contentmodel.aspect.cm_localizable.description=Localizable
cm_contentmodel.aspect.cm_localizable.title=Localizzabile
cm_contentmodel.aspect.cm_localizable.description=Localizzabile
cm_contentmodel.property.cm_locale.title=Impostazioni locali
cm_contentmodel.property.cm_locale.description=Impostazioni locali
cm_contentmodel.aspect.cm_translatable.title=Translatable
cm_contentmodel.aspect.cm_translatable.description=Translatable
cm_contentmodel.aspect.cm_translatable.title=Traducibile
cm_contentmodel.aspect.cm_translatable.description=Traducibile
cm_contentmodel.association.cm_translations.title=Traduzioni
cm_contentmodel.association.cm_translations.description=Traduzioni
cm_contentmodel.aspect.cm_transformable.title=Transformable
cm_contentmodel.aspect.cm_transformable.description=Transformable
cm_contentmodel.aspect.cm_transformable.title=Trasformabile
cm_contentmodel.aspect.cm_transformable.description=Trasformabile
cm_contentmodel.association.cm_formats.title=Formati
cm_contentmodel.association.cm_formats.description=Elementi trasformati
@@ -188,23 +188,23 @@ cm_contentmodel.property.cm_rights.description=Diritti
cm_contentmodel.property.cm_subject.title=Oggetto
cm_contentmodel.property.cm_subject.description=Oggetto
cm_contentmodel.aspect.cm_basable.title=Basable
cm_contentmodel.aspect.cm_basable.description=Basable
cm_contentmodel.aspect.cm_basable.title=Basabile
cm_contentmodel.aspect.cm_basable.description=Basabile
cm_contentmodel.association.cm_basis.title=Base
cm_contentmodel.association.cm_basis.description=Base
cm_contentmodel.aspect.cm_partable.title=Partable
cm_contentmodel.aspect.cm_partable.description=Partable
cm_contentmodel.aspect.cm_partable.title=Divisibile in parti
cm_contentmodel.aspect.cm_partable.description=Divisibile in parti
cm_contentmodel.association.cm_parts.title=Parti
cm_contentmodel.association.cm_parts.description=Parti
cm_contentmodel.aspect.cm_referencing.title=Referencing
cm_contentmodel.aspect.cm_referencing.description=Referencing
cm_contentmodel.aspect.cm_referencing.title=Gestibile con riferimenti
cm_contentmodel.aspect.cm_referencing.description=Gestibile con riferimenti
cm_contentmodel.association.cm_references.title=Riferimenti
cm_contentmodel.association.cm_references.description=Riferimenti
cm_contentmodel.aspect.cm_replacable.title=Replaceable
cm_contentmodel.aspect.cm_replacable.description=Replaceable
cm_contentmodel.aspect.cm_replacable.title=Sostituibile
cm_contentmodel.aspect.cm_replacable.description=Sostituibile
cm_contentmodel.association.cm_replaces.title=Sostituzioni
cm_contentmodel.association.cm_replaces.description=Sostituzioni
@@ -217,16 +217,16 @@ cm_contentmodel.property.cm_to.description=Valido fino a
cm_contentmodel.aspect.cm_summarizable.title=Riepilogabile
cm_contentmodel.aspect.cm_summarizable.description=Riepilogabile
cm_contentmodel.property.cm_summary.title=Sommario
cm_contentmodel.property.cm_summary.description=Sommario
cm_contentmodel.property.cm_summary.title=Riepilogo
cm_contentmodel.property.cm_summary.description=Riepilogo
cm_contentmodel.aspect.cm_countable.title=Countable
cm_contentmodel.aspect.cm_countable.description=Countable
cm_contentmodel.property.cm_hits.title=Conteggio
cm_contentmodel.property.cm_hits.description=Conteggio
cm_contentmodel.aspect.cm_countable.title=Contabile
cm_contentmodel.aspect.cm_countable.description=Contabile
cm_contentmodel.property.cm_hits.title=Riscontri
cm_contentmodel.property.cm_hits.description=Riscontri
cm_contentmodel.aspect.cm_copiedFrom.title=Copied From
cm_contentmodel.aspect.cm_copiedFrom.description=Copied From
cm_contentmodel.aspect.cm_copiedFrom.title=Copiato da
cm_contentmodel.aspect.cm_copiedFrom.description=Copiato da
cm_contentmodel.property.cm_source.title=Fonte
cm_contentmodel.property.cm_source.description=Fonte
@@ -254,11 +254,11 @@ cm_contentmodel.property.cm_lockLifetime.title=Durata blocco
cm_contentmodel.property.cm_lockLifetime.description=Durata blocco
cm_contentmodel.property.cm_expiryDate.title=Data di scadenza
cm_contentmodel.property.cm_expiryDate.description=Data di scadenza
cm_contentmodel.property.cm_lockIsDeep.title=Blocco completo
cm_contentmodel.property.cm_lockIsDeep.description=Blocco completo
cm_contentmodel.property.cm_lockIsDeep.title=Deep Lock
cm_contentmodel.property.cm_lockIsDeep.description=Deep Lock
cm_contentmodel.aspect.cm_subscribable.title=Subscribable
cm_contentmodel.aspect.cm_subscribable.description=Subscribable
cm_contentmodel.aspect.cm_subscribable.title=Sottoscrivibile
cm_contentmodel.aspect.cm_subscribable.description=Sottoscrivibile
cm_contentmodel.association.cm_subscribedBy.title=Sottoscritto da
cm_contentmodel.association.cm_subscribedBy.description=Sottoscritto da
@@ -270,12 +270,12 @@ cm_contentmodel.aspect.cm_generalclassifiable.description=Classificabile
cm_contentmodel.property.cm_categories.title=Categorie
cm_contentmodel.property.cm_categories.description=Categorie
cm_contentmodel.aspect.cm_taggable.title=Etichettabile
cm_contentmodel.aspect.cm_taggable.description=Etichettabile
cm_contentmodel.aspect.cm_taggable.title=Taggabile
cm_contentmodel.aspect.cm_taggable.description=Taggabile
cm_contentmodel.property.cm_taggable.title=Tag
cm_contentmodel.property.cm_taggable.description=Tag
cm_contentmodel.aspect.cm_attachable.title=Associabile
cm_contentmodel.aspect.cm_attachable.title=Allegabile
cm_contentmodel.aspect.cm_attachable.description=Consente di allegare altri oggetti del repository
cm_contentmodel.association.cm_attachments.title=Allegati
cm_contentmodel.association.cm_attachments.description=Oggetti del repository allegati
@@ -345,25 +345,25 @@ cm_contentmodel.property.audio_engineer.title=Ingegnere
cm_contentmodel.property.audio_engineer.description=Ingegnere di registrazione
cm_contentmodel.property.audio_genre.title=Genere
cm_contentmodel.property.audio_genre.description=Genere musicale
cm_contentmodel.property.audio_trackNumber.title=Numero della traccia audio
cm_contentmodel.property.audio_trackNumber.title=Numero di traccia
cm_contentmodel.property.audio_trackNumber.description=Numero della traccia audio dell'album
cm_contentmodel.property.audio_releaseDate.title=Data di pubblicazione
cm_contentmodel.property.audio_releaseDate.description=Data di pubblicazione
cm_contentmodel.property.audio_sampleRate.title=Frequenza di campionamento
cm_contentmodel.property.audio_sampleRate.description=Frequenza di campionamento
cm_contentmodel.property.audio_sampleType.title=Tipo di campionamento
cm_contentmodel.property.audio_sampleType.description=Tipo di campionamento audio, tipicamennte uno tra 8Int, 16Int, 32Int o 32Float
cm_contentmodel.property.audio_sampleType.description=Tipo di campionamento audio, tipicamente uno tra 8Int, 16Int, 32Int o 32Float
cm_contentmodel.property.audio_channelType.title=Tipo di canale
cm_contentmodel.property.audio_channelType.description=Tipo di canale audio, tipicamente uno tra Mono, Stereo, 5,1 o 7,1
cm_contentmodel.property.audio_compressor.title=Compressore
cm_contentmodel.property.audio_compressor.description=Compressore audio utilizzato, ad esempio MP3 o FLAC
cm_contentmodel.aspect.cm_indexControl.title=Controllo indice
cm_contentmodel.aspect.cm_indexControl.description=Il comportamento indice di controllo
cm_contentmodel.aspect.cm_indexControl.description=Il comportamento per il controllo dell'indice
cm_contentmodel.property.cm_isIndexed.title=Indicizzato
cm_contentmodel.property.cm_isIndexed.description=Il nodo \u00e8 indicizzato e pu\u00f2 essere trovato tramite ricerca.
cm_contentmodel.property.cm_isContentIndexed.title=Contenuto indicizzato
cm_contentmodel.property.cm_isContentIndexed.description=Le propriet\u00e0 d:content del nodo sono indicizzate?
cm_contentmodel.property.cm_tagScopeSummary.title=Sommario tag
cm_contentmodel.property.cm_tagScopeSummary.description=Sommario tag
cm_contentmodel.property.cm_tagScopeSummary.title=Riepilogo tag
cm_contentmodel.property.cm_tagScopeSummary.description=Riepilogo tag

View File

@@ -61,7 +61,7 @@ cm_contentmodel.property.cm_jobtitle.title=\u5f79\u8077\u540d
cm_contentmodel.property.cm_jobtitle.description=\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u5f79\u8077
cm_contentmodel.property.cm_location.title=\u5834\u6240
cm_contentmodel.property.cm_location.description=\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u5834\u6240
cm_contentmodel.property.cm_persondescription.title=\u6982\u8981
cm_contentmodel.property.cm_persondescription.title=\u8981\u7d04
cm_contentmodel.property.cm_persondescription.description=\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u6982\u8981
cm_contentmodel.property.cm_telephone.title=\u96fb\u8a71
cm_contentmodel.property.cm_telephone.description=\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u96fb\u8a71\u756a\u53f7
@@ -123,11 +123,11 @@ cm_contentmodel.property.cm_description.description=\u30b3\u30f3\u30c6\u30f3\u30
cm_contentmodel.aspect.cm_auditable.title=\u76e3\u67fb\u53ef\u80fd
cm_contentmodel.aspect.cm_auditable.description=\u76e3\u67fb\u53ef\u80fd
cm_contentmodel.property.cm_created.title=\u4f5c\u6210\u65e5
cm_contentmodel.property.cm_created.description=\u4f5c\u6210\u65e5
cm_contentmodel.property.cm_created.title=\u4f5c\u6210\u65e5\u6642
cm_contentmodel.property.cm_created.description=\u4f5c\u6210\u65e5\u6642
cm_contentmodel.property.cm_creator.title=\u4f5c\u6210\u8005
cm_contentmodel.property.cm_creator.description=\u3053\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u4f5c\u6210\u8005
cm_contentmodel.property.cm_modified.title=\u5909\u66f4\u65e5
cm_contentmodel.property.cm_modified.title=\u5909\u66f4\u65e5\u6642
cm_contentmodel.property.cm_modified.description=\u3053\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u6700\u7d42\u5909\u66f4\u65e5
cm_contentmodel.property.cm_modifier.title=\u5909\u66f4\u8005
cm_contentmodel.property.cm_modifier.description=\u3053\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u6700\u7d42\u5909\u66f4\u8005

View File

@@ -128,7 +128,7 @@ cm_contentmodel.property.cm_created.description=Datum gemaakt
cm_contentmodel.property.cm_creator.title=Maker
cm_contentmodel.property.cm_creator.description=De persoon die dit object heeft gemaakt
cm_contentmodel.property.cm_modified.title=Datum gewijzigd
cm_contentmodel.property.cm_modified.description=Datum waarop dit object voor het laatst is gewijzigd
cm_contentmodel.property.cm_modified.description=De datum waarop dit object voor het laatst is gewijzigd
cm_contentmodel.property.cm_modifier.title=Gewijzigd door
cm_contentmodel.property.cm_modifier.description=De persoon die dit object voor het laatst heeft gewijzigd
cm_contentmodel.property.cm_accessed.title=Datum laatste toegang

View File

@@ -128,7 +128,7 @@ cm_contentmodel.property.cm_created.description=\u0414\u0430\u0442\u0430 \u0441\
cm_contentmodel.property.cm_creator.title=\u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c
cm_contentmodel.property.cm_creator.description=\u041a\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442
cm_contentmodel.property.cm_modified.title=\u0414\u0430\u0442\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f
cm_contentmodel.property.cm_modified.description=\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430
cm_contentmodel.property.cm_modified.description=\u0412\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430
cm_contentmodel.property.cm_modifier.title=\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440
cm_contentmodel.property.cm_modifier.description=\u041a\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442
cm_contentmodel.property.cm_accessed.title=\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430
@@ -361,9 +361,9 @@ cm_contentmodel.property.audio_compressor.description=\u041a\u043e\u0434\u0435\u
cm_contentmodel.aspect.cm_indexControl.title=\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432
cm_contentmodel.aspect.cm_indexControl.description=\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432
cm_contentmodel.property.cm_isIndexed.title=\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d
cm_contentmodel.property.cm_isIndexed.description=\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0435\u0433\u043e \u043d\u0430\u0439\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0438\u0441\u043a\u0430.
cm_contentmodel.property.cm_isIndexed.description=\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u043b\u0438 \u0443\u0437\u0435\u043b \u0438 \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0435\u0433\u043e \u043d\u0430\u0439\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0438\u0441\u043a\u0430.
cm_contentmodel.property.cm_isContentIndexed.title=\u041a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d
cm_contentmodel.property.cm_isContentIndexed.description=\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 d:content \u043e\u0431\u044a\u0435\u043a\u0442\u0430?
cm_contentmodel.property.cm_isContentIndexed.description=\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 d:content \u0443\u0437\u043b\u0430?
cm_contentmodel.property.cm_tagScopeSummary.title=\u0421\u0432\u043e\u0434\u043a\u0430 \u043f\u043e \u0442\u0435\u0433\u0430\u043c
cm_contentmodel.property.cm_tagScopeSummary.description=\u0421\u0432\u043e\u0434\u043a\u0430 \u043f\u043e \u0442\u0435\u0433\u0430\u043c

View File

@@ -84,6 +84,7 @@ system.usage.warn.limit_documents_approached=The allowable content limit of {0}
system.usage.warn.limit_documents_reached=The allowable content limit of {0} has been reached. There are {1} content objects in the system.
system.usage.err.limit_users_exceeded=The allowable user limit of {0} as per your license agreement has been exceeded. There are currently {1} users in the system. Please contact your Alfresco sales representative to purchase additional user licenses.
system.usage.err.limit_users_exceeded_verbose=The allowable user limit of {0} as per your license agreement has been exceeded. Users added: {1}. Please contact your Alfresco sales representative to purchase additional user licenses.
system.usage.warn.limit_users_overage=The allowable user limit of {0} for your license agreement has been reached. There are {1} users in the system, {2} are temporarily permitted. Please contact your Alfresco sales representative to purchase additional user licenses.
system.usage.err.limit_documents_exceeded=The allowable content limit of {0} has been exceeded. There are currently {1} content objects in the system.
system.usage.err.limit_license_expiring=The Alfresco license will expire in {0} days.

View File

@@ -84,6 +84,7 @@ system.usage.warn.limit_documents_approached=Die zul\u00e4ssige Inhaltsbegrenzun
system.usage.warn.limit_documents_reached=Die zul\u00e4ssige Inhaltsbegrenzung von {0} wurde erreicht. Es gibt {1} Inhaltsobjekte im System.
system.usage.err.limit_users_exceeded=Die gem\u00e4\u00df Ihrer Lizenzvereinbarung zul\u00e4ssige Benutzerzahl von {0} wurde \u00fcberschritten. Es gibt derzeit {1} Benutzer im System. Bitte wenden Sie sich an Ihren Alfresco-Vertriebsvertreter, um weitere Benutzerlizenzen zu erwerben.
system.usage.err.limit_users_exceeded_verbose=Die gem\u00e4\u00df Ihrer Lizenzvereinbarung zul\u00e4ssige Benutzerzahl von {0} wurde \u00fcberschritten. Benutzer hinzugef\u00fcgt: {1}. Bitte wenden Sie sich an Ihren Alfresco-Vertriebsvertreter, um weitere Benutzerlizenzen zu erwerben.
system.usage.warn.limit_users_overage=Die gem\u00e4\u00df Ihrer Lizenzvereinbarung zul\u00e4ssige Benutzerzahl von {0} wurde erreicht. Es gibt {1} Benutzer im System, {2} sind kurzzeitig zul\u00e4ssig. Bitte wenden Sie sich an Ihren Alfresco-Vertriebsvertreter, um weitere Benutzerlizenzen zu erwerben.
system.usage.err.limit_documents_exceeded=Die zul\u00e4ssige Inhaltsbegrenzung von {0} wurde erreicht. Es gibt derzeit {1} Inhaltsobjekte im System.
system.usage.err.limit_license_expiring=Die Alfresco Lizenz l\u00e4uft in {0}\u00a0Tagen ab.

View File

@@ -84,6 +84,7 @@ system.usage.warn.limit_documents_approached=Se est\u00e1 llegando al l\u00edmit
system.usage.warn.limit_documents_reached=Se ha alcanzado el l\u00edmite de contenido permitido de {0}. Hay {1} objetos de contenido en el sistema.
system.usage.err.limit_users_exceeded=Se ha superado el l\u00edmite de usuarios permitidos de {0} de su acuerdo de licencia. En este momento, hay {1} usuarios en el sistema. P\u00f3ngase en contacto con un representante de ventas de Alfresco para adquirir licencias de usuario adicionales.
system.usage.err.limit_users_exceeded_verbose=Se ha superado el l\u00edmite de usuarios permitidos de {0} de su acuerdo de licencia. Usuarios a\u00f1adidos: {1}. P\u00f3ngase en contacto con un representante de ventas de Alfresco para adquirir licencias de usuario adicionales.
system.usage.warn.limit_users_overage=Se ha llegado al l\u00edmite de usuarios permitidos de {0} para su acuerdo de licencia. Hay {1} usuarios en el sistema; se permiten temporalmente {2} usuarios. P\u00f3ngase en contacto con un representante de ventas de Alfresco para adquirir licencias de usuario adicionales.
system.usage.err.limit_documents_exceeded=Se ha superado el l\u00edmite de contenido permitido de {0}. En este momento, hay {1} objetos de contenido el sistema.
system.usage.err.limit_license_expiring=La licencia de Alfresco se vencer\u00e1 en {0} d\u00edas.

View File

@@ -78,12 +78,13 @@ system.usage.err.no_txn=RepoUsageComponent must be called in a transaction.
system.usage.err.no_txn_readwrite=RepoUsageComponent must be called in a read-write transaction.
# START TRANSLATION
system.usage.warn.limit_users_approached=Vous avez presque atteint le nombre maximum d''utilisateurs autoris\u00e9s d\u00e9fini dans votre contrat de licence, qui est de {0}. Il y a {1} utilisateurs dans le syst\u00e8me. Pour l''achat de licences suppl\u00e9mentaires, veuillez contacter votre repr\u00e9sentant Alfresco.
system.usage.warn.limit_users_reached=Vous avez atteint le nombre maximum d''utilisateurs autoris\u00e9s d\u00e9fini dans votre contrat de licence, qui est de {0}. Il y a {1} utilisateurs dans le syst\u00e8me. Pour l''achat de licences suppl\u00e9mentaires, veuillez contacter votre repr\u00e9sentant Alfresco.
system.usage.warn.limit_users_approached=Vous avez presque atteint le nombre maximum d''utilisateurs autoris\u00e9s d\u00e9fini dans votre contrat de licence, qui est de {0}. Il y a {1} utilisateurs dans le syst\u00e8me. Pour l'achat de licences suppl\u00e9mentaires, veuillez contacter votre repr\u00e9sentant Alfresco.
system.usage.warn.limit_users_reached=Vous avez atteint le nombre maximum d''utilisateurs autoris\u00e9s d\u00e9fini dans votre contrat de licence, qui est de {0}. Il y a {1} utilisateurs dans le syst\u00e8me. Pour l'achat de licences suppl\u00e9mentaires, veuillez contacter votre repr\u00e9sentant Alfresco.
system.usage.warn.limit_documents_approached=Le nombre maximum de contenus autoris\u00e9s de {0} est presque atteint. Il y a {1} objets de contenu dans le syst\u00e8me.
system.usage.warn.limit_documents_reached=Le nombre maximum de contenus autoris\u00e9s de {0} a \u00e9t\u00e9 atteint. Il y a {1} objets de contenu dans le syst\u00e8me.
system.usage.err.limit_users_exceeded=Le nombre maximum d''utilisateurs autoris\u00e9s d\u00e9fini dans votre contrat de licence, qui est de {0}, a \u00e9t\u00e9 d\u00e9pass\u00e9. Il y a actuellement {1} utilisateurs dans le syst\u00e8me. Pour l''achat de licences suppl\u00e9mentaires, veuillez contacter votre repr\u00e9sentant Alfresco.
system.usage.err.limit_users_exceeded_verbose=Le nombre maximum d''utilisateurs autoris\u00e9s d\u00e9fini dans votre contrat de licence, qui est de {0}, a \u00e9t\u00e9 d\u00e9pass\u00e9. Utilisateurs ajout\u00e9s\u00a0: {1}. Pour l''achat de licences suppl\u00e9mentaires, veuillez contacter votre repr\u00e9sentant Alfresco.
system.usage.warn.limit_users_overage=Vous avez atteint le nombre maximum d''utilisateurs autoris\u00e9s d\u00e9fini dans votre contrat de licence, qui est de {0}. Il y a {1} utilisateurs dans le syst\u00e8me\u00a0; le nombre temporairement autoris\u00e9 est de {2}. Pour l''achat de licences suppl\u00e9mentaires, veuillez contacter votre repr\u00e9sentant Alfresco.
system.usage.err.limit_documents_exceeded=Le nombre maximum de contenus autoris\u00e9s de {0} a \u00e9t\u00e9 d\u00e9pass\u00e9. Il y a actuellement {1} objets de contenu dans le syst\u00e8me.
system.usage.err.limit_license_expiring=La licence Alfresco expirera dans {0} jours.

View File

@@ -78,12 +78,13 @@ system.usage.err.no_txn=RepoUsageComponent must be called in a transaction.
system.usage.err.no_txn_readwrite=RepoUsageComponent must be called in a read-write transaction.
# START TRANSLATION
system.usage.warn.limit_users_approached=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza \u00e8 stato quasi raggiunto. Esistono {1} utenti nel sistema. Contattare il proprio rappresentante vendite Alfresco per acquistare licenze utente aggiuntive.
system.usage.warn.limit_users_reached=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza \u00e8 stato raggiunto. Esistono {1} utenti nel sistema. Contattare il proprio rappresentante vendite Alfresco per acquistare licenze utente aggiuntive.
system.usage.warn.limit_documents_approached=Il limite di contenuti consentiti ({0}) sta per essere raggiunto. Esistono {1} oggetti contenuto nel sistema.
system.usage.warn.limit_documents_reached=Il limite di contenuti consentiti ({0}) \u00e8 stato raggiunto. Esistono {1} oggetti contenuto nel sistema.
system.usage.err.limit_users_exceeded=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza \u00e8 stato superato. Attualmente esistono {1} utenti nel sistema. Contattare il proprio rappresentante vendite Alfresco per acquistare licenze utente aggiuntive.
system.usage.err.limit_users_exceeded_verbose=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza \u00e8 stato superato. Utenti aggiunti: {1}. Contattare il proprio rappresentante vendite Alfresco per acquistare licenze utente aggiuntive.
system.usage.warn.limit_users_approached=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza sta per essere raggiunto. Ci sono {1} utenti nel sistema. Contattare il proprio rappresentante di vendita Alfresco per acquistare licenze utente aggiuntive.
system.usage.warn.limit_users_reached=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza \u00e8 stato raggiunto. Ci sono {1} utenti nel sistema. Contattare il proprio rappresentante di vendita Alfresco per acquistare licenze utente aggiuntive.
system.usage.warn.limit_documents_approached=Il limite di contenuti consentiti ({0}) sta per essere raggiunto. Ci sono {1} oggetti contenuto nel sistema.
system.usage.warn.limit_documents_reached=Il limite di contenuti consentiti ({0}) \u00e8 stato raggiunto. Ci sono {1} oggetti contenuto nel sistema.
system.usage.err.limit_users_exceeded=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza \u00e8 stato superato. Attualmente ci sono {1} utenti nel sistema. Contattare il proprio rappresentante di vendita Alfresco per acquistare licenze utente aggiuntive.
system.usage.err.limit_users_exceeded_verbose=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza \u00e8 stato superato. Utenti aggiunti: {1}. Contattare il proprio rappresentante di vendita Alfresco per acquistare licenze utente aggiuntive.
system.usage.warn.limit_users_overage=Il limite di utenti consentiti ({0}) previsto dall''accordo di licenza \u00e8 stato raggiunto. Ci sono {1} utenti nel sistema e sono ammessi temporaneamente {2} utenti. Contattare il proprio rappresentante di vendita Alfresco per acquistare licenze utente aggiuntive.
system.usage.err.limit_documents_exceeded=Il limite di contenuti consentiti ({0}) \u00e8 stato superato. Attualmente esistono {1} oggetti contenuto nel sistema.
system.usage.err.limit_license_expiring=La licenza Alfresco scade tra {0} giorni.

View File

@@ -78,12 +78,13 @@ system.usage.err.no_txn=RepoUsageComponent must be called in a transaction.
system.usage.err.no_txn_readwrite=RepoUsageComponent must be called in a read-write transaction.
# START TRANSLATION
system.usage.warn.limit_users_approached=\u3082\u3046\u5c11\u3057\u3067\u3001\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u9650\u754c\u306e\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u306b\u9054\u3057\u307e\u3059\u3002 \u30b7\u30b9\u30c6\u30e0\u306b {1} \u4eba\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u3044\u307e\u3059\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.warn.limit_users_reached=\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u9650\u754c\u306e\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u306b\u9054\u3057\u307e\u3057\u305f\u3002 \u30b7\u30b9\u30c6\u30e0\u306b {1} \u4eba\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u3044\u307e\u3059\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.warn.limit_documents_approached=\u3082\u3046\u5c11\u3057\u3067\u3001\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u9650\u754c\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u6570 ({0} \u500b) \u306b\u9054\u3057\u307e\u3059\u3002 \u30b7\u30b9\u30c6\u30e0\u306b {1} \u500b\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u307e\u3059\u3002
system.usage.warn.limit_documents_reached=\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u9650\u754c\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u6570 ({0}) \u306b\u9054\u3057\u307e\u3057\u305f\u3002 \u30b7\u30b9\u30c6\u30e0\u306b {1} \u500b\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u307e\u3059\u3002
system.usage.err.limit_users_exceeded=\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u9650\u754c\u306e\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002 \u73fe\u5728\u30b7\u30b9\u30c6\u30e0\u306b {1} \u4eba\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u3044\u307e\u3059\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.err.limit_users_exceeded_verbose=\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u9650\u754c\u306e\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002 \u8ffd\u52a0\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u6570: {1}\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.warn.limit_users_approached=\u3082\u3046\u5c11\u3057\u3067\u3001\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u6700\u5927\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u306b\u9054\u3057\u307e\u3059\u3002 \u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30e6\u30fc\u30b6\u30fc\u304c {1} \u4eba\u3044\u307e\u3059\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.warn.limit_users_reached=\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u6700\u5927\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u306b\u9054\u3057\u307e\u3057\u305f\u3002 \u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30e6\u30fc\u30b6\u30fc\u304c {1} \u4eba\u3044\u307e\u3059\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.warn.limit_documents_approached=\u3082\u3046\u5c11\u3057\u3067\u3001\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u6700\u5927\u30b3\u30f3\u30c6\u30f3\u30c4\u6570 ({0} \u500b) \u306b\u9054\u3057\u307e\u3059\u3002 \u30b7\u30b9\u30c6\u30e0\u306b {1} \u500b\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u307e\u3059\u3002
system.usage.warn.limit_documents_reached=\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u6700\u5927\u30b3\u30f3\u30c6\u30f3\u30c4\u6570 ({0}) \u306b\u9054\u3057\u307e\u3057\u305f\u3002 \u30b7\u30b9\u30c6\u30e0\u306b {1} \u500b\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u307e\u3059\u3002
system.usage.err.limit_users_exceeded=\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u6700\u5927\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002 \u73fe\u5728\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30e6\u30fc\u30b6\u30fc\u304c {1} \u4eba\u3044\u307e\u3059\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.err.limit_users_exceeded_verbose=\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u6700\u5927\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002 \u8ffd\u52a0\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u6570: {1}\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.warn.limit_users_overage=\u30e9\u30a4\u30bb\u30f3\u30b9\u4f7f\u7528\u8a31\u8afe\u5951\u7d04\u3067\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u6700\u5927\u30e6\u30fc\u30b6\u30fc\u6570 ({0} \u4eba) \u306b\u9054\u3057\u307e\u3057\u305f\u3002 \u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30e6\u30fc\u30b6\u30fc\u304c {1} \u4eba\u3044\u307e\u3059\u304c\u3001\u4e00\u6642\u7684\u306b\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u306e\u306f {2} \u4eba\u307e\u3067\u3067\u3059\u3002 Alfresco \u306e\u55b6\u696d\u62c5\u5f53\u306b\u9023\u7d61\u3057\u3066\u3001\u8ffd\u52a0\u306e\u30e6\u30fc\u30b6\u30fc\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u8cfc\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002
system.usage.err.limit_documents_exceeded=\u8a31\u53ef\u3055\u308c\u308b\u9650\u754c\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u6570{0}\u3092\u8d85\u3048\u307e\u3057\u305f\u3002 \u73fe\u5728\u30b7\u30b9\u30c6\u30e0\u306b {1} \u500b\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u307e\u3059\u3002
system.usage.err.limit_license_expiring=Alfresco \u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u304c\u3042\u3068 {0} \u65e5\u3067\u671f\u9650\u5207\u308c\u306b\u306a\u308a\u307e\u3059\u3002

View File

@@ -79,13 +79,14 @@ system.usage.err.no_txn_readwrite=RepoUsageComponent must be called in a read-wr
# START TRANSLATION
system.usage.warn.limit_users_approached=Den tillatte brukergrensen {0} if\u00f8lge din lisensavtale, n\u00e6rmer seg. Det er {1} brukere p\u00e5 systemet. Kontakt salgsrepresentanten hos Alfresco for \u00e5 kj\u00f8pe flere brukerlisenser.
system.usage.warn.limit_users_reached=Den tillatte brukergrensen {0} if\u00f8lge din lisensavtale, er n\u00e5dd. Det er {1} brukere p\u00e5 systemet. Kontakt salgsrepresentanten hos Alfresco for \u00e5 kj\u00f8pe flere brukerlisenser.
system.usage.warn.limit_documents_approached=Du n\u00e6rmer deg den tillatte innholdsgrensen p\u00e5 {0} innholdsobjekter. Det er {1} innholdsobjekter p\u00e5 systemet.
system.usage.warn.limit_users_reached=Den tillatte brukergrensen {0} if\u00f8lge din lisensavtale, er n\u00e5dd. Det er {1} brukere p\u00e5 systemet. Kontakt salgsrepresentanten hos Alfresco for \u00e5 kj\u00f8pe flere brukerlisenser.
system.usage.warn.limit_documents_approached=Du n\u00e6rmer deg den tillatte innholdsgrensen p\u00e5 {0} innholdsobjekter. Det er {1} innholdsobjekter p\u00e5 systemet.
system.usage.warn.limit_documents_reached=Du har n\u00e5dd den tillatte innholdsgrensen p\u00e5 {0} innholdsobjekter. Det er {1} innholdsobjekter p\u00e5 systemet.
system.usage.err.limit_users_exceeded=Den tillatte brukergrensen {0} if\u00f8lge din lisensavtale, er overskredet. Det er for \u00f8yeblikket {1} brukere p\u00e5 systemet. Kontakt salgsrepresentanten hos Alfresco for \u00e5 kj\u00f8pe flere brukerlisenser.
system.usage.err.limit_users_exceeded_verbose=Den tillatte brukergrensen {0} if\u00f8lge din lisensavtale, er overskredet. Brukere lagt til: {1}. Kontakt salgsrepresentanten hos Alfresco for \u00e5 kj\u00f8pe flere brukerlisenser.
system.usage.warn.limit_users_overage=Den tillatte brukergrensen {0} if\u00f8lge din lisensavtale, er n\u00e5dd. Det finnes {1} brukere i systemet, det tillates {2} midlertidig. Kontakt salgsrepresentanten hos Alfresco for \u00e5 kj\u00f8pe flere brukerlisenser.
system.usage.err.limit_documents_exceeded=Den tillatte innholdsgrensen for {0} er overskredet. Det er for \u00f8yeblikket {1} innholdsobjekter p\u00e5 systemet.
system.usage.err.limit_documents_exceeded=Den tillatte innholdsgrensen for {0} er overskredet. Det er for \u00f8yeblikket {1} innholdsobjekter p\u00e5 systemet.
system.usage.err.limit_license_expiring=Alfresco-lisensen utl\u00f8per om {0} dager.
system.usage.err.limit_license_expired=Alresco-lisensen er utl\u00f8pt.

View File

@@ -84,6 +84,7 @@ system.usage.warn.limit_documents_approached=De toegestane contentlimiet van {0}
system.usage.warn.limit_documents_reached=De toegestane contentlimiet van {0} is bereikt. Er zijn {1} contentobjecten in het systeem.
system.usage.err.limit_users_exceeded=De toegestane gebruikerslimiet van {0} conform uw licentieovereenkomst is overschreden. Er zijn momenteel {1} gebruikers in het systeem. Neem contact op met uw Alfresco-verkoper om extra gebruikerslicenties aan te schaffen.
system.usage.err.limit_users_exceeded_verbose=De toegestane gebruikerslimiet van {0} conform uw licentieovereenkomst is overschreden. Toegevoegde gebruikers: {1}. Neem contact op met uw Alfresco-verkoper om extra gebruikerslicenties aan te schaffen.
system.usage.warn.limit_users_overage=De toegestane gebruikerslimiet van {0} voor uw licentieovereenkomst is bereikt. Er zijn {1} gebruikers in het systeem, er zijn er {2} tijdelijk toegestaan. Neem contact op met uw Alfresco-verkoper om extra gebruikerslicenties aan te schaffen.
system.usage.err.limit_documents_exceeded=De toegestane contentlimiet van {0} is overschreden. Er zijn momenteel {1} contentobjecten aanwezig in het systeem.
system.usage.err.limit_license_expiring=De Alfresco-licentie verloopt over {0} dagen.

View File

@@ -78,12 +78,13 @@ system.usage.err.no_txn=RepoUsageComponent must be called in a transaction.
system.usage.err.no_txn_readwrite=RepoUsageComponent must be called in a read-write transaction.
# START TRANSLATION
system.usage.warn.limit_users_approached=O limite permitido de usu\u00e1rio {0} para a sua licen\u00e7a est\u00e1 pr\u00f3ximo. H\u00e1 {1} usu\u00e1rios no sistema. Entre em contato com seu representante de vendas Alfresco para adquirir licen\u00e7as de usu\u00e1rio adicionais.
system.usage.warn.limit_users_reached=O limite permitido de usu\u00e1rio {0} para a sua licen\u00e7a foi atingido. H\u00e1 {1} usu\u00e1rios no sistema. Entre em contato com seu representante de vendas Alfresco para adquirir licen\u00e7as de usu\u00e1rio adicionais.
system.usage.warn.limit_documents_approached=O limite de conte\u00fado permitido de {0} est\u00e1 pr\u00f3ximo de ser atingido. H\u00e1 {1} objetos de conte\u00fado no sistema.
system.usage.warn.limit_documents_reached=O limite de conte\u00fado permitido de {0} foi atingido. H\u00e1 {1} objetos de conte\u00fado no sistema.
system.usage.err.limit_users_exceeded=O limite permitido de usu\u00e1rio {0} para a sua licen\u00e7a foi excedido. Atualmente h\u00e1 {1} usu\u00e1rios no sistema. Entre em contato com seu representante de vendas Alfresco para adquirir licen\u00e7as de usu\u00e1rio adicionais.
system.usage.warn.limit_users_approached=O limite permitido de usu\u00e1rio {0} para a sua licen\u00e7a est\u00e1 pr\u00f3ximo. H\u00e1 {1} usu\u00e1rios no sistema. Entre em contato com seu representante de vendas Alfresco para adquirir licen\u00e7as de usu\u00e1rio adicionais.
system.usage.warn.limit_users_reached=O limite permitido de usu\u00e1rio {0} para a sua licen\u00e7a foi atingido. H\u00e1 {1} usu\u00e1rios no sistema. Entre em contato com seu representante de vendas Alfresco para adquirir licen\u00e7as de usu\u00e1rio adicionais.
system.usage.warn.limit_documents_approached=O limite de conte\u00fado permitido de {0} est\u00e1 pr\u00f3ximo de ser atingido. H\u00e1 {1} objetos de conte\u00fado no sistema.
system.usage.warn.limit_documents_reached=O limite de conte\u00fado permitido de {0} foi atingido. H\u00e1 {1} objetos de conte\u00fado no sistema.
system.usage.err.limit_users_exceeded=O limite permitido de usu\u00e1rio {0} para a sua licen\u00e7a foi excedido. Atualmente h\u00e1 {1} usu\u00e1rios no sistema. Entre em contato com seu representante de vendas Alfresco para adquirir licen\u00e7as de usu\u00e1rio adicionais.
system.usage.err.limit_users_exceeded_verbose=O limite permitido de usu\u00e1rio {0} para a sua licen\u00e7a foi excedido. Usu\u00e1rios adicionados: {1}. Entre em contato com seu representante de vendas Alfresco para adquirir licen\u00e7as de usu\u00e1rio adicionais.
system.usage.warn.limit_users_overage=O limite permitido de usu\u00e1rio de {0} para a sua licen\u00e7a foi atingido. Existem {1} usu\u00e1rios no sistema, {2} s\u00e3o permitidos. Entre em contato com seu representante de vendas Alfresco para adquirir licen\u00e7as de usu\u00e1rio adicionais.
system.usage.err.limit_documents_exceeded=O limite de conte\u00fado permitido de {0} foi ultrapassado. Atualmente h\u00e1 {1} objetos de conte\u00fado no sistema.
system.usage.err.limit_license_expiring=A licen\u00e7a do Alfresco ir\u00e1 expirar em {0} dias.

View File

@@ -84,6 +84,7 @@ system.usage.warn.limit_documents_approached=\u0414\u043e\u043f\u0443\u0441\u044
system.usage.warn.limit_documents_reached=\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 {0}. \u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430: {1}.
system.usage.err.limit_users_exceeded=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 {0}, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u043c \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u043c, \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439: {1}. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u044e Alfresco \u0434\u043b\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439 \u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.
system.usage.err.limit_users_exceeded_verbose=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 {0}, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u043c \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u043c, \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438: {1} \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u044e Alfresco \u0434\u043b\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439 \u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.
system.usage.warn.limit_users_overage=\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 ({0}), \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u043c \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u043c. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435: {1}; \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439: {2}. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u044e Alfresco \u0434\u043b\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439 \u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.
system.usage.err.limit_documents_exceeded=\u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 {0}. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430: {1}.
system.usage.err.limit_license_expiring=\u0427\u0438\u0441\u043b\u043e \u0434\u043d\u0435\u0439 \u0434\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 Alfresco: {0}.

View File

@@ -80,10 +80,11 @@ system.usage.err.no_txn_readwrite=RepoUsageComponent must be called in a read-wr
# START TRANSLATION
system.usage.warn.limit_users_approached=\u5373\u5c06\u8fbe\u5230\u8bb8\u53ef\u8bc1\u534f\u8bae\u5141\u8bb8\u7684\u7528\u6237\u9650\u989d {0}\u3002 \u7cfb\u7edf\u4e2d\u6709 {1} \u4f4d\u7528\u6237\u3002 \u8bf7\u8054\u7cfb\u60a8\u7684 Alfresco \u9500\u552e\u4ee3\u8868\u4ee5\u8d2d\u4e70\u989d\u5916\u7684\u7528\u6237\u8bb8\u53ef\u8bc1\u3002
system.usage.warn.limit_users_reached=\u5df2\u7ecf\u8fbe\u5230\u8bb8\u53ef\u8bc1\u534f\u8bae\u5141\u8bb8\u7684\u7528\u6237\u9650\u989d {0}\u3002 \u7cfb\u7edf\u4e2d\u6709 {1} \u4f4d\u7528\u6237\u3002 \u8bf7\u8054\u7cfb\u60a8\u7684 Alfresco \u9500\u552e\u4ee3\u8868\u4ee5\u8d2d\u4e70\u989d\u5916\u7684\u7528\u6237\u8bb8\u53ef\u8bc1\u3002
system.usage.warn.limit_documents_approached=\u5373\u5c06\u8fbe\u5230\u5141\u8bb8\u7684\u5185\u5bb9\u9650\u989d {0}\u3002 \u7cfb\u7edf\u4e2d\u6709 {1} \u4e2a\u5185\u5bb9\u5bf9\u8c61\u3002
system.usage.warn.limit_documents_approached=\u5373\u5c06\u8fbe\u5230\u5141\u8bb8\u7684\u5185\u5bb9\u9650\u989d {0}\u3002 \u7cfb\u7edf\u4e2d\u6709 {1} \u4e2a\u5185\u5bb9\u5bf9\u8c61\u3002
system.usage.warn.limit_documents_reached=\u5df2\u7ecf\u8fbe\u5230\u5141\u8bb8\u7684\u5185\u5bb9\u9650\u989d {0}\u3002 \u7cfb\u7edf\u4e2d\u6709 {1} \u4e2a\u5185\u5bb9\u5bf9\u8c61\u3002
system.usage.err.limit_users_exceeded=\u5df2\u7ecf\u8d85\u8fc7\u8bb8\u53ef\u8bc1\u534f\u8bae\u5141\u8bb8\u7684\u7528\u6237\u9650\u989d {0}\u3002 \u7cfb\u7edf\u4e2d\u76ee\u524d\u6709 {1} \u4f4d\u7528\u6237\u3002 \u8bf7\u8054\u7cfb\u60a8\u7684 Alfresco \u9500\u552e\u4ee3\u8868\u4ee5\u8d2d\u4e70\u989d\u5916\u7684\u7528\u6237\u8bb8\u53ef\u8bc1\u3002
system.usage.err.limit_users_exceeded_verbose=\u5df2\u7ecf\u8d85\u8fc7\u8bb8\u53ef\u8bc1\u534f\u8bae\u5141\u8bb8\u7684\u7528\u6237\u9650\u989d {0}\u3002 \u6dfb\u52a0\u7684\u7528\u6237\u6570\uff1a {1} \u8bf7\u8054\u7cfb\u60a8\u7684 Alfresco \u9500\u552e\u4ee3\u8868\u4ee5\u8d2d\u4e70\u989d\u5916\u7684\u7528\u6237\u8bb8\u53ef\u8bc1\u3002
system.usage.warn.limit_users_overage=\u5df2\u7ecf\u8fbe\u5230\u8bb8\u53ef\u8bc1\u534f\u8bae\u5141\u8bb8\u7684\u7528\u6237\u9650\u989d {0}\u3002 \u7cfb\u7edf\u4e2d\u6709 {1} \u4f4d\u7528\u6237\uff0c\u6682\u65f6\u5141\u8bb8\u7684\u7528\u6237\u6570\u4e3a {2}\u3002 \u8bf7\u8054\u7cfb\u60a8\u7684 Alfresco \u9500\u552e\u4ee3\u8868\u4ee5\u8d2d\u4e70\u989d\u5916\u7684\u7528\u6237\u8bb8\u53ef\u8bc1\u3002
system.usage.err.limit_documents_exceeded=\u5df2\u7ecf\u8d85\u8fc7\u5141\u8bb8\u7684\u5185\u5bb9\u9650\u989d {0}\u3002 \u7cfb\u7edf\u4e2d\u76ee\u524d\u6709 {1} \u4e2a\u5185\u5bb9\u5bf9\u8c61\u3002
system.usage.err.limit_license_expiring=Alfresco \u8bb8\u53ef\u8bc1\u5c06\u5728 {0} \u5929\u540e\u5230\u671f\u3002

View File

@@ -26,7 +26,7 @@
Import all modules and related components.
-->
<import resource="classpath*:alfresco/module-context.xml" />
<!--
Import of the minimal extensions and bean overrides.
-->

View File

@@ -77,6 +77,10 @@
<type>d:content</type>
<multiple>false</multiple>
</property>
<property name="sys:keyStore">
<type>d:content</type>
<multiple>false</multiple>
</property>
</properties>
</type>

View File

@@ -1227,6 +1227,17 @@
</bean>
</property>
</bean>
<bean id="patch.db-V4.1-AuthorizationTables" class="org.alfresco.repo.admin.patch.impl.SchemaUpgradeScriptPatch" parent="basePatch">
<property name="id"><value>patch.db-V4.1-AuthorizationTables</value></property>
<property name="description"><value>patch.schemaUpgradeScript.description</value></property>
<property name="fixesFromSchema"><value>0</value></property>
<property name="fixesToSchema"><value>9010</value></property>
<property name="targetSchema"><value>9011</value></property>
<property name="scriptUrl">
<value>classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoCreate-AuthorizationTables.sql</value>
</property>
</bean>
<bean id="patch.addInviteAddDirectEmailTemplates" class="org.alfresco.repo.admin.patch.impl.GenericBootstrapPatch" parent="basePatch" >
<property name="id"><value>patch.addInviteAddDirectEmailTemplates</value></property>

View File

@@ -23,4 +23,4 @@ version.build=r@scm-revision@-b@build-number@
# Schema number
version.schema=9010
version.schema=9011

View File

@@ -1,24 +1,25 @@
/*
* Copyright (C) 2005-2010 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* 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
* Copyright (C) 2005-2010 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* 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 <http://www.gnu.org/licenses/>.
*/
package org.alfresco.filesys.auth.ftp;
import javax.transaction.Status;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import org.alfresco.filesys.alfresco.AlfrescoClientInfo;
@@ -117,6 +118,17 @@ public class AlfrescoFtpAuthenticator extends FTPAuthenticatorBase {
{
if ( logger.isDebugEnabled())
logger.debug( ex);
try
{
tx.setRollbackOnly();
}
catch (SystemException e)
{
if (logger.isDebugEnabled())
{
logger.debug(e);
}
}
}
finally
{

View File

@@ -372,6 +372,7 @@ public class AlfrescoRpcAuthenticator implements RpcAuthenticator, InitializingB
{
if ( logger.isErrorEnabled())
logger.error( "Error in RPC authenticator setting current user", ex);
throw ex;
}
}

View File

@@ -95,7 +95,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi
private int defaultListMaxResults = 5000;
private boolean honorHintUseCQ = true;
private static final String HINT_CQ_SUFFIX = " [hint:useCQ]";
protected static final String HINT_CQ_SUFFIX = " [hint:useCQ]";
public void afterPropertiesSet() throws Exception
{
@@ -165,11 +165,11 @@ public class People extends BaseScopableProcessorExtension implements Initializi
/**
* Set the service registry
*
* @param serviceRegistry the service registry
* @param serviceRegistry the service registry
*/
public void setServiceRegistry(ServiceRegistry serviceRegistry)
{
this.services = serviceRegistry;
this.services = serviceRegistry;
}
/**
@@ -311,8 +311,8 @@ public class People extends BaseScopableProcessorExtension implements Initializi
public ScriptNode createPerson(String userName, String firstName, String lastName, String emailAddress,
String password, boolean setAccountEnabled, boolean notifyByEmail)
{
ParameterCheck.mandatory("firstName", firstName);
ParameterCheck.mandatory("emailAddress", emailAddress);
ParameterCheck.mandatory("firstName", firstName);
ParameterCheck.mandatory("emailAddress", emailAddress);
ScriptNode person = null;
@@ -321,13 +321,13 @@ public class People extends BaseScopableProcessorExtension implements Initializi
{
for (int i=0; i < numRetries; i++)
{
userName = usernameGenerator.generateUserName(firstName, lastName, emailAddress, i);
// create person if user name does not already exist
if (!personService.personExists(userName))
{
break;
}
userName = usernameGenerator.generateUserName(firstName, lastName, emailAddress, i);
// create person if user name does not already exist
if (!personService.personExists(userName))
{
break;
}
}
}
@@ -344,19 +344,19 @@ public class People extends BaseScopableProcessorExtension implements Initializi
person = createPerson(userName, firstName, lastName, emailAddress);
if (person != null && password != null)
{
// create account for person with the userName and password
authenticationService.createAuthentication(userName, password.toCharArray());
authenticationService.setAuthenticationEnabled(userName, setAccountEnabled);
person.save();
if(notifyByEmail)
{
personService.notifyPerson(userName, password);
}
}
if (person != null && password != null)
{
// create account for person with the userName and password
authenticationService.createAuthentication(userName, password.toCharArray());
authenticationService.setAuthenticationEnabled(userName, setAccountEnabled);
person.save();
if(notifyByEmail)
{
personService.notifyPerson(userName, password);
}
}
}
return person;
@@ -914,8 +914,8 @@ public class People extends BaseScopableProcessorExtension implements Initializi
if ("fullName".equalsIgnoreCase(sortBy))
{
String firstName = nodeService.getProperty(nodeRef, ContentModel.PROP_FIRSTNAME).toString();
String lastName = nodeService.getProperty(nodeRef, ContentModel.PROP_LASTNAME).toString();
String firstName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_FIRSTNAME);
String lastName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_LASTNAME);
String fullName = firstName;
if (lastName != null && lastName.length() > 0)
{

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2005-2013 Alfresco Software Limited.
* Copyright (C) 2005-2015 Alfresco Software Limited.
*
* This file is part of Alfresco
*
@@ -55,7 +55,6 @@ import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.search.SearcherException;
import org.alfresco.repo.security.authentication.AuthenticationException;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.security.permissions.PermissionServiceSPI;
import org.alfresco.repo.tenant.TenantDomainMismatchException;
import org.alfresco.repo.tenant.TenantService;
@@ -69,8 +68,6 @@ import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.admin.RepoAdminService;
import org.alfresco.service.cmr.admin.RepoUsage.UsageType;
import org.alfresco.service.cmr.admin.RepoUsageStatus;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.invitation.InvitationException;
import org.alfresco.service.cmr.model.FileFolderService;
@@ -124,7 +121,6 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
private static final String LEAVE = "LEAVE";
public static final String SYSTEM_FOLDER_SHORT_QNAME = "sys:system";
public static final String PEOPLE_FOLDER_SHORT_QNAME = "sys:people";
private static final String SYSTEM_USAGE_WARN_LIMIT_USERS_EXCEEDED_VERBOSE = "system.usage.err.limit_users_exceeded_verbose";
private static final String KEY_POST_TXN_DUPLICATES = "PersonServiceImpl.KEY_POST_TXN_DUPLICATES";
public static final String KEY_ALLOW_UID_UPDATE = "PersonServiceImpl.KEY_ALLOW_UID_UPDATE";
@@ -952,18 +948,6 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
throw new IllegalArgumentException("No username specified when creating the person.");
}
/*
* Check restrictions on the number of users
*/
Long maxUsers = repoAdminService.getRestrictions().getUsers();
if (maxUsers != null)
{
// Get the set of users created in this transaction
Set<String> usersCreated = TransactionalResourceHelper.getSet(KEY_USERS_CREATED);
usersCreated.add(userName);
AlfrescoTransactionSupport.bindListener(this);
}
AuthorityType authorityType = AuthorityType.getAuthorityType(userName);
if (authorityType != AuthorityType.USER)
{
@@ -1258,16 +1242,6 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
beforeDeleteNodeValidationBehaviour.enable();
}
}
/*
* Kick off the transaction listener for create user. It has the side-effect of
* recalculating the number of users.
*/
Long maxUsers = repoAdminService.getRestrictions().getUsers();
if (maxUsers != null)
{
AlfrescoTransactionSupport.bindListener(this);
}
}
/**
@@ -2093,72 +2067,6 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
AlfrescoTransactionSupport.bindListener(this);
}
/**
* {@inheritDoc}
*/
public void beforeCommit(boolean readOnly)
{
// check whether max users has been exceeded
RunAsWork<Long> getMaxUsersWork = new RunAsWork<Long>()
{
@Override
public Long doWork() throws Exception
{
return repoAdminService.getRestrictions().getUsers();
}
};
Long maxUsers = AuthenticationUtil.runAs(getMaxUsersWork, AuthenticationUtil.getSystemUserName());
if(maxUsers == null)
{
return;
}
Long users = AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Long>()
{
public Long doWork() throws Exception
{
repoAdminService.updateUsage(UsageType.USAGE_USERS);
if(logger.isDebugEnabled())
{
logger.debug("Number of users is " + repoAdminService.getUsage().getUsers());
}
return repoAdminService.getUsage().getUsers();
}
} , AuthenticationUtil.getSystemUserName());
// Get the set of users created in this transaction
Set<String> usersCreated = TransactionalResourceHelper.getSet(KEY_USERS_CREATED);
// If we exceed the limit, generate decent message about which users were being created, etc.
if (users > maxUsers)
{
List<String> usersMsg = new ArrayList<String>(5);
int i = 0;
for (String userCreated : usersCreated)
{
i++;
if (i > 5)
{
usersMsg.add(" ... more");
break;
}
else
{
usersMsg.add(userCreated);
}
}
if (logger.isDebugEnabled())
{
logger.debug("Maximum number of users exceeded: " + usersCreated);
}
throw AlfrescoRuntimeException.create(SYSTEM_USAGE_WARN_LIMIT_USERS_EXCEEDED_VERBOSE, maxUsers, usersMsg);
}
// Get the usages and log any warnings
RepoUsageStatus usageStatus = repoAdminService.getUsageStatus();
usageStatus.logMessages(logger);
}
public int countPeople()
{
NodeRef peopleContainer = getPeopleContainer();

View File

@@ -24,12 +24,12 @@ import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.service.cmr.repository.AssociationRef;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -42,6 +42,7 @@ import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.ApplicationContextHelper;
import org.alfresco.util.GUID;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -66,41 +67,40 @@ public class MultiTServiceImplTest
private SearchService searchService;
private NamespaceService namespaceService;
private UserTransaction txn;
private boolean mtEnabled;
// Test variables
private static final String DEFAULT_ADMIN_PW = "admin";
private static final String PASS = "password";
private static final String DOMAIN = MultiTServiceImplTest.class.getName().toLowerCase();
private static final String USER1 = "USER1";
private static final String USER2 = "USER2";
private static final String USER3 = "USER3";
private static final String USER2_WITH_DOMAIN = USER2 + TenantService.SEPARATOR + DOMAIN;
private static final String STRING = "stringwithouttenant";
private static final String TENANT_STRING = addDomainToId(STRING, DOMAIN);
private static final String STRING_WITH_EXISTENT_DOMAIN = TenantService.SEPARATOR + DOMAIN + TenantService.SEPARATOR;
private static final String STRING_WITH_NONEXITENT_DOMAIN = TenantService.SEPARATOR + STRING + TenantService.SEPARATOR;
private static final String PROTOCOL = "testprotocol";
private static final String IDENTIFIER = "testidentifier";
private static final String ID = "id";
private static final String ROOT_PATH = "/";
private static final StoreRef DEFAULT_STORE = StoreRef.STORE_REF_WORKSPACE_SPACESSTORE;
private static final StoreRef TENANT_STORE = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, addDomainToId("SpacesStore", DOMAIN));
private static final NodeRef NODE_REF = new NodeRef(PROTOCOL, IDENTIFIER, ID);
private static final NodeRef TENANT_NODE_REF = new NodeRef(PROTOCOL, addDomainToId(IDENTIFIER, DOMAIN), ID);
private static final StoreRef STORE_REF = new StoreRef(PROTOCOL, IDENTIFIER);
private static final StoreRef TENANT_STORE_REF = new StoreRef(PROTOCOL, addDomainToId(IDENTIFIER, DOMAIN));
private static final String NAMESPACE_URI = "testassoctypenamespace";
private static final String LOCAL_NAME = "testassoctypelocalname";
private static final QName QNAME = QName.createQName(NAMESPACE_URI, LOCAL_NAME);
private static final QName TENANT_QNAME = QName.createQName(addDomainToId(NAMESPACE_URI, DOMAIN), LOCAL_NAME);
private static final AssociationRef assocRef = new AssociationRef(NODE_REF, QNAME, NODE_REF);
private static final AssociationRef tenantAssocRef = new AssociationRef(TENANT_NODE_REF, QNAME, TENANT_NODE_REF);
private static final ChildAssociationRef childAssocRef = new ChildAssociationRef(QNAME, NODE_REF, QNAME, NODE_REF);
private static final ChildAssociationRef tenantChildAssocRef = new ChildAssociationRef(QNAME, TENANT_NODE_REF, QNAME, TENANT_NODE_REF);
private static String DOMAIN = null;
private static String USER1 = null;
private static String USER2 = null;
private static String USER3 = null;
private static String USER2_WITH_DOMAIN = null;
private static String STRING = null;
private static String TENANT_STRING = null;
private static String STRING_WITH_EXISTENT_DOMAIN = null;
private static String STRING_WITH_NONEXITENT_DOMAIN = null;
private static StoreRef TENANT_STORE = null;
private static NodeRef TENANT_NODE_REF = null;
private static StoreRef TENANT_STORE_REF = null;
private static QName TENANT_QNAME = null;
private static AssociationRef tenantAssocRef = null;
private static ChildAssociationRef childAssocRef = null;
private static ChildAssociationRef tenantChildAssocRef = null;
@Before
public void setUp() throws Exception
{
@@ -113,19 +113,34 @@ public class MultiTServiceImplTest
nodeService = ctx.getBean("NodeService", NodeService.class);
searchService = ctx.getBean("SearchService", SearchService.class);
namespaceService = ctx.getBean("NamespaceService", NamespaceService.class);
DOMAIN = GUID.generate();
USER1 = GUID.generate();
USER2 = GUID.generate();
USER3 = GUID.generate();
USER2_WITH_DOMAIN = USER2 + TenantService.SEPARATOR + DOMAIN;
STRING = GUID.generate();
TENANT_STRING = addDomainToId(STRING, DOMAIN);
STRING_WITH_EXISTENT_DOMAIN = TenantService.SEPARATOR + DOMAIN + TenantService.SEPARATOR;
STRING_WITH_NONEXITENT_DOMAIN = TenantService.SEPARATOR + STRING + TenantService.SEPARATOR;
TENANT_STORE = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, addDomainToId("SpacesStore", DOMAIN));
TENANT_NODE_REF = new NodeRef(PROTOCOL, addDomainToId(IDENTIFIER, DOMAIN), ID);
TENANT_STORE_REF = new StoreRef(PROTOCOL, addDomainToId(IDENTIFIER, DOMAIN));
TENANT_QNAME = QName.createQName(addDomainToId(NAMESPACE_URI, DOMAIN), LOCAL_NAME);
tenantAssocRef = new AssociationRef(TENANT_NODE_REF, QNAME, TENANT_NODE_REF);
childAssocRef = new ChildAssociationRef(QNAME, NODE_REF, QNAME, NODE_REF);
tenantChildAssocRef = new ChildAssociationRef(QNAME, TENANT_NODE_REF, QNAME, TENANT_NODE_REF);
AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
mtEnabled = AuthenticationUtil.isMtEnabled();
txn = transactionService.getUserTransaction();
txn.begin();
AuthenticationUtil.setMtEnabled(false);
}
@After
public void tearDown() throws Exception
{
txn.rollback();
deleteTenant(DOMAIN);
AuthenticationUtil.setMtEnabled(mtEnabled);
AuthenticationUtil.clearCurrentSecurityContext();
}
@@ -133,6 +148,13 @@ public class MultiTServiceImplTest
@Test
public void testIsTenantUser()
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
// Create a user with a plain user name without a domain
NodeRef userNodeRef = createUser(USER1, TenantService.DEFAULT_DOMAIN, PASS);
assertNotNull("The user was not created.", userNodeRef);
@@ -148,11 +170,21 @@ public class MultiTServiceImplTest
userNodeRef = createUser(USER3, DOMAIN, PASS);
assertNotNull("The user was not created.", userNodeRef);
assertTrue("The user is from a tenant, but was reported otherwise.", multiTServiceImpl.isTenantUser(USER3 + MultiTServiceImpl.SEPARATOR + DOMAIN));
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testGetCurrentUserDomain()
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
// Test a tenant user
createTenant(DOMAIN);
NodeRef userNodeRef = createUser(USER1, DOMAIN, PASS);
@@ -185,11 +217,21 @@ public class MultiTServiceImplTest
result = TenantUtil.runAsUserTenant(work, USER2, TenantService.DEFAULT_DOMAIN);
assertEquals("The domains do not match.", TenantService.DEFAULT_DOMAIN, result);
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testGetName()
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
NodeRef userNodeRef = createUser(USER1, TenantService.DEFAULT_DOMAIN, PASS);
assertNotNull("The user was not created.", userNodeRef);
TenantRunAsWork<NodeRef> work1 = new TenantRunAsWork<NodeRef>()
@@ -288,7 +330,7 @@ public class MultiTServiceImplTest
@Override
public QName doWork() throws Exception
{
return tenantService.getName(TENANT_NODE_REF ,QNAME);
return tenantService.getName(TENANT_NODE_REF, QNAME);
}
};
QName result7 = TenantUtil.runAsUserTenant(work7, USER2, DOMAIN);
@@ -304,11 +346,21 @@ public class MultiTServiceImplTest
};
String result8 = TenantUtil.runAsUserTenant(work8, USER2, DOMAIN);
assertEquals("The String should contain domain.", TENANT_STRING, result8);
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testGetBaseName()
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
NodeRef userNodeRef = createUser(USER1, TenantService.DEFAULT_DOMAIN, PASS);
assertNotNull("The user was not created.", userNodeRef);
TenantRunAsWork<NodeRef> work1 = new TenantRunAsWork<NodeRef>()
@@ -412,11 +464,21 @@ public class MultiTServiceImplTest
};
String result6 = TenantUtil.runAsUserTenant(work6, USER2, DOMAIN);
assertEquals("The String should not contain domain.", STRING, result6);
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testCheckDomainUser()
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
String nonExistentDomain = "nonExistentDomain";
createUser(USER1, TenantService.DEFAULT_DOMAIN, PASS);
createTenant(DOMAIN);
@@ -458,56 +520,75 @@ public class MultiTServiceImplTest
{
// Expected
}
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testCheckDomain()
{
createUser(USER1, TenantService.DEFAULT_DOMAIN, PASS);
createTenant(DOMAIN);
createUser(USER2, DOMAIN, PASS);
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
createUser(USER1, TenantService.DEFAULT_DOMAIN, PASS);
createTenant(DOMAIN);
createUser(USER2, DOMAIN, PASS);
try
{
createUser(USER3, STRING, PASS);
createUser(USER3, STRING, PASS);
fail("The string has a domain, but there is no such tenant");
}
catch (Exception e)
{
// Expected
}
try
{
checkDomainWork(STRING_WITH_EXISTENT_DOMAIN, TenantService.DEFAULT_DOMAIN, USER1);
fail("The string has a domain, which should not match the default one.");
}
catch (Exception e)
{
// Expected
}
try
{
checkDomainWork(STRING_WITH_EXISTENT_DOMAIN, TenantService.DEFAULT_DOMAIN, USER1);
fail("The string has a domain, which should not match the default one.");
}
catch (Exception e)
{
// Expected
}
try
{
checkDomainWork(STRING_WITH_EXISTENT_DOMAIN, DOMAIN, USER2);
}
catch (Exception e)
{
fail("The string has a tenant domain and should match the execution context tenant.");
}
try
{
checkDomainWork(STRING_WITH_NONEXITENT_DOMAIN, DOMAIN, USER2);
fail("The string has a domain, which should not match the execution context tenant.");
}
catch (Exception e)
{
// Expected
}
try
{
checkDomainWork(STRING_WITH_EXISTENT_DOMAIN, DOMAIN, USER2);
}
catch (Exception e)
{
fail("The string has a tenant domain and should match the execution context tenant.");
}
try
{
checkDomainWork(STRING_WITH_NONEXITENT_DOMAIN, DOMAIN, USER2);
fail("The string has a domain, which should not match the execution context tenant.");
}
catch (Exception e)
{
// Expected
}
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testGetRootNode()
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
NodeRef rootNodeRefDefault = nodeService.getRootNode(DEFAULT_STORE);
NodeRef rootNodeRef = new NodeRef(DEFAULT_STORE, IDENTIFIER);
NodeRef nodeRef = tenantService.getRootNode(nodeService, searchService, namespaceService, ROOT_PATH, rootNodeRef);
@@ -518,6 +599,10 @@ public class MultiTServiceImplTest
rootNodeRef = new NodeRef(TENANT_STORE, IDENTIFIER);
nodeRef = tenantService.getRootNode(nodeService, searchService, namespaceService, ROOT_PATH, rootNodeRef);
assertEquals("The reported rootNodeRef for the tenant domain is not correct.", rootNodeRefDefault, nodeRef);
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
/**
@@ -526,33 +611,58 @@ public class MultiTServiceImplTest
@Test
public void testIsTenantName()
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
boolean result = tenantService.isTenantName(STRING);
assertFalse("The string was reported as domain, but it is not", result);
result = tenantService.isTenantName(STRING_WITH_EXISTENT_DOMAIN);
assertTrue("The string was not reported as domain.", result);
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testGetPrimaryDomain()
{
String result = tenantService.getPrimaryDomain(USER1);
assertNull("The primary domain should be null for a non tenant user without a tenant in name.", result);
result = tenantService.getPrimaryDomain(USER2_WITH_DOMAIN);
assertNull("The primary domain should be null for a tenant user if multi tenancy is not enabled.", result);
createTenant(DOMAIN);
result = tenantService.getPrimaryDomain(USER2_WITH_DOMAIN);
assertEquals("The primary domain should be of the USER2 is " + DOMAIN + ", but was reported as " + result, DOMAIN, result);
result = tenantService.getPrimaryDomain(USER1);
assertTrue("The primary domain should be the default one (empty string) for a non tenant user without a tenant in name.", result.equals(TenantService.DEFAULT_DOMAIN));
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
String result = tenantService.getPrimaryDomain(USER1);
assertNull("The primary domain should be null for a non tenant user without a tenant in name.", result);
result = tenantService.getPrimaryDomain(USER2_WITH_DOMAIN);
assertNull("The primary domain should be null for a tenant user if multi tenancy is not enabled.", result);
createTenant(DOMAIN);
result = tenantService.getPrimaryDomain(USER2_WITH_DOMAIN);
assertEquals("The primary domain of the USER2 should be " + DOMAIN + ", but was reported as " + result, DOMAIN, result);
result = tenantService.getPrimaryDomain(USER1);
assertTrue("The primary domain should be the default one (empty string) for a non tenant user without a tenant in name.", result.equals(TenantService.DEFAULT_DOMAIN));
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testGetDomain() throws Exception
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
createUser(USER1, TenantService.DEFAULT_DOMAIN, PASS);
String result = getDomainWork(STRING, TenantService.DEFAULT_DOMAIN, USER1, false);
assertEquals("The domain should be reported as default.", TenantService.DEFAULT_DOMAIN, result);
@@ -584,24 +694,43 @@ public class MultiTServiceImplTest
{
// Expected
}
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testGetTenant()
{
Tenant tenant = tenantService.getTenant(DOMAIN);
assertNull("The tenant should not exist.", tenant);
createTenant(DOMAIN);
tenant = tenantService.getTenant(DOMAIN);
assertNotNull("The tenant should exist.", tenant);
assertTrue("The tenant should have the correct domain.", DOMAIN.equals(tenant.getTenantDomain()));
assertTrue("The tenant should be enabled.", tenant.isEnabled());
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
Tenant tenant = tenantService.getTenant(DOMAIN);
assertNull("The tenant should not exist.", tenant);
createTenant(DOMAIN);
tenant = tenantService.getTenant(DOMAIN);
assertNotNull("The tenant should exist.", tenant);
assertTrue("The tenant should have the correct domain.", DOMAIN.equals(tenant.getTenantDomain()));
assertTrue("The tenant should be enabled.", tenant.isEnabled());
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
@Test
public void testGetUserDomain()
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
String result = tenantService.getUserDomain(USER1);
assertEquals("The user domain should be the default one for a non tenant user without a tenant in name.", TenantService.DEFAULT_DOMAIN, result);
@@ -614,6 +743,10 @@ public class MultiTServiceImplTest
result = tenantService.getUserDomain(USER1);
assertTrue("The user domain should be the default one (empty string) for a non tenant user without a tenant in name.", result.equals(TenantService.DEFAULT_DOMAIN));
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
}
/**
@@ -736,7 +869,38 @@ public class MultiTServiceImplTest
return personNodeRef;
}
private void deleteTenant(final String tenantDomain)
{
AuthenticationUtil.runAs(new RunAsWork<Object>()
{
public Object doWork() throws Exception
{
RetryingTransactionHelper.RetryingTransactionCallback<Void> work = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
public Void execute() throws Throwable
{
// delete tenant (if it exists)
if (tenantAdminService.existsTenant(tenantDomain))
{
// TODO: WARNING: HACK for ALF-19155: MT deleteTenant does not work
// PersonService prevents 'guest' authorities from being deleted
{
BehaviourFilter behaviourFilter = (BehaviourFilter) ctx.getBean("policyBehaviourFilter");
behaviourFilter.disableBehaviour(ContentModel.TYPE_PERSON);
behaviourFilter.disableBehaviour(ContentModel.ASPECT_UNDELETABLE);
}
tenantAdminService.deleteTenant(tenantDomain);
}
return null;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(work);
return null;
}
}, AuthenticationUtil.getSystemUserName());
}
/**
* Utility method to add a domain to an string id
* @param id String

View File

@@ -166,11 +166,14 @@ public class RepoUsageComponentTest extends TestCase
public void test4FullUse() throws Exception
{
// Set the restrictions
// Update usage
updateUsage(UsageType.USAGE_ALL);
// Set the restrictions
RepoUsage restrictions = new RepoUsage(
System.currentTimeMillis(),
7L,
600L,
getUsage().getUsers(),
getUsage().getDocuments(),
LicenseMode.TEAM,
System.currentTimeMillis() + 24*3600000,
false);
@@ -178,12 +181,13 @@ public class RepoUsageComponentTest extends TestCase
// Get the restrictions (should not need a txn for this)
RepoUsage restrictionsCheck = repoUsageComponent.getRestrictions();
assertEquals("Restrictions should return without change.", restrictions, restrictionsCheck);
// Update use
updateUsage(UsageType.USAGE_ALL);
// Get the usage
RepoUsage usage = getUsage();
RepoUsage usage = getUsage();
// Check
assertNotNull("Usage is null", usage);
assertNotNull("Invalid user count", usage.getUsers());