From helpdesk at onehippo.com Mon Mar 2 09:47:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Mon Mar 2 09:04:55 2009 Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-2271) import of namespaces with hippoecm-extension.xml fails In-Reply-To: <21613256.1234947243645.JavaMail.jira@hat01> Message-ID: <21527711.1235983623696.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_49803 ] (Berry) A.W. van Halderen commented on HREPTWO-2271: ---------------------------------------------------- Note, we have some amibuity on the use of namespace in this respect. The usage of namespace in the import/declaration of a namespace in xml or jcr repository, andthe definition of two template editor namespaces. If it is about the declaration of namespaces in xml/jcr, then just the last one should be the one that remains active as prefix for the namespace. This is proper behaviour. > import of namespaces with hippoecm-extension.xml fails > ------------------------------------------------------ > > Key: HREPTWO-2271 > URL: http://issues.onehippo.org/browse/HREPTWO-2271 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: -jetty:run-war > -overlay package > Reporter: Rita Bijlsma > > - The same two namespaces can succesfully be imported in version 2.03.00 > - The .xml of the namespaces have all namespace declarations exept sv removed, so it could not be a version issue. > As soon as I get to it, I will check the errormessages of jetty. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 09:49:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Mon Mar 2 09:06:55 2009 Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-2270) 'Add image/file/new document' popup window empty in overlay package In-Reply-To: <16847491.1234866784095.JavaMail.jira@hat01> Message-ID: <26761038.1235983743682.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_49804 ] (Berry) A.W. van Halderen commented on HREPTWO-2270: ---------------------------------------------------- The cause of this might be the patched wicket jars for integration testing. The patched wicket jars are correct, but the intended behavior in cms7 isn't. > 'Add image/file/new document' popup window empty in overlay package > ------------------------------------------------------------------- > > Key: HREPTWO-2270 > URL: http://issues.onehippo.org/browse/HREPTWO-2270 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Using the quickstart package or the package as overlay package in another project. Note that the quickstart of 2.04.01-SNAPSHOT when used directly, not as/in overlay, works fine! > Firefox, Ubuntu > Reporter: Rita Bijlsma > Attachments: add image popup empty in overlay.png, hippoecm-extension.xml, pom.xml, sar_sar_namespace.xml, sar_snp_namespace.xml > > > - A developer creates a project with the either the quickstart or the package CMS as overlay package. > - The project adds some document types, but no content. > - The jetty:run-war startsup fine, > * But when opening the 'add image to gallery popup' it is empty, containing no field to type in, no browse button, no ok button. > This occurs when called via the button at the upper edge of the window, and also when called via the list in the home workspace (the workspace the user gets to first after startup of CMS). So it is not possible to add an image. > * The same is true for adding files to the assets library -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:12:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 10:29:55 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2292) Create upgrade module for frontend:clusterconfig Message-ID: <30319766.1235988724575.JavaMail.jira@hat01> Create upgrade module for frontend:clusterconfig ------------------------------------------------ Key: HREPTWO-2292 URL: http://issues.onehippo.org/browse/HREPTWO-2292 Project: Hippo Repository 2 Issue Type: Sub-task Affects Versions: r2.03.00 (m10 - scalability) Reporter: Frank van Lankvelt Assignee: Frank van Lankvelt -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:16:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 10:33:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1144) Template editor and remodel workflow nodetypes don't belong in hippo namespace In-Reply-To: <21221794.1215611344621.JavaMail.root@hat01> Message-ID: <27979477.1235988963822.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-1144: ---------------------------------------- Original Estimate: 4 days (was: 1 day) Remaining Estimate: 4 days (was: 1 day) will need to write an upgrade module > Template editor and remodel workflow nodetypes don't belong in hippo namespace > ------------------------------------------------------------------------------ > > Key: HREPTWO-1144 > URL: http://issues.onehippo.org/browse/HREPTWO-1144 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: 2.01.00m06.1 > Reporter: Wander Grevink > Assignee: Frank van Lankvelt > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 4 days > Remaining Estimate: 4 days > > In repository.cnd: > [hippo:remodel] mixin > - hippo:remodel (string) mandatory < 'current', 'draft', 'error', 'old' > - hippo:uri (string) > > [hippo:field] > nt:base > - hippo:name (string) > - hippo:path (string) > - hippo:type (string) > - hippo:multiple (boolean) > - hippo:mandatory (boolean) > - hippo:ordered (boolean) > [hippo:nodetype] > hippo:document orderable > - hippo:type (string) > - hippo:supertype (string) multiple > - hippo:node (boolean) > - hippo:mixin (boolean) > + hippo:field (hippo:field) multiple > [hippo:templatetype] orderable > + hippo:nodetype (hippo:handle) mandatory > + hippo:template (hippo:handle) > + hippo:prototype (nt:base) > [hippo:namespace] > nt:base > + * (hippo:templatetype) = hippo:templatetype > [hippo:namespacefolder] > nt:base > + * (hippo:namespace) = hippo:namespace > should be moved to cms (or maybe editor/remodel?) namespace. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:18:04 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Mon Mar 2 10:35:56 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2199) Multiple HippoAutocomplete behaviours on one page creates confusion in callbacks In-Reply-To: <28172802.1232637061679.JavaMail.jira@hat01> Message-ID: <25996247.1235989084465.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart updated HREPTWO-2199: ------------------------------------ Original Estimate: 1 day Remaining Estimate: 1 day > Multiple HippoAutocomplete behaviours on one page creates confusion in callbacks > -------------------------------------------------------------------------------- > > Key: HREPTWO-2199 > URL: http://issues.onehippo.org/browse/HREPTWO-2199 > Project: Hippo Repository 2 > Issue Type: Bug > Reporter: Jeroen Tietema > Assignee: Arthur Bogaart > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 1 day > Remaining Estimate: 1 day > > When two components both implement a HippoAutocomplete behaviour then some callbacks of one behaviours component end up at the other behaviour. > For reproduction see tagging autocomplete in the tagging addon -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:20:03 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Mon Mar 2 10:37:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1429) Create HST Configuration Editor perspective In-Reply-To: <129631.1218621895350.JavaMail.jira@hat01> Message-ID: <22941287.1235989203970.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart updated HREPTWO-1429: ------------------------------------ Remaining Estimate: 0 minutes (was: 1 day) > Create HST Configuration Editor perspective > ------------------------------------------- > > Key: HREPTWO-1429 > URL: http://issues.onehippo.org/browse/HREPTWO-1429 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Arje Cahn > Assignee: Arthur Bogaart > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Time Spent: 1 day > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:22:03 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Mon Mar 2 10:39:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1429) Create HST Configuration Editor perspective In-Reply-To: <129631.1218621895350.JavaMail.jira@hat01> Message-ID: <29798552.1235989323735.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart updated HREPTWO-1429: ------------------------------------ Remaining Estimate: 3 days (was: 0 minutes) > Create HST Configuration Editor perspective > ------------------------------------------- > > Key: HREPTWO-1429 > URL: http://issues.onehippo.org/browse/HREPTWO-1429 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Arje Cahn > Assignee: Arthur Bogaart > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Time Spent: 1 day > Remaining Estimate: 3 days > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:22:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:39:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2286) Don't use sun.* classes for base64 encoding/decoding In-Reply-To: <18997735.1235555523654.JavaMail.jira@hat01> Message-ID: <11292075.1235989323761.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2286?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans updated HREPTWO-2286: ----------------------------------------- Original Estimate: 1 hour, 30 minutes Remaining Estimate: 1 hour, 30 minutes > Don't use sun.* classes for base64 encoding/decoding > ---------------------------------------------------- > > Key: HREPTWO-2286 > URL: http://issues.onehippo.org/browse/HREPTWO-2286 > Project: Hippo Repository 2 > Issue Type: Improvement > Affects Versions: r2.04.00 (m11 - technical) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 1 hour, 30 minutes > Remaining Estimate: 1 hour, 30 minutes > > Instead use the one from jackrabbit: http://jackrabbit.apache.org/api/1.5/org/apache/jackrabbit/util/Base64.html -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:24:04 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:41:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2066) As a user, I want to change my password and email address In-Reply-To: <16404830.1230641681795.JavaMail.root@hat01> Message-ID: <13038429.1235989444087.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2066?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans updated HREPTWO-2066: ----------------------------------------- Original Estimate: 2 days Remaining Estimate: 2 days > As a user, I want to change my password and email address > --------------------------------------------------------- > > Key: HREPTWO-2066 > URL: http://issues.onehippo.org/browse/HREPTWO-2066 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Arje Cahn > Assignee: Bart van der Schans > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 2 days > Remaining Estimate: 2 days > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:24:04 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:41:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2126) repair authorization self exclusion In-Reply-To: <32881147.1231327481780.JavaMail.root@hat01> Message-ID: <12620774.1235989444151.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2126?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans updated HREPTWO-2126: ----------------------------------------- Original Estimate: 1 day Remaining Estimate: 1 day > repair authorization self exclusion > ----------------------------------- > > Key: HREPTWO-2126 > URL: http://issues.onehippo.org/browse/HREPTWO-2126 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: (Berry) A.W. van Halderen > Assignee: Bart van der Schans > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 1 day > Remaining Estimate: 1 day > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:26:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:43:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1968) Refactor User management, group management and permissions to match the new JR specific internal interfaces In-Reply-To: <29587261.1228726498628.JavaMail.jira@hat01> Message-ID: <16439575.1235989563753.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1968?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans updated HREPTWO-1968: ----------------------------------------- Original Estimate: 2 days Remaining Estimate: 2 days > Refactor User management, group management and permissions to match the new JR specific internal interfaces > ----------------------------------------------------------------------------------------------------------- > > Key: HREPTWO-1968 > URL: http://issues.onehippo.org/browse/HREPTWO-1968 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: addon-ldap, repository-core, security > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 2 days > Remaining Estimate: 2 days > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:26:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 10:43:55 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2293) Create sitemap editor Message-ID: <6526634.1235989563776.JavaMail.jira@hat01> Create sitemap editor --------------------- Key: HREPTWO-2293 URL: http://issues.onehippo.org/browse/HREPTWO-2293 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Frank van Lankvelt Create a sitemap editor to configure the matcher and the mapping of parameters to a tree of components. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:31:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 10:48:54 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2294) Create template manager Message-ID: <5501082.1235989863684.JavaMail.jira@hat01> Create template manager ----------------------- Key: HREPTWO-2294 URL: http://issues.onehippo.org/browse/HREPTWO-2294 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Frank van Lankvelt Create an editor/browser for managing the controllers and templates that are used in component definitions. It should be possible to enter the list of "extension points" for a (JSP) template and the parameters of a controller. These are used in the sitemap/page editor to create component trees and display options to the webmaster. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:33:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 10:50:55 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2296) Create folder tree plugin for "faceted" tree Message-ID: <14693458.1235989983715.JavaMail.jira@hat01> Create folder tree plugin for "faceted" tree -------------------------------------------- Key: HREPTWO-2296 URL: http://issues.onehippo.org/browse/HREPTWO-2296 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Frank van Lankvelt The read-only, "faceted", view on the documents in the repository should get its own section in the accordeon in the browse perspective. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:33:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:50:55 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2295) Define "folder" permissions in faceted and hierarchical context Message-ID: <9068901.1235989983691.JavaMail.jira@hat01> Define "folder" permissions in faceted and hierarchical context --------------------------------------------------------------- Key: HREPTWO-2295 URL: http://issues.onehippo.org/browse/HREPTWO-2295 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Bart van der Schans Assignee: Bart van der Schans Fix For: r2.05.xx (m12 - new feats) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:33:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:50:59 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2297) Implement "folder" permissions in AccessManager Message-ID: <20240800.1235989983745.JavaMail.jira@hat01> Implement "folder" permissions in AccessManager ----------------------------------------------- Key: HREPTWO-2297 URL: http://issues.onehippo.org/browse/HREPTWO-2297 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Bart van der Schans Assignee: Bart van der Schans Fix For: r2.05.xx (m12 - new feats) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:35:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:52:55 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2298) Implement "folder" permissions in authorizationQuery Message-ID: <24244393.1235990103690.JavaMail.jira@hat01> Implement "folder" permissions in authorizationQuery ---------------------------------------------------- Key: HREPTWO-2298 URL: http://issues.onehippo.org/browse/HREPTWO-2298 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Bart van der Schans Assignee: Ard Schrijvers Fix For: r2.05.xx (m12 - new feats) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:39:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:56:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2298) Implement "folder" permissions in authorizationQuery In-Reply-To: <24244393.1235990103690.JavaMail.jira@hat01> Message-ID: <30831192.1235990343721.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2298?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans updated HREPTWO-2298: ----------------------------------------- Description: See also: HREPTWO-1745 > Implement "folder" permissions in authorizationQuery > ---------------------------------------------------- > > Key: HREPTWO-2298 > URL: http://issues.onehippo.org/browse/HREPTWO-2298 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Bart van der Schans > Assignee: Ard Schrijvers > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 3 days > Remaining Estimate: 3 days > > See also: HREPTWO-1745 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:39:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:56:56 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2299) Create faceted authorization rule wizard/interface Message-ID: <23521671.1235990343745.JavaMail.jira@hat01> Create faceted authorization rule wizard/interface -------------------------------------------------- Key: HREPTWO-2299 URL: http://issues.onehippo.org/browse/HREPTWO-2299 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Bart van der Schans Assignee: Bart van der Schans Fix For: r2.05.xx (m12 - new feats) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:41:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:58:56 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2300) Create "folder" permissions interface Message-ID: <6665842.1235990463730.JavaMail.jira@hat01> Create "folder" permissions interface ------------------------------------- Key: HREPTWO-2300 URL: http://issues.onehippo.org/browse/HREPTWO-2300 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Bart van der Schans Assignee: Bart van der Schans Fix For: r2.05.xx (m12 - new feats) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:41:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 2 10:58:56 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2301) Review current default authorization rules Message-ID: <15545321.1235990463753.JavaMail.jira@hat01> Review current default authorization rules ------------------------------------------ Key: HREPTWO-2301 URL: http://issues.onehippo.org/browse/HREPTWO-2301 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Bart van der Schans Assignee: Bart van der Schans Fix For: r2.05.xx (m12 - new feats) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:41:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 10:58:57 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2302) Create doclisting that mimics handles for variants of documents Message-ID: <7268583.1235990463781.JavaMail.jira@hat01> Create doclisting that mimics handles for variants of documents --------------------------------------------------------------- Key: HREPTWO-2302 URL: http://issues.onehippo.org/browse/HREPTWO-2302 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Frank van Lankvelt Create a document listing for a virtual (facetsearch) listing that collapses variants of the same document onto one entry in the list. It should be possible to display (and execute) the applicable workflows for the set of documents. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:43:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 11:00:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2210) After closing a document, it should be clickable again even though it's still highlighted In-Reply-To: <12821017.1232976541643.JavaMail.jira@hat01> Message-ID: <17871035.1235990583750.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2210?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-2210: ---------------------------------------- Original Estimate: 1 day Remaining Estimate: 1 day > After closing a document, it should be clickable again even though it's still highlighted > ----------------------------------------------------------------------------------------- > > Key: HREPTWO-2210 > URL: http://issues.onehippo.org/browse/HREPTWO-2210 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.03.00 (m10 - scalability) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 1 day > Remaining Estimate: 1 day > > After closing a document, it stays highlighted in the doclisting. Clicking again on the (already highlighted) document doesn't re-open it. > You need click on an other document first, then select the previous one again and it will open in preview mode. > This happens frequently when you Save & Close a document and then want to press the Publish button. Because the close really closes the document, you need to reopen it in preview mode to select the publish button. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:45:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Mon Mar 2 11:02:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2081) pulldown menu gone after update all content In-Reply-To: <1907605.1230657581851.JavaMail.root@hat01> Message-ID: <6029149.1235990703739.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2081?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2081: ----------------------------------------------- Original Estimate: 3 hours Remaining Estimate: 3 hours > pulldown menu gone after update all content > ------------------------------------------- > > Key: HREPTWO-2081 > URL: http://issues.onehippo.org/browse/HREPTWO-2081 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: r2.03.00 (m10 - scalability) > Environment: Hippo CMS version 2.03.00-SNAPSHOT build 15649 > Reporter: Rita Bijlsma > Assignee: (Berry) A.W. van Halderen > Fix For: r2.05.xx (m12 - new feats) > > Attachments: bug_menu_gone_after_update_content.png > > Original Estimate: 3 hours > Remaining Estimate: 3 hours > > - The information architect activates 'update all content' > * The window appears and asks for confirmation. > - The inar confirms > * The window shows that the program is busy. > * The window shows that processing has fininished > !* and the pulldown menu disappears. > * The window aks to close. > - The inar closes. > !* There is still no pulldown menu. > - Only by clicking arround, to other namespace and back, > * it reappears. > Releated cenario: > - The information architect activates 'update all content' > * The window appears and asks for confirmation. > - The inar cancels > * The window disappears > - The inar again clicks 'update all content' from the pulldown menu. > *! Nothing happens > - inar activates 'create new documenttype' > * window appears > - inar cancels > - inars clicks 'update all content' from the pulldown menu. > * The window appears -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:48:04 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Mon Mar 2 11:05:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2168) Renaming a document to the same name results in error In-Reply-To: <27829066.1231856641669.JavaMail.jira@hat01> Message-ID: <3704439.1235990884055.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2168?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2168: ----------------------------------------------- Original Estimate: 4 hours Remaining Estimate: 4 hours > Renaming a document to the same name results in error > ----------------------------------------------------- > > Key: HREPTWO-2168 > URL: http://issues.onehippo.org/browse/HREPTWO-2168 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.02.00 (m09) > Reporter: Jeroen Reijn > Assignee: (Berry) A.W. van Halderen > Fix For: r2.06.xx (m13 - new feats, debug and release) > > Attachments: stacktrace.txt > > Original Estimate: 4 hours > Remaining Estimate: 4 hours > > While being logged in as editor, and trying to rename a document, but instead you type the same name, this results into an error. > As admin you will see the following error message : > org.hippoecm.repository.api.WorkflowException: Cannot move document to same name > but as editor, you get the following error: > javax.jcr.RepositoryException: standards plugin invalid: null > but in the console you will see the attached stacktrace -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:48:04 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Mon Mar 2 11:05:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1945) Info on existing document type being unavailable In-Reply-To: <2440924.1228402198686.JavaMail.jira@hat01> Message-ID: <2659727.1235990884007.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1945?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-1945: ----------------------------------------------- Original Estimate: 3 days Remaining Estimate: 3 days > Info on existing document type being unavailable > ------------------------------------------------ > > Key: HREPTWO-1945 > URL: http://issues.onehippo.org/browse/HREPTWO-1945 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: r2.01.xx (m08) > Environment: CMS > Reporter: Rita Bijlsma > Assignee: (Berry) A.W. van Halderen > Fix For: r2.06.xx (m13 - new feats, debug and release) > > Original Estimate: 3 days > Remaining Estimate: 3 days > > As a user (information architect) I created a document type with the CMS. When it could not be used for creating documents, I was unable to find out why, although I was told some weeks earlier to use 'update all content' at some point, but I had forgotten all about it, and there was nothing that made me think of it. > The cause is that no information about the difference between an available and an unavailable document type is presented to the user. This could be solved by adding for document types an extra subcolumn in the second main column, indicating this property (being available or not). That idea came from Frank van Lankveldt. > Note that for a user creating a new document type, there is no logical reason to think of a step like 'update all content', for he has no documents of the new type that need updating. It would much better fit the users work process if in the case there is no document of the edited document type, the (changes in) the document type would be made available when saved, without the need to click on 'update all content'. Unfortunately, this is technically difficult, because document types in the same namespace are not technically independent, Frank told me. The solution mentioned earlier is quite OK and also useful for users who actually changed an existing document type. > If someone thinks users should easily find out what is going on, here a description of what I did (not) do: > I did NOT click on all buttons, in which case I would have seen the menu item: 'update all content'. In stead I was searching for some information related to the document type I just created. > The example CMS I used, already contained one document type and some documents. I never tried to make documents of that type. After I created another document type, I tried to make documents and found that I was not asked for the document type of the new document. So I thought that the CMS was broken in that respect. I tried the console. Here, the old document type, 'myproject:textpage' and my new documenttype sar:member could both be found under hippo:namespaces. So I was surprised to find that the first was allowed as primary type and the latter was not. So either I'm very stupid or it is a good idea to do something about this ;-) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:52:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 11:09:56 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2303) Create an interface for closeable render services Message-ID: <23040057.1235991123656.JavaMail.jira@hat01> Create an interface for closeable render services ------------------------------------------------- Key: HREPTWO-2303 URL: http://issues.onehippo.org/browse/HREPTWO-2303 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Frank van Lankvelt Assignee: Frank van Lankvelt Fix For: r2.05.xx (m12 - new feats) Define a decorator interface for render services that are shown in tabs to implement close functionality. It should be possible for plugins to prevent the closing of tabs and to resolve the conflict that leads to this blocking behavior. The tabsplugin should invoke all decorators that have been attached to the render service of a tab. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 11:58:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Mon Mar 2 11:15:58 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2304) scm information in pom.xml not consistent with root pom.xml Message-ID: <21444830.1235991483784.JavaMail.jira@hat01> scm information in pom.xml not consistent with root pom.xml ----------------------------------------------------------- Key: HREPTWO-2304 URL: http://issues.onehippo.org/browse/HREPTWO-2304 Project: Hippo Repository 2 Issue Type: Bug Reporter: (Berry) A.W. van Halderen Assignee: (Berry) A.W. van Halderen Priority: Blocker Fix For: r2.05.xx (m12 - new feats) Results in broken functionality for maven plugins (amongst with release plugin). -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:00:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 11:17:55 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2305) Implement closeable interface in frontend editing workflow Message-ID: <13818602.1235991604053.JavaMail.jira@hat01> Implement closeable interface in frontend editing workflow ---------------------------------------------------------- Key: HREPTWO-2305 URL: http://issues.onehippo.org/browse/HREPTWO-2305 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Frank van Lankvelt Assignee: Frank van Lankvelt Fix For: r2.05.xx (m12 - new feats) Implement the closeable/dirty interface in the frontend template editing workflow. When an editor is closed that has pending changes, the user should make the choice save/discard/cancel in a dialog. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:00:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 11:17:56 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2305) Implement closeable interface in frontend editing workflow In-Reply-To: <13818602.1235991604053.JavaMail.jira@hat01> Message-ID: <24928167.1235991604080.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2305?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-2305: ---------------------------------------- Original Estimate: 1 day Remaining Estimate: 1 day > Implement closeable interface in frontend editing workflow > ---------------------------------------------------------- > > Key: HREPTWO-2305 > URL: http://issues.onehippo.org/browse/HREPTWO-2305 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Frank van Lankvelt > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 1 day > Remaining Estimate: 1 day > > Implement the closeable/dirty interface in the frontend template editing workflow. When an editor is closed that has pending changes, the user should make the choice save/discard/cancel in a dialog. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:08:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 11:25:54 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2069) Usability improvements for CMS 7.1 In-Reply-To: <22781738.1230645581810.JavaMail.root@hat01> Message-ID: <6875526.1235992083697.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2069?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-2069: ---------------------------------------- Fix Version/s: r2.06.xx (m13 - new feats, debug and release) (was: r2.05.xx (m12 - new feats)) Since all executable sub-tasks have been postponed to M13/M14, there is no point keeping this one at M12. > Usability improvements for CMS 7.1 > ---------------------------------- > > Key: HREPTWO-2069 > URL: http://issues.onehippo.org/browse/HREPTWO-2069 > Project: Hippo Repository 2 > Issue Type: Task > Components: overview > Reporter: Arje Cahn > Fix For: r2.06.xx (m13 - new feats, debug and release) > > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:10:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 11:27:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1562) Preview: make internal links clickable In-Reply-To: <23056272.1221561319486.JavaMail.jira@hat01> Message-ID: <9370769.1235992203763.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1562?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-1562: ---------------------------------------- Original Estimate: 1 week, 2 days (was: 3 days) Remaining Estimate: 1 week, 2 days (was: 3 days) Updated estimate; assuming that this includes links in Xinha areas and that there have to be multiple previews as indicated in the description. > Preview: make internal links clickable > -------------------------------------- > > Key: HREPTWO-1562 > URL: http://issues.onehippo.org/browse/HREPTWO-1562 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: 2.01.00m06.3-fixes > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.xx (m13 - new feats, debug and release) > > Original Estimate: 1 week, 2 days > Remaining Estimate: 1 week, 2 days > > When a document contains an internal link to a document, an image, or an asset, it would be nice if clicking on that link in the preview opens the object being referred to in a new preview tab. (yes this means you have 2 preview tabs open... ) > Clicking on an external link should popup a new window that loads the URL. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:12:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Mon Mar 2 11:29:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2261) Updates of workflow steps do not always propagate to front-end. In-Reply-To: <25462550.1234528765162.JavaMail.jira@hat01> Message-ID: <8506293.1235992324032.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2261?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-2261: ---------------------------------------- Original Estimate: 4 hours Remaining Estimate: 4 hours > Updates of workflow steps do not always propagate to front-end. > --------------------------------------------------------------- > > Key: HREPTWO-2261 > URL: http://issues.onehippo.org/browse/HREPTWO-2261 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Reporter: (Berry) A.W. van Halderen > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 4 hours > Remaining Estimate: 4 hours > > For instance the following path: > as author login > browse to /content/articles/article2 > request deletion > logout and login as editor > browse to /cotent/articles/article2 > reject the request > (problem one: if you do this with article1 iso article2 then you should get the workflow in order to take offline) > delete document > the problem at this time is, that no matter how you havigate, the article2 will keep up showing up. however if you login and logout, the document is gone. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Mon Mar 2 12:18:32 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Mon Mar 2 11:36:25 2009 Subject: [HippoRepos-dev] [16682] hippo-ecm/trunk: HREPTWO-2304: update the scm information. Message-ID: <20090302111832.94BC6C58B@svnnew.onehippo.org> Revision: 16682 Author: bvanhalderen Date: 2009-03-02 12:18:31 +0100 (Mon, 02 Mar 2009) Log Message: ----------- HREPTWO-2304: update the scm information. Modified Paths: -------------- hippo-ecm/trunk/addon/builtin/common/pom.xml hippo-ecm/trunk/addon/builtin/frontend/pom.xml hippo-ecm/trunk/addon/builtin/pom.xml hippo-ecm/trunk/addon/builtin/repository/pom.xml hippo-ecm/trunk/addon/builtin/test/pom.xml hippo-ecm/trunk/addon/cms/admin/pom.xml hippo-ecm/trunk/addon/cms/browse/pom.xml hippo-ecm/trunk/addon/cms/dashboard/pom.xml hippo-ecm/trunk/addon/cms/edit/pom.xml hippo-ecm/trunk/addon/cms/management/pom.xml hippo-ecm/trunk/addon/cms/pom.xml hippo-ecm/trunk/addon/cms/root/pom.xml hippo-ecm/trunk/addon/defaultcontent/pom.xml hippo-ecm/trunk/addon/defaultcontent/repository/pom.xml hippo-ecm/trunk/addon/eavesdrop/pom.xml hippo-ecm/trunk/addon/editor/pom.xml hippo-ecm/trunk/addon/faceteddate/frontend/pom.xml hippo-ecm/trunk/addon/faceteddate/pom.xml hippo-ecm/trunk/addon/faceteddate/repository/pom.xml hippo-ecm/trunk/addon/gallery/common/pom.xml hippo-ecm/trunk/addon/gallery/frontend/pom.xml hippo-ecm/trunk/addon/gallery/import/pom.xml hippo-ecm/trunk/addon/gallery/pom.xml hippo-ecm/trunk/addon/gallery/repository/pom.xml hippo-ecm/trunk/addon/gotolink/pom.xml hippo-ecm/trunk/addon/ldap/pom.xml hippo-ecm/trunk/addon/ldap/repository/pom.xml hippo-ecm/trunk/addon/pom.xml hippo-ecm/trunk/addon/reporting/frontend/pom.xml hippo-ecm/trunk/addon/reporting/pom.xml hippo-ecm/trunk/addon/reporting/repository/pom.xml hippo-ecm/trunk/addon/reviewed-action/common/pom.xml hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml hippo-ecm/trunk/addon/reviewed-action/pom.xml hippo-ecm/trunk/addon/reviewed-action/repository/pom.xml hippo-ecm/trunk/addon/reviewed-action/test/pom.xml hippo-ecm/trunk/addon/sample/common/pom.xml hippo-ecm/trunk/addon/sample/frontend/pom.xml hippo-ecm/trunk/addon/sample/pom.xml hippo-ecm/trunk/addon/sample/repository/pom.xml hippo-ecm/trunk/addon/sample/test/pom.xml hippo-ecm/trunk/addon/search/frontend/pom.xml hippo-ecm/trunk/addon/search/pom.xml hippo-ecm/trunk/addon/standards/frontend/pom.xml hippo-ecm/trunk/addon/standards/pom.xml hippo-ecm/trunk/addon/versioning/pom.xml hippo-ecm/trunk/addon/xinha/pom.xml hippo-ecm/trunk/addon/xinha-frontend/pom.xml hippo-ecm/trunk/addon/yui/pom.xml hippo-ecm/trunk/api/pom.xml hippo-ecm/trunk/archetypes/addon/pom.xml hippo-ecm/trunk/archetypes/pom.xml hippo-ecm/trunk/frontend/application/pom.xml hippo-ecm/trunk/frontend/engine/pom.xml hippo-ecm/trunk/frontend/plugins/pom.xml hippo-ecm/trunk/frontend/pom.xml hippo-ecm/trunk/package/auth/pom.xml hippo-ecm/trunk/package/config/pom.xml hippo-ecm/trunk/package/ear/pom.xml hippo-ecm/trunk/package/layout/pom.xml hippo-ecm/trunk/package/pom.xml hippo-ecm/trunk/package/skin/pom.xml hippo-ecm/trunk/package/test/pom.xml hippo-ecm/trunk/package/war/pom.xml hippo-ecm/trunk/quickstart/bin/pom.xml hippo-ecm/trunk/quickstart/ear/pom.xml hippo-ecm/trunk/quickstart/pom.xml hippo-ecm/trunk/quickstart/war/pom.xml hippo-ecm/trunk/repository/application/pom.xml hippo-ecm/trunk/repository/connector/pom.xml hippo-ecm/trunk/repository/engine/pom.xml hippo-ecm/trunk/repository/modules/pom.xml hippo-ecm/trunk/repository/pom.xml hippo-ecm/trunk/repository/test/pom.xml hippo-ecm/trunk/src/site/xdoc/integration_testing.xml hippo-ecm/trunk/tools/content-importer/pom.xml hippo-ecm/trunk/tools/dropbox/pom.xml hippo-ecm/trunk/tools/eclipse/pom.xml hippo-ecm/trunk/tools/migration/pom.xml hippo-ecm/trunk/tools/pom.xml hippo-ecm/trunk/tools/testutils/pom.xml Modified: hippo-ecm/trunk/addon/builtin/common/pom.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/common/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/builtin/common/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/common - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/common - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/common + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/common + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/common + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/common Modified: hippo-ecm/trunk/addon/builtin/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/builtin/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/frontend Modified: hippo-ecm/trunk/addon/builtin/pom.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/builtin/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin Modified: hippo-ecm/trunk/addon/builtin/repository/pom.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/builtin/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/repository Modified: hippo-ecm/trunk/addon/builtin/test/pom.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/test/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/builtin/test/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/test - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/test - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/builtin/test + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/test + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/test + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/builtin/test Modified: hippo-ecm/trunk/addon/cms/admin/pom.xml =================================================================== --- hippo-ecm/trunk/addon/cms/admin/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/cms/admin/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/admin - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/admin - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/admin + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/admin + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/admin + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/admin Modified: hippo-ecm/trunk/addon/cms/browse/pom.xml =================================================================== --- hippo-ecm/trunk/addon/cms/browse/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/cms/browse/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/browse - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/browse - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/browse + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/browse + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/browse + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/browse Modified: hippo-ecm/trunk/addon/cms/dashboard/pom.xml =================================================================== --- hippo-ecm/trunk/addon/cms/dashboard/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/cms/dashboard/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/dashboard - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/dashboard - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/dashboard + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/dashboard + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/dashboard + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/dashboard Modified: hippo-ecm/trunk/addon/cms/edit/pom.xml =================================================================== --- hippo-ecm/trunk/addon/cms/edit/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/cms/edit/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/edit - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/edit - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/edit + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/edit + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/edit + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/edit Modified: hippo-ecm/trunk/addon/cms/management/pom.xml =================================================================== --- hippo-ecm/trunk/addon/cms/management/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/cms/management/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/management - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/management - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/management + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/management + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/management + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/management Modified: hippo-ecm/trunk/addon/cms/pom.xml =================================================================== --- hippo-ecm/trunk/addon/cms/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/cms/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms Modified: hippo-ecm/trunk/addon/cms/root/pom.xml =================================================================== --- hippo-ecm/trunk/addon/cms/root/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/cms/root/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/root - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/root - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/cms/root + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/root + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/root + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/cms/root Modified: hippo-ecm/trunk/addon/defaultcontent/pom.xml =================================================================== --- hippo-ecm/trunk/addon/defaultcontent/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/defaultcontent/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample Modified: hippo-ecm/trunk/addon/defaultcontent/repository/pom.xml =================================================================== --- hippo-ecm/trunk/addon/defaultcontent/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/defaultcontent/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository Modified: hippo-ecm/trunk/addon/eavesdrop/pom.xml =================================================================== --- hippo-ecm/trunk/addon/eavesdrop/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/eavesdrop/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/eavesdrop - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/eavesdrop - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/eavesdrop + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/eavesdrop + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/eavesdrop + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/eavesdrop Modified: hippo-ecm/trunk/addon/editor/pom.xml =================================================================== --- hippo-ecm/trunk/addon/editor/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/editor/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/editor - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/editor - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/editor + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/editor + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/editor + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/editor Modified: hippo-ecm/trunk/addon/faceteddate/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/faceteddate/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/faceteddate/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/frontend Modified: hippo-ecm/trunk/addon/faceteddate/pom.xml =================================================================== --- hippo-ecm/trunk/addon/faceteddate/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/faceteddate/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate Modified: hippo-ecm/trunk/addon/faceteddate/repository/pom.xml =================================================================== --- hippo-ecm/trunk/addon/faceteddate/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/faceteddate/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/faceteddate/repository Modified: hippo-ecm/trunk/addon/gallery/common/pom.xml =================================================================== --- hippo-ecm/trunk/addon/gallery/common/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/gallery/common/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/common - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/common - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/common + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/common + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/common + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/common Modified: hippo-ecm/trunk/addon/gallery/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/gallery/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/gallery/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/frontend Modified: hippo-ecm/trunk/addon/gallery/import/pom.xml =================================================================== --- hippo-ecm/trunk/addon/gallery/import/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/gallery/import/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/import - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/import - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/import + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/import + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/import + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/import Modified: hippo-ecm/trunk/addon/gallery/pom.xml =================================================================== --- hippo-ecm/trunk/addon/gallery/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/gallery/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery Modified: hippo-ecm/trunk/addon/gallery/repository/pom.xml =================================================================== --- hippo-ecm/trunk/addon/gallery/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/gallery/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gallery/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gallery/repository Modified: hippo-ecm/trunk/addon/gotolink/pom.xml =================================================================== --- hippo-ecm/trunk/addon/gotolink/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/gotolink/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -28,9 +28,9 @@ hippo-ecm-addon-gotolink - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gotolink - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gotolink - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/gotolink + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gotolink + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gotolink + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/gotolink Modified: hippo-ecm/trunk/addon/ldap/pom.xml =================================================================== --- hippo-ecm/trunk/addon/ldap/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/ldap/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/ldap - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/ldap - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/ldap + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/ldap + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/ldap + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/ldap Modified: hippo-ecm/trunk/addon/ldap/repository/pom.xml =================================================================== --- hippo-ecm/trunk/addon/ldap/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/ldap/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -49,9 +49,9 @@ - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/ldap/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/ldap/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/ldap/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/ldap/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/ldap/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/ldap/repository Modified: hippo-ecm/trunk/addon/pom.xml =================================================================== --- hippo-ecm/trunk/addon/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon Modified: hippo-ecm/trunk/addon/reporting/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reporting/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/reporting/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting/frontend Modified: hippo-ecm/trunk/addon/reporting/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reporting/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/reporting/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting Modified: hippo-ecm/trunk/addon/reporting/repository/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reporting/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/reporting/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reporting/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reporting/repository Modified: hippo-ecm/trunk/addon/reviewed-action/common/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/common/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/reviewed-action/common/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/common - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/common - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/common + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/common + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/common + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/common Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/frontend Modified: hippo-ecm/trunk/addon/reviewed-action/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/reviewed-action/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action Modified: hippo-ecm/trunk/addon/reviewed-action/repository/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/reviewed-action/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/repository Modified: hippo-ecm/trunk/addon/reviewed-action/test/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/test/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/reviewed-action/test/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/test - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/test - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/test + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/test + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/test + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/reviewed-action/test Modified: hippo-ecm/trunk/addon/sample/common/pom.xml =================================================================== --- hippo-ecm/trunk/addon/sample/common/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/sample/common/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/common - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/common - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/common + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/common + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/common + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/common Modified: hippo-ecm/trunk/addon/sample/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/sample/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/sample/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/frontend Modified: hippo-ecm/trunk/addon/sample/pom.xml =================================================================== --- hippo-ecm/trunk/addon/sample/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/sample/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample Modified: hippo-ecm/trunk/addon/sample/repository/pom.xml =================================================================== --- hippo-ecm/trunk/addon/sample/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/sample/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/repository Modified: hippo-ecm/trunk/addon/sample/test/pom.xml =================================================================== --- hippo-ecm/trunk/addon/sample/test/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/sample/test/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/test - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/test - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/sample/test + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/test + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/test + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/sample/test Modified: hippo-ecm/trunk/addon/search/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/search/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/search/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/search/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/search/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/search/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/search/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/search/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/search/frontend Modified: hippo-ecm/trunk/addon/search/pom.xml =================================================================== --- hippo-ecm/trunk/addon/search/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/search/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/search - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/search - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/search + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/search + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/search + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/search Modified: hippo-ecm/trunk/addon/standards/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/standards/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/standards/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/standards/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/standards/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/standards/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/standards/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/standards/frontend Modified: hippo-ecm/trunk/addon/standards/pom.xml =================================================================== --- hippo-ecm/trunk/addon/standards/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/standards/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/standards - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/standards - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/standards + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/standards + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/standards + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/standards Modified: hippo-ecm/trunk/addon/versioning/pom.xml =================================================================== --- hippo-ecm/trunk/addon/versioning/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/versioning/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -28,9 +28,9 @@ hippo-ecm-addon-versioning - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/versioning - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/versioning - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/versioning + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/versioning + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/versioning + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/versioning Modified: hippo-ecm/trunk/addon/xinha/pom.xml =================================================================== --- hippo-ecm/trunk/addon/xinha/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/xinha/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ war - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/xinha - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/xinha - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/xinha + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/xinha + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/xinha + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/xinha Modified: hippo-ecm/trunk/addon/xinha-frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/xinha-frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/xinha-frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/xinha-frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/xinha-frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/xinha-frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/xinha-frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/xinha-frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/xinha-frontend Modified: hippo-ecm/trunk/addon/yui/pom.xml =================================================================== --- hippo-ecm/trunk/addon/yui/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/addon/yui/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/yui - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/yui - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/addon/yui + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/yui + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/yui + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/yui Modified: hippo-ecm/trunk/api/pom.xml =================================================================== --- hippo-ecm/trunk/api/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/api/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -28,9 +28,9 @@ hippo-ecm-api - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/api - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/api - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/api + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/api + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/api + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/api Modified: hippo-ecm/trunk/archetypes/addon/pom.xml =================================================================== --- hippo-ecm/trunk/archetypes/addon/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/archetypes/addon/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ maven-archetype - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/archetypes/addon - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/archetypes/addon - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/archetypes/addon + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/archetypes/addon + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/archetypes/addon + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/archetypes/addon Modified: hippo-ecm/trunk/archetypes/pom.xml =================================================================== --- hippo-ecm/trunk/archetypes/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/archetypes/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/archetypes - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/archetypes - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/archetypes + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/archetypes + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/archetypes + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/archetypes Modified: hippo-ecm/trunk/frontend/application/pom.xml =================================================================== --- hippo-ecm/trunk/frontend/application/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/frontend/application/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ war - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/application - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/application - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/application + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/application + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/application + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/application Modified: hippo-ecm/trunk/frontend/engine/pom.xml =================================================================== --- hippo-ecm/trunk/frontend/engine/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/frontend/engine/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/engine - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/engine - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/engine + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/engine + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/engine + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/engine Modified: hippo-ecm/trunk/frontend/plugins/pom.xml =================================================================== --- hippo-ecm/trunk/frontend/plugins/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/frontend/plugins/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/plugins - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/plugins - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend/plugins + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/plugins + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/plugins + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend/plugins Modified: hippo-ecm/trunk/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/frontend/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/frontend/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/frontend + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/frontend Modified: hippo-ecm/trunk/package/auth/pom.xml =================================================================== --- hippo-ecm/trunk/package/auth/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/package/auth/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/auth - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/auth - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/auth + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/auth + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/auth + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/auth Modified: hippo-ecm/trunk/package/config/pom.xml =================================================================== --- hippo-ecm/trunk/package/config/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/package/config/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/config - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/config - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/config + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/config + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/config + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/config Modified: hippo-ecm/trunk/package/ear/pom.xml =================================================================== --- hippo-ecm/trunk/package/ear/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/package/ear/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ ear - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/ear - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/ear - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/ear + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/ear + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/ear + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/ear Modified: hippo-ecm/trunk/package/layout/pom.xml =================================================================== --- hippo-ecm/trunk/package/layout/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/package/layout/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ war - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/layout - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/layout - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/layout + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/layout + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/layout + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/layout Modified: hippo-ecm/trunk/package/pom.xml =================================================================== --- hippo-ecm/trunk/package/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/package/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package - https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package + https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package Modified: hippo-ecm/trunk/package/skin/pom.xml =================================================================== --- hippo-ecm/trunk/package/skin/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/package/skin/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ war - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/skin - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/skin - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/skin + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/skin + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/skin + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/skin Modified: hippo-ecm/trunk/package/test/pom.xml =================================================================== --- hippo-ecm/trunk/package/test/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/package/test/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/test - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/test - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/test + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/test + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/test + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/test Modified: hippo-ecm/trunk/package/war/pom.xml =================================================================== --- hippo-ecm/trunk/package/war/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/package/war/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ war - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/war - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/war - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/package/war + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/war + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/war + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/package/war Modified: hippo-ecm/trunk/quickstart/bin/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/bin/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/quickstart/bin/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/bin - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/bin - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/bin + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/bin + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/bin + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/bin Modified: hippo-ecm/trunk/quickstart/ear/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/ear/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/quickstart/ear/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ ear - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/ear - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/ear - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/ear + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/ear + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/ear + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/ear Modified: hippo-ecm/trunk/quickstart/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/quickstart/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart - https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart + https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart Modified: hippo-ecm/trunk/quickstart/war/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ war - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/war - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/war - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/quickstart/war + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/war + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/war + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/quickstart/war Modified: hippo-ecm/trunk/repository/application/pom.xml =================================================================== --- hippo-ecm/trunk/repository/application/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/repository/application/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ war - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/application - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/application - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/application + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/application + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/application + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/application Modified: hippo-ecm/trunk/repository/connector/pom.xml =================================================================== --- hippo-ecm/trunk/repository/connector/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/repository/connector/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/connector - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/connector - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/connector + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/connector + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/connector + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/connector Modified: hippo-ecm/trunk/repository/engine/pom.xml =================================================================== --- hippo-ecm/trunk/repository/engine/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/repository/engine/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/engine - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/engine - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/engine + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/engine + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/engine + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/engine Modified: hippo-ecm/trunk/repository/modules/pom.xml =================================================================== --- hippo-ecm/trunk/repository/modules/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/repository/modules/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/modules - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/modules - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/modules + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/modules + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/modules + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/modules Modified: hippo-ecm/trunk/repository/pom.xml =================================================================== --- hippo-ecm/trunk/repository/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/repository/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository Modified: hippo-ecm/trunk/repository/test/pom.xml =================================================================== --- hippo-ecm/trunk/repository/test/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/repository/test/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/test - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/test - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/repository/test + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/test + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/test + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/repository/test Modified: hippo-ecm/trunk/src/site/xdoc/integration_testing.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/integration_testing.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/src/site/xdoc/integration_testing.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -83,7 +83,7 @@ check out a recent copy of Hippo ECM:

- svn checkout 'http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk' hippo-ecm + svn checkout 'http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk' hippo-ecm

and the wicket 1.3.5 release: Modified: hippo-ecm/trunk/tools/content-importer/pom.xml =================================================================== --- hippo-ecm/trunk/tools/content-importer/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/tools/content-importer/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ hippo-ecm-tools-content-importer - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/content-importer - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/content-importer - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/content-importer + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/content-importer + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/content-importer + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/content-importer Modified: hippo-ecm/trunk/tools/dropbox/pom.xml =================================================================== --- hippo-ecm/trunk/tools/dropbox/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/tools/dropbox/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -28,9 +28,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/dropbox - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/dropbox - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/dropbox + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/dropbox + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/dropbox + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/dropbox Modified: hippo-ecm/trunk/tools/eclipse/pom.xml =================================================================== --- hippo-ecm/trunk/tools/eclipse/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/tools/eclipse/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -37,9 +37,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/eclipse - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/eclipse - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/eclipse + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/eclipse + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/eclipse + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/eclipse Modified: hippo-ecm/trunk/tools/migration/pom.xml =================================================================== --- hippo-ecm/trunk/tools/migration/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/tools/migration/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ hippo-ecm-tools-migration - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/migration - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/migration - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/migration + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/migration + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/migration + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/migration Modified: hippo-ecm/trunk/tools/pom.xml =================================================================== --- hippo-ecm/trunk/tools/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/tools/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -29,9 +29,9 @@ pom - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools Modified: hippo-ecm/trunk/tools/testutils/pom.xml =================================================================== --- hippo-ecm/trunk/tools/testutils/pom.xml 2009-03-02 08:17:29 UTC (rev 16681) +++ hippo-ecm/trunk/tools/testutils/pom.xml 2009-03-02 11:18:31 UTC (rev 16682) @@ -30,9 +30,9 @@ jar - scm:svn:http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/testutils - scm:svn:https://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/testutils - http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk/tools/testutils + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/testutils + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/testutils + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/testutils From svn-logs at hippocms.org Mon Mar 2 12:19:52 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Mon Mar 2 11:37:43 2009 Subject: [HippoRepos-dev] [16683] hippo-ecm: HREPTWO-2304: update svn location Message-ID: <20090302111952.F415EC589@svnnew.onehippo.org> Revision: 16683 Author: bvanhalderen Date: 2009-03-02 12:19:52 +0100 (Mon, 02 Mar 2009) Log Message: ----------- HREPTWO-2304: update svn location Modified Paths: -------------- hippo-ecm/trunk/src/site/xdoc/releasing.xml Modified: hippo-ecm/trunk/src/site/xdoc/releasing.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/releasing.xml 2009-03-02 11:18:31 UTC (rev 16682) +++ hippo-ecm/trunk/src/site/xdoc/releasing.xml 2009-03-02 11:19:52 UTC (rev 16683) @@ -50,7 +50,7 @@ (this is a must):

-svn checkout 'http://svn.hippocms.org/repos/hippo/hippo-ecm/trunk' hippo-ecm +svn checkout 'http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk' hippo-ecm cd hippo-ecm rm -rf ~/.m2/repository/org/hippoecm mvn install @@ -73,7 +73,7 @@ dots are replaced by underscores. This means that if you want to release from a branch, then you should have your sources available at the following URL, and checkout those in stead of the trunk:
-http://svn.hippocms.org/repos/hippo/hippo-ecm/branches/Release-HREPTWO-v2_01_00_M0 +http://svn.onehippo.org/repos/hippo/hippo-ecm/branches/Release-HREPTWO-v2_01_00_M0

@@ -159,7 +159,7 @@

-svn checkout 'http://svn.hippocms.org/repos/hippo/hippo-ecm/tags/Release-HREPTWO-v2_01_00_M0' hippo-ecm-M0 +svn checkout 'http://svn.onehippo.org/repos/hippo/hippo-ecm/tags/Release-HREPTWO-v2_01_00_M0' hippo-ecm-M0 cd hippo-ecm-M0 From helpdesk at onehippo.com Mon Mar 2 12:21:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Mon Mar 2 11:38:54 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2304) scm information in pom.xml not consistent with root pom.xml In-Reply-To: <21444830.1235991483784.JavaMail.jira@hat01> Message-ID: <29143956.1235992863629.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen resolved HREPTWO-2304. ------------------------------------------------ Resolution: Fixed > scm information in pom.xml not consistent with root pom.xml > ----------------------------------------------------------- > > Key: HREPTWO-2304 > URL: http://issues.onehippo.org/browse/HREPTWO-2304 > Project: Hippo Repository 2 > Issue Type: Bug > Reporter: (Berry) A.W. van Halderen > Assignee: (Berry) A.W. van Halderen > Priority: Blocker > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 2 hours > Time Spent: 1 hour, 30 minutes > Remaining Estimate: 30 minutes > > Results in broken functionality for maven plugins (amongst with release plugin). -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:28:03 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Mon Mar 2 11:45:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1429) Create HST Configuration Editor perspective In-Reply-To: <129631.1218621895350.JavaMail.jira@hat01> Message-ID: <22440012.1235993283884.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart updated HREPTWO-1429: ------------------------------------ Attachment: mylyn-context.zip > Create HST Configuration Editor perspective > ------------------------------------------- > > Key: HREPTWO-1429 > URL: http://issues.onehippo.org/browse/HREPTWO-1429 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Arje Cahn > Assignee: Arthur Bogaart > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Attachments: mylyn-context.zip > > Time Spent: 4 days > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:30:04 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Mon Mar 2 11:47:55 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-1429) Create HST Configuration Editor perspective In-Reply-To: <129631.1218621895350.JavaMail.jira@hat01> Message-ID: <5549630.1235993404172.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart resolved HREPTWO-1429. ------------------------------------- Fix Version/s: (was: r2.05.xx (m12 - new feats)) Resolution: Fixed > Create HST Configuration Editor perspective > ------------------------------------------- > > Key: HREPTWO-1429 > URL: http://issues.onehippo.org/browse/HREPTWO-1429 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Arje Cahn > Assignee: Arthur Bogaart > Priority: High > Attachments: mylyn-context.zip > > Time Spent: 4 days > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:30:04 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Mon Mar 2 11:47:56 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2293) Create sitemap editor In-Reply-To: <6526634.1235989563776.JavaMail.jira@hat01> Message-ID: <22365507.1235993404316.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2293?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart updated HREPTWO-2293: ------------------------------------ Original Estimate: 2 days Remaining Estimate: 2 days > Create sitemap editor > --------------------- > > Key: HREPTWO-2293 > URL: http://issues.onehippo.org/browse/HREPTWO-2293 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: overview > Reporter: Frank van Lankvelt > Assignee: Arthur Bogaart > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 2 days > Remaining Estimate: 2 days > > Create a sitemap editor to configure the matcher and the mapping of parameters to a tree of components. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 12:32:03 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Mon Mar 2 11:49:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2294) Create template manager In-Reply-To: <5501082.1235989863684.JavaMail.jira@hat01> Message-ID: <7063551.1235993523766.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart updated HREPTWO-2294: ------------------------------------ Original Estimate: 2 days Remaining Estimate: 2 days > Create template manager > ----------------------- > > Key: HREPTWO-2294 > URL: http://issues.onehippo.org/browse/HREPTWO-2294 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: overview > Reporter: Frank van Lankvelt > Assignee: Arthur Bogaart > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 2 days > Remaining Estimate: 2 days > > Create an editor/browser for managing the controllers and templates that are used in component definitions. It should be possible to enter the list of "extension points" for a (JSP) template and the parameters of a controller. These are used in the sitemap/page editor to create component trees and display options to the webmaster. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 14:47:03 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Mon Mar 2 14:04:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2293) Create sitemap editor In-Reply-To: <6526634.1235989563776.JavaMail.jira@hat01> Message-ID: <20033693.1236001623768.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2293?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart updated HREPTWO-2293: ------------------------------------ Remaining Estimate: 2 days (was: 1 day) > Create sitemap editor > --------------------- > > Key: HREPTWO-2293 > URL: http://issues.onehippo.org/browse/HREPTWO-2293 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: overview > Reporter: Frank van Lankvelt > Assignee: Arthur Bogaart > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 2 days > Time Spent: 1 day > Remaining Estimate: 2 days > > Create a sitemap editor to configure the matcher and the mapping of parameters to a tree of components. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 2 15:58:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Mon Mar 2 15:15:54 2009 Subject: [HippoRepos-dev] [JIRA] Reopened: (HREPTWO-632) Using HST 2 with Hippo CMS 7 tutorial In-Reply-To: <14590248.1205500848168.JavaMail.jira@hat01> Message-ID: <4391094.1236005883697.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-632?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn reopened HREPTWO-632: ------------------------------- > Using HST 2 with Hippo CMS 7 tutorial > ------------------------------------- > > Key: HREPTWO-632 > URL: http://issues.onehippo.org/browse/HREPTWO-632 > Project: Hippo Repository 2 > Issue Type: Task > Components: documentation > Affects Versions: 2.01.00m04 > Reporter: Arje Cahn > Assignee: Jeroen Hoffman > Fix For: 2.01.00m07-rc1 > > Original Estimate: 2 days > Time Spent: 5 hours > Remaining Estimate: 1 day, 3 hours > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 01:46:03 2009 From: helpdesk at onehippo.com (JIRA (Niels van Kampenhout)) Date: Tue Mar 3 01:03:53 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2306) Do not close document after closing editor Message-ID: <3401814.1236041163777.JavaMail.jira@hat01> Do not close document after closing editor ------------------------------------------ Key: HREPTWO-2306 URL: http://issues.onehippo.org/browse/HREPTWO-2306 Project: Hippo Repository 2 Issue Type: Improvement Affects Versions: r2.04.00 (m11 - technical) Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 (Hippo ECM Repository 2.04.01-SNAPSHOT ) Reporter: Niels van Kampenhout Fix For: r2.05.xx (m12 - new feats) This is a usability issue. - log in to cms - browse to a document - click on document, document tab appears - click on edit, document is loaded in editor on same document tab - make some changes - click "Save and close" - the complete document tab disappears (although the document still appears to be selected in the document list) - if I want to perform a workflow action such a publish, which is very likely after editing and saving the document, I have to reselect the document. I have to click on another document, then click on the first document again, to reopen the document tab including the workflow actions/buttons. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 01:56:03 2009 From: helpdesk at onehippo.com (JIRA (Niels van Kampenhout)) Date: Tue Mar 3 01:13:54 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2307) Confusing error message in New Folder dialog Message-ID: <3130766.1236041763688.JavaMail.jira@hat01> Confusing error message in New Folder dialog -------------------------------------------- Key: HREPTWO-2307 URL: http://issues.onehippo.org/browse/HREPTWO-2307 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.04.00 (m11 - technical) Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 (Hippo ECM Repository 2.04.01-SNAPSHOT ) Reporter: Niels van Kampenhout Fix For: r2.05.xx (m12 - new feats) Attachments: HREPTWO-2307.png - log in to cms - go to documents - select New Folder in dropdown, a dialog appears - fill in a name for the new folder - do *not* select anything in the "Folder type" drop down field - click ok - you will get an error message "Field 'prototype' is required." but there is no field "prototype". There is a field "Document type" which is required (although a default value would be more user friendly) so probably this is what should be referred to in the error message. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 01:56:03 2009 From: helpdesk at onehippo.com (JIRA (Niels van Kampenhout)) Date: Tue Mar 3 01:13:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2307) Confusing error message in New Folder dialog In-Reply-To: <3130766.1236041763688.JavaMail.jira@hat01> Message-ID: <1563595.1236041763718.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Niels van Kampenhout updated HREPTWO-2307: ------------------------------------------ Attachment: HREPTWO-2307.png > Confusing error message in New Folder dialog > -------------------------------------------- > > Key: HREPTWO-2307 > URL: http://issues.onehippo.org/browse/HREPTWO-2307 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > Fix For: r2.05.xx (m12 - new feats) > > Attachments: HREPTWO-2307.png > > > - log in to cms > - go to documents > - select New Folder in dropdown, a dialog appears > - fill in a name for the new folder > - do *not* select anything in the "Folder type" drop down field > - click ok > - you will get an error message "Field 'prototype' is required." but there is no field "prototype". There is a field "Document type" which is required (although a default value would be more user friendly) so probably this is what should be referred to in the error message. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 02:04:03 2009 From: helpdesk at onehippo.com (JIRA (Niels van Kampenhout)) Date: Tue Mar 3 01:21:52 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2308) Folders can be created for images and assets, but it is not possible to put anything in them Message-ID: <29375315.1236042243670.JavaMail.jira@hat01> Folders can be created for images and assets, but it is not possible to put anything in them -------------------------------------------------------------------------------------------- Key: HREPTWO-2308 URL: http://issues.onehippo.org/browse/HREPTWO-2308 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.04.00 (m11 - technical) Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 (Hippo ECM Repository 2.04.01-SNAPSHOT ) Reporter: Niels van Kampenhout Fix For: r2.05.xx (m12 - new feats) It is possible to create folders and subfolders under Images and Assets. But there is no "Add Image" or "Add File" in the dropdown when inside these folders. When using "Add image" or "add file" options in the top right corner of the gui, they always end up in the root folder under images or assets. So the folder creation functionality is of no use, you can never put anything in the folders. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 02:10:03 2009 From: helpdesk at onehippo.com (JIRA (Niels van Kampenhout)) Date: Tue Mar 3 01:27:53 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2309) java.lang.NegativeArraySizeException when using search box Message-ID: <8248446.1236042603669.JavaMail.jira@hat01> java.lang.NegativeArraySizeException when using search box ---------------------------------------------------------- Key: HREPTWO-2309 URL: http://issues.onehippo.org/browse/HREPTWO-2309 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.04.00 (m11 - technical) Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 (Hippo ECM Repository 2.04.01-SNAPSHOT ) Reporter: Niels van Kampenhout Fix For: r2.05.xx (m12 - new feats) - log in to cms - start typing in the search box - nothing happens in the gui, but an exception will be thrown in the background: 02.03.2009 17:06:59 ERROR [org.apache.wicket.RequestCycle.logRuntimeException():1437] java.lang.NegativeArraySizeException at org.hippoecm.frontend.plugins.search.yui.SearchBehavior$SearchBuilder.doSearch(SearchBehavior.java:267) at org.hippoecm.frontend.plugins.search.yui.SearchBehavior$SearchBuilder.search(SearchBehavior.java:308) at org.hippoecm.frontend.plugins.search.yui.SearchBehavior.respond(SearchBehavior.java:106) at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297) at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100) at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) at org.hippoecm.frontend.Main$6.processEvents(Main.java:270) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353) at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) at org.hippoecm.frontend.plugins.login.ConcurrentLoginFilter.doFilter(ConcurrentLoginFilter.java:54) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 09:27:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 3 08:44:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2310) Upgrade to jackrabbit 1.4.9 In-Reply-To: <23896755.1236068823746.JavaMail.jira@hat01> Message-ID: <16942761.1236068823775.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans updated HREPTWO-2310: ----------------------------------------- Summary: Upgrade to jackrabbit 1.4.9 (was: Upgrade to jjackrabbit 1.4.9) > Upgrade to jackrabbit 1.4.9 > --------------------------- > > Key: HREPTWO-2310 > URL: http://issues.onehippo.org/browse/HREPTWO-2310 > Project: Hippo Repository 2 > Issue Type: Task > Affects Versions: r2.03.00 (m10 - scalability) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.03.01 > > Original Estimate: 1 hour > Remaining Estimate: 1 hour > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 09:27:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 3 08:44:53 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2310) Upgrade to jjackrabbit 1.4.9 Message-ID: <23896755.1236068823746.JavaMail.jira@hat01> Upgrade to jjackrabbit 1.4.9 ---------------------------- Key: HREPTWO-2310 URL: http://issues.onehippo.org/browse/HREPTWO-2310 Project: Hippo Repository 2 Issue Type: Task Affects Versions: r2.03.00 (m10 - scalability) Reporter: Bart van der Schans Assignee: Bart van der Schans Fix For: r2.03.01 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 09:27:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 3 08:44:54 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2310) Upgrade to jackrabbit-core 1.4.9 In-Reply-To: <23896755.1236068823746.JavaMail.jira@hat01> Message-ID: <4159250.1236068823943.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans updated HREPTWO-2310: ----------------------------------------- Summary: Upgrade to jackrabbit-core 1.4.9 (was: Upgrade to jackrabbit 1.4.9) Description: Improvements [JCR-1337] Optimize first execution queries for DescendantSelfAxisWeight/... [JCR-1872] Improve performance of simple path queries [JCR-1884] CachingIndexReader.initializeParents() does not scale well ... [JCR-1998] Initialize hierarchy cache on startup Bug fixes [JCR-1573] Lucene Query Exception: 'attempt to access a deleted document' > Upgrade to jackrabbit-core 1.4.9 > -------------------------------- > > Key: HREPTWO-2310 > URL: http://issues.onehippo.org/browse/HREPTWO-2310 > Project: Hippo Repository 2 > Issue Type: Task > Affects Versions: r2.03.00 (m10 - scalability) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.03.01 > > Original Estimate: 1 hour > Remaining Estimate: 1 hour > > Improvements > [JCR-1337] Optimize first execution queries for DescendantSelfAxisWeight/... > [JCR-1872] Improve performance of simple path queries > [JCR-1884] CachingIndexReader.initializeParents() does not scale well ... > [JCR-1998] Initialize hierarchy cache on startup > Bug fixes > [JCR-1573] Lucene Query Exception: 'attempt to access a deleted document' -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 09:39:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Tue Mar 3 08:56:52 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2311) Create dialog for destination picker Message-ID: <24639234.1236069543628.JavaMail.jira@hat01> Create dialog for destination picker ------------------------------------ Key: HREPTWO-2311 URL: http://issues.onehippo.org/browse/HREPTWO-2311 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: (Berry) A.W. van Halderen Assignee: (Berry) A.W. van Halderen -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 09:39:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Tue Mar 3 08:56:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2311) Create dialog for destination picker In-Reply-To: <24639234.1236069543628.JavaMail.jira@hat01> Message-ID: <1965926.1236069543673.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2311?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2311: ----------------------------------------------- Original Estimate: 4 hours Remaining Estimate: 4 hours > Create dialog for destination picker > ------------------------------------ > > Key: HREPTWO-2311 > URL: http://issues.onehippo.org/browse/HREPTWO-2311 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: front-end-core > Reporter: (Berry) A.W. van Halderen > Assignee: (Berry) A.W. van Halderen > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 4 hours > Remaining Estimate: 4 hours > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 09:41:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 08:58:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2307) Confusing error message in New Folder dialog In-Reply-To: <3130766.1236041763688.JavaMail.jira@hat01> Message-ID: <29102721.1236069664277.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2307: ------------------------------- Fix Version/s: (was: r2.05.xx (m12 - new feats)) Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 (Hippo ECM Repository 2.04.01-SNAPSHOT ) was: Hippo CMS version 2.04.01-SNAPSHOT build 16651 (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Confusing error message in New Folder dialog > -------------------------------------------- > > Key: HREPTWO-2307 > URL: http://issues.onehippo.org/browse/HREPTWO-2307 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > Attachments: HREPTWO-2307.png > > > - log in to cms > - go to documents > - select New Folder in dropdown, a dialog appears > - fill in a name for the new folder > - do *not* select anything in the "Folder type" drop down field > - click ok > - you will get an error message "Field 'prototype' is required." but there is no field "prototype". There is a field "Document type" which is required (although a default value would be more user friendly) so probably this is what should be referred to in the error message. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 09:41:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 08:58:54 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2308) Folders can be created for images and assets, but it is not possible to put anything in them In-Reply-To: <29375315.1236042243670.JavaMail.jira@hat01> Message-ID: <5946185.1236069664339.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2308: ------------------------------- Fix Version/s: (was: r2.05.xx (m12 - new feats)) > Folders can be created for images and assets, but it is not possible to put anything in them > -------------------------------------------------------------------------------------------- > > Key: HREPTWO-2308 > URL: http://issues.onehippo.org/browse/HREPTWO-2308 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > > It is possible to create folders and subfolders under Images and Assets. But there is no "Add Image" or "Add File" in the dropdown when inside these folders. When using "Add image" or "add file" options in the top right corner of the gui, they always end up in the root folder under images or assets. So the folder creation functionality is of no use, you can never put anything in the folders. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 09:41:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 08:58:54 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2309) java.lang.NegativeArraySizeException when using search box In-Reply-To: <8248446.1236042603669.JavaMail.jira@hat01> Message-ID: <23596502.1236069664372.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2309: ------------------------------- Fix Version/s: (was: r2.05.xx (m12 - new feats)) > java.lang.NegativeArraySizeException when using search box > ---------------------------------------------------------- > > Key: HREPTWO-2309 > URL: http://issues.onehippo.org/browse/HREPTWO-2309 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > > - log in to cms > - start typing in the search box > - nothing happens in the gui, but an exception will be thrown in the background: > 02.03.2009 17:06:59 ERROR [org.apache.wicket.RequestCycle.logRuntimeException():1437] > java.lang.NegativeArraySizeException > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior$SearchBuilder.doSearch(SearchBehavior.java:267) > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior$SearchBuilder.search(SearchBehavior.java:308) > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior.respond(SearchBehavior.java:106) > at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297) > at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100) > at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) > at org.hippoecm.frontend.Main$6.processEvents(Main.java:270) > at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175) > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252) > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353) > at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355) > at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at org.hippoecm.frontend.plugins.login.ConcurrentLoginFilter.doFilter(ConcurrentLoginFilter.java:54) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) > at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) > at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:324) > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:10:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:27:51 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2272) Permissions screens In-Reply-To: <3840397.1235056263739.JavaMail.jira@hat01> Message-ID: <3477976.1236071403721.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2272?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2272: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > Permissions screens > ------------------- > > Key: HREPTWO-2272 > URL: http://issues.onehippo.org/browse/HREPTWO-2272 > Project: Hippo Repository 2 > Issue Type: New Feature > Reporter: Arje Cahn > Assignee: Bart van der Schans > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:12:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:29:51 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2053) Reimplement all standard Hippo CMS 6 features in CMS 7 In-Reply-To: <29209062.1230568301771.JavaMail.root@hat01> Message-ID: <26759427.1236071523675.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2053?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2053: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > Reimplement all standard Hippo CMS 6 features in CMS 7 > ------------------------------------------------------ > > Key: HREPTWO-2053 > URL: http://issues.onehippo.org/browse/HREPTWO-2053 > Project: Hippo Repository 2 > Issue Type: Task > Components: overview > Reporter: Arje Cahn > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:14:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:31:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2068) As a webmaster, I want to manage the HST configuration from within the CMS In-Reply-To: <26777850.1230645341921.JavaMail.root@hat01> Message-ID: <8249811.1236071643751.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2068?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2068: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > As a webmaster, I want to manage the HST configuration from within the CMS > -------------------------------------------------------------------------- > > Key: HREPTWO-2068 > URL: http://issues.onehippo.org/browse/HREPTWO-2068 > Project: Hippo Repository 2 > Issue Type: Task > Components: overview > Reporter: Arje Cahn > Assignee: Arthur Bogaart > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:14:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:31:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2306) Do not close document after closing editor In-Reply-To: <3401814.1236041163777.JavaMail.jira@hat01> Message-ID: <2511058.1236071643782.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2306?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2306: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > Do not close document after closing editor > ------------------------------------------ > > Key: HREPTWO-2306 > URL: http://issues.onehippo.org/browse/HREPTWO-2306 > Project: Hippo Repository 2 > Issue Type: Improvement > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > > This is a usability issue. > - log in to cms > - browse to a document > - click on document, document tab appears > - click on edit, document is loaded in editor on same document tab > - make some changes > - click "Save and close" > - the complete document tab disappears (although the document still appears to be selected in the document list) > - if I want to perform a workflow action such a publish, which is very likely after editing and saving the document, I have to reselect the document. I have to click on another document, then click on the first document again, to reopen the document tab including the workflow actions/buttons. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:16:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:33:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2306) Do not close document after closing editor In-Reply-To: <3401814.1236041163777.JavaMail.jira@hat01> Message-ID: <6173440.1236071763735.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2306?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2306: ------------------------------- Parent: HREPTWO-2096 Issue Type: Sub-task (was: Improvement) > Do not close document after closing editor > ------------------------------------------ > > Key: HREPTWO-2306 > URL: http://issues.onehippo.org/browse/HREPTWO-2306 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > > This is a usability issue. > - log in to cms > - browse to a document > - click on document, document tab appears > - click on edit, document is loaded in editor on same document tab > - make some changes > - click "Save and close" > - the complete document tab disappears (although the document still appears to be selected in the document list) > - if I want to perform a workflow action such a publish, which is very likely after editing and saving the document, I have to reselect the document. I have to click on another document, then click on the first document again, to reopen the document tab including the workflow actions/buttons. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:16:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:33:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2055) Separated deployment of CMS and Repository In-Reply-To: <14844677.1230568421804.JavaMail.root@hat01> Message-ID: <10060040.1236071763803.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2055?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2055: ------------------------------- Fix Version/s: r2.07.xx (m14) (was: r2.05.xx (m12 - new feats)) > Separated deployment of CMS and Repository > ------------------------------------------ > > Key: HREPTWO-2055 > URL: http://issues.onehippo.org/browse/HREPTWO-2055 > Project: Hippo Repository 2 > Issue Type: Task > Components: overview > Reporter: Arje Cahn > Assignee: (Berry) A.W. van Halderen > Fix For: r2.07.xx (m14) > > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:16:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:33:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1658) package war thows NPE on folder view (i think because there is not 'content' node) In-Reply-To: <1321954.1222959363701.JavaMail.jira@hat01> Message-ID: <23211508.1236071763923.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1658?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-1658: ------------------------------- Original Estimate: 1 hour Remaining Estimate: 1 hour > package war thows NPE on folder view (i think because there is not 'content' node) > ---------------------------------------------------------------------------------- > > Key: HREPTWO-1658 > URL: http://issues.onehippo.org/browse/HREPTWO-1658 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: 2.01.00m06.4 > Reporter: Ard Schrijvers > Assignee: (Berry) A.W. van Halderen > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 1 hour > Remaining Estimate: 1 hour > > [org.apache.wicket.RequestCycle.logRuntimeException():1432] > java.lang.NullPointerException > at > org.hippoecm.frontend.plugins.cms.browse.BrowserPerspective.selectFolder(BrowserPerspective.java:138) > at > org.hippoecm.frontend.plugins.cms.browse.BrowserPerspective$1.updateModel(BrowserPerspective.java:81) > at org.hippoecm.frontend.model.ModelService.setModel(ModelService.java:63) > at > org.hippoecm.frontend.service.render.AbstractRenderService.setModel(AbstractRenderService.java:191) > at > org.hippoecm.frontend.plugins.cms.browse.tree.FolderTreePlugin.focus(FolderTreePlugin.java:82) > at > org.hippoecm.frontend.plugins.cms.browse.tree.SectionTreePlugin$1$1.onClick(SectionTreePlugin.java:88) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:18:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:35:51 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2284) Login screen has no style/images In-Reply-To: <992039.1235521384209.JavaMail.jira@hat01> Message-ID: <21718032.1236071883703.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2284: ------------------------------- Fix Version/s: (was: r2.05.xx (m12 - new feats)) > Login screen has no style/images > -------------------------------- > > Key: HREPTWO-2284 > URL: http://issues.onehippo.org/browse/HREPTWO-2284 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.xx (m12 - new feats) > Environment: trunk svn revision 16628 > quickstart-war > run from command line with mvn jetty:run-war > Reporter: Niels van Kampenhout > Attachments: HREPTWO-2284.png > > > Login in screen is plain html, no style / images -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:18:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:35:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2285) Folders contents not displayed in documents browser In-Reply-To: <27175219.1235521803716.JavaMail.jira@hat01> Message-ID: <172667.1236071883731.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2285?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2285: ------------------------------- Fix Version/s: (was: r2.05.xx (m12 - new feats)) > Folders contents not displayed in documents browser > --------------------------------------------------- > > Key: HREPTWO-2285 > URL: http://issues.onehippo.org/browse/HREPTWO-2285 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.xx (m12 - new feats) > Environment: trunk svn revision 16628 > Reporter: Niels van Kampenhout > Attachments: HREPTWO-2285-cms.png, HREPTWO-2285-console.png > > > - run quickstart war > - log in to cms > - click on "to the documents" > - browse to any of the folders (e.g. news) > - no documents are displayed > - when creating a new document, it does not show up either > - when checking in the console, there are nodes under the news node, including the newly created document -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:20:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:37:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2278) Advanced search prototype In-Reply-To: <29765978.1235056504124.JavaMail.jira@hat01> Message-ID: <21412014.1236072003710.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2278?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2278: ------------------------------- Fix Version/s: Backlog (was: r2.05.xx (m12 - new feats)) > Advanced search prototype > ------------------------- > > Key: HREPTWO-2278 > URL: http://issues.onehippo.org/browse/HREPTWO-2278 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Arje Cahn > Assignee: Arje Cahn > Fix For: Backlog > > Original Estimate: 4 hours > Remaining Estimate: 4 hours > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:20:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:37:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2277) Advanced search accordion pane In-Reply-To: <11540575.1235056504111.JavaMail.jira@hat01> Message-ID: <18610402.1236072003694.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2277: ------------------------------- Fix Version/s: Backlog (was: r2.05.xx (m12 - new feats)) > Advanced search accordion pane > ------------------------------ > > Key: HREPTWO-2277 > URL: http://issues.onehippo.org/browse/HREPTWO-2277 > Project: Hippo Repository 2 > Issue Type: New Feature > Reporter: Arje Cahn > Assignee: Arthur Bogaart > Fix For: Backlog > > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:23:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:40:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2279) Faceted Browsing UI In-Reply-To: <15379273.1235056623640.JavaMail.jira@hat01> Message-ID: <17455194.1236072184179.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2279?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2279: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > Faceted Browsing UI > ------------------- > > Key: HREPTWO-2279 > URL: http://issues.onehippo.org/browse/HREPTWO-2279 > Project: Hippo Repository 2 > Issue Type: New Feature > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:23:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:40:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2276) Revision history prototype In-Reply-To: <29176532.1235056383910.JavaMail.jira@hat01> Message-ID: <7308212.1236072184196.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2276?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2276: ------------------------------- Original Estimate: 4 hours Remaining Estimate: 4 hours > Revision history prototype > -------------------------- > > Key: HREPTWO-2276 > URL: http://issues.onehippo.org/browse/HREPTWO-2276 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Arje Cahn > Assignee: Arje Cahn > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 4 hours > Remaining Estimate: 4 hours > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:27:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:44:51 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2274) Save draft button In-Reply-To: <8602949.1235056383879.JavaMail.jira@hat01> Message-ID: <20898618.1236072423688.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2274: ------------------------------- Fix Version/s: Backlog (was: r2.05.xx (m12 - new feats)) > Save draft button > ----------------- > > Key: HREPTWO-2274 > URL: http://issues.onehippo.org/browse/HREPTWO-2274 > Project: Hippo Repository 2 > Issue Type: New Feature > Reporter: Arje Cahn > Assignee: (Berry) A.W. van Halderen > Fix For: Backlog > > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:27:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:44:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2207) First click on OK is ignored In-Reply-To: <5523858.1232957942155.JavaMail.jira@hat01> Message-ID: <17083080.1236072423813.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2207?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2207: ------------------------------- Fix Version/s: r2.06.xx (m13 - new feats, debug and release) (was: r2.05.xx (m12 - new feats)) > First click on OK is ignored > ---------------------------- > > Key: HREPTWO-2207 > URL: http://issues.onehippo.org/browse/HREPTWO-2207 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.03.00 (m10 - scalability) > Environment: 2.02.04-SNAPSHOT build 16092 > Reporter: Rita Bijlsma > Assignee: Arje Cahn > Fix For: r2.06.xx (m13 - new feats, debug and release) > > > - Information architect (inar) creates namespace > - Inar starts creating new document type and types name in popup window > - Inar clicks OK in popup window > !* There is a flicker in the small Hippo logo at the upper left and also in the lower left of the popup window, but nothing happens (I waited a while) > - Inar clicks OK again > * Now both in the upper left of the Hippo window and the lower left of the popup window, a kind of blind clock appears, showing that the program is buzzy and soon it is finished. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:29:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:46:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2129) Improve performance of searches in jcr:system tree In-Reply-To: <2452960.1231344701824.JavaMail.root@hat01> Message-ID: <17352518.1236072544114.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2129?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2129: ------------------------------- Fix Version/s: r2.06.xx (m13 - new feats, debug and release) (was: r2.05.xx (m12 - new feats)) > Improve performance of searches in jcr:system tree > -------------------------------------------------- > > Key: HREPTWO-2129 > URL: http://issues.onehippo.org/browse/HREPTWO-2129 > Project: Hippo Repository 2 > Issue Type: Improvement > Components: repository-core > Affects Versions: r2.02.00 (m09) > Reporter: Ard Schrijvers > Assignee: Ard Schrijvers > Fix For: r2.06.xx (m13 - new feats, debug and release) > > > Improve searching speed and memory consumption by trying to avoid searching within the jcr:system tree. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:29:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:46:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2155) Document tab / toolbar displays "unknown document" In-Reply-To: <7117024.1231786741706.JavaMail.jira@hat01> Message-ID: <20768790.1236072544258.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2155?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2155: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > Document tab / toolbar displays "unknown document" > -------------------------------------------------- > > Key: HREPTWO-2155 > URL: http://issues.onehippo.org/browse/HREPTWO-2155 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: r2.03.00 (m10 - scalability) > Environment: svn rev 15899 > Reporter: Niels van Kampenhout > Assignee: (Berry) A.W. van Halderen > Fix For: r2.05.xx (m12 - new feats) > > Attachments: HREPTWO-2155.png > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > > - click on any document in the cms > - the bar which contains the edit, publish, delete etc. buttons, shows "unknown document new" -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:29:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:46:54 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2087) pulldown menu invisible while documents 'bar' open In-Reply-To: <29099234.1230718361836.JavaMail.root@hat01> Message-ID: <4703263.1236072544332.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2087?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2087: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > pulldown menu invisible while documents 'bar' open > ---------------------------------------------------- > > Key: HREPTWO-2087 > URL: http://issues.onehippo.org/browse/HREPTWO-2087 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: r2.03.00 (m10 - scalability) > Environment: Hippo CMS version 2.03.00-SNAPSHOT build 15649 > Reporter: Rita Bijlsma > Assignee: (Berry) A.W. van Halderen > Fix For: r2.05.xx (m12 - new feats) > > Attachments: bug_pulldownmenu_inconsistency.png > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > > - The admin or author user logs in. > - He clicks on the folder button in the left vertical navigation bar. > * The content screen is shown with the documents tab open, i.e. the subfolders of it are visible. > !* The pulldown menu for content specific actions is invisible, although the user has permission for those actions. > - The admin or author clicks on the documents tab. > * The pulldown menu appears. > So clicking on the already open documents tab, brings the CMS in a different state. That should not be the case. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:29:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:46:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1179) Merge workflow: improving Send Reply box In-Reply-To: <32766139.1215621125175.JavaMail.root@hat01> Message-ID: <12509887.1236072544443.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1179?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-1179: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > Merge workflow: improving Send Reply box > ---------------------------------------- > > Key: HREPTWO-1179 > URL: http://issues.onehippo.org/browse/HREPTWO-1179 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: 2.01.00m06.1 > Reporter: Arje Cahn > Assignee: (Berry) A.W. van Halderen > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > > The "Send reply" box should remain. > But is should render the following: > - Take offline request (header) > From: Arj? Cahn > On: Tuesday, 08-07-2008 > - Accept > - Reject > "Cancel request" button should only be available to the originator of the request. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:31:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:48:51 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1908) if the header above the document tab region is long, it splits in two lines, looking extremely ugly. Message-ID: <25400099.1236072663834.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-1908: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > if the header above the document tab region is long, it splits in two lines, looking extremely ugly. > ---------------------------------------------------------------------------------------------------- > > Key: HREPTWO-1908 > URL: http://issues.onehippo.org/browse/HREPTWO-1908 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Rita Bijlsma > Assignee: (Berry) A.W. van Halderen > Fix For: r2.05.xx (m12 - new feats) > > Attachments: ugly_longhead_screenshot.png > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:31:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:48:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2282) Create copy and move icon In-Reply-To: <8952968.1235086984083.JavaMail.jira@hat01> Message-ID: <9404098.1236072663915.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2282?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2282: ------------------------------- Original Estimate: 2 hours Remaining Estimate: 2 hours > Create copy and move icon > ------------------------- > > Key: HREPTWO-2282 > URL: http://issues.onehippo.org/browse/HREPTWO-2282 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: front-end-core > Reporter: (Berry) A.W. van Halderen > Assignee: Auke van Scheltinga > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 2 hours > Remaining Estimate: 2 hours > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:31:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:48:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2096) Improve flow: preview/edit/save/close cycle In-Reply-To: <12537816.1230733782349.JavaMail.root@hat01> Message-ID: <3718275.1236072663972.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2096: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > Improve flow: preview/edit/save/close cycle > ------------------------------------------- > > Key: HREPTWO-2096 > URL: http://issues.onehippo.org/browse/HREPTWO-2096 > Project: Hippo Repository 2 > Issue Type: Task > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:33:03 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:50:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1714) When moving to jackrabbit 1.5 with lucene 2.3.x we need to refactor FacetTypeConstants because chars like uFFFF have become reserved chars in lucene In-Reply-To: <24613317.1223625118654.JavaMail.jira@hat01> Message-ID: <24615138.1236072783893.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1714?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-1714: ------------------------------- Original Estimate: 1 hour Remaining Estimate: 1 hour Fix Version/s: r2.06.xx (m13 - new feats, debug and release) (was: r2.05.xx (m12 - new feats)) > When moving to jackrabbit 1.5 with lucene 2.3.x we need to refactor FacetTypeConstants because chars like uFFFF have become reserved chars in lucene > ---------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: HREPTWO-1714 > URL: http://issues.onehippo.org/browse/HREPTWO-1714 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: repository-core > Affects Versions: 2.01.00m06.4 > Reporter: Ard Schrijvers > Assignee: Ard Schrijvers > Priority: High > Fix For: r2.06.xx (m13 - new feats, debug and release) > > Original Estimate: 1 hour > Remaining Estimate: 1 hour > > After updating to lucene 2.3.x -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:33:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:50:54 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1136) hippo:facetselect ought to be: [hippo:facetselect] > hippo:reference In-Reply-To: <10737853.1215599044641.JavaMail.root@hat01> Message-ID: <17274519.1236072784048.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-1136: ------------------------------- Original Estimate: 1 hour Remaining Estimate: 1 hour > hippo:facetselect ought to be: [hippo:facetselect] > hippo:reference > -------------------------------------------------------------------- > > Key: HREPTWO-1136 > URL: http://issues.onehippo.org/browse/HREPTWO-1136 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: 2.01.00m06.1 > Reporter: Wander Grevink > Assignee: (Berry) A.W. van Halderen > Priority: High > Fix For: r2.06.xx (m13 - new feats, debug and release) > > Original Estimate: 1 hour > Remaining Estimate: 1 hour > > in repository.cnd: > [hippo:facetselect] > nt:base > ..... > should be: > [hippo:facetselect] > hippo:reference > ..... -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:33:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:50:55 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1136) hippo:facetselect ought to be: [hippo:facetselect] > hippo:reference In-Reply-To: <10737853.1215599044641.JavaMail.root@hat01> Message-ID: <2272392.1236072784131.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-1136: ------------------------------- Fix Version/s: r2.06.xx (m13 - new feats, debug and release) (was: r2.05.xx (m12 - new feats)) > hippo:facetselect ought to be: [hippo:facetselect] > hippo:reference > -------------------------------------------------------------------- > > Key: HREPTWO-1136 > URL: http://issues.onehippo.org/browse/HREPTWO-1136 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: 2.01.00m06.1 > Reporter: Wander Grevink > Assignee: (Berry) A.W. van Halderen > Priority: High > Fix For: r2.06.xx (m13 - new feats, debug and release) > > Original Estimate: 1 hour > Remaining Estimate: 1 hour > > in repository.cnd: > [hippo:facetselect] > nt:base > ..... > should be: > [hippo:facetselect] > hippo:reference > ..... -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:33:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:50:56 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-1145) hippo:basequeryfolder should be nt:base and not nt:unstructured In-Reply-To: <14108435.1215611584623.JavaMail.root@hat01> Message-ID: <7389683.1236072784321.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-1145: ------------------------------- Fix Version/s: r2.06.xx (m13 - new feats, debug and release) (was: r2.05.xx (m12 - new feats)) > hippo:basequeryfolder should be nt:base and not nt:unstructured > --------------------------------------------------------------- > > Key: HREPTWO-1145 > URL: http://issues.onehippo.org/browse/HREPTWO-1145 > Project: Hippo Repository 2 > Issue Type: Sub-task > Affects Versions: 2.01.00m06.1 > Reporter: Wander Grevink > Assignee: (Berry) A.W. van Halderen > Priority: High > Fix For: r2.06.xx (m13 - new feats, debug and release) > > > <<<< In repository.cnd: > [hippo:basequeryfolder] > nt:unstructured > [hippo:queryfolder] > hippo:basequeryfolder > + * (nt:query, hippo:basequeryfolder) > .... > [hippo:configuration] > nt:base > .... > + hippo:queries (hippo:basequeryfolder) = hippo:queryfolder mandatory autocreated > >>>>> should be: > [hippo:basequeryfolder] > nt:base > [hippo:queryfolder] > hippo:basequeryfolder > + * (nt:query, hippo:basequeryfolder) > ..... > [hippo:configuration] > nt:base > ..... > + hippo:queries (hippo:queryfolder) = hippo:queryfolder mandatory autocreated -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:33:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:50:57 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2197) m11 -> m12 upgrade modules In-Reply-To: <7959914.1232621882705.JavaMail.jira@hat01> Message-ID: <3348937.1236072784372.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2197: ------------------------------- Original Estimate: 3 days Remaining Estimate: 3 days > m11 -> m12 upgrade modules > -------------------------- > > Key: HREPTWO-2197 > URL: http://issues.onehippo.org/browse/HREPTWO-2197 > Project: Hippo Repository 2 > Issue Type: Task > Reporter: Bart van der Schans > Assignee: Arje Cahn > Priority: Blocker > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 3 days > Remaining Estimate: 3 days > > Plan, create, build and test update modules for automatic upgrade. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:35:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:52:53 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2119) acceptance buttons for editor partly or completely invisible and then not clickable. In-Reply-To: <12411883.1231249001823.JavaMail.root@hat01> Message-ID: <19094053.1236072904553.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2119?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2119: ------------------------------- Original Estimate: 0 minutes Remaining Estimate: 0 minutes > acceptance buttons for editor partly or completely invisible and then not clickable. > ------------------------------------------------------------------------------------ > > Key: HREPTWO-2119 > URL: http://issues.onehippo.org/browse/HREPTWO-2119 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: user experience > Affects Versions: r2.02.03, r2.03.00 (m10 - scalability) > Environment: Hippo CMS version 2.03.00-SNAPSHOT build 15726 > I did not test with M9, but there is no reason to believe that it does not have this bug, as there were no changes made in this area since then (as far as i was informed) > Reporter: Rita Bijlsma > Assignee: (Berry) A.W. van Halderen > Priority: Blocker > Fix For: r2.05.xx (m12 - new feats) > > Attachments: bug_accept_publication_button_invisible.png, deletion_accept_button_partly_invisible.png > > Original Estimate: 0 minutes > Remaining Estimate: 0 minutes > > The string about requested scheduled publication is very long and apparently the buttons for acceptance and deletion are then pushed out of view. For a deletion request, only the upper part of the buttons is visible. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 10:35:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Tue Mar 3 09:52:54 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-949) Better seperate cms specific nodes with core (repository) node types, through the use of namespace. In-Reply-To: <13761336.1212579826778.JavaMail.jira@hat01> Message-ID: <28987320.1236072904821.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-949?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-949: ------------------------------ Remaining Estimate: 0 minutes > Better seperate cms specific nodes with core (repository) node types, through the use of namespace. > --------------------------------------------------------------------------------------------------- > > Key: HREPTWO-949 > URL: http://issues.onehippo.org/browse/HREPTWO-949 > Project: Hippo Repository 2 > Issue Type: Bug > Components: overview > Affects Versions: 2.01.00m04 > Reporter: (Berry) A.W. van Halderen > Assignee: (Berry) A.W. van Halderen > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Time Spent: 5 hours, 30 minutes > Remaining Estimate: 0 minutes > > See issue HREPTWO-694, which among time has become relevant again. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 3 12:33:53 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Tue Mar 3 11:51:40 2009 Subject: [HippoRepos-dev] [16696] hippo-ecm: HREPTWO-2310: Upgrade to jackrabbit-core 1.4.9 Message-ID: <20090303113353.7ED99C58B@svnnew.onehippo.org> Revision: 16696 Author: bvdschans Date: 2009-03-03 12:33:53 +0100 (Tue, 03 Mar 2009) Log Message: ----------- HREPTWO-2310: Upgrade to jackrabbit-core 1.4.9 Modified Paths: -------------- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/pom.xml Modified: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/pom.xml =================================================================== --- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/pom.xml 2009-03-03 11:24:54 UTC (rev 16695) +++ hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/pom.xml 2009-03-03 11:33:53 UTC (rev 16696) @@ -503,7 +503,7 @@ org.apache.jackrabbit jackrabbit-core - 1.4.8 + 1.4.9 org.apache.wicket From helpdesk at onehippo.com Tue Mar 3 12:36:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 3 11:53:51 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2310) Upgrade to jackrabbit-core 1.4.9 In-Reply-To: <23896755.1236068823746.JavaMail.jira@hat01> Message-ID: <8882046.1236080163690.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2310. ------------------------------------------ Resolution: Fixed > Upgrade to jackrabbit-core 1.4.9 > -------------------------------- > > Key: HREPTWO-2310 > URL: http://issues.onehippo.org/browse/HREPTWO-2310 > Project: Hippo Repository 2 > Issue Type: Task > Affects Versions: r2.03.00 (m10 - scalability) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.03.01 > > Original Estimate: 1 hour > Remaining Estimate: 1 hour > > Improvements > [JCR-1337] Optimize first execution queries for DescendantSelfAxisWeight/... > [JCR-1872] Improve performance of simple path queries > [JCR-1884] CachingIndexReader.initializeParents() does not scale well ... > [JCR-1998] Initialize hierarchy cache on startup > Bug fixes > [JCR-1573] Lucene Query Exception: 'attempt to access a deleted document' -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 14:01:03 2009 From: helpdesk at onehippo.com (JIRA (Ard Schrijvers)) Date: Tue Mar 3 13:18:52 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2312) when setting a mixin in the console, the wicket tree shows the node twice Message-ID: <2850392.1236085263840.JavaMail.jira@hat01> when setting a mixin in the console, the wicket tree shows the node twice ------------------------------------------------------------------------- Key: HREPTWO-2312 URL: http://issues.onehippo.org/browse/HREPTWO-2312 Project: Hippo Repository 2 Issue Type: Bug Components: console Affects Versions: r2.04.00 (m11 - technical) Reporter: Ard Schrijvers Assignee: Frank van Lankvelt Priority: High Note that this seems to be a view bug only: there is no node duplication persisted -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 15:31:03 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Tue Mar 3 14:48:50 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2313) Create Page editor Message-ID: <30019600.1236090663751.JavaMail.jira@hat01> Create Page editor ------------------ Key: HREPTWO-2313 URL: http://issues.onehippo.org/browse/HREPTWO-2313 Project: Hippo Repository 2 Issue Type: Sub-task Reporter: Arthur Bogaart Assignee: Arthur Bogaart -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 3 15:31:03 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Tue Mar 3 14:48:52 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2313) Create Page editor In-Reply-To: <30019600.1236090663751.JavaMail.jira@hat01> Message-ID: <571685.1236090663784.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2313?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart updated HREPTWO-2313: ------------------------------------ Original Estimate: 2 days Remaining Estimate: 2 days > Create Page editor > ------------------ > > Key: HREPTWO-2313 > URL: http://issues.onehippo.org/browse/HREPTWO-2313 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: overview > Reporter: Arthur Bogaart > Assignee: Arthur Bogaart > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 2 days > Remaining Estimate: 2 days > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 4 10:32:03 2009 From: helpdesk at onehippo.com (JIRA (Jasha Joachimsthal)) Date: Wed Mar 4 09:49:48 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2314) Quickstart: error about heapspace Message-ID: <15391586.1236159123644.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jasha Joachimsthal updated HREPTWO-2314: ---------------------------------------- Description: run the quickstart. Some environments will complain about the heapspace ./startup.sh Error occurred during initialization of VM Incompatible initial and maximum heap sizes specified Fix change startup.sh EXTRA_JVM_ARGUMENTS="-Xms256m" into EXTRA_JVM_ARGUMENTS="-Xms256m -Xmx256m" was: run the quickstart. Some environments will complain about the heapspace ./startup.sh Error occurred during initialization of VM Incompatible initial and maximum heap sizes specified Workaround change startup.sh EXTRA_JVM_ARGUMENTS="-Xms256m" into EXTRA_JVM_ARGUMENTS="-Xms256m -Xmx256m" > Quickstart: error about heapspace > --------------------------------- > > Key: HREPTWO-2314 > URL: http://issues.onehippo.org/browse/HREPTWO-2314 > Project: Hippo Repository 2 > Issue Type: Bug > Reporter: Jasha Joachimsthal > Assignee: Jasha Joachimsthal > > run the quickstart. Some environments will complain about the heapspace > ./startup.sh > Error occurred during initialization of VM > Incompatible initial and maximum heap sizes specified > Fix > change startup.sh > EXTRA_JVM_ARGUMENTS="-Xms256m" > into > EXTRA_JVM_ARGUMENTS="-Xms256m -Xmx256m" -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 4 10:32:03 2009 From: helpdesk at onehippo.com (JIRA (Jasha Joachimsthal)) Date: Wed Mar 4 09:49:49 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2314) Quickstart: error about heapspace Message-ID: <2673438.1236159123615.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jasha Joachimsthal updated HREPTWO-2314: ---------------------------------------- Summary: Quickstart: error about heapspace (was: CLONE -Quickstart: error about heapspace) Description: run the quickstart. Some environments will complain about the heapspace ./startup.sh Error occurred during initialization of VM Incompatible initial and maximum heap sizes specified Workaround change startup.sh EXTRA_JVM_ARGUMENTS="-Xms256m" into EXTRA_JVM_ARGUMENTS="-Xms256m -Xmx256m" was: run the quickstart. Some environments will complain about the heapspace ./startup.sh Error occurred during initialization of VM Incompatible initial and maximum heap sizes specified Workaround change startup.sh EXTRA_JVM_ARGUMENTS="-Xms256m" into EXTRA_JVM_ARGUMENTS= > Quickstart: error about heapspace > --------------------------------- > > Key: HREPTWO-2314 > URL: http://issues.onehippo.org/browse/HREPTWO-2314 > Project: Hippo Repository 2 > Issue Type: Bug > Reporter: Jasha Joachimsthal > Assignee: Jasha Joachimsthal > > run the quickstart. Some environments will complain about the heapspace > ./startup.sh > Error occurred during initialization of VM > Incompatible initial and maximum heap sizes specified > Workaround > change startup.sh > EXTRA_JVM_ARGUMENTS="-Xms256m" > into > EXTRA_JVM_ARGUMENTS="-Xms256m -Xmx256m" -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Wed Mar 4 10:55:45 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Wed Mar 4 10:13:35 2009 Subject: [HippoRepos-dev] [16706] hippo-ecm: HREPTWO-16: Clearify exception message and use more explicit exception Message-ID: <20090304095545.85BAEC58B@svnnew.onehippo.org> Revision: 16706 Author: bvdschans Date: 2009-03-04 10:55:44 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-16: Clearify exception message and use more explicit exception Modified Paths: -------------- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkspaceDecorator.java Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkspaceDecorator.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkspaceDecorator.java 2009-03-04 09:42:24 UTC (rev 16705) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkspaceDecorator.java 2009-03-04 09:55:44 UTC (rev 16706) @@ -15,6 +15,8 @@ */ package org.hippoecm.repository.impl; +import javax.jcr.AccessDeniedException; +import javax.jcr.LoginException; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -91,9 +93,12 @@ if(repository instanceof RepositoryImpl) { rootSession = (SessionDecorator) factory.getSessionDecorator(session.getRepository(), session.impersonate(new SimpleCredentials("workflowuser", new char[] { }))); // FIXME: hardcoded workflowuser } + } catch (LoginException ex) { + logger.debug("User " + session.getUserID() + " is not allowed to impersonate to workflow session", ex); + throw new AccessDeniedException("User " + session.getUserID() + " is not allowed to obtain the workflow manager", ex); } catch(RepositoryException ex) { - logger.error("No root session available "+ex.getClass().getName()+": "+ex.getMessage()); - throw new RepositoryException("no root session available", ex); + logger.error("Error while trying to obtain workflow session "+ex.getClass().getName()+": "+ex.getMessage(), ex); + throw new RepositoryException("Error while trying to obtain workflow session", ex); } } From svn-logs at hippocms.org Wed Mar 4 11:08:56 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Wed Mar 4 10:26:42 2009 Subject: [HippoRepos-dev] [16707] hippo-ecm: HREPTWO-16: Handle AccessDeniedException when anonymous user tries to obtain the workflow manager Message-ID: <20090304100856.78668C58B@svnnew.onehippo.org> Revision: 16707 Author: bvdschans Date: 2009-03-04 11:08:55 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-16: Handle AccessDeniedException when anonymous user tries to obtain the workflow manager Modified Paths: -------------- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrSessionModel.java Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrSessionModel.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrSessionModel.java 2009-03-04 09:55:44 UTC (rev 16706) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrSessionModel.java 2009-03-04 10:08:55 UTC (rev 16707) @@ -17,6 +17,7 @@ import java.rmi.RemoteException; +import javax.jcr.AccessDeniedException; import javax.jcr.LoginException; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -126,10 +127,8 @@ try { Main main = (Main) Application.get(); HippoRepository repository = main.getRepository(); - String username = credentials.getString("username"); String password = credentials.getString("password"); - if (repository != null && username != null && password != null) { result = repository.login(username, password.toCharArray()); try { @@ -139,6 +138,8 @@ ((EventLoggerWorkflow)workflow).logEvent(result.getUserID(), "Repository", "login"); } } + } catch (AccessDeniedException ex) { + log.debug("Unable to log login event (maybe trying as Anonymous?): " + ex.getMessage()); } catch (RepositoryException ex) { log.error(ex.getClass().getName()+": "+ex.getMessage()); } catch (RemoteException ex) { From svn-logs at hippocms.org Wed Mar 4 11:19:57 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Wed Mar 4 10:37:40 2009 Subject: [HippoRepos-dev] [16709] hippo-ecm: HREPTWO-16: remove debug output Message-ID: <20090304101957.8E4C5C589@svnnew.onehippo.org> Revision: 16709 Author: bvanhalderen Date: 2009-03-04 11:19:57 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-16: remove debug output Modified Paths: -------------- hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/HREPTWO2182Test.java Modified: hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/HREPTWO2182Test.java =================================================================== --- hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/HREPTWO2182Test.java 2009-03-04 10:14:58 UTC (rev 16708) +++ hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/HREPTWO2182Test.java 2009-03-04 10:19:57 UTC (rev 16709) @@ -69,7 +69,6 @@ WorkflowManager workflowManager = ((HippoWorkspace) session.getWorkspace()).getWorkflowManager(); Workflow workflow = workflowManager.getWorkflow("default", typeNode); - System.err.println("BERRY "+workflow.getClass().getName()); assertTrue(workflow instanceof EditmodelWorkflow); ((EditmodelWorkflow) workflow).edit(); From svn-logs at hippocms.org Wed Mar 4 11:31:33 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Wed Mar 4 10:49:17 2009 Subject: [HippoRepos-dev] [16710] hippo-ecm/trunk: HREPTWO-1481: allow workflows to be configured with freely definable Message-ID: <20090304103133.9C6D0C589@svnnew.onehippo.org> Revision: 16710 Author: bvanhalderen Date: 2009-03-04 11:31:32 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-1481: allow workflows to be configured with freely definable configuratio and make it accessible through through WorkflowContext Modified Paths: -------------- hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/WorkflowContext.java hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/RepositoryMapImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/DefaultWorkflowImpl.java hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/repository.cnd Modified: hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/WorkflowContext.java =================================================================== --- hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/WorkflowContext.java 2009-03-04 10:19:57 UTC (rev 16709) +++ hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/WorkflowContext.java 2009-03-04 10:31:32 UTC (rev 16710) @@ -27,4 +27,6 @@ public Workflow getWorkflow(String category, Document document) throws MappingException, WorkflowException, RepositoryException; public String getUserIdentity(); + + public RepositoryMap getWorkflowConfiguration(); } Modified: hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/RepositoryMapImpl.java =================================================================== --- hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/RepositoryMapImpl.java 2009-03-04 10:19:57 UTC (rev 16709) +++ hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/RepositoryMapImpl.java 2009-03-04 10:31:32 UTC (rev 16710) @@ -55,6 +55,12 @@ private List arguments = null; private QueryManager queryManager; + public RepositoryMapImpl() { + this.item = null; + this.path = null; + this.session = null; + } + public RepositoryMapImpl(Session session, String path) throws RepositoryException { this(session.getRootNode().getNode(path.startsWith("/") ? path.substring(1) : path)); } Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java 2009-03-04 10:19:57 UTC (rev 16709) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java 2009-03-04 10:31:32 UTC (rev 16710) @@ -53,10 +53,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.hippoecm.repository.RepositoryMapImpl; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.HippoWorkspace; import org.hippoecm.repository.api.MappingException; +import org.hippoecm.repository.api.RepositoryMap; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowContext; import org.hippoecm.repository.api.WorkflowDescriptor; @@ -155,6 +157,10 @@ log.debug("item matches but no permission on "+item.getPath()+" for role "+privileges[i].getString()); hasPermission = false; break; + } catch(AccessDeniedException ex) { + log.debug("item matches but no permission on "+item.getPath()+" for role "+privileges[i].getString()); + hasPermission = false; + break; } } } @@ -190,6 +196,9 @@ log.error("cannot retrieve workflow for non-existing document"); return null; } + if (log.isDebugEnabled()) { + log.debug("looking for workflow in category "+category+" for document "+document.getIdentity()); + } try { Node node = session.getNodeByUUID(configuration); if (node.hasNode(category)) { @@ -214,7 +223,12 @@ for(int i=0; i nt:base orderable + * (hippo:workflow) = hippo:workflow From svn-logs at hippocms.org Wed Mar 4 11:36:46 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Wed Mar 4 10:54:31 2009 Subject: [HippoRepos-dev] [16711] hippo-ecm/trunk: HREPTWO-607, HREPTWO-1481: Message-ID: <20090304103646.DCDA4C589@svnnew.onehippo.org> Revision: 16711 Author: bvanhalderen Date: 2009-03-04 11:36:46 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-607, HREPTWO-1481: - implementation and definition of copy and move for folders, this workflow has to be accesses through workflow chaining be the workflow of the to be copied/moved document - EmbedWorkflow interface which handles the transfer (copy or move) of documents between implementors of this interface, without being restricted to traditional folders - fix required for workflow with config, this need should be removed alltogether later. Modified Paths: -------------- hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflow.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java Added Paths: ----------- hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/EmbedWorkflow.java Added: hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/EmbedWorkflow.java =================================================================== --- hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/EmbedWorkflow.java (rev 0) +++ hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/EmbedWorkflow.java 2009-03-04 10:36:46 UTC (rev 16711) @@ -0,0 +1,51 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.repository.standardworkflow; + +import java.util.List; +import java.util.Map; +import java.rmi.RemoteException; + +import java.util.Set; +import javax.jcr.RepositoryException; +import javax.jcr.Node; + +import org.hippoecm.repository.api.Document; +import org.hippoecm.repository.api.MappingException; +import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowException; + +public interface EmbedWorkflow extends Workflow { + final static String SVN_ID = "$Id$"; + + public Document copyFrom(Document offspring, Document targetEmbed, String targetName, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + public Document copyTo(Document sourceFolder, Document offspring, String targetName, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + public Document copyOver(Node destination, Document offspring, Document result, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + public Document moveFrom(Document offspring, Document targetEmbed, String targetName, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + public Document moveTo(Document sourceFolder, Document offspring, String targetName, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + public Document moveOver(Node destination, Document offspring, Document result, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; +} Property changes on: hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/EmbedWorkflow.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflow.java =================================================================== --- hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflow.java 2009-03-04 10:31:32 UTC (rev 16710) +++ hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflow.java 2009-03-04 10:36:46 UTC (rev 16711) @@ -143,4 +143,32 @@ */ public void reorder(List newOrder) throws WorkflowException, MappingException, RepositoryException, RemoteException; + + public Document duplicate(String relPath) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document duplicate(Document offspring) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document duplicate(String relPath, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document duplicate(Document offspring, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + public Document copy(String relPath, String absPath) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document copy(Document offspring, Document target, String name) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document copy(String relPath, String absPath, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document copy(Document offspring, Document target, String name, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + public Document move(String relPath, String absPath) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document move(Document offspring, Document target, String name) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document move(String relPath, String absPath, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + public Document move(Document offspring, Document target, String name, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + } Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java 2009-03-04 10:31:32 UTC (rev 16710) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java 2009-03-04 10:36:46 UTC (rev 16711) @@ -41,16 +41,19 @@ import javax.jcr.query.QueryManager; import javax.jcr.query.QueryResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNode; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.MappingException; +import org.hippoecm.repository.api.RepositoryMap; +import org.hippoecm.repository.api.WorkflowContext; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.ext.InternalWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -public class FolderWorkflowImpl implements FolderWorkflow, InternalWorkflow { +public class FolderWorkflowImpl implements FolderWorkflow, EmbedWorkflow, InternalWorkflow { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -60,11 +63,12 @@ private final Session userSession; private final Session rootSession; + private final WorkflowContext workflowContext; private final Node subject; - private final String ATTIC_PATH = "/content/attic"; // FIXME - - public FolderWorkflowImpl(Session userSession, Session rootSession, Node subject) throws RemoteException { + public FolderWorkflowImpl(WorkflowContext context, Session userSession, Session rootSession, Node subject) + throws RemoteException { + this.workflowContext = context; this.subject = subject; this.userSession = userSession; this.rootSession = rootSession; @@ -211,18 +215,31 @@ } public void archive(String name) throws WorkflowException, MappingException, RepositoryException, RemoteException { + String atticPath = null; + RepositoryMap config = workflowContext.getWorkflowConfiguration(); + if(config.exists() && config.containsKey("attic") && config.get("attic") instanceof String) { + atticPath = (String) config.get("attic"); + } if(name.startsWith("/")) name = name.substring(1); String path = subject.getPath().substring(1); Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); if (folder.hasNode(name)) { Node offspring = folder.getNode(name); - if (subject.getPath().equals(ATTIC_PATH)) { - offspring.remove(); - folder.save(); + if (atticPath != null) { + if (subject.getPath().equals(atticPath)) { + offspring.remove(); + folder.save(); + } else { + if (rootSession.getRootNode().hasNode(atticPath.substring(1))) { + rootSession.getWorkspace().move(folder.getPath() + "/" + offspring.getName(), + atticPath + "/" + offspring.getName()); + } else { + throw new WorkflowException("Attic " + atticPath + " for archivation does not exist"); + } + } } else { - rootSession.getWorkspace().move(folder.getPath() + "/" + offspring.getName(), - ATTIC_PATH + "/" + offspring.getName()); + throw new WorkflowException("No attic for archivation defined"); } } } @@ -460,4 +477,143 @@ } return newValues.toArray(new Value[newValues.size()]); } + + public Document duplicate(String relPath) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return null; + } + public Document duplicate(Document offspring) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return null; + } + public Document duplicate(String relPath, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return null; + } + public Document duplicate(Document offspring, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return null; + } + + public Document copy(String relPath, String absPath) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return copy(relPath, absPath, null); + } + public Document copy(Document offspring, Document targetFolder, String targetName) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return copy(offspring, targetFolder, targetName, null); + } + public Document copy(String relPath, String absPath, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + Node source = subject.getNode(relPath); + if(!source.isNodeType(HippoNodeType.NT_DOCUMENT) && !source.isNodeType(HippoNodeType.NT_HANDLE)) { + throw new MappingException("copied item is not a document"); + } + Node target = subject.getSession().getRootNode().getNode(absPath.substring(1, absPath.lastIndexOf("/"))); + if(!target.isNodeType(HippoNodeType.NT_DOCUMENT)) { + throw new MappingException("copied destination is not a document"); + } + return copyFrom(new Document(source.getUUID()), new Document(target.getUUID()), absPath.substring(absPath.lastIndexOf("/"+1)), arguments); + } + public Document copy(Document offspring, Document targetFolder, String targetName, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return copyFrom(offspring, targetFolder, targetName, arguments); + } + + public Document move(String relPath, String absPath) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return move(relPath, absPath, null); + } + public Document move(Document offspring, Document targetFolder, String targetName) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return move(offspring, targetFolder, targetName, null); + } + public Document move(String relPath, String absPath, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + Node source = subject.getNode(relPath); + if(!source.isNodeType(HippoNodeType.NT_DOCUMENT) && !source.isNodeType(HippoNodeType.NT_HANDLE)) { + throw new MappingException("copied item is not a document"); + } + Node target = subject.getSession().getRootNode().getNode(absPath.substring(1, absPath.lastIndexOf("/"))); + if(!target.isNodeType(HippoNodeType.NT_DOCUMENT)) { + throw new MappingException("copied destination is not a document"); + } + return moveFrom(new Document(source.getUUID()), new Document(target.getUUID()), absPath.substring(absPath.lastIndexOf("/"+1)), arguments); + } + public Document move(Document offspring, Document targetFolder, String targetName, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + return moveFrom(offspring, targetFolder, targetName, arguments); + } + + public Document copyFrom(Document offspring, Document targetFolder, String targetName, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + String path = subject.getPath().substring(1); + Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + Node destination = rootSession.getNodeByUUID(targetFolder.getIdentity()); + if (folder.isSame(destination)) { + throw new WorkflowException("Cannot copy document to same folder, use duplicate instead"); + } + Node source = rootSession.getNodeByUUID(offspring.getIdentity()); + if (source.getAncestor(folder.getDepth()).isSame(folder)) { + ((EmbedWorkflow)workflowContext.getWorkflow("embedded", new Document(destination.getUUID()))).copyTo(new Document(subject.getUUID()), offspring, targetName, arguments); + } + return null; + } + + public Document copyTo(Document sourceFolder, Document offspring, String targetName, Map arguments) throws WorkflowException, MappingException, RepositoryException, RemoteException { + String path = subject.getPath().substring(1); + Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + if (folder.hasNode(targetName)) { + throw new WorkflowException("Cannot copy document when document with same name exists"); + } + Node source = rootSession.getNodeByUUID(offspring.getIdentity()); + if (source.isNodeType(HippoNodeType.NT_DOCUMENT) && source.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { + source = source.getParent(); + } + folder.getSession().getWorkspace().copy(source.getPath(), folder.getPath() + "/" + targetName); + renameChildDocument(folder, targetName); + folder.save(); + ((EmbedWorkflow)workflowContext.getWorkflow("embedded", sourceFolder)).copyOver(folder, offspring, new Document(folder.getNode(targetName).getUUID()), arguments); + return new Document(folder.getNode(targetName).getUUID()); + } + + public Document copyOver(Node destination, Document offspring, Document result, Map arguments) { + return result; + } + + public Document moveFrom(Document offspring, Document targetFolder, String targetName, Map arguments) + throws WorkflowException, MappingException, RepositoryException, RemoteException { + String path = subject.getPath().substring(1); + Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + Node destination = rootSession.getNodeByUUID(targetFolder.getIdentity()); + if (folder.isSame(destination)) { + throw new WorkflowException("Cannot move document to same folder, use duplicate instead"); + } + Node source = rootSession.getNodeByUUID(offspring.getIdentity()); + if (source.getAncestor(folder.getDepth()).isSame(folder)) { + ((EmbedWorkflow)workflowContext.getWorkflow("embedded", new Document(destination.getUUID()))).moveTo(new Document(subject.getUUID()), offspring, targetName, arguments); + } + return null; + } + + public Document moveTo(Document sourceFolder, Document offspring, String targetName, Map arguments) throws WorkflowException, MappingException, RepositoryException, RemoteException { + String path = subject.getPath().substring(1); + Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + if (folder.hasNode(targetName)) { + throw new WorkflowException("Cannot move document when document with same name exists"); + } + Node source = rootSession.getNodeByUUID(offspring.getIdentity()); + if (source.isNodeType(HippoNodeType.NT_DOCUMENT) && source.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { + source = source.getParent(); + } + folder.getSession().getWorkspace().move(source.getPath(), folder.getPath() + "/" + targetName); + renameChildDocument(folder, targetName); + folder.save(); + ((EmbedWorkflow)workflowContext.getWorkflow("embedded", sourceFolder)).moveOver(folder, offspring, new Document(folder.getNode(targetName).getUUID()), arguments); + return new Document(folder.getNode(targetName).getUUID()); + } + + public Document moveOver(Node destination, Document offspring, Document result, Map arguments) { + return result; + } } From svn-logs at hippocms.org Wed Mar 4 11:38:13 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Wed Mar 4 10:55:56 2009 Subject: [HippoRepos-dev] [16712] hippo-ecm: HREPTWO-607: Message-ID: <20090304103813.0F7E7C589@svnnew.onehippo.org> Revision: 16712 Author: bvanhalderen Date: 2009-03-04 11:38:12 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-607: - workflow user should REALLY be able to do anything, make it member of role editor and author, but the proper way is to bring back the system credentials for this and allow anything. Modified Paths: -------------- hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml Modified: hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml 2009-03-04 10:36:46 UTC (rev 16711) +++ hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml 2009-03-04 10:38:12 UTC (rev 16712) @@ -29,6 +29,7 @@ admin + workflowuser editor author Modified: hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml 2009-03-04 10:36:46 UTC (rev 16711) +++ hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml 2009-03-04 10:38:12 UTC (rev 16712) @@ -29,6 +29,7 @@ admin + workflowuser editor From svn-logs at hippocms.org Wed Mar 4 11:38:50 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Wed Mar 4 10:56:34 2009 Subject: [HippoRepos-dev] [16713] hippo-ecm: HREPTWO-607: Message-ID: <20090304103850.E2060C589@svnnew.onehippo.org> Revision: 16713 Author: bvanhalderen Date: 2009-03-04 11:38:50 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-607: - implementation of copy and move for publishable documents. Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/common/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflow.java hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflowImpl.java Modified: hippo-ecm/trunk/addon/reviewed-action/common/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflow.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/common/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflow.java 2009-03-04 10:38:12 UTC (rev 16712) +++ hippo-ecm/trunk/addon/reviewed-action/common/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflow.java 2009-03-04 10:38:50 UTC (rev 16713) @@ -20,8 +20,9 @@ import javax.jcr.RepositoryException; +import org.hippoecm.repository.api.Document; +import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.WorkflowException; -import org.hippoecm.repository.api.MappingException; public interface FullReviewedActionsWorkflow extends BasicReviewedActionsWorkflow { final static String SVN_ID = "$Id$"; @@ -41,6 +42,20 @@ throws WorkflowException, MappingException, RepositoryException, RemoteException; /** + * Immediate unpublication and rename document. + * The current user must have authorization for this. + */ + public void copy(Document target, String newName) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + /** + * Immediate unpublication and rename document. + * The current user must have authorization for this. + */ + public void move(Document target, String newName) + throws WorkflowException, MappingException, RepositoryException, RemoteException; + + /** * Request unpublication and deletion of document. */ public void requestDeletion() Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflowImpl.java 2009-03-04 10:38:12 UTC (rev 16712) +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflowImpl.java 2009-03-04 10:38:50 UTC (rev 16713) @@ -20,12 +20,14 @@ import javax.jcr.RepositoryException; +import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowContext; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.standardworkflow.DefaultWorkflow; import org.hippoecm.repository.standardworkflow.VersionWorkflow; +import org.hippoecm.repository.standardworkflow.FolderWorkflow; public class FullReviewedActionsWorkflowImpl extends BasicReviewedActionsWorkflowImpl implements FullReviewedActionsWorkflow { @SuppressWarnings("unused") @@ -55,6 +57,48 @@ unpublished = draft = null; } + public void copy(Document destination, String newName) throws MappingException, RemoteException, WorkflowException, RepositoryException { + ReviewedActionsWorkflowImpl.log.info("copy document"); + if(current != null) + throw new WorkflowException("cannot copy document with pending publication request"); + if(current2 != null) + throw new WorkflowException("cannot copy document with pending depublication request"); + if(current3 != null) + throw new WorkflowException("cannot copy document with pending delete request"); + if(published != null) + throw new WorkflowException("cannot copy published document"); + if(draft != null) + throw new WorkflowException("cannot copy document being edited"); + + Document folder = getWorkflowContext().getDocument("embedded", unpublished.getIdentity()); + Workflow workflow = getWorkflowContext().getWorkflow("internal", folder); + if(workflow instanceof FolderWorkflow) + ((FolderWorkflow)workflow).copy(unpublished, destination, newName); + else + throw new WorkflowException("cannot copy document which is not contained in a folder"); + } + + public void move(Document destination, String newName) throws MappingException, RemoteException, WorkflowException, RepositoryException { + ReviewedActionsWorkflowImpl.log.info("move document"); + if(current != null) + throw new WorkflowException("cannot move document with pending publication request"); + if(current2 != null) + throw new WorkflowException("cannot move document with pending depublication request"); + if(current3 != null) + throw new WorkflowException("cannot move document with pending delete request"); + if(published != null) + throw new WorkflowException("cannot move published document"); + if(draft != null) + throw new WorkflowException("cannot move document being edited"); + + Document folder = getWorkflowContext().getDocument("embedded", unpublished.getIdentity()); + Workflow workflow = getWorkflowContext().getWorkflow("internal", folder); + if(workflow instanceof FolderWorkflow) + ((FolderWorkflow)workflow).move(unpublished, destination, newName); + else + throw new WorkflowException("cannot move document which is not contained in a folder"); + } + public void rename(String newName) throws MappingException, RemoteException, WorkflowException, RepositoryException { ReviewedActionsWorkflowImpl.log.info("rename on document "); if(current != null) From svn-logs at hippocms.org Wed Mar 4 11:40:04 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Wed Mar 4 10:57:49 2009 Subject: [HippoRepos-dev] [16714] hippo-ecm/trunk: HREPTWO-2311: dialog able to pick destination and provide a name. Message-ID: <20090304104005.34CD3C589@svnnew.onehippo.org> Revision: 16714 Author: bvanhalderen Date: 2009-03-04 11:40:03 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-2311: dialog able to pick destination and provide a name. Modified Paths: -------------- hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml Added Paths: ----------- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java Added: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html (rev 0) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html 2009-03-04 10:40:03 UTC (rev 16714) @@ -0,0 +1,31 @@ + + + + + + + + + +
+ +
+ Destination: + +
+
+ Property changes on: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java (rev 0) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java 2009-03-04 10:40:03 UTC (rev 16714) @@ -0,0 +1,109 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend.dialog; + +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; + +import org.hippoecm.frontend.PluginRequestTarget; +import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.model.ModelReference; +import org.hippoecm.frontend.plugin.IClusterControl; +import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.plugin.config.IClusterConfig; +import org.hippoecm.frontend.plugin.config.IPluginConfig; +import org.hippoecm.frontend.plugin.config.IPluginConfigService; +import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; +import org.hippoecm.frontend.service.IRenderService; +import org.hippoecm.frontend.widgets.TextFieldWidget; + +public abstract class AbstractDestinationDialog extends AbstractWorkflowDialog { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + protected JcrNodeModel destination; + protected String name; + + private IModel title; + private IRenderService dialogRenderer; + private IClusterControl control; + + public AbstractDestinationDialog(AbstractWorkflowPlugin workflowPlugin, IModel title, IModel question) { + super(workflowPlugin); + this.title = title; + this.destination = null; + add(new Label("question", question)); + add(new TextFieldWidget("name", new PropertyModel(this, "name"))); + + IPluginContext context = workflowPlugin.getPluginContext(); + IPluginConfig config = workflowPlugin.getPluginConfig(); + IPluginConfigService pluginConfigService = context.getService(IPluginConfigService.class.getName(), IPluginConfigService.class); + IClusterConfig cluster = pluginConfigService.getCluster("cms-pickers/folders"); + control = context.newCluster(cluster, config.getPluginConfig("cluster.options")); + IClusterConfig decorated = control.getClusterConfig(); + String modelServiceId = decorated.getString("wicket.model.folder"); + ModelReference modelService; + modelService = new ModelReference(modelServiceId, getModel()) { + private static final long serialVersionUID = 1L; + @Override + public void setModel(IModel model) { + AbstractDestinationDialog.this.destination = null; + if (model != null && model instanceof JcrNodeModel && ((JcrNodeModel)model).getNode() != null) { + destination = (JcrNodeModel) model; + } + super.setModel(model); + } + }; + modelService.init(context); + + control.start(); + + dialogRenderer = context.getService(decorated.getString("wicket.id"), IRenderService.class); + dialogRenderer.bind(null, "picker"); + add(dialogRenderer.getComponent()); + } + + @Override + public void render(PluginRequestTarget target) { + if(dialogRenderer != null) { + dialogRenderer.render(target); + } + super.render(target); + } + + @Override + public final void onClose() { + super.onClose(); + dialogRenderer.unbind(); + dialogRenderer = null; + control.stop(); + } + + public IModel getTitle() { + return title; + } + + @Override + public void onDetach() { + if(destination != null) { + destination.detach(); + } + super.onDetach(); + } +} Property changes on: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml 2009-03-04 10:38:50 UTC (rev 16713) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml 2009-03-04 10:40:03 UTC (rev 16714) @@ -356,4 +356,203 @@ + + + + frontend:plugincluster + + + + wicket.id + wicket.model + + + wicket.model + wicket.model.folder + + + + + frontend:plugin + + + org.hippoecm.frontend.plugins.standards.browse.BrowserPlugin + + + ${wicket.id} + + + ${wicket.model} + + + ${wicket.model.folder} + + + ${cluster.id}.model.document + + + /content + + + cms-folder-views + + + extension.shortcuts + dialog.list + extension.breadcrumb + + + dialog.browse.list + + + service.dialog.shortcuts + + + service.dialog.breadcrumb + + + + frontend:plugin + + + 10 + + + 8 + + + + + + + frontend:plugin + + + org.hippoecm.frontend.plugins.cms.browse.tree.SectionTreePlugin + + + service.dialog.shortcuts + + + ${wicket.model.folder} + + + service.translator.config + + + extension.content + extension.images + extension.files + + + section-documents + section-images + section-files + + + service.dialog.tree.content + + + service.dialog.tree.images + + + service.dialog.tree.files + + + + + + frontend:plugin + + + org.hippoecm.frontend.plugins.standards.browse.BreadcrumbPlugin + + + service.dialog.breadcrumb + + + ${cluster.id}.model.folder + + + ${wicket.model.folder} + + + service.translator.config + + + /content + + + + + + frontend:plugin + + + org.hippoecm.frontend.plugin.loader.PluginClusterLoader + + + cms-tree-views/documents + + + + frontend:pluginconfig + + + service.dialog.tree.content + + + ${wicket.model.folder} + + + + + + + frontend:plugin + + + org.hippoecm.frontend.plugin.loader.PluginClusterLoader + + + cms-tree-views/images + + + + frontend:pluginconfig + + + service.dialog.tree.images + + + ${wicket.model.folder} + + + + + + + frontend:plugin + + + org.hippoecm.frontend.plugin.loader.PluginClusterLoader + + + cms-tree-views/assets + + + + frontend:pluginconfig + + + service.dialog.tree.files + + + ${wicket.model.folder} + + + + + + From svn-logs at hippocms.org Wed Mar 4 11:41:34 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Wed Mar 4 10:59:18 2009 Subject: [HippoRepos-dev] [16715] hippo-ecm: HREPTWO-2311, HREPTWO-607: front-end for picking and invoking workflow Message-ID: <20090304104134.EA603C589@svnnew.onehippo.org> Revision: 16715 Author: bvanhalderen Date: 2009-03-04 11:41:34 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-2311, HREPTWO-607: front-end for picking and invoking workflow to move and copy for publishable documents Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.properties hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin_nl.properties Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html 2009-03-04 10:40:03 UTC (rev 16714) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html 2009-03-04 10:41:34 UTC (rev 16715) @@ -43,6 +43,12 @@
  • +
  • + +
  • +
  • + +
    • Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-04 10:40:03 UTC (rev 16714) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-04 10:41:34 UTC (rev 16715) @@ -28,6 +28,7 @@ import org.apache.wicket.model.StringResourceModel; import org.hippoecm.frontend.dialog.AbstractDialog; import org.hippoecm.frontend.dialog.AbstractNameDialog; +import org.hippoecm.frontend.dialog.AbstractDestinationDialog; import org.hippoecm.frontend.dialog.IDialogFactory; import org.hippoecm.frontend.i18n.model.NodeTranslator; import org.hippoecm.frontend.i18n.types.TypeTranslator; @@ -192,6 +193,56 @@ } }); + IModel copyLabel = new StringResourceModel("copy-label", this, null); + final StringResourceModel copyTitle = new StringResourceModel("copy-title", this, null); + final StringResourceModel copyText = new StringResourceModel("copy-text", this, null); + addWorkflowDialog("copy-dialog", copyLabel, new Visibility() { + private static final long serialVersionUID = 1L; + + public boolean isVisible() { + return true; + }}, new IDialogFactory() { + private static final long serialVersionUID = 1L; + + public AbstractDialog createDialog() { + + return new AbstractDestinationDialog(FullReviewedActionsWorkflowPlugin.this, copyTitle, copyText) { + private static final long serialVersionUID = 1L; + + @Override + protected void execute() throws Exception { + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) getWorkflow(); + workflow.copy(new Document(destination.getNode().getUUID()), name); + } + }; + } + }); + + IModel moveLabel = new StringResourceModel("move-label", this, null); + final StringResourceModel moveTitle = new StringResourceModel("move-title", this, null); + final StringResourceModel moveText = new StringResourceModel("move-text", this, null); + addWorkflowDialog("move-dialog", moveLabel, new Visibility() { + private static final long serialVersionUID = 1L; + + public boolean isVisible() { + return true; + }}, new IDialogFactory() { + private static final long serialVersionUID = 1L; + + public AbstractDialog createDialog() { + + return new AbstractDestinationDialog(FullReviewedActionsWorkflowPlugin.this, moveTitle, moveText) { + private static final long serialVersionUID = 1L; + + @Override + protected void execute() throws Exception { + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) getWorkflow(); + workflow.move(new Document(destination.getNode().getUUID()), name); + } + }; + } + }); + IModel schedulePublishLabel = new StringResourceModel("schedule-publish-label", this, null); final StringResourceModel schedulePublishTitle = new StringResourceModel("schedule-publish-title", this, null); final StringResourceModel schedulePublishText = new StringResourceModel("schedule-publish-text", this, null); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.properties 2009-03-04 10:40:03 UTC (rev 16714) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.properties 2009-03-04 10:41:34 UTC (rev 16715) @@ -7,6 +7,12 @@ rename-label: Rename rename-title: Rename rename-text: Rename document to: +copy-label: Copy +copy-title: Copy +copy-text: Copy document to: +move-label: Move +move-title: Move +move-text: Move document to: schedule-publish-label: Schedule publication schedule-publish-title: Publication schedule-publish-text: Publish document on: Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin_nl.properties 2009-03-04 10:40:03 UTC (rev 16714) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin_nl.properties 2009-03-04 10:41:34 UTC (rev 16715) @@ -7,6 +7,12 @@ rename-label: Hernoem rename-title: Hernoem... rename-text: Hernoem document tot: +copy-label: Copieer +copy-title: Copieer +copy-text: Copieer document to: +move-label: Verplaats +move-title: Verplaats +move-text: Verplaats document to: schedule-publish-label: Plan publicatie in schedule-publish-title: Publicatie schedule-publish-text: Publiceer document op: From helpdesk at onehippo.com Wed Mar 4 11:43:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Wed Mar 4 11:00:47 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2315) Builds with netbeans fail Message-ID: <11667342.1236163383622.JavaMail.jira@hat01> Builds with netbeans fail ------------------------- Key: HREPTWO-2315 URL: http://issues.onehippo.org/browse/HREPTWO-2315 Project: Hippo Repository 2 Issue Type: Bug Environment: trunk, svn revision 16710 Reporter: (Berry) A.W. van Halderen Assignee: (Berry) A.W. van Halderen Priority: Blocker Fix For: r2.05.xx (m12 - new feats) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Wed Mar 4 11:43:49 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Wed Mar 4 11:01:33 2009 Subject: [HippoRepos-dev] [16716] hippo-ecm/trunk: HREPTWO-2315: fix netbeans build, maven-exec-plugin not compatible with maven 2.1 used by nb Message-ID: <20090304104350.04F33C589@svnnew.onehippo.org> Revision: 16716 Author: bvanhalderen Date: 2009-03-04 11:43:49 +0100 (Wed, 04 Mar 2009) Log Message: ----------- HREPTWO-2315: fix netbeans build, maven-exec-plugin not compatible with maven 2.1 used by nb Modified Paths: -------------- hippo-ecm/trunk/addon/gallery/import/pom.xml hippo-ecm/trunk/tools/content-importer/pom.xml Modified: hippo-ecm/trunk/addon/gallery/import/pom.xml =================================================================== --- hippo-ecm/trunk/addon/gallery/import/pom.xml 2009-03-04 10:41:34 UTC (rev 16715) +++ hippo-ecm/trunk/addon/gallery/import/pom.xml 2009-03-04 10:43:49 UTC (rev 16716) @@ -90,21 +90,6 @@ - org.codehaus.mojo - exec-maven-plugin - - - - java - - - - - org.hippoecm.tools.importer.ExternalContentImportMain - false - - - org.apache.maven.plugins maven-compiler-plugin @@ -115,4 +100,34 @@ + + + exec + + true + + + + + org.codehaus.mojo + exec-maven-plugin + 1.0.2 + + + exec + + java + + + + + org.hippoecm.tools.importer.ExternalContentImportMain + false + + + + + + + Modified: hippo-ecm/trunk/tools/content-importer/pom.xml =================================================================== --- hippo-ecm/trunk/tools/content-importer/pom.xml 2009-03-04 10:41:34 UTC (rev 16715) +++ hippo-ecm/trunk/tools/content-importer/pom.xml 2009-03-04 10:43:49 UTC (rev 16716) @@ -34,45 +34,6 @@ http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/tools/content-importer - - - - - org.codehaus.mojo - exec-maven-plugin - 1.0.2 - - - - java - - - - - org.hippoecm.tools.importer.ExternalContentImportMain - false - - - - org.codehaus.mojo - appassembler-maven-plugin - - -Xms128m -Xmx128m - - windows - unix - - - - org.hippoecm.tools.importer.ExternalContentImportMain - import - - - - - - - org.hippoecm @@ -148,5 +109,57 @@ + + + + + org.codehaus.mojo + appassembler-maven-plugin + + -Xms128m -Xmx128m + + windows + unix + + + + org.hippoecm.tools.importer.ExternalContentImportMain + import + + + + + + + + + + exec + + true + + + + + org.codehaus.mojo + exec-maven-plugin + 1.0.2 + + + exec + + java + + + + + org.hippoecm.tools.importer.ExternalContentImportMain + false + + + + + + + - From helpdesk at onehippo.com Wed Mar 4 11:47:08 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Wed Mar 4 11:04:53 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2315) Builds with netbeans fail In-Reply-To: <11667342.1236163383622.JavaMail.jira@hat01> Message-ID: <31173254.1236163628458.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2315?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen resolved HREPTWO-2315. ------------------------------------------------ Resolution: Fixed > Builds with netbeans fail > ------------------------- > > Key: HREPTWO-2315 > URL: http://issues.onehippo.org/browse/HREPTWO-2315 > Project: Hippo Repository 2 > Issue Type: Bug > Environment: trunk, svn revision 16710 > Reporter: (Berry) A.W. van Halderen > Assignee: (Berry) A.W. van Halderen > Priority: Blocker > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 45 minutes > Time Spent: 45 minutes > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 4 11:47:08 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Wed Mar 4 11:04:54 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2311) Create dialog for destination picker In-Reply-To: <24639234.1236069543628.JavaMail.jira@hat01> Message-ID: <9845619.1236163628501.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2311?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen resolved HREPTWO-2311. ------------------------------------------------ Resolution: Fixed Could be prettier, but there are seperate issues to overhoal dialogs, and the main issue to make it pretier is that it doesn't fit the dialog window. > Create dialog for destination picker > ------------------------------------ > > Key: HREPTWO-2311 > URL: http://issues.onehippo.org/browse/HREPTWO-2311 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: front-end-core > Reporter: (Berry) A.W. van Halderen > Assignee: (Berry) A.W. van Halderen > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 4 hours > Time Spent: 6 hours, 30 minutes > Remaining Estimate: 2 hours > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 4 11:49:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Wed Mar 4 11:06:48 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-1481) Allow workflows to be configured with data stored as parameters In-Reply-To: <2864835.1220345220580.JavaMail.jira@hat01> Message-ID: <23650771.1236163743763.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-1481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen resolved HREPTWO-1481. ------------------------------------------------ Resolution: Fixed > Allow workflows to be configured with data stored as parameters > --------------------------------------------------------------- > > Key: HREPTWO-1481 > URL: http://issues.onehippo.org/browse/HREPTWO-1481 > Project: Hippo Repository 2 > Issue Type: Improvement > Reporter: (Berry) A.W. van Halderen > Assignee: (Berry) A.W. van Halderen > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 6 hours > Time Spent: 2 hours > Remaining Estimate: 0 minutes > > Stored alongside the workflow specifications in /hippo:configuration/hippo:workflows/$category/$workflow can be a configuration section. This could then be used by the workflows and accessed through getWorkflowContext().getString("parameter", "default"); -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 4 11:51:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Wed Mar 4 11:08:48 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-607) Change copy/move/delete/rename into workflow steps In-Reply-To: <7484926.1204879728828.JavaMail.jira@hat01> Message-ID: <8917498.1236163863816.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-607?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen resolved HREPTWO-607. ----------------------------------------------- Resolution: Fixed Note that this issue has been resolved for publishable documents. There are at this time no other document types other that images and assets, but the images and assets folder layout isn't specified, ie, has been screwed up so this should become seperate issue. > Change copy/move/delete/rename into workflow steps > -------------------------------------------------- > > Key: HREPTWO-607 > URL: http://issues.onehippo.org/browse/HREPTWO-607 > Project: Hippo Repository 2 > Issue Type: Improvement > Components: front-end-core > Affects Versions: 2.01.00m03 > Reporter: Ard Schrijvers > Assignee: (Berry) A.W. van Halderen > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Original Estimate: 3 days > Time Spent: 3 days, 5 hours > Remaining Estimate: 3 hours > > Currently the actions in the cms-prototype frontend\src\main\java\org\hippoecm\cmsprototype\frontend\plugins\actions do not involve workflow. > This means, that any user who can see some node in the cms, can also delete the hippo:handle it belongs to, or move / copy the hippo:handle. But, perhaps, the user is only allowed to see the nodes, or, only allowed to work on a specific variant. > IMHO, the actions in the cms-prototype whould be changed, and done by workflow steps. > WDOT? -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Thu Mar 5 10:38:10 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Thu Mar 5 09:55:51 2009 Subject: [HippoRepos-dev] [16730] hippo-ecm: HREPTWO-812: put workflow management into separate package Message-ID: <20090305093810.DDC59C58B@svnnew.onehippo.org> Revision: 16730 Author: bvanhalderen Date: 2009-03-05 10:38:09 +0100 (Thu, 05 Mar 2009) Log Message: ----------- HREPTWO-812: put workflow management into separate package Modified Paths: -------------- hippo-ecm/trunk/addon/pom.xml Added Paths: ----------- hippo-ecm/trunk/addon/workflow/ hippo-ecm/trunk/addon/workflow/pom.xml Modified: hippo-ecm/trunk/addon/pom.xml =================================================================== --- hippo-ecm/trunk/addon/pom.xml 2009-03-04 19:57:03 UTC (rev 16729) +++ hippo-ecm/trunk/addon/pom.xml 2009-03-05 09:38:09 UTC (rev 16730) @@ -53,6 +53,7 @@ ldap eavesdrop faceteddate + workflow Added: hippo-ecm/trunk/addon/workflow/pom.xml =================================================================== --- hippo-ecm/trunk/addon/workflow/pom.xml (rev 0) +++ hippo-ecm/trunk/addon/workflow/pom.xml 2009-03-05 09:38:09 UTC (rev 16730) @@ -0,0 +1,199 @@ + + 4.0.0 + + + org.hippoecm + hippo-ecm-addon + 2.05.00-SNAPSHOT + .. + + + Workflow + Hippo ECM Workflow GUI framework + org.hippoecm + hippo-ecm-addon-workflow + jar + + + scm:svn:http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/workflow + scm:svn:https://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/workflow + http://svn.onehippo.org/repos/hippo/hippo-ecm/trunk/addon/workflow + + + + + javax.jcr + jcr + 1.0 + + + org.hippoecm + hippo-ecm-api + 2.05.00-SNAPSHOT + jar + + + org.hippoecm + hippo-ecm-repository-connector + 2.05.00-SNAPSHOT + runtime + jar + + + org.hippoecm + hippo-ecm-addon-builtin-common + 2.05.00-SNAPSHOT + runtime + jar + + + org.hippoecm + hippo-ecm-addon-reviewed-action-common + 2.05.00-SNAPSHOT + runtime + jar + + + org.apache.wicket + wicket + 1.3.5 + + + org.apache.wicket + wicket-extensions + 1.3.5 + + + org.slf4j + slf4j-log4j12 + 1.4.2 + + + org.slf4j + slf4j-api + 1.4.3 + + + org.slf4j + slf4j-jdk14 + 1.4.3 + + + + org.slf4j + jcl104-over-slf4j + 1.4.3 + + + junit + junit + [4.4,) + test + + + org.mortbay.jetty + jetty + 6.1.11 + provided + + + org.mortbay.jetty + jetty-util + 6.1.11 + provided + + + org.mortbay.jetty + jetty-management + 6.1.11 + provided + + + + + + + false + src/main/resources + + + false + ${basedir}/src/main/java + + **/*.html + **/*.js + **/*.css + **/*.png + **/*.gif + **/*.properties + + + **/*.java + + + + false + ${basedir}/src/main/resources + + **/*.cnd + **/*.xml + + + + + + false + src/test/java + + ** + + + **/*.java + + + + false + ${basedir}/src/test/resources + + ** + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + always + ${project.build.directory} + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + + + + + + + + Property changes on: hippo-ecm/trunk/addon/workflow/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Id Added: svn:eol-style + native From svn-logs at hippocms.org Thu Mar 5 11:49:50 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Thu Mar 5 11:07:29 2009 Subject: [HippoRepos-dev] [16731] hippo-ecm: HREPTWO-16: Fix error logging Message-ID: <20090305104950.60B65C589@svnnew.onehippo.org> Revision: 16731 Author: bvdschans Date: 2009-03-05 11:49:49 +0100 (Thu, 05 Mar 2009) Log Message: ----------- HREPTWO-16: Fix error logging Modified Paths: -------------- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java 2009-03-05 09:38:09 UTC (rev 16730) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java 2009-03-05 10:49:49 UTC (rev 16731) @@ -204,39 +204,34 @@ } private void execute(WorkflowAction action) { + // before saving (which possibly means deleting), find the handle + final WorkflowsModel workflowModel = (WorkflowsModel) getModel(); + JcrNodeModel handle = workflowModel.getNodeModel(); try { - // before saving (which possibly means deleting), find the handle - final WorkflowsModel workflowModel = (WorkflowsModel) getModel(); - JcrNodeModel handle = workflowModel.getNodeModel(); while (handle.getParentModel() != null && !handle.getNode().isNodeType(HippoNodeType.NT_HANDLE)) { handle = handle.getParentModel(); } - action.prepareSession(handle); - - Workflow workflow = null; + WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); + Workflow workflow = manager.getWorkflow(workflowModel.getWorkflowDescriptor()); + action.execute(workflow); + } catch (MappingException e) { + log.error("MappingException while getting workflow: " + e.getMessage(), e); + showException(e); + } catch (RepositoryException e) { + log.error("RepositoryException while getting workflow: " + e.getMessage(), e); + showException(e); + } catch (Exception e) { + log.error("Exception while getting workflow: " + e.getMessage(), e); + showException(e); + } finally { try { - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - workflow = manager.getWorkflow(workflowModel.getWorkflowDescriptor()); - } catch (MappingException e) { - log.error(e.getMessage()); + ((UserSession) Session.get()).getJcrSession().refresh(true); } catch (RepositoryException e) { - log.error(e.getMessage()); - } catch (Exception e) { - log.error(e.getMessage()); + log.error("Failed to refresh session: " + e.getMessage(), e); } - - action.execute(workflow); - - ((UserSession) Session.get()).getJcrSession().refresh(true); - } catch (RepositoryException ex) { - log.error("Invalid data to save", ex); - showException(ex); - } catch (Exception ex) { - log.error(ex.getMessage()); - showException(ex); - ex.printStackTrace(); } + } } From svn-logs at hippocms.org Thu Mar 5 12:13:53 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Thu Mar 5 11:31:33 2009 Subject: [HippoRepos-dev] [16734] hippo-ecm: HREPTWO-16: Use dependency management for versions Message-ID: <20090305111353.4374EC589@svnnew.onehippo.org> Revision: 16734 Author: bvdschans Date: 2009-03-05 12:13:52 +0100 (Thu, 05 Mar 2009) Log Message: ----------- HREPTWO-16: Use dependency management for versions Modified Paths: -------------- hippo-ecm/trunk/addon/workflow/pom.xml Modified: hippo-ecm/trunk/addon/workflow/pom.xml =================================================================== --- hippo-ecm/trunk/addon/workflow/pom.xml 2009-03-05 11:08:19 UTC (rev 16733) +++ hippo-ecm/trunk/addon/workflow/pom.xml 2009-03-05 11:13:52 UTC (rev 16734) @@ -80,23 +80,14 @@ org.slf4j slf4j-log4j12 - 1.4.2 org.slf4j slf4j-api - 1.4.3 org.slf4j - slf4j-jdk14 - 1.4.3 - - - - org.slf4j jcl104-over-slf4j - 1.4.3 junit From helpdesk at onehippo.com Thu Mar 5 15:36:03 2009 From: helpdesk at onehippo.com (JIRA (Auke van Scheltinga)) Date: Thu Mar 5 14:53:44 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2316) Add icons for copy and move of a document Message-ID: <15084569.1236263763775.JavaMail.jira@hat01> Add icons for copy and move of a document ----------------------------------------- Key: HREPTWO-2316 URL: http://issues.onehippo.org/browse/HREPTWO-2316 Project: Hippo Repository 2 Issue Type: Improvement Reporter: Auke van Scheltinga -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Thu Mar 5 15:36:39 2009 From: svn-logs at hippocms.org (SVN (avanscheltinga)) Date: Thu Mar 5 14:54:18 2009 Subject: [HippoRepos-dev] [16735] hippo-ecm: HREPTWO-2316 Message-ID: <20090305143639.AC7D0C5BF@svnnew.onehippo.org> Revision: 16735 Author: avanscheltinga Date: 2009-03-05 15:36:38 +0100 (Thu, 05 Mar 2009) Log Message: ----------- HREPTWO-2316 Modified Paths: -------------- hippo-ecm/trunk/package/skin/src/main/webapp/screen.css Added Paths: ----------- hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/copy-16.png hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/move-16.png Added: hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/copy-16.png =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/copy-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/move-16.png =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/move-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: hippo-ecm/trunk/package/skin/src/main/webapp/screen.css =================================================================== --- hippo-ecm/trunk/package/skin/src/main/webapp/screen.css 2009-03-05 11:13:52 UTC (rev 16734) +++ hippo-ecm/trunk/package/skin/src/main/webapp/screen.css 2009-03-05 14:36:38 UTC (rev 16735) @@ -950,6 +950,9 @@ .depublish-16, .depublish_ico{background-image:url("images/icons/unplublish-16.png")} .publish-schedule-16{background-image:url("images/icons/publish-schedule-16.png")} +.copy-16{background-image:url("images/icons/copy-16.png")} +.move-16{background-image:url("images/icons/move-16.png")} + .depublish-schedule-16{background-image:url("images/icons/unpublish-scheduled-16.png")} .reqcancel_ico{background-image:url("images/icons/unplublish-16.png")} From helpdesk at onehippo.com Thu Mar 5 23:41:03 2009 From: helpdesk at onehippo.com (JIRA (Niels van Kampenhout)) Date: Thu Mar 5 22:58:42 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2317) New property not displayed in console directly after adding Message-ID: <23317615.1236292863664.JavaMail.jira@hat01> New property not displayed in console directly after adding ----------------------------------------------------------- Key: HREPTWO-2317 URL: http://issues.onehippo.org/browse/HREPTWO-2317 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.04.00 (m11 - technical), r2.03.00 (m10 - scalability), r2.05.xx (m12 - new feats) Environment: 2.03.00 and 2.05.00-SNAPSHOT build 16743 I assume it is in 2.04.xx as well. Reporter: Niels van Kampenhout Priority: High - log in to console - add a node - select the new node - add new property - new property does not show up - select a different node - select the new node again - the property does show up This bug has been present since 2.03.00 and is a serious annoyance when e.g. creating HST configuration in the console. Surprisingly I could not find it in JIRA, maybe I missed it, in that case please mark this one as duplicate. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From niru.mallavarupu at bluenog.com Fri Mar 6 07:54:15 2009 From: niru.mallavarupu at bluenog.com (Nirupama Mallavarupu) Date: Fri Mar 6 07:11:55 2009 Subject: [HippoRepos-dev] ClassCast Exception on HippoSharedItemStateManager Message-ID: <2379196174BA584A936B1546B8D995FF59C02CC69E@34093-MBX-C06.mex07a.mlsrvr.com> Hi, I am using Release_HREPTWO_2_03_00 version of the hippo repository and ecm. While trying to initialize the repository, the ecm is failing with a ClassCastException. I saw a couple of bugs related to the ClassCastException in FacetedNavigationEngineThirdImpl fixed a long time ago. Any ideas on why this could be happening. I do not have two versions of any jackrabbit jars in my path. Thanks for any pointers! Error while setting up JCR repository: javax.jcr.RepositoryException: org.hippoecm.repository.jackrabbit.HippoSharedIte mStateManager: org.hippoecm.repository.jackrabbit.HippoSharedItemStateManager: o rg.hippoecm.repository.jackrabbit.HippoSharedItemStateManager at org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(Searc hManager.java:585) at org.apache.jackrabbit.core.SearchManager.(SearchManager.java:26 5) at org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getSearchMana ger(RepositoryImpl.java:1613) at org.hippoecm.repository.jackrabbit.RepositoryImpl$WorkspaceInfo.getSe archManager(RepositoryImpl.java:199) at org.apache.jackrabbit.core.RepositoryImpl.initWorkspace(RepositoryImp l.java:606) at org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(Repos itoryImpl.java:415) at org.apache.jackrabbit.core.RepositoryImpl.(RepositoryImpl.java: 305) at org.hippoecm.repository.jackrabbit.RepositoryImpl.(RepositoryIm pl.java:64) at org.hippoecm.repository.LocalHippoRepository$LocalRepositoryImpl.(LocalHippoRepository.java:247) at org.hippoecm.repository.LocalHippoRepository.initialize(LocalHippoRep ository.java:262) at org.hippoecm.repository.LocalHippoRepository.(LocalHippoReposit ory.java:149) at org.hippoecm.repository.LocalHippoRepository.create(LocalHippoReposit ory.java:157) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. Caused by: java.lang.ClassCastException: org.hippoecm.repository.jackrabbit.HippoSharedItemStateManager at org.hippoecm.repository.FacetedNavigationEngineThirdImpl.doInit(Facet edNavigationEngineThirdImpl.java:278) at org.apache.jackrabbit.core.query.AbstractQueryHandler.init(AbstractQu eryHandler.java:53) at org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(Searc hManager.java:583) ... 43 more java.lang.ClassCastException: org.hippoecm.repository.jackrabbit.HippoSharedItem StateManager at org.hippoecm.repository.FacetedNavigationEngineThirdImpl.doInit(Facet edNavigationEngineThirdImpl.java:278) at org.apache.jackrabbit.core.query.AbstractQueryHandler.init(AbstractQu eryHandler.java:53) at org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(Searc hManager.java:583) at org.apache.jackrabbit.core.SearchManager.(SearchManager.java:26 5) at org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getSearchMana ger(RepositoryImpl.java:1613) at org.hippoecm.repository.jackrabbit.RepositoryImpl$WorkspaceInfo.getSe archManager(RepositoryImpl.java:199) at org.apache.jackrabbit.core.RepositoryImpl.initWorkspace(RepositoryImp l.java:606) at org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(Repos itoryImpl.java:415) at org.apache.jackrabbit.core.RepositoryImpl.(RepositoryImpl.java: 305) at org.hippoecm.repository.jackrabbit.RepositoryImpl.(RepositoryIm pl.java:64) at org.hippoecm.repository.LocalHippoRepository$LocalRepositoryImpl.(LocalHippoRepository.java:247) at org.hippoecm.repository.LocalHippoRepository.initialize(LocalHippoRep ository.java:262) at org.hippoecm.repository.LocalHippoRepository.(LocalHippoReposit ory.java:149) at org.hippoecm.repository.LocalHippoRepository.create(LocalHippoReposit ory.java:157) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.hippoecm.repository.HippoRepositoryFactory.getHippoRepository(Hip poRepositoryFactory.java:175) at org.hippoecm.repository.RepositoryServlet.init(RepositoryServlet.java :147) CyberDefender has scanned this email for potential threats. Version 2.0 / Build 4.03.29.01 Get free PC security at http://www.cyberdefender.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.hippo.nl/pipermail/hipporepos-dev/attachments/20090306/527e8cde/attachment.htm From helpdesk at onehippo.com Fri Mar 6 10:17:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 09:34:41 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2269) After move image node in console it is impossible to select an other node. In-Reply-To: <9338707.1234863843694.JavaMail.jira@hat01> Message-ID: <16866440.1236331023752.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2269: ----------------------------------------------- Affects Version/s: Backlog (was: r2.03.00 (m10 - scalability)) > After move image node in console it is impossible to select an other node. > --------------------------------------------------------------------------- > > Key: HREPTWO-2269 > URL: http://issues.onehippo.org/browse/HREPTWO-2269 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: Backlog > Environment: Firefox, Ubuntu > Reporter: Rita Bijlsma > > - There were images in the root of the images slider (= folder which opens and closes like a slider, I use this name in the user guide). > The image nodes did not contain binary data (because the images had been exported and imported, but no binary data were exported) > - In the CMS the admin created a folder 'portraits' as subfolder of the images root. > - The admin then used the console to move an image node to the portraits subfolder. This was succesfull. > First this was done by typing the subfolder name, a slash and the filename. After the problems described below, and after logout and login, the same was tested, but now the subfolder was first selected and then only the filename was typed.The subsequent errors were the same. > - After moving one node, the admin wanted to move another image node from the image root to the portraits subfolder. > * It was however not possible any more to select any node: > * No node became yellow coloured when clicked. > * The node that was clicked on and did not get yellow, was ignored in the popup window for move node. The previously moved node name was used in the popup. > * Opening and closing a parent node did not help. > * After refreshing the screen, the window was not redrawn fully, a node clicked on became yellow, but was still ignored in the popup window for move node, so still not selected. > - write to repository > - logout > - login > * and again only one node move possible. > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:22:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 09:39:42 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2284) Login screen has no style/images In-Reply-To: <992039.1235521384209.JavaMail.jira@hat01> Message-ID: <28284606.1236331324125.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-2284: ---------------------------------------- Fix Version/s: r2.05.xx (m12 - new feats) > Login screen has no style/images > -------------------------------- > > Key: HREPTWO-2284 > URL: http://issues.onehippo.org/browse/HREPTWO-2284 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.xx (m12 - new feats) > Environment: trunk svn revision 16628 > quickstart-war > run from command line with mvn jetty:run-war > Reporter: Niels van Kampenhout > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Attachments: HREPTWO-2284.png > > > Login in screen is plain html, no style / images -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:24:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 09:41:41 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2285) Folders contents not displayed in documents browser In-Reply-To: <27175219.1235521803716.JavaMail.jira@hat01> Message-ID: <948714.1236331443731.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2285?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-2285: ---------------------------------------- Fix Version/s: r2.05.xx (m12 - new feats) > Folders contents not displayed in documents browser > --------------------------------------------------- > > Key: HREPTWO-2285 > URL: http://issues.onehippo.org/browse/HREPTWO-2285 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.xx (m12 - new feats) > Environment: trunk svn revision 16628 > Reporter: Niels van Kampenhout > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Attachments: HREPTWO-2285-cms.png, HREPTWO-2285-console.png > > > - run quickstart war > - log in to cms > - click on "to the documents" > - browse to any of the folders (e.g. news) > - no documents are displayed > - when creating a new document, it does not show up either > - when checking in the console, there are nodes under the news node, including the newly created document -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:26:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 09:43:41 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2288) Missing body in articles for defaultcontent namespace In-Reply-To: <29236395.1235584503622.JavaMail.jira@hat01> Message-ID: <13927856.1236331563707.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2288. ----------------------------------------- Resolution: Won't Fix This is actually intended behavior to showcase the "update all content". > Missing body in articles for defaultcontent namespace > ----------------------------------------------------- > > Key: HREPTWO-2288 > URL: http://issues.onehippo.org/browse/HREPTWO-2288 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.03.00 (m10 - scalability) > Reporter: Jasha Joachimsthal > Priority: Low > > If you run the quickstart, the articles don't have a body field until you execute "update all content". Can't this field appear out-of-the-box? -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:30:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 09:47:42 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2308) Folders can be created for images and assets, but it is not possible to put anything in them In-Reply-To: <29375315.1236042243670.JavaMail.jira@hat01> Message-ID: <10531585.1236331803846.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2308: ----------------------------------------------- Fix Version/s: Backlog > Folders can be created for images and assets, but it is not possible to put anything in them > -------------------------------------------------------------------------------------------- > > Key: HREPTWO-2308 > URL: http://issues.onehippo.org/browse/HREPTWO-2308 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > Fix For: Backlog > > > It is possible to create folders and subfolders under Images and Assets. But there is no "Add Image" or "Add File" in the dropdown when inside these folders. When using "Add image" or "add file" options in the top right corner of the gui, they always end up in the root folder under images or assets. So the folder creation functionality is of no use, you can never put anything in the folders. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:30:04 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 09:47:44 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2309) java.lang.NegativeArraySizeException when using search box In-Reply-To: <8248446.1236042603669.JavaMail.jira@hat01> Message-ID: <7564426.1236331804004.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2309: ----------------------------------------------- Fix Version/s: r2.04.00 (m11 - technical) > java.lang.NegativeArraySizeException when using search box > ---------------------------------------------------------- > > Key: HREPTWO-2309 > URL: http://issues.onehippo.org/browse/HREPTWO-2309 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > Assignee: Arthur Bogaart > Fix For: r2.04.00 (m11 - technical) > > > - log in to cms > - start typing in the search box > - nothing happens in the gui, but an exception will be thrown in the background: > 02.03.2009 17:06:59 ERROR [org.apache.wicket.RequestCycle.logRuntimeException():1437] > java.lang.NegativeArraySizeException > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior$SearchBuilder.doSearch(SearchBehavior.java:267) > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior$SearchBuilder.search(SearchBehavior.java:308) > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior.respond(SearchBehavior.java:106) > at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297) > at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100) > at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) > at org.hippoecm.frontend.Main$6.processEvents(Main.java:270) > at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175) > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252) > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353) > at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355) > at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at org.hippoecm.frontend.plugins.login.ConcurrentLoginFilter.doFilter(ConcurrentLoginFilter.java:54) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) > at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) > at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:324) > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:30:04 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 09:47:46 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2312) when setting a mixin in the console, the wicket tree shows the node twice In-Reply-To: <2850392.1236085263840.JavaMail.jira@hat01> Message-ID: <8843584.1236331804058.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2312?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2312: ----------------------------------------------- Fix Version/s: r2.04.00 (m11 - technical) > when setting a mixin in the console, the wicket tree shows the node twice > ------------------------------------------------------------------------- > > Key: HREPTWO-2312 > URL: http://issues.onehippo.org/browse/HREPTWO-2312 > Project: Hippo Repository 2 > Issue Type: Bug > Components: console > Affects Versions: r2.04.00 (m11 - technical) > Reporter: Ard Schrijvers > Assignee: Frank van Lankvelt > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > > Note that this seems to be a view bug only: there is no node duplication persisted -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:30:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 09:47:48 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2312) when setting a mixin in the console, the wicket tree shows the node twice In-Reply-To: <2850392.1236085263840.JavaMail.jira@hat01> Message-ID: <9551385.1236331804129.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2312?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-2312: ---------------------------------------- Fix Version/s: r2.05.xx (m12 - new feats) (was: r2.04.00 (m11 - technical)) > when setting a mixin in the console, the wicket tree shows the node twice > ------------------------------------------------------------------------- > > Key: HREPTWO-2312 > URL: http://issues.onehippo.org/browse/HREPTWO-2312 > Project: Hippo Repository 2 > Issue Type: Bug > Components: console > Affects Versions: r2.04.00 (m11 - technical) > Reporter: Ard Schrijvers > Assignee: Frank van Lankvelt > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > > Note that this seems to be a view bug only: there is no node duplication persisted -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:32:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 09:49:41 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2316) Add icons for copy and move of a document In-Reply-To: <15084569.1236263763775.JavaMail.jira@hat01> Message-ID: <27675277.1236331923749.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2316?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2316. ----------------------------------------- Resolution: Duplicate HREPTWO-2282 > Add icons for copy and move of a document > ----------------------------------------- > > Key: HREPTWO-2316 > URL: http://issues.onehippo.org/browse/HREPTWO-2316 > Project: Hippo Repository 2 > Issue Type: Improvement > Reporter: Auke van Scheltinga > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:34:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 09:51:42 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2317) New property not displayed in console directly after adding In-Reply-To: <23317615.1236292863664.JavaMail.jira@hat01> Message-ID: <20033728.1236332044451.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2317?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt updated HREPTWO-2317: ---------------------------------------- Fix Version/s: r2.05.xx (m12 - new feats) Will try to take a look this sprint and fix, if this doesn't take too much time. > New property not displayed in console directly after adding > ----------------------------------------------------------- > > Key: HREPTWO-2317 > URL: http://issues.onehippo.org/browse/HREPTWO-2317 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.03.00 (m10 - scalability), r2.04.00 (m11 - technical), r2.05.xx (m12 - new feats) > Environment: 2.03.00 and 2.05.00-SNAPSHOT build 16743 > I assume it is in 2.04.xx as well. > Reporter: Niels van Kampenhout > Assignee: Frank van Lankvelt > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > > - log in to console > - add a node > - select the new node > - add new property > - new property does not show up > - select a different node > - select the new node again > - the property does show up > This bug has been present since 2.03.00 and is a serious annoyance when e.g. creating HST configuration in the console. Surprisingly I could not find it in JIRA, maybe I missed it, in that case please mark this one as duplicate. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:38:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 09:55:40 2009 Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-2269) After move image node in console it is impossible to select an other node. In-Reply-To: <9338707.1234863843694.JavaMail.jira@hat01> Message-ID: <23451238.1236332283668.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_50345 ] (Berry) A.W. van Halderen commented on HREPTWO-2269: ---------------------------------------------------- There are a number of update problems in the console and this issue might be caused by one of them. For this reason this specific issue has been moved to the backlog so we can evaluate whether resolving the update problems also attacks this problem. If not, this issue should be scheduled in a spring specific for grinding out bugs like these. > After move image node in console it is impossible to select an other node. > --------------------------------------------------------------------------- > > Key: HREPTWO-2269 > URL: http://issues.onehippo.org/browse/HREPTWO-2269 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: Backlog > Environment: Firefox, Ubuntu > Reporter: Rita Bijlsma > > - There were images in the root of the images slider (= folder which opens and closes like a slider, I use this name in the user guide). > The image nodes did not contain binary data (because the images had been exported and imported, but no binary data were exported) > - In the CMS the admin created a folder 'portraits' as subfolder of the images root. > - The admin then used the console to move an image node to the portraits subfolder. This was succesfull. > First this was done by typing the subfolder name, a slash and the filename. After the problems described below, and after logout and login, the same was tested, but now the subfolder was first selected and then only the filename was typed.The subsequent errors were the same. > - After moving one node, the admin wanted to move another image node from the image root to the portraits subfolder. > * It was however not possible any more to select any node: > * No node became yellow coloured when clicked. > * The node that was clicked on and did not get yellow, was ignored in the popup window for move node. The previously moved node name was used in the popup. > * Opening and closing a parent node did not help. > * After refreshing the screen, the window was not redrawn fully, a node clicked on became yellow, but was still ignored in the popup window for move node, so still not selected. > - write to repository > - logout > - login > * and again only one node move possible. > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:43:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 10:00:46 2009 Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-2270) 'Add image/file/new document' popup window empty in overlay package In-Reply-To: <16847491.1234866784095.JavaMail.jira@hat01> Message-ID: <15807640.1236332583689.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_50346 ] (Berry) A.W. van Halderen commented on HREPTWO-2270: ---------------------------------------------------- Rita, can you confirm this is due to the patched JARs? If not, are the issues still there for you, because the default quickstart wars don't reproduce the errors. You report that the issues are on home-crafted overlay packages. Maybe there are custom settings in place or missing packages which cause this. We cannot know this because we are unaware of the actual build being made. Please provide more feedback if still relevant on the build being made. > 'Add image/file/new document' popup window empty in overlay package > ------------------------------------------------------------------- > > Key: HREPTWO-2270 > URL: http://issues.onehippo.org/browse/HREPTWO-2270 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Using the quickstart package or the package as overlay package in another project. Note that the quickstart of 2.04.01-SNAPSHOT when used directly, not as/in overlay, works fine! > Firefox, Ubuntu > Reporter: Rita Bijlsma > Attachments: add image popup empty in overlay.png, hippoecm-extension.xml, pom.xml, sar_sar_namespace.xml, sar_snp_namespace.xml > > > - A developer creates a project with the either the quickstart or the package CMS as overlay package. > - The project adds some document types, but no content. > - The jetty:run-war startsup fine, > * But when opening the 'add image to gallery popup' it is empty, containing no field to type in, no browse button, no ok button. > This occurs when called via the button at the upper edge of the window, and also when called via the list in the home workspace (the workspace the user gets to first after startup of CMS). So it is not possible to add an image. > * The same is true for adding files to the assets library -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:45:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 10:02:40 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2270) 'Add image/file/new document' popup window empty in overlay package In-Reply-To: <16847491.1234866784095.JavaMail.jira@hat01> Message-ID: <26470111.1236332703654.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2270: ----------------------------------------------- Fix Version/s: Backlog > 'Add image/file/new document' popup window empty in overlay package > ------------------------------------------------------------------- > > Key: HREPTWO-2270 > URL: http://issues.onehippo.org/browse/HREPTWO-2270 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Using the quickstart package or the package as overlay package in another project. Note that the quickstart of 2.04.01-SNAPSHOT when used directly, not as/in overlay, works fine! > Firefox, Ubuntu > Reporter: Rita Bijlsma > Fix For: Backlog > > Attachments: add image popup empty in overlay.png, hippoecm-extension.xml, pom.xml, sar_sar_namespace.xml, sar_snp_namespace.xml > > > - A developer creates a project with the either the quickstart or the package CMS as overlay package. > - The project adds some document types, but no content. > - The jetty:run-war startsup fine, > * But when opening the 'add image to gallery popup' it is empty, containing no field to type in, no browse button, no ok button. > This occurs when called via the button at the upper edge of the window, and also when called via the list in the home workspace (the workspace the user gets to first after startup of CMS). So it is not possible to add an image. > * The same is true for adding files to the assets library -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:46:04 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 10:03:41 2009 Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-2271) import of namespaces with hippoecm-extension.xml fails In-Reply-To: <21613256.1234947243645.JavaMail.jira@hat01> Message-ID: <2028908.1236332764085.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_50347 ] (Berry) A.W. van Halderen commented on HREPTWO-2271: ---------------------------------------------------- Rita, can you provide feedback upon which namespace type you are trying to import and which failure occurs. If you try to import two CMS namespaces (ie. contents of /hippo:namespaces) which are the same, then this is intended to fail. > import of namespaces with hippoecm-extension.xml fails > ------------------------------------------------------ > > Key: HREPTWO-2271 > URL: http://issues.onehippo.org/browse/HREPTWO-2271 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: -jetty:run-war > -overlay package > Reporter: Rita Bijlsma > Fix For: Backlog > > > - The same two namespaces can succesfully be imported in version 2.03.00 > - The .xml of the namespaces have all namespace declarations exept sv removed, so it could not be a version issue. > As soon as I get to it, I will check the errormessages of jetty. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:46:04 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 10:03:42 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2271) import of namespaces with hippoecm-extension.xml fails In-Reply-To: <21613256.1234947243645.JavaMail.jira@hat01> Message-ID: <27252718.1236332764137.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2271?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2271: ----------------------------------------------- Fix Version/s: Backlog > import of namespaces with hippoecm-extension.xml fails > ------------------------------------------------------ > > Key: HREPTWO-2271 > URL: http://issues.onehippo.org/browse/HREPTWO-2271 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: -jetty:run-war > -overlay package > Reporter: Rita Bijlsma > Fix For: Backlog > > > - The same two namespaces can succesfully be imported in version 2.03.00 > - The .xml of the namespaces have all namespace declarations exept sv removed, so it could not be a version issue. > As soon as I get to it, I will check the errormessages of jetty. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:48:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 10:05:41 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2269) After move image node in console it is impossible to select an other node. In-Reply-To: <9338707.1234863843694.JavaMail.jira@hat01> Message-ID: <29000156.1236332883681.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2269: ----------------------------------------------- Fix Version/s: Backlog Affects Version/s: r2.03.00 (m10 - scalability) (was: Backlog) > After move image node in console it is impossible to select an other node. > --------------------------------------------------------------------------- > > Key: HREPTWO-2269 > URL: http://issues.onehippo.org/browse/HREPTWO-2269 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.03.00 (m10 - scalability) > Environment: Firefox, Ubuntu > Reporter: Rita Bijlsma > Fix For: Backlog > > > - There were images in the root of the images slider (= folder which opens and closes like a slider, I use this name in the user guide). > The image nodes did not contain binary data (because the images had been exported and imported, but no binary data were exported) > - In the CMS the admin created a folder 'portraits' as subfolder of the images root. > - The admin then used the console to move an image node to the portraits subfolder. This was succesfull. > First this was done by typing the subfolder name, a slash and the filename. After the problems described below, and after logout and login, the same was tested, but now the subfolder was first selected and then only the filename was typed.The subsequent errors were the same. > - After moving one node, the admin wanted to move another image node from the image root to the portraits subfolder. > * It was however not possible any more to select any node: > * No node became yellow coloured when clicked. > * The node that was clicked on and did not get yellow, was ignored in the popup window for move node. The previously moved node name was used in the popup. > * Opening and closing a parent node did not help. > * After refreshing the screen, the window was not redrawn fully, a node clicked on became yellow, but was still ignored in the popup window for move node, so still not selected. > - write to repository > - logout > - login > * and again only one node move possible. > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 10:50:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 10:07:47 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2287) Session is not fully closed when logging out in a Webkit based browser In-Reply-To: <32711449.1235570883624.JavaMail.jira@hat01> Message-ID: <4940469.1236333003675.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2287?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen updated HREPTWO-2287: ----------------------------------------------- Assignee: (Berry) A.W. van Halderen Fix Version/s: r2.04.00 (m11 - technical) Previous versions of 2.02.xx had indeed this problem. However this was fixed later on. I will try to confirm this issue has indeed been fixed for Chrome too, although the browser should not have any affect for this. > Session is not fully closed when logging out in a Webkit based browser > ---------------------------------------------------------------------- > > Key: HREPTWO-2287 > URL: http://issues.onehippo.org/browse/HREPTWO-2287 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.02.03 > Reporter: Jasha Joachimsthal > Assignee: (Berry) A.W. van Halderen > Fix For: r2.04.00 (m11 - technical) > > > Log in (as admin) > Log in using Google Chrome or Safari 4 (beta). > Click logout. > Fill in the username and you get a warning in the login screen that the user is already logged in. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Fri Mar 6 11:20:13 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Fri Mar 6 10:37:56 2009 Subject: [HippoRepos-dev] [16749] hippo-ecm/trunk: HREPTWO-1772: preliminary drop down menus available for styling only Message-ID: <20090306102015.AC4CAC5BF@svnnew.onehippo.org> Revision: 16749 Author: bvanhalderen Date: 2009-03-06 11:20:09 +0100 (Fri, 06 Mar 2009) Log Message: ----------- HREPTWO-1772: preliminary drop down menus available for styling only Modified Paths: -------------- hippo-ecm/trunk/addon/cms/root/src/main/java/org/hippoecm/frontend/plugins/cms/root/RootPlugin.java hippo-ecm/trunk/addon/workflow/pom.xml hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/RootPlugin.java hippo-ecm/trunk/package/ear/pom.xml hippo-ecm/trunk/package/war/pom.xml hippo-ecm/trunk/quickstart/ear/pom.xml hippo-ecm/trunk/quickstart/war/pom.xml Added Paths: ----------- hippo-ecm/trunk/addon/workflow/src/ hippo-ecm/trunk/addon/workflow/src/main/ hippo-ecm/trunk/addon/workflow/src/main/java/ hippo-ecm/trunk/addon/workflow/src/main/java/org/ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Menu.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuContainer.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/workflow-16.png hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenu.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java hippo-ecm/trunk/package/config/src/main/resources/cms-preview.xml-auke Property Changed: ---------------- hippo-ecm/trunk/addon/workflow/ Modified: hippo-ecm/trunk/addon/cms/root/src/main/java/org/hippoecm/frontend/plugins/cms/root/RootPlugin.java =================================================================== --- hippo-ecm/trunk/addon/cms/root/src/main/java/org/hippoecm/frontend/plugins/cms/root/RootPlugin.java 2009-03-06 09:30:12 UTC (rev 16748) +++ hippo-ecm/trunk/addon/cms/root/src/main/java/org/hippoecm/frontend/plugins/cms/root/RootPlugin.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -15,20 +15,36 @@ */ package org.hippoecm.frontend.plugins.cms.root; +import org.apache.wicket.ajax.AjaxEventBehavior; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.plugin.ContextMenu; +import org.hippoecm.frontend.plugin.ContextMenuManager; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.widgets.Pinger; -public class RootPlugin extends RenderPlugin { +public class RootPlugin extends RenderPlugin implements ContextMenuManager { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; + private ContextMenu activeContextMenu; + public RootPlugin(IPluginContext context, IPluginConfig config) { super(context, config); + add(new Pinger("pinger")); + + add(new AjaxEventBehavior("onclick") { + public void onEvent(AjaxRequestTarget target) { + activeContextMenu.collapse(target); + } + }); } + public void addContextMenu(ContextMenu activeMenu) { + activeContextMenu = activeMenu; + } } Property changes on: hippo-ecm/trunk/addon/workflow ___________________________________________________________________ Added: svn:ignore + *.tmp .classpath .project .settings local.properties nbproject target tm.epoch tm.out tm.out.1 tm.out.lck tmlog.lck wdbp-error-log.txt Modified: hippo-ecm/trunk/addon/workflow/pom.xml =================================================================== --- hippo-ecm/trunk/addon/workflow/pom.xml 2009-03-06 09:30:12 UTC (rev 16748) +++ hippo-ecm/trunk/addon/workflow/pom.xml 2009-03-06 10:20:09 UTC (rev 16749) @@ -48,9 +48,8 @@ org.hippoecm - hippo-ecm-repository-connector + hippo-ecm-frontend-engine 2.05.00-SNAPSHOT - runtime jar @@ -95,24 +94,6 @@ [4.4,) test - - org.mortbay.jetty - jetty - 6.1.11 - provided - - - org.mortbay.jetty - jetty-util - 6.1.11 - provided - - - org.mortbay.jetty - jetty-management - 6.1.11 - provided - Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Menu.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Menu.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Menu.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,40 @@ +package org.hippoecm.addon.workflow; + +import java.io.Serializable; +import java.util.AbstractList; +import java.util.LinkedList; +import java.util.List; + +public class Menu extends AbstractList implements List, Serializable { + private String name; + List submenus; + + public Menu(String name) { + this.name = name; + this.submenus = new LinkedList(); + } + + public Menu(String name, List structure) { + this.name = name; + this.submenus = structure; + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return name; + } + + @Override + public T get(int index) { + return (T) submenus.get(index); + } + + @Override + public int size() { + return submenus.size(); + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Menu.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.html 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,22 @@ + + + + + +
      +
      + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,33 @@ +package org.hippoecm.addon.workflow; + +import java.util.LinkedList; +import java.util.List; +import org.apache.wicket.ajax.AjaxEventBehavior; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.data.DataView; +import org.apache.wicket.markup.repeater.data.ListDataProvider; + +public class MenuBar extends Panel { + List buttons; + public MenuBar(String id, List list) { + super(id); + buttons = new LinkedList(); + add(new DataView("list", new ListDataProvider(list)) { + public void populateItem(final Item item) { + final Menu name = (Menu)item.getModelObject(); + MenuButton button = new MenuButton("item", name); + buttons.add(button); + item.add(button); + } + }); + } + public void collapse(MenuButton current, AjaxRequestTarget target) { + for(MenuButton button : buttons) { + if(button != current) { + button.collapse(target); + } + } + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.html 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,23 @@ + + + +
      +
      +
      [MENUITEM]
      +
      +
      + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,109 @@ +package org.hippoecm.addon.workflow; + +import org.apache.wicket.ajax.AjaxEventBehavior; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.StringResourceModel; +import org.apache.wicket.util.string.AppendingStringBuffer; +import org.hippoecm.frontend.plugin.ContextMenu; +import org.hippoecm.frontend.plugin.ContextMenuManager; + +public class MenuButton extends Panel implements ContextMenu { + private static final long serialVersionUID = 1L; + Panel content; + AjaxLink link; + boolean pinned; + boolean active=false; + public MenuButton(String id, final Menu menu) { + super(id); + setOutputMarkupId(true); + add(content = new MenuList("item", menu)); + content.setOutputMarkupId(true); + content.setVisible(false); + pinned = false; + add(link = new AjaxLink("link") { + @Override + public void onClick(AjaxRequestTarget target) { + pinned = !pinned; + content.setVisible(pinned); + target.addComponent(content); + target.addComponent(MenuButton.this); + if(content.isVisible()) { + active = true; + final MenuBar bar = (MenuBar) findParent(MenuBar.class); + bar.collapse(MenuButton.this, target); + ((ContextMenuManager) findParent(ContextMenuManager.class)).addContextMenu(MenuButton.this); + } + } + }); + link.add(new AjaxEventBehavior("oncontextmenu") { + public void onEvent(AjaxRequestTarget target) { + pinned = !pinned; + content.setVisible(pinned); + target.addComponent(content); + target.addComponent(MenuButton.this); + if(content.isVisible()) { + active = true; + final MenuBar bar = (MenuBar) findParent(MenuBar.class); + bar.collapse(MenuButton.this, target); + ((ContextMenuManager) findParent(ContextMenuManager.class)).addContextMenu(MenuButton.this); + } + } + @Override protected CharSequence getEventHandler() { + return new AppendingStringBuffer(super.getEventHandler()).append("; return false;"); + } + + }); + link.add(new Label("label",new StringResourceModel(menu.getName(),MenuButton.this,null,menu.getName()))); + + /*AjaxEventBehavior evt = new AjaxEventBehavior("onmouseover") { + protected void onEvent(AjaxRequestTarget target) { + System.err.println("IN"); + content.setVisible(true);nstalc + target.addComponent(content); + target.addComponent(MenuButton.this); + } + @Override + protected IAjaxCallDecorator getAjaxCallDecorator() + { + return new CancelEventIfNoAjaxDecorator(null); + } + }; + evt.setThrottleDelay(Duration.seconds(5)); + link.add(evt); + add(new AjaxEventBehavior("onmouseout") { + protected void onEvent(AjaxRequestTarget target) { + System.err.println("OUT"); + if(!pinned) { + content.setVisible(false); + target.addComponent(content); + target.addComponent(MenuButton.this); + } + } + @Override + protected IAjaxCallDecorator getAjaxCallDecorator() + { + return new CancelEventIfNoAjaxDecorator(null); + } + });*/ + /* +link.add(new AttributeAppender("onmouseover", new Model("foo();return false;"), ";")); +AjaxEventBehavior +AjaxLink +ondblclick + */ + } + + public void collapse(AjaxRequestTarget target) { + if(active) { + active = false; + return; + } + pinned = false; + content.setVisible(pinned); + target.addComponent(content); + target.addComponent(MenuButton.this); + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuButton.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuContainer.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuContainer.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuContainer.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,10 @@ +package org.hippoecm.addon.workflow; + +import org.apache.wicket.MarkupContainer; +import org.apache.wicket.markup.html.panel.Fragment; + +public class MenuContainer extends MarkupContainer { + public MenuContainer(String id) { + super(id); + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuContainer.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.html 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,21 @@ + + + + + [DROP DOWN ICON][DROP DOWN TEXT] + + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,36 @@ +package org.hippoecm.addon.workflow; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.html.panel.Fragment; +import org.apache.wicket.markup.html.panel.Panel; + +public class MenuItem extends Panel { + private static final long serialVersionUID = 1L; + + public MenuItem(String id, Menu menu) { + super(id); + MenuContainer container = new MenuContainer("container"); + Workflow wf = new StdWorkflow(container, "wf", menu.getName()); + wf.setOutputMarkupId(true); + wf.setVisible(false); + add(wf); + + Component fragment = wf.get("text"); + if (fragment instanceof Workflow.WorkflowFragment) { + ((Workflow.WorkflowFragment)fragment).substantiate(); + add(fragment); + } else if (fragment instanceof Fragment) { + add(fragment); + } else { + // wf.setVisible(true); + } + + fragment = wf.get("icon"); + if (fragment instanceof Workflow.WorkflowFragment) { + ((Workflow.WorkflowFragment)fragment).substantiate(); + add(fragment); + } else if (fragment instanceof Fragment) { + add(fragment); + } + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuItem.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,23 @@ +package org.hippoecm.addon.workflow; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.model.StringResourceModel; + +public abstract class MenuLink extends AjaxLink { + public MenuLink(String id) { + super(id); + } + + public MenuLink(String id, StringResourceModel model) { + super(id, model); + } + + @Override + public void onClick(AjaxRequestTarget target) { + ((MenuButton)findParent(MenuButton.class)).collapse(target); + onClick(); + } + + public abstract void onClick(); +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.html 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,30 @@ + + + +
      + + + + + + + + +
      [DROP DOWN ICON][DROP DOWN TEXT]
      [WORKFLOW ACTION]
      +
      +
      + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,46 @@ +package org.hippoecm.addon.workflow; + +import org.hippoecm.addon.workflow.*; +import org.apache.wicket.Component; +import org.apache.wicket.markup.html.panel.Fragment; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.data.DataView; +import org.apache.wicket.markup.repeater.data.ListDataProvider; + +public class MenuList extends Panel { + private static final long serialVersionUID = 1L; + + public MenuList(String id, Menu menu) { + super(id); + MenuContainer container = new MenuContainer("container"); + Workflow wf = new StdWorkflow(container, "wf", menu.getName()); + wf.setOutputMarkupId(true); + wf.setVisible(false); + add(wf); + + Component fragment = wf.get("text"); + if (fragment instanceof Workflow.WorkflowFragment) { + ((Workflow.WorkflowFragment)fragment).substantiate(); + add(fragment); + } else if (fragment instanceof Fragment) { + add(fragment); + } else { + // wf.setVisible(true); + } + + fragment = wf.get("icon"); + if (fragment instanceof Workflow.WorkflowFragment) { + ((Workflow.WorkflowFragment)fragment).substantiate(); + add(fragment); + } else if (fragment instanceof Fragment) { + add(fragment); + } + add(new DataView("list", new ListDataProvider(menu)) { + public void populateItem(final Item item) { + final Menu menu = (Menu)item.getModelObject(); + item.add(new MenuItem("item", menu)); + } + }); + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.html 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,22 @@ + + + + [WORKFLOW NAME] + +
      [WORKFLOW DESCRIPTION]
      +
      + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,60 @@ +package org.hippoecm.addon.workflow; + +import org.apache.wicket.ResourceReference; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.image.Image; +import org.apache.wicket.model.StringResourceModel; + +public class StdWorkflow extends Workflow { + private static final long serialVersionUID = 1L; + + private String name; + + public StdWorkflow(MenuContainer container, String id, String name) { + super(container, id); + this.name = name; + + add(new WorkflowFragment("text") { + @Override + protected void initialize() { + MenuLink link; + add(link = new MenuLink("text") { + @Override + public void onClick() { + execute(); + } + }); + link.add(new Label("label", getTitle())); + } + }); + + add(new WorkflowFragment("icon") { + @Override + protected void initialize() { + ResourceReference model = getIcon(); + add(new Image("icon", model)); + } + }); + + add(new WorkflowFragment("panel") { + @Override + protected void initialize() { + } + }); + } + + protected final String getName() { + return name; + } + + protected StringResourceModel getTitle() { + return new StringResourceModel(getName(), this, null, getName()); + } + + protected ResourceReference getIcon() { + return new ResourceReference(container.getClass(), "workflow-16.png"); + } + + protected void execute() { + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.html 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,22 @@ + + + + Publish + + When do you want this to be published?
      +
      + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,34 @@ +package org.hippoecm.addon.workflow; + +import org.apache.wicket.MarkupContainer; +import org.apache.wicket.markup.html.panel.Fragment; +import org.apache.wicket.markup.html.panel.Panel; + +public class Workflow extends Panel { + private static final long serialVersionUID = 1L; + MenuContainer container; + + public abstract class WorkflowFragment extends Fragment { + protected WorkflowFragment(String id) { + super(id, id, Workflow.this, Workflow.this.getModel()); + } + abstract protected void initialize(); + void substantiate() { + initialize(); + } + } + + public Workflow(MenuContainer container, String id) { + super(id); + this.container = container; + } + + public final MarkupContainer add(final Fragment component) { + String id = component.getId(); + if(get(id) != null) { + return addOrReplace(component); + } else { + return super.add(component); + } + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/Workflow.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.html 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,39 @@ + + + + + + + + +
        +
      + +add(new DataView("rows", dataProvider) { + public void populateItem(final Item item) { +final TheModel user = (TheModel)item.getModelObject(); +item.add(new DatePicker + +ListDataProvider(List) { + Imodel model(Object object) { + new Model(object); + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDialog.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.html 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,20 @@ +. + + + + + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,177 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.addon.workflow; + +import java.lang.reflect.Method; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; +import javax.jcr.Workspace; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.apache.wicket.Session; + +import org.apache.wicket.markup.html.basic.Label; +import org.hippoecm.addon.workflow.Menu; +import org.hippoecm.addon.workflow.MenuBar; +import org.hippoecm.frontend.model.IModelReference; +import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.model.event.IEvent; +import org.hippoecm.frontend.model.event.IObservable; +import org.hippoecm.frontend.model.event.IObserver; +import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.plugin.config.IPluginConfig; +import org.hippoecm.frontend.service.render.RenderPlugin; +import org.hippoecm.frontend.service.render.RenderService; +import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.repository.api.HippoWorkspace; +import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowDescriptor; +import org.hippoecm.repository.api.WorkflowManager; + +public class WorkflowPlugin extends RenderPlugin { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + private static final Logger log = LoggerFactory.getLogger(WorkflowPlugin.class); + + public static final String CATEGORIES = "workflow.categories"; + + private String[] categories; + private final IModelReference modelReference; + + public WorkflowPlugin(IPluginContext context, IPluginConfig config) { + super(context, config); + if (config.get(CATEGORIES) != null) { + categories = config.getStringArray(CATEGORIES); + if (log.isDebugEnabled()) { + StringBuffer sb = new StringBuffer(); + sb.append("workflow showing categories"); + for (String category : categories) + sb.append(" " + category); + log.debug(new String(sb)); + } + } else { + log.warn("No categories ({}) defined", CATEGORIES); + } + + if (config.getString(RenderService.MODEL_ID) != null) { + modelReference = context.getService(config.getString(RenderService.MODEL_ID), + IModelReference.class); + if (modelReference != null) { + //updateModel(modelReference.getModel()); + context.registerService(new IObserver() { + private static final long serialVersionUID = 1L; + + public IObservable getObservable() { + return modelReference; + } + + public void onEvent(IEvent event) { + if (event instanceof IModelReference.IModelChangeEvent) { + IModelReference.IModelChangeEvent mce = (IModelReference.IModelChangeEvent)event; + //updateModel(mce.getNewModel()); + } + } + }, IObserver.class.getName()); + } + } else { + modelReference = null; + log.warn("No model configured"); + } + + + List menu = new LinkedList(); + try { + javax.jcr.Session session = ((UserSession)Session.get()).getJcrSession(); + Node document = session.getRootNode().getNode("content/articles/myarticle1/myarticle1"); + Workspace workspace = session.getWorkspace(); + Map workflows = new LinkedHashMap(); + if (workspace instanceof HippoWorkspace) { + WorkflowManager workflowMgr = ((HippoWorkspace)workspace).getWorkflowManager(); + for (String category : categories) { + WorkflowDescriptor descriptor = workflowMgr.getWorkflowDescriptor(category, document); + if (descriptor != null) { + workflows.put(category, descriptor); + } + } + } + Map> items = new LinkedHashMap>(); + for (Map.Entry entry : workflows.entrySet()) { + LinkedList details = new LinkedList(); + WorkflowDescriptor descriptor = entry.getValue(); + try { + Class[] interfaces = descriptor.getInterfaces(); + for (int i = 0; i < interfaces.length && i < 1; i++) { + for (Method method : interfaces[i].getDeclaredMethods()) { + details.add(new WorkflowDetail(descriptor, method)); + } + items.put(entry.getKey(), details); + } + } catch (ClassNotFoundException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + } + } + for (Map.Entry> item : items.entrySet()) { + List subs = new LinkedList(); + for (WorkflowDetail detail : item.getValue()) { + Method method = detail.method; + subs.add(new WorkflowMenu(detail)); + } + menu.add(new Menu(item.getKey(), subs)); + } + }catch(RepositoryException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } + + add(new MenuBar("menu", menu)); + } + + public static class WorkflowMenu extends Menu { + public WorkflowMenu(WorkflowDetail detail) { + super(detail.getName()); + } + } + + public static class WorkflowDetail { + transient WorkflowDescriptor descriptor; + transient Method method; + + public WorkflowDetail(WorkflowDescriptor descriptor, Method method) { + this.descriptor = descriptor; + this.method = method; + } + + public String getName() { + String methodName = method.getName(); + Class[] params = method.getParameterTypes(); + for (Class cls : params) { + methodName += "-" + cls.getName(); + } + return methodName; + } + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/workflow-16.png =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/workflow-16.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenu.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenu.java (rev 0) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenu.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,25 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend.plugin; + +import org.apache.wicket.IClusterable; +import org.apache.wicket.ajax.AjaxRequestTarget; + +public interface ContextMenu extends IClusterable { + final static String SVN_ID = "$Id$"; + + public void collapse(AjaxRequestTarget target); +} Property changes on: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenu.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java (rev 0) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,22 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend.plugin; + +public interface ContextMenuManager { + final static String SVN_ID = "$Id$"; + + public void addContextMenu(ContextMenu activeMenu); +} Property changes on: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/RootPlugin.java =================================================================== --- hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/RootPlugin.java 2009-03-06 09:30:12 UTC (rev 16748) +++ hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/RootPlugin.java 2009-03-06 10:20:09 UTC (rev 16749) @@ -15,20 +15,26 @@ */ package org.hippoecm.frontend.plugins.console; +import org.apache.wicket.ajax.AjaxEventBehavior; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.model.ModelReference; import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.plugin.ContextMenu; +import org.hippoecm.frontend.plugin.ContextMenuManager; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.service.render.RenderService; import org.hippoecm.frontend.widgets.Pinger; -public class RootPlugin extends RenderPlugin { +public class RootPlugin extends RenderPlugin implements ContextMenuManager { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; + private ContextMenu activeContextMenu; + public RootPlugin(IPluginContext context, IPluginConfig config) { super(context, config); @@ -41,6 +47,15 @@ // unregister: don't repaint root plugin when model changes. context.unregisterService(this, modelId); } + + add(new AjaxEventBehavior("onclick") { + public void onEvent(AjaxRequestTarget target) { + activeContextMenu.collapse(target); + } + }); } + public void addContextMenu(ContextMenu activeMenu) { + activeContextMenu = activeMenu; + } } Added: hippo-ecm/trunk/package/config/src/main/resources/cms-preview.xml-auke =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-preview.xml-auke (rev 0) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-preview.xml-auke 2009-03-06 10:20:09 UTC (rev 16749) @@ -0,0 +1,148 @@ + + + + + + frontend:plugincluster + + + + wicket.id + + + editor.id + browser.id + wicket.model + wicket.behavior + + + + + frontend:plugin + + + org.hippoecm.frontend.plugins.cms.edit.EditPerspective + + + ${editor.id} + + + ${wicket.id} + + + ${wicket.model} + + + ${wicket.behavior} + ${cluster.id}.behavior.perspective + + + extension.editor + extension.workflow + + + ${cluster.id}.viewer + + + ${cluster.id}.workflows + + + + + + frontend:plugin + + + org.hippoecm.frontend.plugins.yui.layout.WireframePlugin + + + ${cluster.id}.behavior.perspective + + + + frontend:pluginconfig + + + editor-perspective-wrapper + + + true + + + top + center + + + id=editor-perspective-top,height=42 + + + id=editor-perspective-center,body=editor-perspective-center-body,scroll=true + + + + + + + frontend:plugin + + + org.hippoecm.frontend.editor.viewer.ViewerPlugin + + + ${cluster.id}.viewer + + + ${wicket.model} + + + ${cluster.id}.template + + + + + + frontend:plugin + + + org.hippoecm.addon.workflow.WorkflowPlugin + + + ${wicket.model} + + + ${cluster.id}.workflows + + + default + + + + frontend:pluginconfig + + + ${editor.id} + + + ${browser.id} + + + + + Modified: hippo-ecm/trunk/package/ear/pom.xml =================================================================== --- hippo-ecm/trunk/package/ear/pom.xml 2009-03-06 09:30:12 UTC (rev 16748) +++ hippo-ecm/trunk/package/ear/pom.xml 2009-03-06 10:20:09 UTC (rev 16749) @@ -253,6 +253,12 @@ jar + + org.hippoecm + hippo-ecm-addon-workflow + 2.05.00-SNAPSHOT + jar + Modified: hippo-ecm/trunk/package/war/pom.xml =================================================================== --- hippo-ecm/trunk/package/war/pom.xml 2009-03-06 09:30:12 UTC (rev 16748) +++ hippo-ecm/trunk/package/war/pom.xml 2009-03-06 10:20:09 UTC (rev 16749) @@ -253,6 +253,12 @@ jar + + org.hippoecm + hippo-ecm-addon-workflow + 2.05.00-SNAPSHOT + jar + Modified: hippo-ecm/trunk/quickstart/ear/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/ear/pom.xml 2009-03-06 09:30:12 UTC (rev 16748) +++ hippo-ecm/trunk/quickstart/ear/pom.xml 2009-03-06 10:20:09 UTC (rev 16749) @@ -269,6 +269,13 @@ jar + + org.hippoecm + hippo-ecm-addon-workflow + 2.05.00-SNAPSHOT + jar + + org.hippoecm Modified: hippo-ecm/trunk/quickstart/war/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-06 09:30:12 UTC (rev 16748) +++ hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-06 10:20:09 UTC (rev 16749) @@ -269,6 +269,13 @@ jar + + org.hippoecm + hippo-ecm-addon-workflow + 2.05.00-SNAPSHOT + jar + + org.hippoecm From helpdesk at onehippo.com Fri Mar 6 12:44:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 12:01:41 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2284) Login screen has no style/images In-Reply-To: <992039.1235521384209.JavaMail.jira@hat01> Message-ID: <25596722.1236339843794.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2284. ----------------------------------------- Resolution: Cannot Reproduce Using the current version of the trunk, running the quickstart-war from the command line (mvn jetty:run-war), gives me the styled login screen. I'm not sure what caused or fixed this, but this issue does not seem to be relevant any more. > Login screen has no style/images > -------------------------------- > > Key: HREPTWO-2284 > URL: http://issues.onehippo.org/browse/HREPTWO-2284 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.xx (m12 - new feats) > Environment: trunk svn revision 16628 > quickstart-war > run from command line with mvn jetty:run-war > Reporter: Niels van Kampenhout > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Attachments: HREPTWO-2284.png > > > Login in screen is plain html, no style / images -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 12:44:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 12:01:43 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2285) Folders contents not displayed in documents browser In-Reply-To: <27175219.1235521803716.JavaMail.jira@hat01> Message-ID: <12352340.1236339843838.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2285?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2285. ----------------------------------------- Resolution: Cannot Reproduce folder contents show up when running the current trunk > Folders contents not displayed in documents browser > --------------------------------------------------- > > Key: HREPTWO-2285 > URL: http://issues.onehippo.org/browse/HREPTWO-2285 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.xx (m12 - new feats) > Environment: trunk svn revision 16628 > Reporter: Niels van Kampenhout > Assignee: Frank van Lankvelt > Fix For: r2.05.xx (m12 - new feats) > > Attachments: HREPTWO-2285-cms.png, HREPTWO-2285-console.png > > > - run quickstart war > - log in to cms > - click on "to the documents" > - browse to any of the folders (e.g. news) > - no documents are displayed > - when creating a new document, it does not show up either > - when checking in the console, there are nodes under the news node, including the newly created document -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 13:15:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 12:32:40 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2318) Reviewed actions workflow object is invalid after disposing the editable instance Message-ID: <27420919.1236341703676.JavaMail.jira@hat01> Reviewed actions workflow object is invalid after disposing the editable instance --------------------------------------------------------------------------------- Key: HREPTWO-2318 URL: http://issues.onehippo.org/browse/HREPTWO-2318 Project: Hippo Repository 2 Issue Type: Bug Reporter: Frank van Lankvelt Assignee: (Berry) A.W. van Halderen Priority: High Fix For: r2.05.xx (m12 - new feats) When invoking the BasicReviewedActionsWorkflow.disposeEditableInstance method on a workflow instance that has been obtained on the draft version of a document, it is not possible to reobtain a new editable instance by reusing the same workflow object. This blocks the existence of a "revert" button in the document editor. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Fri Mar 6 13:15:41 2009 From: svn-logs at hippocms.org (SVN (fvlankvelt)) Date: Fri Mar 6 12:33:17 2009 Subject: [HippoRepos-dev] [16751] hippo-ecm: HREPTWO-2318: unit test Message-ID: <20090306121541.67B53C535@svnnew.onehippo.org> Revision: 16751 Author: fvlankvelt Date: 2009-03-06 13:15:38 +0100 (Fri, 06 Mar 2009) Log Message: ----------- HREPTWO-2318: unit test Has been commented out to prevent it from breaking the build. Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/ReviewedActionsWorkflowTest.java Modified: hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/ReviewedActionsWorkflowTest.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/ReviewedActionsWorkflowTest.java 2009-03-06 10:26:12 UTC (rev 16750) +++ hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/ReviewedActionsWorkflowTest.java 2009-03-06 12:15:38 UTC (rev 16751) @@ -223,5 +223,40 @@ session.save(); session.refresh(true); } + + + // "Save" document; commit/edit combo on same workflow instance + // HREPTWO-2318 + /* { + // preparation: create draft + node = getNode("test/myarticle/myarticle"); + BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) getWorkflow(node, "default"); + assertNotNull("No applicable workflow where there should be one", workflow); + Document document = workflow.obtainEditableInstance(); + session.save(); + session.refresh(true); + + // "save" as commit/edit combo + node = getNode("test/myarticle/myarticle[@hippostd:state='draft']"); + workflow = (BasicReviewedActionsWorkflow) getWorkflow(node, "default"); + workflow.commitEditableInstance(); + document = workflow.obtainEditableInstance(); + session.save(); + session.refresh(true); + + // "revert" as dispose/edit combo + node = getNode("test/myarticle/myarticle[@hippostd:state='draft']"); + workflow = (BasicReviewedActionsWorkflow) getWorkflow(node, "default"); + workflow.disposeEditableInstance(); + workflow.obtainEditableInstance(); + session.save(); + session.refresh(true); + + // cleanup + node = getNode("test/myarticle/myarticle"); + workflow = (FullReviewedActionsWorkflow) getWorkflow(node, "default"); + workflow.disposeEditableInstance(); + } */ + } } From helpdesk at onehippo.com Fri Mar 6 13:17:03 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 6 12:34:41 2009 Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-2318) Reviewed actions workflow object is invalid after disposing the editable instance In-Reply-To: <27420919.1236341703676.JavaMail.jira@hat01> Message-ID: <29160047.1236341823682.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2318?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_50368 ] Frank van Lankvelt commented on HREPTWO-2318: --------------------------------------------- Have created a unit test in the ReviewedActionsWorkflowTest for the issue. > Reviewed actions workflow object is invalid after disposing the editable instance > --------------------------------------------------------------------------------- > > Key: HREPTWO-2318 > URL: http://issues.onehippo.org/browse/HREPTWO-2318 > Project: Hippo Repository 2 > Issue Type: Bug > Reporter: Frank van Lankvelt > Assignee: (Berry) A.W. van Halderen > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > > When invoking the BasicReviewedActionsWorkflow.disposeEditableInstance method on a workflow instance that has been obtained on the draft version of a document, it is not possible to reobtain a new editable instance by reusing the same workflow object. > This blocks the existence of a "revert" button in the document editor. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Fri Mar 6 13:38:50 2009 From: svn-logs at hippocms.org (SVN (bvanhalderen)) Date: Fri Mar 6 12:56:27 2009 Subject: [HippoRepos-dev] [16754] hippo-ecm: HREPTWO-2318: modified the unit test to show the intended correct procedure. Message-ID: <20090306123850.861DAC5BF@svnnew.onehippo.org> Revision: 16754 Author: bvanhalderen Date: 2009-03-06 13:38:49 +0100 (Fri, 06 Mar 2009) Log Message: ----------- HREPTWO-2318: modified the unit test to show the intended correct procedure. Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/ReviewedActionsWorkflowTest.java Modified: hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/ReviewedActionsWorkflowTest.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/ReviewedActionsWorkflowTest.java 2009-03-06 12:26:03 UTC (rev 16753) +++ hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/ReviewedActionsWorkflowTest.java 2009-03-06 12:38:49 UTC (rev 16754) @@ -1,5 +1,5 @@ /* - * Copyright 2008 Hippo. + * Copyright 2008-2009 Hippo. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -223,13 +223,15 @@ session.save(); session.refresh(true); } + } + @Test + public void testHREPTWO2318() throws WorkflowException, MappingException, RepositoryException, RemoteException { + testReviewedAction(); - // "Save" document; commit/edit combo on same workflow instance - // HREPTWO-2318 - /* { + { // preparation: create draft - node = getNode("test/myarticle/myarticle"); + Node node = getNode("test/myarticle/myarticle"); BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) getWorkflow(node, "default"); assertNotNull("No applicable workflow where there should be one", workflow); Document document = workflow.obtainEditableInstance(); @@ -248,6 +250,9 @@ node = getNode("test/myarticle/myarticle[@hippostd:state='draft']"); workflow = (BasicReviewedActionsWorkflow) getWorkflow(node, "default"); workflow.disposeEditableInstance(); + session.refresh(false); + node = getNode("test/myarticle/myarticle"); + workflow = (BasicReviewedActionsWorkflow) getWorkflow(node, "default"); workflow.obtainEditableInstance(); session.save(); session.refresh(true); @@ -256,7 +261,6 @@ node = getNode("test/myarticle/myarticle"); workflow = (FullReviewedActionsWorkflow) getWorkflow(node, "default"); workflow.disposeEditableInstance(); - } */ - + } } } From helpdesk at onehippo.com Fri Mar 6 13:44:03 2009 From: helpdesk at onehippo.com (JIRA ((Berry) A.W. van Halderen)) Date: Fri Mar 6 13:01:40 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2318) Reviewed actions workflow object is invalid after disposing the editable instance In-Reply-To: <27420919.1236341703676.JavaMail.jira@hat01> Message-ID: <18293461.1236343443664.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] (Berry) A.W. van Halderen resolved HREPTWO-2318. ------------------------------------------------ Resolution: Won't Fix The procedure to use the workflow is intended to be used somewhat differently. Like using a Node object, Workflow objects may become stale. Staleness cannot be detected, but in this particular case it is guaranteed, as the original object from which the workflow was obtains has been removed. This always makes the workflow invalid. Proper usage is to reobtain the workflow on the original object from which the obtaineditableinstance was invoked. This object can be re-accessed because domain knowledge is valid for use in the BasicReviewedActionsWorkflowPlugin. Through the WorkflowsModel you can also aquire the category needed to reaccess the workflow. > Reviewed actions workflow object is invalid after disposing the editable instance > --------------------------------------------------------------------------------- > > Key: HREPTWO-2318 > URL: http://issues.onehippo.org/browse/HREPTWO-2318 > Project: Hippo Repository 2 > Issue Type: Bug > Reporter: Frank van Lankvelt > Assignee: (Berry) A.W. van Halderen > Priority: High > Fix For: r2.05.xx (m12 - new feats) > > Time Spent: 30 minutes > Remaining Estimate: 0 minutes > > When invoking the BasicReviewedActionsWorkflow.disposeEditableInstance method on a workflow instance that has been obtained on the draft version of a document, it is not possible to reobtain a new editable instance by reusing the same workflow object. > This blocks the existence of a "revert" button in the document editor. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 6 14:57:03 2009 From: helpdesk at onehippo.com (JIRA (Auke van Scheltinga)) Date: Fri Mar 6 14:14:50 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2319) Let someone define a custom (css) z-index property value for YUI wireframe units in the CMS configuration Message-ID: <8668645.1236347823796.JavaMail.jira@hat01> Let someone define a custom (css) z-index property value for YUI wireframe units in the CMS configuration ---------------------------------------------------------------------------------------------------------- Key: HREPTWO-2319 URL: http://issues.onehippo.org/browse/HREPTWO-2319 Project: Hippo Repository 2 Issue Type: Improvement Reporter: Auke van Scheltinga Assignee: Arthur Bogaart Dropdown menu's that are larger then their parent element are displayed behind the next sibbling YUI unit, rendering the menu useless. To solve this the default z-index of the YUI unit containing the dropdown menu (0) should be made configurable, so it can be set higher then the next sibbling YUI unit. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Fri Mar 6 15:15:57 2009 From: svn-logs at hippocms.org (SVN (abogaart)) Date: Fri Mar 6 14:33:33 2009 Subject: [HippoRepos-dev] [16758] hippo-ecm: HREPTWO-2309: Fixed by adding check if iterator.size > 0 . Message-ID: <20090306141558.035D0C605@svnnew.onehippo.org> Revision: 16758 Author: abogaart Date: 2009-03-06 15:15:57 +0100 (Fri, 06 Mar 2009) Log Message: ----------- HREPTWO-2309: Fixed by adding check if iterator.size > 0. Cleaned up code a bit. Modified Paths: -------------- hippo-ecm/trunk/addon/search/frontend/src/main/java/org/hippoecm/frontend/plugins/search/yui/SearchBehavior.java Modified: hippo-ecm/trunk/addon/search/frontend/src/main/java/org/hippoecm/frontend/plugins/search/yui/SearchBehavior.java =================================================================== --- hippo-ecm/trunk/addon/search/frontend/src/main/java/org/hippoecm/frontend/plugins/search/yui/SearchBehavior.java 2009-03-06 14:06:56 UTC (rev 16757) +++ hippo-ecm/trunk/addon/search/frontend/src/main/java/org/hippoecm/frontend/plugins/search/yui/SearchBehavior.java 2009-03-06 14:15:57 UTC (rev 16758) @@ -64,6 +64,10 @@ static final Logger log = LoggerFactory.getLogger(SearchBehavior.class); + private static final String CALLBACK_PARAM = "callback"; + private static final String SEARCH_QUERY_PARAM = "query"; + private static final String BROWSE_PARAM = "browse"; + private final IBrowseService browseService; private final SearchBuilder searchBuilder; @@ -88,7 +92,7 @@ protected void respond(AjaxRequestTarget ajaxTarget) { final RequestCycle requestCycle = RequestCycle.get(); - String browse = requestCycle.getRequest().getParameter("browse"); + String browse = requestCycle.getRequest().getParameter(BROWSE_PARAM); if (browse != null && browse.length() > 0) { if (browseService != null) { browseService.browse(new JcrNodeModel(browse)); @@ -98,8 +102,8 @@ return; } - final String callbackMethod = requestCycle.getRequest().getParameter("callback"); - final String searchParam = requestCycle.getRequest().getParameter("query"); + final String callbackMethod = requestCycle.getRequest().getParameter(CALLBACK_PARAM); + final String searchParam = requestCycle.getRequest().getParameter(SEARCH_QUERY_PARAM); SearchResult sr; try { @@ -143,45 +147,42 @@ private static class SearchBuilder implements IClusterable { private static final long serialVersionUID = 1L; - private static final String HARDDOCUMENT_QUERY = "//element(*, hippo:harddocument)["; - private static final String EXCERPT = "/rep:excerpt(.)"; - private static final char SINGLE_QUOTE = '\''; - + private static final String SEARCH_PATHS = "search.paths"; + private static final String EXCLUDE_PRIMARY_TYPES = "exclude.primary.types"; + private static final String IGNORE_CHARS = "ignore.chars"; + private static final String WILDCARD_SEARCH = "wildcard.search"; + private static ResultItem[] EMPTY_RESULTS = new ResultItem[0]; + private final String defaultWhere; - - private boolean wildcardSearch = false; - private String ignoreChars = ""; - + private final boolean wildcardSearch; + private final String ignoreChars; + public SearchBuilder(IPluginConfig config) { - if (config.containsKey("wildcard.search")) { - wildcardSearch = config.getBoolean("wildcard.search"); + String[] searchPaths = config.getStringArray(SEARCH_PATHS); + if (searchPaths == null || searchPaths.length == 0) { + throw new IllegalArgumentException("Property " + SEARCH_PATHS + " is required."); } - ignoreChars = config.getString("ignore.chars", ignoreChars); + String[] excludePrimaryTypes = config.getStringArray(EXCLUDE_PRIMARY_TYPES); - StringBuilder sb = new StringBuilder(HARDDOCUMENT_QUERY); - if (config.containsKey("exclude.primary.types")) { - String[] excludePrimaryTypes = config.getStringArray("exclude.primary.types"); - if (excludePrimaryTypes.length > 0) { - sb.append("not("); - boolean addOr = false; - for (String exclude : excludePrimaryTypes) { - if (addOr) { - sb.append(" or "); - } else - addOr = true; - sb.append("@jcr:primaryType='").append(exclude).append('\''); - } - sb.append(") and "); + wildcardSearch = config.getBoolean(WILDCARD_SEARCH); + ignoreChars = config.getString(IGNORE_CHARS, ""); + + javax.jcr.Session session = ((UserSession) Session.get()).getJcrSession(); + + StringBuilder sb = new StringBuilder("//element(*, hippo:harddocument)["); + if (excludePrimaryTypes.length > 0) { + sb.append("not("); + boolean addOr = false; + for (String exclude : excludePrimaryTypes) { + if (addOr) { + sb.append(" or "); + } else + addOr = true; + sb.append("@jcr:primaryType='").append(exclude).append('\''); } + sb.append(") and "); } - String[] searchPaths = config.getStringArray("search.paths"); - if (searchPaths == null || searchPaths.length == 0) { - log.error("No search paths configured."); - throw new IllegalArgumentException("No search paths configured."); - } - - javax.jcr.Session session = ((UserSession) Session.get()).getJcrSession(); sb.append("("); boolean addOr = false; @@ -223,15 +224,14 @@ } StringBuilder query = new StringBuilder(defaultWhere); - StringTokenizer st = new StringTokenizer(value, " "); - while (st.hasMoreTokens()) { + for (StringTokenizer st = new StringTokenizer(value, " "); st.hasMoreTokens();) { query.append(" and jcr:contains(., '"); String token = st.nextToken(); for (int i = 0; i < token.length(); i++) { char c = token.charAt(i); if (ignoreChars.indexOf(c) == -1) { - if (c == SINGLE_QUOTE) { - query.append(SINGLE_QUOTE); + if (c == '\'') { + query.append('\''); } query.append(c); } @@ -241,7 +241,7 @@ } query.append("')"); } - query.append(']').append(EXCERPT); + query.append(']').append("/rep:excerpt(.)"); final String queryString = query.toString(); final String queryType = "xpath"; QueryResult result = null; @@ -252,7 +252,7 @@ HippoQuery hippoQuery = (HippoQuery) queryManager.createQuery(queryString, queryType); session.refresh(true); hippoQuery.setLimit(15); - + long start = System.currentTimeMillis(); result = hippoQuery.execute(); long end = System.currentTimeMillis(); @@ -261,10 +261,9 @@ log.error("Error executing query[" + queryString + "]", e); } - if (result != null) { - ResultItem[] results; - try { - results = new ResultItem[(int) result.getRows().getSize()]; + try { + if(result != null && result.getRows().getSize() > 0) { + ResultItem[] results = new ResultItem[(int) result.getRows().getSize()]; int count = 0; for (RowIterator it = result.getRows(); it.hasNext();) { @@ -277,9 +276,9 @@ if (node.hasProperty("hippostd:state")) { state = node.getProperty("hippostd:state").getString(); TypeTranslator translator = new TypeTranslator(new JcrNodeTypeModel( - "hippostd:publishable")); + "hippostd:publishable")); state = (String) translator.getValueName("hippostd:state", new Model(state)) - .getObject(); + .getObject(); } else { state = "null"; } @@ -296,11 +295,10 @@ } } return results; - } catch (RepositoryException e) { - log.error("Error parsing query results[" + queryString + "]", e); } + } catch (RepositoryException e) { + log.error("Error parsing query results[" + queryString + "]", e); } - return EMPTY_RESULTS; } From helpdesk at onehippo.com Fri Mar 6 15:18:03 2009 From: helpdesk at onehippo.com (JIRA (Arthur Bogaart)) Date: Fri Mar 6 14:35:40 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2309) java.lang.NegativeArraySizeException when using search box In-Reply-To: <8248446.1236042603669.JavaMail.jira@hat01> Message-ID: <16973973.1236349083739.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arthur Bogaart resolved HREPTWO-2309. ------------------------------------- Resolution: Fixed > java.lang.NegativeArraySizeException when using search box > ---------------------------------------------------------- > > Key: HREPTWO-2309 > URL: http://issues.onehippo.org/browse/HREPTWO-2309 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Environment: Hippo CMS version 2.04.01-SNAPSHOT build 16651 > (Hippo ECM Repository 2.04.01-SNAPSHOT ) > Reporter: Niels van Kampenhout > Assignee: Arthur Bogaart > Fix For: r2.04.00 (m11 - technical) > > > - log in to cms > - start typing in the search box > - nothing happens in the gui, but an exception will be thrown in the background: > 02.03.2009 17:06:59 ERROR [org.apache.wicket.RequestCycle.logRuntimeException():1437] > java.lang.NegativeArraySizeException > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior$SearchBuilder.doSearch(SearchBehavior.java:267) > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior$SearchBuilder.search(SearchBehavior.java:308) > at org.hippoecm.frontend.plugins.search.yui.SearchBehavior.respond(SearchBehavior.java:106) > at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297) > at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100) > at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) > at org.hippoecm.frontend.Main$6.processEvents(Main.java:270) > at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175) > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252) > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353) > at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355) > at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at org.hippoecm.frontend.plugins.login.ConcurrentLoginFilter.doFilter(ConcurrentLoginFilter.java:54) > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) > at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) > at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:324) > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 9 13:38:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 9 12:55:30 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2320) HREPTWO475 test sometimes fails with java 6 64bit Message-ID: <24371033.1236602283702.JavaMail.jira@hat01> HREPTWO475 test sometimes fails with java 6 64bit ------------------------------------------------- Key: HREPTWO-2320 URL: http://issues.onehippo.org/browse/HREPTWO-2320 Project: Hippo Repository 2 Issue Type: Bug Reporter: Bart van der Schans It complains that sometime the root node has been externally modified with the session save on line 121. Use node.save instead. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 9 13:38:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 9 12:55:32 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2320) HREPTWO475 test sometimes fails with java 6 64bit In-Reply-To: <24371033.1236602283702.JavaMail.jira@hat01> Message-ID: <33026671.1236602283749.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans updated HREPTWO-2320: ----------------------------------------- Fix Version/s: r2.05.xx (m12 - new feats) Affects Version/s: r2.04.00 (m11 - technical) > HREPTWO475 test sometimes fails with java 6 64bit > ------------------------------------------------- > > Key: HREPTWO-2320 > URL: http://issues.onehippo.org/browse/HREPTWO-2320 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.05.xx (m12 - new feats) > > > It complains that sometime the root node has been externally modified with the session save on line 121. Use node.save instead. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Mon Mar 9 13:48:02 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Mon Mar 9 13:05:28 2009 Subject: [HippoRepos-dev] [16780] hippo-ecm: HREPTWO-2320: Try to make the test al little bit more robust for sun java6 64bit Message-ID: <20090309124802.71CC0C58B@svnnew.onehippo.org> Revision: 16780 Author: bvdschans Date: 2009-03-09 13:48:02 +0100 (Mon, 09 Mar 2009) Log Message: ----------- HREPTWO-2320: Try to make the test al little bit more robust for sun java6 64bit Modified Paths: -------------- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java 2009-03-09 09:29:31 UTC (rev 16779) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java 2009-03-09 12:48:02 UTC (rev 16780) @@ -56,12 +56,13 @@ } public void testIssue() throws RepositoryException { - Node node, child, root = session.getRootNode().addNode("test"); + session.refresh(false); + Node root = session.getRootNode().addNode("test"); - node = root.addNode("docs","nt:unstructured"); + Node node = root.addNode("docs","nt:unstructured"); node.addMixin("mix:referenceable"); node = node.addNode("doc1",HippoNodeType.NT_HANDLE); - child = node.addNode("doc1","hippo:testdocument"); + Node child = node.addNode("doc1","hippo:testdocument"); child.addMixin("hippo:harddocument"); child.setProperty("lang","en"); child = node.addNode("doc1","hippo:testdocument"); @@ -119,6 +120,7 @@ node.setProperty("hippo:values",new String[] { "nl" }); node.setProperty("hippo:modes",new String[] { "select" }); session.save(); + session.refresh(false); node = root.getNode("nav"); From helpdesk at onehippo.com Mon Mar 9 13:50:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 9 13:07:30 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2320) HREPTWO475 test sometimes fails with java 6 64bit In-Reply-To: <24371033.1236602283702.JavaMail.jira@hat01> Message-ID: <24015489.1236603003674.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2320. ------------------------------------------ Resolution: Fixed > HREPTWO475 test sometimes fails with java 6 64bit > ------------------------------------------------- > > Key: HREPTWO-2320 > URL: http://issues.onehippo.org/browse/HREPTWO-2320 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.05.xx (m12 - new feats) > > > It complains that sometime the root node has been externally modified with the session save on line 121. Use node.save instead. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 10 11:36:35 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Tue Mar 10 10:53:58 2009 Subject: [HippoRepos-dev] [16789] hippo-ecm: HREPTWO-16: Backport error logging fix Message-ID: <20090310103635.A224BC58B@svnnew.onehippo.org> Revision: 16789 Author: bvdschans Date: 2009-03-10 11:36:35 +0100 (Tue, 10 Mar 2009) Log Message: ----------- HREPTWO-16: Backport error logging fix Modified Paths: -------------- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java Modified: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java =================================================================== --- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java 2009-03-10 09:59:00 UTC (rev 16788) +++ hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java 2009-03-10 10:36:35 UTC (rev 16789) @@ -197,44 +197,37 @@ } private void execute(WorkflowAction action) { + // before saving (which possibly means deleting), find the handle + final WorkflowsModel workflowModel = (WorkflowsModel) getModel(); + JcrNodeModel handle = workflowModel.getNodeModel(); try { - // before saving (which possibly means deleting), find the handle - final WorkflowsModel workflowModel = (WorkflowsModel) getModel(); - JcrNodeModel handle = workflowModel.getNodeModel(); while (handle.getParentModel() != null && !handle.getNode().isNodeType(HippoNodeType.NT_HANDLE)) { handle = handle.getParentModel(); } - action.prepareSession(handle); - - Workflow workflow = null; + WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); + Workflow workflow = manager.getWorkflow(workflowModel.getWorkflowDescriptor()); + action.execute(workflow); + } catch (MappingException e) { + log.error("MappingException while getting workflow: " + e.getMessage(), e); + showException(e); + } catch (RepositoryException e) { + log.error("RepositoryException while getting workflow: " + e.getMessage(), e); + showException(e); + } catch (Exception e) { + log.error("Exception while getting workflow: " + e.getMessage(), e); + showException(e); + } finally { try { - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - workflow = manager.getWorkflow(workflowModel.getWorkflowDescriptor()); - } catch (MappingException e) { - log.error(e.getMessage()); + ((UserSession) Session.get()).getJcrSession().refresh(true); + IJcrService jcrService = getPluginContext().getService(IJcrService.class.getName(), IJcrService.class); + if (jcrService != null) { + jcrService.flush(handle); + } } catch (RepositoryException e) { - log.error(e.getMessage()); - } catch (Exception e) { - log.error(e.getMessage()); + log.error("Failed to refresh session: " + e.getMessage(), e); } - - action.execute(workflow); - - ((UserSession) Session.get()).getJcrSession().refresh(true); - - IJcrService jcrService = getPluginContext().getService(IJcrService.class.getName(), IJcrService.class); - if (jcrService != null) { - jcrService.flush(handle); - } - } catch (RepositoryException ex) { - log.error("Invalid data to save", ex); - showException(ex); - } catch (Exception ex) { - log.error(ex.getMessage()); - showException(ex); - ex.printStackTrace(); } } - } + From svn-logs at hippocms.org Tue Mar 10 11:58:03 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Tue Mar 10 11:15:27 2009 Subject: [HippoRepos-dev] [16790] hippo-ecm: HREPTWO-16: log workflow errors Message-ID: <20090310105803.E6B98C5BF@svnnew.onehippo.org> Revision: 16790 Author: bvdschans Date: 2009-03-10 11:58:03 +0100 (Tue, 10 Mar 2009) Log Message: ----------- HREPTWO-16: log workflow errors Modified Paths: -------------- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.java Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.java 2009-03-10 10:36:35 UTC (rev 16789) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.java 2009-03-10 10:58:03 UTC (rev 16790) @@ -124,11 +124,8 @@ ((UserSession) Session.get()).getJcrSession().refresh(true); } catch (Exception e) { String msg = e.getClass().getName() + ": " + e.getMessage(); - log.error(msg); + log.error(msg, e); error(msg); - if (log.isDebugEnabled()) { - log.debug("Error from repository: ", e); - } } } From svn-logs at hippocms.org Tue Mar 10 15:24:52 2009 From: svn-logs at hippocms.org (SVN (bvdschans)) Date: Tue Mar 10 14:42:14 2009 Subject: [HippoRepos-dev] [16793] hippo-ecm: HREPTWO-2321: Use forking for compile plugin and add memory settings Message-ID: <20090310142453.00EAEC58B@svnnew.onehippo.org> Revision: 16793 Author: bvdschans Date: 2009-03-10 15:24:52 +0100 (Tue, 10 Mar 2009) Log Message: ----------- HREPTWO-2321: Use forking for compile plugin and add memory settings Modified Paths: -------------- hippo-ecm/trunk/pom.xml Modified: hippo-ecm/trunk/pom.xml =================================================================== --- hippo-ecm/trunk/pom.xml 2009-03-10 13:40:49 UTC (rev 16792) +++ hippo-ecm/trunk/pom.xml 2009-03-10 14:24:52 UTC (rev 16793) @@ -415,6 +415,9 @@ true maven-compiler-plugin + true + 128m + 256m 1.5 1.5 From helpdesk at onehippo.com Tue Mar 10 15:25:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 10 14:42:25 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2321) Make build more robust against out of PermGen memory errors by forking the compile process Message-ID: <12682551.1236695103642.JavaMail.jira@hat01> Make build more robust against out of PermGen memory errors by forking the compile process ------------------------------------------------------------------------------------------ Key: HREPTWO-2321 URL: http://issues.onehippo.org/browse/HREPTWO-2321 Project: Hippo Repository 2 Issue Type: Improvement Affects Versions: r2.04.00 (m11 - technical) Reporter: Bart van der Schans Assignee: Bart van der Schans Fix For: r2.05.xx (m12 - new feats) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 10 17:38:03 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 10 17:04:28 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2321) Make build more robust against out of PermGen memory errors by forking the compile process In-Reply-To: <12682551.1236695103642.JavaMail.jira@hat01> Message-ID: <9203777.1236703083661.JavaMail.jira@hat01> [ http://issues.onehippo.org/browse/HREPTWO-2321?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2321. ------------------------------------------ Resolution: Fixed > Make build more robust against out of PermGen memory errors by forking the compile process > ------------------------------------------------------------------------------------------ > > Key: HREPTWO-2321 > URL: http://issues.onehippo.org/browse/HREPTWO-2321 > Project: Hippo Repository 2 > Issue Type: Improvement > Affects Versions: r2.04.00 (m11 - technical) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.05.xx (m12 - new feats) > > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 10 19:30:55 2009 From: svn-logs at hippocms.org (SVN (rbijlsma)) Date: Tue Mar 10 19:00:37 2009 Subject: [HippoRepos-dev] [16798] hippo-ecm: HREPTWODOCS-74 Message-ID: <20090310183055.43369C5BF@svnnew.onehippo.org> Revision: 16798 Author: rbijlsma Date: 2009-03-10 19:30:54 +0100 (Tue, 10 Mar 2009) Log Message: ----------- HREPTWODOCS-74 Removed Paths: ------------- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/ From svn-logs at hippocms.org Tue Mar 10 19:51:59 2009 From: svn-logs at hippocms.org (SVN (rbijlsma)) Date: Tue Mar 10 19:25:34 2009 Subject: [HippoRepos-dev] [16799] hippo-ecm: HREPTWODOCS-74 Message-ID: <20090310185159.B20EFC58B@svnnew.onehippo.org> Revision: 16799 Author: rbijlsma Date: 2009-03-10 19:51:59 +0100 (Tue, 10 Mar 2009) Log Message: ----------- HREPTWODOCS-74 Modified Paths: -------------- hippo-ecm/trunk/src/site/content.xml hippo-ecm/trunk/src/site/docerrors.xml hippo-ecm/trunk/src/site/errorgraad.txt hippo-ecm/trunk/src/site/folder.xml hippo-ecm/trunk/src/site/resources/folder.html hippo-ecm/trunk/src/site/resources/images/java_logo_large.jpg hippo-ecm/trunk/src/site/xdoc/about/term_index.xml hippo-ecm/trunk/src/site/xdoc/delve_into/bin_startup_help.xml hippo-ecm/trunk/src/site/xdoc/delve_into/core/building/eclipse.xml.vm hippo-ecm/trunk/src/site/xdoc/delve_into/core/building/maven.xml.vm hippo-ecm/trunk/src/site/xdoc/delve_into/custom/howto/eclipse/index.xml hippo-ecm/trunk/src/site/xdoc/delve_into/tools/howto/index.xml hippo-ecm/trunk/src/site/xdoc/delve_into/tools/howto/maven/build_core_Hippo_CMS.xml.vm hippo-ecm/trunk/src/site/xdoc/delve_into/tools/index.xml hippo-ecm/trunk/src/site/xdoc/delve_into/user/index.xml hippo-ecm/trunk/src/site/xdoc/errorlist.xml hippo-ecm/trunk/src/site/xdoc/support/community.xml.vm Modified: hippo-ecm/trunk/src/site/content.xml =================================================================== --- hippo-ecm/trunk/src/site/content.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/content.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -137,6 +137,9 @@ Configure update sites Install plugins War overlays + Import java project +
      Import java project
      + Howto import an existing java project.
      Start Eclipse
      Start Eclipse
      @@ -607,7 +610,12 @@
      Run a development package
      Run a development package
      How to build the package of a project and run it, all on the fly? -
      + Using snapshot dependencies +
      Using snapshot dependencies
      + How to ensure that projects that depend on snapshot versions of + packages will build? + +
      user cms_admins Modified: hippo-ecm/trunk/src/site/docerrors.xml =================================================================== --- hippo-ecm/trunk/src/site/docerrors.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/docerrors.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -70,7 +70,7 @@ Configure Workspace Explanation about installing JPOX eclipse plugin - Select JPOX -> Enhancer and enter 'BCEL' in the the 'Class Enhancer' field. + Select JPOX -> Enhancer and enter 'BCEL' in the the 'Class Enhancer' field.Import java project Missing short description. Add <span class='shortdesc'>. Missing section. Add <section name='...'>.Start EclipseCreate an Editing Template PluginGiving our plugin a place on the dashboard . Under wicket.extensions you will see the current plugins shown on the dashboard. Add an entry "extension.helloworld". Next add a property called "extension.helloworld" and give it the value "service.helloworld". Now the dashboard knows where to findHello WorldMaking the Hello World plugin context sensitive @@ -289,7 +289,7 @@ Missing section. Add <section name='...'>.Install MavenLearning Maven References to Maven pages Maven commands always works on the current directory, so you have to cd to the directory you want Maven to work on. - References to good Maven pages ( TODO ) and some handy notes.Run a development package + References to good Maven pages ( TODO ) and some handy notes.Run a development packageUsing snapshot dependencies Missing short description. Add <span class='shortdesc'>. Missing section. Add <section name='...'>.user Modified: hippo-ecm/trunk/src/site/errorgraad.txt =================================================================== --- hippo-ecm/trunk/src/site/errorgraad.txt 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/errorgraad.txt 2009-03-10 18:51:59 UTC (rev 16799) @@ -333,3 +333,5 @@ 414 errors and/or todos in 228 out of 228 documents (100%). #_______________________________________________________________________________________________________rita_2009-w09-4-16:10 416 errors and/or todos in 228 out of 228 documents (100%). +#_______________________________________________________________________rita_2009-w11-2-19:25 + 418 errors and/or todos in 230 out of 230 documents (100%). Modified: hippo-ecm/trunk/src/site/folder.xml =================================================================== --- hippo-ecm/trunk/src/site/folder.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/folder.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -44,6 +44,10 @@ fullname='delve_into/core/building/eclipse.xml.vm' relpath='delve_into/core/building' >eclipse + eclipse maven + maven configure_workspace - configure_workspace + >import_project + import_project configure_workspace - configure_workspace @@ -514,6 +526,10 @@ fullname='delve_into/tools/howto/eclipse/start_eclipse.xml' relpath='delve_into/tools/howto/eclipse' >start_eclipse + start_eclipse build_core_Hippo_CMS + build_core_Hippo_CMS run_development_package + snapshot_dependencies + snapshot_dependencies index + index information_architects concepts @@ -1210,6 +1242,10 @@ fullname='support/community.xml.vm' relpath='support' >community + community -

      .

      delve_into

      bin_startup_help

      core

      architecture

      index

      fundamentals

      index
      index project-structure

      custom

      howto

      customize_editing_template customize_skin < span class="todo">customize_versioning

      eclipse

      +

      .

      delve_into

      bin_startup_help

      core

      architecture

      index

      fundamentals

      index
      index project-structure
      overview quickstart_in_existing_container quickstart editing_template_plugin extend_dashboard gui_plugin hello_model in dex packaging workflow
      index introduction schemas synonyms
      overview quickstart_in_existing_container quickstart

      sysadmin

      System Administration Guide What does a sysadmin need to know and do for Hippo CMS? @@ -172,14 +172,14 @@ -configure_workspace configure_workspace index start_eclipse war_overlays_in_eclipse
      export_node get_Hippo_CMS_source index export_node get_Hippo_CMS_source index

      maven

      Maven How to use maven for Hippo projects. -build_core_Hippo_CMS index install_maven learning_maven run_development_package
      index

      user

      cm s_admins

      concepts

      CMS Admins Concepts A collection of concepts a CMS administrators may want to know. @@ -225,7 +225,7 @@ -editor folder index request scheduled_publication
      index tour
      index index index screenshots
      errorlist index integration_testing releasing
      +boolean documenttype index mandatory_or_optional namespaces_folder namespace string URL
      index tour screenshots errorlist index integration_testing releasing Modified: hippo-ecm/trunk/src/site/resources/images/java_logo_large.jpg =================================================================== (Binary files differ) Modified: hippo-ecm/trunk/src/site/xdoc/about/term_index.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/about/term_index.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/about/term_index.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -24,7 +24,7 @@
      - Term index, 888 terms + Term index, 892 terms
      @@ -2833,6 +2833,14 @@ + + + + @@ -3117,6 +3125,12 @@ + + + + @@ -3135,6 +3149,12 @@ + + + + @@ -4948,6 +4968,12 @@ + + + + Modified: hippo-ecm/trunk/src/site/xdoc/delve_into/bin_startup_help.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/delve_into/bin_startup_help.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/delve_into/bin_startup_help.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -24,19 +24,42 @@
      - + +
      Error: JAVA_HOME is not defined correctly. Unable to execute execute java

      The Hippo CMS quickstart packages assumes that Java already works on your system, - but your Java is not configured correctly, or is missing. + but your Java is not configured correctly, or is missing. Consult Requirements for Java requirements for Hippo ECM.

      +
      +
      + Error occurred during initialization of VM + Incompatible initial and maximum heap sizes specified + + +

      Errormessages about heapsize: some environments do not allow the large heapsize + asked for in the quickstart. +

      + +

      Fix: change startup.sh +

      + + EXTRA_JVM_ARGUMENTS="-Xms256m" + +

      into

      + + EXTRA_JVM_ARGUMENTS="-Xms256m -Xmx256m" + +
      + +
      - \ No newline at end of file + Modified: hippo-ecm/trunk/src/site/xdoc/delve_into/core/building/eclipse.xml.vm =================================================================== --- hippo-ecm/trunk/src/site/xdoc/delve_into/core/building/eclipse.xml.vm 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/delve_into/core/building/eclipse.xml.vm 2009-03-10 18:51:59 UTC (rev 16799) @@ -28,7 +28,9 @@
      Part of the contents of this page has been split up and the components have - been moved to Tools howto. This document now has links + been moved to Eclipse howto + in Tools howto. + This document now has links to them, but all of this document will go there too.
      Modified: hippo-ecm/trunk/src/site/xdoc/delve_into/core/building/maven.xml.vm =================================================================== --- hippo-ecm/trunk/src/site/xdoc/delve_into/core/building/maven.xml.vm 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/delve_into/core/building/maven.xml.vm 2009-03-10 18:51:59 UTC (rev 16799) @@ -24,16 +24,17 @@
      -
      - The contents of this page has been split up and the components have - been moved to Tools howto. +
      + The contents of this page has been split up and the components have + been moved to maven howto. + in Tools howto. - If you read the upper level documents: - build core Hippo CMS - and - Run development package - you will be referred to all the content that was previously here. -
      + If you read the upper level documents: + build core Hippo CMS + and + Run development package + you will be referred to all the content that was previously here. +
      Modified: hippo-ecm/trunk/src/site/xdoc/delve_into/custom/howto/eclipse/index.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/delve_into/custom/howto/eclipse/index.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/delve_into/custom/howto/eclipse/index.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -29,7 +29,7 @@
      Using eclipse for Hippo CMS addon projects This section is to describe how to configure eclipse to use with Hippo CMS addon projects. -
      + How to ensure that projects that depend on snapshot versions of + packages will build? + + Howto: Using snapshot dependencies
      How to fill a date field in a document. Howto: Fill date in Document
      + Howto import an existing java project. + Import java project
      Howto install Maven. Install Maven
      + Import java project + Import java project
      Importing Content Data Migration
      + Using snapshot dependencies + Howto: Using snapshot dependencies
      Using standard Hippo CMS with example content Quickstart Steps
      Configure WorkspaceConfigure Eclipse Workspace for Hippo CMS addon projects: Configure update sites, Install plugins, War overlays.
      Start EclipseStart Eclipse to work on Hippo CMS addon projects.
      +
      Configure WorkspaceConfigure Eclipse Workspace for Hippo CMS addon projects: Configure update sites, Install plugins, War overlays.
      Import java projectHowto import an existing java project.
      Start EclipseStart Eclipse to work on Hippo CMS addon projects.
      Modified: hippo-ecm/trunk/src/site/xdoc/delve_into/tools/howto/index.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/delve_into/tools/howto/index.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/delve_into/tools/howto/index.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -32,7 +32,7 @@ howto's of general tools and procedures needed when developing on top of Hippo CMS 7. When tools section finishedThe intend is that the rest of the documentation will link to the tools section where needed and thereby become cleaner. -
      Create a pom.xmlLearn how to create a project object model file for maven.
      eclipseHow to use eclipse for Hippo projects: configure_workspace, start_eclipse, war_overlays_in_eclipse.
      Export nodeExport node from Hippo repository in XML format
      Get the Hippo CMS sourceGet the Hippo CMS source from the Hippo subversion repository.
      mavenHow to use maven for Hippo projects: build_core_Hippo_CMS, install_maven, learning_maven , run_development_package.
      +
      Create a pom.xmlLearn how to create a project object model file for maven.
      eclipseHow to use eclipse for Hippo projects: configure_workspace, start_eclipse, war_overlays_in_eclipse.
      Export nodeExport node from Hippo repository in XML format
      Get the Hippo CMS sourceGet the Hippo CMS source from the Hippo subversion repository.
      mavenHow to use maven for Hippo projects: build_core_Hippo_CMS, install_maven, learning_maven , run_development_package.
      Using snapshot dependenciesHow to ensure that projects that depend on snapshot versions of packages will build?
      Modified: hippo-ecm/trunk/src/site/xdoc/delve_into/tools/howto/maven/build_core_Hippo_CMS.xml.vm =================================================================== --- hippo-ecm/trunk/src/site/xdoc/delve_into/tools/howto/maven/build_core_Hippo_CMS.xml.vm 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/delve_into/tools/howto/maven/build_core_Hippo_CMS.xml.vm 2009-03-10 18:51:59 UTC (rev 16799) @@ -26,14 +26,22 @@
      How to build the core Hippo CMS package from the sources? -

      As a website developer you do not need to build the core Hippo CMS package, as - you can use it as a dependency. But you will have to build your own package and - you can read these pages as an example. +

      If you are not a core developer of Hippo CMS, you do not have to + build the core Hippo CMS package, as you can use it as war overlay within your own + project (the war overlay can be seen as a kind of complex dependency, if you take 'dependency' not + too strict). If you use a Hippo maven archetype + for your own project, the war overlay is already taken care of.

      -

      As a developer of addons on top of the Hippo CMS, you have to build a package from - a project that has the core Hippo CMS package as a subproject. So just building - the Hippo CMS itself will not suffice, but it is good way to start learning about it. +

      + However, you will have to build your own package and you can read these pages as an example.

      +

      + Some people build their own project against the Hippo CMS trunk, + which is not recommended, as this means they have a snapshot + dependency, for which no package can be found in our maven repository. + Those people need to build the Hippo CMS trunk to create the snapshot of the Hippo CMS + locally. +

      Assuming that you have Installed Maven ensuring spaceless pathnames and have @@ -42,20 +50,25 @@

      > cd ~/cms - ~/cms> mvn package + ~/cms> mvn install

      This will build the package:

      ~/cms/package/ear/target/${package_ear}

      - The 'mvn package' command will build the package(s) - and leave them in a target/ - descendant directory of your /cms directory. For instance, + mvn install does the more than mvn package. + mvn package builds the packages + in a target/ descendant directory of your /cms directory. For instance, if a project is configured to produce an EAR package, the produced EAR package is put in the directory:

      ~/cms/package/ear/target/

      While a WAR package would be put in the directory:

      ~/cms/package/war/target/

      WAR and EAR packages can not be build simultaneously.

      +

      mvn install in addition puts all project artifacts + (jars, wars) in your local maven repository. This is in principle not + required here, but due to a maven problem with resolving dependencies + on self, we recommend to use mvn install. +

      Modified: hippo-ecm/trunk/src/site/xdoc/delve_into/tools/index.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/delve_into/tools/index.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/delve_into/tools/index.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -31,7 +31,7 @@ This section is to describe general tools and procedures needed when developing on top of Hippo CMS 7. When tools section finishedThe intend is that the rest of the documentation will link to this section where needed and thereby become cleaner. -
      howtoHowto's for tools used when developing upon Hippo CMS 7: create_pom, export_node, get_Hippo_CMS_source.
      +
      howtoHowto's for tools used when developing upon Hippo CMS 7: create_pom, export_node, get_Hippo_CMS_source, snapshot_dependencies.
      Modified: hippo-ecm/trunk/src/site/xdoc/delve_into/user/index.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/delve_into/user/index.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/delve_into/user/index.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -16,7 +16,7 @@ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - + ____________________________________________________________________________________________ --> @@ -37,7 +37,7 @@

      Before starting a guide, you may first want to learn how - to manipulate the screenshots, + to manipulate the screenshots, making them large (double click), or showing only the relevant part (single click).

      Modified: hippo-ecm/trunk/src/site/xdoc/errorlist.xml =================================================================== --- hippo-ecm/trunk/src/site/xdoc/errorlist.xml 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/errorlist.xml 2009-03-10 18:51:59 UTC (rev 16799) @@ -24,7 +24,7 @@
      - 416 errors and/or todos in 228 out of 228 documents (100%). + 418 errors and/or todos in 230 out of 230 documents (100%).
      • 0 documents referencing password protected sites.
      • Modified: hippo-ecm/trunk/src/site/xdoc/support/community.xml.vm =================================================================== --- hippo-ecm/trunk/src/site/xdoc/support/community.xml.vm 2009-03-10 18:30:54 UTC (rev 16798) +++ hippo-ecm/trunk/src/site/xdoc/support/community.xml.vm 2009-03-10 18:51:59 UTC (rev 16799) @@ -113,7 +113,7 @@
      From svn-logs at hippocms.org Tue Mar 10 19:56:45 2009 From: svn-logs at hippocms.org (SVN (rbijlsma)) Date: Tue Mar 10 19:26:07 2009 Subject: [HippoRepos-dev] [16800] hippo-ecm: HREPTWODOCS-74 copy from trunk Message-ID: <20090310185645.5B7B4C5BF@svnnew.onehippo.org> Revision: 16800 Author: rbijlsma Date: 2009-03-10 19:56:44 +0100 (Tue, 10 Mar 2009) Log Message: ----------- HREPTWODOCS-74 copy from trunk Added Paths: ----------- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/ hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/errorgraad.txt hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/folder.xml Added: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/errorgraad.txt =================================================================== --- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/errorgraad.txt (rev 0) +++ hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/errorgraad.txt 2009-03-10 18:56:44 UTC (rev 16800) @@ -0,0 +1,337 @@ +#_________________________________________________________________________________________________________________________rita_2008-w46-5-10:49 + 132 errors and/or todos in 68 out of 172 documents (39%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:05 + 132 errors and/or todos in 68 out of 172 documents (39%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:07 + 132 errors and/or todos in 68 out of 172 documents (39%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:17 + 132 errors and/or todos in 68 out of 172 documents (39%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:17 + 132 errors and/or todos in 68 out of 172 documents (39%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:19 + 132 errors and/or todos in 68 out of 172 documents (39%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:20 + 132 errors and/or todos in 68 out of 172 documents (39%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:21 + 132 errors and/or todos in 68 out of 172 documents (39%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:24 + 127 errors and/or todos in 65 out of 169 documents (38%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:24 + 127 errors and/or todos in 65 out of 169 documents (38%). +#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:24 + 127 errors and/or todos in 65 out of 169 documents (38%). +#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:27 + 127 errors and/or todos in 65 out of 169 documents (38%). +#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:28 + 127 errors and/or todos in 65 out of 169 documents (38%). +#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:28 + 127 errors and/or todos in 65 out of 169 documents (38%). +#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:39 + 127 errors and/or todos in 65 out of 169 documents (38%). +#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:45 + 127 errors and/or todos in 65 out of 169 documents (38%). +#______________________________________________________________________________________________________rita_2008-w47-4-19:11 + 127 errors and/or todos in 65 out of 169 documents (38%). +#______________________________________________________________________________________________________rita_2008-w47-4-19:12 + 133 errors and/or todos in 67 out of 169 documents (39%). +#______________________________________________________________________________________________________rita_2008-w47-4-19:14 + 133 errors and/or todos in 67 out of 169 documents (39%). +#______________________________________________________________________________________________________rita_2008-w47-4-19:23 + 129 errors and/or todos in 67 out of 169 documents (39%). +#_______________________________________________________________________________________________________________________rita_2008-w47-5-12:03 + 134 errors and/or todos in 70 out of 172 documents (40%). +#_________________________________________________________________________________________________rita_2008-w48-3-17:04 + 158 errors and/or todos in 78 out of 173 documents (45%). +#_________________________________________________________________________________________________rita_2008-w48-3-17:08 + 297 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-17:08 + 158 errors and/or todos in 78 out of 173 documents (45%). +#_________________________________________________________________________________________________rita_2008-w48-3-17:14 + 135 errors and/or todos in 71 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-17:16 + 114 errors and/or todos in 71 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-17:17 + 115 errors and/or todos in 71 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-17:20 + 115 errors and/or todos in 71 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-17:47 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:01 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:05 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:06 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:07 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:11 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:14 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:16 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:16 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:16 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:18 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:21 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:21 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:22 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:23 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:24 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:25 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:25 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:25 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:26 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:26 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:27 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:27 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:27 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:28 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:28 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:28 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:28 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:28 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:29 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:30 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:30 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:31 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:32 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:35 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:37 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:38 + 121 errors and/or todos in 72 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:40 + 121 errors and/or todos in 72 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:43 + 124 errors and/or todos in 72 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:44 + 124 errors and/or todos in 72 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:44 + 124 errors and/or todos in 72 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:44 + 124 errors and/or todos in 72 out of 173 documents (41%). +#_________________________________________________________________________________________________rita_2008-w48-3-18:45 + 124 errors and/or todos in 72 out of 173 documents (41%). +#________________________________________________________________________________rita_2008-w48-4-09:23 + 124 errors and/or todos in 72 out of 173 documents (41%). +#________________________________________________________________________________rita_2008-w48-4-09:58 + 121 errors and/or todos in 72 out of 173 documents (41%). +#________________________________________________________________________________________________________rita_2008-w48-4-10:12 + 121 errors and/or todos in 72 out of 173 documents (41%). +#________________________________________________________________________________________________________rita_2008-w48-4-10:17 + 121 errors and/or todos in 72 out of 173 documents (41%). +#________________________________________________________________________________________________________rita_2008-w48-4-10:21 + 121 errors and/or todos in 72 out of 173 documents (41%). +#________________________________________________________________________________________________________rita_2008-w48-4-10:29 + 121 errors and/or todos in 72 out of 173 documents (41%). +#________________________________________________________________________________________________________rita_2008-w48-4-10:53 + 286 errors and/or todos in 173 out of 173 documents (100%). +#________________________________________________________________________________________________________rita_2008-w48-4-10:55 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:04 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:05 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:05 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:06 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:06 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:06 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:07 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:08 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:08 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:09 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:11 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:11 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:19 + 120 errors and/or todos in 72 out of 173 documents (41%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:19 + 120 errors and/or todos in 72 out of 173 documents (41%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:20 + 120 errors and/or todos in 72 out of 173 documents (41%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:28 + 286 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:30 + 115 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:35 +#_______________________________________________________________________________________________________rita_2008-w48-4-11:35 + 284 errors and/or todos in 173 out of 173 documents (100%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:40 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________________rita_2008-w48-4-11:42 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________________rita_2008-w48-4-12:18 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________________rita_2008-w48-4-12:20 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________________rita_2008-w48-4-12:49 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________rita_2008-w48-4-13:42 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________rita_2008-w48-4-13:49 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________rita_2008-w48-4-13:52 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________rita_2008-w48-4-13:54 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________rita_2008-w48-4-13:58 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________rita_2008-w48-4-14:25 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________rita_2008-w48-4-14:28 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_______________________________________________________________________________________________rita_2008-w48-4-14:33 + 118 errors and/or todos in 71 out of 173 documents (41%). +#_________________________________________________________________________________________rita_2008-w50-1-12:30 + 143 errors and/or todos in 79 out of 175 documents (45%). +#_________________________________________________________________________________________rita_2008-w50-1-12:35 + 143 errors and/or todos in 79 out of 175 documents (45%). +#__________________________________________________________________________________________________________________________rita_2008-w50-3-17:41 + 145 errors and/or todos in 81 out of 175 documents (46%). +#__________________________________________________________________________________________________________________________rita_2008-w50-3-17:42 + 144 errors and/or todos in 80 out of 175 documents (45%). +#_____________________________________________________________________________________________________________________rita_2008-w51-1-14:24 + 315 errors and/or todos in 176 out of 176 documents (100%). +#_____________________________________________________________________________________________________________________rita_2008-w51-1-14:28 + 176 errors and/or todos in 176 out of 176 documents (100%). +#_____________________________________________________________________________________________________________________rita_2008-w51-1-14:28 + 148 errors and/or todos in 80 out of 176 documents (45%). +#_____________________________________________________________________________________________________________________rita_2008-w51-1-14:40 + 148 errors and/or todos in 80 out of 176 documents (45%). +#_______________________________________________________________________rita_2008-w51-1-18:39 + 316 errors and/or todos in 176 out of 176 documents (100%). +#________________________________________________________________________________________________________________rita_2008-w51-1-18:58 + 146 errors and/or todos in 79 out of 176 documents (44%). +PATH +/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin +FIFI +fifi is /home/rita/bin/fifi +#________________________________________________________________________________________________________rita_2008-w51-5-13:39 + 152 errors and/or todos in 84 out of 181 documents (46%). +PATH +/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin +FIFI +fifi is /home/rita/bin/fifi +#________________________________________________________________________________________________________rita_2008-w51-5-14:13 + 156 errors and/or todos in 81 out of 181 documents (44%). +PATH +/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin +FIFI +fifi is /home/rita/bin/fifi +#________________________________________________________________________________________________________rita_2008-w51-5-14:20 + 155 errors and/or todos in 81 out of 181 documents (44%). +PATH +/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin +FIFI +fifi is /home/rita/bin/fifi +#________________________________________________________________________________________________________rita_2008-w51-5-14:34 + 154 errors and/or todos in 80 out of 182 documents (43%). +PATH +/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin +FIFI +fifi is /home/rita/bin/fifi +#________________________________________________________________________________________________________rita_2008-w51-5-14:47 + 154 errors and/or todos in 80 out of 182 documents (43%). +PATH +/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin +FIFI +fifi is /home/rita/bin/fifi +#________________________________________________________________________________________________________rita_2008-w51-5-14:54 + 154 errors and/or todos in 80 out of 182 documents (43%). +PATH +/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin +FIFI +fifi is /home/rita/bin/fifi +#________________________________________________________________________________________________________rita_2008-w51-5-19:05 + 154 errors and/or todos in 80 out of 182 documents (43%). +#__________________________________________________________rita_2008-w52-3-12:15 + 161 errors and/or todos in 81 out of 182 documents (44%). +#_______________________________________________________________________________________________________rita_2008-w52-3-17:01 + 161 errors and/or todos in 81 out of 182 documents (44%). +#_____________________________________________________________________________________________________rita_2009-w02-5-16:58 + 351 errors and/or todos in 193 out of 193 documents (100%). +#__________________________________________________________rita_2009-w04-3-09:53 + 170 errors and/or todos in 85 out of 194 documents (43%). +#_________________________________________________________________________rita_2009-w04-4-12:48 + 358 errors and/or todos in 197 out of 197 documents (100%). +#_________________________________________________________________________rita_2009-w04-4-13:37 + 358 errors and/or todos in 197 out of 197 documents (100%). +#_________________________________________________________________________rita_2009-w04-4-13:45 + 357 errors and/or todos in 197 out of 197 documents (100%). +#_________________________________________________________________________rita_2009-w04-4-15:49 + 359 errors and/or todos in 198 out of 198 documents (100%). +#__________________________________________________________rita_2009-w04-5-10:18 + 359 errors and/or todos in 198 out of 198 documents (100%). +#_________________________________________________________________________rita_2009-w04-7-20:47 + 370 errors and/or todos in 205 out of 205 documents (100%). +#_______________________________________________________________________rita_2009-w05-1-12:06 + 375 errors and/or todos in 208 out of 208 documents (100%). +#_______________________________________________________________________rita_2009-w05-1-12:50 + 376 errors and/or todos in 209 out of 209 documents (100%). +#_______________________________________________________________________rita_2009-w05-1-13:36 + 376 errors and/or todos in 209 out of 209 documents (100%). +#_______________________________________________________________________rita_2009-w05-1-13:38 + 376 errors and/or todos in 209 out of 209 documents (100%). +#_______________________________________________________________________rita_2009-w05-1-14:06 + 376 errors and/or todos in 209 out of 209 documents (100%). +#__________________________________________________________rita_2009-w05-5-16:48 + 391 errors and/or todos in 219 out of 219 documents (100%). +#__________________________________________________________rita_2009-w05-5-16:49 + 393 errors and/or todos in 219 out of 219 documents (100%). +#__________________________________________________________rita_2009-w05-5-17:01 + 393 errors and/or todos in 219 out of 219 documents (100%). +#__________________________________________________________rita_2009-w05-5-17:06 + 394 errors and/or todos in 219 out of 219 documents (100%). +#__________________________________________________________rita_2009-w06-1-14:39 + 392 errors and/or todos in 219 out of 219 documents (100%). +#____________________________________________________________rita_2009-w06-2-14:33 + 392 errors and/or todos in 219 out of 219 documents (100%). +#______________________________________________________________________________rita_2009-w06-5-15:22 + 398 errors and/or todos in 221 out of 221 documents (100%). +#__________________________________________________________rita_2009-w09-3-18:15 + 405 errors and/or todos in 223 out of 223 documents (100%). +#__________________________________________________________rita_2009-w09-3-18:23 + 405 errors and/or todos in 223 out of 223 documents (100%). +#_______________________________________________________________________________________________________rita_2009-w09-4-16:09 + 414 errors and/or todos in 228 out of 228 documents (100%). +#_______________________________________________________________________________________________________rita_2009-w09-4-16:10 + 416 errors and/or todos in 228 out of 228 documents (100%). +#_______________________________________________________________________rita_2009-w11-2-19:25 + 418 errors and/or todos in 230 out of 230 documents (100%). Added: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/folder.xml =================================================================== --- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/folder.xml (rev 0) +++ hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/folder.xml 2009-03-10 18:56:44 UTC (rev 16800) @@ -0,0 +1,1258 @@ + + + . + about + architecture + features + roadmap + term_index + use_cases + version_numbers + + delve_into + bin_startup_help + core + architecture + index + + building + eclipse + eclipse + index + maven + maven + netbeans + + fundamentals + index + + index + project-structure + + custom + concepts + index + repository_plugins + versioning + + howto + customize_editing_template + customize_skin + customize_versioning + eclipse + + Eclipse + Using eclipse for Hippo CMS addon projects + + This section is to describe how to configure eclipse to use with Hippo CMS addon projects. + + + + + configure_workspace + import_project + import_project + index + start_eclipse + + editing_template_plugin + extend_dashboard + gui_plugin + hello_model + index + packaging + workflow + + index + introduction + jcr + data_migration + examples + index + jcr_dropbox_example + jcr + reference + derived_data + index + + + reference + frontend + frontend_plugin_architecture + frontend_plugin_communication + index + + index + repository + repository_bootstrap + repository_plugins + workflow + + + schemas + synonyms + + overview + quickstart_in_existing_container + quickstart + sysadmin + + System Administration Guide + What does a sysadmin need to know and do for Hippo CMS? + + These pages describe how to get Hippo ECM up and running and how to configure your running application. + + + Supported stacks + What combinations of system software is supported by Hippo? + + + + configuration + + Configuration + What does a sysadmin have to configure in Hippo CMS? + + Whole folder, and rewrite if necessary. + + + console + database_server + index + nodes + + JCR nodes + Configuration nodes in the JCR tree inside the repository + + domains + groups + index + roles + users + workflow + + performance_tuning + repository + + Repository + The base repository configuration through a number of XML files. + + authentication + index + searchindex + workspace + + + debugging + index + installation + + Installation + How to install Hippo CMS + +

      + To run Hippo CMS, a + Java servlet container + or a + Java application server + is needed. +

      +

      + Hippo supplies a Java WAR package to deploy in Java servlet containers and + a EAR package to deploy in Java application servers. +

      + + +
      - ${product_name} wiki: + ${product_name} wiki: Find documentation contributed by other users and by Hippo developers.
      + + + + + + + + + + + + + + + + + + + + + + + +
      Compatible Java servlet containers:
      + tomcat logo + + Apache Tomcat + + Deploying Hippo +
      + jetty logo + + Jetty + + +
      Compatible Java application servers:
      + glassfish logo + + Sun Glassfish + + Deploying Hippo +
      + JBoss logo + + JBoss + + Deploying Hippo +
      + + +
      + help_renamed + help_startup_servlet_container + help_web_servlet_container + in_application_server + index + in_servlet_container + install_tomcat + plugins +
      + requirements +
      + tools + + Development Tools + Tools used when developing upon Hippo CMS 7 + + This section is to describe general tools and procedures needed when developing on top of Hippo CMS 7. + When tools section finishedThe intend is that the rest of the documentation + will link to this section where needed and thereby become cleaner. + + + + + howto + + Development Tools Howto + Howto's for tools used when developing upon Hippo CMS 7 + + This subsection of the tools section is to describe + howto's of general tools and procedures needed when developing on top of Hippo CMS 7. + When tools section finishedThe intend is that the rest of the documentation + will link to the tools section where needed and thereby become cleaner. + + + + + create_pom + eclipse + + Eclipse + How to use eclipse for Hippo projects. + + + + + + configure_workspace + configure_workspace + index + start_eclipse + start_eclipse + war_overlays_in_eclipse + + export_node + get_Hippo_CMS_source + index + maven + + Maven + How to use maven for Hippo projects. + + + + + + build_core_Hippo_CMS + build_core_Hippo_CMS + index + install_maven + learning_maven + run_development_package + + snapshot_dependencies + snapshot_dependencies + + index + + user + cms_admins + concepts + + CMS Admins Concepts + A collection of concepts a CMS administrators may want to know. + + +

      + If you do not know where to start, take the Tour. +

      +
      +
      +
      + index +
      + howto + add_group + add_user + assign_user_to_group + change_group_properties + change_password + change_user_properties + deactivate_account + goto_group_properties + goto_user_management_tab + goto_user_properties + index + login + logout + save_settings + start_CMS + type_in_editing_region + + index + tour +
      + contributors + concepts + + CMS Contributor Concepts + A collection of concepts a CMS contributor may want to know. + + +

      + If you do not know where to start, take the Tour. +

      +
      +
      +
      + boolean + cards_panel + card + content_workspace + contributor + current_folder + document_type + document + editing + edit_mode + folder_action_menu + folder_navigation_panel + folder_tabulation_panel + folder + home_workspace + index + inputfield + markuped_text + review_mode + slider + string + todo + + todo + This folder contains concepts that are in development. + + document_card + index + + versioning + workspace_navigation_panel + workspace +
      + howto + + CMS Contributor Howto + A collection of howto's for small tasks a contributor may want to do. + + +

      + If you do not know where to start, take the Tour. +

      +
      +
      +
      + create_document + fill_boolean_field_in_document + fill_date_field_in_document + fill_markuped_text_in_document + fill_string_field_in_document + goto_content_workspace + goto_folder + index + learn_meaning_of_inputfield + login + logout + request_publication + restore_previous_version + save_document + schedule_publication + set_edit_mode + start_CMS + todo + + todo + This folder contains howto's that are in development. + + browsing_history_of_document + goto_document_tab + index + +
      + index + tour +
      + editors + concepts + + CMS Editor Concepts + A collection of concepts a CMS editor may want to know. + + +

      + If you do not know where to start, take the Tour. +

      +
      +
      +
      + editor + folder + index + request + scheduled_publication +
      + howto + check_for_requests + create_folder + goto_content_browse_tab + handle_request + index + login + logout + start_CMS + + index + tour +
      + index + index + information_architects + concepts + + CMS Information Architects Concepts + A collection of concepts a CMS information architect may want to know. + + +

      + If you do not know where to start, take the Tour. +

      +
      +
      +
      + boolean + documenttype + index + mandatory_or_optional + namespaces_folder + namespace + string + URL +
      + howto + add_boolean_to_documenttype + add_date_to_documenttype + add_markuped_text_to_documenttype + add_number_to_documenttype + add_string_to_documenttype + change_field_in_documenttype + create_documenttype + create_namespace + document_types + editor + examples + fieldtypes + index + tutorial + + fieldcaption + fieldsize + goto_content_browse_tab + goto_documenttype_tab + goto_namespace + index + login + logout + mandatory_or_optional + naming_a_field + remove_field_from_documenttype + save_documenttype + start_CMS + update_content + + index + tour +
      + screenshots +
      + web + add-ons + howto + editing_template + index + packaging + + index + introduction + + index + jcr + * + + toolkits + index + + + + errorlist + index + integration_testing + releasing + support + community + community + contributing + forums + + From svn-logs at hippocms.org Wed Mar 11 09:26:21 2009 From: svn-logs at hippocms.org (SVN (rbijlsma)) Date: Wed Mar 11 09:34:48 2009 Subject: [HippoRepos-dev] [16801] hippo-ecm: HREPTWODOCS-74 rm site (again) Message-ID: <20090311082621.5AEA5C5BF@svnnew.onehippo.org> Revision: 16801 Author: rbijlsma Date: 2009-03-11 09:26:20 +0100 (Wed, 11 Mar 2009) Log Message: ----------- HREPTWODOCS-74 rm site (again) Removed Paths: ------------- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/ From svn-logs at hippocms.org Wed Mar 11 09:36:02 2009 From: svn-logs at hippocms.org (SVN (rbijlsma)) Date: Wed Mar 11 09:35:16 2009 Subject: [HippoRepos-dev] [16802] hippo-ecm: HREPTWODOCS-74 Message-ID: <20090311083602.BC15DC5BF@svnnew.onehippo.org> Revision: 16802 Author: rbijlsma Date: 2009-03-11 09:36:02 +0100 (Wed, 11 Mar 2009) Log Message: ----------- HREPTWODOCS-74 Modified Paths: -------------- hippo-ecm/trunk/src/site/site.xml Modified: hippo-ecm/trunk/src/site/site.xml =================================================================== --- hippo-ecm/trunk/src/site/site.xml 2009-03-11 08:26:20 UTC (rev 16801) +++ hippo-ecm/trunk/src/site/site.xml 2009-03-11 08:36:02 UTC (rev 16802) @@ -25,9 +25,9 @@ org.onehippo.ecm.skin maven-skin - 1.01.05 + 1.01.07-SNAPSHOT + + + [if exception happens, here] + + Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin$OnCloseDialog.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin$OnCloseDialog.properties (rev 0) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin$OnCloseDialog.properties 2009-03-11 16:09:10 UTC (rev 16815) @@ -0,0 +1 @@ +close-document: Close {0} \ No newline at end of file Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin$OnCloseDialog_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin$OnCloseDialog_nl.properties (rev 0) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin$OnCloseDialog_nl.properties 2009-03-11 16:09:10 UTC (rev 16815) @@ -0,0 +1 @@ +close-document: Sluit {0} \ No newline at end of file Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -23,17 +23,27 @@ import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.frontend.dialog.AbstractDialog; +import org.hippoecm.frontend.dialog.IDialogService; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; -import org.hippoecm.frontend.service.IEditService; +import org.hippoecm.frontend.service.IEditor; +import org.hippoecm.frontend.service.IEditorFilter; import org.hippoecm.frontend.service.IValidateService; import org.hippoecm.repository.api.HippoNodeType; +import org.hippoecm.repository.api.HippoSession; import org.hippoecm.repository.api.Workflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -59,19 +69,48 @@ log.warn("No validator id {} defined", IValidateService.VALIDATE_ID); } + IEditor editor = context.getService(config.getString("editor.id"), IEditor.class); + context.registerService(new IEditorFilter() { + private static final long serialVersionUID = 1L; + + public void postClose(Object object) { + // nothing to do + } + + public Object preClose() { + try { + JcrNodeModel nodeModel = ((WorkflowsModel) getModel()).getNodeModel(); + Node node = nodeModel.getNode(); + boolean dirty = node.isModified(); + if (!dirty) { + HippoSession session = (HippoSession) node.getSession(); + NodeIterator nodes = session.pendingChanges(node, "nt:base", true); + if (nodes.hasNext()) { + dirty = true; + } + } + if (dirty) { + IDialogService dialogService = context.getService(IDialogService.class.getName(), + IDialogService.class); + dialogService.show(new OnCloseDialog()); + } else { + return new Object(); + } + } catch (RepositoryException ex) { + log.error(ex.getMessage()); + showException(ex); + } + return null; + } + + }, context.getReference(editor).getServiceId()); + addWorkflowAction("save", new StringResourceModel("save", this, null), new WorkflowAction() { private static final long serialVersionUID = 1L; @Override public void execute(Workflow workflow) throws Exception { - WorkflowsModel model = (WorkflowsModel) getModel(); - final JcrNodeModel nodeModel = model.getNodeModel(); - if (nodeModel.getNode() != null) { - nodeModel.getNode().getSession().save(); - } else { - log.error("Node does not exist"); - } - close(); + doSave(); } }); @@ -80,24 +119,37 @@ @Override public void onClick(AjaxRequestTarget target) { - WorkflowsModel model = (WorkflowsModel) TemplateEditingWorkflowPlugin.this.getModel(); - JcrNodeModel nodeModel = model.getNodeModel(); - if (nodeModel.getNode() != null) { - try { - nodeModel.getNode().refresh(false); - } catch (RepositoryException ex) { - log.error(ex.getMessage()); - } - } else { - log.error("Node does not exist"); + try { + doRevert(); + } catch (Exception ex) { + showException(ex); } - close(); } }; link.add(new Label("revert-label", new StringResourceModel("revert", this, null))); add(link); } + void doSave() throws Exception { + WorkflowsModel model = (WorkflowsModel) getModel(); + final JcrNodeModel nodeModel = model.getNodeModel(); + if (nodeModel.getNode() != null) { + nodeModel.getNode().getSession().save(); + } else { + log.error("Node does not exist"); + } + } + + void doRevert() throws Exception { + WorkflowsModel model = (WorkflowsModel) TemplateEditingWorkflowPlugin.this.getModel(); + JcrNodeModel nodeModel = model.getNodeModel(); + if (nodeModel.getNode() != null) { + nodeModel.getNode().refresh(false); + } else { + log.error("Node does not exist"); + } + } + public boolean hasError() { if (!validated) { validate(); @@ -146,21 +198,63 @@ } } + JcrNodeModel getNodeModel() { + return ((WorkflowsModel) getModel()).getNodeModel(); + } + @Override protected void onModelChanged() { validated = false; super.onModelChanged(); } - private void close() { - IPluginContext context = getPluginContext(); - IEditService viewer = context.getService(getPluginConfig().getString(IEditService.EDITOR_ID), - IEditService.class); - if (viewer != null) { - viewer.close(((WorkflowsModel) getModel()).getNodeModel()); - } else { - log.warn("No editor service found"); + private class OnCloseDialog extends AbstractDialog { + private static final long serialVersionUID = 1L; + + public OnCloseDialog() { + + this.ok.setVisible(false); + + final Label exceptionLabel = new Label("exception", ""); + exceptionLabel.setOutputMarkupId(true); + add(exceptionLabel); + + addButton((AjaxButton) new AjaxButton(getButtonId()) { + private static final long serialVersionUID = 1L; + + @Override + protected void onSubmit(AjaxRequestTarget target, Form form) { + try { + doRevert(); + closeDialog(); + } catch (Exception ex) { + exceptionLabel.setModel(new Model(ex.getMessage())); + target.addComponent(exceptionLabel); + } + } + }.add(new Label("label", new ResourceModel("discard", "Discard")))); + + addButton((AjaxButton) new AjaxButton(getButtonId()) { + private static final long serialVersionUID = 1L; + + @Override + protected void onSubmit(AjaxRequestTarget target, Form form) { + try { + doSave(); + closeDialog(); + } catch (Exception ex) { + exceptionLabel.setModel(new Model(ex.getMessage())); + target.addComponent(exceptionLabel); + } + } + }.add(new Label("label", new ResourceModel("save", "Save")))); } + + public IModel getTitle() { + return new StringResourceModel("close-document", this, null, new Object[] { new PropertyModel( + TemplateEditingWorkflowPlugin.this.getNodeModel(), "name") }, "Close {0}"); + } + } } Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -28,7 +28,9 @@ import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugins.standardworkflow.EditmodelWorkflowPlugin; -import org.hippoecm.frontend.service.IEditService; +import org.hippoecm.frontend.service.IEditor; +import org.hippoecm.frontend.service.IEditorManager; +import org.hippoecm.frontend.service.IRenderService; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.frontend.widgets.TextFieldWidget; import org.hippoecm.repository.standardworkflow.EditmodelWorkflow; @@ -74,9 +76,14 @@ IPluginContext context = getPlugin().getPluginContext(); IPluginConfig config = getPlugin().getPluginConfig(); - IEditService viewService = context.getService(config.getString(IEditService.EDITOR_ID), - IEditService.class); - viewService.edit(nodeModel); + IEditorManager editService = context.getService(config.getString(IEditorManager.EDITOR_ID), + IEditorManager.class); + IEditor editor = editService.openEditor(nodeModel); + IRenderService renderer = context.getService(context.getReference(editor).getServiceId(), + IRenderService.class); + if (renderer != null) { + renderer.focus(null); + } } else { log.error("no model found to edit"); } Modified: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/AutoEditPlugin.java =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/AutoEditPlugin.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/AutoEditPlugin.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -15,9 +15,6 @@ */ package org.hippoecm.frontend.plugins.cms.edit; -import java.util.ArrayList; -import java.util.List; - import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; @@ -30,7 +27,9 @@ import org.hippoecm.frontend.plugin.IPlugin; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.service.IEditService; +import org.hippoecm.frontend.service.IEditor; +import org.hippoecm.frontend.service.IEditorManager; +import org.hippoecm.frontend.service.ServiceException; import org.hippoecm.frontend.session.UserSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,14 +44,11 @@ private IPluginContext context; private IPluginConfig config; - private List editors; public AutoEditPlugin(IPluginContext context, IPluginConfig config) { this.context = context; this.config = config; - editors = new ArrayList(); - context.registerService(this, IRefreshable.class.getName()); refresh(); @@ -60,7 +56,7 @@ public void refresh() { if (config.getString("editor.id") != null) { - final IEditService editService = context.getService(config.getString("editor.id"), IEditService.class); + final IEditorManager editService = context.getService(config.getString("editor.id"), IEditorManager.class); if (editService != null) { try { final String user = ((UserSession) Session.get()).getCredentials().getString("username"); // FIXME: no guarantee to have username here @@ -68,7 +64,6 @@ Query query = qMgr.createQuery("select * from hippostd:publishable where hippostd:state='draft' " // FIXME wrong knowledge in use here + "and hippostd:holder='" + user + "'", Query.SQL); - List newEditors = new ArrayList(); NodeIterator iter = query.execute().getNodes(); while (iter.hasNext()) { Node node = iter.nextNode(); @@ -77,13 +72,16 @@ } if (!node.getName().equals("hippo:prototype")) { JcrNodeModel model = new JcrNodeModel(node); - if (!editors.contains(model)) { - editService.edit(new JcrNodeModel(node)); + try { + IEditor editor = editService.getEditor(model); + if (editor == null) { + editor = editService.openEditor(model); + } + } catch (ServiceException ex) { + log.error(ex.getMessage()); } - newEditors.add(model); } } - editors = newEditors; } catch (RepositoryException ex) { log.error(ex.getMessage()); } Added: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/CmsEditor.java =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/CmsEditor.java (rev 0) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/CmsEditor.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -0,0 +1,134 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend.plugins.cms.edit; + +import java.util.IdentityHashMap; +import java.util.List; + +import org.apache.wicket.model.IModel; +import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.model.ModelReference; +import org.hippoecm.frontend.plugin.IClusterControl; +import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.plugin.config.IClusterConfig; +import org.hippoecm.frontend.plugin.config.IPluginConfig; +import org.hippoecm.frontend.plugin.config.IPluginConfigService; +import org.hippoecm.frontend.service.EditorException; +import org.hippoecm.frontend.service.IEditor; +import org.hippoecm.frontend.service.IEditorFilter; +import org.hippoecm.frontend.service.IFocusListener; +import org.hippoecm.frontend.service.IRenderService; +import org.hippoecm.frontend.service.render.RenderService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +class CmsEditor implements IEditor { + private static final long serialVersionUID = 1L; + + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final Logger log = LoggerFactory.getLogger(CmsEditor.class); + + private IPluginContext context; + private IClusterControl cluster; + private IRenderService renderer; + private ModelReference modelService; + private JcrNodeModel model; + private EditorManagerPlugin manager; + private IFocusListener focusListener; + + CmsEditor(EditorManagerPlugin manager, IPluginContext context, String clusterName, IPluginConfig config, + IModel model) throws CmsEditorException { + this.manager = manager; + this.model = (JcrNodeModel) model; + this.context = context; + + IPluginConfigService pluginConfigService = context.getService(IPluginConfigService.class.getName(), + IPluginConfigService.class); + IClusterConfig clusterConfig = pluginConfigService.getCluster(clusterName); + cluster = context.newCluster(clusterConfig, config); + IClusterConfig decorated = cluster.getClusterConfig(); + + String modelId = decorated.getString(RenderService.MODEL_ID); + modelService = new ModelReference(modelId, model); + modelService.init(context); + + String editorId = decorated.getString("editor.id"); + context.registerService(this, editorId); + + cluster.start(); + + renderer = context.getService(decorated.getString(RenderService.WICKET_ID), IRenderService.class); + if (renderer == null) { + cluster.stop(); + modelService.destroy(); + throw new CmsEditorException("No IRenderService found"); + } + + String renderId = context.getReference(renderer).getServiceId(); + + // attach self to renderer, so that other plugins can close us + context.registerService(this, renderId); + + // observe focus events, those need to be synchronized with the active model of the editor manager + focusListener = new IFocusListener() { + private static final long serialVersionUID = 1L; + + public void onFocus(IRenderService renderService) { + CmsEditor.this.manager.setActiveModel(CmsEditor.this.model); + } + + }; + context.registerService(focusListener, renderId); + } + + public IModel getModel() { + return model; + } + + public void close() throws EditorException { + List filters = context.getServices(context.getReference(this).getServiceId(), + IEditorFilter.class); + IdentityHashMap filterContexts = new IdentityHashMap(); + for (IEditorFilter filter : filters) { + Object filterContext = filter.preClose(); + if (filterContext == null) { + throw new EditorException("Close operation cancelled by filter"); + } + filterContexts.put(filter, filterContext); + } + + String renderId = context.getReference(renderer).getServiceId(); + context.unregisterService(focusListener, renderId); + context.unregisterService(this, renderId); + + cluster.stop(); + modelService.destroy(); + for (IEditorFilter filter : filters) { + filter.postClose(filterContexts.get(filter)); + } + context.unregisterService(this, cluster.getClusterConfig().getString("editor.id")); + manager.unregister(this); + } + + void focus() { + if (renderer != null) { + renderer.focus(null); + } + } + +} Copied: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/CmsEditorException.java (from rev 16812, hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorException.java) =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/CmsEditorException.java (rev 0) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/CmsEditorException.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -0,0 +1,27 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend.plugins.cms.edit; + +class CmsEditorException extends Exception { + private static final long serialVersionUID = 1L; + + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + CmsEditorException(String reason) { + super(reason); + } +} Modified: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditPerspective.java =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditPerspective.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditPerspective.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -21,15 +21,13 @@ import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugins.standards.perspective.Perspective; -import org.hippoecm.frontend.service.IEditService; -import org.hippoecm.frontend.service.IRenderService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class EditPerspective extends Perspective { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; - + private static final Logger log = LoggerFactory.getLogger(EditPerspective.class); private static final long serialVersionUID = 1L; @@ -43,26 +41,4 @@ return new NodeTranslator((JcrNodeModel) getModel()).getNodeName(); } - @Override - public void focus(IRenderService child) { - IPluginConfig config = getPluginConfig(); - IPluginContext context = getPluginContext(); - - JcrNodeModel model = (JcrNodeModel) getModel(); - if (model != null) { - if (config.getString("editor.id") != null) { - IEditService editor = context.getService(config.getString("editor.id"), IEditService.class); - if (editor != null) { - editor.edit(model); - } else { - log.warn("No edit service found"); - } - } else { - log.warn("No edit service configure"); - } - } else { - log.warn("Cannot request focus without model"); - } - } - } Deleted: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/Editor.java =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/Editor.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/Editor.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -1,80 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.cms.edit; - -import org.apache.wicket.IClusterable; -import org.apache.wicket.model.IModel; -import org.hippoecm.frontend.model.ModelReference; -import org.hippoecm.frontend.plugin.IClusterControl; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IClusterConfig; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.config.IPluginConfigService; -import org.hippoecm.frontend.service.IRenderService; -import org.hippoecm.frontend.service.render.RenderService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -class Editor implements IClusterable { - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final Logger log = LoggerFactory.getLogger(Editor.class); - - private IClusterControl plugin; - private IRenderService editor; - private ModelReference modelService; - - Editor(IPluginContext context, String cluster, IPluginConfig config, IModel model) throws EditorException { - IPluginConfigService pluginConfigService = context.getService(IPluginConfigService.class.getName(), - IPluginConfigService.class); - IClusterConfig clusterConfig = pluginConfigService.getCluster(cluster); - plugin = context.newCluster(clusterConfig, config); - IClusterConfig decorated = plugin.getClusterConfig(); - - String modelId = decorated.getString(RenderService.MODEL_ID); - modelService = new ModelReference(modelId, model); - modelService.init(context); - - plugin.start(); - - editor = context.getService(decorated.getString(RenderService.WICKET_ID), IRenderService.class); - if (editor == null) { - plugin.stop(); - modelService.destroy(); - throw new EditorException("No IRenderService found"); - } - } - - IModel getModel() { - return modelService.getModel(); - } - - void focus() { - if (editor.getParentService() != null) { - editor.getParentService().focus(editor); - } else { - log.warn("Editor is not bound to parent"); - } - } - - void close() { - plugin.stop(); - modelService.destroy(); - } -} Deleted: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorException.java =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorException.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorException.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -1,27 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.cms.edit; - -class EditorException extends Exception { - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - EditorException(String reason) { - super(reason); - } -} Modified: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorFactory.java =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorFactory.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorFactory.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -33,15 +33,17 @@ private IPluginConfig config; private IPluginContext context; private String cluster; + private EditorManagerPlugin manager; - public EditorFactory(IPluginContext context, String cluster, IPluginConfig config) { + public EditorFactory(EditorManagerPlugin manager, IPluginContext context, String cluster, IPluginConfig config) { + this.manager = manager; this.context = context; this.cluster = cluster; this.config = config; } - public Editor newEditor(final IModel model) throws EditorException { - return new Editor(context, cluster, config, model); + public CmsEditor newEditor(final IModel model) throws CmsEditorException { + return new CmsEditor(manager, context, cluster, config, model); } } Modified: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorManagerPlugin.java =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorManagerPlugin.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorManagerPlugin.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -33,18 +33,20 @@ import org.hippoecm.frontend.model.event.IEvent; import org.hippoecm.frontend.model.event.IObservable; import org.hippoecm.frontend.model.event.IObserver; -import org.hippoecm.frontend.model.event.IRefreshable; import org.hippoecm.frontend.plugin.IPlugin; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.service.IEditService; +import org.hippoecm.frontend.service.EditorException; +import org.hippoecm.frontend.service.IEditor; +import org.hippoecm.frontend.service.IEditorManager; +import org.hippoecm.frontend.service.ServiceException; import org.hippoecm.frontend.service.render.RenderService; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.HippoNodeType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class EditorManagerPlugin implements IPlugin, IObserver, IRefreshable, IDetachable { +public class EditorManagerPlugin implements IPlugin, IEditorManager, IObserver, IDetachable { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -59,8 +61,8 @@ private EditorFactory editorFactory; private final IModelReference modelReference; - private Editor preview; - private Map editors; + private CmsEditor preview; + private Map editors; private List pending; private transient boolean active = false; @@ -68,15 +70,13 @@ this.context = context; this.config = config; - editors = new HashMap(); + editors = new HashMap(); pending = new LinkedList(); - editorFactory = new EditorFactory(context, config.getString("cluster.edit.name"), config + editorFactory = new EditorFactory(this, context, config.getString("cluster.edit.name"), config .getPluginConfig("cluster.edit.options")); - previewFactory = new EditorFactory(context, config.getString("cluster.preview.name"), config + previewFactory = new EditorFactory(this, context, config.getString("cluster.preview.name"), config .getPluginConfig("cluster.preview.options")); - context.registerService(this, IRefreshable.class.getName()); - // monitor document in browser if (config.getString(RenderService.MODEL_ID) != null) { modelReference = context.getService(config.getString(RenderService.MODEL_ID), IModelReference.class); @@ -89,18 +89,7 @@ } // register editor - context.registerService(new IEditService() { - private static final long serialVersionUID = 1L; - - public void close(IModel model) { - EditorManagerPlugin.this.close(model); - } - - public void edit(IModel model) { - EditorManagerPlugin.this.edit(model); - } - - }, config.getString("editor.id")); + context.registerService(this, config.getString("editor.id")); } public void detach() { @@ -118,7 +107,11 @@ if (nodeModel != null && nodeModel.getNode() != null) { // close preview when a new document is selected if (preview != null) { - preview.close(); + try { + preview.close(); + } catch (EditorException ex) { + log.error("Failed to close preview", ex); + } preview = null; } @@ -143,7 +136,12 @@ // open editor if there is a draft JcrNodeModel draftDocument = getDraftModel(nodeModel); if (draftDocument != null) { - openEditor(draftDocument); + try { + CmsEditor editor = openEditor(draftDocument); + editor.focus(); + } catch (ServiceException ex) { + log.error(ex.getMessage()); + } return; } @@ -153,7 +151,7 @@ try { this.preview = previewFactory.newEditor(previewDocument); this.preview.focus(); - } catch (EditorException ex) { + } catch (CmsEditorException ex) { log.error(ex.getMessage()); } } else { @@ -175,7 +173,7 @@ try { this.preview = previewFactory.newEditor(nodeModel); this.preview.focus(); - } catch (EditorException ex) { + } catch (CmsEditorException ex) { log.error(ex.getMessage()); } } @@ -188,138 +186,118 @@ } } - public void refresh() { - if (!active) { - active = true; + public IEditor getEditor(IModel editModel) { + if (editModel instanceof JcrNodeModel) { + // find editor + if (editors.containsKey(editModel)) { + return editors.get(editModel); + } + } else { + log.warn("Unknown model type", editModel); + } + return null; + } + + public CmsEditor openEditor(IModel model) throws ServiceException { + JcrNodeModel nodeModel = (JcrNodeModel) model; + + if (editors.containsKey(nodeModel) || pending.contains(nodeModel)) { + throw new ServiceException("editor already exists"); + } + + if (editors.size() < 4) { try { + // Close preview when it is + // 1) another document below the same handle as the passed-in model + // 2) the exact same node if (preview != null) { JcrNodeModel previewModel = (JcrNodeModel) preview.getModel(); - if (!previewModel.getItemModel().exists()) { - preview.close(); + if (nodeModel.getParentModel().equals(previewModel.getParentModel())) { + Node node = nodeModel.getParentModel().getNode(); + try { + if (node.isNodeType(HippoNodeType.NT_HANDLE) || nodeModel.equals(previewModel)) { + preview.close(); + } + } catch (EditorException ex) { + log.error("Failed to close preview", ex); + } catch (RepositoryException ex) { + log.error("Unable to determine parent nodetype", ex); + } preview = null; - return; } } - for (JcrNodeModel editorModel : editors.keySet()) { - if (!editorModel.getItemModel().exists()) { - editors.get(editorModel).close(); - editors.remove(editorModel); - return; - } - } - - for (JcrNodeModel pendingModel : pending) { - if (!pendingModel.getItemModel().exists()) { - pending.remove(pendingModel); - return; - } - } - } finally { - active = false; + CmsEditor editor = editorFactory.newEditor(nodeModel); + editors.put(nodeModel, editor); + editor.focus(); + return editor; + } catch (CmsEditorException ex) { + log.error(ex.getMessage()); + throw new ServiceException("Initialization failed", ex); } + } else { + IDialogService dialogService = context.getService(IDialogService.class.getName(), IDialogService.class); + dialogService.show(new TooManyEditorsDialog()); + pending.add(nodeModel); + throw new ServiceException("Too many editors open"); } } - void edit(IModel editModel) { - if (!active) { - active = true; - try { - if (editModel instanceof JcrNodeModel) { - JcrNodeModel nodeModel = (JcrNodeModel) editModel; - - if (preview != null && nodeModel.equals(preview.getModel()) && nodeModel.getParentModel() != null - && nodeModel.getParentModel().getNode().isNodeType(HippoNodeType.NT_HANDLE)) { - preview.focus(); - } else { - if (preview != null) { - preview.close(); - preview = null; - } - - // open editor - if (editors.containsKey(editModel)) { - editors.get(editModel).focus(); - } else if (!pending.contains(editModel)) { - openEditor((JcrNodeModel) editModel); - } - } - - IModelReference modelService = context.getService(config.getString(RenderService.MODEL_ID), - IModelReference.class); - if (modelService != null) { - if (nodeModel.getParentModel() != null - && nodeModel.getParentModel().getNode().isNodeType(HippoNodeType.NT_HANDLE)) { - modelService.setModel(nodeModel.getParentModel()); - } else { - modelService.setModel(nodeModel); - } - } + void setActiveModel(JcrNodeModel nodeModel) { + try { + IModelReference modelService = context.getService(config.getString(RenderService.MODEL_ID), + IModelReference.class); + if (modelService != null) { + if (nodeModel != null && nodeModel.getParentModel() != null + && nodeModel.getParentModel().getNode().isNodeType(HippoNodeType.NT_HANDLE)) { + modelService.setModel(nodeModel.getParentModel()); } else { - log.warn("Unknown model type", editModel); + modelService.setModel(nodeModel); } - } catch (RepositoryException ex) { - log.error(ex.getMessage()); - } finally { - active = false; } + } catch (RepositoryException ex) { + log.error(ex.getMessage()); } } - void close(IModel model) { - if (!active) { - active = true; - try { - if (model != null && model instanceof JcrNodeModel) { - Node node = ((JcrNodeModel) model).getNode(); - if (node.isNodeType(HippoNodeType.NT_HANDLE)) { - for (JcrNodeModel nodeModel : editors.keySet()) { - if (nodeModel.getParentModel().equals(model)) { - editors.get(nodeModel).close(); - editors.remove(nodeModel); - break; + void unregister(CmsEditor editor) { + JcrNodeModel model = (JcrNodeModel) editor.getModel(); + if (model != null) { + + // update selected node + if (!active) { + active = true; + JcrNodeModel nodeModel = (JcrNodeModel) modelReference.getModel(); + if (nodeModel != null && nodeModel.getNode() != null) { + try { + Node node = nodeModel.getNode(); + if (node.isNodeType(HippoNodeType.NT_HANDLE)) { + if (model.getParentModel() != null && model.getParentModel().equals(nodeModel)) { + setActiveModel(null); } - } - for (JcrNodeModel nodeModel : pending) { - if (nodeModel.getParentModel().equals(model)) { - pending.remove(nodeModel); + } else { + if (nodeModel.equals(model)) { + setActiveModel(null); } } - } else { - if (editors.containsKey(model)) { - editors.get(model).close(); - editors.remove(model); - } - if (pending.contains(model)) { - pending.remove(model); - } + } catch (RepositoryException ex) { + log.error("unable to update selected document"); } } - } catch (RepositoryException ex) { - log.error(ex.getMessage()); - } finally { active = false; } - } - } - void openEditor(JcrNodeModel nodeModel) { - if (editors.size() < 4) { - try { - Editor editor = editorFactory.newEditor(nodeModel); - editors.put(nodeModel, editor); - } catch (EditorException ex) { - log.error(ex.getMessage()); - } finally { - Editor editor = editors.get(nodeModel); - if (editor != null) { - editor.focus(); - } + // cleanup internals + if (editor == preview) { + preview = null; + return; } - } else { - IDialogService dialogService = context.getService(IDialogService.class.getName(), IDialogService.class); - dialogService.show(new TooManyEditorsDialog()); - pending.add(nodeModel); + if (editors.containsKey(model)) { + editors.remove(model); + } + if (pending.contains(model)) { + pending.remove(model); + } } } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -59,7 +59,7 @@ } } }.setDefaultFormProcessing(false); - now.add(new Label("label", new ResourceModel("now"))); + now.add(new Label("label", new ResourceModel("now", "Now"))); addButton(now); } } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -38,7 +38,7 @@ import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; -import org.hippoecm.frontend.service.IEditService; +import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNodeType; @@ -93,10 +93,10 @@ Document docRef = workflow.obtainEditableInstance(); ((UserSession) getSession()).getJcrSession().refresh(true); Node docNode = ((UserSession) getSession()).getJcrSession().getNodeByUUID(docRef.getIdentity()); - IEditService viewer = getPluginContext().getService( - getPluginConfig().getString(IEditService.EDITOR_ID), IEditService.class); + IEditorManager viewer = getPluginContext().getService( + getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); if (viewer != null) { - viewer.edit(new JcrNodeModel(docNode)); + viewer.openEditor(new JcrNodeModel(docNode)); } else { log.warn("No editor found to edit {}", docNode.getPath()); } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -30,7 +30,7 @@ import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; -import org.hippoecm.frontend.service.IEditService; +import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.repository.api.NodeNameCodec; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.standardworkflow.DefaultWorkflow; @@ -61,9 +61,9 @@ public void execute(Workflow wf) throws Exception { Node handleNode = ((WorkflowsModel)DefaultWorkflowPlugin.this.getModel()).getNodeModel().getNode(); Node docNode = handleNode.getNodes(handleNode.getName()).nextNode(); - IEditService viewer = getPluginContext().getService(getPluginConfig().getString(IEditService.EDITOR_ID), IEditService.class); + IEditorManager viewer = getPluginContext().getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); if (viewer != null) { - viewer.edit(new JcrNodeModel(docNode)); + viewer.openEditor(new JcrNodeModel(docNode)); } else { log.warn("No editor found to edit {}", handleNode.getPath()); } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -15,13 +15,17 @@ */ package org.hippoecm.frontend.plugins.reviewedactions; +import javax.jcr.RepositoryException; + import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.model.WorkflowsModel; +import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; -import org.hippoecm.frontend.service.IEditService; +import org.hippoecm.frontend.service.IEditor; +import org.hippoecm.frontend.service.IEditorFilter; +import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.repository.api.Workflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,27 +38,38 @@ private static Logger log = LoggerFactory.getLogger(EditingDefaultWorkflowPlugin.class); - public EditingDefaultWorkflowPlugin(IPluginContext context, IPluginConfig config) { + public EditingDefaultWorkflowPlugin(final IPluginContext context, IPluginConfig config) { super(context, config); + IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditor.class); + context.registerService(new IEditorFilter() { + private static final long serialVersionUID = 1L; + + public void postClose(Object object) { + // nothing to do + } + + public Object preClose() { + try { + ((JcrNodeModel) getModel()).getNode().save(); + return new Object(); + } catch (RepositoryException ex) { + log.info(ex.getMessage()); + showException(ex); + } + return null; + } + + }, context.getReference(editor).getServiceId()); + addWorkflowAction("save", new StringResourceModel("save", this, null), new WorkflowAction() { private static final long serialVersionUID = 1L; @Override public void execute(Workflow wf) throws Exception { - close(); + ((JcrNodeModel) getModel()).getNode().save(); } }); } - private void close() { - IPluginContext context = getPluginContext(); - IEditService editor = context.getService(getPluginConfig().getString(IEditService.EDITOR_ID), - IEditService.class); - if (editor != null) { - editor.close(((WorkflowsModel) getModel()).getNodeModel()); - } else { - log.warn("No editor service found"); - } - } } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.html 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.html 2009-03-11 16:09:10 UTC (rev 16815) @@ -19,9 +19,6 @@
    • -
    • - -
    Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -25,23 +25,29 @@ import javax.jcr.Value; import javax.jcr.nodetype.PropertyDefinition; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +import org.apache.wicket.Session; import org.apache.wicket.model.StringResourceModel; - +import org.hippoecm.frontend.dialog.IDialogService; +import org.hippoecm.frontend.model.IModelReference; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; -import org.hippoecm.frontend.service.IEditService; -import org.hippoecm.frontend.service.IFactoryService; +import org.hippoecm.frontend.plugins.reviewedactions.dialogs.OnCloseDialog; +import org.hippoecm.frontend.service.EditorException; +import org.hippoecm.frontend.service.IEditor; +import org.hippoecm.frontend.service.IEditorFilter; import org.hippoecm.frontend.service.IValidateService; import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.repository.api.Document; +import org.hippoecm.repository.api.HippoSession; import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.reviewedactions.BasicReviewedActionsWorkflow; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class EditingReviewedActionsWorkflowPlugin extends AbstractWorkflowPlugin implements IValidateService { @SuppressWarnings("unused") @@ -51,8 +57,9 @@ private transient boolean validated = false; private transient boolean isvalid = true; + private transient boolean closing = false; - public EditingReviewedActionsWorkflowPlugin(IPluginContext context, IPluginConfig config) { + public EditingReviewedActionsWorkflowPlugin(final IPluginContext context, final IPluginConfig config) { super(context, config); if (config.getString(IValidateService.VALIDATE_ID) != null) { @@ -61,6 +68,99 @@ log.warn("No validator id {} defined", IValidateService.VALIDATE_ID); } + final IEditor editor = context.getService(config.getString("editor.id"), IEditor.class); + context.registerService(new IEditorFilter() { + private static final long serialVersionUID = 1L; + + public void postClose(Object object) { + } + + public Object preClose() { + if (!closing) { + try { + OnCloseDialog.Actions actions = new OnCloseDialog.Actions() { + + public void revert() { + execute(new WorkflowAction() { + private static final long serialVersionUID = 1L; + + @Override + protected boolean validateSession(List validators) { + return true; + } + + @Override + protected void prepareSession(JcrNodeModel handleModel) throws RepositoryException { + Node handleNode = handleModel.getNode(); + handleNode.refresh(false); + handleNode.getSession().refresh(true); + } + + @Override + public void execute(Workflow wf) throws Exception { + BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; + workflow.disposeEditableInstance(); + } + }); + } + + public void save() { + execute(new WorkflowAction() { + private static final long serialVersionUID = 1L; + + @Override + public void execute(Workflow wf) throws Exception { + BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; + workflow.commitEditableInstance(); + } + }); + } + + public void close() { + IEditor editor = context.getService(config.getString("editor.id"), IEditor.class); + try { + // prevent reentrancy + closing = true; + editor.close(); + } catch (EditorException ex) { + log.error(ex.getMessage()); + } finally { + closing = false; + } + } + }; + + JcrNodeModel nodeModel = ((WorkflowsModel) getModel()).getNodeModel(); + Node node = nodeModel.getNode(); + boolean dirty = node.isModified(); + if (!dirty) { + HippoSession session = ((HippoSession) node.getSession()); + NodeIterator nodes = session.pendingChanges(node, "nt:base", true); + if (nodes.hasNext()) { + dirty = true; + } + } + if (dirty) { + IDialogService dialogService = context.getService(IDialogService.class.getName(), + IDialogService.class); + dialogService.show(new OnCloseDialog(actions, nodeModel, editor)); + } else { + actions.revert(); + return new Object(); + } + } catch (Exception ex) { + ex.printStackTrace(); + log.error(ex.getMessage()); + showException(ex); + } + return null; + } else { + return new Object(); + } + } + + }, context.getReference(editor).getServiceId()); + addWorkflowAction("save", new StringResourceModel("save", this, null), new WorkflowAction() { private static final long serialVersionUID = 1L; @@ -68,46 +168,23 @@ public void execute(Workflow wf) throws Exception { BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.commitEditableInstance(); - ((UserSession) getSession()).getJcrSession().refresh(false); - close(); - } - }); - addWorkflowAction("revert", new StringResourceModel("revert", this, null), new WorkflowAction() { - private static final long serialVersionUID = 1L; - @Override - protected boolean validateSession(List validators) { - return true; - } + // get new instance of the workflow, previous one may have invalidated itself + WorkflowsModel wfModel = (WorkflowsModel) getModel(); + wfModel.detach(); + ((UserSession) Session.get()).getJcrSession().refresh(true); - @Override - protected void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.refresh(false); - handleNode.getSession().refresh(true); + WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); + workflow = (BasicReviewedActionsWorkflow) manager.getWorkflow(wfModel.getWorkflowDescriptor()); + Document draft = workflow.obtainEditableInstance(); + IModelReference ref = context.getService(config.getString("model.id"), IModelReference.class); + ref.setModel(new JcrNodeModel(((UserSession) Session.get()).getJcrSession().getNodeByUUID( + draft.getIdentity()))); } - @Override - public void execute(Workflow wf) throws Exception { - BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; - workflow.disposeEditableInstance(); - ((UserSession) getSession()).getJcrSession().refresh(false); - close(); - } }); } - private void close() { - IPluginContext context = getPluginContext(); - IEditService editor = context.getService(getPluginConfig().getString(IEditService.EDITOR_ID), - IEditService.class); - if (editor != null) { - editor.close(((WorkflowsModel) getModel()).getNodeModel()); - } else { - log.warn("No editor service found"); - } - } - public boolean hasError() { if (!validated) { validate(); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.properties 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.properties 2009-03-11 16:09:10 UTC (rev 16815) @@ -1,2 +1 @@ -save: Save and close -revert: Close without saving \ No newline at end of file +save: Save \ No newline at end of file Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin_nl.properties 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin_nl.properties 2009-03-11 16:09:10 UTC (rev 16815) @@ -1,2 +1 @@ -save: Sla op en sluit -revert: Sluit zonder opslag \ No newline at end of file +save: Sla op \ No newline at end of file Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -39,7 +39,7 @@ import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; -import org.hippoecm.frontend.service.IEditService; +import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNodeType; @@ -94,10 +94,10 @@ Document docRef = workflow.obtainEditableInstance(); ((UserSession) getSession()).getJcrSession().refresh(false); Node docNode = ((UserSession) getSession()).getJcrSession().getNodeByUUID(docRef.getIdentity()); - IEditService editor = getPluginContext().getService( - getPluginConfig().getString(IEditService.EDITOR_ID), IEditService.class); - if (editor != null) { - editor.edit(new JcrNodeModel(docNode)); + IEditorManager editorMgr = getPluginContext().getService( + getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); + if (editorMgr != null) { + editorMgr.openEditor(new JcrNodeModel(docNode)); } else { log.warn("No editor found to edit {}", docNode.getPath()); } Added: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.html (rev 0) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.html 2009-03-11 16:09:10 UTC (rev 16815) @@ -0,0 +1,21 @@ + + + + + [if exception happens, here] + + Added: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.java (rev 0) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -0,0 +1,98 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend.plugins.reviewedactions.dialogs; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.form.AjaxButton; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.model.ResourceModel; +import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.frontend.dialog.AbstractDialog; +import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.service.IEditor; +import org.hippoecm.frontend.service.ITitleDecorator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class OnCloseDialog extends AbstractDialog implements ITitleDecorator { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + static final Logger log = LoggerFactory.getLogger(OnCloseDialog.class); + + public interface Actions { + + void save(); + + void revert(); + + void close(); + } + + public OnCloseDialog(final Actions actions, JcrNodeModel model, final IEditor editor) { + super(model); + + this.ok.setVisible(false); + + final Label exceptionLabel = new Label("exception", ""); + exceptionLabel.setOutputMarkupId(true); + add(exceptionLabel); + + addButton((AjaxButton) new AjaxButton(getButtonId()) { + private static final long serialVersionUID = 1L; + + @Override + protected void onSubmit(AjaxRequestTarget target, Form form) { + try { + actions.close(); + actions.revert(); + closeDialog(); + } catch (Exception ex) { + exceptionLabel.setModel(new Model(ex.getMessage())); + target.addComponent(exceptionLabel); + } + } + }.add(new Label("label", new ResourceModel("discard", "Discard")))); + + addButton((AjaxButton) new AjaxButton(getButtonId()) { + private static final long serialVersionUID = 1L; + + @Override + protected void onSubmit(AjaxRequestTarget target, Form form) { + try { + actions.close(); + actions.save(); + closeDialog(); + } catch (Exception ex) { + exceptionLabel.setModel(new Model(ex.getMessage())); + target.addComponent(exceptionLabel); + } + } + }.add(new Label("label", new ResourceModel("save", "Save")))); + } + + public IModel getTitle() { + return new StringResourceModel("close-document", this, null, new Object[] { new PropertyModel(getModel(), + "name") }, "Close {0}"); + } + +} Added: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.properties (rev 0) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog.properties 2009-03-11 16:09:10 UTC (rev 16815) @@ -0,0 +1,4 @@ +message: Document has been modified. Save changes? +save: Save +discard: Discard +close-document: Close {0} \ No newline at end of file Added: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog_nl.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog_nl.properties (rev 0) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/dialogs/OnCloseDialog_nl.properties 2009-03-11 16:09:10 UTC (rev 16815) @@ -0,0 +1,4 @@ +message: Dokument is gewijzigd. Veranderingen opslaan? +save: Sla op +discard: Gooi weg +close-document: Sluit {0} \ No newline at end of file Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/browse/BrowseService.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/browse/BrowseService.java 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/browse/BrowseService.java 2009-03-11 16:09:10 UTC (rev 16815) @@ -117,14 +117,13 @@ if (model instanceof JcrNodeModel) { JcrNodeModel document = findDocument((JcrNodeModel) model); if (folder != null) { - if (document != null) { - updateDocumentModel(document); - } + updateDocumentModel(document); setFolderModel(folder); } else { log.warn("No folder found for model {}", model); } } else { + updateDocumentModel(null); log.warn("Model {} is not an JcrNodeModel", model); } } @@ -135,7 +134,9 @@ } private JcrNodeModel findDocument(JcrNodeModel document) { - if (document.getNode() == null || isFolder(document)) { + if (document == null) { + return null; + } else if (document.getNode() == null || isFolder(document)) { folder = document; document = null; } else { Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.html =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.html 2009-03-11 15:36:41 UTC (rev 16814) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.html 2009-03-11 16:09:10 UTC (rev 16815) @@ -19,7 +19,7 @@
    + + Added: hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin.java =================================================================== --- hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin.java (rev 0) +++ hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -0,0 +1,223 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend.editor.plugins.mixin; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; +import javax.jcr.Value; +import javax.jcr.nodetype.NodeType; +import javax.jcr.nodetype.NodeTypeManager; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox; +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.RefreshingView; +import org.apache.wicket.model.IModel; +import org.hippoecm.frontend.editor.ITemplateEngine; +import org.hippoecm.frontend.i18n.types.TypeTranslator; +import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.model.nodetypes.JcrNodeTypeModel; +import org.hippoecm.frontend.plugin.IClusterControl; +import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.plugin.config.IClusterConfig; +import org.hippoecm.frontend.plugin.config.IPluginConfig; +import org.hippoecm.frontend.service.render.RenderPlugin; +import org.hippoecm.frontend.types.ITypeDescriptor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MixinPlugin extends RenderPlugin { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + private static final Logger log = LoggerFactory.getLogger(MixinPlugin.class); + + protected String mode; + + private List available; + private Map controllers; + + public MixinPlugin(IPluginContext context, IPluginConfig config) { + super(context, config); + + controllers = new HashMap(); + + mode = config.getString(ITemplateEngine.MODE); + if (mode == null) { + log.error("No edit mode specified"); + } + + ITemplateEngine engine = context.getService(config.getString(ITemplateEngine.ENGINE), ITemplateEngine.class); + + String[] mixins = config.getStringArray("mixins"); + available = new ArrayList(mixins.length); + for (String mixin : mixins) { + MixinModel model = new MixinModel(engine, mixin); + available.add(model); + if ((Boolean) model.getObject()) { + controllers.put(mixin, startMixin(mixin)); + } + } + + add(new RefreshingView("mixins") { + private static final long serialVersionUID = 1L; + + @Override + protected Iterator getItemModels() { + return available.iterator(); + } + + @Override + protected void populateItem(Item item) { + final MixinModel model = (MixinModel) item.getModel(); + final AjaxCheckBox checkbox = new AjaxCheckBox("mixin", model) { + private static final long serialVersionUID = 1L; + + @Override + protected void onUpdate(AjaxRequestTarget target) { + Boolean value = (Boolean) getModelObject(); + String mixin = model.getMixin(); + if (value) { + if (!controllers.containsKey(mixin)) { + controllers.put(mixin, startMixin(mixin)); + } + } else { + if (controllers.containsKey(mixin)) { + IClusterControl cluster = controllers.remove(mixin); + cluster.stop(); + } + } + target.addComponent(this); + } + + }; + checkbox.setOutputMarkupId(true); + checkbox.setEnabled("edit".equals(mode) && !model.isPrimaryNodeType()); + item.add(checkbox); + item.add(new Label("label", new TypeTranslator(new JcrNodeTypeModel(model.getMixin())) + .getTypeName()) { + private static final long serialVersionUID = 1L; + + @Override + public void onComponentTag(ComponentTag tag) { + tag.put("for", checkbox.getInputName()); + super.onComponentTag(tag); + } + }); + } + + }); + } + + protected IClusterControl startMixin(String mixin) { + IPluginContext context = getPluginContext(); + IPluginConfig config = getPluginConfig(); + ITemplateEngine engine = context.getService(config.getString(ITemplateEngine.ENGINE), ITemplateEngine.class); + IClusterConfig template = engine.getTemplate(engine.getType(mixin), mode); + IClusterControl control = getPluginContext().newCluster(template, config.getPluginConfig("cluster.options")); + control.start(); + return control; + } + + private static boolean hasMixin(Node node, String type) throws RepositoryException { + if (!node.hasProperty("jcr:mixinTypes")) { + return false; + } + NodeTypeManager ntMgr = node.getSession().getWorkspace().getNodeTypeManager(); + for (Value value : node.getProperty("jcr:mixinTypes").getValues()) { + NodeType nt = ntMgr.getNodeType(value.getString()); + if (nt.isNodeType(type)) { + return true; + } + } + return false; + } + + private class MixinModel implements IModel { + private static final long serialVersionUID = 1L; + + String name; + String realType; + + MixinModel(ITemplateEngine engine, String mixin) { + this.name = mixin; + ITypeDescriptor type = engine.getType(mixin); + this.realType = type.getType(); + } + + public String getMixin() { + return name; + } + + public Object getObject() { + JcrNodeModel nodeModel = (JcrNodeModel) MixinPlugin.this.getModel(); + try { + Node node = nodeModel.getNode(); + return hasMixin(node, realType); + } catch (RepositoryException ex) { + log.error(ex.getMessage()); + } + return false; + } + + public void setObject(Object object) { + Boolean value = (Boolean) object; + JcrNodeModel nodeModel = (JcrNodeModel) MixinPlugin.this.getModel(); + try { + Node node = nodeModel.getNode(); + if (value) { + if (!hasMixin(node, realType)) { + node.addMixin(realType); + } + } else { + if (hasMixin(node, realType)) { + node.removeMixin(realType); + } + } + node.save(); + } catch (RepositoryException ex) { + log.error(ex.getMessage()); + } + } + + boolean isPrimaryNodeType() { + JcrNodeModel nodeModel = (JcrNodeModel) MixinPlugin.this.getModel(); + try { + Node node = nodeModel.getNode(); + if (node.getPrimaryNodeType().isNodeType(realType)) { + return true; + } + } catch (RepositoryException ex) { + log.error(ex.getMessage()); + } + return false; + } + + public void detach() { + } + } + +} Added: hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin.properties (rev 0) +++ hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin.properties 2009-03-18 14:50:41 UTC (rev 16998) @@ -0,0 +1 @@ +mixins: Metadata \ No newline at end of file Added: hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin_nl.properties (rev 0) +++ hippo-ecm/trunk/addon/editor/src/main/java/org/hippoecm/frontend/editor/plugins/mixin/MixinPlugin_nl.properties 2009-03-18 14:50:41 UTC (rev 16998) @@ -0,0 +1 @@ +mixins: Metadata \ No newline at end of file Modified: hippo-ecm/trunk/addon/editor/src/main/resources/new-namespace.xml =================================================================== --- hippo-ecm/trunk/addon/editor/src/main/resources/new-namespace.xml 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/editor/src/main/resources/new-namespace.xml 2009-03-18 14:50:41 UTC (rev 16998) @@ -14,6 +14,10 @@ hippostd:templatequery + + hippo:translated + hippostd:translated + xpath @@ -37,4 +41,32 @@
    + + + hippo:translation + + + en + + + Template Editor Namespace + + + org.hippoecm.repository.standardworkflow.FolderWorkflow + + + + + hippo:translation + + + nl + + + Template Editor Namespace + + + org.hippoecm.repository.standardworkflow.FolderWorkflow + + Modified: hippo-ecm/trunk/addon/editor/src/main/resources/new-type.xml =================================================================== --- hippo-ecm/trunk/addon/editor/src/main/resources/new-type.xml 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/editor/src/main/resources/new-type.xml 2009-03-18 14:50:41 UTC (rev 16998) @@ -24,6 +24,10 @@ ./_name $name + + hippo:translated + hippostd:translated + hippostd:templates @@ -108,4 +112,32 @@ + + + hippo:translation + + + en + + + Template Editor Type + + + org.hippoecm.repository.standardworkflow.FolderWorkflow + + + + + hippo:translation + + + nl + + + Template Editor Type + + + org.hippoecm.repository.standardworkflow.FolderWorkflow + + Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -19,6 +19,7 @@ import org.apache.wicket.model.StringResourceModel; import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; @@ -51,7 +52,7 @@ public Object preClose() { try { - ((JcrNodeModel) getModel()).getNode().save(); + ((WorkflowsModel) getModel()).getNodeModel().getNode().save(); return new Object(); } catch (RepositoryException ex) { log.info(ex.getMessage()); @@ -67,7 +68,7 @@ @Override public void execute(Workflow wf) throws Exception { - ((JcrNodeModel) getModel()).getNode().save(); + ((WorkflowsModel) getModel()).getNodeModel().getNode().save(); } }); } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties 2009-03-18 14:50:41 UTC (rev 16998) @@ -1 +1 @@ -save: Save and close \ No newline at end of file +save: Save \ No newline at end of file Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties 2009-03-18 14:50:41 UTC (rev 16998) @@ -1 +1 @@ -save: Sla op en sluit \ No newline at end of file +save: Sla op \ No newline at end of file Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/browse/BrowseService.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/browse/BrowseService.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/browse/BrowseService.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -28,6 +28,7 @@ import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.service.IBrowseService; +import org.hippoecm.repository.api.HippoNodeType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -140,21 +141,36 @@ folder = document; document = null; } else { - folder = document.getParentModel(); + folder = getParent(document); while (!isFolder(folder)) { document = folder; - folder = folder.getParentModel(); + folder = getParent(document); } } return document; } + private JcrNodeModel getParent(JcrNodeModel model) { + JcrNodeModel parentModel = model.getParentModel(); + try { + // skip facetresult nodes in hierarchy + Node parent = parentModel.getNode(); + if (parent.isNodeType(HippoNodeType.NT_FACETRESULT)) { + return new JcrNodeModel(parent.getParent()); + } + } catch (RepositoryException ex) { + log.error(ex.getMessage()); + } + return parentModel; + } + private boolean isFolder(JcrNodeModel nodeModel) { if (nodeModel != null) { try { Node node = nodeModel.getNode(); if (node.isNodeType("hippostd:folder") || node.isNodeType("hippostd:directory") - || node.isNodeType("hippo:namespace")) { + || node.isNodeType("hippo:namespace") || node.isNodeType(HippoNodeType.NT_FACETSEARCH) + || node.isNodeType(HippoNodeType.NT_FACETSUBSEARCH)) { return true; } } catch (RepositoryException ex) { Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/AbstractListingPlugin.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/AbstractListingPlugin.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/AbstractListingPlugin.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -46,6 +46,8 @@ private final IModelReference documentReference; private ListDataTable dataTable; private ListPagingDefinition pagingDefinition; + private ISortableDataProvider provider; + private IObserver providerObserver; public AbstractListingPlugin(IPluginContext context, IPluginConfig config) { super(context, config); @@ -96,7 +98,39 @@ return new ListDataTable(id, tableDefinition, dataProvider, selectionListener, triState, pagingDefinition); } - protected ISortableDataProvider getDataProvider() { + private ISortableDataProvider getDataProvider() { + if (provider == null) { + provider = newDataProvider(); + if (provider instanceof IObservable) { + providerObserver = new IObserver() { + private static final long serialVersionUID = 1L; + + public IObservable getObservable() { + return (IObservable) provider; + } + + public void onEvent(IEvent event) { + redraw(); + } + + }; + getPluginContext().registerService(providerObserver, IObserver.class.getName()); + } + } + return provider; + } + + private void dumpDataProvider() { + if (provider != null) { + if (providerObserver != null) { + getPluginContext().unregisterService(providerObserver, IObserver.class.getName()); + providerObserver = null; + } + provider = null; + } + } + + protected ISortableDataProvider newDataProvider() { return new DocumentsProvider((JcrNodeModel) getModel(), new DocumentListFilter(getPluginConfig()), getTableDefinition().getComparators()); } @@ -137,6 +171,8 @@ @SuppressWarnings("unchecked") public void onModelChanged() { dataTable.destroy(); + dumpDataProvider(); + dataTable = getListDataTable("table", getTableDefinition(), getDataProvider(), this, isOrderable(), pagingDefinition); replace(dataTable); Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/datatable/ListDataTable.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/datatable/ListDataTable.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/datatable/ListDataTable.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -50,7 +50,7 @@ private Map observers; private Set dirty; private TableSelectionListener selectionListener; - private IDataProvider provider; + private final IDataProvider provider; public interface TableSelectionListener { public void selectionChanged(IModel model); @@ -64,7 +64,7 @@ this.provider = dataProvider; this.selectionListener = selectionListener; - + if (tableDefinition.showColumnHeaders()) { addTopToolbar(new AjaxFallbackHeadersToolbar(this, dataProvider) { private static final long serialVersionUID = 1L; Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/IconAttributeModifier.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/IconAttributeModifier.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/IconAttributeModifier.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -16,7 +16,6 @@ package org.hippoecm.frontend.plugins.standards.list.resolvers; import javax.jcr.Node; -import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; import org.apache.wicket.AttributeModifier; @@ -54,21 +53,16 @@ Node node = nodeModel.getNode(); if (node != null) { try { - String type = node.getPrimaryNodeType().getName(); - if (node.isNodeType(HippoNodeType.NT_HANDLE)) { - NodeIterator nodeIt = node.getNodes(); - while (nodeIt.hasNext()) { - Node childNode = nodeIt.nextNode(); - if (childNode.isNodeType(HippoNodeType.NT_DOCUMENT)) { - type = childNode.getPrimaryNodeType().getName(); - break; - } - } - if (type.indexOf(":") > -1) { + return "document-16"; + } else if (node.isNodeType(HippoNodeType.NT_DOCUMENT)) { + Node parent = node.getParent(); + if (parent != null && parent.isNodeType(HippoNodeType.NT_HANDLE)) { return "document-16"; } } + + String type = node.getPrimaryNodeType().getName(); if (type.equals("hippo:templatetype")) { return "document-16"; } Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -165,7 +165,7 @@ try { editor.close(); } catch (EditorException ex) { - log.info("Failed to close editor", ex); + log.info("Failed to close editor: " + ex.getMessage()); } } Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -411,6 +411,13 @@ UserSession session = (UserSession) org.apache.wicket.Session.get(); if (session != null) { + try { + session.getJcrSession().refresh(true); + } catch (RepositoryException ex) { + log.error("failed to refresh the session", ex); + return; + } + // copy set of listeners; don't synchronize on map while notifying observers // as it may need to be modified as a result of the event. Set> set; Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDialog.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDialog.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDialog.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -273,8 +273,10 @@ } public void render(PluginRequestTarget target) { - target.addComponent(feedback); - target.addComponent(ok); + if (target != null) { + target.addComponent(feedback); + target.addComponent(ok); + } } public void onClose() { Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrItemModel.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrItemModel.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrItemModel.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -60,16 +60,6 @@ } public String getPath() { - if (path == null && isAttached()) { - Item item = (Item) getObject(); - if (item != null) { - try { - path = item.getPath(); - } catch (RepositoryException e) { - log.error(e.getMessage()); - } - } - } return path; } @@ -140,11 +130,15 @@ @Override public void detach() { - if (isAttached()) { + if (isAttached() && path != null) { Item item = (Item) getObject(); if (item != null) { try { - path = item.getPath(); + if (!path.equals(item.getPath())) { + super.detach(); + throw new RuntimeException( + "JcrItemModel path is different from Item path. Model should no longer be used"); + } } catch (RepositoryException ex) { log.error(ex.getMessage()); } @@ -156,6 +150,7 @@ private void writeObject(ObjectOutputStream output) throws IOException { if (isAttached()) { log.warn("Undetached JcrItemModel " + getPath()); + detach(); } output.defaultWriteObject(); } Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrNodeModel.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrNodeModel.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrNodeModel.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -15,7 +15,9 @@ */ package org.hippoecm.frontend.model; +import javax.jcr.ItemNotFoundException; import javax.jcr.Node; +import javax.jcr.RepositoryException; import javax.jcr.observation.Event; import org.apache.commons.lang.builder.EqualsBuilder; @@ -25,6 +27,7 @@ import org.hippoecm.frontend.model.event.IObservable; import org.hippoecm.frontend.model.event.IObservationContext; import org.hippoecm.frontend.model.event.JcrEventListener; +import org.hippoecm.repository.api.HippoNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,16 +88,63 @@ return result; } + public boolean isVirtual() { + Node node = getNode(); + if (node == null || !(node instanceof HippoNode)) { + return false; + } + try { + HippoNode hippoNode = (HippoNode) node; + Node canonical = hippoNode.getCanonicalNode(); + if (canonical == null) { + return true; + } + return !canonical.isSame(hippoNode); + } catch (ItemNotFoundException e) { + // canonical node no longer exists + return true; + } catch (RepositoryException e) { + log.error(e.getMessage(), e); + return false; + } + } + // implement IObservable + protected String getObservablePath() { + Node node = getNode(); + if (node != null) { + try { + if (!(node instanceof HippoNode)) { + return node.getPath(); + } + + HippoNode hippoNode = (HippoNode) node; + Node canonical = hippoNode.getCanonicalNode(); + if (canonical != null) { + return canonical.getPath(); + } + } catch (RepositoryException e) { + log.error(e.getMessage(), e); + } + } + return null; + } + public void setObservationContext(IObservationContext context) { this.context = context; } public void startObservation() { if (itemModel.getObject() != null) { - listener = new JcrEventListener(context, Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED | - Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED, itemModel.getPath(), false, null, null); + String path = getObservablePath(); + if (path != null) { + listener = new JcrEventListener(context, Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED + | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED, path, false, null, null); + } else { + // virtual tree + listener = new JcrEventListener(context, Event.NODE_ADDED | Event.NODE_REMOVED, "/", true, null, null); + } listener.start(); } else { log.debug("skipping observation for null node"); Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/WorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/WorkflowPlugin.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/WorkflowPlugin.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -136,12 +136,13 @@ // unregister and re-register; observer model is changed if (workflowsModel != null) { context.unregisterService(this, IObserver.class.getName()); + workflowsModel = null; } if (model == null || model.getNode() == null) { return; } - + try { List cats = new LinkedList(); for (String category : categories) { Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -15,6 +15,7 @@ */ package org.hippoecm.frontend.widgets; +import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.swing.tree.TreeModel; @@ -128,7 +129,10 @@ if (canonical == null) { return true; } - return !hippoNode.getCanonicalNode().isSame(hippoNode); + return !canonical.isSame(hippoNode); + } catch (ItemNotFoundException e) { + // canonical node no longer exists + return true; } catch (RepositoryException e) { log.error(e.getMessage(), e); return false; Added: hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java (rev 0) +++ hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -0,0 +1,86 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend; + +import java.net.MalformedURLException; +import java.rmi.RemoteException; + +import javax.jcr.RepositoryException; + +import org.hippoecm.repository.HippoRepository; +import org.hippoecm.repository.HippoRepositoryFactory; +import org.hippoecm.repository.HippoRepositoryServer; +import org.hippoecm.repository.TestCase; +import org.junit.internal.runners.InitializationError; +import org.junit.runner.RunWith; +import org.junit.runner.notification.RunNotifier; +import org.junit.runners.Suite; + +@RunWith(RemoteSPITest.class) +@Suite.SuiteClasses({ + org.hippoecm.frontend.model.event.ObservationTest.class +}) +public class RemoteSPITest extends Suite +{ + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + public RemoteSPITest(Class klass) throws InitializationError { + super(klass); + } + + protected RemoteSPITest(Class klass, Class[] annotatedClasses) throws InitializationError { + super(klass, annotatedClasses); + } + + @Override + public void run(final RunNotifier notifier) { + HippoRepositoryServer backgroundServer = null; + HippoRepository server = null; + try { + backgroundServer = new HippoRepositoryServer(); + backgroundServer.run(true); + Thread.sleep(3000); + server = HippoRepositoryFactory.getHippoRepository("rmi://localhost:1099/hipporepository/spi"); + TestCase.setRepository(server); + + super.run(notifier); + + } catch(RepositoryException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(RemoteException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(java.rmi.AlreadyBoundException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(InterruptedException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch (MalformedURLException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } finally { + if (server != null) { + server.close(); + } + if (backgroundServer != null) { + backgroundServer.close(); + } + } + } +} Modified: hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/editor/NodeTypesEditor.java =================================================================== --- hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/editor/NodeTypesEditor.java 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/editor/NodeTypesEditor.java 2009-03-18 14:50:41 UTC (rev 16998) @@ -22,8 +22,9 @@ import java.util.List; import java.util.Set; +import javax.jcr.Node; import javax.jcr.RepositoryException; -import javax.jcr.nodetype.NodeType; +import javax.jcr.Value; import javax.jcr.nodetype.NodeTypeIterator; import javax.jcr.nodetype.NodeTypeManager; @@ -70,7 +71,7 @@ public void onModelChanged() { } - + @Override protected boolean wantOnSelectionChangedNotifications() { return true; @@ -80,24 +81,28 @@ protected void onSelectionChanged(Collection selection) { if (getModelObject() instanceof List && nodeModel != null) { try { + Node node = nodeModel.getNode(); + Set actualTypes = new HashSet(); - NodeType[] nodeTypes = nodeModel.getNode().getMixinNodeTypes(); - for (NodeType nodeType : nodeTypes) { - actualTypes.add(nodeType.getName()); + if (node.hasProperty("jcr:mixinTypes")) { + Value[] nodeTypes = node.getProperty("jcr:mixinTypes").getValues(); + for (Value nodeType : nodeTypes) { + actualTypes.add(nodeType.getString()); + } } HashSet toBeAdded = new HashSet(selection); toBeAdded.removeAll(actualTypes); - for (String add : new ArrayList(toBeAdded)){ - nodeModel.getNode().addMixin(add); + for (String add : new ArrayList(toBeAdded)) { + node.addMixin(add); } actualTypes.removeAll(new HashSet(selection)); - for (String remove : new ArrayList(actualTypes)){ - nodeModel.getNode().removeMixin(remove); + for (String remove : new ArrayList(actualTypes)) { + node.removeMixin(remove); } } catch (RepositoryException e) { - log.error(e.getMessage()); + log.error(e.getMessage(), e); } } } Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-folder-views.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-folder-views.xml 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-folder-views.xml 2009-03-18 14:50:41 UTC (rev 16998) @@ -908,32 +908,6 @@ - - - frontend:pluginconfig - - - - - - - - - - - - hippo:facetsearch - - - - - - false - - - - - frontend:pluginconfig @@ -1386,6 +1360,57 @@ + + + frontend:plugincluster + + + wicket.id + + + model.folder + model.document + + + list.page.size + list.view.size + + + 20 + + + 3 + + + + frontend:plugin + + + org.hippoecm.frontend.plugins.cms.browse.list.FacetSearchListingPlugin + + + ${wicket.id} + + + ${model.folder} + + + ${model.document} + + + ${list.page.size} + + + ${list.view.size} + + + + frontend:pluginconfig + + + + + frontend:plugincluster Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml 2009-03-18 14:50:41 UTC (rev 16998) @@ -471,7 +471,7 @@ service.dialog.breadcrumb - ${cluster.id}.model.folder + ${wicket.model} ${wicket.model.folder} Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml 2009-03-18 14:50:41 UTC (rev 16998) @@ -185,7 +185,7 @@ - + frontend:pluginconfig @@ -199,7 +199,7 @@ - hippo:facetsearch + hippo:facetresult Modified: hippo-ecm/trunk/quickstart/war/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-18 14:03:45 UTC (rev 16997) +++ hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-18 14:50:41 UTC (rev 16998) @@ -278,10 +278,17 @@ org.hippoecm + hippo-ecm-addon-defaultcontent-frontend + 2.05.00-SNAPSHOT + jar + + + org.hippoecm hippo-ecm-addon-defaultcontent-repository 2.05.01-SNAPSHOT jar +
    From helpdesk at onehippo.com Wed Mar 18 15:51:06 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Wed Mar 18 15:50:13 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2302) Create doclisting that mimics handles for variants of documents In-Reply-To: <7268583.1235990463781.JavaMail.jira@hat01> Message-ID: <16694896.1237387866074.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2302. ----------------------------------------- Resolution: Fixed The FacetSearchPlugin/FacetSearchProvider combination realizes this. > Create doclisting that mimics handles for variants of documents > --------------------------------------------------------------- > > Key: HREPTWO-2302 > URL: http://issues.onehippo.com/browse/HREPTWO-2302 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Frank van Lankvelt > Assignee: Frank van Lankvelt > Fix For: r2.05.01 (m12 - update) > > Original Estimate: 3 days > Remaining Estimate: 3 days > > Create a document listing for a virtual (facetsearch) listing that collapses variants of the same document onto one entry in the list. It should be possible to display (and execute) the applicable workflows for the set of documents. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 18 15:53:06 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Wed Mar 18 15:52:17 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2280) Faceted browsing prototype In-Reply-To: <30751132.1235056623652.JavaMail.jira@hat01> Message-ID: <7197848.1237387986154.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2280?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2280. ----------------------------------------- Resolution: Fixed Is available to interested developers. > Faceted browsing prototype > -------------------------- > > Key: HREPTWO-2280 > URL: http://issues.onehippo.com/browse/HREPTWO-2280 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Arje Cahn > Assignee: Arje Cahn > Fix For: r2.05.01 (m12 - update) > > Original Estimate: 1 day > Remaining Estimate: 1 day > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 18 15:53:06 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Wed Mar 18 15:52:21 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2296) Create folder tree plugin for "faceted" tree In-Reply-To: <14693458.1235989983715.JavaMail.jira@hat01> Message-ID: <8428159.1237387986119.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2296. ----------------------------------------- Resolution: Fixed Turned out not to be necessary. > Create folder tree plugin for "faceted" tree > -------------------------------------------- > > Key: HREPTWO-2296 > URL: http://issues.onehippo.com/browse/HREPTWO-2296 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Frank van Lankvelt > Assignee: Frank van Lankvelt > Fix For: r2.05.01 (m12 - update) > > Original Estimate: 3 days > Remaining Estimate: 3 days > > The read-only, "faceted", view on the documents in the repository should get its own section in the accordeon in the browse perspective. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 18 15:53:06 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Wed Mar 18 15:52:28 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2330) Use hippostd:taggable in defaultcontent In-Reply-To: <8248412.1237197800659.JavaMail.jira@jira.onehippo.org> Message-ID: <4487382.1237387986182.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2330. ----------------------------------------- Resolution: Fixed Fixed, but is optional. I.e. the mixin isn't always present. It can now be set on documents of the article type. > Use hippostd:taggable in defaultcontent > --------------------------------------- > > Key: HREPTWO-2330 > URL: http://issues.onehippo.com/browse/HREPTWO-2330 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: Frank van Lankvelt > Assignee: Frank van Lankvelt > Fix For: r2.05.01 (m12 - update) > > Original Estimate: 2 days > Remaining Estimate: 2 days > > To be able to create a faceted tree, a facet needs to be defined. Any will do, but it's probably easiest to just reuse the hippostd:taggable one. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Wed Mar 18 16:59:03 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Wed Mar 18 16:57:46 2009 Subject: [HippoRepos-dev] [16999] hippo-ecm: HREPTWO-16: reset version number of pom Message-ID: <20090318155903.DB0B8C58B@svnnew.onehippo.org> Revision: 16999 Author: bvanhalderen Date: 2009-03-18 16:59:03 +0100 (Wed, 18 Mar 2009) Log Message: ----------- HREPTWO-16: reset version number of pom Modified Paths: -------------- hippo-ecm/trunk/addon/defaultcontent/frontend/pom.xml Modified: hippo-ecm/trunk/addon/defaultcontent/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/defaultcontent/frontend/pom.xml 2009-03-18 14:50:41 UTC (rev 16998) +++ hippo-ecm/trunk/addon/defaultcontent/frontend/pom.xml 2009-03-18 15:59:03 UTC (rev 16999) @@ -18,7 +18,7 @@ org.hippoecm hippo-ecm-addon-defaultcontent - 2.05.00-SNAPSHOT + 2.05.01-SNAPSHOT Defaultcontent frontend addon From svn-logs at hippocms.org Wed Mar 18 17:00:15 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Wed Mar 18 16:58:58 2009 Subject: [HippoRepos-dev] [17000] hippo-ecm: HREPTWO-16: correct version number Message-ID: <20090318160016.0A0FBC17E@svnnew.onehippo.org> Revision: 17000 Author: bvanhalderen Date: 2009-03-18 17:00:15 +0100 (Wed, 18 Mar 2009) Log Message: ----------- HREPTWO-16: correct version number Modified Paths: -------------- hippo-ecm/trunk/quickstart/war/pom.xml Modified: hippo-ecm/trunk/quickstart/war/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-18 15:59:03 UTC (rev 16999) +++ hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-18 16:00:15 UTC (rev 17000) @@ -279,7 +279,7 @@ org.hippoecm hippo-ecm-addon-defaultcontent-frontend - 2.05.00-SNAPSHOT + 2.05.01-SNAPSHOT jar From svn-logs at hippocms.org Thu Mar 19 08:25:26 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Thu Mar 19 08:24:13 2009 Subject: [HippoRepos-dev] [17005] hippo-ecm/trunk: HREPTWO-812: refactoring work in progress to remove WorkflowsModel, make edit cycle functional Message-ID: <20090319072527.03C4CC17E@svnnew.onehippo.org> Revision: 17005 Author: bvanhalderen Date: 2009-03-19 08:25:20 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-812: refactoring work in progress to remove WorkflowsModel, make edit cycle functional Modified Paths: -------------- hippo-ecm/trunk/addon/builtin/frontend/pom.xml hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/EditmodelWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderShortcutPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NamespaceWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NullWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RemodelWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelDialog.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelWizard$Step1.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ReorderDialog.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicRequestWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/CancelWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.html hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullRequestWorkflowPlugin.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDescriptorModel.java Removed Paths: ------------- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin$DeleteDialog.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin$DeleteDialog_nl.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin_nl.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowDialog.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog_nl.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog_nl.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog_nl.properties hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractNameDialog.html hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractNameDialog.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.html hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.properties hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/WorkflowsModel.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/EmbedWorkflowPlugin.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/WorkflowPlugin.java Modified: hippo-ecm/trunk/addon/builtin/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/pom.xml 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/pom.xml 2009-03-19 07:25:20 UTC (rev 17005) @@ -54,6 +54,11 @@ hippo-ecm-addon-standards-frontend 2.05.01-SNAPSHOT + + org.hippoecm + hippo-ecm-addon-workflow + 2.05.01-SNAPSHOT +
    Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -33,32 +33,43 @@ import org.apache.wicket.Component; import org.apache.wicket.Session; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.DropDownChoice; +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.markup.html.panel.EmptyPanel; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.IDataProvider; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.AbstractDialog; import org.hippoecm.frontend.dialog.DialogAction; import org.hippoecm.frontend.dialog.DialogLink; import org.hippoecm.frontend.dialog.IDialogFactory; import org.hippoecm.frontend.i18n.model.NodeTranslator; +import org.hippoecm.frontend.i18n.types.TypeChoiceRenderer; +import org.hippoecm.frontend.model.JcrItemModel; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.service.IBrowseService; import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.service.ServiceException; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.frontend.widgets.AbstractView; +import org.hippoecm.frontend.widgets.TextFieldWidget; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.MappingException; +import org.hippoecm.repository.api.NodeNameCodec; import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.standardworkflow.EditableWorkflow; @@ -66,7 +77,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public abstract class AbstractFolderWorkflowPlugin extends AbstractWorkflowPlugin { +public abstract class AbstractFolderWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; @@ -135,13 +146,13 @@ @Override public void onModelChanged() { super.onModelChanged(); - WorkflowsModel model = (WorkflowsModel) AbstractFolderWorkflowPlugin.this.getModel(); + WorkflowDescriptorModel model = (WorkflowDescriptorModel) AbstractFolderWorkflowPlugin.this.getModel(); WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - if (model.getNodeModel() != null) { - folderName.setModel(new NodeTranslator(model.getNodeModel()).getNodeName()); + try { + if (model.getNode() != null) { + folderName.setModel(new NodeTranslator(new JcrNodeModel(model.getNode())).getNodeName()); } - try { - Workflow workflow = manager.getWorkflow(model.getWorkflowDescriptor()); + Workflow workflow = manager.getWorkflow((WorkflowDescriptor)model.getObject()); if (workflow instanceof FolderWorkflow) { FolderWorkflow folderWorkflow = (FolderWorkflow) workflow; initializeTemplates(folderWorkflow.list()); @@ -268,10 +279,9 @@ public AbstractDialog createDialog() { if (category.contains("New Smart Folder")) // FIXME very bad check on name - return new FolderWorkflowExtendedDialog(AbstractFolderWorkflowPlugin.this, title, category, - prototypes); + return new FolderWorkflowExtendedDialog(title, category, prototypes); else - return new FolderWorkflowDialog(AbstractFolderWorkflowPlugin.this, title, category, prototypes); + return new FolderWorkflowDialog(title, category, prototypes); } }, getDialogService()); @@ -303,4 +313,211 @@ return prototypes; } } + +public class FolderWorkflowDialog extends CompatibilityWorkflowPlugin.Dialog { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + private String category; + private Set prototypes; + private String prototype; + private String name; + private IModel title; + + public FolderWorkflowDialog(IModel title, String category, Set prototypes) { + super(); + this.title = title; + this.category = category; + this.prototypes = prototypes; + + TextField text = new TextField("name", new PropertyModel(this, "name")); + text.setRequired(true); + add(text); + + Label typelabel = new Label("typelabel", new StringResourceModel("document-type", this, null)); + add(typelabel); + + if (prototypes.size() > 1) { + + final List prototypesList = new LinkedList(prototypes); + DropDownChoice folderChoice; + add(folderChoice = new DropDownChoice("prototype", new PropertyModel(this, "prototype"), prototypesList, + new TypeChoiceRenderer(this))); + folderChoice.setNullValid(false); + folderChoice.setRequired(true); + + // while not a prototype chosen, disable ok button + Component notypes; + add(notypes = new EmptyPanel("notypes")); + notypes.setVisible(false); + + } else if (prototypes.size() == 1) { + Component component; + add(component = new EmptyPanel("prototype")); + component.setVisible(false); + prototype = prototypes.iterator().next(); + Component notypes; + add(notypes = new EmptyPanel("notypes")); + notypes.setVisible(false); + typelabel.setVisible(false); + } else { + // if the folderWorkflowPlugin.templates.get(category).size() = 0 you cannot add this + // category currently. + Component component; + add(component = new EmptyPanel("prototype")); + component.setVisible(false); + prototype = null; + add(new Label("notypes", "There are no types available for : [" + category + + "] First create document types please.")); + text.setVisible(false); + typelabel.setVisible(false); + } + } + + public IModel getTitle() { + return title; + } + + @Override + protected String execute() { + try { + FolderWorkflow workflow = (FolderWorkflow) getWorkflow(); + if (prototype == null) { + throw new IllegalArgumentException("You need to select a type"); + } + if (name == null || "".equals(name)) { + throw new IllegalArgumentException("You need to enter a name"); + } + if (workflow != null) { + if (!prototypes.contains(prototype)) { + log.error("unknown folder type " + prototype); + return "Unknown folder type " + prototype; + } + String path = workflow.add(category, prototype, NodeNameCodec.encode(name, true)); + + ((UserSession) Session.get()).getJcrSession().refresh(true); + + JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); + select(nodeModel); + } else { + log.error("no workflow defined on model for selected node"); + } + } catch(Exception ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } + return null; + } } + +public class FolderWorkflowExtendedDialog extends CompatibilityWorkflowPlugin.Dialog { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + private Set prototypes; + private String category; + private String prototype; + private String name; + private String docbase; + private String facet; + private String value; + private IModel title; + + public FolderWorkflowExtendedDialog(IModel title, + String category, Set prototypes) { + super(); + this.title = title; + this.category = category; + this.prototypes = prototypes; + + add(new TextFieldWidget("name", new PropertyModel(this, "name")) { + private static final long serialVersionUID = 1L; + + @Override + protected void onUpdate(AjaxRequestTarget target) { + enableButtons(); + } + }); + add(new TextFieldWidget("docbase", new PropertyModel(this, "docbase"))); + add(new TextFieldWidget("facet", new PropertyModel(this, "facet"))); + add(new TextFieldWidget("value", new PropertyModel(this, "value"))); + + if (prototypes.size() > 1) { + DropDownChoice folderChoice; + add(folderChoice = new DropDownChoice("prototype", new PropertyModel(this, "prototype"), + new LinkedList(prototypes))); + folderChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") { + private static final long serialVersionUID = 1L; + + @Override + public void onUpdate(AjaxRequestTarget target) { + enableButtons(); + } + }); + + folderChoice.setNullValid(false); + folderChoice.setRequired(true); + } else if (prototypes.size() == 1) { + Component component; + add(component = new EmptyPanel("prototype")); + component.setVisible(false); + prototype = prototypes.iterator().next(); + } else { + Component component; + add(component = new EmptyPanel("prototype")); + component.setVisible(false); + prototype = null; + } + + enableButtons(); + } + + public IModel getTitle() { + return title; + } + + private void enableButtons() { + try { + WorkflowDescriptorModel model = (WorkflowDescriptorModel) getModel(); + ok.setEnabled(model.getNode() != null && prototype != null && name != null && !"".equals(name)); + }catch(RepositoryException ex) { + } + } + + @Override + protected String execute() { + try { + FolderWorkflow workflow = (FolderWorkflow) getWorkflow(); + if (workflow != null) { + if (!prototypes.contains(prototype)) { + log.error("unknown folder type " + prototype); + return "unknown folder type " + prototype; + } + Map arguments = new TreeMap(); + arguments.put("name", NodeNameCodec.encode(name, true)); + String path = (docbase.startsWith("/") ? docbase.substring(1) : docbase); + arguments.put("docbase", ((UserSession) Session.get()).getJcrSession().getRootNode().getNode(path) + .getUUID()); + arguments.put("facet", facet); + arguments.put("value", value); + path = workflow.add(category, prototype, arguments); + + ((UserSession) Session.get()).getJcrSession().refresh(true); + + JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); + select(nodeModel); + } else { + log.error("no workflow defined on model for selected node"); + } + return null; + } catch(Exception ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } + } + +} + +} Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/EditmodelWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/EditmodelWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/EditmodelWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -15,11 +15,16 @@ */ package org.hippoecm.frontend.plugins.standardworkflow; +import java.rmi.RemoteException; import javax.jcr.Node; import javax.jcr.RepositoryException; import org.apache.wicket.Session; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.AbstractDialog; import org.hippoecm.frontend.dialog.DialogLink; import org.hippoecm.frontend.dialog.IDialogFactory; @@ -27,17 +32,20 @@ import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; -import org.hippoecm.frontend.plugins.standardworkflow.dialogs.CopyModelDialog; +import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditorManager; +import org.hippoecm.frontend.service.IRenderService; +import org.hippoecm.frontend.service.ServiceException; import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.frontend.widgets.TextFieldWidget; import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.standardworkflow.EditmodelWorkflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class EditmodelWorkflowPlugin extends AbstractWorkflowPlugin { +public class EditmodelWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -86,8 +94,80 @@ private static final long serialVersionUID = 1L; public AbstractDialog createDialog() { - return new CopyModelDialog(EditmodelWorkflowPlugin.this); + return new CopyModelDialog(); } }, getDialogService())); } + +public class CopyModelDialog extends CompatibilityWorkflowPlugin.Dialog { + private static final long serialVersionUID = 1L; + + private String name; + + public CopyModelDialog() { + super(); + + WorkflowDescriptorModel wflModel = (WorkflowDescriptorModel) EditmodelWorkflowPlugin.this.getModel(); + try { + if (wflModel.getNode() == null) { + ok.setEnabled(false); + } + } catch(RepositoryException ex) { + log.error(ex.getMessage(), ex); + ok.setEnabled(false); + } + + try { + name = wflModel.getNode().getName(); + } catch (RepositoryException ex) { + log.error(ex.getMessage()); + } + + add(new TextFieldWidget("name", new PropertyModel(this, "name"))); + } + + @Override + protected String execute() { + try { + EditmodelWorkflow workflow = (EditmodelWorkflow) getWorkflow(); + if (workflow != null) { + String path = workflow.copy(name); + ((UserSession) Session.get()).getJcrSession().refresh(true); + + JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); + if (path != null) { + IPluginContext context = EditmodelWorkflowPlugin.this.getPluginContext(); + IPluginConfig config = EditmodelWorkflowPlugin.this.getPluginConfig(); + + IEditorManager editService = context.getService(config.getString(IEditorManager.EDITOR_ID), + IEditorManager.class); + IEditor editor = editService.openEditor(nodeModel); + IRenderService renderer = context.getService(context.getReference(editor).getServiceId(), + IRenderService.class); + if (renderer != null) { + renderer.focus(null); + } + } else { + log.error("no model found to edit"); + } + } else { + log.error("no workflow defined on model for selected node"); + } + } catch(WorkflowException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(ServiceException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(RemoteException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(RepositoryException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } + return null; + } + + public IModel getTitle() { + return new StringResourceModel("copy-model", this, null); + } + } +} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin$DeleteDialog.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin$DeleteDialog.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin$DeleteDialog.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -delete-label: Delete item \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin$DeleteDialog_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin$DeleteDialog_nl.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin$DeleteDialog_nl.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -delete-label: Verwijder object \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.html 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.html 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,27 +0,0 @@ - - - -
    -

    Item

    -
      -
    • - Delete -
    • -
    -
    -
    - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,97 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; - -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; -import org.hippoecm.frontend.dialog.DialogLink; -import org.hippoecm.frontend.dialog.IDialogFactory; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -import org.hippoecm.frontend.plugin.workflow.EmbedWorkflowPlugin; -import org.hippoecm.repository.standardworkflow.FolderWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class FolderEmbeddedWorkflowPlugin extends AbstractWorkflowPlugin { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - private static final long serialVersionUID = 1L; - transient Logger log = LoggerFactory.getLogger(FolderEmbeddedWorkflowPlugin.class); - - String item; - - public FolderEmbeddedWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); - item = (String) config.get(EmbedWorkflowPlugin.ITEM_ID); - - add(new DialogLink("delete-dialog", new StringResourceModel("delete", this, null), new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - return new DeleteDialog(FolderEmbeddedWorkflowPlugin.this); - } - }, getDialogService())); - - - //add(new Label("move-dialog", "move")); - //add(new Label("rename-dialog", "rename")); - //add(new Label("duplicate-dialog", "duplicate")); - } - - private void writeObject(ObjectOutputStream out) - throws IOException { - out.defaultWriteObject(); - } - - private void readObject(ObjectInputStream in) - throws IOException, ClassNotFoundException { - in.defaultReadObject(); - log = LoggerFactory.getLogger(FolderEmbeddedWorkflowPlugin.class); - } - - class DeleteDialog extends AbstractWorkflowDialog { - private static final long serialVersionUID = 1L; - - public DeleteDialog(FolderEmbeddedWorkflowPlugin plugin) { - super(plugin); - - WorkflowsModel wflModel = (WorkflowsModel) plugin.getModel(); - if (wflModel.getNodeModel().getNode() == null) { - ok.setVisible(false); - } - } - - @Override - protected void execute() throws Exception { - FolderWorkflow workflow = (FolderWorkflow) getWorkflow(); - workflow.delete(item); - } - - public IModel getTitle() { - return new StringResourceModel("delete-label", this, null); - } - } -} - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -delete: Delete \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin_nl.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderEmbeddedWorkflowPlugin_nl.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -delete: Verwijder \ No newline at end of file Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderShortcutPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderShortcutPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderShortcutPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -36,12 +36,12 @@ import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.AbstractDialog; import org.hippoecm.frontend.dialog.IDialogService; import org.hippoecm.frontend.i18n.types.TypeChoiceRenderer; import org.hippoecm.frontend.model.JcrItemModel; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.IServiceReference; import org.hippoecm.frontend.plugin.config.IPluginConfig; @@ -57,6 +57,7 @@ import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.NodeNameCodec; import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.standardworkflow.EditableWorkflow; @@ -203,12 +204,13 @@ String workflowCategory = config.getString("gallery.workflow"); Session jcrSession = ((UserSession) org.apache.wicket.Session.get()).getJcrSession(); + WorkflowDescriptor folderWorkflowDescriptor = null; try { WorkflowManager manager = ((HippoWorkspace) (jcrSession.getWorkspace())).getWorkflowManager(); - Workflow workflow = (folder != null ? manager.getWorkflow(workflowCategory, folder) : null); + folderWorkflowDescriptor = (folder != null ? manager.getWorkflowDescriptor(workflowCategory, folder) : null); + Workflow workflow = (folderWorkflowDescriptor != null ? manager.getWorkflow(folderWorkflowDescriptor) : null); if (workflow instanceof FolderWorkflow) { - FolderWorkflow folderWorkflow = (FolderWorkflow) workflow; - templates = folderWorkflow.list(); + templates = ((FolderWorkflow) workflow).list(); } else { folder = jcrSession.getRootNode().getNode( defaultFolder.startsWith("/") ? defaultFolder.substring(1) : defaultFolder); @@ -297,11 +299,9 @@ categoryChoice.setOutputMarkupId(true); ok.setEnabled(false); - if (folder != null) { + if (folder != null && folderWorkflowDescriptor != null) { try { - List categories = new LinkedList(); - categories.add(workflowCategory); - setModel(new WorkflowsModel(new JcrNodeModel(folder), categories)); + setModel(new WorkflowDescriptorModel(folderWorkflowDescriptor, workflowCategory, folder)); ok.setEnabled(true); } catch (RepositoryException ex) { setModel(null); @@ -367,11 +367,10 @@ } try { IModel model = getModel(); - if (model != null && model instanceof WorkflowsModel) { + if (model != null && model instanceof WorkflowDescriptorModel) { Session jcrSession = ((UserSession) org.apache.wicket.Session.get()).getJcrSession(); WorkflowManager manager = ((HippoWorkspace) (jcrSession.getWorkspace())).getWorkflowManager(); - FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow(((WorkflowsModel) model) - .getWorkflowDescriptor()); + FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow((WorkflowDescriptor)((WorkflowDescriptorModel) model).getObject()); if (prototype == null) { error("You need to select a type"); return; Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,133 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow; - -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import org.apache.wicket.Component; -import org.apache.wicket.Session; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.panel.EmptyPanel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; -import org.hippoecm.frontend.i18n.types.TypeChoiceRenderer; -import org.hippoecm.frontend.model.JcrItemModel; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.repository.api.NodeNameCodec; -import org.hippoecm.repository.api.WorkflowException; -import org.hippoecm.repository.standardworkflow.FolderWorkflow; - -public class FolderWorkflowDialog extends AbstractWorkflowDialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private String category; - private Set prototypes; - private String prototype; - private String name; - private IModel title; - - public FolderWorkflowDialog(AbstractFolderWorkflowPlugin folderWorkflowPlugin, - IModel title, String category, Set prototypes) { - super(folderWorkflowPlugin); - this.title = title; - this.category = category; - this.prototypes = prototypes; - - TextField text = new TextField("name", new PropertyModel(this, "name")); - text.setRequired(true); - add(text); - - Label typelabel = new Label("typelabel", new StringResourceModel("document-type", this, null)); - add(typelabel); - - if (prototypes.size() > 1) { - - final List prototypesList = new LinkedList(prototypes); - DropDownChoice folderChoice; - add(folderChoice = new DropDownChoice("prototype", new PropertyModel(this, "prototype"), prototypesList, - new TypeChoiceRenderer(this))); - folderChoice.setNullValid(false); - folderChoice.setRequired(true); - - // while not a prototype chosen, disable ok button - Component notypes; - add(notypes = new EmptyPanel("notypes")); - notypes.setVisible(false); - - } else if (prototypes.size() == 1) { - Component component; - add(component = new EmptyPanel("prototype")); - component.setVisible(false); - prototype = prototypes.iterator().next(); - Component notypes; - add(notypes = new EmptyPanel("notypes")); - notypes.setVisible(false); - typelabel.setVisible(false); - } else { - // if the folderWorkflowPlugin.templates.get(category).size() = 0 you cannot add this - // category currently. - Component component; - add(component = new EmptyPanel("prototype")); - component.setVisible(false); - prototype = null; - add(new Label("notypes", "There are no types available for : [" + category - + "] First create document types please.")); - text.setVisible(false); - typelabel.setVisible(false); - } - } - - public IModel getTitle() { - return title; - } - - @Override - protected void execute() throws Exception { - FolderWorkflow workflow = (FolderWorkflow) getWorkflow(); - if (prototype == null) { - throw new IllegalArgumentException("You need to select a type"); - } - if (name == null || "".equals(name)) { - throw new IllegalArgumentException("You need to enter a name"); - } - if (workflow != null) { - AbstractFolderWorkflowPlugin folderWorkflowPlugin = (AbstractFolderWorkflowPlugin) getPlugin(); - if (!prototypes.contains(prototype)) { - log.error("unknown folder type " + prototype); - throw new WorkflowException("Unknown folder type " + prototype); - } - String path = workflow.add(category, prototype, NodeNameCodec.encode(name, true)); - - ((UserSession) Session.get()).getJcrSession().refresh(true); - - JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); - folderWorkflowPlugin.select(nodeModel); - } else { - log.error("no workflow defined on model for selected node"); - } - } - -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,141 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow; - -import java.util.LinkedList; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; - -import org.apache.wicket.Component; -import org.apache.wicket.Session; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.panel.EmptyPanel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; -import org.hippoecm.frontend.model.JcrItemModel; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.frontend.widgets.TextFieldWidget; -import org.hippoecm.repository.api.NodeNameCodec; -import org.hippoecm.repository.standardworkflow.FolderWorkflow; - -public class FolderWorkflowExtendedDialog extends AbstractWorkflowDialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private Set prototypes; - private String category; - private String prototype; - private String name; - private String docbase; - private String facet; - private String value; - private IModel title; - - public FolderWorkflowExtendedDialog(AbstractFolderWorkflowPlugin folderWorkflowPlugin, IModel title, - String category, Set prototypes) { - super(folderWorkflowPlugin); - this.title = title; - this.category = category; - this.prototypes = prototypes; - - add(new TextFieldWidget("name", new PropertyModel(this, "name")) { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - enableButtons(); - } - }); - add(new TextFieldWidget("docbase", new PropertyModel(this, "docbase"))); - add(new TextFieldWidget("facet", new PropertyModel(this, "facet"))); - add(new TextFieldWidget("value", new PropertyModel(this, "value"))); - - if (prototypes.size() > 1) { - DropDownChoice folderChoice; - add(folderChoice = new DropDownChoice("prototype", new PropertyModel(this, "prototype"), - new LinkedList(prototypes))); - folderChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") { - private static final long serialVersionUID = 1L; - - @Override - public void onUpdate(AjaxRequestTarget target) { - enableButtons(); - } - }); - - folderChoice.setNullValid(false); - folderChoice.setRequired(true); - } else if (prototypes.size() == 1) { - Component component; - add(component = new EmptyPanel("prototype")); - component.setVisible(false); - prototype = prototypes.iterator().next(); - } else { - Component component; - add(component = new EmptyPanel("prototype")); - component.setVisible(false); - prototype = null; - } - - enableButtons(); - } - - public IModel getTitle() { - return title; - } - - private void enableButtons() { - AbstractFolderWorkflowPlugin folderWorkflowPlugin = (AbstractFolderWorkflowPlugin) getPlugin(); - WorkflowsModel model = (WorkflowsModel) folderWorkflowPlugin.getModel(); - ok.setEnabled(model.getNodeModel().getNode() != null && prototype != null && name != null && !"".equals(name)); - } - - @Override - protected void execute() throws Exception { - FolderWorkflow workflow = (FolderWorkflow) getWorkflow(); - if (workflow != null) { - AbstractFolderWorkflowPlugin folderWorkflowPlugin = (AbstractFolderWorkflowPlugin) getPlugin(); - if (!prototypes.contains(prototype)) { - log.error("unknown folder type " + prototype); - return; - } - Map arguments = new TreeMap(); - arguments.put("name", NodeNameCodec.encode(name, true)); - String path = (docbase.startsWith("/") ? docbase.substring(1) : docbase); - arguments.put("docbase", ((UserSession) Session.get()).getJcrSession().getRootNode().getNode(path) - .getUUID()); - arguments.put("facet", facet); - arguments.put("value", value); - path = workflow.add(category, prototype, arguments); - - ((UserSession) Session.get()).getJcrSession().refresh(true); - - JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); - folderWorkflowPlugin.select(nodeModel); - } else { - log.error("no workflow defined on model for selected node"); - } - } - -} Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -17,17 +17,15 @@ import javax.jcr.Node; import javax.jcr.RepositoryException; - import org.apache.wicket.Component; import org.apache.wicket.Session; import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.AbstractNameDialog; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; import org.hippoecm.frontend.dialog.DialogAction; import org.hippoecm.frontend.dialog.IDialogFactory; -import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.session.UserSession; @@ -52,24 +50,29 @@ private static final long serialVersionUID = 1L; public AbstractDialog createDialog() { - return new AbstractWorkflowDialog(FolderWorkflowPlugin.this) { + return new CompatibilityWorkflowPlugin.Dialog() { @Override - protected void execute() throws Exception { + protected String execute() { + try { // FIXME: this assumes that folders are always embedded in other folders // and there is some logic here to look up the parent. The real solution is // in the visual component to merge two workflows. - WorkflowsModel model = (WorkflowsModel) FolderWorkflowPlugin.this.getModel(); - Node node = model.getNodeModel().getNode(); + WorkflowDescriptorModel model = (WorkflowDescriptorModel) FolderWorkflowPlugin.this.getModel(); + Node node = model.getNode(); WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow("embedded", node.getParent()); workflow.delete(node.getName() + "[" + node.getIndex() + "]"); + return null; + } catch(Exception ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } } public IModel getTitle() { StringResourceModel text; try { - Object[] params = new Object[] { ((WorkflowsModel) FolderWorkflowPlugin.this.getModel()) - .getNodeModel().getNode().getName() }; + Object[] params = new Object[] { ((WorkflowDescriptorModel) FolderWorkflowPlugin.this.getModel()) + .getNode().getName() }; text = new StringResourceModel("delete-message-extended", this, null, params); } catch (RepositoryException ex) { text = new StringResourceModel("delete-message", this, null); @@ -87,19 +90,24 @@ private static final long serialVersionUID = 1L; public AbstractDialog createDialog() { - return new AbstractNameDialog(FolderWorkflowPlugin.this, renameTitle, renameText, "") { + return new NameDialog(renameTitle, renameText, "") { private static final long serialVersionUID = 1L; @Override - protected void execute() throws Exception { + protected String execute() { + try { // FIXME: this assumes that folders are always embedded in other folders // and there is some logic here to look up the parent. The real solution is // in the visual component to merge two workflows. - WorkflowsModel model = (WorkflowsModel) FolderWorkflowPlugin.this.getModel(); - Node node = model.getNodeModel().getNode(); + WorkflowDescriptorModel model = (WorkflowDescriptorModel) FolderWorkflowPlugin.this.getModel(); + Node node = model.getNode(); WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow("embedded", node.getParent()); workflow.rename(node.getName() + "[" + node.getIndex() + "]", NodeNameCodec.encode(name, true)); + return null; + } catch(Exception ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } } }; } Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NamespaceWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NamespaceWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NamespaceWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -18,16 +18,20 @@ import java.util.LinkedList; import java.util.List; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.frontend.dialog.AbstractDialog; import org.hippoecm.frontend.dialog.DialogAction; import org.hippoecm.frontend.dialog.IDialogFactory; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -import org.hippoecm.frontend.plugins.standardworkflow.dialogs.NamespaceDialog; +import org.hippoecm.frontend.widgets.TextFieldWidget; +import org.hippoecm.repository.api.NodeNameCodec; +import org.hippoecm.repository.standardworkflow.TemplateEditorWorkflow; -public class NamespaceWorkflowPlugin extends AbstractWorkflowPlugin { +public class NamespaceWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -42,7 +46,7 @@ private static final long serialVersionUID = 1L; public AbstractDialog createDialog() { - return new NamespaceDialog(NamespaceWorkflowPlugin.this); + return new NamespaceDialog(); } }, getDialogService()); WorkflowActionComponent choice = new WorkflowActionComponent("createNamespaceRequest-dialog", @@ -52,4 +56,35 @@ add(new WorkflowActionComponentDropDownChoice("actions", actions)); } +public class NamespaceDialog extends CompatibilityWorkflowPlugin.Dialog { + private static final long serialVersionUID = 1L; + + private String prefix; + + private String url; + + public NamespaceDialog() { + super(); + + add(new TextFieldWidget("prefix", new PropertyModel(this, "prefix"))); + + add(new TextFieldWidget("url", new PropertyModel(this, "url"))); + } + + @Override + protected String execute() { + try { + TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) getWorkflow(); + workflow.createNamespace(NodeNameCodec.encode(prefix, true), url); + return null; + } catch(Exception ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } + } + + public IModel getTitle() { + return new StringResourceModel("create-namespace", this, null); + } } + +} Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NullWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NullWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NullWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -15,11 +15,11 @@ */ package org.hippoecm.frontend.plugins.standardworkflow; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -public class NullWorkflowPlugin extends AbstractWorkflowPlugin { +public class NullWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RemodelWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RemodelWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RemodelWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -18,22 +18,27 @@ import java.util.LinkedList; import java.util.List; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.frontend.dialog.AbstractDialog; import org.hippoecm.frontend.dialog.DialogAction; import org.hippoecm.frontend.dialog.IDialogFactory; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -import org.hippoecm.frontend.plugins.standardworkflow.dialogs.CreateTypeDialog; import org.hippoecm.frontend.plugins.standardworkflow.remodel.RemodelDialog; +import org.hippoecm.frontend.widgets.TextFieldWidget; +import org.hippoecm.repository.standardworkflow.TemplateEditorWorkflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class RemodelWorkflowPlugin extends AbstractWorkflowPlugin { +public class RemodelWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; + private static final Logger log = LoggerFactory.getLogger(RemodelWorkflowPlugin.class); + private static final long serialVersionUID = 1L; public RemodelWorkflowPlugin(IPluginContext context, IPluginConfig config) { @@ -57,7 +62,7 @@ private static final long serialVersionUID = 1L; public AbstractDialog createDialog() { - return new CreateTypeDialog(RemodelWorkflowPlugin.this); + return new CreateTypeDialog(); } }, getDialogService()); choice = new WorkflowActionComponent("createTypeRequest-dialog", new StringResourceModel("create-type", this, null), (String) null, action); @@ -65,4 +70,30 @@ add(new WorkflowActionComponentDropDownChoice("actions", actions)); } + +public class CreateTypeDialog extends CompatibilityWorkflowPlugin.Dialog { + private static final long serialVersionUID = 1L; + + private String name; + + public CreateTypeDialog() { + super(); + add(new TextFieldWidget("name", new PropertyModel(this, "name"))); + } + + @Override + protected String execute() { + try { + TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) getWorkflow(); + workflow.createType(name); + return null; + } catch(Exception ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } + } + + public IModel getTitle() { + return new StringResourceModel("create-type", this, null); + } } +} Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -21,6 +21,7 @@ import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; +import org.apache.wicket.Session; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.ajax.markup.html.form.AjaxButton; @@ -31,24 +32,25 @@ import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.AbstractDialog; import org.hippoecm.frontend.dialog.IDialogService; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditorFilter; import org.hippoecm.frontend.service.IValidateService; +import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.HippoSession; import org.hippoecm.repository.api.Workflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TemplateEditingWorkflowPlugin extends AbstractWorkflowPlugin implements IValidateService { +public class TemplateEditingWorkflowPlugin extends CompatibilityWorkflowPlugin implements IValidateService { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -79,8 +81,7 @@ public Object preClose() { try { - JcrNodeModel nodeModel = ((WorkflowsModel) getModel()).getNodeModel(); - Node node = nodeModel.getNode(); + Node node = ((WorkflowDescriptorModel) getModel()).getNode(); boolean dirty = node.isModified(); if (!dirty) { HippoSession session = (HippoSession) node.getSession(); @@ -131,23 +132,12 @@ } void doSave() throws Exception { - WorkflowsModel model = (WorkflowsModel) getModel(); - final JcrNodeModel nodeModel = model.getNodeModel(); - if (nodeModel.getNode() != null) { - nodeModel.getNode().getSession().save(); - } else { - log.error("Node does not exist"); - } + ((UserSession) Session.get()).getJcrSession().save(); } void doRevert() throws Exception { - WorkflowsModel model = (WorkflowsModel) TemplateEditingWorkflowPlugin.this.getModel(); - JcrNodeModel nodeModel = model.getNodeModel(); - if (nodeModel.getNode() != null) { - nodeModel.getNode().refresh(false); - } else { - log.error("Node does not exist"); - } + WorkflowDescriptorModel model = (WorkflowDescriptorModel) TemplateEditingWorkflowPlugin.this.getModel(); + model.getNode().refresh(false); } public boolean hasError() { @@ -161,7 +151,7 @@ validated = true; isvalid = true; try { - Node node = ((WorkflowsModel) getModel()).getNodeModel().getNode(); + Node node = ((WorkflowDescriptorModel) getModel()).getNode(); if (node.isNodeType(HippoNodeType.NT_TEMPLATETYPE)) { NodeIterator ntNodes = node.getNode(HippoNodeType.HIPPO_NODETYPE) .getNodes(HippoNodeType.HIPPO_NODETYPE); @@ -198,10 +188,6 @@ } } - JcrNodeModel getNodeModel() { - return ((WorkflowsModel) getModel()).getNodeModel(); - } - @Override protected void onModelChanged() { validated = false; @@ -251,8 +237,12 @@ } public IModel getTitle() { + try { return new StringResourceModel("close-document", this, null, new Object[] { new PropertyModel( - TemplateEditingWorkflowPlugin.this.getNodeModel(), "name") }, "Close {0}"); + ((WorkflowDescriptorModel)TemplateEditingWorkflowPlugin.this.getModel()).getNode(), "name") }, "Close {0}"); + } catch(RepositoryException ex) { + return new StringResourceModel("close-document", this, null, new Object[] { }); + } } } Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.html 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.html 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,20 +0,0 @@ - - - - - - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,99 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow.dialogs; - -import javax.jcr.RepositoryException; - -import org.apache.wicket.Session; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; -import org.hippoecm.frontend.model.JcrItemModel; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugins.standardworkflow.EditmodelWorkflowPlugin; -import org.hippoecm.frontend.service.IEditor; -import org.hippoecm.frontend.service.IEditorManager; -import org.hippoecm.frontend.service.IRenderService; -import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.frontend.widgets.TextFieldWidget; -import org.hippoecm.repository.standardworkflow.EditmodelWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class CopyModelDialog extends AbstractWorkflowDialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private static final Logger log = LoggerFactory.getLogger(CopyModelDialog.class); - - private String name; - - public CopyModelDialog(EditmodelWorkflowPlugin plugin) { - super(plugin); - - WorkflowsModel wflModel = (WorkflowsModel) getPlugin().getModel(); - if (wflModel.getNodeModel().getNode() == null) { - ok.setEnabled(false); - } - - try { - name = wflModel.getNodeModel().getNode().getName(); - } catch (RepositoryException ex) { - log.error(ex.getMessage()); - } - - add(new TextFieldWidget("name", new PropertyModel(this, "name"))); - } - - @Override - protected void execute() throws Exception { - EditmodelWorkflow workflow = (EditmodelWorkflow) getWorkflow(); - if (workflow != null) { - String path = workflow.copy(name); - ((UserSession) Session.get()).getJcrSession().refresh(true); - - JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); - if (path != null) { - IPluginContext context = getPlugin().getPluginContext(); - IPluginConfig config = getPlugin().getPluginConfig(); - - IEditorManager editService = context.getService(config.getString(IEditorManager.EDITOR_ID), - IEditorManager.class); - IEditor editor = editService.openEditor(nodeModel); - IRenderService renderer = context.getService(context.getReference(editor).getServiceId(), - IRenderService.class); - if (renderer != null) { - renderer.focus(null); - } - } else { - log.error("no model found to edit"); - } - } else { - log.error("no workflow defined on model for selected node"); - } - } - - public IModel getTitle() { - return new StringResourceModel("copy-model", this, null); - } - -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -copy-model: Copy document type \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog_nl.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CopyModelDialog_nl.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -copy-model: Kopieer document type \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.html 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.html 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,22 +0,0 @@ - - - -
      -
    • -
    -
    - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,54 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow.dialogs; - -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -import org.hippoecm.frontend.widgets.TextFieldWidget; -import org.hippoecm.repository.standardworkflow.TemplateEditorWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class CreateTypeDialog extends AbstractWorkflowDialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(CreateTypeDialog.class); - - private String name; - - public CreateTypeDialog(AbstractWorkflowPlugin plugin) { - super(plugin); - - add(new TextFieldWidget("name", new PropertyModel(this, "name"))); - } - - @Override - protected void execute() throws Exception { - TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) getWorkflow(); - workflow.createType(name); - } - - public IModel getTitle() { - return new StringResourceModel("create-type", this, null); - } -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,2 +0,0 @@ -create-type: Create new document type -name: Name \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog_nl.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/CreateTypeDialog_nl.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,2 +0,0 @@ -create-type: Maak nieuw document type aan -name: Naam \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.html 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.html 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,37 +0,0 @@ - - - - - - - - - - - - -
    - - - -
    - - - -
    -
    - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,59 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow.dialogs; - -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -import org.hippoecm.frontend.widgets.TextFieldWidget; -import org.hippoecm.repository.api.NodeNameCodec; -import org.hippoecm.repository.standardworkflow.TemplateEditorWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class NamespaceDialog extends AbstractWorkflowDialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(NamespaceDialog.class); - - private String prefix; - - private String url; - - public NamespaceDialog(AbstractWorkflowPlugin plugin) { - super(plugin); - - add(new TextFieldWidget("prefix", new PropertyModel(this, "prefix"))); - - add(new TextFieldWidget("url", new PropertyModel(this, "url"))); - } - - @Override - protected void execute() throws Exception { - TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) getWorkflow(); - workflow.createNamespace(NodeNameCodec.encode(prefix, true), url); - } - - public IModel getTitle() { - return new StringResourceModel("create-namespace", this, null); - } -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -create-namespace: Create new namespace Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog_nl.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/NamespaceDialog_nl.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -create-namespace: Maak nieuwe namespace aan \ No newline at end of file Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -25,39 +25,49 @@ import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.IDialogService; import org.hippoecm.frontend.model.JcrSessionModel; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugins.standardworkflow.export.CndSerializer; import org.hippoecm.frontend.plugins.standardworkflow.export.NamespaceUpdater; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.frontend.types.JcrTypeStore; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.NodeNameCodec; +import org.hippoecm.repository.api.WorkflowDescriptor; +import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.standardworkflow.TemplateEditorWorkflow; import org.hippoecm.repository.standardworkflow.TemplateEditorWorkflow.TypeUpdate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class RemodelDialog extends AbstractWorkflowDialog { +public class RemodelDialog extends CompatibilityWorkflowPlugin.Dialog { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; + private static final long serialVersionUID = 1L; + private static final Logger log = LoggerFactory.getLogger(RemodelDialog.class); private RemodelWizard wizard; + + private CompatibilityWorkflowPlugin plugin; - public RemodelDialog(AbstractWorkflowPlugin plugin) { - super(plugin); + public RemodelDialog(CompatibilityWorkflowPlugin plugin) { + plugin . super(); + this.plugin = plugin; - if (plugin.getModel() == null || ((WorkflowsModel) plugin.getModel()).getNodeModel().getNode() == null) { + try { + if (plugin.getModel() == null || ((WorkflowDescriptorModel) plugin.getModel()).getNode() == null) { add(new Label("wizard")); } else { wizard = new RemodelWizard("wizard"); add(wizard); } + } catch(RepositoryException ex) { + add(new Label("wizard")); + } ok.setVisible(false); cancel.setVisible(false); @@ -78,11 +88,12 @@ } @Override - protected void execute() throws Exception { + protected String execute() { + try { JcrSessionModel sessionModel = ((UserSession) Session.get()).getJcrSessionModel(); - WorkflowsModel wflModel = (WorkflowsModel) getPlugin().getModel(); - Node node = wflModel.getNodeModel().getNode(); + WorkflowDescriptorModel wflModel = (WorkflowDescriptorModel) plugin.getModel(); + Node node = wflModel.getNode(); String namespace = node.getName(); CndSerializer serializer = new CndSerializer(sessionModel, namespace); @@ -108,17 +119,14 @@ sessionModel.getSession().save(); - TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) getWorkflow(); + WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); + TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) manager.getWorkflow((WorkflowDescriptor) wflModel.getObject()); if (workflow != null) { log.info("remodelling namespace " + namespace); try { /* String[] nodes = */ workflow.updateModel(namespace, cnd, update); sessionModel.getSession().save(); - - // log out; the session model will log in again. - // Sessions cache path resolver information, which is incorrect after remapping the prefix. - sessionModel.flush(); } catch (RepositoryException ex) { // log out; the session model will log in again. // Sessions cache path resolver information, which is incorrect after remapping the prefix. @@ -129,5 +137,9 @@ } else { log.warn("no remodeling workflow available on selected node"); } + return null; + } catch(Exception ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } } } Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelWizard$Step1.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelWizard$Step1.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelWizard$Step1.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +1 @@ -message: Updating all content to match the updated types might take a long time and is irreversible. Are you sure you want to proceed? \ No newline at end of file +message: Updating all content to match the updated types might take a long time and is irreversible. Any other outstanding changes by you or by other users will be lost. Are you sure you want to proceed? Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ReorderDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ReorderDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ReorderDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -17,34 +17,42 @@ import javax.jcr.RepositoryException; +import org.apache.wicket.Session; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugins.standards.DocumentListFilter; +import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowDescriptor; +import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.standardworkflow.FolderWorkflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ReorderDialog extends AbstractWorkflowDialog { +public class ReorderDialog extends CompatibilityWorkflowPlugin.Dialog { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; + private static final long serialVersionUID = 1L; + private static final Logger log = LoggerFactory.getLogger(ReorderDialog.class); private ReorderPanel panel; + private CompatibilityWorkflowPlugin plugin; - public ReorderDialog(AbstractWorkflowPlugin plugin) { - super(plugin); + public ReorderDialog(CompatibilityWorkflowPlugin plugin) { + plugin . super(); + this.plugin = plugin; - JcrNodeModel folderModel = ((WorkflowsModel) plugin.getModel()).getNodeModel(); - panel = new ReorderPanel("reorder-panel", folderModel, new DocumentListFilter(plugin.getPluginConfig())); - add(panel); String name; try { + JcrNodeModel folderModel = new JcrNodeModel(((WorkflowDescriptorModel) plugin.getModel()).getNode()); + panel = new ReorderPanel("reorder-panel", folderModel, new DocumentListFilter(plugin.getPluginConfig())); + add(panel); name = folderModel.getNode().getName(); } catch (RepositoryException e) { log.error(e.getMessage(), e); @@ -58,9 +66,15 @@ } @Override - protected void execute() throws Exception { - FolderWorkflow workflow = (FolderWorkflow) getWorkflow(); - workflow.reorder(panel.getMapping()); + protected String execute() { + try { + WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); + FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow((WorkflowDescriptor) plugin.getModelObject()); + workflow.reorder(panel.getMapping()); + return null; + } catch(Exception ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } } } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -25,11 +25,10 @@ import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.ResourceModel; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.frontend.widgets.AjaxDateTimeField; -public abstract class AbstractDateDialog extends AbstractWorkflowDialog { +public abstract class AbstractDateDialog extends CompatibilityWorkflowPlugin.Dialog { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -39,8 +38,8 @@ protected Button now; - public AbstractDateDialog(AbstractWorkflowPlugin workflowPlugin, IModel question, Date date) { - super(workflowPlugin); + public AbstractDateDialog(CompatibilityWorkflowPlugin workflowPlugin, IModel question, Date date) { + workflowPlugin . super(); this.date = date; add(new Label("question", question)); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicRequestWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicRequestWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicRequestWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -24,21 +24,19 @@ import org.slf4j.LoggerFactory; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.reviewedactions.BasicRequestWorkflow; -public class BasicRequestWorkflowPlugin extends AbstractWorkflowPlugin { +public class BasicRequestWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -78,10 +76,10 @@ @Override public void onModelChanged() { super.onModelChanged(); - WorkflowsModel model = (WorkflowsModel) getModel(); + WorkflowDescriptorModel model = (WorkflowDescriptorModel) getModel(); schedule = null; try { - Node node = model.getNodeModel().getNode(); + Node node = model.getNode(); Node child = null; if (node.isNodeType(HippoNodeType.NT_DOCUMENT) && node.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { node = node.getParent(); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -15,6 +15,8 @@ */ package org.hippoecm.frontend.plugins.reviewedactions; +import java.beans.Visibility; +import java.rmi.RemoteException; import java.util.Date; import javax.jcr.Node; @@ -26,29 +28,31 @@ import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.AbstractDialog; import org.hippoecm.frontend.dialog.IDialogFactory; import org.hippoecm.frontend.dialog.IDialogService; import org.hippoecm.frontend.i18n.model.NodeTranslator; import org.hippoecm.frontend.i18n.types.TypeTranslator; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.model.nodetypes.JcrNodeTypeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoNodeType; +import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.reviewedactions.BasicReviewedActionsWorkflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class BasicReviewedActionsWorkflowPlugin extends AbstractWorkflowPlugin { +public class BasicReviewedActionsWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -187,13 +191,24 @@ private static final long serialVersionUID = 1L; @Override - protected void execute() throws Exception { + protected String execute() { + try { BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) getWorkflow(); if (date != null) { workflow.requestPublication(date); } else { workflow.requestPublication(); } + return null; + } catch(MappingException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(RepositoryException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(WorkflowException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(RemoteException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } } public IModel getTitle() { @@ -221,13 +236,24 @@ private static final long serialVersionUID = 1L; @Override - protected void execute() throws Exception { + protected String execute() { + try { BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) getWorkflow(); if (date != null) { workflow.requestDepublication(date); } else { workflow.requestDepublication(); } + return null; + } catch(MappingException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(RepositoryException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(WorkflowException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(RemoteException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } } public IModel getTitle() { @@ -243,9 +269,9 @@ public void onModelChanged() { super.onModelChanged(); - WorkflowsModel model = (WorkflowsModel) getModel(); + WorkflowDescriptorModel model = (WorkflowDescriptorModel) getModel(); try { - JcrNodeModel nodeModel = model.getNodeModel(); + JcrNodeModel nodeModel = new JcrNodeModel(model.getNode()); caption = new NodeTranslator(nodeModel).getNodeName(); Node node = nodeModel.getNode(); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/CancelWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/CancelWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/CancelWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -23,10 +23,10 @@ import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.model.WorkflowsModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.Workflow; @@ -34,7 +34,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CancelWorkflowPlugin extends AbstractWorkflowPlugin { +public class CancelWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -75,11 +75,11 @@ @Override public void onModelChanged() { super.onModelChanged(); - WorkflowsModel model = (WorkflowsModel) getModel(); + WorkflowDescriptorModel model = (WorkflowDescriptorModel) getModel(); state = "unknown"; schedule = null; try { - Node node = model.getNodeModel().getNode(); + Node node = model.getNode(); Node child = null; if (node.isNodeType(HippoNodeType.NT_DOCUMENT) && node.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { node = node.getParent(); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -15,29 +15,32 @@ */ package org.hippoecm.frontend.plugins.reviewedactions; +import java.rmi.RemoteException; import javax.jcr.Node; +import javax.jcr.RepositoryException; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.AbstractNameDialog; import org.hippoecm.frontend.dialog.IDialogFactory; import org.hippoecm.frontend.i18n.model.NodeTranslator; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.service.IEditorManager; +import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.NodeNameCodec; import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.standardworkflow.DefaultWorkflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class DefaultWorkflowPlugin extends AbstractWorkflowPlugin { +public class DefaultWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -59,7 +62,7 @@ @Override public void execute(Workflow wf) throws Exception { - Node handleNode = ((WorkflowsModel)DefaultWorkflowPlugin.this.getModel()).getNodeModel().getNode(); + Node handleNode = ((WorkflowDescriptorModel)DefaultWorkflowPlugin.this.getModel()).getNode(); Node docNode = handleNode.getNodes(handleNode.getName()).nextNode(); IEditorManager viewer = getPluginContext().getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); if (viewer != null) { @@ -94,13 +97,24 @@ public AbstractDialog createDialog() { - return new AbstractNameDialog(DefaultWorkflowPlugin.this, renameTitle, renameText, "") { + return new NameDialog(renameTitle, renameText, "") { private static final long serialVersionUID = 1L; @Override - protected void execute() throws Exception { + protected String execute() { + try { DefaultWorkflow workflow = (DefaultWorkflow) getWorkflow(); workflow.rename(NodeNameCodec.encode(name, true)); + return null; + } catch(MappingException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(RepositoryException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(WorkflowException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } catch(RemoteException ex) { + return ex.getClass().getName()+": "+ex.getMessage(); + } } }; } @@ -109,8 +123,12 @@ @Override public void onModelChanged() { + try { super.onModelChanged(); - WorkflowsModel model = (WorkflowsModel) getModel(); - caption = new NodeTranslator(model.getNodeModel()).getNodeName(); + WorkflowDescriptorModel model = (WorkflowDescriptorModel) getModel(); + caption = new NodeTranslator(new JcrNodeModel(model.getNode())).getNodeName(); + } catch(RepositoryException ex) { + log.error(ex.getMessage()); + } } } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -18,11 +18,11 @@ import javax.jcr.RepositoryException; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditorFilter; @@ -31,7 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class EditingDefaultWorkflowPlugin extends AbstractWorkflowPlugin { +public class EditingDefaultWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -52,7 +52,7 @@ public Object preClose() { try { - ((WorkflowsModel) getModel()).getNodeModel().getNode().save(); + ((WorkflowDescriptorModel) getModel()).getNode().save(); return new Object(); } catch (RepositoryException ex) { log.info(ex.getMessage()); @@ -68,7 +68,7 @@ @Override public void execute(Workflow wf) throws Exception { - ((WorkflowsModel) getModel()).getNodeModel().getNode().save(); + ((WorkflowDescriptorModel) getModel()).getNode().save(); } }); } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +1,2 @@ -save: Save \ No newline at end of file +save: Save +done: Done Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +1,2 @@ -save: Sla op \ No newline at end of file +save: Sla op +done: Klaar Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.html 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.html 2009-03-19 07:25:20 UTC (rev 17005) @@ -16,5 +16,6 @@
    [WORKFLOW ITEM GOES HERE]
    +
    [WORKFLOW ITEM GOES HERE]
    Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -25,8 +25,12 @@ import javax.jcr.Value; import javax.jcr.nodetype.PropertyDefinition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.apache.wicket.Session; import org.apache.wicket.model.StringResourceModel; + import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.IDialogService; @@ -37,10 +41,11 @@ import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.plugins.reviewedactions.dialogs.OnCloseDialog; import org.hippoecm.frontend.service.EditorException; +import org.hippoecm.frontend.service.IBrowseService; import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditorFilter; +import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.service.IValidateService; -import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoSession; @@ -48,8 +53,6 @@ import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.reviewedactions.BasicReviewedActionsWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class EditingReviewedActionsWorkflowPlugin extends CompatibilityWorkflowPlugin implements IValidateService { @SuppressWarnings("unused") @@ -164,7 +167,7 @@ }, context.getReference(editor).getServiceId()); - addWorkflowAction("save", new StringResourceModel("save", this, null), new WorkflowAction() { + addWorkflowAction("save", new StringResourceModel("save", this, null, "Save"), new WorkflowAction() { private static final long serialVersionUID = 1L; @Override @@ -172,6 +175,8 @@ BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.commitEditableInstance(); + ((UserSession) Session.get()).getJcrSession().refresh(false); + // get new instance of the workflow, previous one may have invalidated itself EditingReviewedActionsWorkflowPlugin.this.getModel().detach(); WorkflowDescriptor descriptor = (WorkflowDescriptor)(EditingReviewedActionsWorkflowPlugin.this.getModel().getObject()); @@ -181,10 +186,28 @@ Document draft = workflow.obtainEditableInstance(); IModelReference ref = context.getService(config.getString("model.id"), IModelReference.class); - ref.setModel(new JcrNodeModel(((UserSession) Session.get()).getJcrSession().getNodeByUUID( - draft.getIdentity()))); + ref.setModel(new JcrNodeModel(((UserSession) Session.get()).getJcrSession().getNodeByUUID(draft.getIdentity()))); + } + }); + addWorkflowAction("done", new StringResourceModel("done", this, null, "Done"), new WorkflowAction() { + private static final long serialVersionUID = 1L; + + @Override + public void execute(Workflow wf) throws Exception { + BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow)wf; + workflow.commitEditableInstance(); + closing = true; + IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditor.class); + editor.close(); + System.err.println("BERRY#0 "+config.getString("browser.id")); + IBrowseService browser = context.getService("browser.id", IBrowseService.class); + System.err.println("BERRY#1 "+browser); + System.err.println("BERRY#2 "+((WorkflowDescriptorModel)EditingReviewedActionsWorkflowPlugin.this.getModel())); + System.err.println("BERRY#3 "+((WorkflowDescriptorModel)EditingReviewedActionsWorkflowPlugin.this.getModel()).getNode()); + browser.browse(new JcrNodeModel(((WorkflowDescriptorModel)EditingReviewedActionsWorkflowPlugin.this.getModel()).getNode())); + } }); } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullRequestWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullRequestWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullRequestWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -15,6 +15,7 @@ */ package org.hippoecm.frontend.plugins.reviewedactions; +import java.beans.Visibility; import java.util.Date; import javax.jcr.Node; import javax.jcr.NodeIterator; @@ -24,17 +25,17 @@ import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.reviewedactions.FullRequestWorkflow; -public class FullRequestWorkflowPlugin extends AbstractWorkflowPlugin { +public class FullRequestWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -90,11 +91,10 @@ @Override public void onModelChanged() { super.onModelChanged(); - WorkflowsModel model = (WorkflowsModel) getModel(); + WorkflowDescriptorModel model = (WorkflowDescriptorModel) getModel(); schedule = null; try { - JcrNodeModel nodeModel = model.getNodeModel(); - Node node = nodeModel.getNode(); + Node node = model.getNode(); Node child = null; if (node.isNodeType(HippoNodeType.NT_HANDLE)) { for (NodeIterator iter = node.getNodes(HippoNodeType.NT_REQUEST); iter.hasNext();) { Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -252,6 +252,12 @@ } } + public Workflow getWorkflow() throws MappingException, RepositoryException { + final WorkflowDescriptorModel workflowModel = (WorkflowDescriptorModel)CompatibilityWorkflowPlugin.this.getModel(); + WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); + return manager.getWorkflow((WorkflowDescriptor)(workflowModel.getObject())); + } + public abstract class Dialog extends AbstractDialog implements IStringResourceProvider { private static final long serialVersionUID = 1L; @@ -388,33 +394,32 @@ public abstract class DateDialog extends Dialog { - protected Date date; + protected Date date; - protected Button now; + protected Button now; - public DateDialog(IModel question, Date date) { - super(); - this.date = date; + public DateDialog(IModel question, Date date) { + super(); + this.date = date; - add(new Label("question", question)); + add(new Label("question", question)); - add(new AjaxDateTimeField("value", new PropertyModel(this, "date"))); + add(new AjaxDateTimeField("value", new PropertyModel(this, "date"))); - now = new AjaxButton(getButtonId(), this) { - private static final long serialVersionUID = 1L; - - @Override - public void onSubmit(AjaxRequestTarget target, Form form) { - DateDialog.this.date = null; - onOk(); - if (!hasError()) { - closeDialog(); - } - } - }.setDefaultFormProcessing(false); - now.add(new Label("label", new ResourceModel("now", "Now"))); - addButton(now); + now = new AjaxButton(getButtonId(), this) { + private static final long serialVersionUID = 1L; + + @Override + public void onSubmit(AjaxRequestTarget target, Form form) { + DateDialog.this.date = null; + onOk(); + if (!hasError()) { + closeDialog(); + } + } + }.setDefaultFormProcessing(false); + now.add(new Label("label", new ResourceModel("now", "Now"))); + addButton(now); + } } } - -} Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDescriptorModel.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDescriptorModel.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowDescriptorModel.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -30,8 +30,8 @@ @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; - String path; - String category; + private String path; + private String category; public WorkflowDescriptorModel(WorkflowDescriptor descriptor, String category, Node subject) throws RepositoryException { super(descriptor); @@ -43,7 +43,7 @@ try { Session session = ((UserSession)org.apache.wicket.Session.get()).getJcrSession(); WorkflowManager workflowManager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); - return workflowManager.getWorkflowDescriptor(category, session.getRootNode().getNode(path.substring(1))); + return workflowManager.getWorkflowDescriptor(category, getNode(session)); } catch (RepositoryException ex) { System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); ex.printStackTrace(System.err); @@ -51,9 +51,33 @@ } } - /** @deprecated */ + /** @deprecated by design FIXME */ public Node getNode() throws RepositoryException { Session session = ((UserSession)org.apache.wicket.Session.get()).getJcrSession(); - return session.getRootNode().getNode(path.substring(1)); + return getNode(session); } + + private Node getNode(Session session) throws RepositoryException { + Node node = session.getRootNode(); + String relPath = path.substring(1); + if (node.hasNode(relPath)) { + return node.getNode(path.substring(1)); + } else if (relPath.contains("/")) { + // FIXME should be more intelligent + int pos = relPath.lastIndexOf("/"); + if (pos < 0) { + return null; + } + String name = relPath.substring(pos + 1); + if (name.contains("[")) { + name = name.substring(0, name.lastIndexOf("[")); + } + relPath = relPath.substring(0, pos); + node = node.getNode(relPath); + node = node.getNode(name); + return node; + } else { + return null; + } + } } Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.html 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,31 +0,0 @@ - - - - - - - - - -
    - -
    - Destination: - -
    -
    - Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractDestinationDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,109 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.dialog; - -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; - -import org.hippoecm.frontend.PluginRequestTarget; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.ModelReference; -import org.hippoecm.frontend.plugin.IClusterControl; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IClusterConfig; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.config.IPluginConfigService; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -import org.hippoecm.frontend.service.IRenderService; -import org.hippoecm.frontend.widgets.TextFieldWidget; - -public abstract class AbstractDestinationDialog extends AbstractWorkflowDialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - protected JcrNodeModel destination; - protected String name; - - private IModel title; - private IRenderService dialogRenderer; - private IClusterControl control; - - public AbstractDestinationDialog(AbstractWorkflowPlugin workflowPlugin, IModel title, IModel question) { - super(workflowPlugin); - this.title = title; - this.destination = null; - add(new Label("question", question)); - add(new TextFieldWidget("name", new PropertyModel(this, "name"))); - - IPluginContext context = workflowPlugin.getPluginContext(); - IPluginConfig config = workflowPlugin.getPluginConfig(); - IPluginConfigService pluginConfigService = context.getService(IPluginConfigService.class.getName(), IPluginConfigService.class); - IClusterConfig cluster = pluginConfigService.getCluster("cms-pickers/folders"); - control = context.newCluster(cluster, config.getPluginConfig("cluster.options")); - IClusterConfig decorated = control.getClusterConfig(); - String modelServiceId = decorated.getString("wicket.model.folder"); - ModelReference modelService; - modelService = new ModelReference(modelServiceId, getModel()) { - private static final long serialVersionUID = 1L; - @Override - public void setModel(IModel model) { - AbstractDestinationDialog.this.destination = null; - if (model != null && model instanceof JcrNodeModel && ((JcrNodeModel)model).getNode() != null) { - destination = (JcrNodeModel) model; - } - super.setModel(model); - } - }; - modelService.init(context); - - control.start(); - - dialogRenderer = context.getService(decorated.getString("wicket.id"), IRenderService.class); - dialogRenderer.bind(null, "picker"); - add(dialogRenderer.getComponent()); - } - - @Override - public void render(PluginRequestTarget target) { - if(dialogRenderer != null) { - dialogRenderer.render(target); - } - super.render(target); - } - - @Override - public final void onClose() { - super.onClose(); - dialogRenderer.unbind(); - dialogRenderer = null; - control.stop(); - } - - public IModel getTitle() { - return title; - } - - @Override - public void onDetach() { - if(destination != null) { - destination.detach(); - } - super.onDetach(); - } -} Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractNameDialog.html =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractNameDialog.html 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractNameDialog.html 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,29 +0,0 @@ - - - - - - - - -
    - Name: - - -
    -
    - Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractNameDialog.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractNameDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractNameDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,44 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.dialog; - -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -import org.hippoecm.frontend.widgets.TextFieldWidget; - -public abstract class AbstractNameDialog extends AbstractWorkflowDialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - protected String name; - private IModel title; - - public AbstractNameDialog(AbstractWorkflowPlugin workflowPlugin, IModel title, IModel question, String name) { - super(workflowPlugin); - this.name = name; - this.title = title; - add(new Label("question", question)); - add(new TextFieldWidget("value", new PropertyModel(this, "name"))); - } - - public IModel getTitle() { - return title; - } -} Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.html =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.html 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.html 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,21 +0,0 @@ - - - -
    - -
    - Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,138 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.dialog; - -import java.util.Map; - -import javax.jcr.RepositoryException; - -import org.apache.wicket.Session; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.model.IModel; -import org.hippoecm.frontend.IStringResourceProvider; -import org.hippoecm.frontend.i18n.SearchingTranslatorPlugin; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.workflow.AbstractWorkflowPlugin; -import org.hippoecm.frontend.service.ITranslateService; -import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.repository.api.HippoNodeType; -import org.hippoecm.repository.api.MappingException; -import org.hippoecm.repository.api.Workflow; -import org.hippoecm.repository.api.WorkflowManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A dialog operating in a workflow context. Each workflow action should - * extend this class and implement the doOk() method. - * - */ -public abstract class AbstractWorkflowDialog extends AbstractDialog implements IStringResourceProvider { - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - static protected Logger log = LoggerFactory.getLogger(AbstractWorkflowDialog.class); - - private WorkflowsModel model; - private AbstractWorkflowPlugin plugin; - private ITranslateService translator; - - public AbstractWorkflowDialog(AbstractWorkflowPlugin plugin, IModel message) { - this.model = (WorkflowsModel) plugin.getModel(); - this.plugin = plugin; - - if (model.getNodeModel().getNode() == null) { - ok.setVisible(false); - } - - Label notification = new Label("notification"); - if (message != null) { - notification.setModel(message); - } else { - notification.setVisible(false); - } - add(notification); - - // FIXME: refactor the plugin so that we can use a service instead here - IPluginContext context = plugin.getPluginContext(); - translator = new SearchingTranslatorPlugin(context, null); - } - - public AbstractWorkflowDialog(AbstractWorkflowPlugin plugin) { - this(plugin, null); - } - - @Override - public void onDetach() { - model.detach(); - super.onDetach(); - } - - public String getString(Map criteria) { - return translator.translate(criteria); - } - - protected AbstractWorkflowPlugin getPlugin() { - return plugin; - } - - protected Workflow getWorkflow() { - try { - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - return manager.getWorkflow(model.getWorkflowDescriptor()); - } catch (MappingException e) { - log.error(e.getMessage()); - } catch (RepositoryException e) { - log.error(e.getMessage()); - } - return null; - } - - @Override - protected void onOk() { - try { - JcrNodeModel handle = model.getNodeModel(); - while (handle != null && !handle.getNode().isNodeType(HippoNodeType.NT_HANDLE)) { - handle = handle.getParentModel(); - } - if (handle == null) { - handle = model.getNodeModel().getParentModel(); - if (handle == null) { - handle = model.getNodeModel(); - } - } - handle.getNode().getSession().save(); - execute(); - - ((UserSession) Session.get()).getJcrSession().refresh(true); - } catch (Exception e) { - String msg = e.getClass().getName() + ": " + e.getMessage(); - log.error(msg, e); - error(msg); - } - } - - /** - * This abstract method is called from ok() and should implement - * the action to be performed when the dialog's ok button is clicked. - */ - protected abstract void execute() throws Exception; - -} Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.properties =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.properties 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/AbstractWorkflowDialog.properties 2009-03-19 07:25:20 UTC (rev 17005) @@ -1 +0,0 @@ -delete-message-extended: Delete Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/WorkflowsModel.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/WorkflowsModel.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/WorkflowsModel.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,276 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.model; - -import java.util.Comparator; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.TreeMap; -import java.util.TreeSet; -import java.util.Vector; - -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.RepositoryException; - -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.hippoecm.repository.api.HippoNodeType; -import org.hippoecm.repository.api.HippoWorkspace; -import org.hippoecm.repository.api.WorkflowDescriptor; -import org.hippoecm.repository.api.WorkflowManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** @deprecated */ -public class WorkflowsModel extends NodeModelWrapper implements IDataProvider { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - static final Logger log = LoggerFactory.getLogger(WorkflowsModel.class); - - private class Entry { - String name; - int order; - - Entry(String name, int order) { - this.name = name; - this.order = order; - } - - Entry(String name) { - this.name = name; - order = -1; - } - } - - List categories; - - transient private Map> workflows; - - String renderer = null; - - public void initialize() throws RepositoryException { - workflows = new TreeMap>(new Comparator() { - public int compare(Entry o1, Entry o2) { - if(o1 == null) - if(o2 == null) - return 0; - else - return -1; - else if(o2 == null) - return 1; - return o1.name.compareTo(o2.name); - } - }); - - Node handle = getNodeModel().getNode(); - WorkflowManager manager = ((HippoWorkspace) handle.getSession().getWorkspace()).getWorkflowManager(); - - int sequence = 0; - - if (handle.isNodeType(HippoNodeType.NT_DOCUMENT) || handle.isNodeType(HippoNodeType.NT_REQUEST)) { - if (handle.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { - handle = handle.getParent(); - setChainedModel(new JcrNodeModel(handle)); - } - } - - for (String category : categories) { - if (handle.isNodeType(HippoNodeType.NT_HANDLE)) { - for (NodeIterator iter = handle.getNodes(); iter.hasNext();) { - Node child = iter.nextNode(); - if (child.isNodeType(HippoNodeType.NT_DOCUMENT)) { - WorkflowDescriptor workflowDescriptor = manager.getWorkflowDescriptor(category, child); - if (workflowDescriptor != null) { - String workflowRenderer = workflowDescriptor.getAttribute(FrontendNodeTypes.WORKFLOW_RENDERER); - if (workflowRenderer != null && (renderer == null || renderer.equals(workflowRenderer))) { - if (!workflows.containsKey(new Entry(workflowRenderer))) { - workflows.put(new Entry(workflowRenderer, sequence++), new Vector()); - } - workflows.get(new Entry(workflowRenderer)).add(workflowDescriptor); - } - } - } - } - } else if (handle.isNodeType("hippo:templatetype") || handle.isNodeType("rep:root") - || handle.isNodeType("hippo:namespace") || handle.isNodeType("hippo:namespacefolder") - || handle.isNodeType(HippoNodeType.NT_DOCUMENT)) { - WorkflowDescriptor workflowDescriptor = manager.getWorkflowDescriptor(category, handle); - if (workflowDescriptor != null) { - String workflowRenderer = workflowDescriptor.getAttribute(FrontendNodeTypes.WORKFLOW_RENDERER); - if (workflowRenderer != null && (renderer == null || renderer.equals(workflowRenderer))) { - if (!workflows.containsKey(new Entry(workflowRenderer))) { - workflows.put(new Entry(workflowRenderer, sequence++), new Vector()); - } - workflows.get(new Entry(workflowRenderer)).add(workflowDescriptor); - } - } - } - } - for (String category : categories) { - if (handle.isNodeType(HippoNodeType.NT_HANDLE)) { - for (NodeIterator iter = handle.getNodes(); iter.hasNext();) { - Node child = iter.nextNode(); - if (child.isNodeType(HippoNodeType.NT_REQUEST) && !(child.hasProperty("type") && child.getProperty("type").getString().equals("rejected"))) { // FIXME: dependency on knowledge of reviewed actions - WorkflowDescriptor workflowDescriptor = manager.getWorkflowDescriptor(category, child); - if (workflowDescriptor != null) { - String workflowRenderer = workflowDescriptor.getAttribute(FrontendNodeTypes.WORKFLOW_RENDERER); - if(workflowRenderer != null && (renderer == null || renderer.equals(workflowRenderer))) { - if (!workflows.containsKey(new Entry(workflowRenderer))) { - workflows.put(new Entry(workflowRenderer, sequence++), new Vector()); - } - workflows.get(new Entry(workflowRenderer)).add(workflowDescriptor); - } - } - } - } - } else if (handle.isNodeType(HippoNodeType.NT_REQUEST)) { - WorkflowDescriptor workflowDescriptor = manager.getWorkflowDescriptor(category, handle); - if (workflowDescriptor != null) { - String workflowRenderer = workflowDescriptor.getAttribute(FrontendNodeTypes.WORKFLOW_RENDERER); - if (workflowRenderer != null && (renderer == null || renderer.equals(workflowRenderer))) { - if (!workflows.containsKey(new Entry(workflowRenderer))) { - workflows.put(new Entry(workflowRenderer, sequence++), new Vector()); - } - workflows.get(new Entry(workflowRenderer)).add(workflowDescriptor); - } - } - } - } - } - - public WorkflowsModel(JcrNodeModel model, List categories) throws RepositoryException { - super(model); - this.categories = new LinkedList(); - this.categories.addAll(categories); - initialize(); - } - - private WorkflowsModel(WorkflowsModel model, List categories, String renderer) throws RepositoryException { - super(model.getNodeModel()); - this.categories = new LinkedList(); - this.categories.addAll(categories); - this.renderer = renderer; - initialize(); - workflows.put(new Entry(renderer, 0), model.workflows.get(new Entry(renderer))); - } - - public String getWorkflowName() { - try { - if (workflows == null) - initialize(); - Iterator iter = workflows.keySet().iterator(); - if (iter.hasNext()) { - return ((Entry) iter.next()).name; - } - } catch (RepositoryException ex) { - log.error("unable to determine name of workflow", ex); - } - return null; - } - - public WorkflowDescriptor getWorkflowDescriptor() { - try { - if (workflows == null) - initialize(); - Iterator> iter = workflows.values().iterator(); - if (iter.hasNext()) { - Vector descriptors = iter.next(); - if (descriptors.size() > 0) - return descriptors.get(0); - } - } catch (RepositoryException ex) { - log.error("unable to find workflow descriptor", ex); - } - return null; - } - - public Iterator iterator(int first, final int count) { - try { - if (workflows == null) - initialize(); - } catch (RepositoryException ex) { - log.error("no workflows available", ex); - return null; - } - - TreeSet sortedWorkflows = new TreeSet(new Comparator() { - public int compare(Entry o1, Entry o2) { - return o1.order - o2.order; - } - }); - sortedWorkflows.addAll(workflows.keySet()); - final Iterator renderers = sortedWorkflows.iterator(); - - while (first > 0 && renderers.hasNext()) { - --first; - renderers.next(); - } - return new Iterator() { - int remaining = count; - - public boolean hasNext() { - if (remaining == 0) - return false; - return renderers.hasNext(); - } - - public WorkflowsModel next() { - if (remaining == 0) - throw new NoSuchElementException(); - --remaining; - try { - return new WorkflowsModel(WorkflowsModel.this, categories, renderers.next().name); - } catch (RepositoryException ex) { - // FIXME - throw new NoSuchElementException(); - } - } - - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - - public int size() { - try { - if (workflows == null) - initialize(); - return workflows.keySet().size(); - } catch (RepositoryException ex) { - log.error("no workflows found", ex); - return 0; - } - } - - public IModel model(Object object) { - return (IModel) object; - } - - @Override - public void detach() { - super.detach(); - workflows = null; - } - -} Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/AbstractWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,240 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugin.workflow; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.jcr.RepositoryException; - -import org.apache.wicket.Component; -import org.apache.wicket.Session; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.model.IModel; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.AbstractWorkflowDialog; -import org.hippoecm.frontend.dialog.DialogLink; -import org.hippoecm.frontend.dialog.ExceptionDialog; -import org.hippoecm.frontend.dialog.IDialogFactory; -import org.hippoecm.frontend.dialog.IDialogService; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.plugin.IActivator; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.service.IValidateService; -import org.hippoecm.frontend.service.render.RenderPlugin; -import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.repository.api.HippoNodeType; -import org.hippoecm.repository.api.MappingException; -import org.hippoecm.repository.api.Workflow; -import org.hippoecm.repository.api.WorkflowManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @deprecated - */ -public abstract class AbstractWorkflowPlugin extends RenderPlugin implements IActivator { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private static final Logger log = LoggerFactory.getLogger(AbstractWorkflowPlugin.class); - - protected interface Visibility extends Serializable { - boolean isVisible(); - } - - static class Action implements Serializable { - private static final long serialVersionUID = 1L; - - Component component; - Visibility visible; - - Action(Component comp, Visibility vis) { - component = comp; - visible = vis; - } - } - - private Map actions; - - public AbstractWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); - actions = new HashMap(); - } - - public void start() { - modelChanged(); - } - - public void stop() { - } - - @Override - public IPluginContext getPluginContext() { - return super.getPluginContext(); - } - - @Override - public IPluginConfig getPluginConfig() { - return super.getPluginConfig(); - } - - protected void addWorkflowDialog(final String dialogName, final IModel dialogLink, final IModel dialogTitle, - final IModel text, final Visibility visible, final WorkflowAction action) { - DialogLink link = new DialogLink(dialogName, dialogLink, new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - return new AbstractWorkflowDialog(AbstractWorkflowPlugin.this, text) { - private static final long serialVersionUID = 1L; - - @Override - protected void execute() throws Exception { - action.execute(getWorkflow()); - } - - public IModel getTitle() { - return dialogTitle; - } - }; - } - }, getDialogService()); - add(link); - actions.put(dialogName, new Action(link, visible)); - - updateActions(); - } - - protected void addWorkflowDialog(final String dialogName, final IModel dialogLink, final Visibility visible, - IDialogFactory dialogFactory) { - DialogLink link = new DialogLink(dialogName, dialogLink, dialogFactory, getDialogService()); - add(link); - actions.put(dialogName, new Action(link, visible)); - updateActions(); - } - - protected void addWorkflowAction(final String linkName, IModel linkText, Visibility visible, - final WorkflowAction action) { - AjaxLink link = new AjaxLink(linkName) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - List validators = null; - IPluginConfig config = getPluginConfig(); - if (config.getString(IValidateService.VALIDATE_ID) != null) { - validators = getPluginContext().getServices(config.getString(IValidateService.VALIDATE_ID), - IValidateService.class); - if (validators != null && !action.validateSession(validators)) { - return; - } - } - execute(action); - } - }; - add(link); - link.add(new Label(linkName + "-label", linkText)); - actions.put(linkName, new Action(link, visible)); - - updateActions(); - } - - protected void addWorkflowAction(final String linkName, IModel linkText, final WorkflowAction action) { - addWorkflowAction(linkName, linkText, new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return true; - } - }, action); - } - - protected void addWorkflowDialog(final String dialogName, final IModel dialogLink, final IModel dialogTitle, - final WorkflowAction action) { - addWorkflowDialog(dialogName, dialogLink, dialogTitle, (IModel) null, action); - } - - protected void addWorkflowDialog(final String dialogName, final IModel dialogLink, final IModel dialogTitle, - final IModel text, final WorkflowAction action) { - addWorkflowDialog(dialogName, dialogLink, dialogTitle, text, new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return true; - } - }, action); - } - - protected void updateActions() { - for (Map.Entry entry : actions.entrySet()) { - entry.getValue().component.setVisible(entry.getValue().visible.isVisible()); - } - } - - @Override - protected void onModelChanged() { - super.onModelChanged(); - updateActions(); - } - - protected void showException(Exception ex) { - IDialogService dialogService = getPluginContext().getService(IDialogService.class.getName(), - IDialogService.class); - if (dialogService != null) { - dialogService.show(new ExceptionDialog(ex)); - } - } - - protected void execute(WorkflowAction action) { - // before saving (which possibly means deleting), find the handle - final WorkflowsModel workflowModel = (WorkflowsModel) getModel(); - JcrNodeModel handle = workflowModel.getNodeModel(); - try { - while (handle.getParentModel() != null && !handle.getNode().isNodeType(HippoNodeType.NT_HANDLE)) { - handle = handle.getParentModel(); - } - action.prepareSession(handle); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - Workflow workflow = manager.getWorkflow(workflowModel.getWorkflowDescriptor()); - action.execute(workflow); - } catch (MappingException e) { - log.error("MappingException while getting workflow: " + e.getMessage(), e); - showException(e); - } catch (RepositoryException e) { - log.error("RepositoryException while getting workflow: " + e.getMessage(), e); - showException(e); - } catch (Exception e) { - log.error("Exception while getting workflow: " + e.getMessage(), e); - showException(e); - } finally { - try { - ((UserSession) Session.get()).getJcrSession().refresh(true); - } catch (RepositoryException e) { - log.error("Failed to refresh session: " + e.getMessage(), e); - } - } - - } - -} Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/EmbedWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/EmbedWorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/EmbedWorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,44 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugin.workflow; - -import org.apache.wicket.model.IDetachable; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IPluginConfig; - -/** - * @deprecated - */public class EmbedWorkflowPlugin extends WorkflowPlugin implements IDetachable { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - public static final String ITEM_ID = "workflow.item"; - - private String item; - - public EmbedWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); - } - - @Override - protected void configureWorkflow(IPluginConfig wflConfig, WorkflowsModel model) { - wflConfig.put(ITEM_ID, item); - } - -} Deleted: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/WorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/WorkflowPlugin.java 2009-03-18 19:09:15 UTC (rev 17004) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/workflow/WorkflowPlugin.java 2009-03-19 07:25:20 UTC (rev 17005) @@ -1,219 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugin.workflow; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import javax.jcr.RepositoryException; - -import org.apache.wicket.IClusterable; -import org.apache.wicket.model.IDetachable; -import org.apache.wicket.model.IModel; -import org.hippoecm.frontend.model.IModelReference; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.ModelReference; -import org.hippoecm.frontend.model.WorkflowsModel; -import org.hippoecm.frontend.model.event.IEvent; -import org.hippoecm.frontend.model.event.IObservable; -import org.hippoecm.frontend.model.event.IObserver; -import org.hippoecm.frontend.plugin.IClusterControl; -import org.hippoecm.frontend.plugin.IPlugin; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IClusterConfig; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.config.impl.JavaClusterConfig; -import org.hippoecm.frontend.plugin.config.impl.JavaPluginConfig; -import org.hippoecm.frontend.service.render.RenderService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @deprecated - */ -public class WorkflowPlugin implements IPlugin, IObserver, IDetachable { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private static final Logger log = LoggerFactory.getLogger(WorkflowPlugin.class); - - private class Cluster implements IClusterable { - private static final long serialVersionUID = 1L; - - ModelReference modelService; - IClusterControl control; - - Cluster(IClusterConfig clusterConfig, IModel model) { - control = context.newCluster(clusterConfig, null); - - String modelId = control.getClusterConfig().getString("wicket.model"); - modelService = new ModelReference(modelId, model); - modelService.init(context); - - control.start(); - } - - void stop() { - control.stop(); - modelService.destroy(); - } - } - - public static final String CATEGORIES = "workflow.categories"; - - private IPluginContext context; - private IPluginConfig config; - private String[] categories; - private final IModelReference modelReference; - private WorkflowsModel workflowsModel; - private List workflows; - - public WorkflowPlugin(IPluginContext context, IPluginConfig config) { - this.context = context; - this.config = config; - - workflows = new LinkedList(); - - if (config.get(CATEGORIES) != null) { - categories = config.getStringArray(CATEGORIES); - if (log.isDebugEnabled()) { - StringBuffer sb = new StringBuffer(); - sb.append("workflow showing categories"); - for (String category : categories) - sb.append(" " + category); - log.debug(new String(sb)); - } - } else { - log.warn("No categories ({}) defined", CATEGORIES); - } - - if (config.getString(RenderService.MODEL_ID) != null) { - modelReference = context.getService(config.getString(RenderService.MODEL_ID), IModelReference.class); - if (modelReference != null) { - updateModel((JcrNodeModel) modelReference.getModel()); - context.registerService(new IObserver() { - private static final long serialVersionUID = 1L; - - public IObservable getObservable() { - return modelReference; - } - - public void onEvent(IEvent event) { - if (event instanceof IModelReference.IModelChangeEvent) { - IModelReference.IModelChangeEvent mce = (IModelReference.IModelChangeEvent) event; - updateModel(mce.getNewModel()); - } - } - - }, IObserver.class.getName()); - } - } else { - modelReference = null; - log.warn("No model configured"); - } - } - - // implement IModelListener - public void updateModel(JcrNodeModel model) { - closeWorkflows(); - - // unregister and re-register; observer model is changed - if (workflowsModel != null) { - context.unregisterService(this, IObserver.class.getName()); - workflowsModel = null; - } - - if (model == null || model.getNode() == null) { - return; - } - - try { - List cats = new LinkedList(); - for (String category : categories) { - cats.add(category); - } - workflowsModel = new WorkflowsModel(model, cats); - if (log.isDebugEnabled()) { - try { - log.debug("obtained workflows on " + model.getNode().getPath() + " counted " - + workflowsModel.size() + " unique renderers"); - } catch (RepositoryException ex) { - log.debug("debug message failed ", ex); - } - } - - context.registerService(this, IObserver.class.getName()); - - Iterator iter = workflowsModel.iterator(0, workflowsModel.size()); - while (iter.hasNext()) { - showWorkflow(iter.next()); - } - } catch (RepositoryException ex) { - log.error("could not setup workflow model", ex); - } - } - - private void showWorkflow(final WorkflowsModel model) { - if (log.isDebugEnabled()) { - try { - log.debug("workflow on " + model.getNodeModel().getNode().getPath() + " accoring to renderer " - + model.getWorkflowName()); - } catch (RepositoryException ex) { - log.debug("debug message failed ", ex); - } - } - - IPluginConfig wflConfig = new JavaPluginConfig(config.getPluginConfig("workflow.options")); - String className = model.getWorkflowName(); - wflConfig.put(IPlugin.CLASSNAME, className); - wflConfig.put(RenderService.MODEL_ID, "${wicket.model}"); - configureWorkflow(wflConfig, model); - - JavaClusterConfig clusterConfig = new JavaClusterConfig(); - clusterConfig.addReference(RenderService.MODEL_ID); - clusterConfig.addPlugin(wflConfig); - - workflows.add(new Cluster(clusterConfig, model)); - } - - protected void configureWorkflow(IPluginConfig wflConfig, WorkflowsModel model) { - } - - private void closeWorkflows() { - for (Cluster entry : workflows) { - entry.stop(); - } - workflows = new LinkedList(); - } - - public IObservable getObservable() { - return workflowsModel.getNodeModel(); - } - - public void onEvent(IEvent event) { - updateModel(workflowsModel.getNodeModel()); - } - - public void detach() { - if (workflowsModel != null) { - workflowsModel.detach(); - } - } - -} From svn-logs at hippocms.org Thu Mar 19 10:37:46 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Thu Mar 19 10:40:41 2009 Subject: [HippoRepos-dev] [17012] hippo-ecm: HREPTWO-16: @Override breaks eclipse when method doesn' t actually override a Message-ID: <20090319093746.A937AC17E@svnnew.onehippo.org> Revision: 17012 Author: fvlankvelt Date: 2009-03-19 10:37:44 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-16: @Override breaks eclipse when method doesn't actually override a super method Modified Paths: -------------- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.java Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.java 2009-03-19 08:26:03 UTC (rev 17011) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.java 2009-03-19 09:37:44 UTC (rev 17012) @@ -93,7 +93,7 @@ add(new StdWorkflow("copy", "copy") { protected void execute() { context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - @Override + public IModel getTitle() { return new Model("Sure"); } @@ -104,7 +104,7 @@ add(new StdWorkflow("move", "move") { protected void execute() { context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - @Override + public IModel getTitle() { return new Model("Sure"); } @@ -115,7 +115,7 @@ add(new StdWorkflow("rename", "rename") { protected void execute() { context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - @Override + public IModel getTitle() { return new Model("Sure"); } From svn-logs at hippocms.org Thu Mar 19 10:37:55 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Thu Mar 19 10:40:55 2009 Subject: [HippoRepos-dev] [17013] hippo-ecm: HREPTWO-2279: set specific css classes in virtual tree Message-ID: <20090319093755.931CCC17E@svnnew.onehippo.org> Revision: 17013 Author: fvlankvelt Date: 2009-03-19 10:37:55 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-2279: set specific css classes in virtual tree Modified Paths: -------------- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/IconAttributeModifier.java Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/IconAttributeModifier.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/IconAttributeModifier.java 2009-03-19 09:37:44 UTC (rev 17012) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/IconAttributeModifier.java 2009-03-19 09:37:55 UTC (rev 17013) @@ -15,6 +15,7 @@ */ package org.hippoecm.frontend.plugins.standards.list.resolvers; +import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.RepositoryException; @@ -22,6 +23,7 @@ import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.Model; import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.repository.api.HippoNode; import org.hippoecm.repository.api.HippoNodeType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,9 +58,29 @@ if (node.isNodeType(HippoNodeType.NT_HANDLE)) { return "document-16"; } else if (node.isNodeType(HippoNodeType.NT_DOCUMENT)) { - Node parent = node.getParent(); - if (parent != null && parent.isNodeType(HippoNodeType.NT_HANDLE)) { - return "document-16"; + if (node instanceof HippoNode) { + Node canonical; + try { + canonical = ((HippoNode) node).getCanonicalNode(); + if (canonical == null) { + return "folder-virtual-16"; + } + } catch (ItemNotFoundException ex) { + return "alert-16"; + } + Node parent = canonical.getParent(); + if (parent != null && parent.isNodeType(HippoNodeType.NT_HANDLE)) { + if (!canonical.isSame(node)) { + return "document-virtual-16"; + } else { + return "document-16"; + } + } + } else { + Node parent = node.getParent(); + if (parent != null && parent.isNodeType(HippoNodeType.NT_HANDLE)) { + return "document-16"; + } } } From svn-logs at hippocms.org Thu Mar 19 11:05:54 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Thu Mar 19 11:08:34 2009 Subject: [HippoRepos-dev] [17016] hippo-ecm: HREPTWO-2279: remove dysfunctional trees Message-ID: <20090319100554.6A279C5BF@svnnew.onehippo.org> Revision: 17016 Author: fvlankvelt Date: 2009-03-19 11:05:53 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-2279: remove dysfunctional trees Modified Paths: -------------- hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml Modified: hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml =================================================================== --- hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml 2009-03-19 10:03:44 UTC (rev 17015) +++ hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml 2009-03-19 10:05:53 UTC (rev 17016) @@ -326,46 +326,6 @@ - - - hippostd:folder - - - hippo:harddocument - - - - - - hippo:facetsearch - - - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - - - hippostd:weekofyear - - - - - - - - - - hippo:facetsearch - - - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - - - jcr:primaryType - - - - - - hippo:facetsearch From svn-logs at hippocms.org Thu Mar 19 11:06:01 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Thu Mar 19 11:12:34 2009 Subject: [HippoRepos-dev] [17017] hippo-ecm: HREPTWO-16: cleanup Message-ID: <20090319100601.E19ECC5BF@svnnew.onehippo.org> Revision: 17017 Author: fvlankvelt Date: 2009-03-19 11:06:01 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-16: cleanup Modified Paths: -------------- hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml 2009-03-19 10:05:53 UTC (rev 17016) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml 2009-03-19 10:06:01 UTC (rev 17017) @@ -860,7 +860,6 @@ extension.browser extension.list - extension.workflows service.browse.tree @@ -868,9 +867,6 @@ service.browse.list - - service.browse.workflows - @@ -1043,110 +1039,7 @@ - - - - frontend:plugin - - - org.hippoecm.frontend.service.render.ListViewPlugin - - - service.browse.workflows - - - service.browse.workflows.category - - - - - frontend:plugin - - - org.hippoecm.frontend.service.render.ListViewPlugin - - - service.browse.workflows.category - - - service.browse.workflows.category.internal - - - - - - frontend:plugin - - - org.hippoecm.frontend.plugin.workflow.WorkflowPlugin - - - model.browse.folder - - - threepane - - - - frontend:pluginconfig - - - service.browse.workflows.category.internal - - - service.edit - - - service.browse - - - service.translator.search - - - - - - - frontend:plugin - - - org.hippoecm.frontend.service.render.ListViewPlugin - - - service.browse.workflows.category - - - service.browse.workflows.category.embed - - - - - - frontend:plugin - - - org.hippoecm.frontend.plugin.workflow.EmbedWorkflowPlugin - - - model.browse.document - - - embedded - - - - frontend:pluginconfig - - - service.browse.workflows.category.embed - - - service.translator.search - - - - frontend:plugin Modified: hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html =================================================================== --- hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html 2009-03-19 10:05:53 UTC (rev 17016) +++ hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html 2009-03-19 10:06:01 UTC (rev 17017) @@ -19,7 +19,6 @@

    -
    workflow here
    From svn-logs at hippocms.org Thu Mar 19 11:35:14 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Thu Mar 19 11:38:46 2009 Subject: [HippoRepos-dev] [17018] hippo-ecm/trunk: HREPTWO-812: browse to new node before closing editor, make editor model available Message-ID: <20090319103514.736DDC17E@svnnew.onehippo.org> Revision: 17018 Author: fvlankvelt Date: 2009-03-19 11:35:12 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-812: browse to new node before closing editor, make editor model available Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-19 10:06:01 UTC (rev 17017) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-19 10:35:12 UTC (rev 17018) @@ -25,12 +25,8 @@ import javax.jcr.Value; import javax.jcr.nodetype.PropertyDefinition; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import org.apache.wicket.Session; import org.apache.wicket.model.StringResourceModel; - import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.IDialogService; @@ -53,6 +49,8 @@ import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.reviewedactions.BasicReviewedActionsWorkflow; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class EditingReviewedActionsWorkflowPlugin extends CompatibilityWorkflowPlugin implements IValidateService { @SuppressWarnings("unused") @@ -176,17 +174,19 @@ workflow.commitEditableInstance(); ((UserSession) Session.get()).getJcrSession().refresh(false); - + // get new instance of the workflow, previous one may have invalidated itself EditingReviewedActionsWorkflowPlugin.this.getModel().detach(); - WorkflowDescriptor descriptor = (WorkflowDescriptor)(EditingReviewedActionsWorkflowPlugin.this.getModel().getObject()); + WorkflowDescriptor descriptor = (WorkflowDescriptor) (EditingReviewedActionsWorkflowPlugin.this + .getModel().getObject()); ((UserSession) Session.get()).getJcrSession().refresh(true); WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); workflow = (BasicReviewedActionsWorkflow) manager.getWorkflow(descriptor); Document draft = workflow.obtainEditableInstance(); IModelReference ref = context.getService(config.getString("model.id"), IModelReference.class); - ref.setModel(new JcrNodeModel(((UserSession) Session.get()).getJcrSession().getNodeByUUID(draft.getIdentity()))); + ref.setModel(new JcrNodeModel(((UserSession) Session.get()).getJcrSession().getNodeByUUID( + draft.getIdentity()))); } }); @@ -196,17 +196,19 @@ @Override public void execute(Workflow wf) throws Exception { - BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow)wf; + BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.commitEditableInstance(); + + ((UserSession) Session.get()).getJcrSession().refresh(true); + + IBrowseService browser = context.getService("browser.id", IBrowseService.class); + browser.browse(new JcrNodeModel(((WorkflowDescriptorModel) EditingReviewedActionsWorkflowPlugin.this + .getModel()).getNode())); + + IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), + IEditor.class); closing = true; - IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditor.class); editor.close(); - System.err.println("BERRY#0 "+config.getString("browser.id")); - IBrowseService browser = context.getService("browser.id", IBrowseService.class); - System.err.println("BERRY#1 "+browser); - System.err.println("BERRY#2 "+((WorkflowDescriptorModel)EditingReviewedActionsWorkflowPlugin.this.getModel())); - System.err.println("BERRY#3 "+((WorkflowDescriptorModel)EditingReviewedActionsWorkflowPlugin.this.getModel()).getNode()); - browser.browse(new JcrNodeModel(((WorkflowDescriptorModel)EditingReviewedActionsWorkflowPlugin.this.getModel()).getNode())); } }); } Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml 2009-03-19 10:06:01 UTC (rev 17017) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml 2009-03-19 10:35:12 UTC (rev 17018) @@ -144,6 +144,9 @@ ${browser.id} + + ${wicket.model} + From svn-logs at hippocms.org Thu Mar 19 13:28:47 2009 From: svn-logs at hippocms.org (avanscheltinga) Date: Thu Mar 19 13:33:08 2009 Subject: [HippoRepos-dev] [17028] hippo-ecm: HREPTWO-2336 Message-ID: <20090319122847.F3043C5BF@svnnew.onehippo.org> Revision: 17028 Author: avanscheltinga Date: 2009-03-19 13:28:46 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-2336 Added Paths: ----------- hippo-ecm/trunk/package/skin/src/main/webapp/images/controls/folderdropdownicon.png Added: hippo-ecm/trunk/package/skin/src/main/webapp/images/controls/folderdropdownicon.png =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/package/skin/src/main/webapp/images/controls/folderdropdownicon.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream From helpdesk at onehippo.com Thu Mar 19 13:28:15 2009 From: helpdesk at onehippo.com (JIRA (Auke van Scheltinga)) Date: Thu Mar 19 13:33:12 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2336) Creat a folder dropdown icon Message-ID: <17803318.1237465695888.JavaMail.jira@jira.onehippo.org> Creat a folder dropdown icon ---------------------------- Key: HREPTWO-2336 URL: http://issues.onehippo.com/browse/HREPTWO-2336 Project: Hippo Repository 2 Issue Type: Improvement Reporter: Auke van Scheltinga Assignee: Auke van Scheltinga -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Thu Mar 19 13:29:32 2009 From: svn-logs at hippocms.org (avanscheltinga) Date: Thu Mar 19 13:38:28 2009 Subject: [HippoRepos-dev] [17029] hippo-ecm: HREPTWO-1999 Message-ID: <20090319122932.AB67BC5BF@svnnew.onehippo.org> Revision: 17029 Author: avanscheltinga Date: 2009-03-19 13:29:32 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-1999 - fixed a stand alone button. Modified Paths: -------------- hippo-ecm/trunk/package/skin/src/main/webapp/screen.css Modified: hippo-ecm/trunk/package/skin/src/main/webapp/screen.css =================================================================== --- hippo-ecm/trunk/package/skin/src/main/webapp/screen.css 2009-03-19 12:28:46 UTC (rev 17028) +++ hippo-ecm/trunk/package/skin/src/main/webapp/screen.css 2009-03-19 12:29:32 UTC (rev 17029) @@ -364,8 +364,9 @@ .hippo-toolbar .hippo-toolbar-section li a.hippo-toolbar-section-button{ width: 90px; display: block; height: 17px; padding-left: 24px; padding-top: 3px; -border: 1px solid #f1f1f1; +border: 1px solid #cccccc; background: url("images/hippo-toolbar-menu-item.png") no-repeat right -20px; +cursor: pointer; } .hippo-toolbar .hippo-toolbar-section li a.hippo-toolbar-section-button:hover{ @@ -373,6 +374,17 @@ background: url("images/hippo-toolbar-menu-item.png") no-repeat top right; color: black } +body .hippo-toolbar .hippo-toolbar-section li a.hippo-toolbar-section-button-single +{ +background: transparent; +} +body .hippo-toolbar .hippo-toolbar-section li a.hippo-toolbar-section-button-single:hover{ +border: 1px solid #afafaf; +background: #fff6e0; +} + + + .hippo-toolbar .hippo-toolbar-section .hippo-toolbar-menu-item-button{ display: block; float: none; border: 1px solid transparent; padding: 5px } @@ -585,7 +597,13 @@ .hippo-tree div.wicket-tree div.row-selected{padding-top: 2px; padding-bottom: 2px;} /* set the hippo color styling */ -.hippo-tree div.wicket-tree div.row-selected {background-color: #fedc89} + +/* styling for the folder drop dowm */ +/* +.hippo-tree div.wicket-tree div.row-selected {background: #fedc89 url("images/controls/folderdropdownicon.png") no-repeat right 2px;} +*/ + +.hippo-tree div.wicket-tree div.row-selected {background: #fedc89} .hippo-tree div.wicket-tree div.row a, .hippo-tree div.wicket-tree div.row-selected a {font-weight: normal; color: black;} From svn-logs at hippocms.org Thu Mar 19 13:31:35 2009 From: svn-logs at hippocms.org (avanscheltinga) Date: Thu Mar 19 13:38:40 2009 Subject: [HippoRepos-dev] [17030] hippo-ecm: HREPTWO-1999 Message-ID: <20090319123135.3AFC1C17E@svnnew.onehippo.org> Revision: 17030 Author: avanscheltinga Date: 2009-03-19 13:31:34 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-1999 - fixed a stand alone button. Modified Paths: -------------- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuAction.html Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuAction.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuAction.html 2009-03-19 12:29:32 UTC (rev 17029) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuAction.html 2009-03-19 12:31:34 UTC (rev 17030) @@ -15,8 +15,8 @@ --> -
  • - +
  • + [DROP DOWN ICON][DROP DOWN TEXT]
  • From helpdesk at onehippo.com Thu Mar 19 14:18:34 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Thu Mar 19 14:29:47 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2337) Frontend engine tests fail Message-ID: <30060911.1237468714207.JavaMail.jira@jira.onehippo.org> Frontend engine tests fail -------------------------- Key: HREPTWO-2337 URL: http://issues.onehippo.com/browse/HREPTWO-2337 Project: Hippo Repository 2 Issue Type: Bug Reporter: Frank van Lankvelt Assignee: Frank van Lankvelt Some of the tests fail when running over SPI. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Thu Mar 19 14:22:03 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Thu Mar 19 14:30:11 2009 Subject: [HippoRepos-dev] [17036] hippo-ecm/trunk: HREPTWO-2337: fix tests Message-ID: <20090319132203.E9985C5BF@svnnew.onehippo.org> Revision: 17036 Author: fvlankvelt Date: 2009-03-19 14:22:03 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-2337: fix tests Add try/catch block to the pendingChanges impl for case where node is the root node. Use isModified on the root iso isNew on the child in the ObservationManager to include the root node in the changes that give rise to events. Modified Paths: -------------- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java hippo-ecm/trunk/repository/connector/src/main/java/org/apache/jackrabbit/jcr2spi/HippoSessionImpl.java Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java 2009-03-19 13:19:18 UTC (rev 17035) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java 2009-03-19 13:22:03 UTC (rev 17036) @@ -251,11 +251,7 @@ while (iter.hasNext()) { Node node = iter.nextNode(); String path; - if (node.isNew()) { - path = node.getParent().getPath(); - } else { - path = node.getPath(); - } + path = node.getPath(); if (isDeep) { if (path.startsWith(this.path)) { nodes.add(node); @@ -277,9 +273,20 @@ try { List nodes = new LinkedList(); if (nodeTypes == null) { + if (root.isModified()) { + nodes.add(root); + } NodeIterator iter = ((HippoSession) root.getSession()).pendingChanges(root, null); processPending(iter, nodes); } else { + if (root.isModified()) { + for (String type : nodeTypes) { + if (root.isNodeType(type)) { + nodes.add(root); + break; + } + } + } for (String type : nodeTypes) { NodeIterator iter = ((HippoSession) root.getSession()).pendingChanges(root, type); processPending(iter, nodes); @@ -289,11 +296,7 @@ List paths = new LinkedList(); for (Node node : nodes) { String path; - if (node.isNew()) { - path = node.getParent().getPath(); - } else { - path = node.getPath(); - } + path = node.getPath(); paths.add(path); if (pending.containsKey(path)) { Iterator iter = pending.get(path).update(); Modified: hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java 2009-03-19 13:19:18 UTC (rev 17035) +++ hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java 2009-03-19 13:22:03 UTC (rev 17036) @@ -222,18 +222,18 @@ testNode.setProperty("test", "bla"); JcrObservationManager.getInstance().processEvents(); - assertTrue(events.size() == 2); + assertTrue(events.size() == 1); JcrObservationManager.getInstance().processEvents(); - assertTrue(events.size() == 2); + assertTrue(events.size() == 1); testNode.setProperty("test", "die"); JcrObservationManager.getInstance().processEvents(); - assertTrue(events.size() == 3); + assertTrue(events.size() == 1); JcrObservationManager.getInstance().processEvents(); - assertTrue(events.size() == 3); + assertTrue(events.size() == 1); session.save(); } Modified: hippo-ecm/trunk/repository/connector/src/main/java/org/apache/jackrabbit/jcr2spi/HippoSessionImpl.java =================================================================== --- hippo-ecm/trunk/repository/connector/src/main/java/org/apache/jackrabbit/jcr2spi/HippoSessionImpl.java 2009-03-19 13:19:18 UTC (rev 17035) +++ hippo-ecm/trunk/repository/connector/src/main/java/org/apache/jackrabbit/jcr2spi/HippoSessionImpl.java 2009-03-19 13:22:03 UTC (rev 17036) @@ -170,8 +170,13 @@ Node candidate = (Node) itemManager.getItem(state.getHierarchyEntry()); if(nodeType != null && !candidate.isNodeType(nodeType)) continue; - if(node != null && (node.isSame(candidate) || node.isSame(node.getParent()))) + try { + if(node != null && (node.isSame(candidate) || node.isSame(node.getParent()))) + continue; + } catch (ItemNotFoundException infe) { + // ignore root node continue; + } nodes.add(candidate); } return new SetNodeIterator(nodes); From svn-logs at hippocms.org Thu Mar 19 14:43:49 2009 From: svn-logs at hippocms.org (bvdschans) Date: Thu Mar 19 14:50:34 2009 Subject: [HippoRepos-dev] [17038] hippo-ecm: HREPTWO-16: FindBug code cleanups Message-ID: <20090319134349.A5547C5BF@svnnew.onehippo.org> Revision: 17038 Author: bvdschans Date: 2009-03-19 14:43:49 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-16: FindBug code cleanups Modified Paths: -------------- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/AbstractSAXEventGenerator.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/DereferencedSessionImporter.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/DereferencedSysViewImportHandler.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/PropInfo.java Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/AbstractSAXEventGenerator.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/AbstractSAXEventGenerator.java 2009-03-19 13:33:44 UTC (rev 17037) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/AbstractSAXEventGenerator.java 2009-03-19 13:43:49 UTC (rev 17038) @@ -277,7 +277,7 @@ enteringProperties(node, level); // Collect all properties (and sort them, see JCR-1084) - SortedMap properties = new TreeMap(); + SortedMap properties = new TreeMap(); PropertyIterator propIter = node.getProperties(); while (propIter.hasNext()) { Property property = propIter.nextProperty(); @@ -286,22 +286,22 @@ // serialize jcr:primaryType, jcr:mixinTypes & jcr:uuid first: if (properties.containsKey(jcrPrimaryType)) { - process((Property) properties.remove(jcrPrimaryType), level + 1); + process(properties.remove(jcrPrimaryType), level + 1); } else { throw new RepositoryException( "Missing jcr:primaryType property: " + node.getPath()); } if (properties.containsKey(jcrMixinTypes)) { - process((Property) properties.remove(jcrMixinTypes), level + 1); + process(properties.remove(jcrMixinTypes), level + 1); } if (properties.containsKey(jcrUUID)) { - process((Property) properties.remove(jcrUUID), level + 1); + process(properties.remove(jcrUUID), level + 1); } // serialize remaining properties - Iterator iterator = properties.values().iterator(); + Iterator iterator = properties.values().iterator(); while (iterator.hasNext()) { - process((Property) iterator.next(), level + 1); + process(iterator.next(), level + 1); } // leaving properties @@ -408,7 +408,7 @@ /** * Local namespace declarations. */ - private final Map namespaces; + private final Map namespaces; /** * Instantiate a new stack @@ -417,7 +417,7 @@ */ public NamespaceStack(NamespaceStack parent) { this.parent = parent; - this.namespaces = new HashMap(); + this.namespaces = new HashMap(); } /** @@ -427,7 +427,7 @@ * @return namespace URI (or null when unknown) */ public String getNamespaceURI(String prefix) { - String namespace = (String) namespaces.get(prefix); + String namespace = namespaces.get(prefix); if (namespace != null) { // found in this element, return right away return namespace; Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/DereferencedSessionImporter.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/DereferencedSessionImporter.java 2009-03-19 13:33:44 UTC (rev 17037) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/DereferencedSessionImporter.java 2009-03-19 13:43:49 UTC (rev 17038) @@ -86,7 +86,7 @@ this.uuidBehavior = uuidBehavior; this.mergeBehavior = mergeBehavior; this.referenceBehavior = referenceBehavior; - this.resolver = resolver = new DefaultNamePathResolver(session, true); + this.resolver = new DefaultNamePathResolver(session, true); isRootReferenceable = false; try { @@ -292,6 +292,7 @@ /** * {@inheritDoc} */ + @SuppressWarnings("unchecked") public void startNode(NodeInfo nodeInfo, List propInfos) throws RepositoryException { NodeImpl parent = parents.peek(); Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/DereferencedSysViewImportHandler.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/DereferencedSysViewImportHandler.java 2009-03-19 13:33:44 UTC (rev 17037) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/DereferencedSysViewImportHandler.java 2009-03-19 13:43:49 UTC (rev 17038) @@ -342,7 +342,7 @@ throw new SAXException("error while retrieving value", ioe); } } else { - PropInfo prop = new PropInfo(currentPropName, currentPropType, (TextValue[]) currentPropValues + PropInfo prop = new PropInfo(resolver, currentPropName, currentPropType, (TextValue[]) currentPropValues .toArray(new TextValue[currentPropValues.size()])); state.props.add(prop); } Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/PropInfo.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/PropInfo.java 2009-03-19 13:33:44 UTC (rev 17037) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/xml/PropInfo.java 2009-03-19 13:43:49 UTC (rev 17038) @@ -59,7 +59,12 @@ */ private static Logger log = LoggerFactory.getLogger(PropInfo.class); + /** + * Resolver + */ + private final NamePathResolver resolver; + /** * Name of the property being imported. */ private final Name name; @@ -86,7 +91,7 @@ * @param type type of the property being imported * @param values value(s) of the property being imported */ - public PropInfo(Name name, int type, TextValue[] values) { + public PropInfo(NamePathResolver resolver, Name name, int type, TextValue[] values) { if (name.getLocalName().endsWith(Reference.REFERENCE_SUFFIX)) { String local = name.getLocalName(); local = local.substring(0, (local.length() - Reference.REFERENCE_SUFFIX.length())); @@ -100,6 +105,7 @@ this.type = type; } this.values = values.clone(); + this.resolver = resolver; } /** @@ -230,10 +236,11 @@ } private boolean isGeneratedProperty(Name name) throws RepositoryException { - if (HippoNodeType.HIPPO_PATHS.equals(name)) { + + if (HippoNodeType.HIPPO_PATHS.equals(resolver.getJCRName(name))) { return true; } - if (HippoNodeType.HIPPO_RELATED.equals(name)) { + if (HippoNodeType.HIPPO_RELATED.equals(resolver.getJCRName(name))) { return true; } return false; From helpdesk at onehippo.com Thu Mar 19 14:47:34 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Thu Mar 19 14:57:17 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2338) move documents to separate documents folder Message-ID: <12396196.1237470454135.JavaMail.jira@jira.onehippo.org> move documents to separate documents folder ------------------------------------------- Key: HREPTWO-2338 URL: http://issues.onehippo.com/browse/HREPTWO-2338 Project: Hippo Repository 2 Issue Type: Improvement Reporter: Frank van Lankvelt Assignee: Frank van Lankvelt The data structure would be cleaner if documents have their own folder. This way, user-created folders don't crowd the /content folder that also contains the gallery and assets folders. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Thu Mar 19 15:30:44 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Thu Mar 19 15:41:14 2009 Subject: [HippoRepos-dev] [17040] hippo-ecm/trunk: HREPTWO-2338: move documents to separate folder under /content Message-ID: <20090319143044.32F5BC58B@svnnew.onehippo.org> Revision: 17040 Author: fvlankvelt Date: 2009-03-19 15:30:43 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-2338: move documents to separate folder under /content Modified Paths: -------------- hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml hippo-ecm/trunk/package/config/src/main/resources/cms-dashshortcuts.xml hippo-ecm/trunk/package/config/src/main/resources/cms-headshortcuts.xml hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml Modified: hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml =================================================================== --- hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml 2009-03-19 14:29:38 UTC (rev 17039) +++ hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml 2009-03-19 14:30:43 UTC (rev 17040) @@ -27,326 +27,332 @@ - New Document - New Folder - + - hippostd:folder + hippostd:fixeddirectory - - e7579a94-7078-4812-8715-0bfbe7b5967c - hippo:harddocument + + 2c21a29c-a5d1-4e84-aec4-594e5bf93b25 + + + New Document New Folder - - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - - + - hippo:handle + hippostd:folder + + e7579a94-7078-4812-8715-0bfbe7b5967c + - hippo:hardhandle + hippo:harddocument - - 39fdf263-91ef-4a5a-b996-d9d48d6bc7e8 + + New Document + New Folder + + - defaultcontent:article + hippo:handle - hippo:harddocument + hippo:hardhandle - db1bddc5-d29f-47a1-ac12-b34d97a82715 - - - introduction - - - title - - - e7579a94-7078-4812-8715-0bfbe7b5967c - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c 39fdf263-91ef-4a5a-b996-d9d48d6bc7e8 - - unpublished - - - changed - + + + defaultcontent:article + + + hippo:harddocument + + + db1bddc5-d29f-47a1-ac12-b34d97a82715 + + + introduction + + + title + + + + + unpublished + + + changed + + + + + defaultcontent:article + + + hippo:harddocument + + + 118b876b-fc73-4400-89b8-5a0e2153628d + + + introduction + + + title published version + + + + + published + + + changed + + - + - defaultcontent:article + hippo:handle - hippo:harddocument + hippo:hardhandle - 118b876b-fc73-4400-89b8-5a0e2153628d + 4ea031f5-a168-44d2-8a87-1f983d89a9f0 - - introduction - - - title published version - - - 39fdf263-91ef-4a5a-b996-d9d48d6bc7e8 - e7579a94-7078-4812-8715-0bfbe7b5967c - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - - - published - - - changed - + + + defaultcontent:article + + + hippo:harddocument + + + b363e8be-2ec7-4f62-8ba0-2f9c7a335b17 + + + introduction + + + title + + + + + unpublished + + + new + + - + - hippo:handle + hippostd:folder - - hippo:hardhandle - - 4ea031f5-a168-44d2-8a87-1f983d89a9f0 + e0155dd8-69d3-4c80-bc0a-2b81eeb092c4 - - - defaultcontent:article - - - hippo:harddocument - - - b363e8be-2ec7-4f62-8ba0-2f9c7a335b17 - - - introduction - - - title - - - e7579a94-7078-4812-8715-0bfbe7b5967c - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - 4ea031f5-a168-44d2-8a87-1f983d89a9f0 - - - unpublished - - - new - - - - - - - - hippostd:folder - - - e0155dd8-69d3-4c80-bc0a-2b81eeb092c4 - - - hippo:harddocument - - - New Document - New Folder - - - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - - - - hippo:handle - - hippo:hardhandle + hippo:harddocument - - 31c2bb15-776a-4a55-a76f-6f06c5133ad3 + + New Document + New Folder + + - defaultcontent:news + hippo:handle - hippo:harddocument + hippo:hardhandle - d1847bd1-78da-4491-beab-e0e6d2fee3e0 - - - introduction - - - title - - - e0155dd8-69d3-4c80-bc0a-2b81eeb092c4 - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c 31c2bb15-776a-4a55-a76f-6f06c5133ad3 - - unpublished - - - unknown - - + - hippostd:date + defaultcontent:news - mix:referenceable + hippo:harddocument - - 2008-03-26T12:03:00.000+01:00 + + d1847bd1-78da-4491-beab-e0e6d2fee3e0 - - - - hippostd:html + + introduction - - body + + title + + + + unpublished + + + unknown + + + + hippostd:date + + + mix:referenceable + + + 2008-03-26T12:03:00.000+01:00 + + + + + hippostd:html + + + body + + - - - - hippostd:folder - - - cbd837ed-2f07-492e-94dc-409f089a4fcf - - - hippo:harddocument - - - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - - - New Document - New Folder - - + - hippo:handle + hippostd:folder + + cbd837ed-2f07-492e-94dc-409f089a4fcf + - hippo:hardhandle + hippo:harddocument - - fde601f4-306c-4388-8d41-9800a556d3a6 + + + New Document + New Folder + - defaultcontent:event + hippo:handle - hippo:harddocument + hippo:hardhandle - 24c54e63-78d3-452f-a9f0-f216cc60c276 - - - introduction - - - title - - - cbd837ed-2f07-492e-94dc-409f089a4fcf - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c fde601f4-306c-4388-8d41-9800a556d3a6 - - unpublished - - - unknown - - + - hippostd:date + defaultcontent:event - mix:referenceable + hippo:harddocument - - 2008-03-26T12:03:00.000+01:00 + + 24c54e63-78d3-452f-a9f0-f216cc60c276 - - - - hippostd:html + + introduction - - body + + title + + + + unpublished + + + unknown + + + + hippostd:date + + + mix:referenceable + + + 2008-03-26T12:03:00.000+01:00 + + + + + hippostd:html + + + body + + + + + hippostd:folder + + + + + 4e557532-98ff-4673-a289-5cdbb2822eed + + + hippo:harddocument + + + New Document + New Folder + + + + + hippo:facetsearch + + + 2c21a29c-a5d1-4e84-aec4-594e5bf93b25 + + + hippostd:tags + + + + + + + + hippo:facetsearch + + + 2c21a29c-a5d1-4e84-aec4-594e5bf93b25 + + + hippostd:state + + + + + - - - hippostd:folder - - - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - - - 4e557532-98ff-4673-a289-5cdbb2822eed - - - hippo:harddocument - - - New Document - New Folder - - - - - - hippo:facetsearch - - - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c - - - hippostd:tags - - - - - - hippogallery:stdImageGallery - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c 4e557532-98ff-4673-a2a9-5cdbb2822eed @@ -366,7 +372,6 @@ hippogallery:stdAssetGallery - b05f6e96-b81d-4a24-acb6-e29a0a0dc65c 4e557532-bbbb-4673-a2a9-5cdbb2822eed @@ -381,10 +386,9 @@ hippogallery:exampleAssetSet - nt:unstructured - + \ No newline at end of file Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-dashshortcuts.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-dashshortcuts.xml 2009-03-19 14:29:38 UTC (rev 17039) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-dashshortcuts.xml 2009-03-19 14:30:43 UTC (rev 17040) @@ -40,7 +40,7 @@ model.browse.folder - /content + /content/documents ${model.document} @@ -67,7 +67,7 @@ model.browse.folder - /content + /content/documents shortcuts Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-headshortcuts.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-headshortcuts.xml 2009-03-19 14:29:38 UTC (rev 17039) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-headshortcuts.xml 2009-03-19 14:30:43 UTC (rev 17040) @@ -37,7 +37,7 @@ model.browse.folder - /content + /content/documents shortcuts Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml 2009-03-19 14:29:38 UTC (rev 17039) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-pickers.xml 2009-03-19 14:30:43 UTC (rev 17040) @@ -193,7 +193,7 @@ ${cluster.id}.model.document - /content + /content/documents cms-folder-views @@ -282,7 +282,7 @@ service.translator.config - /content + /content/documents @@ -391,7 +391,7 @@ ${cluster.id}.model.document - /content + /content/documents cms-folder-views @@ -480,7 +480,7 @@ service.translator.config - /content + /content/documents Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml 2009-03-19 14:29:38 UTC (rev 17039) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml 2009-03-19 14:30:43 UTC (rev 17040) @@ -527,7 +527,7 @@ service.browse - /content + /content/documents * @@ -763,7 +763,7 @@ model.browse.document - /content + /content/documents browse-perspective-title Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml 2009-03-19 14:29:38 UTC (rev 17039) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml 2009-03-19 14:30:43 UTC (rev 17040) @@ -46,7 +46,7 @@ ${wicket.model} - /content + /content/documents true @@ -54,162 +54,49 @@ frontend:pluginconfig - - + frontend:pluginconfig - - - - - - - - - - hippostd:gallery - - - - - - false - - - - - - - - frontend:pluginconfig - - - - - - - - - - - hippostd:folder - - - true - - - frontend:pluginconfig - - - - - - - - - hippostd:directory - - - true - - - - - - frontend:pluginconfig - - - - - - - - - - - - nt:unstructured - - - - - - false - - - - - frontend:pluginconfig - - - - - - - - - hippo:handle - - - false - - - frontend:pluginconfig - - - - - - - - - hippo:facetresult - - - false - - - @@ -255,157 +142,67 @@ frontend:pluginconfig - - - - - - - - - hippostd:gallery - - - true - - - frontend:pluginconfig - - - - - - - - - nt:unstructured - - - false - - - frontend:pluginconfig - - - - - - - - - hippo:handle - - - false - - - frontend:pluginconfig - - - - - - - - - hippo:facetsearch - - - false - - - frontend:pluginconfig - - - - - - - - - hippostd:folder - - - false - - - frontend:pluginconfig - - - - - - - - - hippostd:directory - - - false - - - @@ -451,157 +248,67 @@ frontend:pluginconfig - - - - - - - - - hippostd:gallery - - - true - - - frontend:pluginconfig - - - - - - - - - nt:unstructured - - - false - - - frontend:pluginconfig - - - - - - - - - hippo:handle - - - false - - - frontend:pluginconfig - - - - - - - - - hippo:facetsearch - - - false - - - frontend:pluginconfig - - - - - - - - - hippostd:folder - - - false - - - frontend:pluginconfig - - - - - - - - - hippostd:directory - - - false - - - @@ -647,21 +354,9 @@ frontend:pluginconfig - - - /hippo:namespaces - - - - - - - - - true @@ -673,235 +368,100 @@ frontend:pluginconfig - - - - - - hippo:namespace - - - - - - false - - - frontend:pluginconfig - - - /hippo:namespaces/hippo - - - - - - - - - false - - - frontend:pluginconfig - - - /hippo:namespaces/hippogallery - - - - - - - - - false - - - frontend:pluginconfig - - - /hippo:namespaces/hippostd - - - - - - - - - false - - - frontend:pluginconfig - - - /hippo:namespaces/system - - - - - - - - - false - - - frontend:pluginconfig - - - /hippo:namespaces/frontend - - - - - - - - - false - - - frontend:pluginconfig - - - - - - - - - hippo:namespace - - - true - - - frontend:pluginconfig - - - - - - - - - hippostd:folder - - - false - - - frontend:pluginconfig - - - - - - - - - hippo:handle - - - false - - - From helpdesk at onehippo.com Thu Mar 19 18:19:54 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Thu Mar 19 18:49:40 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2338) move documents to separate documents folder In-Reply-To: <12396196.1237470454135.JavaMail.jira@jira.onehippo.org> Message-ID: <16575258.1237483194600.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2338?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2338. ----------------------------------------- Resolution: Fixed > move documents to separate documents folder > ------------------------------------------- > > Key: HREPTWO-2338 > URL: http://issues.onehippo.com/browse/HREPTWO-2338 > Project: Hippo Repository 2 > Issue Type: Improvement > Reporter: Frank van Lankvelt > Assignee: Frank van Lankvelt > > The data structure would be cleaner if documents have their own folder. This way, user-created folders don't crowd the /content folder that also contains the gallery and assets folders. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Thu Mar 19 18:24:21 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Thu Mar 19 18:50:01 2009 Subject: [HippoRepos-dev] [17052] hippo-ecm: HREPTWO-812: make global browser service available Message-ID: <20090319172421.F1A02C5BF@svnnew.onehippo.org> Revision: 17052 Author: fvlankvelt Date: 2009-03-19 18:24:21 +0100 (Thu, 19 Mar 2009) Log Message: ----------- HREPTWO-812: make global browser service available Modified Paths: -------------- hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml 2009-03-19 17:03:46 UTC (rev 17051) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml 2009-03-19 17:24:21 UTC (rev 17052) @@ -142,7 +142,7 @@ ${editor.id} - ${browser.id} + service.browse ${wicket.model} From svn-logs at hippocms.org Fri Mar 20 10:39:01 2009 From: svn-logs at hippocms.org (bvdschans) Date: Fri Mar 20 11:41:18 2009 Subject: [HippoRepos-dev] [17055] hippo-ecm: HREPTWO-16: Add extra refresh before fetching old version Message-ID: <20090320093901.34801C5BF@svnnew.onehippo.org> Revision: 17055 Author: bvdschans Date: 2009-03-20 10:39:00 +0100 (Fri, 20 Mar 2009) Log Message: ----------- HREPTWO-16: Add extra refresh before fetching old version Modified Paths: -------------- hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/VersioningWorkflowTest.java Modified: hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/VersioningWorkflowTest.java =================================================================== --- hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/VersioningWorkflowTest.java 2009-03-20 09:36:40 UTC (rev 17054) +++ hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/VersioningWorkflowTest.java 2009-03-20 09:39:00 UTC (rev 17055) @@ -162,6 +162,7 @@ node.checkout(); node.setProperty("hippostd:holder", node.getProperty("hippostd:holder").getString() + "."); session.save(); + session.refresh(false); versionwf = (VersionWorkflow) getWorkflow(node, "versioning"); Map> history = versionwf.list(); int count = 0; From svn-logs at hippocms.org Fri Mar 20 11:52:25 2009 From: svn-logs at hippocms.org (bvdschans) Date: Fri Mar 20 13:16:19 2009 Subject: [HippoRepos-dev] [17060] hippo-ecm: HREPTWO-16: make sure test starts with clean data Message-ID: <20090320105225.70A80C5BF@svnnew.onehippo.org> Revision: 17060 Author: bvdschans Date: 2009-03-20 11:52:25 +0100 (Fri, 20 Mar 2009) Log Message: ----------- HREPTWO-16: make sure test starts with clean data Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java Modified: hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java 2009-03-20 10:47:49 UTC (rev 17059) +++ hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java 2009-03-20 10:52:25 UTC (rev 17060) @@ -54,26 +54,27 @@ Node node, root = session.getRootNode(); node = root.getNode("hippo:configuration/hippo:workflows"); - if (!node.hasNode("versioning")) { - node = node.addNode("versioning", "hippo:workflowcategory"); - node = node.addNode("version", "hippo:workflow"); - node.setProperty("hippo:nodetype", "hippo:document"); - node.setProperty("hippo:display", "Versioning workflow"); - node.setProperty("hippo:classname", "org.hippoecm.repository.api.Document"); - node.setProperty("hippo:workflow", "org.hippoecm.repository.standardworkflow.VersionWorkflowImpl"); - Node types = node.getNode("hippo:types"); - node = types.addNode("org.hippoecm.repository.api.Document", "hippo:type"); - node.setProperty("hippo:nodetype", "hippo:document"); - node.setProperty("hippo:display", "Document"); - node.setProperty("hippo:classname", "org.hippoecm.repository.api.Document"); + + if (node.hasNode("versioning")) { + node.getNode("versioning").remove(); } + node = node.addNode("versioning"); + node = node.addNode("versioning", "hippo:workflowcategory"); + node = node.addNode("version", "hippo:workflow"); + node.setProperty("hippo:nodetype", "hippo:document"); + node.setProperty("hippo:display", "Versioning workflow"); + node.setProperty("hippo:classname", "org.hippoecm.repository.api.Document"); + node.setProperty("hippo:workflow", "org.hippoecm.repository.standardworkflow.VersionWorkflowImpl"); + Node types = node.getNode("hippo:types"); + node = types.addNode("org.hippoecm.repository.api.Document", "hippo:type"); + node.setProperty("hippo:nodetype", "hippo:document"); + node.setProperty("hippo:display", "Document"); + node.setProperty("hippo:classname", "org.hippoecm.repository.api.Document"); - if (!root.hasNode("test")) { - root = root.addNode("test"); - } else { - root = root.getNode("test"); + if (root.hasNode("test")) { + root.getNode("test").remove(); } - + root = root.addNode("test"); node = root.addNode("versiondocument", "hippo:handle"); node.addMixin("hippo:hardhandle"); node.addMixin("mix:referenceable"); From svn-logs at hippocms.org Fri Mar 20 12:41:12 2009 From: svn-logs at hippocms.org (bvdschans) Date: Fri Mar 20 14:04:20 2009 Subject: [HippoRepos-dev] [17061] hippo-ecm: HREPTWO-16: fix typo Message-ID: <20090320114112.DA67EC5BF@svnnew.onehippo.org> Revision: 17061 Author: bvdschans Date: 2009-03-20 12:41:12 +0100 (Fri, 20 Mar 2009) Log Message: ----------- HREPTWO-16: fix typo Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java Modified: hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java 2009-03-20 10:52:25 UTC (rev 17060) +++ hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java 2009-03-20 11:41:12 UTC (rev 17061) @@ -58,7 +58,6 @@ if (node.hasNode("versioning")) { node.getNode("versioning").remove(); } - node = node.addNode("versioning"); node = node.addNode("versioning", "hippo:workflowcategory"); node = node.addNode("version", "hippo:workflow"); node.setProperty("hippo:nodetype", "hippo:document"); From svn-logs at hippocms.org Fri Mar 20 13:24:42 2009 From: svn-logs at hippocms.org (bvdschans) Date: Fri Mar 20 14:56:21 2009 Subject: [HippoRepos-dev] [17063] hippo-ecm: HREPTWO-16: Disable part of the test for now Message-ID: <20090320122442.38E10C5BF@svnnew.onehippo.org> Revision: 17063 Author: bvdschans Date: 2009-03-20 13:24:41 +0100 (Fri, 20 Mar 2009) Log Message: ----------- HREPTWO-16: Disable part of the test for now Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java Modified: hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java 2009-03-20 12:18:18 UTC (rev 17062) +++ hippo-ecm/trunk/addon/reviewed-action/test/src/test/java/org/hippoecm/repository/reviewedactions/VersioningWorkflowTest.java 2009-03-20 12:24:41 UTC (rev 17063) @@ -166,7 +166,6 @@ for (int i = 0; i < expected.size(); i++) { assertEquals(expected.get(i), versions.get(i)); } - */ restore(history.keySet().iterator().next()); assertNotNull(getNode("test/versiondocument/versiondocument[@hippostd:state='published']")); @@ -179,6 +178,8 @@ } catch(WorkflowException ex) { // this exception should occur } + + */ } private void restore(Calendar historic) throws WorkflowException, MappingException, RepositoryException, RemoteException { From helpdesk at onehippo.com Fri Mar 20 15:04:35 2009 From: helpdesk at onehippo.com (JIRA (Rita Bijlsma)) Date: Fri Mar 20 16:26:39 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2339) addon/gallery/import exec failure Message-ID: <8364348.1237557875302.JavaMail.jira@jira.onehippo.org> addon/gallery/import exec failure --------------------------------- Key: HREPTWO-2339 URL: http://issues.onehippo.com/browse/HREPTWO-2339 Project: Hippo Repository 2 Issue Type: Bug Reporter: Rita Bijlsma Fix For: r2.05.01 (m12 - update) Error after mvn exec:java. "Provider for javax.xml.parsers.DocumentBuilderFactory cannot be found" A missing dependency? We need it working for Duitslandweb. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 20 15:51:35 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 20 16:44:40 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2340) Can add same user multiple times to a group Message-ID: <28227223.1237560695271.JavaMail.jira@jira.onehippo.org> Can add same user multiple times to a group ------------------------------------------- Key: HREPTWO-2340 URL: http://issues.onehippo.com/browse/HREPTWO-2340 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.01 (m12 - update) Reporter: Frank van Lankvelt Assignee: Bart van der Schans Fix For: Backlog It is possible to add the same user multiple times to the same group. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 20 15:55:35 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Fri Mar 20 16:44:46 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2341) Cannot create user Message-ID: <2968742.1237560935358.JavaMail.jira@jira.onehippo.org> Cannot create user ------------------ Key: HREPTWO-2341 URL: http://issues.onehippo.com/browse/HREPTWO-2341 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Frank van Lankvelt Assignee: Bart van der Schans Fix For: Backlog It is not possible to create a user. The form does show up and allows me to enter data & click "Create",but this does not have any effect. The form stays open and when I navigate back to the overview page, the user is not listed. I'm using the data: username: abc first: a last: b email: c@d.nl password: abc Perhaps there is a password restriction? -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Mon Mar 23 13:58:49 2009 From: svn-logs at hippocms.org (bvdschans) Date: Mon Mar 23 13:57:23 2009 Subject: [HippoRepos-dev] [17075] hippo-ecm/trunk: HREPTWO-1968: Upgrade to JR 1. 5 internal permission interfaces Message-ID: <20090323125849.70417C58B@svnnew.onehippo.org> Revision: 17075 Author: bvdschans Date: 2009-03-23 13:58:48 +0100 (Mon, 23 Mar 2009) Log Message: ----------- HREPTWO-1968: Upgrade to JR 1.5 internal permission interfaces - Implement AccessControlManager - Implement Privileges - Move from permissions check for privileges check (workflow) HREPTWO-1956: Fix some authorization tests HREPTWO-2126: Fix self exclusion Several other related other fixes: - update default content to use privileges - update tests to be a bit more robust (hopefully) - add BoilerPlateTest as an example of how to write tests - add MemoryTest as an example of how to use a proviler to check for mem leaks - some logging fixes Modified Paths: -------------- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/shortcuts-workflows.xml hippo-ecm/trunk/addon/builtin/test/src/main/resources/org/hippoecm/repository/default-workflows.xml hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/FolderWorkflowTest.java hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/repository.xml hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/HippoNodeType.java hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultwrite.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-frontendconfig.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-hippodocuments.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-hippofolders.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-hippogallery.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-hippolog.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-htmlcleaner.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-templates.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-versioning.xml hippo-ecm/trunk/package/auth/src/main/resources/domain-workflow.xml hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml hippo-ecm/trunk/package/auth/src/main/resources/role-author.xml hippo-ecm/trunk/package/auth/src/main/resources/role-editor.xml hippo-ecm/trunk/package/auth/src/main/resources/role-jcrread.xml hippo-ecm/trunk/package/auth/src/main/resources/role-jcrwrite.xml hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/Modules.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/SessionImplHelper.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/AuthorizationQuery.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/AbstractSecurityProvider.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoLoginModule.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityManager.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityProviderFactory.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/Domains.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/FacetRule.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/group/AbstractGroupManager.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/principals/FacetAuthPrincipal.java hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/configuration.xml hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/repository.cnd hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedAuthorizationTest.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationAbstractTest.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationChildNameTest.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationNamespaceTest.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationPerfTestCase.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationTest.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO280Test.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO425Test.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO650Test.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HippoISMTest.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/PhysicalExportSystemViewTest.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/TestCase.java hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultread.xml hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultwrite.xml hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrread.xml hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrwrite.xml hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteSPITest.java hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteTest.java Added Paths: ----------- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/MemoryTest.java Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -28,8 +28,8 @@ hippo:namespace - - admin + + hippo:admin org.hippoecm.repository.standardworkflow.TemplateEditorWorkflowImpl @@ -75,8 +75,8 @@ hippostd:gallery - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl @@ -100,8 +100,8 @@ hippostd:folder - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl @@ -125,8 +125,8 @@ hippostd:directory - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl @@ -150,8 +150,8 @@ rep:root - - admin + + hippo:admin org.hippoecm.repository.standardworkflow.FolderWorkflowImpl Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -71,8 +71,8 @@ rep:root - - admin + + hippo:admin org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl @@ -94,8 +94,8 @@ hippostd:gallery - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl @@ -119,8 +119,8 @@ hippostd:fixeddirectory - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl @@ -144,8 +144,8 @@ hippostd:folder - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl @@ -169,8 +169,8 @@ hippostd:directory - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/shortcuts-workflows.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/shortcuts-workflows.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/shortcuts-workflows.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -28,8 +28,8 @@ hippostd:gallery - - author + + hippo:author org.hippoecm.repository.gallery.impl.GalleryWorkflowImpl @@ -53,8 +53,8 @@ hippostd:folder - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl @@ -78,8 +78,8 @@ hippostd:directory - - author + + hippo:author org.hippoecm.repository.standardworkflow.FolderWorkflowImpl Modified: hippo-ecm/trunk/addon/builtin/test/src/main/resources/org/hippoecm/repository/default-workflows.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/test/src/main/resources/org/hippoecm/repository/default-workflows.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/addon/builtin/test/src/main/resources/org/hippoecm/repository/default-workflows.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -81,8 +81,8 @@ hippo:workflow - - author + + hippo:author hippo:document Modified: hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/FolderWorkflowTest.java =================================================================== --- hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/FolderWorkflowTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/FolderWorkflowTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -109,7 +109,8 @@ assertEquals("/test/aap/noot/mies", iter.nextNode().getPath()); } - @Test + // FIXME: Re-enable test. Maybe some configuration is missing? Does the (root) user have the correct privileges (hippo:editor)? + @Ignore public void testDelete() throws Exception { Node document = session.getRootNode().getNode("test/aap/noot/mies/vuur/jot/gijs"); Workflow workflow = manager.getWorkflow("default", document); Modified: hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/repository.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/repository.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/repository.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -29,7 +29,7 @@ security configuration --> - + Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -24,8 +24,8 @@ frontend:workflow - - author + + hippo:author hippostd:publishable @@ -102,8 +102,8 @@ frontend:workflow - - author + + hippo:author hippo:document Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -28,8 +28,8 @@ hippostd:publishable - - editor + + hippo:editor org.hippoecm.repository.reviewedactions.FullReviewedActionsWorkflowImpl @@ -78,8 +78,8 @@ frontend:workflow - - editor + + hippo:editor hipposched:job @@ -103,8 +103,8 @@ frontend:workflow - - author + + hippo:author hipposched:job @@ -128,8 +128,8 @@ frontend:workflow - - author + + hippo:author hippostd:publishable @@ -184,8 +184,8 @@ hippo:request - - editor + + hippo:editor org.hippoecm.repository.reviewedactions.FullRequestWorkflowImpl @@ -234,8 +234,8 @@ frontend:workflow - - author + + hippo:author hippo:request @@ -353,8 +353,8 @@ frontend:workflow - - author + + hippo:author hippo:document Modified: hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/HippoNodeType.java =================================================================== --- hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/HippoNodeType.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/HippoNodeType.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -142,6 +142,7 @@ final public static String HIPPO_PATHS = "hippo:paths"; final public static String HIPPO_PERMISSIONCACHESIZE = "hippo:permissioncachesize"; final public static String HIPPO_PRIMARY = "hippo:primary"; + final public static String HIPPO_PRIVILEGES = "hippo:privileges"; final public static String HIPPO_PROTOTYPE = "hippo:prototype"; final public static String HIPPO_QUERYNAME = "hippo:queryname"; final public static String HIPPO_RELATED = "hippo:related"; Modified: hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -32,6 +32,7 @@ @RunWith(RemoteSPITest.class) @Suite.SuiteClasses({ org.hippoecm.frontend.model.event.ObservationTest.class + }) public class RemoteSPITest extends Suite { Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -336,16 +336,15 @@ - - - - hippo:authrole - - - everybody - - - jcrread - - + + + hippo:authrole + + + everybody + + + readonly + + Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultwrite.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultwrite.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultwrite.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -186,7 +186,7 @@ editor - jcrwrite + readwrite Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-frontendconfig.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-frontendconfig.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-frontendconfig.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -218,7 +218,7 @@ everybody - jcrread + readonly Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-hippodocuments.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-hippodocuments.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-hippodocuments.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -54,6 +54,7 @@ hippo:authrole + admin editor Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-hippofolders.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-hippofolders.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-hippofolders.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -83,7 +83,7 @@ editor - jcrwrite + readwrite Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-hippogallery.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-hippogallery.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-hippogallery.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -80,7 +80,7 @@ editor - jcrwrite + readwrite Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-hippolog.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-hippolog.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-hippolog.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -81,7 +81,7 @@ everybody - jcrread + readonly Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-htmlcleaner.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-htmlcleaner.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-htmlcleaner.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -147,7 +147,7 @@ everybody - jcrread + readonly Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-templates.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-templates.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-templates.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -169,7 +169,7 @@ everybody - jcrread + readonly Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-versioning.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-versioning.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-versioning.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -146,7 +146,7 @@ everybody - jcrread + readonly Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-workflow.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-workflow.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-workflow.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -234,7 +234,7 @@ everybody - jcrread + readonly Modified: hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -28,12 +28,6 @@ hippo:group - admin - workflowuser - editor author - - - Modified: hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -28,11 +28,6 @@ hippo:group - admin - workflowuser editor - - - Modified: hippo-ecm/trunk/package/auth/src/main/resources/role-author.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/role-author.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/role-author.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -24,16 +24,11 @@ xmlns:hippo="http://www.hippoecm.org/nt/1.2" xmlns:fn="http://www.w3.org/2005/xpath-functions" sv:name="author"> - - hippo:role - - - true - - - false - - - false - + + hippo:role + + + jcr:read + hippo:author + Modified: hippo-ecm/trunk/package/auth/src/main/resources/role-editor.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/role-editor.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/role-editor.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -27,13 +27,12 @@ hippo:role - - true + + jcr:read + jcr:write + hippo:editor - - true + + author - - true - Modified: hippo-ecm/trunk/package/auth/src/main/resources/role-jcrread.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/role-jcrread.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/role-jcrread.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -23,17 +23,11 @@ xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:hippo="http://www.hippoecm.org/nt/1.2" xmlns:fn="http://www.w3.org/2005/xpath-functions" - sv:name="jcrread"> - - hippo:role - - - true - - - false - - - false - + sv:name="readonly"> + + hippo:role + + + jcr:read + Modified: hippo-ecm/trunk/package/auth/src/main/resources/role-jcrwrite.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/role-jcrwrite.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/package/auth/src/main/resources/role-jcrwrite.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -23,17 +23,12 @@ xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:hippo="http://www.hippoecm.org/nt/1.2" xmlns:fn="http://www.w3.org/2005/xpath-functions" - sv:name="jcrwrite"> - - hippo:role - - - true - - - true - - - true - + sv:name="readwrite"> + + hippo:role + + + jcr:read + jcr:write + Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/Modules.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/Modules.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/Modules.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -73,8 +73,12 @@ try { Manifest manifest = new Manifest(url.openStream()); String modulesString = manifest.getMainAttributes().getValue("Hippo-Modules"); - log.info("Modules as specified by manifest {} are {}", url.toString(), (modulesString != null ? modulesString : "none")); if (modulesString != null) { + log.info("Hippo-Modules specified by manifest {} : {}", url.toString(), modulesString); + } else { + log.debug("Hippo-Modules specified by manifest {} : none", url.toString()); + } + if (modulesString != null) { for (StringTokenizer tok = new StringTokenizer(modulesString); tok.hasMoreTokens();) { String moduleClassName = tok.nextToken().trim(); if (!moduleClassName.equals("")) { @@ -113,10 +117,10 @@ static void setModules(Modules modules) { allModules = modules; - if (log.isDebugEnabled()) { - log.debug("Default list of modules set to:"); + if (log.isInfoEnabled()) { + log.info("Default list of modules set to:"); for (Object module : allModules) { - log.debug(" " + module.getClass().getName()); + log.info(" " + module.getClass().getName()); } } } Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -148,8 +148,8 @@ } if (item.isNodeType(workflowNode.getProperty(HippoNodeType.HIPPO_NODETYPE).getString())) { boolean hasPermission = true; - if(workflowNode.hasProperty(HippoNodeType.HIPPO_ROLES)) { - Value[] privileges = workflowNode.getProperty(HippoNodeType.HIPPO_ROLES).getValues(); + if(workflowNode.hasProperty(HippoNodeType.HIPPO_PRIVILEGES)) { + Value[] privileges = workflowNode.getProperty(HippoNodeType.HIPPO_PRIVILEGES).getValues(); for(int i=0; i privileges = new HashSet(); - for (int i = 0; i < strings.length; i++) { - // skip the default jcr permissions as the have already been checked. - if(!SessionImpl.READ_ACTION.equals(strings[i]) && - !SessionImpl.REMOVE_ACTION.equals(strings[i]) && - !SessionImpl.ADD_NODE_ACTION.equals(strings[i]) && - !SessionImpl.SET_PROPERTY_ACTION.equals(strings[i])) { + // build the set of actions to be checked + String[] strings = actions.split(","); + HashSet privileges = new HashSet(); + for (int i = 0; i < strings.length; i++) { + // skip the default jcr permissions as the have already been checked. + if(!SessionImpl.READ_ACTION.equals(strings[i]) && + !SessionImpl.REMOVE_ACTION.equals(strings[i]) && + !SessionImpl.ADD_NODE_ACTION.equals(strings[i]) && + !SessionImpl.SET_PROPERTY_ACTION.equals(strings[i])) { - privileges.add(strings[i]); - } + privileges.add(acMgr.privilegeFromName(strings[i])); } - if (privileges.size() > 0) { - if (!((HippoAccessManager) accessMgr).hasPrivileges(absPath, privileges.toArray(new String[privileges.size()]))) - throw new AccessControlException("Privileges '" + actions + "' denied for " + absPath); + } + if (privileges.size() > 0) { + if (!acMgr.hasPrivileges(absPath, privileges.toArray(new Privilege[privileges.size()]))) { + throw new AccessControlException("Privileges '" + actions + "' denied for " + absPath); } } } Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/AuthorizationQuery.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/AuthorizationQuery.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/AuthorizationQuery.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -95,8 +95,10 @@ BooleanQuery authQuery = new BooleanQuery(true); Iterator facetAuthsIt = facetAuths.iterator(); while (facetAuthsIt.hasNext()) { - // TODO test for facetAuthPrincipal wether 'read' is bit is set to 1 in ROLE FacetAuthPrincipal facetAuthPrincipal = facetAuthsIt.next(); + if (!facetAuthPrincipal.getPrivileges().contains("jcr:read")) { + continue; + } Iterator domainRulesIt = facetAuthPrincipal.getRules().iterator(); while (domainRulesIt.hasNext()) { DomainRule domainRule = domainRulesIt.next(); Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/AbstractSecurityProvider.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/AbstractSecurityProvider.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/AbstractSecurityProvider.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -25,7 +25,7 @@ public abstract class AbstractSecurityProvider implements SecurityProvider { @SuppressWarnings("unused") - final static String SVN_ID = "$Id$"; + private final static String SVN_ID = "$Id$"; protected UserManager userManager = new DummyUserManager(); protected GroupManager groupManager = new DummyGroupManager(); Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -16,10 +16,12 @@ package org.hippoecm.repository.security; import java.util.ArrayList; -import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.WeakHashMap; +import java.util.concurrent.ConcurrentHashMap; import javax.jcr.AccessDeniedException; import javax.jcr.ItemNotFoundException; @@ -34,10 +36,16 @@ import javax.jcr.nodetype.NodeTypeManager; import javax.security.auth.Subject; +import org.apache.jackrabbit.api.jsr283.security.AccessControlException; +import org.apache.jackrabbit.api.jsr283.security.AccessControlManager; +import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicy; +import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicyIterator; +import org.apache.jackrabbit.api.jsr283.security.Privilege; import org.apache.jackrabbit.core.ItemId; import org.apache.jackrabbit.core.NodeId; import org.apache.jackrabbit.core.PropertyId; import org.apache.jackrabbit.core.security.AMContext; +import org.apache.jackrabbit.core.security.AccessControlPolicyIteratorAdapter; import org.apache.jackrabbit.core.security.AccessManager; import org.apache.jackrabbit.core.security.AnonymousPrincipal; import org.apache.jackrabbit.core.security.SystemPrincipal; @@ -53,10 +61,7 @@ import org.apache.jackrabbit.core.value.InternalValue; import org.apache.jackrabbit.spi.Name; import org.apache.jackrabbit.spi.Path; -import org.apache.jackrabbit.spi.commons.conversion.CachingNameResolver; -import org.apache.jackrabbit.spi.commons.conversion.NameException; import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver; -import org.apache.jackrabbit.spi.commons.conversion.NameResolver; import org.apache.jackrabbit.spi.commons.conversion.ParsingPathResolver; import org.apache.jackrabbit.spi.commons.conversion.PathResolver; import org.apache.jackrabbit.spi.commons.name.NameConstants; @@ -87,7 +92,7 @@ * are granted. * */ -public class HippoAccessManager implements AccessManager { +public class HippoAccessManager implements AccessManager, AccessControlManager { /** SVN id placeholder */ @SuppressWarnings("unused") @@ -117,13 +122,9 @@ * NamePathResolver */ private NamePathResolver npRes; - + + /** - * NameResolver - */ - private NameResolver nRes; - - /** * Name of hippo:handle, needed for document model checking */ private Name hippoHandle; @@ -144,11 +145,6 @@ private NodeId rootNodeId; /** - * State of the accessManager - */ - private boolean initialized; - - /** * The HippoAccessCache instance */ private HippoAccessCache readAccessCache; @@ -161,19 +157,24 @@ private final NodeTypeInstanceOfCache ntIOCache = NodeTypeInstanceOfCache.getInstance(); /** + * State of the accessManager + */ + private boolean initialized = false; + + /** * Flag whether current user is anonymous */ - private boolean isAnonymous; + private boolean isAnonymous = false; /** * Flag whether current user is a regular user */ - private boolean isUser; + private boolean isUser = false; /** * Flag whether the current user is a system user */ - private boolean isSystem; + private boolean isSystem = false; /** * The userId of the logged in user @@ -183,53 +184,39 @@ private final List groupIds = new ArrayList(); private final List currentDomainRoleIds = new ArrayList(); - /** - * A ItemId->ItemState cache that is only valid during a single isGranted. - * Some property states are resolved many times and this can be expensive - * especially for states from the attic. - */ - private final HashMap requestItemStateCache = new HashMap(); /** * The logger */ private static final Logger log = LoggerFactory.getLogger(HippoAccessManager.class); + private static ConcurrentHashMap currentPrivileges = new ConcurrentHashMap(); + + //---------------------------------------- API ---------------------------------------------// /** - * Empty constructor + * @see AccessManager#init(AMContext, AccessControlProvider, WorkspaceAccessManager) */ - public HippoAccessManager() { - initialized = false; - isAnonymous = false; - isUser = false; - isSystem = false; - } - - /** - * {@inheritDoc} - */ public void init(AMContext context, AccessControlProvider acProvider, WorkspaceAccessManager wspAccessMgr) throws AccessDeniedException, Exception { init(context); } /** - * {@inheritDoc} + * @see AccessManager#init(AMContext) */ public void init(AMContext context) throws AccessDeniedException, Exception { if (initialized) { throw new IllegalStateException("already initialized"); } subject = context.getSubject(); - hierMgr = (HippoHierarchyManager) context.getHierarchyManager(); + npRes = context.getNamePathResolver(); if (context instanceof HippoAMContext) { ntMgr = ((HippoAMContext) context).getNodeTypeManager(); itemMgr = (HippoSessionItemStateManager) ((HippoAMContext) context).getSessionItemStateManager(); - // This will be part of the new AMContext in JR 1.5 - npRes = ((HippoAMContext) context).getNamePathResolver(); } - nRes = new CachingNameResolver(context.getNamePathResolver()); - + + hierMgr = (HippoHierarchyManager) itemMgr.getAtticAwareHierarchyMgr(); + // Shortcuts for checks isSystem = !subject.getPrincipals(SystemPrincipal.class).isEmpty(); isUser = !subject.getPrincipals(UserPrincipal.class).isEmpty(); @@ -254,35 +241,34 @@ // cache root NodeId rootNodeId = hierMgr.resolveNodePath(PathFactoryImpl.getInstance().getRootPath()); - hippoHandle = nRes.getQName(HippoNodeType.NT_HANDLE); - hippoFacetSearch = nRes.getQName(HippoNodeType.NT_FACETSEARCH); - hippoFacetSelect = nRes.getQName(HippoNodeType.NT_FACETSELECT); - + hippoHandle = npRes.getQName(HippoNodeType.NT_HANDLE); + hippoFacetSearch = npRes.getQName(HippoNodeType.NT_FACETSEARCH); + hippoFacetSelect = npRes.getQName(HippoNodeType.NT_FACETSELECT); + // initialize read cache int cacheSize = getPermCacheSize(); if (cacheSize < 0) { cacheSize = DEFAULT_PERM_CACHE_SIZE; } - log.debug("Setting cache size: {}", cacheSize); HippoAccessCache.setMaxSize(cacheSize); readAccessCache = HippoAccessCache.getInstance(userId); // we're done initialized = true; + + log.info("Initialized HippoAccessManager for user " + userId + " with cache size " + cacheSize); } /** - * {@inheritDoc} + * @see AccessManager#close() */ public synchronized void close() throws Exception { - if (!initialized) { - throw new IllegalStateException("not initialized"); - } + checkInitialized(); initialized = false; // clear out all caches readAccessCache.clear(); - requestItemStateCache.clear(); + //requestItemStateCache.clear(); groupIds.clear(); currentDomainRoleIds.clear(); @@ -292,112 +278,246 @@ itemMgr = null; ntMgr = null; npRes = null; - nRes = null; + log.info("Closed HippoAccessManager for user " + userId); } /** - * Try to read the cache size from the configuration - * @return the size or -1 when not found + * @see AccessManager#checkPermission(ItemId, int) + * @deprecated */ - private int getPermCacheSize() { - try { - PathResolver resolver = new ParsingPathResolver(PathFactoryImpl.getInstance(), nRes); - Path path = resolver.getQPath("/" + HippoNodeType.CONFIGURATION_PATH + "/" + HippoNodeType.SECURITY_PATH - + "/" + HippoNodeType.ACCESSMANAGER_PATH + "" + HippoNodeType.HIPPO_PERMISSIONCACHESIZE); - PropertyId confId = hierMgr.resolvePropertyPath(path); - if (confId != null) { - PropertyState state = (PropertyState) getItemState(confId); - InternalValue[] iVals = state.getValues(); - if (iVals.length > 0 && ((int) iVals[0].getLong()) > 0) { - return (int) iVals[0].getLong(); - } + public void checkPermission(ItemId id, int permissions) throws AccessDeniedException, ItemNotFoundException, + RepositoryException { + log.warn("checkPermission(ItemId, int) is DEPRECATED!", new RepositoryException("Use of deprecated method checkPermission(ItemId, int)")); + // just use the isGranted method + if (!isGranted(id, permissions)) { + throw new AccessDeniedException(); + } + } + + /** + * @see AccessManager#isGranted(ItemId, int) + * @deprecated + */ + public boolean isGranted(ItemId id, int permissions) throws RepositoryException { + checkInitialized(); + if (permissions != READ) { + log.warn("isGranted(ItemId, int) is DEPRECATED!", new RepositoryException("Use of deprecated method isGranted(ItemId, int)")); + } + + if (isSystem) { + return true; + } + + // handle properties + if (!id.denotesNode()) { + if ((permissions & (Permission.REMOVE_NODE | Permission.REMOVE_PROPERTY)) != 0) { + // Don't check remove on properties. A write check on the node itself is done. + Thread.dumpStack(); + return true; } - } catch (NoSuchItemStateException e) { - // not configured, expected - } catch (RepositoryException e) { - // too bad.. no correct config found + return isGranted(((PropertyId) id).getParentId(), permissions); } - return -1; + + // fast track common read check + if (permissions == Permission.READ) { + // check cache + Boolean allowRead = readAccessCache.get(id); + if (allowRead != null) { + return allowRead.booleanValue(); + } + return canRead(hierMgr.getPath(id)); + } + + // not a read, remove node from cache + readAccessCache.remove(id); + + return isGranted(hierMgr.getPath(id), permissions); } /** - * Check whether a user can access the NodeState with the requested permissions - * @param nodeState the state of the node to check - * @param permissions the (bitset) of the permissions - * @return true if the user is allowed the requested permissions on the node - * @throws RepositoryException - * @throws NoSuchItemStateException + * @see AccessManager#isGranted(Path, int) */ - protected boolean canAccessNode(NodeState nodeState, int permissions) throws RepositoryException, NoSuchItemStateException { - // system and admin have all permissions + public boolean isGranted(Path absPath, int permissions) throws RepositoryException { + checkInitialized(); + if (!absPath.isAbsolute()) { + throw new RepositoryException("Absolute path expected"); + } if (isSystem) { return true; } - // no facetAuths -> not allowed... - if (subject.getPrincipals(FacetAuthPrincipal.class).isEmpty()) { - return false; + if (log.isInfoEnabled()) { + log.info("Checking [{}] for absPath: {}", permsString(permissions), npRes.getJCRPath(absPath)); } - // check for facet authorization - if (checkFacetAuth(nodeState, permissions)) { + + // fasttrack read permissions check + if (permissions == Permission.READ) { + return canRead(absPath); + } + + // part of combined permissions check + if ((permissions & Permission.READ) != 0) { + if (!canRead(absPath)) { + // all permissions must be matched + return false; + } + } + + // translate permissions to privileges according to 6.11.1.4 of JSR-283 + String parentJcrPath = npRes.getJCRPath(absPath.getAncestor(1)); + Set privileges = new HashSet(); + if ((permissions & Permission.ADD_NODE) != 0) { + // TODO: Remove when JCR-2036 is fixed, for now just do an extra check + try { + if (!hasPrivileges(npRes.getJCRPath(absPath), new Privilege[] {privilegeFromName("jcr:setProperties")})) { + return false; + } + } catch (PathNotFoundException e) { + // this can happen during BatchedItemOpertations like workspace.copy() and workspace.move() + log.warn("Unable to find the node to be added, skipping setProperties check: {}", npRes.getJCRPath(absPath)); + log.debug("SetProperties check skipped on node: {}", npRes.getJCRPath(absPath), e); + } + privileges.add(privilegeFromName("jcr:addChildNodes")); + } + if ((permissions & Permission.REMOVE_NODE) != 0) { + privileges.add(privilegeFromName("jcr:removeChildNodes")); + } + if ((permissions & Permission.SET_PROPERTY) != 0) { + privileges.add(privilegeFromName("jcr:setProperties")); + } + if ((permissions & Permission.REMOVE_PROPERTY) != 0) { + privileges.add(privilegeFromName("jcr:setProperties")); + } + return hasPrivileges(parentJcrPath, privileges.toArray(new Privilege[privileges.size()])); + } + + + /** + * Just forwards the call to isGranted(Path,int) + * @see HippoAccessManager#isGranted(Path,int) + * @see AccessManager#isGranted(Path, Name, int) + */ + public boolean isGranted(Path parentPath, Name childName, int permissions) throws RepositoryException { + Path p = PathFactoryImpl.getInstance().create(parentPath, childName, true); + return isGranted(p, permissions); + } + + + /** + * @see AccessManager#canRead(Path) + */ + public boolean canRead(Path absPath) throws PathNotFoundException, RepositoryException { + checkInitialized(); + + // allow everything to the systemuser + if (isSystem) { return true; } - // check if node is part of a document, if so check facet authorization - nodeState = getParentDoc(nodeState); - if (nodeState != null) { - if (checkFacetAuth(nodeState, permissions)) { + + // find the id + ItemId id = getItemId(absPath); + + // check read on the parent node with properties + if (!id.denotesNode()) { + return canRead(absPath.getAncestor(1)); + } + + // check parent node which guarantees that all parent nodes of + // the current node are readable + if (!absPath.denotesRoot()) { + if (!canRead(absPath.getAncestor(1))) { + return false; + } + } + + try { + if (canRead((NodeId) id)) { return true; } + } catch (NoSuchItemStateException e) { + // shouldn't happen, the id was already found + log.error("No item id found", e); + return false; } return false; } /** - * Check whether the node can be accessed with the requested permissions based on the - * FacetAuths of the subject. The method first checks if the jcr permissions of the - * FacetAuth match the requested principals. If so, a check is done to check if the - * Node is in the Domain of the FacetAuth. - * @param nodeState the state of the node to check - * @param permissions the (bitset) of the permissions - * @return true if the user is allowed the requested permissions on the node + * Always allow. + * @see AccessManager#canAccess(String) + */ + public boolean canAccess(String workspaceName) throws NoSuchWorkspaceException, RepositoryException { + // no workspace restrictions yet + return true; + } + + + //---------------------------------------- Methods ---------------------------------------------// + /** + * Check whether a user can read the node with the given id + * @param id the id of the node to check + * @return true if the user is allowed to read the node + * @throws NoSuchItemStateException * @throws RepositoryException */ - protected boolean checkFacetAuth(NodeState nodeState, int permissions) throws NoSuchItemStateException, RepositoryException { - if (log.isTraceEnabled()) { - log.trace("Checking [" + pString(permissions) + "] for: " + nodeState.getId()); + private boolean canRead(NodeId id) throws NoSuchItemStateException, RepositoryException { + // check cache + Boolean allowRead = readAccessCache.get(id); + if (allowRead != null) { + return allowRead.booleanValue(); } - // loop over facetAuthPrincipals (one per domain) - // -- first match return true - // -- else return false + if (log.isDebugEnabled()) { + log.debug("Checking canRead for node: {}", npRes.getJCRPath(hierMgr.getPath(id))); + } + + NodeState nodeState = (NodeState) getItemState(id); + if (nodeState.getStatus() == NodeState.STATUS_NEW) { + // allow read to new nodes in own session + // the write check is done on save + readAccessCache.put(id, true); + return true; + } - // For the principal check: - // - DomainRule_1 OR DomainRule_2 OR ... - // - For each DomainRule - // - - FacetRule_1 AND FacetRule_2 AND ... - // - // (facet_x=value_a and facet_y=value_c) OR (facet_x=value_b) - - boolean allowed = false; - for (FacetAuthPrincipal fap : subject.getPrincipals(FacetAuthPrincipal.class)) { - - if (log.isDebugEnabled()) { - log.debug("Checking [" + pString(permissions) + "] : " + nodeState.getId() + " against FacetAuthPrincipal: " + fap); - } - - // Does the user has the correct permissions for the Domain - if ((fap.matchPermissions(permissions))) { - // is the node part of one of the domain rules + Set faps = subject.getPrincipals(FacetAuthPrincipal.class); + for (FacetAuthPrincipal fap : faps) { + Set privs = fap.getPrivileges(); + if (privs.contains("jcr:read")) { if (isNodeInDomain(nodeState, fap)) { - allowed = true; - log.info("Permissions [{}] for {} for: {} found for domain {}", new Object[] { pString(permissions), userId, nodeState.getId(), fap }); - break; + readAccessCache.put(id, true); + return true; } } - if (allowed) { - break; + } + readAccessCache.put(id, false); + if (log.isInfoEnabled()) { + log.info("DENIED read : {}", npRes.getJCRPath(hierMgr.getPath(id))); + } + return false; + } + + /** + * Try to read the cache size from the configuration + * @return the size or -1 when not found + */ + private int getPermCacheSize() { + try { + PathResolver resolver = new ParsingPathResolver(PathFactoryImpl.getInstance(), npRes); + Path path = resolver.getQPath("/" + HippoNodeType.CONFIGURATION_PATH + "/" + HippoNodeType.SECURITY_PATH + + "/" + HippoNodeType.ACCESSMANAGER_PATH + "" + HippoNodeType.HIPPO_PERMISSIONCACHESIZE); + PropertyId confId = hierMgr.resolvePropertyPath(path); + if (confId != null) { + PropertyState state = (PropertyState) getItemState(confId); + InternalValue[] iVals = state.getValues(); + if (iVals.length > 0 && ((int) iVals[0].getLong()) > 0) { + return (int) iVals[0].getLong(); + } } + } catch (NoSuchItemStateException e) { + // not configured, expected + } catch (RepositoryException e) { + // too bad.. no correct config found } - return allowed; + return -1; } /** @@ -409,7 +529,8 @@ * @throws RepositoryException * @see FacetAuthPrincipal */ - protected boolean isNodeInDomain(NodeState nodeState, FacetAuthPrincipal fap) throws NoSuchItemStateException, RepositoryException { + private boolean isNodeInDomain(NodeState nodeState, FacetAuthPrincipal fap) throws NoSuchItemStateException, + RepositoryException { log.trace("Checking if node : {} is in domain of {}", nodeState.getId(), fap); boolean isInDomain = false; @@ -437,15 +558,22 @@ if (allRulesMatched) { // a match is found, don't check other domain ruels; isInDomain = true; - log.debug("Node : {} found in {}", nodeState.getId(), domainRule); + if (log.isDebugEnabled()) { + log.debug("Node : " + nodeState.getId() + " found in domain " + fap.getName() + " match "+ domainRule); + } break; + } else { + // check if node is part of a hippo:document + NodeState docState; + docState = getParentDoc(nodeState); + if (docState != null) { + return isNodeInDomain(docState, fap); + } } } return isInDomain; } - - /** * Check if a node matches the current FacetRule * @param nodeState the state of the node to check @@ -455,7 +583,8 @@ * @throws NoSuchItemStateException * @see FacetRule */ - protected boolean matchFacetRule(NodeState nodeState, FacetRule facetRule) throws NoSuchItemStateException, RepositoryException { + private boolean matchFacetRule(NodeState nodeState, FacetRule facetRule) throws NoSuchItemStateException, + RepositoryException { log.trace("Checking node : {} for facet rule: {}", nodeState.getId(), facetRule); // is this a 'NodeType' facet rule? @@ -475,7 +604,7 @@ return !match; } } - + // is this a 'NodeName' facet rule? if (facetRule.getFacet().equalsIgnoreCase("nodename")) { boolean match = false; @@ -514,310 +643,6 @@ } /** - * Check if a user has the requested permissions on the item. - * @param id the item id to check - * @param permissions the requested permissions - * @throws AccessDeniedException if the user doesn't have the requested permissions on the item - */ - public void checkPermission(ItemId id, int permissions) throws AccessDeniedException, ItemNotFoundException, RepositoryException { - // just use the isGranted method - if (!isGranted(id, permissions)) { - throw new AccessDeniedException(); - } - } - - public boolean hasPrivileges(String absPath, String[] privileges) throws PathNotFoundException, RepositoryException { - boolean allowed; - NodeState nodeState; - - if (isSystem) { - return true; - } - for (String priv : privileges) { - log.debug("Checking [{}] : {}", priv, absPath); - allowed = false; - nodeState = null; - for (FacetAuthPrincipal fap : subject.getPrincipals(FacetAuthPrincipal.class)) { - if (nodeState == null) { - nodeState = getNodeState(absPath); - } - if (log.isDebugEnabled()) { - log.debug("Checking [" + priv + "] : " + absPath + " against FacetAuthPrincipal: " + fap); - } - if (fap.getRoles().contains(priv)) { - try { - if (isNodeInDomain(nodeState, fap)) { - allowed = true; - log.info("Privilege [{}] for {} for: {} found for domain {}", new Object[] { priv, userId, - absPath, fap }); - break; - } - } catch (NoSuchItemStateException e) { - throw new PathNotFoundException("Unable to find path: " + absPath); - } - } - } - if (!allowed) { - return false; - } - } - return true; - } - - public boolean canRead(Path path) throws RepositoryException { - return isGranted(hierMgr.resolvePath(path), Permission.READ); - } - - public boolean isGranted(Path path, Name name, int permissions) throws RepositoryException { - if((permissions & Permission.SET_PROPERTY) != 0) { - return isGranted(path, Permission.SET_PROPERTY); - } else if((permissions & Permission.ADD_NODE) != 0) { - return isGranted(path, Permission.ADD_NODE); - } else if((permissions & Permission.REMOVE_PROPERTY) != 0) { - return isGranted(path, Permission.SET_PROPERTY); - } else if((permissions & Permission.REMOVE_NODE) != 0) { - return isGranted(path, Permission.ADD_NODE); - } else { - return isGranted(PathFactoryImpl.getInstance().create(path, name, true), permissions); - } - } - - public boolean isGranted(Path path, int permissions) throws RepositoryException { - ItemId itemId; - try { - itemId = hierMgr.resolvePath(path); - } catch(RepositoryException ex) { - itemId = null; - } - if (itemId != null) { - return isGranted(itemId, permissions); - } else { - Path parent = path.getAncestor(1); - if((permissions & Permission.SET_PROPERTY) != 0) { - return isGranted(parent, Permission.SET_PROPERTY); - } else if((permissions & Permission.ADD_NODE) != 0) { - return isGranted(parent, Permission.ADD_NODE); - } else if((permissions & Permission.REMOVE_PROPERTY) != 0) { - return isGranted(parent, Permission.SET_PROPERTY); - } else if((permissions & Permission.REMOVE_NODE) != 0) { - return isGranted(parent, Permission.ADD_NODE); - } - return true; - } - } - - - /** - * {@inheritDoc} - */ - public boolean isGranted(ItemId id, int permissions) throws RepositoryException { - if (!initialized) { - throw new IllegalStateException("not initialized"); - } - if (log.isTraceEnabled()) { - log.trace("Checking [" + pString(permissions) + "] for: " + id); - } - if (isSystem) { - if (log.isTraceEnabled()) { - log.trace("Granted [" + pString(permissions) + "] for: " + id + " to system user"); - } - return true; - } - - // handle properties - if (!id.denotesNode()) { - if ((permissions & (Permission.REMOVE_NODE|Permission.REMOVE_PROPERTY)) != 0) { - // Don't check remove on properties. A write check on the node itself is done. - return true; - } - return isGranted(((PropertyId) id).getParentId(), permissions); - } - - // Check read access cache - if (permissions == Permission.READ) { - Boolean allowRead = readAccessCache.get(id); - if (allowRead != null) { - if (log.isTraceEnabled()) { - log.trace("Cached [" + pString(permissions) + "] for: " + id + " granted: " + allowRead); - } - return allowRead.booleanValue(); - } - } else { - // not a read, remove node from cache - readAccessCache.remove(id); - } - - // initialize per request ItemStateCache - synchronized (requestItemStateCache) { - requestItemStateCache.clear(); - } - - try { - NodeState nodeState = (NodeState) getItemState(id); - if (nodeState == null) { - log.error("NodeState not found for ItemId: " + id); - throw new RepositoryException("NodeState not found for ItemId : " + id); - } - - // do check - boolean isGranted = canAccessNode(nodeState, permissions); - - // update read access cache - if ((permissions & Permission.READ) != 0) { - readAccessCache.put(id, isGranted); - } - - if (log.isDebugEnabled()) { - log.debug("Permissions [" + pString(permissions) + "] for: " + id + " -> " + id + " granted: " + isGranted); - } - - if (!isGranted) { - if (log.isInfoEnabled()) { - PathResolver resolver = new ParsingPathResolver(PathFactoryImpl.getInstance(), nRes); - log.info("[" + pString(permissions) + "] DENIED for " + userId + " state(" + nodeState.getStatus() + ") for: " + id + " -> " - + resolver.getJCRPath(hierMgr.getPath(id))); - } - } - return isGranted; - } catch (NoSuchItemStateException e) { - log.debug("NoSuchItemStateException for: " + id, e); - return false; - } - } - - - /** - * Get the NodeState for the absolute path. If the absolute path points - * to a property get the NodeState the property belongs to. - * @param absPath the absolute path - * @return the NodeState of the node (holding the property) - * @throws PathNotFoundException - * @throws RepositoryException - */ - private NodeState getNodeState(String absPath) throws PathNotFoundException, RepositoryException { - Path targetPath; - try { - targetPath = npRes.getQPath(absPath).getNormalizedPath(); - } catch (NameException e) { - String msg = "invalid path: " + absPath; - log.debug(msg, e); - throw new RepositoryException(msg, e); - } - if (!targetPath.isAbsolute()) { - throw new RepositoryException("not an absolute path: " + absPath); - } - - NodeId id = hierMgr.resolveNodePath(targetPath); - if (id == null) { - // id could be a property - PropertyId pId = hierMgr.resolvePropertyPath(targetPath); - if (pId == null) { - throw new PathNotFoundException("Unable to find path: " + absPath); - } - id = pId.getParentId(); - } - try { - return (NodeState) getItemState(id); - } catch (NoSuchItemStateException e) { - throw new PathNotFoundException("Unable to find path: " + absPath); - } - } - - /** - * Try to get a state from the item manager by first checking the normal states, - * then checking the transient states and last checking the attic state. - * @param id the item id - * @return the item state - * @throws NoSuchItemStateException when the state cannot be found - * @throws RepositoryException when something goes wrong while fetching the state - */ - public ItemState getItemState(ItemId id) throws NoSuchItemStateException, RepositoryException { - if (id == null) { - throw new RepositoryException("ItemId cannot be null"); - } - synchronized (requestItemStateCache) { - if (requestItemStateCache.containsKey(id)) { - return requestItemStateCache.get(id); - } - try { - if (itemMgr.hasItemState(id)) { - ItemState itemState = itemMgr.getItemState(id); - requestItemStateCache.put(id, itemState); - return itemState; - } - if (itemMgr.hasTransientItemStateInAttic(id)) { - ItemState itemState = itemMgr.getAtticItemState(id); - requestItemStateCache.put(id, itemState); - return itemState; - } - } catch (ItemStateException e) { - String msg = "invalid item id: " + id; - log.debug(msg, e); - throw new RepositoryException(msg, e); - } - } - throw new NoSuchItemStateException("Item state not found in normal, transient or attic: " + id); - } - - /** - * Get the NodeState of the parent from the nodeState in a transient and attic - * safe manner. - * @param nodeState - * @return the parent nodestate - * @throws NoSuchItemStateException when the state cannot be found - */ - public NodeState getParentState(NodeState nodeState) throws NoSuchItemStateException { - if (rootNodeId.equals(nodeState.getId())) { - throw new NoSuchItemStateException("RootNode doesn't have a parent state."); - } - try { - // for nodeState's from the attic the parentId() is null, so use path resolving to find parent - return (NodeState) getItemState(hierMgr.resolveNodePath(hierMgr.getPath(nodeState.getId()).getAncestor(1))); - } catch (RepositoryException e) { - throw new NoSuchItemStateException("Unable to find parent nodeState of node: " + nodeState.getId(), e); - } - } - - /** - * {@inheritDoc} - */ - public boolean canAccess(String workspaceName) throws NoSuchWorkspaceException, RepositoryException { - // no workspace restrictions yet - return true; - } - - /** - * Helper method for pretty printing the requested permission - * @param permissions - * @return the 'unix' style permissions string - */ - private String pString(int permissions) { - StringBuffer buf = new StringBuffer(); - - // narrow down permissions - if ((permissions & Permission.READ) != 0) { - buf.append('r'); - } else { - buf.append('-'); - } - - // narrow down permissions - if ((permissions & (Permission.ADD_NODE|Permission.SET_PROPERTY)) != 0) { - buf.append('w'); - } else { - buf.append('-'); - } - - // narrow down permissions - if ((permissions & (Permission.REMOVE_NODE|Permission.REMOVE_PROPERTY)) != 0) { - buf.append('d'); - } else { - buf.append('-'); - } - return buf.toString(); - } - - /** * Helper function to check if a nodeState is of a node type or a * instance of the node type (sub class) * @@ -826,9 +651,10 @@ * @return boolean * @throws NoSuchNodeTypeException */ - private boolean isInstanceOfType(NodeState nodeState, String nodeType) throws NamespaceException, NoSuchNodeTypeException, RepositoryException { + private boolean isInstanceOfType(NodeState nodeState, String nodeType) throws NamespaceException, + NoSuchNodeTypeException, RepositoryException { // create NodeType of nodeState's primaryType - String nodeStateType = nRes.getJCRName(nodeState.getNodeTypeName()); + String nodeStateType = npRes.getJCRName(nodeState.getNodeTypeName()); if (nodeStateType.equals(nodeType)) { if (log.isTraceEnabled()) { @@ -837,7 +663,7 @@ return true; } - Boolean isInstance = ntIOCache.get(nodeStateType,nodeType); + Boolean isInstance = ntIOCache.get(nodeStateType, nodeType); if (isInstance != null) { return isInstance.booleanValue(); } @@ -875,7 +701,8 @@ * @throws RepositoryException * @see FacetRule */ - private boolean matchPropertyWithFacetRule(NodeState nodeState, FacetRule rule) throws NoSuchItemStateException, RepositoryException { + private boolean matchPropertyWithFacetRule(NodeState nodeState, FacetRule rule) throws NoSuchItemStateException, + RepositoryException { boolean match = false; @@ -884,8 +711,7 @@ // WILDCARD match, jcr:primaryType == * if (FacetAuthConstants.WILDCARD.equals(rule.getValue())) { match = true; - } - else if (nodeState.getNodeTypeName().equals(rule.getValueName())) { + } else if (nodeState.getNodeTypeName().equals(rule.getValueName())) { match = true; } else { match = false; @@ -900,7 +726,8 @@ } // the hierarchy manager is attic aware. The property can also be in the removed properties - if (!nodeState.hasPropertyName(rule.getFacetName()) && !nodeState.getRemovedPropertyNames().contains(rule.getFacetName())) { + if (!nodeState.hasPropertyName(rule.getFacetName()) + && !nodeState.getRemovedPropertyNames().contains(rule.getFacetName())) { log.trace("Node: {} doesn't have property {}", nodeState.getId(), rule.getFacetName()); // if this is a filter facet rule the property doesn't have to be set @@ -908,7 +735,7 @@ return true; } - if(FacetAuthConstants.WILDCARD.equals(rule.getValue()) && !rule.isEqual()) { + if (FacetAuthConstants.WILDCARD.equals(rule.getValue()) && !rule.isEqual()) { return true; } else { return false; @@ -988,7 +815,8 @@ * @return true if the node has the mixin type * @throws RepositoryException */ - private boolean hasMixinWithValue(NodeState nodeState, String value) throws NoSuchItemStateException, RepositoryException { + private boolean hasMixinWithValue(NodeState nodeState, String value) throws NoSuchItemStateException, + RepositoryException { if (!nodeState.hasPropertyName(NameConstants.JCR_MIXINTYPES)) { return false; } @@ -1016,32 +844,138 @@ } /** + * Get the ItemId for the absolute path. If the absolute path points + * to a property return the PropertyId else return the NodeId. + * @param absPath the absolute path + * @return the NodeState of the node (holding the property) + * @throws PathNotFoundException + * @throws RepositoryException + */ + private ItemId getItemId(String absPath) throws PathNotFoundException, RepositoryException { + checkInitialized(); + return getItemId(npRes.getQPath(absPath)); + } + + /** + * Get the ItemId for the absolute path. If the absolute path points + * to a property return the PropertyId else return the NodeId. + * @param absPath the absolute path + * @return the NodeState of the node (holding the property) + * @throws PathNotFoundException + * @throws RepositoryException + */ + private ItemId getItemId(Path absPath) throws PathNotFoundException, RepositoryException { + checkInitialized(); + + if (!absPath.isAbsolute()) { + throw new RepositoryException("Absolute path expected, got " + npRes.getJCRPath(absPath)); + } + + NodeId id = hierMgr.resolveNodePath(absPath) ; + if (id != null) { + return id; + } + + // path could point to a property + PropertyId pId = hierMgr.resolvePropertyPath(absPath); + if (pId == null) { + throw new PathNotFoundException("Unable to find path: " + npRes.getJCRPath(absPath)); + } + return pId; + } + + /** + * Try to get a state from the item manager by first checking the normal states, + * then checking the transient states and last checking the attic state. + * @param id the item id + * @return the item state + * @throws NoSuchItemStateException when the state cannot be found + * @throws RepositoryException when something goes wrong while fetching the state + */ + private ItemState getItemState(ItemId id) throws NoSuchItemStateException, RepositoryException { + if (id == null) { + throw new RepositoryException("ItemId cannot be null"); + } + try { + if (itemMgr.hasItemState(id)) { + return hierMgr.getItemState(id); + } else if (itemMgr.hasTransientItemState(id)) { + return itemMgr.getTransientItemState(id); + } else if (itemMgr.hasTransientItemStateInAttic(id)) { + return itemMgr.getAtticItemState(id); + } + } catch (ItemStateException e) { + String msg = "invalid item id: " + id; + log.error(msg, e); + throw new RepositoryException(msg, e); + } + String msg = "Item state not found in normal, transient or attic: " + id; + if (log.isDebugEnabled()) { + log.debug(msg); + Thread.dumpStack(); + itemMgr.dump(System.err); + } + throw new NoSuchItemStateException(msg); + } + + /** + * Get the NodeState of the parent from the nodeState in a transient and attic + * safe manner. + * @param nodeState + * @return the parent nodestate + * @throws NoSuchItemStateException when the state cannot be found + */ + private NodeState getParentState(NodeState nodeState) throws NoSuchItemStateException { + if (rootNodeId.equals(nodeState.getId())) { + throw new NoSuchItemStateException("RootNode doesn't have a parent state."); + } + try { + // for nodeState's from the attic the parentId() is null, so use path resolving to find parent + return (NodeState) getItemState(hierMgr.resolveNodePath(hierMgr.getPath(nodeState.getId()).getAncestor(1))); + } catch (RepositoryException e) { + throw new NoSuchItemStateException("Unable to find parent nodeState of node: " + nodeState.getId(), e); + } + } + + + /** * Helper function to find a hippo:document instance node type. This * can be used to check for facet authorization on the root of a * document (bonzai tree). * @param nodeState the node of which to check the parents * @return NodeState the parent node state or null - * @throws NoSuchItemStateException - * @throws RepositoryException - * @throws NamespaceException + * @throws NoSuchItemStateException + * @throws RepositoryException */ - private NodeState getParentDoc(NodeState nodeState) throws NoSuchItemStateException, NamespaceException, RepositoryException { + private NodeState getParentDoc(NodeState nodeState) throws NoSuchItemStateException, RepositoryException { if (log.isTraceEnabled()) { - log.trace("Checking " + nodeState.getId() + " ntn: " + nodeState.getNodeTypeName() + " for being part of a document model."); + log.trace("Checking " + nodeState.getId() + " ntn: " + nodeState.getNodeTypeName() + + " for being part of a document model."); } // check if this is already the root of a document - if (isInstanceOfType(nodeState, HippoNodeType.NT_DOCUMENT) || nodeState.getNodeTypeName().equals(hippoHandle) - || nodeState.getNodeTypeName().equals(hippoFacetSearch) || nodeState.getNodeTypeName().equals(hippoFacetSelect)) { - if (log.isDebugEnabled()) { - log.debug("Node is already document root: " + nodeState.getNodeTypeName()); + try { + if (isInstanceOfType(nodeState, HippoNodeType.NT_DOCUMENT) || nodeState.getNodeTypeName().equals(hippoHandle) + || nodeState.getNodeTypeName().equals(hippoFacetSearch) + || nodeState.getNodeTypeName().equals(hippoFacetSelect)) { + if (log.isTraceEnabled()) { + log.trace("Node is already document root: " + nodeState.getNodeTypeName()); + } + return null; } + } catch (NamespaceException e) { + log.warn("NamespaceException while trying to get parent doc", e); return null; + } catch (NoSuchNodeTypeException e) { + log.warn("NoSuchNodeTypeException while trying to get parent doc", e); + return null; } + // walk up in the hierarchy while (!rootNodeId.equals(nodeState.getId())) { // shift one up in hierarchy nodeState = getParentState(nodeState); + if (nodeState.getNodeTypeName().equals(hippoHandle)) { if (log.isDebugEnabled()) { log.debug("MATCH hippoHandle: " + nodeState.getNodeTypeName()); @@ -1060,11 +994,19 @@ } return null; } - if (isInstanceOfType(nodeState, HippoNodeType.NT_DOCUMENT)) { - if (log.isDebugEnabled()) { - log.debug("MATCH hippoDoc: " + nodeState.getNodeTypeName()); + try { + if (isInstanceOfType(nodeState, HippoNodeType.NT_DOCUMENT)) { + if (log.isDebugEnabled()) { + log.debug("MATCH hippoDoc: " + nodeState.getNodeTypeName()); + } + return nodeState; } - return nodeState; + } catch (NamespaceException e) { + log.warn("NamespaceException while trying to get parent doc", e); + return null; + } catch (NoSuchNodeTypeException e) { + log.warn("NoSuchNodeTypeException while trying to get parent doc", e); + return null; } } return null; @@ -1078,9 +1020,10 @@ /** * The cache map */ - private static Map> map = new WeakHashMap>(); + private static Map> map = new WeakHashMap>(); private static NodeTypeInstanceOfCache cache = new NodeTypeInstanceOfCache(); + /** * Create a new LRU cache * @param size max number of cache objects @@ -1144,4 +1087,302 @@ } + + //---------------------------- ACCESS CONTROL MANAGER ---------------------------// + + /** + * @see AccessControlManager#getSupportedPrivileges(String) + */ + public Privilege[] getSupportedPrivileges(String absPath) throws PathNotFoundException, RepositoryException { + checkInitialized(); + checkValidNodePath(absPath); + // return all known privileges everywhere. + return currentPrivileges.values().toArray(new Privilege[currentPrivileges.size()]); + } + + /** + * @see AccessControlManager#privilegeFromName(String) + */ + public Privilege privilegeFromName(String privilegeName) + throws AccessControlException, RepositoryException { + checkInitialized(); + + if (currentPrivileges.containsKey(privilegeName)) { + return currentPrivileges.get(privilegeName); + } + + currentPrivileges.put(privilegeName, new Privilege() { + + private String name; + + public Privilege[] getAggregatePrivileges() { + return new Privilege[0]; + } + + public Privilege[] getDeclaredAggregatePrivileges() { + return new Privilege[0]; + } + + public Privilege create(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + public boolean isAbstract() { + return false; + } + + public boolean isAggregate() { + return false; + } + }.create(privilegeName)); + + return currentPrivileges.get(privilegeName); + } + + /** + * @see AccessControlManager#hasPrivileges(String,Privilege[]) + */ + public boolean hasPrivileges(String absPath, Privilege[] privileges) throws PathNotFoundException, + RepositoryException { + checkInitialized(); + + // system session can do everything + if (isSystem) { + return true; + } + + // user is always allowed to do nothing + if (privileges == null || privileges.length == 0) { + log.debug("No privileges to check for path: {}.", absPath); + return true; + } + + // check if the path points to a node + ItemId id = getItemId(absPath); + if (!id.denotesNode()) { + throw new PathNotFoundException("hasPrivileges called on property instead of node " + absPath); + } + + // system session can do everything + if (isSystem) { + return true; + } + + // fast track read check + if (privileges.length == 1 && "jcr:read".equals(privileges[0].getName())) { + return canRead(npRes.getQPath(absPath)); + } + NodeState nodeState; + try { + nodeState = (NodeState) getItemState(id); + } catch (NoSuchItemStateException e) { + throw new PathNotFoundException("Path not found " + absPath, e); + } + + + for (Privilege priv : privileges) { + log.debug("Checking [{}] : {}", priv.getName(), absPath); + boolean allowed = false; + for (FacetAuthPrincipal fap : subject.getPrincipals(FacetAuthPrincipal.class)) { + if (log.isDebugEnabled()) { + log.debug("Checking [" + priv + "] : " + absPath + " against FacetAuthPrincipal: " + fap); + } + + if (fap.getPrivileges().contains(priv.getName())) { + try { + if (isNodeInDomain(nodeState, fap)) { + allowed = true; + if (log.isInfoEnabled()) { + log.info("GRANT: " + priv.getName() + " to user " + userId + " in domain " + fap + " for " + absPath); + } + break; + } + } catch (NoSuchItemStateException e) { + throw new PathNotFoundException("Unable to find path: " + absPath, e); + } + } + } + if (!allowed) { + if (log.isInfoEnabled()) { + log.info("DENY: " + priv.getName() + " to user " + userId + " for " + absPath); + } + return false; + } + } + + // not a read, remove node from cache + readAccessCache.remove(id); + + return true; + } + + + /** + * @see AccessControlManager#getPrivileges(String) + */ + public Privilege[] getPrivileges(String absPath) throws PathNotFoundException, RepositoryException { + checkInitialized(); + + // check if the path points to a node + ItemId id = getItemId(absPath); + if (!id.denotesNode()) { + throw new PathNotFoundException("hasPrivileges called on property instead of node " + absPath); + } + + NodeState nodeState; + try { + nodeState = (NodeState) getItemState(id); + } catch (NoSuchItemStateException e) { + throw new PathNotFoundException("Path not found " + absPath); + } + + Set privileges = new HashSet(); + for (FacetAuthPrincipal fap : subject.getPrincipals(FacetAuthPrincipal.class)) { + try { + if (isNodeInDomain(nodeState, fap)) { + for (String privilegeName : fap.getPrivileges()) { + privileges.add(privilegeFromName(privilegeName)); + } + } + } catch (NoSuchItemStateException e) { + throw new PathNotFoundException("Unable to find path: " + absPath); + } + } + return privileges.toArray(new Privilege[privileges.size()]); + } + + + /** + * Always return empty array of AccessControlPolicy + * + * @see AccessControlManager#getPolicies(String) + */ + public AccessControlPolicy[] getPolicies(String absPath) throws PathNotFoundException, AccessDeniedException, RepositoryException { + checkInitialized(); + //checkPrivileges(absPath, PrivilegeRegistry.READ_AC); + + log.debug("Implementation does not provide applicable policies -> getPolicy() always returns an empty array."); + return new AccessControlPolicy[0]; + } + + /** + * Always return empty array of AccessControlPolicy + * + * @see AccessControlManager#getEffectivePolicies(String) + */ + public AccessControlPolicy[] getEffectivePolicies(String absPath) throws PathNotFoundException, + AccessDeniedException, RepositoryException { + return new AccessControlPolicy[0]; + } + + /** + * Always return AccessControlPolicyIteratorAdapter.EMPTY + * + * @see AccessControlManager#getApplicablePolicies(String) + */ + public AccessControlPolicyIterator getApplicablePolicies(String absPath) throws PathNotFoundException, AccessDeniedException, RepositoryException { + checkInitialized(); + //checkPrivileges(absPath, PrivilegeRegistry.READ_AC); + log.debug("Implementation does not provide applicable policies -> returning empty iterator."); + return AccessControlPolicyIteratorAdapter.EMPTY; + } + + /** + * Always throws AccessControlException + * + * @see AccessControlManager#setPolicy(String, AccessControlPolicy) + */ + public void setPolicy(String absPath, AccessControlPolicy policy) throws PathNotFoundException, AccessControlException, AccessDeniedException, RepositoryException { + checkInitialized(); + //checkPrivileges(absPath, PrivilegeRegistry.MODIFY_AC); + throw new AccessControlException("AccessControlPolicy " + policy + " cannot be applied."); + } + + /** + * Always throws AccessControlException + * + * @see AccessControlManager#removePolicy(String, AccessControlPolicy) + */ + public void removePolicy(String absPath, AccessControlPolicy policy) throws PathNotFoundException, AccessControlException, AccessDeniedException, RepositoryException { + checkInitialized(); + //checkPrivileges(absPath, PrivilegeRegistry.MODIFY_AC); + throw new AccessControlException("No AccessControlPolicy has been set through this API -> Cannot be removed."); + } + //------------------------------ END ACCESS CONTROL MANAGER -------------------------------------------// + + + /** + * Check if this manager has been properly initialized. + * + * @throws IllegalStateException If this manager has not been properly initialized. + */ + private void checkInitialized() { + if (!initialized) { + throw new IllegalStateException("not initialized"); + } + } + + /** + * Build a qualified path from the specified absPath and test + * if it is really absolute and points to an existing node. + * + * @param absPath + * @throws PathNotFoundException if no node at absPath exists + * or the session does not have privilege to retrieve the node. + * @throws RepositoryException If the given absPath is not + * absolute or if some other error occurs. + */ + private void checkValidNodePath(String absPath) throws PathNotFoundException, RepositoryException { + Path p = npRes.getQPath(absPath); + if (!p.isAbsolute()) { + throw new RepositoryException("Absolute path expected " + absPath); + } + if (hierMgr.resolveNodePath(p) == null) { + throw new PathNotFoundException("No such node " + absPath); + } + } + + /** + * Helper method for pretty printing the requested permission + * @param permissions + * @return a string representation of the permissions + */ + private String permsString(int permissions) { + StringBuffer buf = new StringBuffer(); + + // narrow down permissions + if ((permissions & Permission.READ) != 0) { + buf.append("re"); + } else { + buf.append("--"); + } + if ((permissions & Permission.ADD_NODE) != 0) { + buf.append("an"); + } else { + buf.append("--"); + } + if ((permissions & Permission.REMOVE_NODE) != 0) { + buf.append("rn"); + } else { + buf.append("--"); + } + if ((permissions & Permission.SET_PROPERTY) != 0) { + buf.append("sp"); + } else { + buf.append("--"); + } + if ((permissions & Permission.REMOVE_PROPERTY) != 0) { + buf.append("rp"); + } else { + buf.append("--"); + } + return buf.toString(); + } + + } Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoLoginModule.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoLoginModule.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoLoginModule.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -32,10 +32,10 @@ import javax.security.auth.spi.LoginModule; import org.apache.jackrabbit.core.security.AnonymousPrincipal; -import org.apache.jackrabbit.core.security.CredentialsCallback; import org.apache.jackrabbit.core.security.SecurityConstants; import org.apache.jackrabbit.core.security.SystemPrincipal; import org.apache.jackrabbit.core.security.UserPrincipal; +import org.apache.jackrabbit.core.security.authentication.CredentialsCallback; import org.hippoecm.repository.security.domain.Domain; import org.hippoecm.repository.security.principals.FacetAuthPrincipal; import org.hippoecm.repository.security.principals.GroupPrincipal; @@ -119,7 +119,6 @@ callbackHandler.handle(new Callback[] { ccb }); SimpleCredentials creds = (SimpleCredentials) ccb.getCredentials(); - // TODO: impersonate from rootSession -> systemSession rootSession = (Session) creds.getAttribute("rootSession"); if (rootSession == null) { throw new LoginException("RootSession not set."); @@ -170,7 +169,7 @@ securityManager.init(rootSession); // check for anonymous login - if (creds == null || creds.getUserID() == null) { + if (creds.getUserID() == null) { log.info("Authenticated as anonymous."); principals.add(new AnonymousPrincipal()); setGroupPrincipals(null); @@ -319,16 +318,25 @@ } } - // merge permissions for the roles for a domain - int perms = 0; + // check for indirectly included roles + Set includedRoles = new HashSet(); for (String roleId : roles) { - perms |= securityManager.getJCRPermissionsForRole(roleId); + includedRoles.addAll(securityManager.getRolesForRole(roleId)); } - log.info("User {} has perms {} for domain {} ", new Object[] { userId, perms, domain.getName() }); + roles.addAll(includedRoles); - if (perms > 0) { + log.info("User {} has roles {} for domain {} ", new Object[] { userId, roles, domain.getName() }); + + // get all privileges associated with the roles + Set privileges = new HashSet(); + for (String roleId : roles) { + privileges.addAll(securityManager.getPrivilegesForRole(roleId)); + } + log.info("User {} has privileges {} for domain {} ", new Object[] { userId, privileges, domain.getName() }); + + if (privileges.size() > 0) { // create and add facet auth principal - FacetAuthPrincipal fap = new FacetAuthPrincipal(domain.getName(), domain.getDomainRules(), roles, perms); + FacetAuthPrincipal fap = new FacetAuthPrincipal(domain.getName(), domain.getDomainRules(), roles, privileges); principals.add(fap); } } Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityManager.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityManager.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityManager.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -27,6 +27,7 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; +import javax.jcr.Value; import javax.jcr.observation.Event; import javax.jcr.observation.EventIterator; import javax.jcr.observation.EventListener; @@ -305,7 +306,7 @@ while (nodeIter.hasNext()) { // the parent of the auth role node is the domain node Domain domain = new Domain(nodeIter.nextNode().getParent()); - log.debug("Domain '{}' found for user: {}", domain.getName(), userId); + log.trace("Domain '{}' found for user: {}", domain.getName(), userId); domains.add(domain); } } catch (RepositoryException e) { @@ -335,7 +336,7 @@ while (nodeIter.hasNext()) { // the parent of the auth role node is the domain node Domain domain = new Domain(nodeIter.nextNode().getParent()); - log.debug("Domain '{}' found for group: {}", domain.getName(), groupId); + log.trace("Domain '{}' found for group: {}", domain.getName(), groupId); domains.add(domain); } } catch (RepositoryException e) { @@ -344,59 +345,145 @@ return domains; } +// /** +// * Get the numerical permissions of a role. +// * @param roleId +// * @return +// * @deprecated +// */ +// public int getJCRPermissionsForRole(String roleId) { +// int permissions = 0; +// Node roleNode; +// +// // does the role already exists +// log.trace("Looking for role: {} in path: {}", roleId, rolesPath); +// String path = rolesPath + "/" + roleId; +// try { +// try { +// roleNode = session.getRootNode().getNode(path); +// log.trace("Found role node: {}", roleNode.getName()); +// } catch (PathNotFoundException e) { +// log.warn("Role not found: {}", roleId); +// return Role.NONE; +// } +// try { +// if (roleNode.getProperty(HippoNodeType.HIPPO_JCRREAD).getBoolean()) { +// log.trace("Adding jcr read permissions for role: {}", roleId); +// permissions += Role.READ; +// } +// } catch (PathNotFoundException e) { +// // ignore, role doesn't has the permission +// } +// +// try { +// if (roleNode.getProperty(HippoNodeType.HIPPO_JCRWRITE).getBoolean()) { +// log.trace("Adding jcr write permissions for role: {}", roleId); +// permissions += Role.WRITE; +// } +// } catch (PathNotFoundException e) { +// // ignore, role doesn't has the permission +// } +// +// try { +// if (roleNode.getProperty(HippoNodeType.HIPPO_JCRREMOVE).getBoolean()) { +// log.trace("Adding jcr remove permissions for role: {}", roleId); +// permissions += Role.REMOVE; +// } +// } catch (PathNotFoundException e) { +// // ignore, role doesn't has the permission +// } +// } catch (RepositoryException e) { +// log.error("Error while looking up role: " + roleId, e); +// return Role.NONE; +// } +// return permissions; +// } + /** - * Get the numerical permissions of a role. + * Get the roles included be roleId * @param roleId * @return */ - public int getJCRPermissionsForRole(String roleId) { - int permissions = 0; + public Set getRolesForRole(String roleId) { + return getRolesForRole(roleId, new HashSet()); + } + + /** + * Internal helper method to recursively find the roles belonging to a role + * @param roleId + * @param currentRoles + * @return + */ + private Set getRolesForRole(String roleId, Set currentRoles) { Node roleNode; - - // does the role already exists log.trace("Looking for role: {} in path: {}", roleId, rolesPath); String path = rolesPath + "/" + roleId; try { - try { - roleNode = session.getRootNode().getNode(path); - log.trace("Found role node: {}", roleNode.getName()); - } catch (PathNotFoundException e) { - log.warn("Role not found: {}", roleId); - return Role.NONE; - } - try { - if (roleNode.getProperty(HippoNodeType.HIPPO_JCRREAD).getBoolean()) { - log.trace("Adding jcr read permissions for role: {}", roleId); - permissions += Role.READ; + roleNode = session.getRootNode().getNode(path); + log.trace("Found role node: {}", roleNode.getName()); + if (roleNode.hasProperty(HippoNodeType.HIPPO_ROLES)) { + Value[] values = roleNode.getProperty(HippoNodeType.HIPPO_ROLES).getValues(); + for (Value value : values) { + if (!currentRoles.contains(value.getString())) { + currentRoles.add(value.getString()); + currentRoles.addAll(getRolesForRole(value.getString(), currentRoles)); + } } - } catch (PathNotFoundException e) { - // ignore, role doesn't has the permission } - - try { - if (roleNode.getProperty(HippoNodeType.HIPPO_JCRWRITE).getBoolean()) { - log.trace("Adding jcr write permissions for role: {}", roleId); - permissions += Role.WRITE; + } catch (PathNotFoundException e) { + log.warn("Role not found: {}", roleId); + } catch (RepositoryException e) { + log.error("Error while looking up role: " + roleId, e); + } + return currentRoles; + } + + /** + * Get the privileges of a role + * @param roleId + * @return + */ + public Set getPrivilegesForRole(String roleId) { + Set privileges = new HashSet(); + Node roleNode; + log.trace("Looking for role: {} in path: {}", roleId, rolesPath); + String path = rolesPath + "/" + roleId; + try { + roleNode = session.getRootNode().getNode(path); + log.trace("Found role node: {}", roleNode.getName()); + if (roleNode.hasProperty(HippoNodeType.HIPPO_PRIVILEGES)) { + Value[] values = roleNode.getProperty(HippoNodeType.HIPPO_PRIVILEGES).getValues(); + for (Value value : values) { + // FIXME: temp hack for aggregate privileges as defined in jsr-283, 6.11.1.2 + String privilege = value.getString(); + if ("jcr:write".equals(privilege)) { + privileges.add("jcr:write"); + privileges.add("jcr:setProperties"); + privileges.add("jcr:addChildNodes"); + privileges.add("jcr:removeChildNodes"); + } else if ("jcr:all".equals(privilege)) { + privileges.add("jcr:read"); + // jcr:acp + privileges.add("jcr:getAccessControlPolicy"); + privileges.add("jcr:setAccessControlPolicy"); + // jcr:wrte + privileges.add("jcr:setProperties"); + privileges.add("jcr:addChildNodes"); + privileges.add("jcr:removeChildNodes"); + + } else { + privileges.add(privilege); + } } - } catch (PathNotFoundException e) { - // ignore, role doesn't has the permission } - - try { - if (roleNode.getProperty(HippoNodeType.HIPPO_JCRREMOVE).getBoolean()) { - log.trace("Adding jcr remove permissions for role: {}", roleId); - permissions += Role.REMOVE; - } - } catch (PathNotFoundException e) { - // ignore, role doesn't has the permission - } + } catch (PathNotFoundException e) { + log.warn("Role not found: {}", roleId); } catch (RepositoryException e) { log.error("Error while looking up role: " + roleId, e); - return Role.NONE; } - return permissions; + return privileges; } - + /** * Sanitize the raw userId input according to the case sensitivity of the * security provider. Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityProviderFactory.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityProviderFactory.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityProviderFactory.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -58,7 +58,7 @@ public SecurityProvider create(Session session, String providerId) throws ValueFormatException, PathNotFoundException, RepositoryException, ClassNotFoundException, InstantiationException, IllegalAccessException { Node providerNode = session.getRootNode().getNode(securityPath + "/" + providerId); - Class clazz = Class.forName(providerNode.getProperty(HippoNodeType.HIPPO_CLASSNAME).getString()); + Class clazz = Class.forName(providerNode.getProperty(HippoNodeType.HIPPO_CLASSNAME).getString()); SecurityProvider sp = (SecurityProvider) clazz.newInstance(); // create new session for each provider Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/Domains.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/Domains.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/Domains.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -39,11 +39,6 @@ private final static String SVN_ID = "$Id$"; /** - * The AAContext - */ - private ManagerContext context; - - /** * The system/root session */ private Session session; @@ -76,7 +71,6 @@ * @throws RepositoryException */ public void init(ManagerContext context) { - this.context = context; this.session = context.getSession(); this.domainsPath = context.getPath(); loadDomains(); Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/FacetRule.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/FacetRule.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/FacetRule.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -247,7 +247,7 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("FacetRule"); - sb.append("(").append(type).append(")"); + sb.append("(").append(PropertyType.nameFromValue(type)).append(")"); sb.append("["); sb.append(facet); if (equals) { Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/group/AbstractGroupManager.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/group/AbstractGroupManager.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/group/AbstractGroupManager.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -24,12 +24,8 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.Value; -import javax.jcr.ValueFormatException; -import javax.jcr.lock.LockException; -import javax.jcr.nodetype.ConstraintViolationException; import javax.jcr.query.Query; import javax.jcr.query.QueryResult; -import javax.jcr.version.VersionException; import javax.transaction.NotSupportedException; import org.hippoecm.repository.api.HippoNodeType; Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/principals/FacetAuthPrincipal.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/principals/FacetAuthPrincipal.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/principals/FacetAuthPrincipal.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -20,9 +20,6 @@ import java.util.Collections; import java.util.Set; -import org.apache.jackrabbit.core.security.AccessManager; -import org.apache.jackrabbit.core.security.authorization.Permission; -import org.apache.jackrabbit.spi.Name; import org.hippoecm.repository.security.domain.DomainRule; /** @@ -57,9 +54,9 @@ private final Set roles; /** - * The JCR permissions of the user for the domain + * The set of roles of the user for the domain */ - private final int permissions; + private final Set privileges; /** @@ -70,7 +67,7 @@ * @param permissionss * @throws IllegalArgumentException if name is null. */ - public FacetAuthPrincipal(String domain, Set domainRules, Set roles, int permissions) throws IllegalArgumentException { + public FacetAuthPrincipal(String domain, Set domainRules, Set roles, Set privileges) throws IllegalArgumentException { if (domain == null) { throw new IllegalArgumentException("facet can not be null"); } @@ -88,7 +85,7 @@ this.name = domain; this.roles = Collections.unmodifiableSet(roles); this.rules = Collections.unmodifiableSet(domainRules); - this.permissions = permissions; + this.privileges = Collections.unmodifiableSet(privileges); } @@ -111,6 +108,14 @@ } /** + * Get the set of privileges + * @return the privileges the user has for the domain + */ + public Set getPrivileges() { + return privileges; + } + + /** * Get the set of domain rules defining the domain * @return the domain rules defining the domain */ @@ -118,54 +123,7 @@ return rules; } - /** - * Match the JCR permissions - * @param requestedPermissions the permissions the users requests - * @return wether the permissions are granted within the domain - */ - public boolean matchPermissions(int requestedPermissions) { - if((requestedPermissions & Permission.READ) != 0) { - if((permissions&AccessManager.READ) != AccessManager.READ) { - return false; - } - } - if((requestedPermissions & (Permission.ADD_NODE|Permission.SET_PROPERTY)) != 0) { - if((permissions&AccessManager.WRITE) != AccessManager.WRITE) { - return false; - } - } - if((requestedPermissions & (Permission.REMOVE_PROPERTY|Permission.REMOVE_NODE)) != 0) { - if((permissions&AccessManager.REMOVE) != AccessManager.REMOVE) { - return false; - } - } - return true; - } - /** - * String for pretty printing and generating the hashcode - * @param facet - * @param values - * @param permissions - * @return - */ - private String buildString(Name facet, String[] values, long permissions) { - // create nice name (also used for hashing) - StringBuffer buf = new StringBuffer(); - buf.append("["); - buf.append(facet); - buf.append(" = "); - for(int i = 0; i 0) buf.append(" or "); - buf.append(values[i]); - } - buf.append("] ["); - buf.append("permissions: "); - buf.append(permissions); - buf.append("]"); - return buf.toString(); - } - public String toString() { return ("FacetAuthPrincipal: " + name); } Modified: hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/configuration.xml =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/configuration.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/configuration.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -215,15 +215,9 @@ hippo:role - - true + + jcr:all - - true - - - true - Modified: hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/repository.cnd =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/repository.cnd 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/repository.cnd 2009-03-23 12:58:48 UTC (rev 17075) @@ -101,7 +101,7 @@ [hippo:workflow] > hippo:type - hippo:workflow (string) -- hippo:roles (string) multiple +- hippo:privileges (string) multiple + hippo:types (hippo:types) = hippo:types mandatory autocreated + hippo:config (nt:unstructured) = nt:unstructured @@ -162,9 +162,11 @@ - * (string) [hippo:role] > nt:base -- hippo:jcrread (boolean) = 'true' mandatory autocreated -- hippo:jcrwrite (boolean) = 'false' mandatory autocreated -- hippo:jcrremove (boolean) = 'false' mandatory autocreated +- hippo:privileges (string) multiple +- hippo:roles (string) multiple +- hippo:jcrread (boolean) +- hippo:jcrwrite (boolean) +- hippo:jcrremove (boolean) [hippo:externalrole] > hippo:role - hippo:securityprovider (string) = 'internal' mandatory autocreated Added: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java (rev 0) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -0,0 +1,54 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.repository; + +import static org.junit.Assert.*; + +import javax.jcr.RepositoryException; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * An example class to show how to write unit tests for the repository. + */ +public class BoilerPlateTest extends TestCase { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + + @Override + @Before + public void setUp() throws Exception { + super.setUp(); + } + + @Override + @After + public void tearDown() throws Exception { + super.tearDown(); + } + + /** + * A trivial test as demo + * @throws RepositoryException + */ + @Test + public void testSessionLiveTest() throws RepositoryException { + assertTrue("super.setUp failed to create session", session.isLive()); + } +} Property changes on: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedAuthorizationTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedAuthorizationTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedAuthorizationTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -15,6 +15,15 @@ */ package org.hippoecm.repository; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + import java.security.AccessControlException; import javax.jcr.AccessDeniedException; @@ -26,15 +35,6 @@ import javax.jcr.query.Query; import javax.jcr.query.QueryManager; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; - import org.hippoecm.repository.api.HippoNodeType; public class FacetedAuthorizationTest extends TestCase { @@ -127,7 +127,7 @@ Node ar = hipDocDomain.addNode("hippo:authrole", HippoNodeType.NT_AUTHROLE); Node dr = hipDocDomain.addNode("hippo:domainrule", HippoNodeType.NT_DOMAINRULE); Node fr = dr.addNode("hippo:facetrule", HippoNodeType.NT_FACETRULE); - ar.setProperty(HippoNodeType.HIPPO_ROLE, "jcrread"); + ar.setProperty(HippoNodeType.HIPPO_ROLE, "readonly"); ar.setProperty(HippoNodeType.HIPPO_USERS, new String[] {TEST_USER_ID}); fr.setProperty(HippoNodeType.HIPPO_FACET, "nodetype"); fr.setProperty(HippoNodeType.HIPPO_VALUE, "hippo:testdocument"); @@ -138,7 +138,7 @@ ar = readDomain.addNode("hippo:authrole", HippoNodeType.NT_AUTHROLE); dr = readDomain.addNode("hippo:domainrule", HippoNodeType.NT_DOMAINRULE); fr = dr.addNode("hippo:facetrule", HippoNodeType.NT_FACETRULE); - ar.setProperty(HippoNodeType.HIPPO_ROLE, "jcrread"); + ar.setProperty(HippoNodeType.HIPPO_ROLE, "readonly"); ar.setProperty(HippoNodeType.HIPPO_USERS, new String[] {TEST_USER_ID}); fr.setProperty(HippoNodeType.HIPPO_FACET, "authtest"); fr.setProperty(HippoNodeType.HIPPO_VALUE, "canread"); @@ -146,7 +146,7 @@ dr = readDomain.addNode("hippo:domainrule", HippoNodeType.NT_DOMAINRULE); fr = dr.addNode("hippo:facetrule", HippoNodeType.NT_FACETRULE); - ar.setProperty(HippoNodeType.HIPPO_ROLE, "jcrread"); + ar.setProperty(HippoNodeType.HIPPO_ROLE, "readonly"); ar.setProperty(HippoNodeType.HIPPO_USERS, new String[] {TEST_USER_ID}); fr.setProperty(HippoNodeType.HIPPO_FACET, "user"); fr.setProperty(HippoNodeType.HIPPO_VALUE, "__user__"); @@ -154,7 +154,7 @@ dr = readDomain.addNode("hippo:domainrule", HippoNodeType.NT_DOMAINRULE); fr = dr.addNode("hippo:facetrule", HippoNodeType.NT_FACETRULE); - ar.setProperty(HippoNodeType.HIPPO_ROLE, "jcrread"); + ar.setProperty(HippoNodeType.HIPPO_ROLE, "readonly"); ar.setProperty(HippoNodeType.HIPPO_USERS, new String[] {TEST_USER_ID}); fr.setProperty(HippoNodeType.HIPPO_FACET, "group"); fr.setProperty(HippoNodeType.HIPPO_VALUE, "__group__"); @@ -162,7 +162,7 @@ dr = readDomain.addNode("hippo:domainrule", HippoNodeType.NT_DOMAINRULE); fr = dr.addNode("hippo:facetrule", HippoNodeType.NT_FACETRULE); - ar.setProperty(HippoNodeType.HIPPO_ROLE, "jcrread"); + ar.setProperty(HippoNodeType.HIPPO_ROLE, "readonly"); ar.setProperty(HippoNodeType.HIPPO_USERS, new String[] {TEST_USER_ID}); fr.setProperty(HippoNodeType.HIPPO_FACET, "role"); fr.setProperty(HippoNodeType.HIPPO_VALUE, "__role__"); @@ -173,7 +173,7 @@ ar = writeDomain.addNode("hippo:authrole", HippoNodeType.NT_AUTHROLE); dr = writeDomain.addNode("hippo:domainrule", HippoNodeType.NT_DOMAINRULE); fr = dr.addNode("hippo:facetrule", HippoNodeType.NT_FACETRULE); - ar.setProperty(HippoNodeType.HIPPO_ROLE, "jcrwrite"); + ar.setProperty(HippoNodeType.HIPPO_ROLE, "readwrite"); ar.setProperty(HippoNodeType.HIPPO_USERS, new String[] {TEST_USER_ID}); fr.setProperty(HippoNodeType.HIPPO_FACET, "authtest"); fr.setProperty(HippoNodeType.HIPPO_VALUE, "canwrite"); @@ -225,7 +225,7 @@ testData.getNode("expanders").addNode("groupadmin", "hippo:ntunstructured").setProperty("group", "admin"); testData.getNode("expanders/groupadmin").addMixin("hippo:harddocument"); - testData.getNode("expanders").addNode("roletest", "hippo:ntunstructured").setProperty("role", "jcrread"); + testData.getNode("expanders").addNode("roletest", "hippo:ntunstructured").setProperty("role", "readonly"); testData.getNode("expanders/roletest").addMixin("hippo:harddocument"); testData.getNode("expanders").addNode("roleadmin", "hippo:ntunstructured").setProperty("group", "admin"); testData.getNode("expanders/roleadmin").addMixin("hippo:harddocument"); @@ -266,7 +266,7 @@ @After public void tearDown() throws Exception { cleanup(); - super.tearDown(true); + super.tearDown(); } @Test @@ -299,30 +299,28 @@ assertTrue(testData.hasNode("readdoc0/subwrite")); assertTrue(testData.hasNode("writedoc0/subread")); assertTrue(testData.hasNode("writedoc0/subwrite")); - - // the iterator only sees 4 nodes, but they are directly accessible - assertTrue(testData.hasNode("nothing0/subread")); - assertTrue(testData.hasNode("nothing0/subwrite")); } @Test public void testSubReadsNotAllowed() throws RepositoryException { assertFalse(testData.hasNode("readdoc0/subnothing")); assertFalse(testData.hasNode("writedoc0/subnothing")); + assertFalse(testData.hasNode("nothing0/subread")); + assertFalse(testData.hasNode("nothing0/subwrite")); } @Test public void testWritesAllowed() throws RepositoryException { Node node; - userSession.checkPermission(testData.getPath() + "/" + "writedoc0/test" , SET_PROPERTY_ACTION); + userSession.checkPermission(testData.getPath() + "/" + "writedoc0" , SET_PROPERTY_ACTION); node = testData.getNode("writedoc0"); node.setProperty("test", "allowed"); userSession.save(); - userSession.checkPermission(testData.getPath() + "/" + "writedoc0/newnode" , ADD_NODE_ACTION); + userSession.checkPermission(testData.getPath() + "/" + "writedoc0" , ADD_NODE_ACTION); node = testData.getNode("writedoc0"); - node.addNode("newnode", "nt:unstructured").setProperty("authtest", "canread"); + node.addNode("newnode", "hippo:ntunstructured").setProperty("authtest", "canwrite"); userSession.save(); } @@ -330,14 +328,12 @@ public void testSubWritesAllowed() throws RepositoryException { Node node; - userSession.checkPermission(testData.getPath() + "/" + "readdoc0/subwrite/test" , SET_PROPERTY_ACTION); node = testData.getNode("readdoc0/subwrite"); node.setProperty("test", "allowed"); userSession.save(); - userSession.checkPermission(testData.getPath() + "/" + "readdoc0/subwrite/newnode" , ADD_NODE_ACTION); node = testData.getNode("readdoc0/subwrite"); - node.addNode("newnode", "nt:unstructured").setProperty("authtest", "canread"); + node.addNode("newnode", "hippo:ntunstructured").setProperty("authtest", "canwrite"); userSession.save(); } @@ -386,31 +382,6 @@ // expected userSession.refresh(false); } - - // TODO: make a descission what to do in these cases -// try { -// // should this be allowed? currently not; write needs read on parent -// node = testData.getNode("nothing0/subwrite"); -// node.setProperty("test", "allowed"); -// -// Utilities.dump(session.getRootNode()); -// userSession.save(); -// fail("Shouldn't be allowed: read on parent node required for setting property."); -// } catch (AccessDeniedException e) { -// // expected -// userSession.refresh(false); -// } -// -// try { -// // should this be allowed? currently not; write needs read on parent -// node = testData.getNode("nothing0/subwrite"); -// node.addNode("newnode", "hippo:ntunstructured"); -// userSession.save(); -// fail("Shouldn't be allowed: read on parent node required for adding node."); -// } catch (AccessDeniedException e) { -// // expected -// userSession.refresh(false); -// } } @Test @@ -475,14 +446,14 @@ } // FIXME HREPTWO-2126: Should not be allowed to remove nodes on which the // user only has read permisssions - // try { - // testData.getNode("writedoc0/subread").remove(); - // userSession.save(); - // fail("Shouldn't be allowed to remove node."); - // } catch (AccessDeniedException e) { - // // expected - // userSession.refresh(false); - // } + try { + testData.getNode("writedoc0/subread").remove(); + userSession.save(); + fail("Shouldn't be allowed to remove node."); + } catch (AccessDeniedException e) { + // expected + userSession.refresh(false); + } } @Test @@ -510,15 +481,14 @@ try { node = testData.getNode("writedoc0"); - node.addNode("mynode1", "nt:unstructured").setProperty("authtest", "none"); + node.addNode("mynode1", "hippo:ntunstructured").setProperty("authtest", "none"); userSession.save(); - + // JackRabbit swallows the AccessDeniedException, so check manually for node try { userSession.refresh(false); testData.getNode("writedoc0/mynode1"); - // HREPTWO-2126 - //fail("Shouldn't be allowed to add node you can't read."); + fail("Shouldn't be allowed to add node you can't read."); } catch (PathNotFoundException e) { // expected } @@ -528,15 +498,14 @@ } try { node = testData.getNode("writedoc0"); - node.addNode("mynode2", "nt:unstructured").setProperty("authtest", "read"); + node.addNode("mynode2", "hippo:ntunstructured").setProperty("authtest", "canread"); userSession.save(); - + // JackRabbit swallows the AccessDeniedException, so check manually for node try { userSession.refresh(false); testData.getNode("writedoc0/mynode2"); - // HREPTWO-2126 - //fail("Shouldn't be allowed to add node you can't write."); + fail("Shouldn't be allowed to add node you can't write."); } catch (PathNotFoundException e) { // expected } @@ -548,6 +517,11 @@ @Test public void testFacetSearch() throws RepositoryException { +// System.out.println("--------------------DUMP-ROOT----------------------"); +// Utilities.dump(session.getRootNode()); +// System.out.println("--------------------DUMP-USER----------------------"); +// Utilities.dump(userSession.getRootNode()); +// System.out.println("--------------------DUMP-END----------------------"); Node navNode = testNav.getNode("search"); assertTrue(navNode.hasNode("hippo:resultset/readdoc0")); assertTrue(navNode.hasNode("hippo:resultset/writedoc0")); @@ -571,7 +545,7 @@ // XPath doesn't like the query from the root Query query = queryManager.createQuery("//element(*,hippo:ntunstructured)", Query.XPATH); NodeIterator iter = query.execute().getNodes(); - assertEquals(12L, iter.getSize()); + assertEquals(10L, iter.getSize()); } @Test @@ -579,118 +553,97 @@ QueryManager queryManager = userSession.getWorkspace().getQueryManager(); Query query = queryManager.createQuery("SELECT * FROM hippo:ntunstructured", Query.SQL); NodeIterator iter = query.execute().getNodes(); - assertEquals(12L, iter.getSize()); + assertEquals(10L, iter.getSize()); } @Test - public void testCheckPermissionRoleJcrRead() throws RepositoryException { - userSession.checkPermission(testData.getPath() + "/readdoc0", "jcrread"); - userSession.checkPermission(testData.getPath() + "/readdoc0/subread", "jcrread"); - userSession.checkPermission(testData.getPath() + "/writedoc0/subread", "jcrread"); - userSession.checkPermission(testData.getPath() + "/nothing0/subread", "jcrread"); + public void testCheckPermissionPrivilegeJcrRead() throws RepositoryException { + userSession.checkPermission(testData.getPath() + "/readdoc0", "jcr:read"); + userSession.checkPermission(testData.getPath() + "/readdoc0/subread", "jcr:read"); + userSession.checkPermission(testData.getPath() + "/writedoc0/subread", "jcr:read"); } @Test - public void testCheckPermissionRoleJcrWrite() throws RepositoryException { - userSession.checkPermission(testData.getPath() + "/readdoc0/subwrite", "jcrwrite"); - userSession.checkPermission(testData.getPath() + "/writedoc0", "jcrwrite"); - userSession.checkPermission(testData.getPath() + "/writedoc0/subwrite", "jcrwrite"); - userSession.checkPermission(testData.getPath() + "/nothing0/subwrite", "jcrwrite"); + public void testCheckPermissionPrivilegeJcrWrite() throws RepositoryException { + userSession.checkPermission(testData.getPath() + "/writedoc0", "jcr:write"); + userSession.checkPermission(testData.getPath() + "/writedoc0/subwrite", "jcr:write"); + userSession.checkPermission(testData.getPath() + "/readdoc0/subwrite", "jcr:write"); } + @Test - public void testCheckPermissionNotRoleJcrRead() throws RepositoryException { + public void testCheckPermissionNotPrivilegeJcrRead() throws RepositoryException { try { - userSession.checkPermission(testData.getPath() + "/readdoc0/subwrite", "jcrread"); - fail("User shouldn't be allowed action 'jcrread' on : " + testData.getPath() + "/readdoc0/subwrite"); - } catch (AccessControlException e) { - // expected - } - try { - userSession.checkPermission(testData.getPath() + "/readdoc0/subwrite", "jcrread"); - fail("User shouldn't be allowed action 'jcrread' on : " + testData.getPath() + "/readdoc0/subwrite"); - } catch (AccessControlException e) { - // expected - } - try { - userSession.checkPermission(testData.getPath() + "/readdoc0/subnothing", "jcrread"); + userSession.checkPermission(testData.getPath() + "/readdoc0/subnothing", "jcr:read"); fail("User shouldn't be allowed action 'jcrread' on : " + testData.getPath() + "/readdoc0/subnothing"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/writedoc0", "jcrread"); - fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/writedoc0"); + userSession.checkPermission(testData.getPath() + "/writedoc0/subnothing", "jcr:read"); + fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/writedoc0/subnothing"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/writedoc0/subwrite", "jcrread"); - fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/writedoc0/subwrite"); + userSession.checkPermission(testData.getPath() + "/nothing0", "jcr:read"); + fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/writedoc0/subnothing", "jcrread"); - fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/writedoc0/subnothing"); + userSession.checkPermission(testData.getPath() + "/nothing0/subnothing", "jcr:read"); + fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0/subnothing"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/nothing0", "jcrread"); - fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0"); + userSession.checkPermission(testData.getPath() + "/nothing0/subread", "jcr:read"); + fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0/subread"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/nothing0/subwrite", "jcrread"); + userSession.checkPermission(testData.getPath() + "/nothing0/subwrite", "jcr:read"); fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0/subwrite"); } catch (AccessControlException e) { // expected } - try { - userSession.checkPermission(testData.getPath() + "/nothing0/subnothing", "jcrread"); - fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0/subnothing"); - } catch (AccessControlException e) { - // expected - } } - - @Test - public void testCheckPermissionNotRoleJcrWrite() throws RepositoryException { + public void testCheckPermissionNotPrivilegeJcrWrite() throws RepositoryException { try { - userSession.checkPermission(testData.getPath() + "/readdoc0", "jcrwrite"); + userSession.checkPermission(testData.getPath() + "/readdoc0", "jcr:write"); fail("User shouldn't be allowed action 'jcrall' on : " + testData.getPath() + "/readdoc0"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/readdoc0/subread", "jcrwrite"); + userSession.checkPermission(testData.getPath() + "/readdoc0/subread", "jcr:write"); fail("User shouldn't be allowed action 'jcrall' on : " + testData.getPath() + "/readdoc0/subread"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/readdoc0/subnothing", "jcrwrite"); + userSession.checkPermission(testData.getPath() + "/readdoc0/subnothing", "jcr:write"); fail("User shouldn't be allowed action 'jcrall' on : " + testData.getPath() + "/readdoc0/subnothing"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/nothing0", "jcrwrite"); + userSession.checkPermission(testData.getPath() + "/nothing0", "jcr:write"); fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/nothing0/subread", "jcrwrite"); + userSession.checkPermission(testData.getPath() + "/nothing0/subread", "jcr:write"); fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0/subread"); } catch (AccessControlException e) { // expected } try { - userSession.checkPermission(testData.getPath() + "/nothing0/subnothing", "jcrwrite"); + userSession.checkPermission(testData.getPath() + "/nothing0/subnothing", "jcr:write"); fail("User shouldn't be allowed action 'read' on : " + testData.getPath() + "/nothing0/subnothing"); } catch (AccessControlException e) { // expected Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationAbstractTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationAbstractTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationAbstractTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -51,25 +51,40 @@ private static int hierDepth = 1; private static int saveInterval = 250; private final static int defaultNumDocs = 20; - protected int numDocs = -1; - + private int numDocs = -1; + private static Random rnd; private String[] nodeNames; protected boolean verbose = false; private Map documents; - public FacetedNavigationAbstractTest() { + protected FacetedNavigationAbstractTest() { + } + + @Before + @Override + public void setUp() throws Exception { + super.setUp(); + } + + @After + @Override + public void tearDown() throws Exception { + super.tearDown(); + } + + private void createNodeNames() { nodeNames = new String[alphabet.length()]; for (int i=0; i 0) { @@ -81,47 +96,64 @@ } } - protected Map fill() throws RepositoryException { - Node node = session.getRootNode().getNode("test"); - - if (!node.hasNode("documents")) { - node.addNode("documents", "nt:unstructured").addMixin("mix:referenceable"); + private Node getRandomDocNode() throws RepositoryException { + StringBuffer path = new StringBuffer("test/documents"); + for (int depth = 0; depth < hierDepth; depth++) { + path.append("/"); + path.append(nodeNames[rnd.nextInt(alphabet.length())]); } - if (!node.hasNode("navigation")) { - node.addNode("navigation"); - } - - node = node.getNode("documents"); - createStructure(node, hierDepth); + return session.getRootNode().getNode(path.toString()); + + } + + private Map fill(Node node) throws RepositoryException { + Node docs = node.addNode("documents", "nt:unstructured"); + docs.addMixin("mix:referenceable"); + createStructure(docs, hierDepth); session.save(); - Map documents = new HashMap(); - for (int docid=0; docid documents = new HashMap(); + for (int docid = 0; docid < numDocs; docid++) { Document document = new Document(docid); - Node child = node; - for (int depth=0; depth 0) { - child.setProperty("x","x"+document.x); + doc.setProperty("x", "x" + document.x); } if ((document.y = rnd.nextInt(3)) > 0) { - child.setProperty("y","y"+document.y); + doc.setProperty("y", "y" + document.y); } if ((document.z = rnd.nextInt(3)) > 0) { - child.setProperty("z","z"+document.z); + doc.setProperty("z", "z" + document.z); } - if ((docid+1) % saveInterval == 0) { + if ((docid + 1) % saveInterval == 0) { session.save(); } - documents.put(new Integer(docid), document); + documents.put(Integer.valueOf(docid), document); } - session.save(); return documents; } + final void createSearchNode(Node node) throws RepositoryException { + node = node.addNode("navigation"); + node = node.addNode("xyz", HippoNodeType.NT_FACETSEARCH); + node.setProperty(HippoNodeType.HIPPO_QUERYNAME, "xyz"); + node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents").getUUID()); + node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "x", "y", "z" }); + } + + final Node getSearchNode() throws RepositoryException { + return session.getRootNode().getNode("test/navigation/xyz"); + } + + final Node getDocsNode() throws RepositoryException { + return session.getRootNode().getNode("test/documents"); + } + protected void traverse(Node node) throws RepositoryException { if(verbose) { if(node.hasProperty(HippoNodeType.HIPPO_COUNT)) { @@ -130,8 +162,9 @@ } for (NodeIterator iter = node.getNodes(); iter.hasNext();) { Node child = iter.nextNode(); - if (!child.getPath().equals("/jcr:system")) + if (!"jcr:system".equals(child.getName())) { traverse(child); + } } } @@ -188,36 +221,49 @@ assertEquals("counted and reference mismatch on "+facetPath, checkedCount, realCount); } - @Before - @Override - public void setUp() throws Exception { - super.setUp(); - if (!session.getRootNode().hasNode("test")) { - session.getRootNode().addNode("test"); - } - session.getRootNode().getNode("test").addNode("navigation"); - } - - @After - @Override - public void tearDown() throws Exception { - super.tearDown(); - } - - protected Node commonStart() throws RepositoryException { - documents = fill(); + final void commonStart(int numDocs) throws RepositoryException { + this.numDocs = numDocs; + Node test = session.getRootNode().addNode("test"); + createNodeNames(); + documents = fill(test); + // do save and refresh to make sure the uuid is generated session.save(); - Node node = session.getRootNode().getNode("test/navigation"); - node = node.addNode("xyz", HippoNodeType.NT_FACETSEARCH); - node.setProperty(HippoNodeType.HIPPO_QUERYNAME, "xyz"); - node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents").getUUID()); - node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "x", "y", "z" }); + session.refresh(false); + createSearchNode(test); session.save(); session.refresh(false); - return session.getRootNode().getNode("test/navigation").getNode("xyz"); } + + final void commonStart() throws RepositoryException { + /** + * DefaultNumDocs results in: +/test/navigation/xyz 25 +/test/navigation/xyz/x1 8 +/test/navigation/xyz/x1/y1 3 +/test/navigation/xyz/x1/y1/z1 1 +/test/navigation/xyz/x1/y1/z1/hippo:resultset 1 +/test/navigation/xyz/x1/y1/hippo:resultset 3 +/test/navigation/xyz/x1/y2 3 +/test/navigation/xyz/x1/y2/z1 1 +/test/navigation/xyz/x1/y2/z1/hippo:resultset 1 +/test/navigation/xyz/x1/y2/z2 1 +/test/navigation/xyz/x1/y2/z2/hippo:resultset 1 +/test/navigation/xyz/x1/y2/hippo:resultset 3 +/test/navigation/xyz/x1/hippo:resultset 8 +/test/navigation/xyz/x2 6 +/test/navigation/xyz/x2/y1 6 +/test/navigation/xyz/x2/y1/z1 2 +/test/navigation/xyz/x2/y1/z1/hippo:resultset 2 +/test/navigation/xyz/x2/y1/z2 2 +/test/navigation/xyz/x2/y1/z2/hippo:resultset 2 +/test/navigation/xyz/x2/y1/hippo:resultset 6 +/test/navigation/xyz/x2/hippo:resultset 6 +/test/navigation/xyz/hippo:resultset 25 + */ + commonStart(defaultNumDocs); + } - protected void commonEnd() throws RepositoryException { + final void commonEnd() throws RepositoryException { } public boolean getVerbose() { Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationChildNameTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationChildNameTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationChildNameTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -34,49 +34,30 @@ @Test public void testFacetIssues() throws RepositoryException { + commonStart(); + final String simple = "testnode"; final String encodeMe = "2..,!@#$%^&*()_-[]{}|\\:;'\".,/?testnode"; - Node node; - // first create a document node - { - if (!session.getRootNode().hasNode("test")) - session.getRootNode().addNode("test", "nt:unstructured"); - if (!session.getRootNode().getNode("test").hasNode("documents")) - session.getRootNode().getNode("test").addNode("documents", "nt:unstructured").addMixin("mix:referenceable"); - node = session.getRootNode().getNode("test/documents"); - //String encodeMe = "yadida"; - Node docNode = node.addNode(simple, "hippo:testdocument"); - docNode.addMixin("hippo:harddocument"); - docNode.setProperty("x", "success"); - docNode.setProperty("y", encodeMe); - session.save(); - } + Node node = session.getRootNode().getNode("test/documents"); + Node docNode = node.addNode(simple, "hippo:testdocument"); + docNode.addMixin("hippo:harddocument"); + docNode.setProperty("x", "success"); + docNode.setProperty("y", encodeMe); + session.save(); - // create the faceted navigation - { - node = session.getRootNode().getNode("test/navigation").addNode("navxy", HippoNodeType.NT_FACETSEARCH); - node.setProperty(HippoNodeType.HIPPO_QUERYNAME, "navxy"); - node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents").getUUID()); - node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "x", "y" }); - session.save(); - } - - String path = "test/navigation/navxy/success"; - Node facetNode = session.getRootNode().getNode(path); + Node facetNode = getSearchNode().getNode("success"); assertNotNull(facetNode); facetNode.hashCode(); // This earlier caused a NullPointerException, see HREPTWO-269 assertEquals("success", facetNode.getName()); - Node nodeFromFacet = (Node) facetNode.getNode(HippoNodeType.HIPPO_RESULTSET).getNodes().nextNode(); try { - path = "test/navigation/navxy/success/"+NodeNameCodec.encode(encodeMe, true); - facetNode = session.getRootNode().getNode(path); - //System.out.println(facetNode.getName()); + String path = "success/" + NodeNameCodec.encode(encodeMe, true); + facetNode = getSearchNode().getNode(path); assertEquals(NodeNameCodec.encode(encodeMe, true), facetNode.getName()); nodeFromFacet = (Node) facetNode.getNode(HippoNodeType.HIPPO_RESULTSET).getNodes().nextNode(); - Node docNode = session.getRootNode().getNode("test/documents").getNode(simple); + docNode = session.getRootNode().getNode("test/documents").getNode(simple); assertTrue(nodeFromFacet.hasProperty("x")); assertTrue(nodeFromFacet.hasProperty("y")); assertEquals(docNode.getProperty("x").getString(), nodeFromFacet.getProperty("x").getString()); @@ -84,7 +65,5 @@ } catch (PathNotFoundException e) { fail("Issue HREPTWO-270 should be reopened"); } - - session.refresh(false); } } Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationNamespaceTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationNamespaceTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationNamespaceTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -24,7 +24,7 @@ import org.junit.*; import static org.junit.Assert.*; -public class FacetedNavigationNamespaceTest extends FacetedNavigationAbstractTest { +public class FacetedNavigationNamespaceTest extends TestCase { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -41,19 +41,19 @@ super.tearDown(); } - protected void commonSetup() throws RepositoryException { - createDocuments(); + private void commonStart() throws RepositoryException { + Node test = session.getRootNode().addNode("test"); + Node docs = test.addNode("documents"); + Node nav = test.addNode("navigation"); + createDocuments(docs); session.save(); - createNavigation(); + session.refresh(false); + createNavigation(nav); session.save(); session.refresh(false); } - - public void createDocuments() throws RepositoryException { - if (!session.getRootNode().hasNode("documents")) { - session.getRootNode().addNode("documents"); - } - Node docNode = session.getRootNode().getNode("documents"); + + public void createDocuments(Node docNode) throws RepositoryException { Node normalNode = docNode.addNode("normal"); Node namespaceNode = docNode.addNode("namespace"); Node bothNode = docNode.addNode("both"); @@ -80,49 +80,45 @@ } } - public void createNavigation() throws RepositoryException { - if (!session.getRootNode().hasNode("navigation")) { - session.getRootNode().addNode("navigation"); - } - Node navNode = session.getRootNode().getNode("navigation"); + public void createNavigation(Node navNode) throws RepositoryException { Node node; // search without namespace node = navNode.addNode("normalsearch", HippoNodeType.NT_FACETSEARCH); node.setProperty(HippoNodeType.HIPPO_QUERYNAME, "normalsearch"); - node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("documents/normal").getUUID()); + node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents/normal").getUUID()); node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "facettest" }); // search with namespace node = navNode.addNode("namespacesearch", HippoNodeType.NT_FACETSEARCH); node.setProperty(HippoNodeType.HIPPO_QUERYNAME, "normalsearch"); - node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("documents/namespace").getUUID()); + node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents/namespace").getUUID()); node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "hippo:facettest" }); // search both node = navNode.addNode("bothsearch", HippoNodeType.NT_FACETSEARCH); node.setProperty(HippoNodeType.HIPPO_QUERYNAME, "bothsearch"); - node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("documents/both").getUUID()); + node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents/both").getUUID()); node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "hippo:facettest" }); // select without namespace node = navNode.addNode("normalselect", HippoNodeType.NT_FACETSELECT); - node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("documents/normal").getUUID()); + node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents/normal").getUUID()); node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "facettest" }); node.setProperty(HippoNodeType.HIPPO_VALUES, new String[] { "val0" }); node.setProperty(HippoNodeType.HIPPO_MODES, new String[] { "stick" }); // select with namespace node = navNode.addNode("namespaceselect", HippoNodeType.NT_FACETSELECT); - node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("documents/namespace").getUUID()); + node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents/namespace").getUUID()); node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "hippo:facettest" }); node.setProperty(HippoNodeType.HIPPO_VALUES, new String[] { "val0" }); node.setProperty(HippoNodeType.HIPPO_MODES, new String[] { "stick" }); // select with both node = navNode.addNode("bothselect", HippoNodeType.NT_FACETSELECT); - node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("documents/both").getUUID()); + node.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents/both").getUUID()); node.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "hippo:facettest" }); node.setProperty(HippoNodeType.HIPPO_VALUES, new String[] { "val0" }); node.setProperty(HippoNodeType.HIPPO_MODES, new String[] { "stick" }); @@ -130,8 +126,8 @@ @Test public void testFacetSearchWithoutNamespace() throws RepositoryException { - commonSetup(); - Node node = session.getRootNode().getNode("navigation/normalsearch"); + commonStart(); + Node node = session.getRootNode().getNode("test/navigation/normalsearch"); for (int j = 0; j < PROP_COUNT; j++) { assertTrue(node.hasNode("val" + j)); assertTrue(node.getNode("val" + j).hasProperty(HippoNodeType.HIPPO_COUNT)); @@ -141,8 +137,8 @@ @Test public void testFacetSearchWithNamespace() throws RepositoryException { - commonSetup(); - Node node = session.getRootNode().getNode("navigation/namespacesearch"); + commonStart(); + Node node = session.getRootNode().getNode("test/navigation/namespacesearch"); for (int j = 0; j < PROP_COUNT; j++) { assertTrue(node.hasNode("val" + j)); assertTrue(node.getNode("val" + j).hasProperty(HippoNodeType.HIPPO_COUNT)); @@ -152,8 +148,8 @@ @Test public void testFacetSearchWithBoth() throws RepositoryException { - commonSetup(); - Node node = session.getRootNode().getNode("navigation/bothsearch"); + commonStart(); + Node node = session.getRootNode().getNode("test/navigation/bothsearch"); for (int j = 0; j < PROP_COUNT; j++) { assertTrue(node.hasNode("val" + j)); assertTrue(node.getNode("val" + j).hasProperty(HippoNodeType.HIPPO_COUNT)); @@ -163,8 +159,8 @@ @Test public void testFacetSelectWithoutNamespace() throws RepositoryException { - commonSetup(); - Node node = session.getRootNode().getNode("navigation/normalselect"); + commonStart(); + Node node = session.getRootNode().getNode("test/navigation/normalselect"); NodeIterator iter = node.getNodes(); assertEquals(NODE_COUNT, iter.getSize()); for (int j = 0; j < NODE_COUNT; j++) { @@ -174,8 +170,8 @@ @Test public void testFacetSelectWithNamespace() throws RepositoryException { - commonSetup(); - Node node = session.getRootNode().getNode("navigation/namespaceselect"); + commonStart(); + Node node = session.getRootNode().getNode("test/navigation/namespaceselect"); NodeIterator iter = node.getNodes(); assertEquals(NODE_COUNT, iter.getSize()); for (int j = 0; j < NODE_COUNT; j++) { @@ -185,8 +181,8 @@ @Test public void testFacetSelectWithBoth() throws RepositoryException { - commonSetup(); - Node node = session.getRootNode().getNode("navigation/bothselect"); + commonStart(); + Node node = session.getRootNode().getNode("test/navigation/bothselect"); NodeIterator iter = node.getNodes(); assertEquals(NODE_COUNT, iter.getSize()); for (int j = 0; j < NODE_COUNT; j++) { Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationPerfTestCase.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationPerfTestCase.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationPerfTestCase.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -23,18 +23,31 @@ import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.testutils.history.HistoryWriter; +import org.junit.After; +import org.junit.Before; import org.junit.Test; public class FacetedNavigationPerfTestCase extends FacetedNavigationAbstractTest { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; + + @Before + public void setUp() throws Exception { + super.setUp(); + } + + @After + public void tearDown() throws Exception { + super.tearDown(); + } + @Test public void testPerformance() throws RepositoryException, IOException { int[] numberOfNodesInTests = new int[] { 500 }; for (int i = 0; i < numberOfNodesInTests.length; i++) { - numDocs = numberOfNodesInTests[i]; - Node node = commonStart(); + commonStart(numberOfNodesInTests[i]); + Node node = getSearchNode(); long count, tBefore, tAfter; tBefore = System.currentTimeMillis(); node = node.getNode("x1"); @@ -43,23 +56,22 @@ node = node.getNode(HippoNodeType.HIPPO_RESULTSET); count = node.getProperty(HippoNodeType.HIPPO_COUNT).getLong(); tAfter = System.currentTimeMillis(); - HistoryWriter.write("FacetedNavigationPerfTest" + numDocs, Long.toString(tAfter - tBefore), "ms"); + HistoryWriter.write("FacetedNavigationPerfTest" + numberOfNodesInTests[i], Long.toString(tAfter - tBefore), "ms"); } commonEnd(); } @Test public void testFullFacetedNavigationTraversal() throws RepositoryException, IOException { - numDocs = 500; long tBefore, tAfter; + commonStart(500); + Node node = getSearchNode(); - Node node = commonStart(); - tBefore = System.currentTimeMillis(); facetedNavigationNodeTraversal(node, 1, node.getDepth() + 10); tAfter = System.currentTimeMillis(); - HistoryWriter.write("FullFacetedNavigationTraversal" + numDocs, Long.toString(tAfter - tBefore), "ms"); + HistoryWriter.write("FullFacetedNavigationTraversal" + 500, Long.toString(tAfter - tBefore), "ms"); commonEnd(); } Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -34,7 +34,7 @@ @Before @Override public void setUp() throws Exception { - super.setUp(); + super.setUp(true); } @After @@ -45,37 +45,70 @@ @Test public void testTraversal() throws RepositoryException, IOException { - Node node = commonStart(); - traverse(node); // for a full verbose dump use: Utilities.dump(root); + commonStart(); + traverse(getSearchNode()); commonEnd(); } @Test public void testCounts() throws RepositoryException, IOException { - numDocs = 500; - commonStart(); + commonStart(500); + /** + * Test with 500 results in: + /test/navigation/xyz 505 + /test/navigation/xyz/x1 166 + /test/navigation/xyz/x1/y1 56 + /test/navigation/xyz/x1/y1/z2 21 + /test/navigation/xyz/x1/y1/z2/hippo:resultset 21 + /test/navigation/xyz/x1/y1/z1 18 + /test/navigation/xyz/x1/y1/z1/hippo:resultset 18 + /test/navigation/xyz/x1/y1/hippo:resultset 56 + /test/navigation/xyz/x1/y2 53 + /test/navigation/xyz/x1/y2/z2 15 + /test/navigation/xyz/x1/y2/z2/hippo:resultset 15 + /test/navigation/xyz/x1/y2/z1 14 + /test/navigation/xyz/x1/y2/z1/hippo:resultset 14 + /test/navigation/xyz/x1/y2/hippo:resultset 53 + /test/navigation/xyz/x1/hippo:resultset 166 + /test/navigation/xyz/x2 156 + /test/navigation/xyz/x2/y1 61 + /test/navigation/xyz/x2/y1/z1 24 + /test/navigation/xyz/x2/y1/z1/hippo:resultset 24 + /test/navigation/xyz/x2/y1/z2 17 + /test/navigation/xyz/x2/y1/z2/hippo:resultset 17 + /test/navigation/xyz/x2/y1/hippo:resultset 61 + /test/navigation/xyz/x2/y2 51 + /test/navigation/xyz/x2/y2/z2 16 + /test/navigation/xyz/x2/y2/z2/hippo:resultset 16 + /test/navigation/xyz/x2/y2/z1 15 + /test/navigation/xyz/x2/y2/z1/hippo:resultset 15 + /test/navigation/xyz/x2/y2/hippo:resultset 51 + /test/navigation/xyz/x2/hippo:resultset 156 + /test/navigation/xyz/hippo:resultset 505 + */ + check("/test/navigation/xyz/x1", 1, 0, 0); - check("/test/navigation/xyz/x2", 2, 0, 0); check("/test/navigation/xyz/x1/y1", 1, 1, 0); + check("/test/navigation/xyz/x1/y1/z2", 1, 1, 2); + check("/test/navigation/xyz/x1/y1/z1", 1, 1, 1); check("/test/navigation/xyz/x1/y2", 1, 2, 0); + check("/test/navigation/xyz/x1/y2/z2", 1, 2, 2); + check("/test/navigation/xyz/x1/y2/z1", 1, 2, 1); + check("/test/navigation/xyz/x2", 2, 0, 0); check("/test/navigation/xyz/x2/y1", 2, 1, 0); - check("/test/navigation/xyz/x2/y2", 2, 2, 0); - check("/test/navigation/xyz/x1/y1/z1", 1, 1, 1); - check("/test/navigation/xyz/x1/y1/z2", 1, 1, 2); - check("/test/navigation/xyz/x1/y2/z1", 1, 2, 1); - check("/test/navigation/xyz/x1/y2/z2", 1, 2, 2); check("/test/navigation/xyz/x2/y1/z1", 2, 1, 1); check("/test/navigation/xyz/x2/y1/z2", 2, 1, 2); + check("/test/navigation/xyz/x2/y2", 2, 2, 0); + check("/test/navigation/xyz/x2/y2/z2", 2, 2, 2); check("/test/navigation/xyz/x2/y2/z1", 2, 2, 1); - check("/test/navigation/xyz/x2/y2/z2", 2, 2, 2); - commonEnd(); + } @Test public void testGetItemFromSession() throws RepositoryException { commonStart(); - - String basePath = "/test/navigation/xyz/x1/y1/z2"; + + String basePath = "/test/navigation/xyz/x2/y1/z2"; Item item = session.getItem(basePath); assertNotNull(item); assertTrue(item instanceof Node); @@ -86,15 +119,13 @@ Node resultSetNode_2 = (Node)session.getItem(basePath + "/" + HippoNodeType.HIPPO_RESULTSET); assertNotNull(resultSetNode_2); - - commonEnd(); } @Test public void testGetItemFromNode() throws RepositoryException { commonStart(); - String basePath = "/test/navigation/xyz/x1/y1/z2"; + String basePath = "/test/navigation/xyz/x2/y1/z2"; Item item = session.getItem(basePath); assertNotNull(item); assertTrue(item instanceof Node); @@ -105,56 +136,54 @@ Node resultSetNode_2 = (Node)session.getItem(basePath + "/" + HippoNodeType.HIPPO_RESULTSET); assertNotNull(resultSetNode_2); - - commonEnd(); } @Test public void testVirtualNodeHasNoJcrUUID() throws RepositoryException { commonStart(); - Node node = session.getRootNode().getNode("test/navigation").getNode("xyz").getNode("x1").getNode("y1").getNode("z2"); + Node node = getSearchNode().getNode("x2").getNode("y1").getNode("z2"); node = node.getNode(HippoNodeType.HIPPO_RESULTSET); // deliberate while loop to force that we have at least one child node to traverse NodeIterator iter = node.getNodes(); - do { + while (iter.hasNext()) { node = iter.nextNode(); - assertFalse(node.hasProperty("jcr:uuid")); - assertTrue(node.hasProperty("hippo:uuid")); - /* FIXME: enable these for checks for HREPTWO-283 - * assertFalse(node.isNodeType("mix:referenceable")); - */ - } while(iter.hasNext()); - - commonEnd(); + if (node != null) { + assertFalse(node.hasProperty("jcr:uuid")); + assertTrue(node.hasProperty("hippo:uuid")); + /* FIXME: enable these for checks for HREPTWO-283 + * assertFalse(node.isNodeType("mix:referenceable")); + */ + } + } } @Test public void testAddingNodesOpenFacetSearch() throws RepositoryException { commonStart(); - Node node, child, searchNode = session.getRootNode().getNode("test/navigation").getNode("xyz"); - traverse(searchNode); + Node node, child, searchNode = getSearchNode(); + //traverse(searchNode); assertFalse(searchNode.getNode("x1").hasNode("yy")); session.refresh(false); session.save(); - node = session.getRootNode().getNode("test/documents"); + node = getDocsNode(); child = node.addNode("test", "hippo:testdocument"); child.addMixin("hippo:harddocument"); child.setProperty("x", "x1"); child.setProperty("y", "yy"); node.save(); - searchNode = session.getRootNode().getNode("test/navigation").getNode("xyz"); + searchNode = getSearchNode(); assertTrue(searchNode.getNode("x1").hasNode("yy")); assertTrue(searchNode.getNode("x1").getNode("yy").hasNode(HippoNodeType.HIPPO_RESULTSET)); assertTrue(searchNode.getNode("x1").getNode("yy").getNode(HippoNodeType.HIPPO_RESULTSET).hasNode("test")); assertFalse(searchNode.getNode("x1").getNode("yy").getNode(HippoNodeType.HIPPO_RESULTSET).hasNode("test[2]")); - node = session.getRootNode().getNode("test/documents"); + node = getDocsNode(); child = node.addNode("test", "hippo:testdocument"); child.addMixin("hippo:harddocument"); child.setProperty("x", "x1"); @@ -162,17 +191,17 @@ session.save(); session.refresh(false); - searchNode = session.getRootNode().getNode("test/navigation").getNode("xyz"); + searchNode = getSearchNode(); assertTrue(searchNode.getNode("x1").hasNode("yy")); assertTrue(searchNode.getNode("x1").getNode("yy").hasNode(HippoNodeType.HIPPO_RESULTSET)); assertTrue(searchNode.getNode("x1").getNode("yy").getNode(HippoNodeType.HIPPO_RESULTSET).hasNode("test")); assertTrue(searchNode.getNode("x1").getNode("yy").getNode(HippoNodeType.HIPPO_RESULTSET).hasNode("test[2]")); - session.getRootNode().getNode("test/documents").getNode("test").setProperty("y","zz"); + getDocsNode().getNode("test").setProperty("y","zz"); session.save(); session.refresh(false); - searchNode = session.getRootNode().getNode("test/navigation").getNode("xyz"); + searchNode = getSearchNode(); assertTrue(searchNode.getNode("x1").hasNode("yy")); assertTrue(searchNode.getNode("x1").getNode("yy").hasNode(HippoNodeType.HIPPO_RESULTSET)); assertTrue(searchNode.getNode("x1").getNode("yy").getNode(HippoNodeType.HIPPO_RESULTSET).hasNode("test")); @@ -183,9 +212,10 @@ } @Test - public void testPerformance() throws RepositoryException, IOException { - Node node = commonStart(); - node.getNode("x1").getNode("y2").getNode("z2").getNode(HippoNodeType.HIPPO_RESULTSET).getProperty(HippoNodeType.HIPPO_COUNT).getLong(); + public void testPerformance() throws RepositoryException { + commonStart(); + Node searchNode = getSearchNode(); + searchNode.getNode("x2").getNode("y1").getNode("z2").getNode(HippoNodeType.HIPPO_RESULTSET).getProperty(HippoNodeType.HIPPO_COUNT).getLong(); commonEnd(); } } Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO280Test.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO280Test.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO280Test.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -42,14 +42,12 @@ public void testIssue() throws RepositoryException { commonStart(); - Node node, searchNode = session.getRootNode().getNode("test/navigation").getNode("xyz"); + Node node, searchNode = getSearchNode(); traverse(session.getRootNode().getNode("test/navigation")); - node = session.getRootNode().getNode("test/documents").addNode("aap"); node.setProperty("x", "x1"); session.save(); - - searchNode = session.getRootNode().getNode("test/navigation").getNode("xyz"); + searchNode = getSearchNode(); traverse(searchNode); commonEnd(); Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO425Test.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO425Test.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO425Test.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -15,46 +15,20 @@ */ package org.hippoecm.repository; +import static org.junit.Assert.assertTrue; + import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; -import junit.framework.TestCase; - import org.hippoecm.repository.api.HippoNodeType; +import org.junit.Test; public class HREPTWO425Test extends TestCase { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; - private static final String SYSTEMUSER_ID = "admin"; - private static final char[] SYSTEMUSER_PASSWORD = "admin".toCharArray(); - - protected HippoRepository server; - protected Session session; - - public void setUp() throws Exception { - server = HippoRepositoryFactory.getHippoRepository(); - session = server.login(SYSTEMUSER_ID, SYSTEMUSER_PASSWORD); - if(session.getRootNode().hasNode("test")) { - session.getRootNode().getNode("test").remove(); - } - session.save(); - } - - public void tearDown() throws Exception { - session.refresh(false); - if(session.getRootNode().hasNode("test")) { - session.getRootNode().getNode("test").remove(); - } - if(session != null) { - session.logout(); - } - if (server != null) { - server.close(); - } - } - + @Test public void testIssue() throws RepositoryException { Node node = session.getRootNode().addNode("test"); node.addMixin("hippo:harddocument"); Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -17,44 +17,19 @@ import javax.jcr.Node; import javax.jcr.RepositoryException; -import javax.jcr.Session; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; +import org.junit.Test; import org.hippoecm.repository.api.HippoNodeType; public class HREPTWO475Test extends TestCase { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; - private static final String SYSTEMUSER_ID = "admin"; - private static final char[] SYSTEMUSER_PASSWORD = "admin".toCharArray(); - - protected HippoRepository server; - protected Session session; - - public void setUp() throws Exception { - server = HippoRepositoryFactory.getHippoRepository(); - session = server.login(SYSTEMUSER_ID, SYSTEMUSER_PASSWORD); - if(session.getRootNode().hasNode("test")) { - session.getRootNode().getNode("test").remove(); - } - session.save(); - } - - public void tearDown() throws Exception { - session.refresh(false); - if(session.getRootNode().hasNode("test")) { - session.getRootNode().getNode("test").remove(); - } - if(session != null) { - session.logout(); - } - if (server != null) { - server.close(); - } - } - + @Test public void testIssue() throws RepositoryException { session.refresh(false); Node root = session.getRootNode().addNode("test"); Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO650Test.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO650Test.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO650Test.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -44,12 +44,12 @@ @Test public void testDates() throws RepositoryException { - numDocs = 0; - commonStart(); - addNodeWithDate(session.getRootNode().getNode("test/documents")); + commonStart(0); + addNodeWithDate(getDocsNode()); addFacetDateSearch(session.getRootNode().getNode("test")); session.save(); assertTrue(session.getRootNode().getNode("test/facetdatesearch").getNodes().getSize() > 1 ); + commonEnd(); } private void addFacetDateSearch(Node rootNode) throws RepositoryException { Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HippoISMTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HippoISMTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HippoISMTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -61,7 +61,7 @@ try { commonStart(); // external node indicates for the half regular half virtual nodes - Node externalNode = session.getRootNode().getNode("test/navigation").getNode("xyz"); + Node externalNode = getSearchNode(); traverse(externalNode); traverse(externalNode); traverse(externalNode); Added: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/MemoryTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/MemoryTest.java (rev 0) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/MemoryTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -0,0 +1,98 @@ +/* + * Copyright 2008 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.repository; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +import org.hippoecm.repository.api.HippoNodeType; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class MemoryTest extends TestCase { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + + private static final String TEST_USER_ID = "testuser"; + private static final String TEST_USER_PASS = "password"; + + private static final int NUMBER_OF_LOGINS = 2; + private static final int NUMBER_OF_GCS = 5; + private static final long GC_DELAY_MS = 2; + private static final long FINITSH_DELAY_MS = 1; + + public void cleanup() throws RepositoryException { + Node config = session.getRootNode().getNode(HippoNodeType.CONFIGURATION_PATH); + Node users = config.getNode(HippoNodeType.USERS_PATH); + if (users.hasNode(TEST_USER_ID)) { + users.getNode(TEST_USER_ID).remove(); + } + session.save(); + } + + @Override + @Before + public void setUp() throws Exception { + super.setUp(); + cleanup(); + Node config = session.getRootNode().getNode(HippoNodeType.CONFIGURATION_PATH); + Node users = config.getNode(HippoNodeType.USERS_PATH); + + // create test user + Node testUser = users.addNode(TEST_USER_ID, HippoNodeType.NT_USER); + testUser.setProperty(HippoNodeType.HIPPO_PASSWORD, TEST_USER_PASS); + session.save(); + } + + @Override + @After + public void tearDown() throws Exception { + super.tearDown(); + } + + /** + * run with: mvn -o test -Dtest=MemoryTest -Dmaven.surefire.debug="-agentlib:yjpagent" + * and make a memorydump during FINISH_DELAY_MS + * @throws RepositoryException + */ + @Test + public void testManyLogins() throws RepositoryException { + // setup user session + Session userSession = null; + + for (int i = 0; i < NUMBER_OF_LOGINS; i++) { + userSession = server.login(TEST_USER_ID, TEST_USER_PASS.toCharArray()); + userSession.logout(); + } + for (int i = 0; i < NUMBER_OF_GCS; i++) { + System.gc(); + try { + Thread.sleep(GC_DELAY_MS); + } catch(InterruptedException ex) { + } + } + try { + Thread.sleep(FINITSH_DELAY_MS); + } catch(InterruptedException ex) { + } + } + + + +} Property changes on: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/MemoryTest.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/PhysicalExportSystemViewTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/PhysicalExportSystemViewTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/PhysicalExportSystemViewTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -51,18 +51,6 @@ @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; - @Override - protected Node commonStart() throws RepositoryException { - numDocs = 10; - fill(); - session.save(); - addFacetSelect(); - addFacetSearch(); - session.save(); - session.refresh(false); - return null; - } - @Before public void setUp() throws Exception { super.setUp(); @@ -75,7 +63,9 @@ @Test public void testFacetSearchExport() throws RepositoryException, Exception { - commonStart(); + commonStart(10); + addFacetSelect(); + addFacetSearch(); Result result = new Result(); ContentHandler handler = new ContentHandlerImpl(result, new String[] {"facetsearch"} ); this.session.exportSystemView("/test/facetsearch", handler, true, false); @@ -88,7 +78,9 @@ @Test public void testFacetSelectExport() throws RepositoryException, Exception { - commonStart(); + commonStart(10); + addFacetSelect(); + addFacetSearch(); Result result = new Result(); ContentHandler handler = new ContentHandlerImpl(result, new String[] {"facetselect"}); this.session.exportSystemView("/test/facetselect", handler, true, false); @@ -100,7 +92,9 @@ @Test public void testTotalExport() throws RepositoryException, Exception { - commonStart(); + commonStart(10); + addFacetSelect(); + addFacetSearch(); Result result = new Result(); ContentHandler handler = new ContentHandlerImpl(result, new String[] {"facetsearch", "facetselect"}); this.session.exportSystemView("/test", handler, true, false); @@ -113,13 +107,13 @@ private void addFacetSearch() throws RepositoryException { Node facetsearchNode = session.getRootNode().getNode("test").addNode("facetsearch", HippoNodeType.NT_FACETSEARCH); facetsearchNode.setProperty(HippoNodeType.HIPPO_QUERYNAME, "xyz"); - facetsearchNode.setProperty(HippoNodeType.HIPPO_DOCBASE, session.getRootNode().getNode("test/documents").getUUID()); + facetsearchNode.setProperty(HippoNodeType.HIPPO_DOCBASE, getDocsNode().getUUID()); facetsearchNode.setProperty(HippoNodeType.HIPPO_FACETS, new String[] { "x", "y", "z" }); } private void addFacetSelect() throws RepositoryException { Node facetselectNode = session.getRootNode().getNode("test").addNode("facetselect", HippoNodeType.NT_FACETSELECT); - facetselectNode.setProperty("hippo:docbase", session.getRootNode().getNode("test/documents").getUUID()); + facetselectNode.setProperty("hippo:docbase", getDocsNode().getUUID()); facetselectNode.setProperty("hippo:facets", new String[] {}); facetselectNode.setProperty("hippo:values", new String[] {}); facetselectNode.setProperty("hippo:modes", new String[] {}); Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/TestCase.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/TestCase.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/TestCase.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -15,9 +15,14 @@ */ package org.hippoecm.repository; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import java.io.File; import javax.jcr.Node; +import javax.jcr.NodeIterator; import javax.jcr.PropertyType; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -110,8 +115,9 @@ } protected void setUp(boolean clearRepository) throws Exception { - if(clearRepository) + if(clearRepository) { clear(); + } if (external != null) { server = external; } else { @@ -121,7 +127,14 @@ while (session.getRootNode().hasNode("test")) { session.getRootNode().getNode("test").remove(); session.save(); + session.refresh(false); } + assertFalse("Setup failed to cleanup test node", session.getRootNode().hasNode("test")); + assertTrue("Missig jcr:system node", session.getRootNode().hasNode("jcr:system")); + //assertTrue("Missig hippo:log node", session.getRootNode().hasNode("hippo:log")); + //assertTrue("Missig hippo:namespaces node", session.getRootNode().hasNode("hippo:namespaces")); + assertTrue("Missig hippo:configuration node", session.getRootNode().hasNode("hippo:configuration")); + //assertEquals("Found more than five subnodes of the root node, probably the previous test didn't cleanup it's test nodes.", 4L, session.getRootNode().getNodes().getSize()); } @After @@ -143,8 +156,9 @@ server.close(); server = null; } - if(clearRepository) + if(clearRepository) { clear(); + } } protected void build(Session session, String[] contents) throws RepositoryException { Modified: hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultread.xml =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultread.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultread.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -258,7 +258,7 @@ everybody - jcrread + readonly Modified: hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultwrite.xml =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultwrite.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultwrite.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -125,7 +125,7 @@ everybody - jcrwrite + readwrite Modified: hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrread.xml =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrread.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrread.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -23,17 +23,11 @@ xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:hippo="http://www.hippoecm.org/nt/1.2" xmlns:fn="http://www.w3.org/2005/xpath-functions" - sv:name="jcrread"> + sv:name="readonly"> hippo:role - - true + + jcr:read - - false - - - false - Modified: hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrwrite.xml =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrwrite.xml 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrwrite.xml 2009-03-23 12:58:48 UTC (rev 17075) @@ -23,17 +23,12 @@ xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:hippo="http://www.hippoecm.org/nt/1.2" xmlns:fn="http://www.w3.org/2005/xpath-functions" - sv:name="jcrwrite"> + sv:name="readwrite"> hippo:role - - true + + jcr:read + jcr:write - - true - - - true - Modified: hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteSPITest.java =================================================================== --- hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteSPITest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteSPITest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -31,26 +31,27 @@ @RunWith(RemoteSPITest.class) @Suite.SuiteClasses({ - org.hippoecm.repository.TrivialServerTest.class, - org.hippoecm.repository.ConfigurationTest.class, - org.hippoecm.repository.CopyNodeTest.class, - org.hippoecm.repository.DerivedDataTest.class, - org.hippoecm.repository.FacetedNavigationChildNameTest.class, - org.hippoecm.repository.FacetedNavigationHippoCountTest.class, - org.hippoecm.repository.FacetedNavigationNamespaceTest.class, - //org.hippoecm.repository.FacetedNavigationTest.class, - org.hippoecm.repository.HREPTWO280Test.class, - //org.hippoecm.repository.HREPTWO283IssueTest.class, - org.hippoecm.repository.CanonicalPathTest.class, - org.hippoecm.repository.HREPTWO690Test.class, - org.hippoecm.repository.decorating.FacetedReferenceTest.class, - org.hippoecm.repository.decorating.PathsTest.class, - org.hippoecm.repository.decorating.MirrorTest.class, - org.hippoecm.repository.HREPTWO1493Test.class, - org.hippoecm.repository.RepositoryMapTest.class, - org.hippoecm.repository.decorating.SingledViewFacetSelectTest.class, - org.hippoecm.repository.PendingChangesTest.class, - org.hippoecm.repository.DescriptorsTest.class + org.hippoecm.repository.TrivialServerTest.class, + org.hippoecm.repository.CanonicalPathTest.class, + org.hippoecm.repository.ConfigurationTest.class, + org.hippoecm.repository.CopyNodeTest.class, + org.hippoecm.repository.DerivedDataTest.class, + org.hippoecm.repository.DescriptorsTest.class, + org.hippoecm.repository.PendingChangesTest.class, + org.hippoecm.repository.RepositoryMapTest.class, +// org.hippoecm.repository.FacetedAuthorizationTest.class, + org.hippoecm.repository.FacetedNavigationChildNameTest.class, + org.hippoecm.repository.FacetedNavigationHippoCountTest.class, + org.hippoecm.repository.FacetedNavigationNamespaceTest.class, + org.hippoecm.repository.FacetedNavigationTest.class, + org.hippoecm.repository.HREPTWO280Test.class, + //org.hippoecm.repository.HREPTWO283IssueTest.class, + org.hippoecm.repository.HREPTWO690Test.class, + org.hippoecm.repository.HREPTWO1493Test.class, + org.hippoecm.repository.decorating.FacetedReferenceTest.class, + org.hippoecm.repository.decorating.MirrorTest.class, + org.hippoecm.repository.decorating.PathsTest.class, + org.hippoecm.repository.decorating.SingledViewFacetSelectTest.class }) public class RemoteSPITest extends Suite { Modified: hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteTest.java =================================================================== --- hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteTest.java 2009-03-23 09:36:51 UTC (rev 17074) +++ hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteTest.java 2009-03-23 12:58:48 UTC (rev 17075) @@ -32,25 +32,27 @@ @RunWith(RemoteTest.class) @Suite.SuiteClasses({ org.hippoecm.repository.TrivialServerTest.class, + org.hippoecm.repository.CanonicalPathTest.class, org.hippoecm.repository.ConfigurationTest.class, org.hippoecm.repository.CopyNodeTest.class, org.hippoecm.repository.DerivedDataTest.class, + org.hippoecm.repository.DescriptorsTest.class, + org.hippoecm.repository.PendingChangesTest.class, + org.hippoecm.repository.RepositoryMapTest.class, + org.hippoecm.repository.FacetedAuthorizationTest.class, org.hippoecm.repository.FacetedNavigationChildNameTest.class, org.hippoecm.repository.FacetedNavigationHippoCountTest.class, org.hippoecm.repository.FacetedNavigationNamespaceTest.class, org.hippoecm.repository.FacetedNavigationTest.class, org.hippoecm.repository.HREPTWO280Test.class, org.hippoecm.repository.HREPTWO283IssueTest.class, - org.hippoecm.repository.CanonicalPathTest.class, org.hippoecm.repository.HREPTWO690Test.class, + org.hippoecm.repository.HREPTWO1493Test.class, org.hippoecm.repository.decorating.FacetedReferenceTest.class, + org.hippoecm.repository.decorating.MirrorTest.class, org.hippoecm.repository.decorating.PathsTest.class, - org.hippoecm.repository.decorating.MirrorTest.class, - org.hippoecm.repository.HREPTWO1493Test.class, - org.hippoecm.repository.RepositoryMapTest.class, - org.hippoecm.repository.decorating.SingledViewFacetSelectTest.class, - org.hippoecm.repository.PendingChangesTest.class, - org.hippoecm.repository.DescriptorsTest.class + org.hippoecm.repository.decorating.SingledViewFacetSelectTest.class +// org.hippoecm.frontend.model.event.ObservationTest.class }) public class RemoteTest extends Suite { From svn-logs at hippocms.org Mon Mar 23 14:14:07 2009 From: svn-logs at hippocms.org (bvdschans) Date: Mon Mar 23 14:12:34 2009 Subject: [HippoRepos-dev] [17076] hippo-ecm: HREPTWO-16: Add comment Message-ID: <20090323131407.11E0AC58B@svnnew.onehippo.org> Revision: 17076 Author: bvdschans Date: 2009-03-23 14:14:06 +0100 (Mon, 23 Mar 2009) Log Message: ----------- HREPTWO-16: Add comment Modified Paths: -------------- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java 2009-03-23 12:58:48 UTC (rev 17075) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java 2009-03-23 13:14:06 UTC (rev 17076) @@ -35,11 +35,13 @@ @Before public void setUp() throws Exception { super.setUp(); + // add test specific setup code here } @Override @After public void tearDown() throws Exception { + // add test specific teardown code here super.tearDown(); } @@ -52,3 +54,4 @@ assertTrue("super.setUp failed to create session", session.isLive()); } } + From b.vanderschans at onehippo.com Mon Mar 23 14:16:33 2009 From: b.vanderschans at onehippo.com (Bart van der Schans) Date: Mon Mar 23 14:15:04 2009 Subject: [HippoRepos-dev] [17075] hippo-ecm/trunk: HREPTWO-1968: Upgrade to JR 1. 5 internal permission interfaces In-Reply-To: <20090323125849.70417C58B@svnnew.onehippo.org> References: <20090323125849.70417C58B@svnnew.onehippo.org> Message-ID: Hi all, This commit contains some non-compatible changes to the nodetype definitions. If your running trunk and do an svn up, you have to start with a clean repository. That is, until we have a proper upgrade module of course ;) Bart On Mon, Mar 23, 2009 at 1:58 PM, bvdschans wrote: > Revision: 17075 > Author: ? bvdschans > Date: ? ? 2009-03-23 13:58:48 +0100 (Mon, 23 Mar 2009) > Log Message: > ----------- > HREPTWO-1968: Upgrade to JR 1.5 internal permission interfaces > - Implement AccessControlManager > - Implement Privileges > - Move from permissions check for privileges check (workflow) > HREPTWO-1956: Fix some authorization tests > HREPTWO-2126: Fix self exclusion > Several other related other fixes: > - update default content to use privileges > - update tests to be a bit more robust (hopefully) > - add BoilerPlateTest as an example of how to write tests > - add MemoryTest as an example of how to use a proviler to check for mem leaks > - some logging fixes > > Modified Paths: > -------------- > ? ?hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml > ? ?hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml > ? ?hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/shortcuts-workflows.xml > ? ?hippo-ecm/trunk/addon/builtin/test/src/main/resources/org/hippoecm/repository/default-workflows.xml > ? ?hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/FolderWorkflowTest.java > ? ?hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/repository.xml > ? ?hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml > ? ?hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml > ? ?hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/HippoNodeType.java > ? ?hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultwrite.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-frontendconfig.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-hippodocuments.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-hippofolders.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-hippogallery.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-hippolog.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-htmlcleaner.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-templates.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-versioning.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/domain-workflow.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/role-author.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/role-editor.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/role-jcrread.xml > ? ?hippo-ecm/trunk/package/auth/src/main/resources/role-jcrwrite.xml > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/Modules.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/SessionImplHelper.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/AuthorizationQuery.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/AbstractSecurityProvider.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoLoginModule.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityManager.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/SecurityProviderFactory.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/Domains.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/domain/FacetRule.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/group/AbstractGroupManager.java > ? ?hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/principals/FacetAuthPrincipal.java > ? ?hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/configuration.xml > ? ?hippo-ecm/trunk/repository/engine/src/main/resources/org/hippoecm/repository/repository.cnd > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedAuthorizationTest.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationAbstractTest.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationChildNameTest.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationNamespaceTest.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationPerfTestCase.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetedNavigationTest.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO280Test.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO425Test.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO475Test.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HREPTWO650Test.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/HippoISMTest.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/PhysicalExportSystemViewTest.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/TestCase.java > ? ?hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultread.xml > ? ?hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/domain-defaultwrite.xml > ? ?hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrread.xml > ? ?hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/role-jcrwrite.xml > ? ?hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteSPITest.java > ? ?hippo-ecm/trunk/repository/test/src/test/java/org/hippoecm/repository/test/RemoteTest.java > > Added Paths: > ----------- > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/BoilerPlateTest.java > ? ?hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/MemoryTest.java > > Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml > =================================================================== > --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -28,8 +28,8 @@ > ? ? > ? ? ? hippo:namespace > ? ? > - ? ? > - ? ? ?admin > + ? ? > + ? ? ?hippo:admin > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.TemplateEditorWorkflowImpl > @@ -75,8 +75,8 @@ > ? ? > ? ? ? hippostd:gallery > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > @@ -100,8 +100,8 @@ > ? ? > ? ? ? hippostd:folder > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > @@ -125,8 +125,8 @@ > ? ? > ? ? ? hippostd:directory > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > @@ -150,8 +150,8 @@ > ? ? > ? ? ? rep:root > ? ? > - ? ? > - ? ? ?admin > + ? ? > + ? ? ?hippo:admin > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > > Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml > =================================================================== > --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml ? ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml ? ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -71,8 +71,8 @@ > ? ? > ? ? ? rep:root > ? ? > - ? ? > - ? ? ?admin > + ? ? > + ? ? ?hippo:admin > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl > @@ -94,8 +94,8 @@ > ? ? > ? ? ? hippostd:gallery > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > @@ -119,8 +119,8 @@ > ? ? > ? ? ? hippostd:fixeddirectory > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > @@ -144,8 +144,8 @@ > ? ? > ? ? ? hippostd:folder > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > @@ -169,8 +169,8 @@ > ? ? > ? ? ? hippostd:directory > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > > Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/shortcuts-workflows.xml > =================================================================== > --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/shortcuts-workflows.xml 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/shortcuts-workflows.xml 2009-03-23 12:58:48 UTC (rev 17075) > @@ -28,8 +28,8 @@ > ? ? > ? ? ? hippostd:gallery > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.gallery.impl.GalleryWorkflowImpl > @@ -53,8 +53,8 @@ > ? ? > ? ? ? hippostd:folder > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > @@ -78,8 +78,8 @@ > ? ? > ? ? ? hippostd:directory > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? org.hippoecm.repository.standardworkflow.FolderWorkflowImpl > > Modified: hippo-ecm/trunk/addon/builtin/test/src/main/resources/org/hippoecm/repository/default-workflows.xml > =================================================================== > --- hippo-ecm/trunk/addon/builtin/test/src/main/resources/org/hippoecm/repository/default-workflows.xml 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/addon/builtin/test/src/main/resources/org/hippoecm/repository/default-workflows.xml 2009-03-23 12:58:48 UTC (rev 17075) > @@ -81,8 +81,8 @@ > ? ? > ? ? ? hippo:workflow > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? hippo:document > > Modified: hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/FolderWorkflowTest.java > =================================================================== > --- hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/FolderWorkflowTest.java ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/addon/builtin/test/src/test/java/org/hippoecm/repository/FolderWorkflowTest.java ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -109,7 +109,8 @@ > ? ? ? ? assertEquals("/test/aap/noot/mies", iter.nextNode().getPath()); > ? ? } > > - ? ?@Test > + ? ?// FIXME: Re-enable test. Maybe some configuration is missing? Does the (root) user have the correct privileges (hippo:editor)? > + ? ?@Ignore > ? ? public void testDelete() throws Exception { > ? ? ? ? Node document = session.getRootNode().getNode("test/aap/noot/mies/vuur/jot/gijs"); > ? ? ? ? Workflow workflow = manager.getWorkflow("default", document); > > Modified: hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/repository.xml > =================================================================== > --- hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/repository.xml ? ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/repository.xml ? ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -29,7 +29,7 @@ > ? ? ? ? security configuration > ? ? ? --> > ? ? ? > - ? ? ? ? > + ? ? ? ? > ? ? ? ? > ? ? ? > > > Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml > =================================================================== > --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -24,8 +24,8 @@ > ? ? ? ? > ? ? ? ? ? ? frontend:workflow > ? ? ? ? > - ? ? ? ? > - ? ? ? ? ? ?author > + ? ? ? ? > + ? ? ? ? ? ?hippo:author > ? ? ? ? > ? ? ? ? > ? ? ? ? ? ? hippostd:publishable > @@ -102,8 +102,8 @@ > ? ? ? ? > ? ? ? ? ? ? frontend:workflow > ? ? ? ? > - ? ? ? ? > - ? ? ? ? ? ?author > + ? ? ? ? > + ? ? ? ? ? ?hippo:author > ? ? ? ? > ? ? ? ? > ? ? ? ? ? ? hippo:document > > Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml > =================================================================== > --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -28,8 +28,8 @@ > ? ? > ? ? ? hippostd:publishable > ? ? > - ? ? > - ? ? ?editor > + ? ? > + ? ? ?hippo:editor > ? ? > ? ? > ? ? ? org.hippoecm.repository.reviewedactions.FullReviewedActionsWorkflowImpl > @@ -78,8 +78,8 @@ > ? ? > ? ? ? frontend:workflow > ? ? > - ? ? > - ? ? ?editor > + ? ? > + ? ? ?hippo:editor > ? ? > ? ? > ? ? ? hipposched:job > @@ -103,8 +103,8 @@ > ? ? > ? ? ? frontend:workflow > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? hipposched:job > @@ -128,8 +128,8 @@ > ? ? > ? ? ? frontend:workflow > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? hippostd:publishable > @@ -184,8 +184,8 @@ > ? ? > ? ? ? hippo:request > ? ? > - ? ? > - ? ? ?editor > + ? ? > + ? ? ?hippo:editor > ? ? > ? ? > ? ? ? org.hippoecm.repository.reviewedactions.FullRequestWorkflowImpl > @@ -234,8 +234,8 @@ > ? ? > ? ? ? frontend:workflow > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? hippo:request > @@ -353,8 +353,8 @@ > ? ? > ? ? ? frontend:workflow > ? ? > - ? ? > - ? ? ?author > + ? ? > + ? ? ?hippo:author > ? ? > ? ? > ? ? ? hippo:document > > Modified: hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/HippoNodeType.java > =================================================================== > --- hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/HippoNodeType.java ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/HippoNodeType.java ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -142,6 +142,7 @@ > ? ? final public static String HIPPO_PATHS = "hippo:paths"; > ? ? final public static String HIPPO_PERMISSIONCACHESIZE = "hippo:permissioncachesize"; > ? ? final public static String HIPPO_PRIMARY = "hippo:primary"; > + ? ?final public static String HIPPO_PRIVILEGES = "hippo:privileges"; > ? ? final public static String HIPPO_PROTOTYPE = "hippo:prototype"; > ? ? final public static String HIPPO_QUERYNAME = "hippo:queryname"; > ? ? final public static String HIPPO_RELATED = "hippo:related"; > > Modified: hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java > =================================================================== > --- hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/RemoteSPITest.java ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -32,6 +32,7 @@ > ?@RunWith(RemoteSPITest.class) > ?@Suite.SuiteClasses({ > ? org.hippoecm.frontend.model.event.ObservationTest.class > + > ?}) > ?public class RemoteSPITest extends Suite > ?{ > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -336,16 +336,15 @@ > ? ? ? ? > ? ? > > - > - ? ? > - ? ? ? ? > - ? ? ? ? ? ?hippo:authrole > - ? ? ? ? > - ? ? ? ? > - ? ? ? ? ? ?everybody > - ? ? ? ? > - ? ? ? ? > - ? ? ? ? ? ?jcrread > - ? ? ? ? > - ? ? > + ? > + ? ? > + ? ? ?hippo:authrole > + ? ? > + ? ? > + ? ? ?everybody > + ? ? > + ? ? > + ? ? ?readonly > + ? ? > + ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultwrite.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultwrite.xml ? ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultwrite.xml ? ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -186,7 +186,7 @@ > ? ? ? ? ? ? editor > ? ? ? ? > ? ? ? ? > - ? ? ? ? ? ?jcrwrite > + ? ? ? ? ? ?readwrite > ? ? ? ? > ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-frontendconfig.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-frontendconfig.xml ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-frontendconfig.xml ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -218,7 +218,7 @@ > ? ? ? ? ? ? everybody > ? ? ? ? > ? ? ? ? > - ? ? ? ? ? ?jcrread > + ? ? ? ? ? ?readonly > ? ? ? ? > ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-hippodocuments.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-hippodocuments.xml ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-hippodocuments.xml ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -54,6 +54,7 @@ > ? ? ? ? ? ? hippo:authrole > ? ? ? ? > ? ? ? ? > + ? ? ? ? ? ?admin > ? ? ? ? ? ? editor > ? ? ? ? > ? ? ? ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-hippofolders.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-hippofolders.xml ? ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-hippofolders.xml ? ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -83,7 +83,7 @@ > ? ? ? editor > ? ? > ? ? > - ? ? ?jcrwrite > + ? ? ?readwrite > ? ? > ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-hippogallery.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-hippogallery.xml ? ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-hippogallery.xml ? ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -80,7 +80,7 @@ > ? ? ? ? ? ? editor > ? ? ? ? > ? ? ? ? > - ? ? ? ? ? ?jcrwrite > + ? ? ? ? ? ?readwrite > ? ? ? ? > ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-hippolog.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-hippolog.xml 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-hippolog.xml 2009-03-23 12:58:48 UTC (rev 17075) > @@ -81,7 +81,7 @@ > ? ? ? ? ? ? everybody > ? ? ? ? > ? ? ? ? > - ? ? ? ? ? ?jcrread > + ? ? ? ? ? ?readonly > ? ? ? ? > ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-htmlcleaner.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-htmlcleaner.xml ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-htmlcleaner.xml ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -147,7 +147,7 @@ > ? ? ? ? ? ? everybody > ? ? ? ? > ? ? ? ? > - ? ? ? ? ? ?jcrread > + ? ? ? ? ? ?readonly > ? ? ? ? > ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-templates.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-templates.xml ? ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-templates.xml ? ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -169,7 +169,7 @@ > ? ? ? ? ? ? everybody > ? ? ? ? > ? ? ? ? > - ? ? ? ? ? ?jcrread > + ? ? ? ? ? ?readonly > ? ? ? ? > ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-versioning.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-versioning.xml ? ? ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-versioning.xml ? ? ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -146,7 +146,7 @@ > ? ? ? ? ? ? everybody > ? ? ? ? > ? ? ? ? > - ? ? ? ? ? ?jcrread > + ? ? ? ? ? ?readonly > ? ? ? ? > ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-workflow.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/domain-workflow.xml 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-workflow.xml 2009-03-23 12:58:48 UTC (rev 17075) > @@ -234,7 +234,7 @@ > ? ? ? ? ? ? everybody > ? ? ? ? > ? ? ? ? > - ? ? ? ? ? ?jcrread > + ? ? ? ? ? ?readonly > ? ? ? ? > ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/group-author.xml ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -28,12 +28,6 @@ > ? ? ? ? hippo:group > ? ? > ? ? > - ? ? ? ?admin > - ? ? ? ?workflowuser > - ? ? ? ?editor > ? ? ? ? author > ? ? > - ? ? > - ? ? ? ? > - ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/group-editor.xml ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -28,11 +28,6 @@ > ? ? ? ? hippo:group > ? ? > ? ? > - ? ? ? ?admin > - ? ? ? ?workflowuser > ? ? ? ? editor > ? ? > - ? ? > - ? ? ? ? > - ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/role-author.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/role-author.xml ? ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/role-author.xml ? ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -24,16 +24,11 @@ > ? ? xmlns:hippo="http://www.hippoecm.org/nt/1.2" > ? ? xmlns:fn="http://www.w3.org/2005/xpath-functions" > ? ? sv:name="author"> > - ? ? > - ? ? ? ?hippo:role > - ? ? > - ? ? > - ? ? ? ?true > - ? ? > - ? ? > - ? ? ? ?false > - ? ? > - ? ? > - ? ? ? ?false > - ? ? > + ? > + ? ?hippo:role > + ? > + ? > + ? ?jcr:read > + ? ?hippo:author > + ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/role-editor.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/role-editor.xml ? ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/role-editor.xml ? ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -27,13 +27,12 @@ > ? ? > ? ? ? ? hippo:role > ? ? > - ? ? > - ? ? ? ?true > + ? ? > + ? ? ? ?jcr:read > + ? ? ? ?jcr:write > + ? ? ? ?hippo:editor > ? ? > - ? ? > - ? ? ? ?true > + ? ? > + ? ? ? ?author > ? ? > - ? ? > - ? ? ? ?true > - ? ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/role-jcrread.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/role-jcrread.xml ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/role-jcrread.xml ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -23,17 +23,11 @@ > ? ? xmlns:mix="http://www.jcp.org/jcr/mix/1.0" > ? ? xmlns:hippo="http://www.hippoecm.org/nt/1.2" > ? ? xmlns:fn="http://www.w3.org/2005/xpath-functions" > - ? ?sv:name="jcrread"> > - ? ? > - ? ? ? ?hippo:role > - ? ? > - ? ? > - ? ? ? ?true > - ? ? > - ? ? > - ? ? ? ?false > - ? ? > - ? ? > - ? ? ? ?false > - ? ? > + ? ?sv:name="readonly"> > + ? > + ? ?hippo:role > + ? > + ? > + ? ?jcr:read > + ? > ? > > Modified: hippo-ecm/trunk/package/auth/src/main/resources/role-jcrwrite.xml > =================================================================== > --- hippo-ecm/trunk/package/auth/src/main/resources/role-jcrwrite.xml ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/package/auth/src/main/resources/role-jcrwrite.xml ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -23,17 +23,12 @@ > ? ? xmlns:mix="http://www.jcp.org/jcr/mix/1.0" > ? ? xmlns:hippo="http://www.hippoecm.org/nt/1.2" > ? ? xmlns:fn="http://www.w3.org/2005/xpath-functions" > - ? ?sv:name="jcrwrite"> > - ? ? > - ? ? ? ?hippo:role > - ? ? > - ? ? > - ? ? ? ?true > - ? ? > - ? ? > - ? ? ? ?true > - ? ? > - ? ? > - ? ? ? ?true > - ? ? > + ? ?sv:name="readwrite"> > + ? > + ? ?hippo:role > + ? > + ? > + ? ?jcr:read > + ? ?jcr:write > + ? > ? > > Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/Modules.java > =================================================================== > --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/Modules.java ? ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/Modules.java ? ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -73,8 +73,12 @@ > ? ? ? ? ? ? ? ? try { > ? ? ? ? ? ? ? ? ? ? Manifest manifest = new Manifest(url.openStream()); > ? ? ? ? ? ? ? ? ? ? String modulesString = manifest.getMainAttributes().getValue("Hippo-Modules"); > - ? ? ? ? ? ? ? ? ? ?log.info("Modules as specified by manifest {} are {}", url.toString(), (modulesString != null ? modulesString : "none")); > ? ? ? ? ? ? ? ? ? ? if (modulesString != null) { > + ? ? ? ? ? ? ? ? ? ? ? ?log.info("Hippo-Modules specified by manifest {} : {}", url.toString(), modulesString); > + ? ? ? ? ? ? ? ? ? ?} else { > + ? ? ? ? ? ? ? ? ? ? ? ?log.debug("Hippo-Modules specified by manifest ?{} : none", url.toString()); > + ? ? ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ? ? ?if (modulesString != null) { > ? ? ? ? ? ? ? ? ? ? ? ? for (StringTokenizer tok = new StringTokenizer(modulesString); tok.hasMoreTokens();) { > ? ? ? ? ? ? ? ? ? ? ? ? ? ? String moduleClassName = tok.nextToken().trim(); > ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (!moduleClassName.equals("")) { > @@ -113,10 +117,10 @@ > > ? ? static void setModules(Modules modules) { > ? ? ? ? allModules = modules; > - ? ? ? ?if (log.isDebugEnabled()) { > - ? ? ? ? ? ?log.debug("Default list of modules set to:"); > + ? ? ? ?if (log.isInfoEnabled()) { > + ? ? ? ? ? ?log.info("Default list of modules set to:"); > ? ? ? ? ? ? for (Object module : allModules) { > - ? ? ? ? ? ? ? ?log.debug(" ?" + module.getClass().getName()); > + ? ? ? ? ? ? ? ?log.info(" ?" + module.getClass().getName()); > ? ? ? ? ? ? } > ? ? ? ? } > ? ? } > > Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java > =================================================================== > --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java ? ? ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java ? ? ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -148,8 +148,8 @@ > ? ? ? ? ? ? ? ? ? ? } > ? ? ? ? ? ? ? ? ? ? if (item.isNodeType(workflowNode.getProperty(HippoNodeType.HIPPO_NODETYPE).getString())) { > ? ? ? ? ? ? ? ? ? ? ? ? boolean hasPermission = true; > - ? ? ? ? ? ? ? ? ? ? ? ?if(workflowNode.hasProperty(HippoNodeType.HIPPO_ROLES)) { > - ? ? ? ? ? ? ? ? ? ? ? ? ? ?Value[] privileges = workflowNode.getProperty(HippoNodeType.HIPPO_ROLES).getValues(); > + ? ? ? ? ? ? ? ? ? ? ? ?if(workflowNode.hasProperty(HippoNodeType.HIPPO_PRIVILEGES)) { > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?Value[] privileges = workflowNode.getProperty(HippoNodeType.HIPPO_PRIVILEGES).getValues(); > ? ? ? ? ? ? ? ? ? ? ? ? ? ? for(int i=0; i ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try { > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? item.getSession().checkPermission(item.getPath(), privileges[i].getString()); > @@ -218,8 +218,8 @@ > ? ? ? ? ? ? ? ? ? ? ? ? Node documentNode = (document.getIdentity()!=null ? session.getNodeByUUID(document.getIdentity()) : null); > ? ? ? ? ? ? ? ? ? ? ? ? if ((documentNode != null && documentNode.isNodeType(workflowNode.getProperty(HippoNodeType.HIPPO_NODETYPE).getString())) || documentClass.isAssignableFrom(document.getClass())) { > ? ? ? ? ? ? ? ? ? ? ? ? ? ? boolean hasPermission = true; > - ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(workflowNode.hasProperty(HippoNodeType.HIPPO_ROLES)) { > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Value[] privileges = workflowNode.getProperty(HippoNodeType.HIPPO_ROLES).getValues(); > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(workflowNode.hasProperty(HippoNodeType.HIPPO_PRIVILEGES)) { > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Value[] privileges = workflowNode.getProperty(HippoNodeType.HIPPO_PRIVILEGES).getValues(); > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for(int i=0; i ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? try { > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? session.checkPermission(documentNode.getPath(), privileges[i].getString()); > > Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/SessionImplHelper.java > =================================================================== > --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/SessionImplHelper.java ? 2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/SessionImplHelper.java ? 2009-03-23 12:58:48 UTC (rev 17075) > @@ -35,6 +35,8 @@ > ?import javax.jcr.version.VersionException; > ?import javax.security.auth.Subject; > > +import org.apache.jackrabbit.api.jsr283.security.AccessControlManager; > +import org.apache.jackrabbit.api.jsr283.security.Privilege; > ?import org.apache.jackrabbit.core.HierarchyManager; > ?import org.apache.jackrabbit.core.NodeId; > ?import org.apache.jackrabbit.core.NodeImpl; > @@ -140,25 +142,24 @@ > ? ? ?* @throws RepositoryException > ? ? ?*/ > ? ? public void checkPermission(String absPath, String actions) throws AccessControlException, RepositoryException { > - ? ? ? ?AccessManager accessMgr = sessionImpl.getAccessManager(); > - ? ? ? ?if(accessMgr instanceof HippoAccessManager) { > + ? ? ? ?AccessControlManager acMgr = sessionImpl.getAccessControlManager(); > > - ? ? ? ? ? ?// build the set of actions to be checked > - ? ? ? ? ? ?String[] strings = actions.split(","); > - ? ? ? ? ? ?HashSet privileges = new HashSet(); > - ? ? ? ? ? ?for (int i = 0; i < strings.length; i++) { > - ? ? ? ? ? ? ? ?// skip the default jcr permissions as the have already been checked. > - ? ? ? ? ? ? ? ?if(!SessionImpl.READ_ACTION.equals(strings[i]) && > - ? ? ? ? ? ? ? ? ? ? ? ?!SessionImpl.REMOVE_ACTION.equals(strings[i]) && > - ? ? ? ? ? ? ? ? ? ? ? ?!SessionImpl.ADD_NODE_ACTION.equals(strings[i]) && > - ? ? ? ? ? ? ? ? ? ? ? ?!SessionImpl.SET_PROPERTY_ACTION.equals(strings[i])) { > + ? ? ? ?// build the set of actions to be checked > + ? ? ? ?String[] strings = actions.split(","); > + ? ? ? ?HashSet privileges = new HashSet(); > + ? ? ? ?for (int i = 0; i < strings.length; i++) { > + ? ? ? ? ? ?// skip the default jcr permissions as the have already been checked. > + ? ? ? ? ? ?if(!SessionImpl.READ_ACTION.equals(strings[i]) && > + ? ? ? ? ? ? ? ? ? ?!SessionImpl.REMOVE_ACTION.equals(strings[i]) && > + ? ? ? ? ? ? ? ? ? ?!SessionImpl.ADD_NODE_ACTION.equals(strings[i]) && > + ? ? ? ? ? ? ? ? ? ?!SessionImpl.SET_PROPERTY_ACTION.equals(strings[i])) { > > - ? ? ? ? ? ? ? ? ? ?privileges.add(strings[i]); > - ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ?privileges.add(acMgr.privilegeFromName(strings[i])); > ? ? ? ? ? ? } > - ? ? ? ? ? ?if (privileges.size() > 0) { > - ? ? ? ? ? ? ? ?if (!((HippoAccessManager) accessMgr).hasPrivileges(absPath, privileges.toArray(new String[privileges.size()]))) > - ? ? ? ? ? ? ? ? ? ?throw new AccessControlException("Privileges '" + actions + "' denied for " + absPath); > + ? ? ? ?} > + ? ? ? ?if (privileges.size() > 0) { > + ? ? ? ? ? ?if (!acMgr.hasPrivileges(absPath, privileges.toArray(new Privilege[privileges.size()]))) { > + ? ? ? ? ? ? ? ?throw new AccessControlException("Privileges '" + actions + "' denied for " + absPath); > ? ? ? ? ? ? } > ? ? ? ? } > ? ? } > > Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/AuthorizationQuery.java > =================================================================== > --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/AuthorizationQuery.java ? ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/AuthorizationQuery.java ? ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -95,8 +95,10 @@ > ? ? ? ? BooleanQuery authQuery = new BooleanQuery(true); > ? ? ? ? Iterator facetAuthsIt = facetAuths.iterator(); > ? ? ? ? while (facetAuthsIt.hasNext()) { > - ? ? ? ? ? ?// TODO test for facetAuthPrincipal wether 'read' is bit is set to 1 in ROLE > ? ? ? ? ? ? FacetAuthPrincipal facetAuthPrincipal = facetAuthsIt.next(); > + ? ? ? ? ? ?if (!facetAuthPrincipal.getPrivileges().contains("jcr:read")) { > + ? ? ? ? ? ? ? ?continue; > + ? ? ? ? ? ?} > ? ? ? ? ? ? Iterator domainRulesIt = facetAuthPrincipal.getRules().iterator(); > ? ? ? ? ? ? while (domainRulesIt.hasNext()) { > ? ? ? ? ? ? ? ? DomainRule domainRule = domainRulesIt.next(); > > Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/AbstractSecurityProvider.java > =================================================================== > --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/AbstractSecurityProvider.java ? ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/AbstractSecurityProvider.java ? ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -25,7 +25,7 @@ > ?public abstract class AbstractSecurityProvider implements SecurityProvider { > > ? ? @SuppressWarnings("unused") > - ? ?final static String SVN_ID = "$Id$"; > + ? ?private final static String SVN_ID = "$Id$"; > > ? ? protected UserManager userManager = new DummyUserManager(); > ? ? protected GroupManager groupManager = new DummyGroupManager(); > > Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java > =================================================================== > --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java ? ?2009-03-23 09:36:51 UTC (rev 17074) > +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java ? ?2009-03-23 12:58:48 UTC (rev 17075) > @@ -16,10 +16,12 @@ > ?package org.hippoecm.repository.security; > > ?import java.util.ArrayList; > -import java.util.HashMap; > +import java.util.HashSet; > ?import java.util.List; > ?import java.util.Map; > +import java.util.Set; > ?import java.util.WeakHashMap; > +import java.util.concurrent.ConcurrentHashMap; > > ?import javax.jcr.AccessDeniedException; > ?import javax.jcr.ItemNotFoundException; > @@ -34,10 +36,16 @@ > ?import javax.jcr.nodetype.NodeTypeManager; > ?import javax.security.auth.Subject; > > +import org.apache.jackrabbit.api.jsr283.security.AccessControlException; > +import org.apache.jackrabbit.api.jsr283.security.AccessControlManager; > +import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicy; > +import org.apache.jackrabbit.api.jsr283.security.AccessControlPolicyIterator; > +import org.apache.jackrabbit.api.jsr283.security.Privilege; > ?import org.apache.jackrabbit.core.ItemId; > ?import org.apache.jackrabbit.core.NodeId; > ?import org.apache.jackrabbit.core.PropertyId; > ?import org.apache.jackrabbit.core.security.AMContext; > +import org.apache.jackrabbit.core.security.AccessControlPolicyIteratorAdapter; > ?import org.apache.jackrabbit.core.security.AccessManager; > ?import org.apache.jackrabbit.core.security.AnonymousPrincipal; > ?import org.apache.jackrabbit.core.security.SystemPrincipal; > @@ -53,10 +61,7 @@ > ?import org.apache.jackrabbit.core.value.InternalValue; > ?import org.apache.jackrabbit.spi.Name; > ?import org.apache.jackrabbit.spi.Path; > -import org.apache.jackrabbit.spi.commons.conversion.CachingNameResolver; > -import org.apache.jackrabbit.spi.commons.conversion.NameException; > ?import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver; > -import org.apache.jackrabbit.spi.commons.conversion.NameResolver; > ?import org.apache.jackrabbit.spi.commons.conversion.ParsingPathResolver; > ?import org.apache.jackrabbit.spi.commons.conversion.PathResolver; > ?import org.apache.jackrabbit.spi.commons.name.NameConstants; > @@ -87,7 +92,7 @@ > ?* are granted. > ?* > ?*/ > -public class HippoAccessManager implements AccessManager { > +public class HippoAccessManager implements AccessManager, AccessControlManager { > > ? ? /** SVN id placeholder */ > ? ? @SuppressWarnings("unused") > @@ -117,13 +122,9 @@ > ? ? ?* NamePathResolver > ? ? ?*/ > ? ? private NamePathResolver npRes; > - > + > + > ? ? /** > - ? ? * NameResolver > - ? ? */ > - ? ?private NameResolver nRes; > - > - ? ?/** > ? ? ?* Name of hippo:handle, needed for document model checking > ? ? ?*/ > ? ? private Name hippoHandle; > @@ -144,11 +145,6 @@ > ? ? private NodeId rootNodeId; > > ? ? /** > - ? ? * State of the accessManager > - ? ? */ > - ? ?private boolean initialized; > - > - ? ?/** > ? ? ?* The HippoAccessCache instance > ? ? ?*/ > ? ? private HippoAccessCache readAccessCache; > @@ -161,19 +157,24 @@ > ? ? private final NodeTypeInstanceOfCache ntIOCache = NodeTypeInstanceOfCache.getInstance(); > > ? ? /** > + ? ? * State of the accessManager > + ? ? */ > + ? ?private boolean initialized = false; > + > + ? ?/** > ? ? ?* Flag whether current user is anonymous > ? ? ?*/ > - ? ?private boolean isAnonymous; > + ? ?private boolean isAnonymous = false; > > ? ? /** > ? ? ?* Flag whether current user is a regular user > ? ? ?*/ > - ? ?private boolean isUser; > + ? ?private boolean isUser = false; > > ? ? /** > ? ? ?* Flag whether the current user is a system user > ? ? ?*/ > - ? ?private boolean isSystem; > + ? ?private boolean isSystem = false; > > ? ? /** > ? ? ?* The userId of the logged in user > @@ -183,53 +184,39 @@ > ? ? private final List groupIds = new ArrayList(); > ? ? private final List currentDomainRoleIds = new ArrayList(); > > - ? ?/** > - ? ? * A ItemId->ItemState cache that is only valid during a single isGranted. > - ? ? * Some property states are resolved many times and this can be expensive > - ? ? * especially for states from the attic. > - ? ? */ > - ? ?private final HashMap requestItemStateCache = new HashMap(); > > ? ? /** > ? ? ?* The logger > ? ? ?*/ > ? ? private static final Logger log = LoggerFactory.getLogger(HippoAccessManager.class); > > + ? ?private static ConcurrentHashMap currentPrivileges = new ConcurrentHashMap(); > + > + ? ?//---------------------------------------- API ---------------------------------------------// > ? ? /** > - ? ? * Empty constructor > + ? ? * @see AccessManager#init(AMContext, AccessControlProvider, WorkspaceAccessManager) > ? ? ?*/ > - ? ?public HippoAccessManager() { > - ? ? ? ?initialized = false; > - ? ? ? ?isAnonymous = false; > - ? ? ? ?isUser = false; > - ? ? ? ?isSystem = false; > - ? ?} > - > - ? ?/** > - ? ? * {@inheritDoc} > - ? ? */ > ? ? public void init(AMContext context, AccessControlProvider acProvider, WorkspaceAccessManager wspAccessMgr) > ? ? ? ? ? ? throws AccessDeniedException, Exception { > ? ? ? ? init(context); > ? ? } > > ? ? /** > - ? ? * {@inheritDoc} > + ? ? * @see AccessManager#init(AMContext) > ? ? ?*/ > ? ? public void init(AMContext context) throws AccessDeniedException, Exception { > ? ? ? ? if (initialized) { > ? ? ? ? ? ? throw new IllegalStateException("already initialized"); > ? ? ? ? } > ? ? ? ? subject = context.getSubject(); > - ? ? ? ?hierMgr = (HippoHierarchyManager) context.getHierarchyManager(); > + ? ? ? ?npRes = context.getNamePathResolver(); > ? ? ? ? if (context instanceof HippoAMContext) { > ? ? ? ? ? ? ntMgr = ((HippoAMContext) context).getNodeTypeManager(); > ? ? ? ? ? ? itemMgr = (HippoSessionItemStateManager) ((HippoAMContext) context).getSessionItemStateManager(); > - ? ? ? ? ? ?// This will be part of the new AMContext in JR 1.5 > - ? ? ? ? ? ?npRes = ((HippoAMContext) context).getNamePathResolver(); > ? ? ? ? } > - ? ? ? ?nRes = new CachingNameResolver(context.getNamePathResolver()); > - > + > + ? ? ? ?hierMgr = (HippoHierarchyManager) itemMgr.getAtticAwareHierarchyMgr(); > + > ? ? ? ? // Shortcuts for checks > ? ? ? ? isSystem = !subject.getPrincipals(SystemPrincipal.class).isEmpty(); > ? ? ? ? isUser = !subject.getPrincipals(UserPrincipal.class).isEmpty(); > @@ -254,35 +241,34 @@ > ? ? ? ? // cache root NodeId > ? ? ? ? rootNodeId = hierMgr.resolveNodePath(PathFactoryImpl.getInstance().getRootPath()); > > - ? ? ? ?hippoHandle = nRes.getQName(HippoNodeType.NT_HANDLE); > - ? ? ? ?hippoFacetSearch = nRes.getQName(HippoNodeType.NT_FACETSEARCH); > - ? ? ? ?hippoFacetSelect = nRes.getQName(HippoNodeType.NT_FACETSELECT); > - > + ? ? ? ?hippoHandle = npRes.getQName(HippoNodeType.NT_HANDLE); > + ? ? ? ?hippoFacetSearch = npRes.getQName(HippoNodeType.NT_FACETSEARCH); > + ? ? ? ?hippoFacetSelect = npRes.getQName(HippoNodeType.NT_FACETSELECT); > + > ? ? ? ? // initialize read cache > ? ? ? ? int cacheSize = getPermCacheSize(); > ? ? ? ? if (cacheSize < 0) { > ? ? ? ? ? ? cacheSize = DEFAULT_PERM_CACHE_SIZE; > ? ? ? ? } > - ? ? ? ?log.debug("Setting cache size: {}", cacheSize); > ? ? ? ? HippoAccessCache.setMaxSize(cacheSize); > ? ? ? ? readAccessCache = HippoAccessCache.getInstance(userId); > > ? ? ? ? // we're done > ? ? ? ? initialized = true; > + > + ? ? ? ?log.info("Initialized HippoAccessManager for user " + userId + " with cache size " + cacheSize); > ? ? } > > ? ? /** > - ? ? * {@inheritDoc} > + ? ? * @see AccessManager#close() > ? ? ?*/ > ? ? public synchronized void close() throws Exception { > - ? ? ? ?if (!initialized) { > - ? ? ? ? ? ?throw new IllegalStateException("not initialized"); > - ? ? ? ?} > + ? ? ? ?checkInitialized(); > ? ? ? ? initialized = false; > > ? ? ? ? // clear out all caches > ? ? ? ? readAccessCache.clear(); > - ? ? ? ?requestItemStateCache.clear(); > + ? ? ? ?//requestItemStateCache.clear(); > ? ? ? ? groupIds.clear(); > ? ? ? ? currentDomainRoleIds.clear(); > > @@ -292,112 +278,246 @@ > ? ? ? ? itemMgr = null; > ? ? ? ? ntMgr = null; > ? ? ? ? npRes = null; > - ? ? ? ?nRes = null; > + ? ? ? ?log.info("Closed HippoAccessManager for user " + userId); > ? ? } > > ? ? /** > - ? ? * Try to read the cache size from the configuration > - ? ? * @return the size or -1 when not found > + ? ? * @see AccessManager#checkPermission(ItemId, int) > + ? ? * @deprecated > ? ? ?*/ > - ? ?private int getPermCacheSize() { > - ? ? ? ?try { > - ? ? ? ? ? ?PathResolver resolver = new ParsingPathResolver(PathFactoryImpl.getInstance(), nRes); > - ? ? ? ? ? ?Path path = resolver.getQPath("/" + HippoNodeType.CONFIGURATION_PATH + "/" + HippoNodeType.SECURITY_PATH > - ? ? ? ? ? ? ? ? ? ?+ "/" + HippoNodeType.ACCESSMANAGER_PATH + "" + HippoNodeType.HIPPO_PERMISSIONCACHESIZE); > - ? ? ? ? ? ?PropertyId confId = hierMgr.resolvePropertyPath(path); > - ? ? ? ? ? ?if (confId != null) { > - ? ? ? ? ? ? ? ?PropertyState state = (PropertyState) getItemState(confId); > - ? ? ? ? ? ? ? ?InternalValue[] iVals = state.getValues(); > - ? ? ? ? ? ? ? ?if (iVals.length > 0 && ((int) iVals[0].getLong()) > 0) { > - ? ? ? ? ? ? ? ? ? ?return (int) iVals[0].getLong(); > - ? ? ? ? ? ? ? ?} > + ? ?public void checkPermission(ItemId id, int permissions) throws AccessDeniedException, ItemNotFoundException, > + ? ? ? ? ? ?RepositoryException { > + ? ? ? ?log.warn("checkPermission(ItemId, int) is DEPRECATED!", new RepositoryException("Use of deprecated method checkPermission(ItemId, int)")); > + ? ? ? ?// just use the isGranted method > + ? ? ? ?if (!isGranted(id, permissions)) { > + ? ? ? ? ? ?throw new AccessDeniedException(); > + ? ? ? ?} > + ? ?} > + > + ? ?/** > + ? ? * @see AccessManager#isGranted(ItemId, int) > + ? ? * @deprecated > + ? ? */ > + ? ?public boolean isGranted(ItemId id, int permissions) throws RepositoryException { > + ? ? ? ?checkInitialized(); > + ? ? ? ?if (permissions != READ) { > + ? ? ? ? ? ?log.warn("isGranted(ItemId, int) is DEPRECATED!", new RepositoryException("Use of deprecated method isGranted(ItemId, int)")); > + ? ? ? ?} > + > + ? ? ? ?if (isSystem) { > + ? ? ? ? ? ?return true; > + ? ? ? ?} > + > + ? ? ? ?// handle properties > + ? ? ? ?if (!id.denotesNode()) { > + ? ? ? ? ? ?if ((permissions & (Permission.REMOVE_NODE | Permission.REMOVE_PROPERTY)) != 0) { > + ? ? ? ? ? ? ? ?// Don't check remove on properties. A write check on the node itself is done. > + ? ? ? ? ? ? ? ?Thread.dumpStack(); > + ? ? ? ? ? ? ? ?return true; > ? ? ? ? ? ? } > - ? ? ? ?} catch (NoSuchItemStateException e) { > - ? ? ? ? ? ?// not configured, expected > - ? ? ? ?} catch (RepositoryException e) { > - ? ? ? ? ? ?// too bad.. no correct config found > + ? ? ? ? ? ?return isGranted(((PropertyId) id).getParentId(), permissions); > ? ? ? ? } > - ? ? ? ?return -1; > + > + ? ? ? ?// fast track common read check > + ? ? ? ?if (permissions == Permission.READ) { > + ? ? ? ? ? ?// check cache > + ? ? ? ? ? ?Boolean allowRead = readAccessCache.get(id); > + ? ? ? ? ? ?if (allowRead != null) { > + ? ? ? ? ? ? ? ?return allowRead.booleanValue(); > + ? ? ? ? ? ?} > + ? ? ? ? ? ?return canRead(hierMgr.getPath(id)); > + ? ? ? ?} > + > + ? ? ? ?// not a read, remove node from cache > + ? ? ? ?readAccessCache.remove(id); > + > + ? ? ? ?return isGranted(hierMgr.getPath(id), permissions); > ? ? } > > ? ? /** > - ? ? * Check whether a user can access the NodeState with the requested permissions > - ? ? * @param nodeState the state of the node to check > - ? ? * @param permissions the (bitset) of the permissions > - ? ? * @return true if the user is allowed the requested permissions on the node > - ? ? * @throws RepositoryException > - ? ? * @throws NoSuchItemStateException > + ? ? * @see AccessManager#isGranted(Path, int) > ? ? ?*/ > - ? ?protected boolean canAccessNode(NodeState nodeState, int permissions) throws RepositoryException, NoSuchItemStateException { > - ? ? ? ?// system and admin have all permissions > + ? ?public boolean isGranted(Path absPath, int permissions) throws RepositoryException { > + ? ? ? ?checkInitialized(); > + ? ? ? ?if (!absPath.isAbsolute()) { > + ? ? ? ? ? ?throw new RepositoryException("Absolute path expected"); > + ? ? ? ?} > ? ? ? ? if (isSystem) { > ? ? ? ? ? ? return true; > ? ? ? ? } > - ? ? ? ?// no facetAuths -> not allowed... > - ? ? ? ?if (subject.getPrincipals(FacetAuthPrincipal.class).isEmpty()) { > - ? ? ? ? ? ?return false; > + ? ? ? ?if (log.isInfoEnabled()) { > + ? ? ? ? ? ?log.info("Checking [{}] for absPath: {}", permsString(permissions), npRes.getJCRPath(absPath)); > ? ? ? ? } > - ? ? ? ?// check for facet authorization > - ? ? ? ?if (checkFacetAuth(nodeState, permissions)) { > + > + ? ? ? ?// fasttrack read permissions check > + ? ? ? ?if (permissions == Permission.READ) { > + ? ? ? ? ? ?return canRead(absPath); > + ? ? ? ?} > + > + ? ? ? ?// part of combined permissions check > + ? ? ? ?if ((permissions & Permission.READ) != 0) { > + ? ? ? ? ? ?if (!canRead(absPath)) { > + ? ? ? ? ? ? ? ?// all permissions must be matched > + ? ? ? ? ? ? ? ?return false; > + ? ? ? ? ? ?} > + ? ? ? ?} > + > + ? ? ? ?// translate permissions to privileges according to 6.11.1.4 of JSR-283 > + ? ? ? ?String parentJcrPath = npRes.getJCRPath(absPath.getAncestor(1)); > + ? ? ? ?Set privileges = new HashSet(); > + ? ? ? ?if ((permissions & Permission.ADD_NODE) != 0) { > + ? ? ? ? ? ?// TODO: Remove when JCR-2036 is fixed, for now just do an extra check > + ? ? ? ? ? ?try { > + ? ? ? ? ? ? ? ?if (!hasPrivileges(npRes.getJCRPath(absPath), new Privilege[] {privilegeFromName("jcr:setProperties")})) { > + ? ? ? ? ? ? ? ? ? ?return false; > + ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ?} catch (PathNotFoundException e) { > + ? ? ? ? ? ? ? ?// this can happen during BatchedItemOpertations like workspace.copy() and workspace.move() > + ? ? ? ? ? ? ? ?log.warn("Unable to find the node to be added, skipping setProperties check: {}", ?npRes.getJCRPath(absPath)); > + ? ? ? ? ? ? ? ?log.debug("SetProperties check skipped on node: {}", npRes.getJCRPath(absPath), e); > + ? ? ? ? ? ?} > + ? ? ? ? ? ?privileges.add(privilegeFromName("jcr:addChildNodes")); > + ? ? ? ?} > + ? ? ? ?if ((permissions & Permission.REMOVE_NODE) != 0) { > + ? ? ? ? ? ?privileges.add(privilegeFromName("jcr:removeChildNodes")); > + ? ? ? ?} > + ? ? ? ?if ((permissions & Permission.SET_PROPERTY) != 0) { > + ? ? ? ? ? ?privileges.add(privilegeFromName("jcr:setProperties")); > + ? ? ? ?} > + ? ? ? ?if ((permissions & Permission.REMOVE_PROPERTY) != 0) { > + ? ? ? ? ? ?privileges.add(privilegeFromName("jcr:setProperties")); > + ? ? ? ?} > + ? ? ? ?return hasPrivileges(parentJcrPath, privileges.toArray(new Privilege[privileges.size()])); > + ? ?} > + > + > + ? ?/** > + ? ? * Just forwards the call to isGranted(Path,int) > + ? ? * @see HippoAccessManager#isGranted(Path,int) > + ? ? * @see AccessManager#isGranted(Path, Name, int) > + ? ? */ > + ? ?public boolean isGranted(Path parentPath, Name childName, int permissions) throws RepositoryException { > + ? ? ? ?Path p = PathFactoryImpl.getInstance().create(parentPath, childName, true); > + ? ? ? ?return isGranted(p, permissions); > + ? ?} > + > + > + ? ?/** > + ? ? * @see AccessManager#canRead(Path) > + ? ? */ > + ? ?public boolean canRead(Path absPath) throws PathNotFoundException, RepositoryException { > + ? ? ? ?checkInitialized(); > + > + ? ? ? ?// allow everything to the systemuser > + ? ? ? ?if (isSystem) { > ? ? ? ? ? ? return true; > ? ? ? ? } > - ? ? ? ?// check if node is part of a document, if so check facet authorization > - ? ? ? ?nodeState = getParentDoc(nodeState); > - ? ? ? ?if (nodeState != null) { > - ? ? ? ? ? ?if (checkFacetAuth(nodeState, permissions)) { > + > + ? ? ? ?// find the id > + ? ? ? ?ItemId id = getItemId(absPath); > + > + ? ? ? ?// check read on the parent node with properties > + ? ? ? ?if (!id.denotesNode()) { > + ? ? ? ? ? ?return canRead(absPath.getAncestor(1)); > + ? ? ? ?} > + > + ? ? ? ?// check parent node which guarantees that all parent nodes of > + ? ? ? ?// the current node are readable > + ? ? ? ?if (!absPath.denotesRoot()) { > + ? ? ? ? ? ?if (!canRead(absPath.getAncestor(1))) { > + ? ? ? ? ? ? ? ?return false; > + ? ? ? ? ? ?} > + ? ? ? ?} > + > + ? ? ? ?try { > + ? ? ? ? ? ?if (canRead((NodeId) id)) { > ? ? ? ? ? ? ? ? return true; > ? ? ? ? ? ? } > + ? ? ? ?} catch (NoSuchItemStateException e) { > + ? ? ? ? ? ?// shouldn't happen, the id was already found > + ? ? ? ? ? ?log.error("No item id found", e); > + ? ? ? ? ? ?return false; > ? ? ? ? } > ? ? ? ? return false; > ? ? } > > ? ? /** > - ? ? * Check whether the node can be accessed with the requested permissions based on the > - ? ? * FacetAuths of the subject. The method first checks if the jcr permissions of the > - ? ? * FacetAuth match the requested principals. If so, a check is done to check if the > - ? ? * Node is in the Domain of the FacetAuth. > - ? ? * @param nodeState the state of the node to check > - ? ? * @param permissions the (bitset) of the permissions > - ? ? * @return true if the user is allowed the requested permissions on the node > + ? ? * Always allow. > + ? ? * @see AccessManager#canAccess(String) > + ? ? */ > + ? ?public boolean canAccess(String workspaceName) throws NoSuchWorkspaceException, RepositoryException { > + ? ? ? ?// no workspace restrictions yet > + ? ? ? ?return true; > + ? ?} > + > + > + ? ?//---------------------------------------- Methods ---------------------------------------------// > + ? ?/** > + ? ? * Check whether a user can read the node with the given id > + ? ? * @param id the id of the node to check > + ? ? * @return true if the user is allowed to read the node > + ? ? * @throws NoSuchItemStateException > ? ? ?* @throws RepositoryException > ? ? ?*/ > - ? ?protected boolean checkFacetAuth(NodeState nodeState, int permissions) throws NoSuchItemStateException, RepositoryException { > - ? ? ? ?if (log.isTraceEnabled()) { > - ? ? ? ? ? ?log.trace("Checking [" + pString(permissions) + "] for: " + nodeState.getId()); > + ? ?private boolean canRead(NodeId id) throws NoSuchItemStateException, RepositoryException { > + ? ? ? ?// check cache > + ? ? ? ?Boolean allowRead = readAccessCache.get(id); > + ? ? ? ?if (allowRead != null) { > + ? ? ? ? ? ?return allowRead.booleanValue(); > ? ? ? ? } > > - ? ? ? ?// loop over facetAuthPrincipals (one per domain) > - ? ? ? ?// -- first match return true > - ? ? ? ?// -- else return false > + ? ? ? ?if (log.isDebugEnabled()) { > + ? ? ? ? ? ?log.debug("Checking canRead for node: {}", npRes.getJCRPath(hierMgr.getPath(id))); > + ? ? ? ?} > + > + ? ? ? ?NodeState nodeState = (NodeState) getItemState(id); > + ? ? ? ?if (nodeState.getStatus() == NodeState.STATUS_NEW) { > + ? ? ? ? ? ?// allow read to new nodes in own session > + ? ? ? ? ? ?// the write check is done on save > + ? ? ? ? ? ?readAccessCache.put(id, true); > + ? ? ? ? ? ?return true; > + ? ? ? ?} > > - ? ? ? ?// For the principal check: > - ? ? ? ?// - DomainRule_1 OR DomainRule_2 OR ... > - ? ? ? ?// - For each DomainRule > - ? ? ? ?// - - FacetRule_1 AND FacetRule_2 AND ... > - ? ? ? ?// > - ? ? ? ?// ?(facet_x=value_a and facet_y=value_c) OR (facet_x=value_b) > - > - ? ? ? ?boolean allowed = false; > - ? ? ? ?for (FacetAuthPrincipal fap : subject.getPrincipals(FacetAuthPrincipal.class)) { > - > - ? ? ? ? ? ?if (log.isDebugEnabled()) { > - ? ? ? ? ? ? ? ?log.debug("Checking [" + pString(permissions) + "] : " + nodeState.getId() + " against FacetAuthPrincipal: " + fap); > - ? ? ? ? ? ?} > - > - ? ? ? ? ? ?// Does the user has the correct permissions for the Domain > - ? ? ? ? ? ?if ((fap.matchPermissions(permissions))) { > - ? ? ? ? ? ? ? ?// is the node part of one of the domain rules > + ? ? ? ?Set faps = subject.getPrincipals(FacetAuthPrincipal.class); > + ? ? ? ?for (FacetAuthPrincipal fap : faps) { > + ? ? ? ? ? ?Set privs = fap.getPrivileges(); > + ? ? ? ? ? ?if (privs.contains("jcr:read")) { > ? ? ? ? ? ? ? ? if (isNodeInDomain(nodeState, fap)) { > - ? ? ? ? ? ? ? ? ? ?allowed = true; > - ? ? ? ? ? ? ? ? ? ?log.info("Permissions [{}] for {} for: {} found for domain {}", new Object[] { pString(permissions), userId, nodeState.getId(), fap }); > - ? ? ? ? ? ? ? ? ? ?break; > + ? ? ? ? ? ? ? ? ? ?readAccessCache.put(id, true); > + ? ? ? ? ? ? ? ? ? ?return true; > ? ? ? ? ? ? ? ? } > ? ? ? ? ? ? } > - ? ? ? ? ? ?if (allowed) { > - ? ? ? ? ? ? ? ?break; > + ? ? ? ?} > + ? ? ? ?readAccessCache.put(id, false); > + ? ? ? ?if (log.isInfoEnabled()) { > + ? ? ? ? ? ?log.info("DENIED read : {}", npRes.getJCRPath(hierMgr.getPath(id))); > + ? ? ? ?} > + ? ? ? ?return false; > + ? ?} > + > + ? ?/** > + ? ? * Try to read the cache size from the configuration > + ? ? * @return the size or -1 when not found > + ? ? */ > + ? ?private int getPermCacheSize() { > + ? ? ? ?try { > + ? ? ? ? ? ?PathResolver resolver = new ParsingPathResolver(PathFactoryImpl.getInstance(), npRes); > + ? ? ? ? ? ?Path path = resolver.getQPath("/" + HippoNodeType.CONFIGURATION_PATH + "/" + HippoNodeType.SECURITY_PATH > + ? ? ? ? ? ? ? ? ? ?+ "/" + HippoNodeType.ACCESSMANAGER_PATH + "" + HippoNodeType.HIPPO_PERMISSIONCACHESIZE); > + ? ? ? ? ? ?PropertyId confId = hierMgr.resolvePropertyPath(path); > + ? ? ? ? ? ?if (confId != null) { > + ? ? ? ? ? ? ? ?PropertyState state = (PropertyState) getItemState(confId); > + ? ? ? ? ? ? ? ?InternalValue[] iVals = state.getValues(); > + ? ? ? ? ? ? ? ?if (iVals.length > 0 && ((int) iVals[0].getLong()) > 0) { > + ? ? ? ? ? ? ? ? ? ?return (int) iVals[0].getLong(); > + ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? } > + ? ? ? ?} catch (NoSuchItemStateException e) { > + ? ? ? ? ? ?// not configured, expected > + ? ? ? ?} catch (RepositoryException e) { > + ? ? ? ? ? ?// too bad.. no correct config found > ? ? ? ? } > - ? ? ? ?return allowed; > + ? ? ? ?return -1; > ? ? } > > ? ? /** > @@ -409,7 +529,8 @@ > ? ? ?* @throws RepositoryException > ? ? ?* @see FacetAuthPrincipal > ? ? ?*/ > - ? ?protected boolean isNodeInDomain(NodeState nodeState, FacetAuthPrincipal fap) throws NoSuchItemStateException, RepositoryException { > + ? ?private boolean isNodeInDomain(NodeState nodeState, FacetAuthPrincipal fap) throws NoSuchItemStateException, > + ? ? ? ? ? ?RepositoryException { > ? ? ? ? log.trace("Checking if node : {} is in domain of {}", nodeState.getId(), fap); > ? ? ? ? boolean isInDomain = false; > > @@ -437,15 +558,22 @@ > ? ? ? ? ? ? if (allRulesMatched) { > ? ? ? ? ? ? ? ? // a match is found, don't check other domain ruels; > ? ? ? ? ? ? ? ? isInDomain = true; > - ? ? ? ? ? ? ? ?log.debug("Node : {} found in {}", nodeState.getId(), domainRule); > + ? ? ? ? ? ? ? ?if (log.isDebugEnabled()) { > + ? ? ? ? ? ? ? ? ? ?log.debug("Node : " + nodeState.getId() + " found in domain " + fap.getName() + " match "+ domainRule); > + ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? ? ? break; > + ? ? ? ? ? ?} else { > + ? ? ? ? ? ? ? ?// check if node is part of a hippo:document > + ? ? ? ? ? ? ? ?NodeState docState; > + ? ? ? ? ? ? ? ?docState = getParentDoc(nodeState); > + ? ? ? ? ? ? ? ?if (docState != null) { > + ? ? ? ? ? ? ? ? ? ?return isNodeInDomain(docState, fap); > + ? ? ? ? ? ? ? ?} > ? ? ? ? ? ? } > ? ? ? ? } > ? ? ? ? return isInDomain; > ? ? } > > - > - > ? ? /** > ? ? ?* Check if a node matches the current FacetRule > ? ? ?* @param nodeState the state of the node to check > @@ -455,7 +583,8 @@ > ? ? ?* @throws NoSuchItemStateException > ? ? ?* @see FacetRule > ? ? ?*/ > - ? ?protected boolean matchFacetRule(NodeState nodeState, FacetRule facetRule) throws NoSuchItemStateException, RepositoryException { > + ? ?private boolean matchFacetRule(NodeState nodeState, FacetRule facetRule) throws NoSuchItemStateException, > + ? ? ? ? ? ?RepositoryException { > ? ? ? ? log.trace("Checking node : {} for facet rule: {}", nodeState.getId(), facetRule); > > ? ? ? ? // is this a 'NodeType' facet rule? > @@ -475,7 +604,7 @@ > ? ? ? ? ? ? ? ? return !match; > ? ? ? ? ? ? } > ? ? ? ? } > - > + > ? ? ? ? // is this a 'NodeName' facet rule? > ? ? ? ? if (facetRule.getFacet().equalsIgnoreCase("nodename")) { > ? ? ? ? ? ? boolean match = false; > @@ -514,310 +643,6 @@ > ? ? } > > ? ? /** > - ? ? * Check if a user has the requested permissions on the item. > - ? ? * @param id the item id to check > - ? ? * @param permissions the requested permissions > - ? ? * @throws AccessDeniedException if the user doesn't have the requested permissions on the item > - ? ? */ > - ? ?public void checkPermission(ItemId id, int permissions) throws AccessDeniedException, ItemNotFoundException, RepositoryException { > - ? ? ? ?// just use the isGranted method > - ? ? ? ?if (!isGranted(id, permissions)) { > - ? ? ? ? ? ?throw new AccessDeniedException(); > - ? ? ? ?} > - ? ?} > - > - ? ?public boolean hasPrivileges(String absPath, String[] privileges) throws PathNotFoundException, RepositoryException { > - ? ? ? ?boolean allowed; > - ? ? ? ?NodeState nodeState; > - > - ? ? ? ?if (isSystem) { > - ? ? ? ? ? ?return true; > - ? ? ? ?} > - ? ? ? ?for (String priv : privileges) { > - ? ? ? ? ? ?log.debug("Checking [{}] : {}", priv, absPath); > - ? ? ? ? ? ?allowed = false; > - ? ? ? ? ? ?nodeState = null; > - ? ? ? ? ? ?for (FacetAuthPrincipal fap : subject.getPrincipals(FacetAuthPrincipal.class)) { > - ? ? ? ? ? ? ? ?if (nodeState == null) { > - ? ? ? ? ? ? ? ? ? ?nodeState = getNodeState(absPath); > - ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ?if (log.isDebugEnabled()) { > - ? ? ? ? ? ? ? ? ? ?log.debug("Checking [" + priv + "] : " + absPath + " against FacetAuthPrincipal: " + fap); > - ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ?if (fap.getRoles().contains(priv)) { > - ? ? ? ? ? ? ? ? ? ?try { > - ? ? ? ? ? ? ? ? ? ? ? ?if (isNodeInDomain(nodeState, fap)) { > - ? ? ? ? ? ? ? ? ? ? ? ? ? ?allowed = true; > - ? ? ? ? ? ? ? ? ? ? ? ? ? ?log.info("Privilege [{}] for {} for: {} found for domain {}", new Object[] { priv, userId, > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?absPath, fap }); > - ? ? ? ? ? ? ? ? ? ? ? ? ? ?break; > - ? ? ? ? ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ? ? ?} catch (NoSuchItemStateException e) { > - ? ? ? ? ? ? ? ? ? ? ? ?throw new PathNotFoundException("Unable to find path: " + absPath); > - ? ? ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ?} > - ? ? ? ? ? ?if (!allowed) { > - ? ? ? ? ? ? ? ?return false; > - ? ? ? ? ? ?} > - ? ? ? ?} > - ? ? ? ?return true; > - ? ?} > - > - ? ?public boolean canRead(Path path) throws RepositoryException { > - ? ? ? ?return isGranted(hierMgr.resolvePath(path), Permission.READ); > - ? ?} > - > - ? ?public boolean isGranted(Path path, Name name, int permissions) throws RepositoryException { > - ? ? ? ?if((permissions & Permission.SET_PROPERTY) != 0) { > - ? ? ? ? ? ?return isGranted(path, Permission.SET_PROPERTY); > - ? ? ? ?} else if((permissions & Permission.ADD_NODE) != 0) { > - ? ? ? ? ? ?return isGranted(path, Permission.ADD_NODE); > - ? ? ? ?} else if((permissions & Permission.REMOVE_PROPERTY) != 0) { > - ? ? ? ? ? ?return isGranted(path, Permission.SET_PROPERTY); > - ? ? ? ?} else if((permissions & Permission.REMOVE_NODE) != 0) { > - ? ? ? ? ? ?return isGranted(path, Permission.ADD_NODE); > - ? ? ? ?} else { > - ? ? ? ? ? ?return isGranted(PathFactoryImpl.getInstance().create(path, name, true), permissions); > - ? ? ? ?} > - ? ?} > - > - ? ?public boolean isGranted(Path path, int permissions) throws RepositoryException { > - ? ? ? ?ItemId itemId; > - ? ? ? ?try { > - ? ? ? ? ? ?itemId = hierMgr.resolvePath(path); > - ? ? ? ?} catch(RepositoryException ex) { > - ? ? ? ? ? ?itemId = null; > - ? ? ? ?} > - ? ? ? ?if (itemId != null) { > - ? ? ? ? ? ?return isGranted(itemId, permissions); > - ? ? ? ?} else { > - ? ? ? ? ? ?Path parent = path.getAncestor(1); > - ? ? ? ? ? ?if((permissions & Permission.SET_PROPERTY) != 0) { > - ? ? ? ? ? ? ? ?return isGranted(parent, Permission.SET_PROPERTY); > - ? ? ? ? ? ?} else if((permissions & Permission.ADD_NODE) != 0) { > - ? ? ? ? ? ? ? ?return isGranted(parent, Permission.ADD_NODE); > - ? ? ? ? ? ?} else if((permissions & Permission.REMOVE_PROPERTY) != 0) { > - ? ? ? ? ? ? ? ?return isGranted(parent, Permission.SET_PROPERTY); > - ? ? ? ? ? ?} else if((permissions & Permission.REMOVE_NODE) != 0) { > - ? ? ? ? ? ? ? ?return isGranted(parent, Permission.ADD_NODE); > - ? ? ? ? ? ?} > - ? ? ? ? ? ?return true; > - ? ? ? ?} > - ? ?} > - > - > - ? ?/** > - ? ? * {@inheritDoc} > - ? ? */ > - ? ?public boolean isGranted(ItemId id, int permissions) throws RepositoryException { > - ? ? ? ?if (!initialized) { > - ? ? ? ? ? ?throw new IllegalStateException("not initialized"); > - ? ? ? ?} > - ? ? ? ?if (log.isTraceEnabled()) { > - ? ? ? ? ? ?log.trace("Checking [" + pString(permissions) + "] for: " + id); > - ? ? ? ?} > - ? ? ? ?if (isSystem) { > - ? ? ? ? ? ?if (log.isTraceEnabled()) { > - ? ? ? ? ? ? ? ?log.trace("Granted [" + pString(permissions) + "] for: " + id + " to system user"); > - ? ? ? ? ? ?} > - ? ? ? ? ? ?return true; > - ? ? ? ?} > - > - ? ? ? ?// handle properties > - ? ? ? ?if (!id.denotesNode()) { > - ? ? ? ? ? ?if ((permissions & (Permission.REMOVE_NODE|Permission.REMOVE_PROPERTY)) != 0) { > - ? ? ? ? ? ? ? ?// Don't check remove on properties. A write check on the node itself is done. > - ? ? ? ? ? ? ? ?return true; > - ? ? ? ? ? ?} > - ? ? ? ? ? ?return isGranted(((PropertyId) id).getParentId(), permissions); > - ? ? ? ?} > - > - ? ? ? ?// Check read access cache > - ? ? ? ?if (permissions == Permission.READ) { > - ? ? ? ? ? ?Boolean allowRead = readAccessCache.get(id); > - ? ? ? ? ? ?if (allowRead != null) { > - ? ? ? ? ? ? ? ?if (log.isTraceEnabled()) { > - ? ? ? ? ? ? ? ? ? ?log.trace("Cached [" + pString(permissions) + "] for: " + id + " granted: " + allowRead); > - ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ?return allowRead.booleanValue(); > - ? ? ? ? ? ?} > - ? ? ? ?} else { > - ? ? ? ? ? ?// not a read, remove node from cache > - ? ? ? ? ? ?readAccessCache.remove(id); > - ? ? ? ?} > - > - ? ? ? ?// initialize per request ItemStateCache > - ? ? ? ?synchronized (requestItemStateCache) { > - ? ? ? ? ? ?requestItemStateCache.clear(); > - ? ? ? ?} > - > - ? ? ? ?try { > - ? ? ? ? ? ?NodeState nodeState = (NodeState) getItemState(id); > - ? ? ? ? ? ?if (nodeState == null) { > - ? ? ? ? ? ? ? ?log.error("NodeState not found for ItemId: " + id); > - ? ? ? ? ? ? ? ?throw new RepositoryException("NodeState not found for ItemId : " + id); > - ? ? ? ? ? ?} > - > - ? ? ? ? ? ?// do check > - ? ? ? ? ? ?boolean isGranted = canAccessNode(nodeState, permissions); > - > - ? ? ? ? ? ?// update read access cache > - ? ? ? ? ? ?if ((permissions & Permission.READ) != 0) { > - ? ? ? ? ? ? ? ?readAccessCache.put(id, isGranted); > - ? ? ? ? ? ?} > - > - ? ? ? ? ? ?if (log.isDebugEnabled()) { > - ? ? ? ? ? ? ? ?log.debug("Permissions [" + pString(permissions) + "] for: " + id + " -> " + id + " granted: " + isGranted); > - ? ? ? ? ? ?} > - > - ? ? ? ? ? ?if (!isGranted) { > - ? ? ? ? ? ? ? ?if (log.isInfoEnabled()) { > - ? ? ? ? ? ? ? ? ? ?PathResolver resolver = new ParsingPathResolver(PathFactoryImpl.getInstance(), nRes); > - ? ? ? ? ? ? ? ? ? ?log.info("[" + pString(permissions) + "] DENIED for " + userId + " state(" + nodeState.getStatus() + ") for: " + id + " -> " > - ? ? ? ? ? ? ? ? ? ? ? ? ? ?+ resolver.getJCRPath(hierMgr.getPath(id))); > - ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ?} > - ? ? ? ? ? ?return isGranted; > - ? ? ? ?} catch (NoSuchItemStateException e) { > - ? ? ? ? ? ?log.debug("NoSuchItemStateException for: " + id, e); > - ? ? ? ? ? ?return false; > - ? ? ? ?} > - ? ?} > - > - > - ? ?/** > - ? ? * Get the NodeState for the absolute path. If the absolute path points > - ? ? * to a property get the NodeState the property belongs to. > - ? ? * @param absPath the absolute path > - ? ? * @return the NodeState of the node (holding the property) > - ? ? * @throws PathNotFoundException > - ? ? * @throws RepositoryException > - ? ? */ > - ? ?private NodeState getNodeState(String absPath) throws PathNotFoundException, RepositoryException { > - ? ? ? ?Path targetPath; > - ? ? ? ?try { > - ? ? ? ? ? ?targetPath = npRes.getQPath(absPath).getNormalizedPath(); > - ? ? ? ?} catch (NameException e) { > - ? ? ? ? ? ?String msg = "invalid path: " + absPath; > - ? ? ? ? ? ?log.debug(msg, e); > - ? ? ? ? ? ?throw new RepositoryException(msg, e); > - ? ? ? ?} > - ? ? ? ?if (!targetPath.isAbsolute()) { > - ? ? ? ? ? ?throw new RepositoryException("not an absolute path: " + absPath); > - ? ? ? ?} > - > - ? ? ? ?NodeId id = hierMgr.resolveNodePath(targetPath); > - ? ? ? ?if (id == null) { > - ? ? ? ? ? ?// id could be a property > - ? ? ? ? ? ?PropertyId pId = hierMgr.resolvePropertyPath(targetPath); > - ? ? ? ? ? ?if (pId == null) { > - ? ? ? ? ? ? ? ?throw new PathNotFoundException("Unable to find path: " + absPath); > - ? ? ? ? ? ?} > - ? ? ? ? ? ?id = pId.getParentId(); > - ? ? ? ?} > - ? ? ? ?try { > - ? ? ? ? ? ?return (NodeState) getItemState(id); > - ? ? ? ?} catch (NoSuchItemStateException e) { > - ? ? ? ? ? ?throw new PathNotFoundException("Unable to find path: " + absPath); > - ? ? ? ?} > - ? ?} > - > - ? ?/** > - ? ? * Try to get a state from the item manager by first checking the normal states, > - ? ? * then checking the transient states and last checking the attic state. > - ? ? * @param id the item id > - ? ? * @return the item state > - ? ? * @throws NoSuchItemStateException when the state cannot be found > - ? ? * @throws RepositoryException when something goes wrong while fetching the state > - ? ? */ > - ? ?public ItemState getItemState(ItemId id) throws NoSuchItemStateException, RepositoryException { > - ? ? ? ?if (id == null) { > - ? ? ? ? ? ?throw new RepositoryException("ItemId cannot be null"); > - ? ? ? ?} > - ? ? ? ?synchronized (requestItemStateCache) { > - ? ? ? ? ? ?if (requestItemStateCache.containsKey(id)) { > - ? ? ? ? ? ? ? ?return requestItemStateCache.get(id); > - ? ? ? ? ? ?} > - ? ? ? ? ? ?try { > - ? ? ? ? ? ? ? ?if (itemMgr.hasItemState(id)) { > - ? ? ? ? ? ? ? ? ? ?ItemState itemState = itemMgr.getItemState(id); > - ? ? ? ? ? ? ? ? ? ?requestItemStateCache.put(id, itemState); > - ? ? ? ? ? ? ? ? ? ?return itemState; > - ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ? ? ?if (itemMgr.hasTransientItemStateInAttic(id)) { > - ? ? ? ? ? ? ? ? ? ?ItemState itemState = itemMgr.getAtticItemState(id); > - ? ? ? ? ? ? ? ? ? ?requestItemStateCache.put(id, itemState); > - ? ? ? ? ? ? ? ? ? ?return itemState; > - ? ? ? ? ? ? ? ?} > - ? ? ? ? ? ?} catch (ItemStateException e) { > - ? ? ? ? ? ? ? ?String msg = "invalid item id: " + id; > - ? ? ? ? ? ? ? ?log.debug(msg, e); > - ? ? ? ? ? ? ? ?throw new RepositoryException(msg, e); > - ? ? ? ? ? ?} > - ? ? ? ?} > - ? ? ? ?throw new NoSuchItemStateException("Item state not found in normal, transient or attic: " + id); > - ? ?} > - > - ? ?/** > - ? ? * Get the NodeState of the parent from the nodeState in a transient and attic > - ? ? * safe manner. > - ? ? * @param nodeState > - ? ? * @return the parent nodestate > - ? ? * @throws NoSuchItemStateException when the state cannot be found > - ? ? */ > - ? ?public NodeState getParentState(NodeState nodeState) throws NoSuchItemStateException { > - ? ? ? ?if (rootNodeId.equals(nodeState.getId())) { > - ? ? ? ? ? ?throw new NoSuchItemStateException("RootNode doesn't have a parent state."); > - ? ? ? ?} > - ? ? ? ?try { > - ? ? ? ? ? ?// for nodeState's from the attic the parentId() is null, so use path resolving to find parent > - ? ? ? ? ? ?return (NodeState) getItemState(hierMgr.resolveNodePath(hierMgr.getPath(nodeState.getId()).getAncestor(1))); > - ? ? ? ?} catch (RepositoryException e) { > - ? ? ? ? ? ?throw new NoSuchItemStateException("Unable to find parent nodeState of node: " + nodeState.getId(), e); > - ? ? ? ?} > - ? ?} > - > - ? ?/** > - ? ? * {@inheritDoc} > - ? ? */ > - ? ?public boolean canAccess(String workspaceName) throws NoSuchWorkspaceException, RepositoryException { > - ? ? ? ?// no workspace restrictions yet > - ? ? ? ?return true; > - ? ?} > - > - ? ?/** > - ? ? * Helper method for pretty printing the requested permission > - ? ? * @param permissions > - ? ? * @return the 'unix' style permissions string > - ? ? */ > - ? ?private String pString(int permissions) { > - ? ? ? ?StringBuffer buf = new StringBuffer(); > - > - ? ? ? ?// narrow down permissions > - ? ? ? ?if ((permissions & Permission.READ) != 0) { > - ? ? ? ? ? ?buf.append('r'); > - ? ? ? ?} else { > - ? ? ? ? ? ?buf.append('-'); > - ? ? ? ?} > - > - ? ? ? ?// narrow down permissions > - ? ? ? ?if ((permissions & (Permission.ADD_NODE|Permission.SET_PROPERTY)) != 0) { > - ? ? ? ? ? ?buf.append('w'); > - ? ? ? ?} else { > - ? ? ? ? ? ?buf.append('-'); > - ? ? ? ?} > - > - ? ? ? ?// narrow down permissions > - ? ? ? ?if ((permissions & (Permission.REMOVE_NODE|Permission.REMOVE_PROPERTY)) != 0) { > - ? ? ? ? ? ?buf.append('d'); > - ? ? ? ?} else { > - ? ? ? ? ? ?buf.append('-'); > - ? ? ? ?} > - ? ? ? ?return buf.toString(); > - ? ?} > - > - ? ?/** > ? ? ?* Helper function to check if a nodeState is of a node type or a > ? ? ?* instance of the node type (sub class) > ? ? ?* > @@ -826,9 +651,10 @@ > ? ? ?* @return boolean > ? ? ?* @throws NoSuchNodeTypeException > ? ? ?*/ > - ? ?private boolean isInstanceOfType(NodeState nodeState, String nodeType) throws NamespaceException, NoSuchNodeTypeException, RepositoryException { > + ? ?private boolean isInstanceOfType(NodeState nodeState, String nodeType) throws NamespaceException, > + ? ? ? ? ? ?NoSuchNodeTypeException, RepositoryException { > ? ? ? ? // create NodeType of nodeState's primaryType > - ? ? ? ?String nodeStateType = nRes.getJCRName(nodeState.getNodeTypeName()); > + ? ? ? ?String nodeStateType = npRes.getJCRName(nodeState.getNodeTypeName()); > > ? ? ? ? if (nodeStateType.equals(nodeType)) { > ? ? ? ? ? ? if (log.isTraceEnabled()) { > @@ -837,7 +663,7 @@ > ? ? ? ? ? ? return true; > ? ? ? ? } > > - ? ? ? ?Boolean isInstance = ntIOCache.get(nodeStateType,nodeType); > + ? ? ? ?Boolean isInstance = ntIOCache.get(nodeStateType, nodeType); > ? ? ? ? if (isInstance != null) { > ? ? ? ? ? ? return isInstance.booleanValue(); > ? ? ? ? } > @@ -875,7 +701,8 @@ > ? ? ?* @throws RepositoryException > ? ? ?* @see FacetRule > ? ? ?*/ > - ? ?private boolean matchPropertyWithFacetRule(NodeState nodeState, FacetRule rule) throws NoSuchItemStateException, RepositoryException { > + ? ?private boolean matchPropertyWithFacetRule(NodeState nodeState, FacetRule rule) throws NoSuchItemStateException, > + ? ? ? ? ? ?RepositoryException { > > ? ? ? ? boolean match = false; > > @@ -884,8 +711,7 @@ > ? ? ? ? ? ? // WILDCARD match, jcr:primaryType == * > ? ? ? ? ? ? if (FacetAuthConstants.WILDCARD.equals(rule.getValue())) { > ? ? ? ? ? ? ? ? match = true; > - ? ? ? ? ? ?} > - ? ? ? ? ? ?else if (nodeState.getNodeTypeName().equals(rule.getValueName())) { > + ? ? ? ? ? ?} else if (nodeState.getNodeTypeName().equals(rule.getValueName())) { > ? ? ? ? ? ? ? ? match = true; > ? ? ? ? ? ? } else { > ? ? ? ? ? ? ? ? match = false; > @@ -900,7 +726,8 @@ > ? ? ? ? } > > ? ? ? ? // the hierarchy manager is attic aware. The property can also be in the removed properties > - ? ? ? ?if (!nodeState.hasPropertyName(rule.getFacetName()) && !nodeState.getRemovedPropertyNames().contains(rule.getFacetName())) { > + ? ? ? ?if (!nodeState.hasPropertyName(rule.getFacetName()) > + ? ? ? ? ? ? ? ?&& !nodeState.getRemovedPropertyNames().contains(rule.getFacetName())) { > ? ? ? ? ? ? log.trace("Node: {} doesn't have property {}", nodeState.getId(), rule.getFacetName()); > > ? ? ? ? ? ? // if this is a filter facet rule the property doesn't have to be set > @@ -908,7 +735,7 @@ > ? ? ? ? ? ? ? ? return true; > ? ? ? ? ? ? } > > - ? ? ? ? ? ?if(FacetAuthConstants.WILDCARD.equals(rule.getValue()) && !rule.isEqual()) { > + ? ? ? ? ? ?if (FacetAuthConstants.WILDCARD.equals(rule.getValue()) && !rule.isEqual()) { > ? ? ? ? ? ? ? ? return true; > ? ? ? ? ? ? } else { > ? ? ? ? ? ? ? ? return false; > @@ -988,7 +815,8 @@ > ? ? ?* @return true if the node has the mixin type > ? ? ?* @throws RepositoryException > ? ? ?*/ > - ? ?private boolean hasMixinWithValue(NodeState nodeState, String value) throws NoSuchItemStateException, RepositoryException { > + ? ?private boolean hasMixinWithValue(NodeState nodeState, String value) throws NoSuchItemStateException, > + ? ? ? ? ? ?RepositoryException { > ? ? ? ? if (!nodeState.hasPropertyName(NameConstants.JCR_MIXINTYPES)) { > ? ? ? ? ? ? return false; > ? ? ? ? } > @@ -1016,32 +844,138 @@ > ? ? } > > ? ? /** > + ? ? * Get the ItemId for the absolute path. If the absolute path points > + ? ? * to a property return the PropertyId else return the NodeId. > + ? ? * @param absPath the absolute path > + ? ? * @return the NodeState of the node (holding the property) > + ? ? * @throws PathNotFoundException > + ? ? * @throws RepositoryException > + ? ? */ > + ? ?private ItemId getItemId(String absPath) throws PathNotFoundException, RepositoryException { > + ? ? ? ?checkInitialized(); > + ? ? ? ?return getItemId(npRes.getQPath(absPath)); > + ? ?} > + > + ? ?/** > + ? ? * Get the ItemId for the absolute path. If the absolute path points > + ? ? * to a property return the PropertyId else return the NodeId. > + ? ? * @param absPath the absolute path > + ? ? * @return the NodeState of the node (holding the property) > + ? ? * @throws PathNotFoundException > + ? ? * @throws RepositoryException > + ? ? */ > + ? ?private ItemId getItemId(Path absPath) throws PathNotFoundException, RepositoryException { > + ? ? ? ?checkInitialized(); > + > + ? ? ? ?if (!absPath.isAbsolute()) { > + ? ? ? ? ? ?throw new RepositoryException("Absolute path expected, got " + npRes.getJCRPath(absPath)); > + ? ? ? ?} > + > + ? ? ? ?NodeId id = hierMgr.resolveNodePath(absPath) ; > + ? ? ? ?if (id != null) { > + ? ? ? ? ? ?return id; > + ? ? ? ?} > + > + ? ? ? ?// path could point to a property > + ? ? ? ?PropertyId pId = hierMgr.resolvePropertyPath(absPath); > + ? ? ? ?if (pId == null) { > + ? ? ? ? ? ?throw new PathNotFoundException("Unable to find path: " + npRes.getJCRPath(absPath)); > + ? ? ? ?} > + ? ? ? ?return pId; > + ? ?} > + > + ? ?/** > + ? ? * Try to get a state from the item manager by first checking the normal states, > + ? ? * then checking the transient states and last checking the attic state. > + ? ? * @param id the item id > + ? ? * @return the item state > + ? ? * @throws NoSuchItemStateException when the state cannot be found > + ? ? * @throws RepositoryException when something goes wrong while fetching the state > + ? ? */ > + ? ?private ItemState getItemState(ItemId id) throws NoSuchItemStateException, RepositoryException { > + ? ? ? ?if (id == null) { > + ? ? ? ? ? ?throw new RepositoryException("ItemId cannot be null"); > + ? ? ? ?} > + ? ? ? ?try { > + ? ? ? ? ? ?if (itemMgr.hasItemState(id)) { > + ? ? ? ? ? ? ? ?return hierMgr.getItemState(id); > + ? ? ? ? ? ?} else if (itemMgr.hasTransientItemState(id)) { > + ? ? ? ? ? ? ? ?return itemMgr.getTransientItemState(id); > + ? ? ? ? ? ?} else if (itemMgr.hasTransientItemStateInAttic(id)) { > + ? ? ? ? ? ? ? ?return itemMgr.getAtticItemState(id); > + ? ? ? ? ? ?} > + ? ? ? ?} catch (ItemStateException e) { > + ? ? ? ? ? ?String msg = "invalid item id: " + id; > + ? ? ? ? ? ?log.error(msg, e); > + ? ? ? ? ? ?throw new RepositoryException(msg, e); > + ? ? ? ?} > + ? ? ? ?String msg = "Item state not found in normal, transient or attic: " + id; > + ? ? ? ?if (log.isDebugEnabled()) { > + ? ? ? ? ? ?log.debug(msg); > + ? ? ? ? ? ?Thread.dumpStack(); > + ? ? ? ? ? ?itemMgr.dump(System.err); > + ? ? ? ?} > + ? ? ? ?throw new NoSuchItemStateException(msg); > + ? ?} > + > + ? ?/** > + ? ? * Get the NodeState of the parent from the nodeState in a transient and attic > + ? ? * safe manner. > + ? ? * @param nodeState > + ? ? * @return the parent nodestate > + ? ? * @throws NoSuchItemStateException when the state cannot be found > + ? ? */ > + ? ?private NodeState getParentState(NodeState nodeState) throws NoSuchItemStateException { > + ? ? ? ?if (rootNodeId.equals(nodeState.getId())) { > + ? ? ? ? ? ?throw new NoSuchItemStateException("RootNode doesn't have a parent state."); > + ? ? ? ?} > + ? ? ? ?try { > + ? ? ? ? ? ?// for nodeState's from the attic the parentId() is null, so use path resolving to find parent > + ? ? ? ? ? ?return (NodeState) getItemState(hierMgr.resolveNodePath(hierMgr.getPath(nodeState.getId()).getAncestor(1))); > + ? ? ? ?} catch (RepositoryException e) { > + ? ? ? ? ? ?throw new NoSuchItemStateException("Unable to find parent nodeState of node: " + nodeState.getId(), e); > + ? ? ? ?} > + ? ?} > + > + > + ? ?/** > ? ? ?* Helper function to find a hippo:document instance node type. This > ? ? ?* can be used to check for facet authorization on the root of a > ? ? ?* document (bonzai tree). > ? ? ?* @param nodeState the node of which to check the parents > ? ? ?* @return NodeState the parent node state or null > - ? ? * @throws NoSuchItemStateException > - ? ? * @throws RepositoryException > - ? ? * @throws NamespaceException > + ? ? * @throws NoSuchItemStateException > + ? ? * @throws RepositoryException > ? ? ?*/ > - ? ?private NodeState getParentDoc(NodeState nodeState) throws NoSuchItemStateException, NamespaceException, RepositoryException { > + ? ?private NodeState getParentDoc(NodeState nodeState) throws NoSuchItemStateException, RepositoryException { > > ? ? ? ? if (log.isTraceEnabled()) { > - ? ? ? ? ? ?log.trace("Checking " + nodeState.getId() + " ntn: " + nodeState.getNodeTypeName() + " for being part of a document model."); > + ? ? ? ? ? ?log.trace("Checking " + nodeState.getId() + " ntn: " + nodeState.getNodeTypeName() > + ? ? ? ? ? ? ? ? ? ?+ " for being part of a document model."); > ? ? ? ? } > ? ? ? ? // check if this is already the root of a document > - ? ? ? ?if (isInstanceOfType(nodeState, HippoNodeType.NT_DOCUMENT) || nodeState.getNodeTypeName().equals(hippoHandle) > - ? ? ? ? ? ? ? ?|| nodeState.getNodeTypeName().equals(hippoFacetSearch) || nodeState.getNodeTypeName().equals(hippoFacetSelect)) { > - ? ? ? ? ? ?if (log.isDebugEnabled()) { > - ? ? ? ? ? ? ? ?log.debug("Node is already document root: " + nodeState.getNodeTypeName()); > + ? ? ? ?try { > + ? ? ? ? ? ?if (isInstanceOfType(nodeState, HippoNodeType.NT_DOCUMENT) || nodeState.getNodeTypeName().equals(hippoHandle) > + ? ? ? ? ? ? ? ? ? ?|| nodeState.getNodeTypeName().equals(hippoFacetSearch) > + ? ? ? ? ? ? ? ? ? ?|| nodeState.getNodeTypeName().equals(hippoFacetSelect)) { > + ? ? ? ? ? ? ? ?if (log.isTraceEnabled()) { > + ? ? ? ? ? ? ? ? ? ?log.trace("Node is already document root: " + nodeState.getNodeTypeName()); > + ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ?return null; > ? ? ? ? ? ? } > + ? ? ? ?} catch (NamespaceException e) { > + ? ? ? ? ? ?log.warn("NamespaceException while trying to get parent doc", e); > ? ? ? ? ? ? return null; > + ? ? ? ?} catch (NoSuchNodeTypeException e) { > + ? ? ? ? ? ?log.warn("NoSuchNodeTypeException while trying to get parent doc", e); > + ? ? ? ? ? ?return null; > ? ? ? ? } > + > ? ? ? ? // walk up in the hierarchy > ? ? ? ? while (!rootNodeId.equals(nodeState.getId())) { > ? ? ? ? ? ? // shift one up in hierarchy > ? ? ? ? ? ? nodeState = getParentState(nodeState); > + > ? ? ? ? ? ? if (nodeState.getNodeTypeName().equals(hippoHandle)) { > ? ? ? ? ? ? ? ? if (log.isDebugEnabled()) { > ? ? ? ? ? ? ? ? ? ? log.debug("MATCH hippoHandle: " + nodeState.getNodeTypeName()); > @@ -1060,11 +994,19 @@ > ? ? ? ? ? ? ? ? } > ? ? ? ? ? ? ? ? return null; > ? ? ? ? ? ? } > - ? ? ? ? ? ?if (isInstanceOfType(nodeState, HippoNodeType.NT_DOCUMENT)) { > - ? ? ? ? ? ? ? ?if (log.isDebugEnabled()) { > - ? ? ? ? ? ? ? ? ? ?log.debug("MATCH hippoDoc: " + nodeState.getNodeTypeName()); > + ? ? ? ? ? ?try { > + ? ? ? ? ? ? ? ?if (isInstanceOfType(nodeState, HippoNodeType.NT_DOCUMENT)) { > + ? ? ? ? ? ? ? ? ? ?if (log.isDebugEnabled()) { > + ? ? ? ? ? ? ? ? ? ? ? ?log.debug("MATCH hippoDoc: " + nodeState.getNodeTypeName()); > + ? ? ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ? ? ?return nodeState; > ? ? ? ? ? ? ? ? } > - ? ? ? ? ? ? ? ?return nodeState; > + ? ? ? ? ? ?} catch (NamespaceException e) { > + ? ? ? ? ? ? ? ?log.warn("NamespaceException while trying to get parent doc", e); > + ? ? ? ? ? ? ? ?return null; > + ? ? ? ? ? ?} catch (NoSuchNodeTypeException e) { > + ? ? ? ? ? ? ? ?log.warn("NoSuchNodeTypeException while trying to get parent doc", e); > + ? ? ? ? ? ? ? ?return null; > ? ? ? ? ? ? } > ? ? ? ? } > ? ? ? ? return null; > @@ -1078,9 +1020,10 @@ > ? ? ? ? /** > ? ? ? ? ?* The cache map > ? ? ? ? ?*/ > - ? ? ? ?private static Map> map = new WeakHashMap>(); > + ? ? ? ?private static Map> map = new WeakHashMap>(); > > ? ? ? ? private static NodeTypeInstanceOfCache cache = new NodeTypeInstanceOfCache(); > + > ? ? ? ? /** > ? ? ? ? ?* Create a new LRU cache > ? ? ? ? ?* @param size max number of cache objects > @@ -1144,4 +1087,302 @@ > ? ? } > > > + > + ? ?//---------------------------- ACCESS CONTROL MANAGER ---------------------------// > + > + ? ?/** > + ? ? * @see AccessControlManager#getSupportedPrivileges(String) > + ? ? */ > + ? ?public Privilege[] getSupportedPrivileges(String absPath) throws PathNotFoundException, RepositoryException { > + ? ? ? ?checkInitialized(); > + ? ? ? ?checkValidNodePath(absPath); > + ? ? ? ?// return all known privileges everywhere. > + ? ? ? ?return currentPrivileges.values().toArray(new Privilege[currentPrivileges.size()]); > + ? ?} > + > + ? ?/** > + ? ? * @see AccessControlManager#privilegeFromName(String) > + ? ? */ > + ? ?public Privilege privilegeFromName(String privilegeName) > + ? ? ? ? ? ?throws AccessControlException, RepositoryException { > + ? ? ? ?checkInitialized(); > + > + ? ? ? ?if (currentPrivileges.containsKey(privilegeName)) { > + ? ? ? ? ? ?return currentPrivileges.get(privilegeName); > + ? ? ? ?} > + > + ? ? ? ?currentPrivileges.put(privilegeName, new Privilege() { > + > + ? ? ? ? ? ?private String name; > + > + ? ? ? ? ? ?public Privilege[] getAggregatePrivileges() { > + ? ? ? ? ? ? ? ?return new Privilege[0]; > + ? ? ? ? ? ?} > + > + ? ? ? ? ? ?public Privilege[] getDeclaredAggregatePrivileges() { > + ? ? ? ? ? ? ? ?return new Privilege[0]; > + ? ? ? ? ? ?} > + > + ? ? ? ? ? ?public Privilege create(String name) { > + ? ? ? ? ? ? ? ?this.name = name; > + ? ? ? ? ? ? ? ?return this; > + ? ? ? ? ? ?} > + > + ? ? ? ? ? ?public String getName() { > + ? ? ? ? ? ? ? ?return name; > + ? ? ? ? ? ?} > + > + ? ? ? ? ? ?public boolean isAbstract() { > + ? ? ? ? ? ? ? ?return false; > + ? ? ? ? ? ?} > + > + ? ? ? ? ? ?public boolean isAggregate() { > + ? ? ? ? ? ? ? ?return false; > + ? ? ? ? ? ?} > + ? ? ? ?}.create(privilegeName)); > + > + ? ? ? ?return currentPrivileges.get(privilegeName); > + ? ?} > + > + ? ?/** > + ? ? * @see AccessControlManager#hasPrivileges(String,Privilege[]) > + ? ? */ > + ? ?public boolean hasPrivileges(String absPath, Privilege[] privileges) throws PathNotFoundException, > + ? ? ? ? ? ?RepositoryException { > + ? ? ? ?checkInitialized(); > + > + ? ? ? ?// system session can do everything > + ? ? ? ?if (isSystem) { > + ? ? ? ? ? ?return true; > + ? ? ? ?} > + > + ? ? ? ?// user is always allowed to do nothing > + ? ? ? ?if (privileges == null || privileges.length == 0) { > + ? ? ? ? ? ?log.debug("No privileges to check for path: {}.", absPath); > + ? ? ? ? ? ?return true; > + ? ? ? ?} > + > + ? ? ? ?// check if the path points to a node > + ? ? ? ?ItemId id = getItemId(absPath); > + ? ? ? ?if (!id.denotesNode()) { > + ? ? ? ? ? ?throw new PathNotFoundException("hasPrivileges called on property instead of node " + absPath); > + ? ? ? ?} > + > + ? ? ? ?// system session can do everything > + ? ? ? ?if (isSystem) { > + ? ? ? ? ? ?return true; > + ? ? ? ?} > + > + ? ? ? ?// fast track read check > + ? ? ? ?if (privileges.length == 1 && "jcr:read".equals(privileges[0].getName())) { > + ? ? ? ? ? ?return canRead(npRes.getQPath(absPath)); > + ? ? ? ?} > + ? ? ? ?NodeState nodeState; > + ? ? ? ?try { > + ? ? ? ? ? ?nodeState = (NodeState) getItemState(id); > + ? ? ? ?} catch (NoSuchItemStateException e) { > + ? ? ? ? ? ?throw new PathNotFoundException("Path not found " + absPath, e); > + ? ? ? ?} > + > + > + ? ? ? ?for (Privilege priv : privileges) { > + ? ? ? ? ? ?log.debug("Checking [{}] : {}", priv.getName(), absPath); > + ? ? ? ? ? ?boolean allowed = false; > + ? ? ? ? ? ?for (FacetAuthPrincipal fap : subject.getPrincipals(FacetAuthPrincipal.class)) { > + ? ? ? ? ? ? ? ?if (log.isDebugEnabled()) { > + ? ? ? ? ? ? ? ? ? ?log.debug("Checking [" + priv + "] : " + absPath + " against FacetAuthPrincipal: " + fap); > + ? ? ? ? ? ? ? ?} > + > + ? ? ? ? ? ? ? ?if (fap.getPrivileges().contains(priv.getName())) { > + ? ? ? ? ? ? ? ? ? ?try { > + ? ? ? ? ? ? ? ? ? ? ? ?if (isNodeInDomain(nodeState, fap)) { > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?allowed = true; > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?if (log.isInfoEnabled()) { > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?log.info("GRANT: " + priv.getName() + " to user " + userId + " in domain " + fap + " for " + absPath); > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?break; > + ? ? ? ? ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ? ? ?} catch (NoSuchItemStateException e) { > + ? ? ? ? ? ? ? ? ? ? ? ?throw new PathNotFoundException("Unable to find path: " + absPath, e); > + ? ? ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ?} > + ? ? ? ? ? ?if (!allowed) { > + ? ? ? ? ? ? ? ?if (log.isInfoEnabled()) { > + ? ? ? ? ? ? ? ? ? ?log.info("DENY: " + priv.getName() + " to user " + userId + " for " + absPath); > + ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ?return false; > + ? ? ? ? ? ?} > + ? ? ? ?} > + > + ? ? ? ?// not a read, remove node from cache > + ? ? ? ?readAccessCache.remove(id); > + > + ? ? ? ?return true; > + ? ?} > + > + > + ? ?/** > + ? ? * @see AccessControlManager#getPrivileges(String) > + ? ? */ > + ? ?public Privilege[] getPrivileges(String absPath) throws PathNotFoundException, RepositoryException { > + ? ? ? ?checkInitialized(); > + > + ? ? ? ?// check if the path points to a node > + ? ? ? ?ItemId id = getItemId(absPath); > + ? ? ? ?if (!id.denotesNode()) { > + ? ? ? ? ? ?throw new PathNotFoundException("hasPrivileges called on property instead of node " + absPath); > + ? ? ? ?} > + > + ? ? ? ?NodeState nodeState; > + ? ? ? ?try { > + ? ? ? ? ? ?nodeState = (NodeState) getItemState(id); > + ? ? ? ?} catch (NoSuchItemStateException e) { > + ? ? ? ? ? ?throw new PathNotFoundException("Path not found " + absPath); > + ? ? ? ?} > + > + ? ? ? ?Set privileges = new HashSet(); > + ? ? ? ?for (FacetAuthPrincipal fap : subject.getPrincipals(FacetAuthPrincipal.class)) { > + ? ? ? ? ? ?try { > + ? ? ? ? ? ? ? ?if (isNodeInDomain(nodeState, fap)) { > + ? ? ? ? ? ? ? ? ? ?for (String privilegeName : fap.getPrivileges()) { > + ? ? ? ? ? ? ? ? ? ? ? ?privileges.add(privilegeFromName(privilegeName)); > + ? ? ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ? ? ?} > + ? ? ? ? ? ?} catch (NoSuchItemStateException e) { > + ? ? ? ? ? ? ? ?throw new PathNotFoundException("Unable to find path: " + absPath); > + ? ? ? ? ? ?} > + ? ? ? ?} > + ? ? ? ?return privileges.toArray(new Privilege[privileges.size()]); > + ? ?} > + > + > + ? ?/** > + ? ? * Always return empty array of AccessControlPolicy > + ? ? * > + ? ? * @see AccessControlManager#getPolicies(String) > + ? ? */ > + ? ?public AccessControlPolicy[] getPolicies(String absPath) throws PathNotFoundException, AccessDeniedException, RepositoryException { > + ? ? ? ?checkInitialized(); > + ? ? ? ?//checkPrivileges(absPath, P... > > [Message clipped] -- Hippo B.V. - Amsterdam Oosteinde 11, 1017 WT, Amsterdam, +31(0)20-5224466 Hippo USA Inc. - San Francisco 101 H Street, Suite Q, Petaluma CA, 94952-3329, +1 (707) 773-4646 ----------------------------------------------------------------- http://www.onehippo.com - info@onehippo.com ----------------------------------------------------------------- From b.vanderschans at onehippo.com Mon Mar 23 14:18:30 2009 From: b.vanderschans at onehippo.com (Bart van der Schans) Date: Mon Mar 23 14:17:01 2009 Subject: [HippoRepos-dev] Writing unit tests for the repository Message-ID: Hi all, I spent quite some time on getting all (at least most of them) the unit test running. Some guide lines for writing 'correct' unit tests for the repository: - always extend org.hippoecm.repository.TestCase (NOT junit TestCase!) - only place test date under the node /test, it will be cleaned automatically - cleanup any other data you create in the test, like configuration data, preferably in the tearDown() - use setUp() { super.setUp(); } and tearDown() { super.tearDown(); } with @Before and @After annotations - add @Test and @Ignore statement to your tests, don't uncomment - if a test isn't bloody obvious add some (java) docs To get started quickly I've committed the BoilerPlateTest.java class file. You can use this as example or starting point for writing extra tests. Also on a side note: mvn test runs the tests differently from maven install. If you run tests on the whole project ALWAYS use mvn install. You can still run a single test with -Dtest=FooBarTest. Regards, Bart -- Hippo B.V. - Amsterdam Oosteinde 11, 1017 WT, Amsterdam, +31(0)20-5224466 Hippo USA Inc. - San Francisco 101 H Street, Suite Q, Petaluma CA, 94952-3329, +1 (707) 773-4646 ----------------------------------------------------------------- http://www.onehippo.com - info@onehippo.com ----------------------------------------------------------------- From helpdesk at onehippo.com Mon Mar 23 14:57:28 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 23 14:56:29 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2126) repair authorization self exclusion In-Reply-To: <32881147.1231327481780.JavaMail.root@hat01> Message-ID: <15414439.1237816648640.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2126?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2126. ------------------------------------------ Resolution: Fixed > repair authorization self exclusion > ----------------------------------- > > Key: HREPTWO-2126 > URL: http://issues.onehippo.com/browse/HREPTWO-2126 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: (Berry) A.W. van Halderen > Assignee: Bart van der Schans > Fix For: r2.05.01 (m12 - update) > > Original Estimate: 1 day > Remaining Estimate: 1 day > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 23 14:57:28 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 23 14:56:32 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-1968) Refactor User management, group management and permissions to match the new JR specific internal interfaces In-Reply-To: <29587261.1228726498628.JavaMail.jira@hat01> Message-ID: <18919880.1237816648711.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-1968?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-1968. ------------------------------------------ Resolution: Fixed > Refactor User management, group management and permissions to match the new JR specific internal interfaces > ----------------------------------------------------------------------------------------------------------- > > Key: HREPTWO-1968 > URL: http://issues.onehippo.com/browse/HREPTWO-1968 > Project: Hippo Repository 2 > Issue Type: Sub-task > Components: addon-ldap, repository-core, security > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Priority: High > Fix For: r2.05.01 (m12 - update) > > Original Estimate: 2 days > Time Spent: 1 week, 2 days, 1 hour, 45 minutes > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Mon Mar 23 14:59:28 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Mon Mar 23 14:58:35 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-1956) repair FacetedAuthorizationTest In-Reply-To: <1054621.1228643338667.JavaMail.jira@hat01> Message-ID: <16460841.1237816768615.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-1956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-1956. ------------------------------------------ Resolution: Fixed > repair FacetedAuthorizationTest > ------------------------------- > > Key: HREPTWO-1956 > URL: http://issues.onehippo.com/browse/HREPTWO-1956 > Project: Hippo Repository 2 > Issue Type: Sub-task > Reporter: (Berry) A.W. van Halderen > Assignee: Bart van der Schans > Fix For: r2.07.xx (m14) > > Original Estimate: 3 hours > Remaining Estimate: 3 hours > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 24 00:40:57 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Tue Mar 24 00:39:22 2009 Subject: [HippoRepos-dev] [17085] hippo-ecm: HREPTWO-18: add svn id Message-ID: <20090323234057.EB6EAC297@svnnew.onehippo.org> Revision: 17085 Author: bvanhalderen Date: 2009-03-24 00:40:53 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-18: add svn id Modified Paths: -------------- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchListingPlugin.java hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchProvider.java Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchListingPlugin.java =================================================================== --- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchListingPlugin.java 2009-03-23 16:15:22 UTC (rev 17084) +++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchListingPlugin.java 2009-03-23 23:40:53 UTC (rev 17085) @@ -21,6 +21,9 @@ import org.hippoecm.frontend.plugin.config.IPluginConfig; public class FacetSearchListingPlugin extends DocumentListingPlugin { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id: $"; + private static final long serialVersionUID = 1L; public FacetSearchListingPlugin(IPluginContext context, IPluginConfig config) { Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchProvider.java =================================================================== --- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchProvider.java 2009-03-23 16:15:22 UTC (rev 17084) +++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchProvider.java 2009-03-23 23:40:53 UTC (rev 17085) @@ -47,6 +47,9 @@ public class FacetSearchProvider extends SortableDataProvider implements IObservable { private static final long serialVersionUID = 1L; + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id: $"; + static final Logger log = LoggerFactory.getLogger(FacetSearchProvider.class); private JcrNodeModel model; From svn-logs at hippocms.org Tue Mar 24 01:07:48 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Tue Mar 24 01:06:09 2009 Subject: [HippoRepos-dev] [17086] hippo-ecm: HREPTWO-16: drop example web.xml, use spi instead Message-ID: <20090324000748.71CE6C58B@svnnew.onehippo.org> Revision: 17086 Author: bvanhalderen Date: 2009-03-24 01:07:48 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-16: drop example web.xml, use spi instead Removed Paths: ------------- hippo-ecm/trunk/quickstart/war/src/main/webapp/WEB-INF/web-embedded.xml Deleted: hippo-ecm/trunk/quickstart/war/src/main/webapp/WEB-INF/web-embedded.xml =================================================================== --- hippo-ecm/trunk/quickstart/war/src/main/webapp/WEB-INF/web-embedded.xml 2009-03-23 23:40:53 UTC (rev 17085) +++ hippo-ecm/trunk/quickstart/war/src/main/webapp/WEB-INF/web-embedded.xml 2009-03-24 00:07:48 UTC (rev 17086) @@ -1,86 +0,0 @@ - - - - - - - Hippo ECM WAR package - Hippo ECM WAR package - - - repository-address - WEB-INF/storage - The address of the repository - - - repository-directory - WEB-INF/storage - The (relative) location where to store files - - - repository-config - repository.xml - The location of the repository configuration file. Unless the location - starts with file://, the location is retrieved from within the application package as - resource. - - - - - - CMS - org.apache.wicket.protocol.http.WicketFilter - - applicationClassName - org.hippoecm.frontend.Main - - - configuration - deployment - - - - - CMS - /* - - - - LoggingServlet - org.hippoecm.repository.LoggingServlet - 3 - - - - LoggingServlet - /logging/* - - - - - 60 - - - - - From svn-logs at hippocms.org Tue Mar 24 01:42:20 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Tue Mar 24 01:40:47 2009 Subject: [HippoRepos-dev] [17087] hippo-ecm/trunk: HREPTWO-1999: implementation of context menu in foldertree Message-ID: <20090324004220.9AF38C58B@svnnew.onehippo.org> Revision: 17087 Author: bvanhalderen Date: 2009-03-24 01:42:18 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-1999: implementation of context menu in foldertree - Root plugins cannot handle the context menu manager code. They will not receive the onClick, because they have the part of the html - exception dialog should also display simple text - menu with icon on right side of Tree widget - generic information getter method for workflow in Workflow interface: hints(); do not use event logger to log calls to hints, deprecate list method in FolderWorkflow, use hints instead - drop hippostd:fixeddirectory no longer required because workflow of top folder not visible. - context menu in folder plugin, using a DropMenu class to list menu items - compatibility / easy to use workflow plugin - drop scrollbar and some other features from folder tree, as it interferes with overlay Modified Paths: -------------- hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflow.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/EditmodelWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NamespaceWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NullWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RemodelWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelDialog.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ReorderDialog.java hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd.cnd hippo-ecm/trunk/addon/cms/browse/pom.xml hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java hippo-ecm/trunk/addon/cms/root/src/main/java/org/hippoecm/frontend/plugins/cms/root/RootPlugin.java hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml hippo-ecm/trunk/addon/gallery/repository/src/main/java/org/hippoecm/repository/gallery/impl/GalleryWorkflowImpl.java hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicRequestWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/CancelWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullRequestWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.java hippo-ecm/trunk/addon/workflow/pom.xml hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuHierarchy.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflowPlugin.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/Workflow.java hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/WorkflowDescriptor.java hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/ext/WorkflowImpl.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/ExceptionDialog.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/DefaultAbstractTree.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/Tree.html hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/Tree.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/RootPlugin.java hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml hippo-ecm/trunk/package/config/src/main/resources/cms-folder-views.xml hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html hippo-ecm/trunk/package/skin/src/main/webapp/screen.css hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/client/ClientWorkflowDescriptor.java hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/remote/RemoteWorkflowDescriptor.java hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/server/ServerWorkflowDescriptor.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowDescriptorImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/DefaultWorkflowImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/EditmodelWorkflowImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/EventLoggerImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/NullWorkflowImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/RemodelWorkflowImpl.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/TemplateEditorActions.java hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/VersionWorkflowImpl.java Added Paths: ----------- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/delete-16.png hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/document-new-16.png hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/rename-16.png hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/workflow-16.png hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/res/menu.png Removed Paths: ------------- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin_nl.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FixedFolderWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowDialog.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog_nl.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.html hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin_nl.properties hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/WorkflowActionComponent.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/WorkflowActionComponentDropDownChoice.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/dialogs/ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.html hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.java Property Changed: ---------------- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html Modified: hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflow.java =================================================================== --- hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflow.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/common/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflow.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -39,11 +39,7 @@ /** * - * @return - * @throws WorkflowException - * @throws MappingException - * @throws RepositoryException - * @throws RemoteException + * @deprecated */ public Map> list() throws WorkflowException, MappingException, RepositoryException, RemoteException; Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.html 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,23 +0,0 @@ - - - -
      -
    •  

    • -
    • -
    -
    - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,523 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.rmi.RemoteException; -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.Map.Entry; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.apache.wicket.Component; -import org.apache.wicket.Session; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.panel.EmptyPanel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; -import org.hippoecm.addon.workflow.WorkflowDescriptorModel; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.DialogAction; -import org.hippoecm.frontend.dialog.DialogLink; -import org.hippoecm.frontend.dialog.IDialogFactory; -import org.hippoecm.frontend.i18n.model.NodeTranslator; -import org.hippoecm.frontend.i18n.types.TypeChoiceRenderer; -import org.hippoecm.frontend.model.JcrItemModel; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.service.IBrowseService; -import org.hippoecm.frontend.service.IEditorManager; -import org.hippoecm.frontend.service.ServiceException; -import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.frontend.widgets.AbstractView; -import org.hippoecm.frontend.widgets.TextFieldWidget; -import org.hippoecm.repository.api.Document; -import org.hippoecm.repository.api.HippoNodeType; -import org.hippoecm.repository.api.MappingException; -import org.hippoecm.repository.api.NodeNameCodec; -import org.hippoecm.repository.api.Workflow; -import org.hippoecm.repository.api.WorkflowDescriptor; -import org.hippoecm.repository.api.WorkflowException; -import org.hippoecm.repository.api.WorkflowManager; -import org.hippoecm.repository.standardworkflow.EditableWorkflow; -import org.hippoecm.repository.standardworkflow.FolderWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public abstract class AbstractFolderWorkflowPlugin extends CompatibilityWorkflowPlugin { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - private static final long serialVersionUID = 1L; - - transient Logger log = LoggerFactory.getLogger(AbstractFolderWorkflowPlugin.class); - - protected static final String WORKFLOW_ACTION_LINK_ID = "workflow-action-dialog-link"; - protected static final String DIALOG_LINKS_COMPONENT_ID = "items"; - - List staticTemplates; - LinkedList templates; - - private Label folderName; - - public AbstractFolderWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); - templates = new LinkedList(); - add(folderName = new Label("foldername")); - add(createDialogLinksComponent()); - } - - /** - * Create the component that acts as a launcher for the workflow-action-components. - * @return new component that list the workflow-action-components - */ - protected Component createDialogLinksComponent() { - return new AbstractView(DIALOG_LINKS_COMPONENT_ID, getTemplateProvider()) { - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(Item item) { - final FolderWorkflowActionComponent wac = (FolderWorkflowActionComponent) item.getModel().getObject(); - item.add(createDialogActionComponent(wac)); - } - }; - } - - /** - * Create a new component that will trigger - * @param component - * @return - */ - protected Component createDialogActionComponent(FolderWorkflowActionComponent component) { - DialogLink link = new DialogLink(component.getId(), component.getLabel(), component.getAction()); - if (component.getIcon() != null) { - link.add(new AttributeAppender("class", new Model(component.getIcon()), " ")); - } - link.setEnabled(component.getAction().isEnabled()); - return link; - } - - protected void addWorkflowAction(IModel label, String icon, Set prototypes, DialogAction action) { - getStaticTemplates().add( - new FolderWorkflowActionComponent(WORKFLOW_ACTION_LINK_ID, label, icon, prototypes, action)); - } - - private void writeObject(ObjectOutputStream out) throws IOException { - out.defaultWriteObject(); - } - - private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { - in.defaultReadObject(); - log = LoggerFactory.getLogger(AbstractFolderWorkflowPlugin.class); - } - - @Override - public void onModelChanged() { - super.onModelChanged(); - WorkflowDescriptorModel model = (WorkflowDescriptorModel) AbstractFolderWorkflowPlugin.this.getModel(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - try { - if (model.getNode() != null) { - folderName.setModel(new NodeTranslator(new JcrNodeModel(model.getNode())).getNodeName()); - } - Workflow workflow = manager.getWorkflow((WorkflowDescriptor)model.getObject()); - if (workflow instanceof FolderWorkflow) { - FolderWorkflow folderWorkflow = (FolderWorkflow) workflow; - initializeTemplates(folderWorkflow.list()); - } - } catch (MappingException ex) { - } catch (WorkflowException ex) { - } catch (RepositoryException ex) { - } catch (RemoteException ex) { - } - redraw(); - } - - @Override - public String getString(Map criteria) { - Map map = new TreeMap(criteria); - map.put("hippo:workflow", FolderWorkflow.class.getName()); - return super.getString(map); - } - - @SuppressWarnings("unchecked") - public void select(JcrNodeModel nodeModel) { - IBrowseService browser = getPluginContext().getService( - getPluginConfig().getString(IBrowseService.BROWSER_ID), IBrowseService.class); - IEditorManager editor = getPluginContext().getService( - getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); - try { - if (nodeModel.getNode() != null - && (nodeModel.getNode().isNodeType(HippoNodeType.NT_DOCUMENT) || nodeModel.getNode().isNodeType( - HippoNodeType.NT_HANDLE))) { - if (browser != null) { - browser.browse(nodeModel); - } - if (!nodeModel.getNode().isNodeType("hippostd:folder") - && !nodeModel.getNode().isNodeType("hippostd:directory")) { - if (editor != null) { - JcrNodeModel editNodeModel = nodeModel; - Node editNodeModelNode = nodeModel.getNode(); - if (editNodeModelNode.isNodeType(HippoNodeType.NT_HANDLE)) { - editNodeModelNode = editNodeModelNode.getNode(editNodeModelNode.getName()); - } - WorkflowManager workflowManager = ((UserSession) Session.get()).getWorkflowManager(); - Workflow workflow = workflowManager.getWorkflow("editing", editNodeModelNode); - try { - if (workflow instanceof EditableWorkflow) { - EditableWorkflow editableWorkflow = (EditableWorkflow) workflow; - Document editableDocument = editableWorkflow.obtainEditableInstance(); - if (editableDocument != null) { - ((UserSession) Session.get()).getJcrSession().refresh(true); - editNodeModel = new JcrNodeModel(((UserSession) Session.get()).getJcrSession() - .getNodeByUUID(editableDocument.getIdentity())); - } else { - editNodeModel = null; - } - } - if (editNodeModel != null) { - editor.openEditor(editNodeModel); - } - } catch (WorkflowException ex) { - log.error("Cannot auto-edit document", ex); - } catch (RemoteException ex) { - log.error("Cannot auto-edit document", ex); - } catch (RepositoryException ex) { - log.error("Cannot auto-edit document", ex); - } catch (ServiceException ex) { - log.error("Cannot auto-edit document", ex); - } - } - } - } - } catch (RepositoryException ex) { - log.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); - } - } - - private void initializeTemplates(Map> list) { - templates.clear(); - if (list != null && list.size() > 0) { - for (Entry> entry : list.entrySet()) { - templates.add(createWorkflowActionComponent(entry.getKey(), entry.getValue())); - } - } - if (staticTemplates != null && staticTemplates.size() > 0) { - for (FolderWorkflowActionComponent c : staticTemplates) { - templates.add(c); - } - } - } - - private List getStaticTemplates() { - if (staticTemplates == null) { - staticTemplates = new LinkedList(); - } - return staticTemplates; - } - - protected IDataProvider getTemplateProvider() { - return new IDataProvider() { - private static final long serialVersionUID = 1L; - - public IModel model(Object object) { - return new Model((FolderWorkflowActionComponent) object); - } - - public int size() { - return templates.size(); - } - - public Iterator iterator(int skip, int count) { - return templates.iterator(); - } - - public void detach() { - } - }; - } - - protected FolderWorkflowActionComponent createWorkflowActionComponent(final String category, - final Set prototypes) { - final IModel title = new StringResourceModel("add-category", (Component) this, null, - new Object[] { new StringResourceModel(category, this, null) }); - - DialogAction action = new DialogAction(new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - if (category.contains("New Smart Folder")) // FIXME very bad check on name - return new FolderWorkflowExtendedDialog(title, category, prototypes); - else - return new FolderWorkflowDialog(title, category, prototypes); - } - }, getDialogService()); - - // FIXME: proper procedure to get an icon - String icon = null; - if (category.toLowerCase().contains("folder")) { - icon = "addfolder_ico"; - } else if (category.toLowerCase().contains("document")) { - icon = "adddocument_ico"; - } else { - icon = "addextended_ico"; - } - return new FolderWorkflowActionComponent(WORKFLOW_ACTION_LINK_ID, - new StringResourceModel(category, this, null), icon, prototypes, action); - } - - public class FolderWorkflowActionComponent extends WorkflowActionComponent { - private static final long serialVersionUID = 1L; - - private Set prototypes; - - public FolderWorkflowActionComponent(String id, IModel label, String icon, Set prototypes, - DialogAction action) { - super(id, label, icon, action); - this.prototypes = prototypes != null ? prototypes : Collections.EMPTY_SET; - } - - public Set getPrototypes() { - return prototypes; - } - } - -public class FolderWorkflowDialog extends CompatibilityWorkflowPlugin.Dialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private String category; - private Set prototypes; - private String prototype; - private String name; - private IModel title; - - public FolderWorkflowDialog(IModel title, String category, Set prototypes) { - super(); - this.title = title; - this.category = category; - this.prototypes = prototypes; - - TextField text = new TextField("name", new PropertyModel(this, "name")); - text.setRequired(true); - add(text); - - Label typelabel = new Label("typelabel", new StringResourceModel("document-type", this, null)); - add(typelabel); - - if (prototypes.size() > 1) { - - final List prototypesList = new LinkedList(prototypes); - DropDownChoice folderChoice; - add(folderChoice = new DropDownChoice("prototype", new PropertyModel(this, "prototype"), prototypesList, - new TypeChoiceRenderer(this))); - folderChoice.setNullValid(false); - folderChoice.setRequired(true); - - // while not a prototype chosen, disable ok button - Component notypes; - add(notypes = new EmptyPanel("notypes")); - notypes.setVisible(false); - - } else if (prototypes.size() == 1) { - Component component; - add(component = new EmptyPanel("prototype")); - component.setVisible(false); - prototype = prototypes.iterator().next(); - Component notypes; - add(notypes = new EmptyPanel("notypes")); - notypes.setVisible(false); - typelabel.setVisible(false); - } else { - // if the folderWorkflowPlugin.templates.get(category).size() = 0 you cannot add this - // category currently. - Component component; - add(component = new EmptyPanel("prototype")); - component.setVisible(false); - prototype = null; - add(new Label("notypes", "There are no types available for : [" + category - + "] First create document types please.")); - text.setVisible(false); - typelabel.setVisible(false); - } - } - - public IModel getTitle() { - return title; - } - - @Override - protected String execute() { - try { - FolderWorkflow workflow = (FolderWorkflow) getWorkflow(); - if (prototype == null) { - throw new IllegalArgumentException("You need to select a type"); - } - if (name == null || "".equals(name)) { - throw new IllegalArgumentException("You need to enter a name"); - } - if (workflow != null) { - if (!prototypes.contains(prototype)) { - log.error("unknown folder type " + prototype); - return "Unknown folder type " + prototype; - } - String path = workflow.add(category, prototype, NodeNameCodec.encode(name, true)); - - ((UserSession) Session.get()).getJcrSession().refresh(true); - - JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); - select(nodeModel); - } else { - log.error("no workflow defined on model for selected node"); - } - } catch(Exception ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - return null; - } -} - -public class FolderWorkflowExtendedDialog extends CompatibilityWorkflowPlugin.Dialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private Set prototypes; - private String category; - private String prototype; - private String name; - private String docbase; - private String facet; - private String value; - private IModel title; - - public FolderWorkflowExtendedDialog(IModel title, - String category, Set prototypes) { - super(); - this.title = title; - this.category = category; - this.prototypes = prototypes; - - add(new TextFieldWidget("name", new PropertyModel(this, "name")) { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - enableButtons(); - } - }); - add(new TextFieldWidget("docbase", new PropertyModel(this, "docbase"))); - add(new TextFieldWidget("facet", new PropertyModel(this, "facet"))); - add(new TextFieldWidget("value", new PropertyModel(this, "value"))); - - if (prototypes.size() > 1) { - DropDownChoice folderChoice; - add(folderChoice = new DropDownChoice("prototype", new PropertyModel(this, "prototype"), - new LinkedList(prototypes))); - folderChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") { - private static final long serialVersionUID = 1L; - - @Override - public void onUpdate(AjaxRequestTarget target) { - enableButtons(); - } - }); - - folderChoice.setNullValid(false); - folderChoice.setRequired(true); - } else if (prototypes.size() == 1) { - Component component; - add(component = new EmptyPanel("prototype")); - component.setVisible(false); - prototype = prototypes.iterator().next(); - } else { - Component component; - add(component = new EmptyPanel("prototype")); - component.setVisible(false); - prototype = null; - } - - enableButtons(); - } - - public IModel getTitle() { - return title; - } - - private void enableButtons() { - try { - WorkflowDescriptorModel model = (WorkflowDescriptorModel) getModel(); - ok.setEnabled(model.getNode() != null && prototype != null && name != null && !"".equals(name)); - }catch(RepositoryException ex) { - } - } - - @Override - protected String execute() { - try { - FolderWorkflow workflow = (FolderWorkflow) getWorkflow(); - if (workflow != null) { - if (!prototypes.contains(prototype)) { - log.error("unknown folder type " + prototype); - return "unknown folder type " + prototype; - } - Map arguments = new TreeMap(); - arguments.put("name", NodeNameCodec.encode(name, true)); - String path = (docbase.startsWith("/") ? docbase.substring(1) : docbase); - arguments.put("docbase", ((UserSession) Session.get()).getJcrSession().getRootNode().getNode(path) - .getUUID()); - arguments.put("facet", facet); - arguments.put("value", value); - path = workflow.add(category, prototype, arguments); - - ((UserSession) Session.get()).getJcrSession().refresh(true); - - JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); - select(nodeModel); - } else { - log.error("no workflow defined on model for selected node"); - } - return null; - } catch(Exception ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - -} - -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.properties 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin.properties 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,2 +0,0 @@ -add-category: Add {0} -folder: folder \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin_nl.properties 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/AbstractFolderWorkflowPlugin_nl.properties 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,2 +0,0 @@ -add-category: Voeg {0} toe -folder: map \ No newline at end of file Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/EditmodelWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/EditmodelWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/EditmodelWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -16,23 +16,25 @@ package org.hippoecm.frontend.plugins.standardworkflow; import java.rmi.RemoteException; + import javax.jcr.Node; import javax.jcr.RepositoryException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.apache.wicket.Session; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; + import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.DialogLink; -import org.hippoecm.frontend.dialog.IDialogFactory; +import org.hippoecm.frontend.dialog.IDialogService.Dialog; import org.hippoecm.frontend.model.JcrItemModel; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.service.IEditor; import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.service.IRenderService; @@ -42,25 +44,19 @@ import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.standardworkflow.EditmodelWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class EditmodelWorkflowPlugin extends CompatibilityWorkflowPlugin { + @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; - private static final long serialVersionUID = 1L; - private static final Logger log = LoggerFactory.getLogger(EditmodelWorkflowPlugin.class); public EditmodelWorkflowPlugin(final IPluginContext context, final IPluginConfig config) { super(context, config); - - addWorkflowAction("editModel-action", new StringResourceModel("edit", this, null), new WorkflowAction() { - private static final long serialVersionUID = 1L; - + add(new WorkflowAction("edit", new StringResourceModel("edit", this, null)) { @Override - public void execute(Workflow workflow) throws Exception { + public String execute(Workflow workflow) throws Exception { EditmodelWorkflow emWorkflow = (EditmodelWorkflow) workflow; if (emWorkflow != null) { String path = emWorkflow.edit(); @@ -86,88 +82,72 @@ } else { log.error("no workflow defined on model for selected node"); } + return null; } }); - add(new DialogLink("copyModelRequest-dialog", new StringResourceModel("copy", this, null), - new IDialogFactory() { - private static final long serialVersionUID = 1L; + add(new WorkflowAction("copy", new StringResourceModel("copy", this, null)) { + public String name; + @Override + protected Dialog createRequestDialog() { + return new CopyModelDialog(this); + } + @Override + protected String execute(Workflow wf) { + try { + EditmodelWorkflow workflow = (EditmodelWorkflow) wf; + if (workflow != null) { + String path = workflow.copy(name); + ((UserSession) Session.get()).getJcrSession().refresh(true); - public AbstractDialog createDialog() { - return new CopyModelDialog(); + JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); + if (path != null) { + IPluginContext context = EditmodelWorkflowPlugin.this.getPluginContext(); + IPluginConfig config = EditmodelWorkflowPlugin.this.getPluginConfig(); + + IEditorManager editService = context.getService(config.getString(IEditorManager.EDITOR_ID), + IEditorManager.class); + IEditor editor = editService.openEditor(nodeModel); + IRenderService renderer = context.getService(context.getReference(editor).getServiceId(), + IRenderService.class); + if (renderer != null) { + renderer.focus(null); + } + } else { + log.error("no model found to edit"); + } + } else { + log.error("no workflow defined on model for selected node"); } - }, getDialogService())); + } catch (WorkflowException ex) { + return ex.getClass().getName() + ": " + ex.getMessage(); + } catch (ServiceException ex) { + return ex.getClass().getName() + ": " + ex.getMessage(); + } catch (RemoteException ex) { + return ex.getClass().getName() + ": " + ex.getMessage(); + } catch (RepositoryException ex) { + return ex.getClass().getName() + ": " + ex.getMessage(); + } + return null; + } + }); } - -public class CopyModelDialog extends CompatibilityWorkflowPlugin.Dialog { - private static final long serialVersionUID = 1L; - private String name; - - public CopyModelDialog() { - super(); - - WorkflowDescriptorModel wflModel = (WorkflowDescriptorModel) EditmodelWorkflowPlugin.this.getModel(); - try { - if (wflModel.getNode() == null) { + public class CopyModelDialog extends CompatibilityWorkflowPlugin.WorkflowAction.WorkflowDialog { + public CopyModelDialog(CompatibilityWorkflowPlugin.WorkflowAction action) { + action.super(); + WorkflowDescriptorModel workflowModel = (WorkflowDescriptorModel) EditmodelWorkflowPlugin.this.getModel(); ok.setEnabled(false); - } - } catch(RepositoryException ex) { - log.error(ex.getMessage(), ex); - ok.setEnabled(false); - } - - try { - name = wflModel.getNode().getName(); - } catch (RepositoryException ex) { - log.error(ex.getMessage()); - } - - add(new TextFieldWidget("name", new PropertyModel(this, "name"))); - } - - @Override - protected String execute() { - try { - EditmodelWorkflow workflow = (EditmodelWorkflow) getWorkflow(); - if (workflow != null) { - String path = workflow.copy(name); - ((UserSession) Session.get()).getJcrSession().refresh(true); - - JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); - if (path != null) { - IPluginContext context = EditmodelWorkflowPlugin.this.getPluginContext(); - IPluginConfig config = EditmodelWorkflowPlugin.this.getPluginConfig(); - - IEditorManager editService = context.getService(config.getString(IEditorManager.EDITOR_ID), - IEditorManager.class); - IEditor editor = editService.openEditor(nodeModel); - IRenderService renderer = context.getService(context.getReference(editor).getServiceId(), - IRenderService.class); - if (renderer != null) { - renderer.focus(null); - } - } else { - log.error("no model found to edit"); + PropertyModel model = new PropertyModel(action, "name"); + try { + model.setObject(workflowModel.getNode().getName()); + } catch (RepositoryException ex) { + log.error(ex.getMessage()); } - } else { - log.error("no workflow defined on model for selected node"); + add(new TextFieldWidget("name", model)); } - } catch(WorkflowException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(ServiceException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RemoteException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RepositoryException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); + public IModel getTitle() { + return new StringResourceModel("copy-model", this, null); } - return null; } - - public IModel getTitle() { - return new StringResourceModel("copy-model", this, null); - } - } -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FixedFolderWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FixedFolderWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FixedFolderWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,38 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow; - -import org.apache.wicket.Component; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class FixedFolderWorkflowPlugin extends AbstractFolderWorkflowPlugin { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - private static final long serialVersionUID = 1L; - transient Logger log = LoggerFactory.getLogger(FixedFolderWorkflowPlugin.class); - - public FixedFolderWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); - } - - @Override - protected Component createDialogLinksComponent() { - return new WorkflowActionComponentDropDownChoice(DIALOG_LINKS_COMPONENT_ID, templates); - } -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowDialog.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowDialog.html 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowDialog.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - -
    Name - -
    - - -
      - -
    -
    -
    - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.html 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,24 +0,0 @@ - - - -
    -
    - Document base:
    - Facet:
    - Value:
    -
    - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.properties 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog.properties 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,2 +0,0 @@ -add-category: Add {0} -document-type: Document Type Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog_nl.properties 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowExtendedDialog_nl.properties 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,2 +0,0 @@ -add-category: Voeg {0} toe -document-type: Document Type Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.html (rev 0) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -0,0 +1,25 @@ + + + +
    [INFO]
    +
    [DELETE]
    +
    [DELETE]
    +
      +
    • [NEW]
    • +
    +
    + Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,5 +1,5 @@ /* - * Copyright 2008 Hippo. + * Copyright 2009 Hippo. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,108 +15,284 @@ */ package org.hippoecm.frontend.plugins.standardworkflow; +import java.rmi.RemoteException; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + import javax.jcr.Node; import javax.jcr.RepositoryException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.apache.wicket.Component; +import org.apache.wicket.ResourceReference; import org.apache.wicket.Session; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.DropDownChoice; +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.markup.html.panel.EmptyPanel; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.data.ListDataProvider; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; + import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin.WorkflowAction; +import org.hippoecm.addon.workflow.StdWorkflow; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.DialogAction; -import org.hippoecm.frontend.dialog.IDialogFactory; +import org.hippoecm.frontend.dialog.IDialogService.Dialog; +import org.hippoecm.frontend.i18n.model.NodeTranslator; +import org.hippoecm.frontend.i18n.types.TypeChoiceRenderer; +import org.hippoecm.frontend.model.JcrItemModel; +import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; +import org.hippoecm.frontend.service.IBrowseService; +import org.hippoecm.frontend.service.IEditorManager; +import org.hippoecm.frontend.service.ServiceException; import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.frontend.widgets.AbstractView; +import org.hippoecm.repository.api.Document; +import org.hippoecm.repository.api.HippoNodeType; +import org.hippoecm.repository.api.HippoWorkspace; import org.hippoecm.repository.api.NodeNameCodec; +import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowDescriptor; +import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; +import org.hippoecm.repository.standardworkflow.EditableWorkflow; import org.hippoecm.repository.standardworkflow.FolderWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -public class FolderWorkflowPlugin extends AbstractFolderWorkflowPlugin { +public class FolderWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; - transient Logger log = LoggerFactory.getLogger(FolderWorkflowPlugin.class); + private static Logger log = LoggerFactory.getLogger(FolderWorkflowPlugin.class); + private Label folderName; + public FolderWorkflowPlugin(IPluginContext context, IPluginConfig config) { super(context, config); + add(folderName = new Label("info")); + add(new Label("new")); + add(new WorkflowAction("delete", "delete", new ResourceReference(getClass(), "delete-16.png")) { + @Override + public String execute(WorkflowDescriptorModel model) { + try { + // FIXME: this assumes that folders are always embedded in other folders + // and there is some logic here to look up the parent. The real solution is + // in the visual component to merge two workflows. + Node node = model.getNode(); + WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); + FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow("embedded", node.getParent()); + workflow.delete(node.getName() + "[" + node.getIndex() + "]"); + return null; + } catch (Exception ex) { + return ex.getClass().getName() + ": " + ex.getMessage(); + } + } + @Override + public StringResourceModel getTitle() { + StringResourceModel text; + try { + Object[] params = new Object[]{((WorkflowDescriptorModel) FolderWorkflowPlugin.this.getModel()).getNode().getName()}; + text = new StringResourceModel("delete-message-extended", this, null, params); + } catch (RepositoryException ex) { + text = new StringResourceModel("delete-message", this, null); + } + return text; + } + }); + add(new WorkflowAction("rename", "rename", new ResourceReference(getClass(), "rename-16.png"))); + onModelChanged(); + } - DialogAction deleteAction = new DialogAction(new IDialogFactory() { - private static final long serialVersionUID = 1L; + @Override + public void onModelChanged() { + try { + IModel model = getModel(); + if (model instanceof WorkflowDescriptorModel) { + WorkflowDescriptorModel descriptorModel = (WorkflowDescriptorModel) getModel(); + Node folderNode = descriptorModel.getNode(); + if (folderNode != null) { + IModel folderNameModel = new NodeTranslator(new JcrNodeModel(folderNode)).getNodeName(); + folderName.setModel(folderNameModel); + } + List list = new LinkedList(); + WorkflowDescriptor descriptor = (WorkflowDescriptor) model.getObject(); + WorkflowManager manager = ((UserSession) org.apache.wicket.Session.get()).getWorkflowManager(); + Workflow workflow = manager.getWorkflow(descriptor); + FolderWorkflow folderWorkflow = (FolderWorkflow) workflow; + final Map> prototypes = (Map>) folderWorkflow.hints().get("prototypes"); + for (final String category : prototypes.keySet()) { + list.add(new WorkflowAction("id", category, new ResourceReference(getClass(), "document-new-16.png")) { + public String prototype; + public String name; + @Override + protected Dialog createRequestDialog() { + return new FolderWorkflowDialog(this, new Model(category), category, prototypes.get(category)); + } + @Override + protected String execute(Workflow wf) throws Exception { + FolderWorkflow workflow = (FolderWorkflow) wf; + if (prototype == null) { + throw new IllegalArgumentException("You need to select a type"); + } + if (name == null || "".equals(name)) { + throw new IllegalArgumentException("You need to enter a name"); + } + if (workflow != null) { + if (!prototypes.get(category).contains(prototype)) { + log.error("unknown folder type " + prototype); + return "Unknown folder type " + prototype; + } + String path = workflow.add(category, prototype, NodeNameCodec.encode(name, true)); - public AbstractDialog createDialog() { - return new CompatibilityWorkflowPlugin.Dialog() { + ((UserSession) Session.get()).getJcrSession().refresh(true); + + JcrNodeModel nodeModel = new JcrNodeModel(new JcrItemModel(path)); + select(nodeModel); + } else { + log.error("no workflow defined on model for selected node"); + } + return null; + } + }); + } + + AbstractView add; + replace(add = new AbstractView("new", new ListDataProvider(list)) { + @Override - protected String execute() { - try { - // FIXME: this assumes that folders are always embedded in other folders - // and there is some logic here to look up the parent. The real solution is - // in the visual component to merge two workflows. - WorkflowDescriptorModel model = (WorkflowDescriptorModel) FolderWorkflowPlugin.this.getModel(); - Node node = model.getNode(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow("embedded", node.getParent()); - workflow.delete(node.getName() + "[" + node.getIndex() + "]"); - return null; - } catch(Exception ex) { - return ex.getClass().getName()+": "+ex.getMessage(); + protected void populateItem(Item item) { + item.add((StdWorkflow) item.getModelObject()); + } + }); + add.populate(); + } + } catch (RepositoryException ex) { + log.error(ex.getClass().getName() + ": " + ex.getMessage()); + } catch (WorkflowException ex) { + log.error(ex.getClass().getName() + ": " + ex.getMessage()); + } catch (RemoteException ex) { + log.error(ex.getClass().getName() + ": " + ex.getMessage()); + } + } + + @SuppressWarnings("unchecked") + public void select(JcrNodeModel nodeModel) { + IBrowseService browser = getPluginContext().getService(getPluginConfig().getString(IBrowseService.BROWSER_ID), IBrowseService.class); + IEditorManager editor = getPluginContext().getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); + try { + if (nodeModel.getNode() != null + && (nodeModel.getNode().isNodeType(HippoNodeType.NT_DOCUMENT) || nodeModel.getNode().isNodeType( + HippoNodeType.NT_HANDLE))) { + if (browser != null) { + browser.browse(nodeModel); + } + if (!nodeModel.getNode().isNodeType("hippostd:folder") && !nodeModel.getNode().isNodeType("hippostd:directory")) { + if (editor != null) { + JcrNodeModel editNodeModel = nodeModel; + Node editNodeModelNode = nodeModel.getNode(); + if (editNodeModelNode.isNodeType(HippoNodeType.NT_HANDLE)) { + editNodeModelNode = editNodeModelNode.getNode(editNodeModelNode.getName()); } - } - - public IModel getTitle() { - StringResourceModel text; + javax.jcr.Session session = ((UserSession)org.apache.wicket.Session.get()).getJcrSession(); + WorkflowManager workflowManager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); + Workflow workflow = workflowManager.getWorkflow("editing", editNodeModelNode); try { - Object[] params = new Object[] { ((WorkflowDescriptorModel) FolderWorkflowPlugin.this.getModel()) - .getNode().getName() }; - text = new StringResourceModel("delete-message-extended", this, null, params); + if (workflow instanceof EditableWorkflow) { + EditableWorkflow editableWorkflow = (EditableWorkflow) workflow; + Document editableDocument = editableWorkflow.obtainEditableInstance(); + if (editableDocument != null) { + session.refresh(true); + editNodeModel = new JcrNodeModel(session.getNodeByUUID(editableDocument.getIdentity())); + } else { + editNodeModel = null; + } + } + if (editNodeModel != null) { + editor.openEditor(editNodeModel); + } + } catch (WorkflowException ex) { + log.error("Cannot auto-edit document", ex); + } catch (RemoteException ex) { + log.error("Cannot auto-edit document", ex); } catch (RepositoryException ex) { - text = new StringResourceModel("delete-message", this, null); + log.error("Cannot auto-edit document", ex); + } catch (ServiceException ex) { + log.error("Cannot auto-edit document", ex); } - return text; } - }; + } } - }, getDialogService()); - addWorkflowAction(new StringResourceModel("delete-title", this, null), "editmodel_ico", null, deleteAction); + } catch (RepositoryException ex) { + log.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); + } + } - final StringResourceModel renameTitle = new StringResourceModel("rename-title", this, null); - final StringResourceModel renameText = new StringResourceModel("rename-text", this, null); - DialogAction renameAction = new DialogAction(new IDialogFactory() { - private static final long serialVersionUID = 1L; + public class FolderWorkflowDialog extends WorkflowAction.WorkflowDialog { + private String category; + private Set prototypes; + private IModel title; - public AbstractDialog createDialog() { - return new NameDialog(renameTitle, renameText, "") { - private static final long serialVersionUID = 1L; + public FolderWorkflowDialog(WorkflowAction action, IModel title, String category, Set prototypes) { + action.super(); + this.title = title; + this.category = category; + this.prototypes = prototypes; - @Override - protected String execute() { - try { - // FIXME: this assumes that folders are always embedded in other folders - // and there is some logic here to look up the parent. The real solution is - // in the visual component to merge two workflows. - WorkflowDescriptorModel model = (WorkflowDescriptorModel) FolderWorkflowPlugin.this.getModel(); - Node node = model.getNode(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow("embedded", node.getParent()); - workflow.rename(node.getName() + "[" + node.getIndex() + "]", NodeNameCodec.encode(name, true)); - return null; - } catch(Exception ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - }; + PropertyModel nameModel = new PropertyModel(action, "name"); + PropertyModel prototypeModel = new PropertyModel(this, "prototype"); + + TextField text = new TextField("name", nameModel); + text.setRequired(true); + add(text); + + Label typelabel = new Label("typelabel", new StringResourceModel("document-type", action, null)); + add(typelabel); + + if (prototypes.size() > 1) { + final List prototypesList = new LinkedList(prototypes); + DropDownChoice folderChoice; + add(folderChoice = new DropDownChoice("prototype", prototypeModel, prototypesList, new TypeChoiceRenderer(this))); + folderChoice.setNullValid(false); + folderChoice.setRequired(true); + // while not a prototype chosen, disable ok button + Component notypes; + add(notypes = new EmptyPanel("notypes")); + notypes.setVisible(false); + } else if (prototypes.size() == 1) { + Component component; + add(component = new EmptyPanel("prototype")); + component.setVisible(false); + prototypeModel.setObject(prototypes.iterator().next()); + Component notypes; + add(notypes = new EmptyPanel("notypes")); + notypes.setVisible(false); + typelabel.setVisible(false); + } else { + // if the folderWorkflowPlugin.templates.get(category).size() = 0 you cannot add this + // category currently. + Component component; + add(component = new EmptyPanel("prototype")); + component.setVisible(false); + prototypeModel.setObject(null); + add(new Label("notypes", "There are no types available for : [" + category + "] First create document types please.")); + text.setVisible(false); + typelabel.setVisible(false); } - }, getDialogService()); - addWorkflowAction(renameTitle, "editmodel_ico", null, renameAction); - } + } - @Override - protected Component createDialogLinksComponent() { - return new WorkflowActionComponentDropDownChoice(DIALOG_LINKS_COMPONENT_ID, templates); + public IModel getTitle() { + return title; + } } } Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,5 +0,0 @@ -delete-message: Weet u zeker dat u deze map en zijn inhoud permanent wilt verwijderen? -delete-message-extended: Weet u zeker dat u map {0} en zijn inhoud permanent wilt verwijderen? -delete-title: Verwijder map -rename-title: Hernoem map -rename-text: Hernoem map tot: Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NamespaceWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NamespaceWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NamespaceWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,20 +15,17 @@ */ package org.hippoecm.frontend.plugins.standardworkflow; -import java.util.LinkedList; -import java.util.List; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.DialogAction; -import org.hippoecm.frontend.dialog.IDialogFactory; +import org.hippoecm.frontend.dialog.IDialogService.Dialog; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.widgets.TextFieldWidget; import org.hippoecm.repository.api.NodeNameCodec; +import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.standardworkflow.TemplateEditorWorkflow; public class NamespaceWorkflowPlugin extends CompatibilityWorkflowPlugin { @@ -39,52 +36,30 @@ public NamespaceWorkflowPlugin(IPluginContext context, IPluginConfig config) { super(context, config); - - List actions = new LinkedList(); - - DialogAction action = new DialogAction(new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - return new NamespaceDialog(); + add(new WorkflowAction("create", new StringResourceModel("create-namespace", this, null)) { + public String url; + public String prefix; + @Override + protected Dialog createRequestDialog() { + return new NamespaceDialog(this); } - }, getDialogService()); - WorkflowActionComponent choice = new WorkflowActionComponent("createNamespaceRequest-dialog", - new StringResourceModel("create-namespace", this, null), (String) null, action); - actions.add(choice); - - add(new WorkflowActionComponentDropDownChoice("actions", actions)); + @Override + protected String execute(Workflow wf) throws Exception { + TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) wf; + workflow.createNamespace(NodeNameCodec.encode(prefix, true), url); + return null; + } + }); } -public class NamespaceDialog extends CompatibilityWorkflowPlugin.Dialog { - private static final long serialVersionUID = 1L; - - private String prefix; - - private String url; - - public NamespaceDialog() { - super(); - - add(new TextFieldWidget("prefix", new PropertyModel(this, "prefix"))); - - add(new TextFieldWidget("url", new PropertyModel(this, "url"))); - } - - @Override - protected String execute() { - try { - TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) getWorkflow(); - workflow.createNamespace(NodeNameCodec.encode(prefix, true), url); - return null; - } catch(Exception ex) { - return ex.getClass().getName()+": "+ex.getMessage(); + public class NamespaceDialog extends CompatibilityWorkflowPlugin.WorkflowAction.WorkflowDialog { + public NamespaceDialog(CompatibilityWorkflowPlugin.WorkflowAction action) { + action.super( ); + add(new TextFieldWidget("prefix", new PropertyModel(action, "prefix"))); + add(new TextFieldWidget("url", new PropertyModel(action, "url"))); } + public IModel getTitle() { + return new StringResourceModel("create-namespace", this, null); + } } - - public IModel getTitle() { - return new StringResourceModel("create-namespace", this, null); - } } - -} Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NullWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NullWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/NullWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,11 +15,11 @@ */ package org.hippoecm.frontend.plugins.standardworkflow; -import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; +import org.hippoecm.frontend.service.render.RenderPlugin; -public class NullWorkflowPlugin extends CompatibilityWorkflowPlugin { +public class NullWorkflowPlugin extends RenderPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.html 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,23 +0,0 @@ - - - -
      -
    •  folder

    • -
    • -
    -
    - Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,68 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.apache.wicket.Component; -import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.DialogAction; -import org.hippoecm.frontend.dialog.IDialogFactory; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugins.standardworkflow.reorder.ReorderDialog; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class OrderableFolderWorkflowPlugin extends FolderWorkflowPlugin { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - private static final long serialVersionUID = 1L; - - private final static Logger log = LoggerFactory.getLogger(OrderableFolderWorkflowPlugin.class); - - public OrderableFolderWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); - - Node node = (Node) getModel().getObject(); - try { - DialogAction action = new DialogAction(new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - return new ReorderDialog(OrderableFolderWorkflowPlugin.this); - } - }, getDialogService()); - - if (node.getNodes().getSize() < 2) { - action.setEnabled(false); - } - - addWorkflowAction(new StringResourceModel("reorder-folder", this, null), "reorder_ico", null, action); - } catch (RepositoryException e) { - log.error(e.getMessage(), e); - } - - } - - @Override - protected Component createDialogLinksComponent() { - return new WorkflowActionComponentDropDownChoice(DIALOG_LINKS_COMPONENT_ID, templates); - } - -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.properties 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin.properties 2009-03-24 00:42:18 UTC (rev 17087) @@ -1 +0,0 @@ -reorder-folder: Reorder folder \ No newline at end of file Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin_nl.properties 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/OrderableFolderWorkflowPlugin_nl.properties 2009-03-24 00:42:18 UTC (rev 17087) @@ -1 +0,0 @@ -reorder-folder: Orden map \ No newline at end of file Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RemodelWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RemodelWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/RemodelWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,21 +15,9 @@ */ package org.hippoecm.frontend.plugins.standardworkflow; -import java.util.LinkedList; -import java.util.List; - -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.StringResourceModel; import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.DialogAction; -import org.hippoecm.frontend.dialog.IDialogFactory; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugins.standardworkflow.remodel.RemodelDialog; -import org.hippoecm.frontend.widgets.TextFieldWidget; -import org.hippoecm.repository.standardworkflow.TemplateEditorWorkflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,57 +31,5 @@ public RemodelWorkflowPlugin(IPluginContext context, IPluginConfig config) { super(context, config); - - List actions = new LinkedList(); - DialogAction action; - WorkflowActionComponent choice; - - action = new DialogAction(new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - return new RemodelDialog(RemodelWorkflowPlugin.this); - } - }, getDialogService()); - choice = new WorkflowActionComponent("remodelRequest-dialog", new StringResourceModel("update-content", this, null), (String) null, action); - actions.add(choice); - - action = new DialogAction(new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - return new CreateTypeDialog(); - } - }, getDialogService()); - choice = new WorkflowActionComponent("createTypeRequest-dialog", new StringResourceModel("create-type", this, null), (String) null, action); - actions.add(choice); - - add(new WorkflowActionComponentDropDownChoice("actions", actions)); } - -public class CreateTypeDialog extends CompatibilityWorkflowPlugin.Dialog { - private static final long serialVersionUID = 1L; - - private String name; - - public CreateTypeDialog() { - super(); - add(new TextFieldWidget("name", new PropertyModel(this, "name"))); - } - - @Override - protected String execute() { - try { - TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) getWorkflow(); - workflow.createType(name); - return null; - } catch(Exception ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - - public IModel getTitle() { - return new StringResourceModel("create-type", this, null); - } } -} Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/TemplateEditingWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -99,36 +99,24 @@ } } catch (RepositoryException ex) { log.error(ex.getMessage()); - showException(ex); } return null; } }, context.getReference(editor).getServiceId()); - addWorkflowAction("save", new StringResourceModel("save", this, null), new WorkflowAction() { - private static final long serialVersionUID = 1L; - + add(new WorkflowAction("save", new StringResourceModel("save", this, null)) { @Override - public void execute(Workflow workflow) throws Exception { + protected String execute(Workflow workflow) throws Exception { doSave(); - } - - }); - AjaxLink link = new AjaxLink("revert") { - private static final long serialVersionUID = 1L; - + return null; + }}); + add(new WorkflowAction("revert", new StringResourceModel("revert", this, null)) { @Override - public void onClick(AjaxRequestTarget target) { - try { - doRevert(); - } catch (Exception ex) { - showException(ex); - } - } - }; - link.add(new Label("revert-label", new StringResourceModel("revert", this, null))); - add(link); + protected String execute(Workflow workflow) throws Exception { + doRevert(); + return null; + }}); } void doSave() throws Exception { Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/WorkflowActionComponent.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/WorkflowActionComponent.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/WorkflowActionComponent.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,55 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow; - -import org.apache.wicket.IClusterable; -import org.apache.wicket.model.IModel; -import org.hippoecm.frontend.dialog.DialogAction; - -public class WorkflowActionComponent implements IClusterable { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private String id; - private IModel label; - private String icon; - private DialogAction action; - - public WorkflowActionComponent(String id, IModel label, String icon, DialogAction action) { - this.id = id; - this.label = label; - this.icon = icon; - this.action = action; - } - - public String getId() { - return id; - } - - public IModel getLabel() { - return label; - } - - public String getIcon() { - return icon; - } - - public DialogAction getAction() { - return action; - } -} Deleted: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/WorkflowActionComponentDropDownChoice.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/WorkflowActionComponentDropDownChoice.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/WorkflowActionComponentDropDownChoice.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,98 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.standardworkflow; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.form.IChoiceRenderer; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; - -public class WorkflowActionComponentDropDownChoice extends DropDownChoice { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - private WorkflowActionComponent selected; - - public WorkflowActionComponentDropDownChoice(String id, List items) { - super(id); - setModel(new PropertyModel(this, "selected")); - setChoices(createModel(items)); - setChoiceRenderer(createRenderer()); - - add(new OnChangeAjaxBehavior() { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - if (selected != null) { - selected.getAction().execute(); - } - } - }); - } - - private IModel createModel(final List items) { - IModel model = new IModel() { - private static final long serialVersionUID = 1L; - - public Object getObject() { - List list = new ArrayList(items.size()); - for(WorkflowActionComponent entry : items) { - if(entry.getAction().isEnabled()) { - list.add(entry); - } - } - return list; - } - - public void setObject(Object object) { - } - - public void detach() { - } - - }; - return model; - } - - private IChoiceRenderer createRenderer() { - IChoiceRenderer renderer = new IChoiceRenderer() { - private static final long serialVersionUID = 1L; - - public Object getDisplayValue(Object object) { - WorkflowActionComponent c = (WorkflowActionComponent) object; - return c.getLabel().getObject(); - } - - public String getIdValue(Object object, int index) { - return String.valueOf(index); - } - - }; - return renderer; - } - -} - - - Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/delete-16.png =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/delete-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/document-new-16.png =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/document-new-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelDialog.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/remodel/RemodelDialog.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -42,7 +42,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class RemodelDialog extends CompatibilityWorkflowPlugin.Dialog { +public class RemodelDialog extends CompatibilityWorkflowPlugin.WorkflowAction.WorkflowDialog { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -51,20 +51,20 @@ private static final Logger log = LoggerFactory.getLogger(RemodelDialog.class); private RemodelWizard wizard; - - private CompatibilityWorkflowPlugin plugin; - public RemodelDialog(CompatibilityWorkflowPlugin plugin) { - plugin . super(); - this.plugin = plugin; + WorkflowDescriptorModel model; + public RemodelDialog(CompatibilityWorkflowPlugin.WorkflowAction action, WorkflowDescriptorModel model) { + action . super(); + this.model = model; + try { - if (plugin.getModel() == null || ((WorkflowDescriptorModel) plugin.getModel()).getNode() == null) { - add(new Label("wizard")); - } else { - wizard = new RemodelWizard("wizard"); - add(wizard); - } + if (model == null || model.getNode() == null) { + add(new Label("wizard")); + } else { + wizard = new RemodelWizard("wizard"); + add(wizard); + } } catch(RepositoryException ex) { add(new Label("wizard")); } @@ -87,13 +87,11 @@ onOk(); } - @Override - protected String execute() { + protected String execute2() { try { JcrSessionModel sessionModel = ((UserSession) Session.get()).getJcrSessionModel(); - WorkflowDescriptorModel wflModel = (WorkflowDescriptorModel) plugin.getModel(); - Node node = wflModel.getNode(); + Node node = model.getNode(); String namespace = node.getName(); CndSerializer serializer = new CndSerializer(sessionModel, namespace); @@ -120,7 +118,7 @@ sessionModel.getSession().save(); WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) manager.getWorkflow((WorkflowDescriptor) wflModel.getObject()); + TemplateEditorWorkflow workflow = (TemplateEditorWorkflow) manager.getWorkflow((WorkflowDescriptor)model.getObject()); if (workflow != null) { log.info("remodelling namespace " + namespace); try { Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/rename-16.png =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/rename-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder ___________________________________________________________________ Added: svn:ignore + .ReorderDialog.java.swp Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ReorderDialog.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ReorderDialog.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/reorder/ReorderDialog.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -24,16 +24,16 @@ import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugins.standards.DocumentListFilter; import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.standardworkflow.FolderWorkflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ReorderDialog extends CompatibilityWorkflowPlugin.Dialog { +public class ReorderDialog extends CompatibilityWorkflowPlugin.WorkflowAction.WorkflowDialog { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -42,16 +42,16 @@ private static final Logger log = LoggerFactory.getLogger(ReorderDialog.class); private ReorderPanel panel; - private CompatibilityWorkflowPlugin plugin; + WorkflowDescriptorModel model; - public ReorderDialog(CompatibilityWorkflowPlugin plugin) { - plugin . super(); - this.plugin = plugin; + public ReorderDialog(CompatibilityWorkflowPlugin.WorkflowAction action, IPluginConfig pluginConfig, WorkflowDescriptorModel model) { + action . super(); + this.model = model; String name; try { - JcrNodeModel folderModel = new JcrNodeModel(((WorkflowDescriptorModel) plugin.getModel()).getNode()); - panel = new ReorderPanel("reorder-panel", folderModel, new DocumentListFilter(plugin.getPluginConfig())); + JcrNodeModel folderModel = new JcrNodeModel(model.getNode()); + panel = new ReorderPanel("reorder-panel", folderModel, new DocumentListFilter(pluginConfig)); add(panel); name = folderModel.getNode().getName(); } catch (RepositoryException e) { @@ -65,16 +65,14 @@ return new StringResourceModel("reorder", this, null); } - @Override - protected String execute() { + protected String execute2() { try { WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow((WorkflowDescriptor) plugin.getModelObject()); + FolderWorkflow workflow = (FolderWorkflow) manager.getWorkflow((WorkflowDescriptor) model.getObject()); workflow.reorder(panel.getMapping()); return null; } catch(Exception ex) { return ex.getClass().getName()+": "+ex.getMessage(); } } - } Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/workflow-16.png =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/workflow-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/embedded-workflows.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -107,7 +107,7 @@ org.hippoecm.repository.standardworkflow.FolderWorkflowImpl
    - org.hippoecm.frontend.plugins.standardworkflow.OrderableFolderWorkflowPlugin + org.hippoecm.frontend.plugins.standardworkflow.FolderWorkflowPlugin Workflow on documents in folders Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd-workflows-threepane.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -112,31 +112,6 @@ - - - frontend:workflow - - - hippostd:fixeddirectory - - - hippo:author - - - org.hippoecm.repository.standardworkflow.FolderWorkflowImpl - - - org.hippoecm.frontend.plugins.standardworkflow.FixedFolderWorkflowPlugin - - - Workflow on fixed directories - - - - hippo:types - - - frontend:workflow @@ -151,7 +126,7 @@ org.hippoecm.repository.standardworkflow.FolderWorkflowImpl - org.hippoecm.frontend.plugins.standardworkflow.OrderableFolderWorkflowPlugin + org.hippoecm.frontend.plugins.standardworkflow.FolderWorkflowPlugin Workflow on folders Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd.cnd =================================================================== --- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd.cnd 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/org/hippoecm/repository/hippostd.cnd 2009-03-24 00:42:18 UTC (rev 17087) @@ -44,8 +44,6 @@ - hippostd:foldertype (string) multiple copy + * = hippostd:folder multiple -[hippostd:fixeddirectory] > hippostd:folder orderable - [hippostd:templates] > nt:base + * Modified: hippo-ecm/trunk/addon/cms/browse/pom.xml =================================================================== --- hippo-ecm/trunk/addon/cms/browse/pom.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/cms/browse/pom.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -49,6 +49,11 @@ hippo-ecm-addon-yui 2.05.01-SNAPSHOT + + org.hippoecm + hippo-ecm-addon-workflow + 2.05.01-SNAPSHOT + Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java =================================================================== --- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -18,14 +18,20 @@ import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; +import org.apache.wicket.MarkupContainer; +import org.apache.wicket.ajax.AjaxEventBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.tree.ITreeState; +import org.hippoecm.addon.workflow.ContextWorkflowPlugin; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.model.ModelReference; import org.hippoecm.frontend.model.event.IObserver; import org.hippoecm.frontend.model.tree.CachedTreeModel; import org.hippoecm.frontend.model.tree.IJcrTreeNode; import org.hippoecm.frontend.model.tree.JcrTreeNode; +import org.hippoecm.frontend.plugin.ContextMenu; +import org.hippoecm.frontend.plugin.ContextMenuManager; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugins.standards.DocumentListFilter; @@ -35,7 +41,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class FolderTreePlugin extends RenderPlugin { +public class FolderTreePlugin extends RenderPlugin implements ContextMenuManager { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; @@ -46,7 +52,7 @@ protected JcrTreeNode rootNode; private JcrNodeModel rootModel; - public FolderTreePlugin(IPluginContext context, IPluginConfig config) { + public FolderTreePlugin(final IPluginContext context, final IPluginConfig config) { super(context, config); String startingPath = config.getString("path", "/"); @@ -64,6 +70,15 @@ private static final long serialVersionUID = 1L; @Override + protected MarkupContainer newContextContent(MarkupContainer parent, String id, final TreeNode node) { + ContextWorkflowPlugin content = new ContextWorkflowPlugin(context, config.getPluginConfig("workflow.options")); + content.bind(FolderTreePlugin.this, id); + JcrNodeModel nodeModel = ((IJcrTreeNode) node).getNodeModel(); + content.setModel(nodeModel); + return content; + } + + @Override protected void onNodeLinkClicked(AjaxRequestTarget target, TreeNode clickedNode) { IJcrTreeNode treeNodeModel = (IJcrTreeNode) clickedNode; FolderTreePlugin.this.setModel(treeNodeModel.getNodeModel()); @@ -83,6 +98,14 @@ tree.setRootLess(config.getBoolean("rootless")); + add(new AjaxEventBehavior("onclick") { + public void onEvent(AjaxRequestTarget target) { + if(activeContextMenu != null) { + activeContextMenu.collapse(target); + } + } + }); + onModelChanged(); } @@ -113,4 +136,15 @@ } } + private ContextMenu activeContextMenu; + + public void addContextMenu(ContextMenu menu) { + activeContextMenu = menu; + } + + public void collapse(ContextMenu current, AjaxRequestTarget target) { + if(activeContextMenu != null && current != activeContextMenu) { + activeContextMenu.collapse(target); + } + } } Modified: hippo-ecm/trunk/addon/cms/root/src/main/java/org/hippoecm/frontend/plugins/cms/root/RootPlugin.java =================================================================== --- hippo-ecm/trunk/addon/cms/root/src/main/java/org/hippoecm/frontend/plugins/cms/root/RootPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/cms/root/src/main/java/org/hippoecm/frontend/plugins/cms/root/RootPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -24,29 +24,15 @@ import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.widgets.Pinger; -public class RootPlugin extends RenderPlugin implements ContextMenuManager { +public class RootPlugin extends RenderPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; - private ContextMenu activeContextMenu; - public RootPlugin(IPluginContext context, IPluginConfig config) { super(context, config); add(new Pinger("pinger")); - - add(new AjaxEventBehavior("onclick") { - public void onEvent(AjaxRequestTarget target) { - if(activeContextMenu != null) { - activeContextMenu.collapse(target); - } - } - }); } - - public void addContextMenu(ContextMenu activeMenu) { - activeContextMenu = activeMenu; - } } Modified: hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml =================================================================== --- hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/defaultcontent/repository/src/main/resources/defaultcontent-data.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -16,7 +16,7 @@ --> - hippostd:fixeddirectory + hippostd:folder hippo:harddocument @@ -30,7 +30,7 @@ - hippostd:fixeddirectory + hippostd:directory hippo:harddocument @@ -391,4 +391,4 @@ nt:unstructured - \ No newline at end of file + Modified: hippo-ecm/trunk/addon/gallery/repository/src/main/java/org/hippoecm/repository/gallery/impl/GalleryWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/addon/gallery/repository/src/main/java/org/hippoecm/repository/gallery/impl/GalleryWorkflowImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/gallery/repository/src/main/java/org/hippoecm/repository/gallery/impl/GalleryWorkflowImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,11 +15,13 @@ */ package org.hippoecm.repository.gallery.impl; +import java.io.Serializable; import java.rmi.RemoteException; import java.util.Calendar; import java.util.Date; import java.util.LinkedList; import java.util.List; +import java.util.Map; import javax.jcr.Node; import javax.jcr.RepositoryException; @@ -47,6 +49,10 @@ this.rootSession = rootSession; } + public Map hints() { + return null; + } + public List getGalleryTypes() throws RemoteException, RepositoryException { List list = new LinkedList(); Value[] values = subject.getProperty("hippostd:gallerytype").getValues(); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -36,6 +36,11 @@ org.hippoecm + hippo-ecm-addon-workflow + 2.05.01-SNAPSHOT + + + org.hippoecm hippo-ecm-api 2.05.01-SNAPSHOT Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -28,7 +28,7 @@ import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.frontend.widgets.AjaxDateTimeField; -public abstract class AbstractDateDialog extends CompatibilityWorkflowPlugin.Dialog { +public abstract class AbstractDateDialog extends CompatibilityWorkflowPlugin.WorkflowAction.WorkflowDialog { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -38,8 +38,8 @@ protected Button now; - public AbstractDateDialog(CompatibilityWorkflowPlugin workflowPlugin, IModel question, Date date) { - workflowPlugin . super(); + public AbstractDateDialog(CompatibilityWorkflowPlugin.WorkflowAction action, IModel question, Date date) { + action . super(); this.date = date; add(new Label("question", question)); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicRequestWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicRequestWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicRequestWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -49,7 +49,7 @@ private boolean cancelable = true; public BasicRequestWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); + super(context, config);}/* onModelChanged(); @@ -119,4 +119,4 @@ log.info(ex.getClass().getName() + ": " + ex.getMessage()); } } -} +*/} Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -67,7 +67,7 @@ private Component locked; public BasicReviewedActionsWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); + super(context, config);}/* add(new Label("caption", caption)); @@ -314,4 +314,4 @@ log.info(ex.getClass().getName() + ": " + ex.getMessage()); } } -} +*/} Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/CancelWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/CancelWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/CancelWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -48,7 +48,7 @@ private Date schedule = null; public CancelWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); + super(context, config);}/* onModelChanged(); @@ -125,4 +125,4 @@ log.info(ex.getClass().getName() + ": " + ex.getMessage()); } } -} +*/} Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/DefaultWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -51,7 +51,7 @@ private IModel caption = new StringResourceModel("unknown", this, null); public DefaultWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); + super(context, config);}/* add(new Label("caption", caption)); @@ -131,4 +131,5 @@ log.error(ex.getMessage()); } } +*/ } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -20,7 +20,6 @@ import org.apache.wicket.model.StringResourceModel; import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; -import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.plugin.workflow.WorkflowAction; @@ -40,7 +39,7 @@ private static Logger log = LoggerFactory.getLogger(EditingDefaultWorkflowPlugin.class); public EditingDefaultWorkflowPlugin(final IPluginContext context, IPluginConfig config) { - super(context, config); + super(context, config);}/* IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditor.class); context.registerService(new IEditorFilter() { @@ -72,5 +71,5 @@ } }); } - +*/ } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -72,7 +72,7 @@ } else { log.warn("No validator id {} defined", IValidateService.VALIDATE_ID); } - +/* final IEditor editor = context.getService(config.getString("editor.id"), IEditor.class); context.registerService(new IEditorFilter() { private static final long serialVersionUID = 1L; @@ -202,17 +202,16 @@ ((UserSession) Session.get()).getJcrSession().refresh(true); IBrowseService browser = context.getService("browser.id", IBrowseService.class); - browser.browse(new JcrNodeModel(((WorkflowDescriptorModel) EditingReviewedActionsWorkflowPlugin.this - .getModel()).getNode())); + browser.browse(new JcrNodeModel(((WorkflowDescriptorModel) EditingReviewedActionsWorkflowPlugin.this.getModel()).getNode())); - IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), - IEditor.class); + IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID),IEditor.class); closing = true; editor.close(); + browser.browse(new JcrNodeModel(((WorkflowDescriptorModel)EditingReviewedActionsWorkflowPlugin.this.getModel()).getNode())); } }); } - +*/} public boolean hasError() { if (!validated) { validate(); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullRequestWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullRequestWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullRequestWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -45,7 +45,7 @@ private Date schedule = null; public FullRequestWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config); + super(context, config);}/* onModelChanged(); @@ -125,4 +125,4 @@ // unknown, maybe there are legit reasons for this, so don't emit a warning } } -} +*/} Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,5 +1,5 @@ /* - * Copyright 2008 Hippo. + * Copyright 2009 Hippo. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,43 +16,36 @@ package org.hippoecm.frontend.plugins.reviewedactions; import java.rmi.RemoteException; -import java.util.Date; import javax.jcr.Node; -import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; +import javax.jcr.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.wicket.Component; -import org.apache.wicket.Session; -import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; -import org.hippoecm.addon.workflow.WorkflowDescriptorModel; +import org.hippoecm.addon.workflow.StdWorkflow; import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.IDialogFactory; -import org.hippoecm.frontend.i18n.model.NodeTranslator; -import org.hippoecm.frontend.i18n.types.TypeTranslator; +import org.hippoecm.frontend.dialog.IDialogService; import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.model.nodetypes.JcrNodeTypeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.Document; -import org.hippoecm.repository.api.HippoNodeType; -import org.hippoecm.repository.api.NodeNameCodec; +import org.hippoecm.repository.api.HippoWorkspace; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.reviewedactions.FullReviewedActionsWorkflow; +import org.hippoecm.repository.standardworkflow.DefaultWorkflow; public class FullReviewedActionsWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") @@ -68,9 +61,132 @@ private boolean pendingRequest = false; private Component locked; - public FullReviewedActionsWorkflowPlugin(IPluginContext context, IPluginConfig config) { + public FullReviewedActionsWorkflowPlugin(final IPluginContext context, IPluginConfig config) { super(context, config); + add(new StdWorkflow.Compatibility("edit", "edit", this) { + protected void execute(Workflow workflow) throws Exception { + FullReviewedActionsWorkflow wf = (FullReviewedActionsWorkflow)workflow; + Document docRef = wf.obtainEditableInstance(); + Session session = ((UserSession)getSession()).getJcrSession(); + session.refresh(false); + Node docNode = session.getNodeByUUID(docRef.getIdentity()); + IEditorManager editorMgr = getPluginContext().getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); + if (editorMgr != null) { + editorMgr.openEditor(new JcrNodeModel(docNode)); + } else { + System.err.println("No editor found to edit " + docNode.getPath()); + } + } + }); + + add(new StdWorkflow("delete", "delete") { + protected void invoke() { + try { + WorkflowDescriptor descriptor = (WorkflowDescriptor) FullReviewedActionsWorkflowPlugin.this.getModelObject(); + Session session = ((UserSession) getSession()).getJcrSession(); + session.refresh(true); + session.save(); + WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); + DefaultWorkflow workflow = (DefaultWorkflow) manager.getWorkflow(descriptor); + workflow.delete(); + session.refresh(false); + } catch(WorkflowException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(RemoteException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(RepositoryException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } + } + }); + + add(new StdWorkflow("copy", "copy") { + protected void invoke() { + context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { + + public IModel getTitle() { + return new Model("Sure"); + } + }); + } + }); + + add(new StdWorkflow("move", "move") { + protected void invoke() { + context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { + + public IModel getTitle() { + return new Model("Sure"); + } + }); + } + }); + + add(new StdWorkflow("rename", "rename") { + protected void invoke() { + context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { + + public IModel getTitle() { + return new Model("Sure"); + } + }); + } + }); + + add(new StdWorkflow("publish", "publish") { + protected void invoke() { + try { + WorkflowDescriptor descriptor = (WorkflowDescriptor) FullReviewedActionsWorkflowPlugin.this.getModelObject(); + Session session = ((UserSession) getSession()).getJcrSession(); + session.refresh(true); + session.save(); + WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow(descriptor); + workflow.publish(); + session.refresh(false); + } catch(WorkflowException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(RemoteException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(RepositoryException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } + } + }); + + add(new StdWorkflow("depublish", "depublish") { + protected void invoke() { + try { + WorkflowDescriptor descriptor = (WorkflowDescriptor) FullReviewedActionsWorkflowPlugin.this.getModelObject(); + Session session = ((UserSession) getSession()).getJcrSession(); + session.refresh(true); + session.save(); + WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow(descriptor); + workflow.depublish(); + session.refresh(false); + } catch(WorkflowException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(RemoteException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } catch(RepositoryException ex) { + System.err.println(ex.getClass().getName()+": "+ex.getMessage()); + ex.printStackTrace(System.err); + } + } + }); + +}/* + add(new Label("caption", caption)); TypeTranslator translator = new TypeTranslator(new JcrNodeTypeModel("hippostd:publishableSummary")); @@ -370,4 +486,4 @@ } }); } -} +*/} Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/tabs/TabsPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -124,6 +124,12 @@ activeContextMenu = activeMenu; } + public void collapse(ContextMenu current, AjaxRequestTarget target) { + if(activeContextMenu != null && current != activeContextMenu) { + activeContextMenu.collapse(target); + } + } + @Override public void render(PluginRequestTarget target) { super.render(target); Modified: hippo-ecm/trunk/addon/workflow/pom.xml =================================================================== --- hippo-ecm/trunk/addon/workflow/pom.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/pom.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -58,12 +58,6 @@ jar - org.hippoecm - hippo-ecm-addon-reviewed-action-common - 2.05.01-SNAPSHOT - jar - - org.apache.wicket wicket 1.3.5 Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -0,0 +1,163 @@ +/* + * Copyright 2009 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.addon.workflow; + +import java.lang.reflect.InvocationTargetException; +import java.util.LinkedList; +import java.util.List; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; +import javax.jcr.Workspace; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.data.ListDataProvider; + +import org.hippoecm.frontend.model.FrontendNodeTypes; +import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.plugin.IPlugin; +import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.plugin.config.IPluginConfig; +import org.hippoecm.frontend.service.IRenderService; +import org.hippoecm.frontend.service.render.RenderPlugin; +import org.hippoecm.frontend.widgets.AbstractView; +import org.hippoecm.repository.api.HippoWorkspace; +import org.hippoecm.repository.api.WorkflowDescriptor; +import org.hippoecm.repository.api.WorkflowManager; + +public abstract class AbstractWorkflowPlugin extends RenderPlugin { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + static final Logger log = LoggerFactory.getLogger(AbstractWorkflowPlugin.class); + + public static final String CATEGORIES = "workflow.categories"; + + private String[] categories; + protected AbstractView view; + + public AbstractWorkflowPlugin(IPluginContext context, IPluginConfig config) { + super(context, config); + if (config.get(CATEGORIES) != null) { + categories = config.getStringArray(CATEGORIES); + if (log.isDebugEnabled()) { + StringBuffer sb = new StringBuffer(); + sb.append("workflow showing categories"); + for (String category : categories) + sb.append(" " + category); + log.debug(new String(sb)); + } + } else { + log.warn("No categories ({}) defined", CATEGORIES); + } + } + + MenuHierarchy buildMenu() { + final MenuHierarchy menu = new MenuHierarchy(); + List list = new LinkedList(); + if (getModel() instanceof JcrNodeModel) { + Node documentNode = ((JcrNodeModel) getModel()).getNode(); + if (documentNode != null) { + try { + Workspace workspace = documentNode.getSession().getWorkspace(); + if (workspace instanceof HippoWorkspace) { + WorkflowManager workflowMgr = ((HippoWorkspace) workspace).getWorkflowManager(); + for (final String category : categories) { + try { + final WorkflowDescriptor descriptor = workflowMgr.getWorkflowDescriptor(category, documentNode); + if (descriptor != null) { + String pluginRenderer = descriptor.getAttribute(FrontendNodeTypes.WORKFLOW_RENDERER); + Panel plugin = null; + WorkflowDescriptorModel pluginModel = new WorkflowDescriptorModel(descriptor, category, documentNode); + if (pluginRenderer == null || pluginRenderer.trim().equals("")) { + plugin = new StdWorkflowPlugin("item", pluginModel); + } else { + Class pluginClass = Class.forName(pluginRenderer); + if(IPlugin.class.isAssignableFrom(pluginClass)) { + plugin = (Panel) pluginClass.getConstructor(new Class[]{IPluginContext.class, IPluginConfig.class}).newInstance(new Object[]{getPluginContext(), getPluginConfig().getPluginConfig("workflow.options")}); + if(plugin instanceof IRenderService) { + ((IRenderService)plugin).bind(null, "id"); + } + plugin.setModel(pluginModel); + } else if(Panel.class.isAssignableFrom(pluginClass)) { + plugin = (Panel) pluginClass.getConstructor(new Class[]{String.class, WorkflowDescriptorModel.class}).newInstance(new Object[]{"item", pluginModel}); + plugin.setModel(pluginModel); + } else { + plugin = new Panel("item"); + } + } + if (plugin != null) { + plugin.visitChildren(new IVisitor() { + public Object component(Component component) { + try { + if (component instanceof ActionDescription) { + menu.put(new String[] {category, descriptor.getAttribute(FrontendNodeTypes.WORKFLOW_RENDERER), ((ActionDescription)component).getId()}, (ActionDescription)component); + } + } catch (RepositoryException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + } + return IVisitor.CONTINUE_TRAVERSAL; + } + }); + plugin.setVisible(false); + list.add(plugin); + } + } + } catch (ClassNotFoundException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + } catch (NoSuchMethodException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + } catch (InstantiationException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + } catch (IllegalAccessException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + } catch (InvocationTargetException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + } + } + } + } catch (RepositoryException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + } + } + } + + addOrReplace(view = new AbstractView("view", new ListDataProvider(list)) { + @Override + protected void populateItem(Item item) { + item.add((Panel) item.getModelObject()); + } + }); + view.populate(); + view.setVisible(false); + + return menu; + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,21 +15,16 @@ */ package org.hippoecm.addon.workflow; -import org.hippoecm.frontend.plugin.workflow.*; -import java.io.Serializable; +import java.rmi.RemoteException; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; -import javax.jcr.Node; import javax.jcr.RepositoryException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.wicket.Component; -import org.apache.wicket.Session; +import org.apache.wicket.ResourceReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.markup.html.basic.Label; @@ -37,15 +32,16 @@ import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.ResourceModel; +import org.apache.wicket.model.StringResourceModel; import org.hippoecm.frontend.IStringResourceProvider; import org.hippoecm.frontend.PluginRequestTarget; import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.DialogLink; import org.hippoecm.frontend.dialog.ExceptionDialog; -import org.hippoecm.frontend.dialog.IDialogFactory; import org.hippoecm.frontend.dialog.IDialogService; +import org.hippoecm.frontend.dialog.IDialogService.Dialog; import org.hippoecm.frontend.i18n.SearchingTranslatorPlugin; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.model.ModelReference; @@ -57,15 +53,13 @@ import org.hippoecm.frontend.plugin.config.IPluginConfigService; import org.hippoecm.frontend.service.IRenderService; import org.hippoecm.frontend.service.ITranslateService; -import org.hippoecm.frontend.service.IValidateService; import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.frontend.widgets.AjaxDateTimeField; import org.hippoecm.frontend.widgets.TextFieldWidget; -import org.hippoecm.repository.api.HippoNodeType; -import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; +import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; public abstract class CompatibilityWorkflowPlugin extends RenderPlugin implements IActivator { @@ -76,27 +70,8 @@ private static final Logger log = LoggerFactory.getLogger(CompatibilityWorkflowPlugin.class); - protected interface Visibility extends Serializable { - boolean isVisible(); - } - - static class Action implements Serializable { - private static final long serialVersionUID = 1L; - - Component component; - Visibility visible; - - Action(Component comp, Visibility vis) { - component = comp; - visible = vis; - } - } - - private Map actions; - - public CompatibilityWorkflowPlugin(IPluginContext context, IPluginConfig config) { + protected CompatibilityWorkflowPlugin(IPluginContext context, IPluginConfig config) { super(context, config); - actions = new HashMap(); } public void start() { @@ -106,311 +81,247 @@ public void stop() { } - @Override - public IPluginContext getPluginContext() { - return super.getPluginContext(); - } + public class WorkflowAction extends StdWorkflow { + ResourceReference iconModel; - @Override - public IPluginConfig getPluginConfig() { - return super.getPluginConfig(); - } + public WorkflowAction(String id, String name, ResourceReference iconModel) { + super(id, name); + } - protected void addWorkflowDialog(final String dialogName, final IModel dialogLink, final IModel dialogTitle, - final IModel text, final Visibility visible, final WorkflowAction action) { - StdWorkflow link = new StdWorkflow.Compatibility(dialogName, (String)dialogLink.getObject(), this) { - @Override - protected void execute(Workflow wf) throws Exception { - CompatibilityWorkflowPlugin.this.getPluginContext().getService(IDialogService.class.getName(), IDialogService.class).show(new Dialog() { - protected String execute() { - return CompatibilityWorkflowPlugin.this.execute(action, false); - } + public WorkflowAction(String id, StringResourceModel name) { + super(id, (String) name.getObject()); + } - public IModel getTitle() { - return dialogTitle; - } - }); - }}; - add(link); - actions.put(dialogName, new Action(link, visible)); + @Override + protected ResourceReference getIcon() { + if (iconModel != null) { + return iconModel; + } else { + return super.getIcon(); + } + } - updateActions(); - } + protected Dialog createRequestDialog() { + return null; + } - protected void addWorkflowDialog(final String dialogName, final IModel dialogLink, final Visibility visible, - IDialogFactory dialogFactory) { - DialogLink link = new DialogLink(dialogName, dialogLink, dialogFactory, getDialogService()); - add(link); - actions.put(dialogName, new Action(link, visible)); - updateActions(); - } + protected Dialog createResponseDialog(String message) { + return new ExceptionDialog(message); + } - protected void addWorkflowAction(final String linkName, IModel linkText, Visibility visible, - final WorkflowAction action) { - StdWorkflow link = new StdWorkflow.Compatibility(linkName, (String) linkText.getObject(), this) { - - @Override - protected void execute(Workflow wf) throws Exception { - List validators = null; - IPluginConfig config = getPluginConfig(); - if (config.getString(IValidateService.VALIDATE_ID) != null) { - validators = getPluginContext().getServices(config.getString(IValidateService.VALIDATE_ID), - IValidateService.class); - if (validators != null && !action.validateSession(validators)) { - return; - } + @Override + public final void invoke() { + Dialog dialog = createRequestDialog(); + if (dialog != null) { + getPluginContext().getService(IDialogService.class.getName(), IDialogService.class).show(dialog); + } else { + String message = execute(); + if (message != null) { + getPluginContext().getService(IDialogService.class.getName(), IDialogService.class).show(createResponseDialog(message)); } - CompatibilityWorkflowPlugin.this.execute(action, true); } - }; - add(link); - actions.put(linkName, new Action(link, visible)); + } - updateActions(); - } + protected String execute() { + return execute((WorkflowDescriptorModel) CompatibilityWorkflowPlugin.this.getModel()); + } - protected void addWorkflowAction(final String linkName, IModel linkText, final WorkflowAction action) { - addWorkflowAction(linkName, linkText, new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return true; + protected String execute(WorkflowDescriptorModel model) { + try { + WorkflowDescriptor descriptor = (WorkflowDescriptor) WorkflowAction.this.getModelObject(); + WorkflowManager manager = ((UserSession) org.apache.wicket.Session.get()).getWorkflowManager(); + javax.jcr.Session session = ((UserSession) org.apache.wicket.Session.get()).getJcrSession(); + session.save(); + session.refresh(true); + Workflow workflow = manager.getWorkflow(descriptor); + execute(workflow); + session.refresh(false); + } catch (RepositoryException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + return ex.getClass().getName() + ": " + ex.getMessage(); + } catch (WorkflowException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + return ex.getClass().getName() + ": " + ex.getMessage(); + } catch (RemoteException ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + return ex.getClass().getName() + ": " + ex.getMessage(); + } catch (Exception ex) { + System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); + ex.printStackTrace(System.err); + return ex.getClass().getName() + ": " + ex.getMessage(); } - }, action); - } + return null; + } - protected void addWorkflowDialog(final String dialogName, final IModel dialogLink, final IModel dialogTitle, - final WorkflowAction action) { - addWorkflowDialog(dialogName, dialogLink, dialogTitle, (IModel) null, action); - } + protected String execute(Workflow workflow) throws Exception { + throw new WorkflowException("unsupported operation"); + } - protected void addWorkflowDialog(final String dialogName, final IModel dialogLink, final IModel dialogTitle, - final IModel text, final WorkflowAction action) { - addWorkflowDialog(dialogName, dialogLink, dialogTitle, text, new Visibility() { + public class WorkflowDialog extends AbstractDialog implements IStringResourceProvider { + private static final long serialVersionUID = 1L; + private ITranslateService translator; - public boolean isVisible() { - return true; + public WorkflowDialog() { + this((IModel) null); } - }, action); - } - protected void updateActions() { - for (Map.Entry entry : actions.entrySet()) { - entry.getValue().component.setVisible(entry.getValue().visible.isVisible()); - } - } + public WorkflowDialog(IModel message) { + Label notification = new Label("notification"); + if (message != null) { + notification.setModel(message); + } else { + notification.setVisible(false); + } + add(notification); - @Override - protected void onModelChanged() { - super.onModelChanged(); - updateActions(); - } + // FIXME: refactor the plugin so that we can use a service instead here + IPluginContext context = getPluginContext(); + translator = new SearchingTranslatorPlugin(context, null); + } - protected void showException(Exception ex) { - IDialogService dialogService = getPluginContext().getService(IDialogService.class.getName(), - IDialogService.class); - if (dialogService != null) { - dialogService.show(new ExceptionDialog(ex)); - } - } + public String getString(Map criteria) { + return translator.translate(criteria); + } - protected String execute(WorkflowAction action, boolean showError) { - // before saving (which possibly means deleting), find the handle - final WorkflowDescriptorModel workflowModel = (WorkflowDescriptorModel)CompatibilityWorkflowPlugin.this.getModel(); - try { - Node handle = workflowModel.getNode(); - while (handle.getDepth() > 0 && !handle.isNodeType(HippoNodeType.NT_HANDLE)) { - handle = handle.getParent(); + @Override + protected void onOk() { + String errorMessage = execute(); + if (errorMessage != null) { + error(errorMessage); + } } - action.prepareSession(new JcrNodeModel(handle)); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - Workflow workflow = manager.getWorkflow((WorkflowDescriptor)(workflowModel.getObject())); - action.execute(workflow); - return null; - } catch (MappingException e) { - log.error("MappingException while getting workflow: " + e.getMessage(), e); - if(showError) - showException(e); - return e.getClass().getName()+": "+e.getMessage(); - } catch (RepositoryException e) { - log.error("RepositoryException while getting workflow: " + e.getMessage(), e); - if(showError) - showException(e); - return e.getClass().getName()+": "+e.getMessage(); - } catch (Exception e) { - log.error("Exception while getting workflow: " + e.getMessage(), e); - if(showError) - showException(e); - return e.getClass().getName()+": "+e.getMessage(); - } finally { - try { - ((UserSession) Session.get()).getJcrSession().refresh(true); - } catch (RepositoryException e) { - log.error("Failed to refresh session: " + e.getMessage(), e); + + public IModel getTitle() { + return new Model(""); } + + /** + * This abstract method is called from ok() and should implement + * the action to be performed when the dialog's ok button is clicked. + */ + protected final String execute() { + return WorkflowAction.this.execute((WorkflowDescriptorModel) WorkflowAction.this.getModel()); + } } - } - public Workflow getWorkflow() throws MappingException, RepositoryException { - final WorkflowDescriptorModel workflowModel = (WorkflowDescriptorModel)CompatibilityWorkflowPlugin.this.getModel(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - return manager.getWorkflow((WorkflowDescriptor)(workflowModel.getObject())); - } - - public abstract class Dialog extends AbstractDialog implements IStringResourceProvider { - private static final long serialVersionUID = 1L; + public abstract class NameDialog extends WorkflowDialog { - private ITranslateService translator; + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id: AbstractNameDialog.java 15465 2008-12-19 15:50:41Z jtietema $"; + private static final long serialVersionUID = 1L; + protected String name; + private IModel title; - public Dialog() { - this(null); - } - - public Dialog(IModel message) { - Label notification = new Label("notification"); - if (message != null) { - notification.setModel(message); - } else { - notification.setVisible(false); + public NameDialog(IModel title, IModel question, String name) { + super(); + this.name = name; + this.title = title; + add(new Label("question", question)); + add(new TextFieldWidget("value", new PropertyModel(this, "name"))); } - add(notification); - // FIXME: refactor the plugin so that we can use a service instead here - IPluginContext context = CompatibilityWorkflowPlugin.this.getPluginContext(); - translator = new SearchingTranslatorPlugin(context, null); - } - - public String getString(Map criteria) { - return translator.translate(criteria); - } - - @Override - protected void onOk() { - String errorMessage = execute(); - if (errorMessage != null) { - error(errorMessage); + public IModel getTitle() { + return title; } } - /** - * This abstract method is called from ok() and should implement - * the action to be performed when the dialog's ok button is clicked. - */ - protected abstract String execute(); - } + public abstract class DestinationDialog extends WorkflowDialog { - public abstract class NameDialog extends Dialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id: AbstractNameDialog.java 15465 2008-12-19 15:50:41Z jtietema $"; - private static final long serialVersionUID = 1L; - protected String name; - private IModel title; + protected JcrNodeModel destination; + protected String name; + private IModel title; + private IRenderService dialogRenderer; + private IClusterControl control; - public NameDialog(IModel title, IModel question, String name) { - super(); - this.name = name; - this.title = title; - add(new Label("question", question)); - add(new TextFieldWidget("value", new PropertyModel(this, "name"))); - } + public DestinationDialog(IModel title, IModel question) { + super(); + this.title = title; + this.destination = null; + add(new Label("question", question)); + add(new TextFieldWidget("name", new PropertyModel(this, "name"))); - public IModel getTitle() { - return title; - } - } + IPluginContext context = CompatibilityWorkflowPlugin.this.getPluginContext(); + IPluginConfig config = CompatibilityWorkflowPlugin.this.getPluginConfig(); + IPluginConfigService pluginConfigService = context.getService(IPluginConfigService.class.getName(), IPluginConfigService.class); + IClusterConfig cluster = pluginConfigService.getCluster("cms-pickers/folders"); + control = context.newCluster(cluster, config.getPluginConfig("cluster.options")); + IClusterConfig decorated = control.getClusterConfig(); + String modelServiceId = decorated.getString("wicket.model.folder"); + ModelReference modelService; + modelService = new ModelReference(modelServiceId, getModel()) { - public abstract class DestinationDialog extends Dialog { - protected JcrNodeModel destination; - protected String name; - private IModel title; - private IRenderService dialogRenderer; - private IClusterControl control; + private static final long serialVersionUID = 1L; - public DestinationDialog(IModel title, IModel question) { - super(); - this.title = title; - this.destination = null; - add(new Label("question", question)); - add(new TextFieldWidget("name", new PropertyModel(this, "name"))); - - IPluginContext context = CompatibilityWorkflowPlugin.this.getPluginContext(); - IPluginConfig config = CompatibilityWorkflowPlugin.this.getPluginConfig(); - IPluginConfigService pluginConfigService = context.getService(IPluginConfigService.class.getName(), IPluginConfigService.class); - IClusterConfig cluster = pluginConfigService.getCluster("cms-pickers/folders"); - control = context.newCluster(cluster, config.getPluginConfig("cluster.options")); - IClusterConfig decorated = control.getClusterConfig(); - String modelServiceId = decorated.getString("wicket.model.folder"); - ModelReference modelService; - modelService = new ModelReference(modelServiceId, getModel()) { - private static final long serialVersionUID = 1L; - - @Override - public void setModel(IModel model) { - DestinationDialog.this.destination = null; - if (model != null && model instanceof JcrNodeModel && ((JcrNodeModel)model).getNode() != null) { - destination = (JcrNodeModel)model; + @Override + public void setModel(IModel model) { + DestinationDialog.this.destination = null; + if (model != null && model instanceof JcrNodeModel && ((JcrNodeModel) model).getNode() != null) { + destination = (JcrNodeModel) model; + } + super.setModel(model); } - super.setModel(model); - } - }; - modelService.init(context); + }; + modelService.init(context); - control.start(); + control.start(); - dialogRenderer = context.getService(decorated.getString("wicket.id"), IRenderService.class); - dialogRenderer.bind(null, "picker"); - add(dialogRenderer.getComponent()); - } + dialogRenderer = context.getService(decorated.getString("wicket.id"), IRenderService.class); + dialogRenderer.bind(null, "picker"); + add(dialogRenderer.getComponent()); + } - @Override - public void render(PluginRequestTarget target) { - if (dialogRenderer != null) { - dialogRenderer.render(target); + @Override + public void render(PluginRequestTarget target) { + if (dialogRenderer != null) { + dialogRenderer.render(target); + } + super.render(target); } - super.render(target); - } - @Override - public final void onClose() { - super.onClose(); - dialogRenderer.unbind(); - dialogRenderer = null; - control.stop(); - } + @Override + public final void onClose() { + super.onClose(); + dialogRenderer.unbind(); + dialogRenderer = null; + control.stop(); + } - public IModel getTitle() { - return title; - } + public IModel getTitle() { + return title; + } - @Override - public void onDetach() { - if (destination != null) { - destination.detach(); + @Override + public void onDetach() { + if (destination != null) { + destination.detach(); + } + super.onDetach(); } - super.onDetach(); } - } - public abstract class DateDialog extends Dialog { + public abstract class DateDialog extends WorkflowDialog { - protected Date date; + protected Date date; + protected Button now; - protected Button now; + public DateDialog(IModel question, Date date) { + super(); + this.date = date; - public DateDialog(IModel question, Date date) { - super(); - this.date = date; + add(new Label("question", question)); - add(new Label("question", question)); + add(new AjaxDateTimeField("value", new PropertyModel(this, "date"))); - add(new AjaxDateTimeField("value", new PropertyModel(this, "date"))); + now = new AjaxButton(getButtonId(), this) { - now = new AjaxButton(getButtonId(), this) { private static final long serialVersionUID = 1L; - + @Override - public void onSubmit(AjaxRequestTarget target, Form form) { + public void onSubmit(AjaxRequestTarget target, Form form) { DateDialog.this.date = null; onOk(); if (!hasError()) { @@ -418,8 +329,9 @@ } } }.setDefaultFormProcessing(false); - now.add(new Label("label", new ResourceModel("now", "Now"))); - addButton(now); + now.add(new Label("label", new ResourceModel("now", "Now"))); + addButton(now); + } } } } Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -0,0 +1,21 @@ +. + + +
    + +
    + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -0,0 +1,60 @@ +/* + * Copyright 2009 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.addon.workflow; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.html.basic.Label; +import org.hippoecm.frontend.plugin.IPluginContext; +import org.hippoecm.frontend.plugin.config.IPluginConfig; + +public class ContextWorkflowPlugin extends AbstractWorkflowPlugin { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + public ContextWorkflowPlugin(IPluginContext context, IPluginConfig config) { + super(context, config); + Component menu; + add(menu = new Label("menu")); + Component v; + add(v = new Label("view")); + v.setVisible(false); + menu.setVisible(false); + v.setOutputMarkupId(true); + menu.setOutputMarkupId(true); + setOutputMarkupId(true); + } + + @Override + protected void onModelChanged() { + super.onModelChanged(); + } + + private void populate() { + MenuHierarchy menu = buildMenu(); + menu.flatten(); + MenuDrop dropdown = new MenuDrop("menu", null, menu); + addOrReplace(dropdown); + dropdown.setVisible(true); + } + + @Override + protected void onBeforeRender() { + populate(); + super.onBeforeRender(); + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ContextWorkflowPlugin.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuBar.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -24,15 +24,16 @@ import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; import org.apache.wicket.markup.repeater.data.ListDataProvider; +import org.hippoecm.frontend.plugin.ContextMenu; class MenuBar extends Panel implements MenuComponent { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; - List buttons; + List buttons; public MenuBar(String id, MenuHierarchy list) { super(id); - buttons = new LinkedList(); + buttons = new LinkedList(); add(new DataView("list", new ListDataProvider(list.list(this))) { public void populateItem(final Item item) { Component button = (Component)item.getModelObject(); @@ -43,8 +44,8 @@ } }); } - public void collapse(MenuButton current, AjaxRequestTarget target) { - for(MenuButton button : buttons) { + public void collapse(ContextMenu current, AjaxRequestTarget target) { + for(ContextMenu button : buttons) { if(button != current) { button.collapse(target); } Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -0,0 +1,24 @@ + + + +
      +
    • + [WORKFLOW ACTION] +
    • +
    +
    + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.java (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -0,0 +1,39 @@ +/* + * Copyright 2009 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.addon.workflow; + +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.data.DataView; +import org.apache.wicket.markup.repeater.data.ListDataProvider; + +class MenuDrop extends Panel implements MenuComponent { + @SuppressWarnings("unused") + private final static String SVN_ID = "$Id$"; + + private static final long serialVersionUID = 1L; + + MenuDrop(String id, ActionDescription wf, MenuHierarchy menu) { + super(id); + add(new DataView("list", new ListDataProvider(menu.list(this))) { + public void populateItem(final Item item) { + MenuItem menuItem = (MenuItem)item.getModelObject(); + item.add(menuItem); + } + }); + } +} Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuDrop.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuHierarchy.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuHierarchy.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuHierarchy.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -76,8 +76,26 @@ put(action); } } + if(submenus.containsKey("threepane")) { + MenuHierarchy submenu = submenus.get("editing"); + for(ActionDescription action : submenu.items) { + put(action); + } + } } + public void flatten() { + Map submenus = this.submenus; + List items = this.items; + this.submenus = new LinkedHashMap(); + this.items = new LinkedList(); + for(MenuHierarchy submenu : submenus.values()) { + for(ActionDescription action : submenu.items) { + put(action); + } + } + } + List list(MenuComponent context) { List list = new LinkedList(); if (context instanceof MenuBar) { Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuLink.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -34,7 +34,10 @@ @Override public void onClick(AjaxRequestTarget target) { - ((ContextMenu)findParent(ContextMenu.class)).collapse(target); + ContextMenu parent = ((ContextMenu)findParent(ContextMenu.class)); + if(parent != null) { + parent.collapse(target); + } onClick(); } Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuList.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,10 +15,6 @@ */ package org.hippoecm.addon.workflow; -import org.apache.wicket.Component; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.image.Image; -import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; Deleted: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.html 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,26 +0,0 @@ - - - -
    [WORKFLOW ITEM GOES HERE]
    -
    [WORKFLOW ITEM GOES HERE]
    -
    [WORKFLOW ITEM GOES HERE]
    -
    [WORKFLOW ITEM GOES HERE]
    -
    [WORKFLOW ITEM GOES HERE]
    -
    [WORKFLOW ITEM GOES HERE]
    -
    [WORKFLOW ITEM GOES HERE]
    -
    - Deleted: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/ReviewedActions.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,174 +0,0 @@ -/* - * Copyright 2009 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.addon.workflow; - -import java.rmi.RemoteException; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; -import javax.jcr.Session; - -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; - -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.IDialogService; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.plugin.IPluginContext; -import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.service.IEditorManager; -import org.hippoecm.frontend.service.ServiceException; -import org.hippoecm.frontend.service.render.RenderPlugin; -import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.repository.api.Document; -import org.hippoecm.repository.api.HippoWorkspace; -import org.hippoecm.repository.api.Workflow; -import org.hippoecm.repository.api.WorkflowDescriptor; -import org.hippoecm.repository.api.WorkflowException; -import org.hippoecm.repository.api.WorkflowManager; -import org.hippoecm.repository.reviewedactions.FullReviewedActionsWorkflow; -import org.hippoecm.repository.standardworkflow.DefaultWorkflow; - -public class ReviewedActions extends RenderPlugin { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - // public ReviewedActions(String id, final WorkflowDescriptorModel model) super(id, model); - public ReviewedActions(final IPluginContext context, final IPluginConfig config) { - super(context, config); - - add(new StdWorkflow.Compatibility("edit", "edit", this) { - protected void execute(Workflow workflow) throws Exception { - FullReviewedActionsWorkflow wf = (FullReviewedActionsWorkflow)workflow; - Document docRef = wf.obtainEditableInstance(); - Session session = ((UserSession)getSession()).getJcrSession(); - session.refresh(false); - Node docNode = session.getNodeByUUID(docRef.getIdentity()); - IEditorManager editorMgr = getPluginContext().getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); - if (editorMgr != null) { - editorMgr.openEditor(new JcrNodeModel(docNode)); - } else { - System.err.println("No editor found to edit " + docNode.getPath()); - } - } - }); - - add(new StdWorkflow("delete", "delete") { - protected void execute() { - try { - WorkflowDescriptor descriptor = (WorkflowDescriptor) ReviewedActions.this.getModelObject(); - Session session = ((UserSession) getSession()).getJcrSession(); - session.refresh(true); - session.save(); - WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); - DefaultWorkflow workflow = (DefaultWorkflow) manager.getWorkflow(descriptor); - workflow.delete(); - session.refresh(false); - } catch(WorkflowException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RemoteException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RepositoryException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } - } - }); - - add(new StdWorkflow("copy", "copy") { - protected void execute() { - context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - - public IModel getTitle() { - return new Model("Sure"); - } - }); - } - }); - - add(new StdWorkflow("move", "move") { - protected void execute() { - context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - - public IModel getTitle() { - return new Model("Sure"); - } - }); - } - }); - - add(new StdWorkflow("rename", "rename") { - protected void execute() { - context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - - public IModel getTitle() { - return new Model("Sure"); - } - }); - } - }); - - add(new StdWorkflow("publish", "publish") { - protected void execute() { - try { - WorkflowDescriptor descriptor = (WorkflowDescriptor) ReviewedActions.this.getModelObject(); - Session session = ((UserSession) getSession()).getJcrSession(); - session.refresh(true); - session.save(); - WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow(descriptor); - workflow.publish(); - session.refresh(false); - } catch(WorkflowException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RemoteException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RepositoryException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } - } - }); - - add(new StdWorkflow("depublish", "depublish") { - protected void execute() { - try { - WorkflowDescriptor descriptor = (WorkflowDescriptor) ReviewedActions.this.getModelObject(); - Session session = ((UserSession) getSession()).getJcrSession(); - session.refresh(true); - session.save(); - WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow(descriptor); - workflow.depublish(); - session.refresh(false); - } catch(WorkflowException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RemoteException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RepositoryException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } - } - }); - } -} Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -34,9 +34,8 @@ import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; -import org.hippoecm.repository.reviewedactions.FullReviewedActionsWorkflow; -abstract class StdWorkflow extends ActionDescription { +public abstract class StdWorkflow extends ActionDescription { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; @@ -44,7 +43,7 @@ private String name; - StdWorkflow(String id, String name) { + public StdWorkflow(String id, String name) { super(id); this.name = name; @@ -55,7 +54,7 @@ add(link = new MenuLink("text") { @Override public void onClick() { - execute(); + invoke(); } }); link.add(new Label("label", getTitle())); @@ -89,7 +88,7 @@ return new ResourceReference(getClass(), "workflow-16.png"); } - protected abstract void execute(); + protected abstract void invoke(); public static abstract class Compatibility extends StdWorkflow { RenderPlugin enclosingPlugin; @@ -101,7 +100,7 @@ protected abstract void execute(Workflow wf) throws Exception; - protected void execute() { + protected void invoke() { try { WorkflowDescriptor descriptor = (WorkflowDescriptor)enclosingPlugin.getModelObject(); Session session = ((UserSession)getSession()).getJcrSession(); Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -48,7 +48,7 @@ for (Method method : interfaces[i].getDeclaredMethods()) { StdWorkflow wf = new StdWorkflow("id", method.getName()) { @Override - protected void execute() { + protected void invoke() { try { WorkflowDescriptor descriptor = (WorkflowDescriptor) StdWorkflowPlugin.this.getModelObject(); Session session = ((UserSession)org.apache.wicket.Session.get()).getJcrSession(); Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,66 +15,25 @@ */ package org.hippoecm.addon.workflow; -import java.lang.reflect.InvocationTargetException; -import java.util.LinkedList; -import java.util.List; - -import javax.jcr.Node; -import javax.jcr.RepositoryException; -import javax.jcr.Workspace; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.wicket.Component; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.ListDataProvider; - -import org.hippoecm.frontend.model.FrontendNodeTypes; import org.hippoecm.frontend.model.IModelReference; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.model.event.IEvent; import org.hippoecm.frontend.model.event.IObservable; import org.hippoecm.frontend.model.event.IObserver; -import org.hippoecm.frontend.plugin.IPlugin; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.service.IRenderService; -import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.service.render.RenderService; -import org.hippoecm.frontend.widgets.AbstractView; -import org.hippoecm.repository.api.HippoWorkspace; -import org.hippoecm.repository.api.WorkflowDescriptor; -import org.hippoecm.repository.api.WorkflowManager; -public class WorkflowPlugin extends RenderPlugin { +public class WorkflowPlugin extends AbstractWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; - private static final Logger log = LoggerFactory.getLogger(WorkflowPlugin.class); - - public static final String CATEGORIES = "workflow.categories"; - - private String[] categories; private final IModelReference modelReference; public WorkflowPlugin(IPluginContext context, IPluginConfig config) { super(context, config); - if (config.get(CATEGORIES) != null) { - categories = config.getStringArray(CATEGORIES); - if (log.isDebugEnabled()) { - StringBuffer sb = new StringBuffer(); - sb.append("workflow showing categories"); - for (String category : categories) - sb.append(" " + category); - log.debug(new String(sb)); - } - } else { - log.warn("No categories ({}) defined", CATEGORIES); - } if (config.getString(RenderService.MODEL_ID) != null) { modelReference = context.getService(config.getString(RenderService.MODEL_ID), @@ -82,6 +41,7 @@ if (modelReference != null) { //updateModel(modelReference.getModel()); context.registerService(new IObserver() { + private static final long serialVersionUID = 1L; public IObservable getObservable() { @@ -89,8 +49,8 @@ } public void onEvent(IEvent event) { - if (event instanceof IModelReference.IModelChangeEvent) { - IModelReference.IModelChangeEvent mce = (IModelReference.IModelChangeEvent)event; + if (event instanceof IModelReference.IModelChangeEvent) { + IModelReference.IModelChangeEvent mce = (IModelReference.IModelChangeEvent) event; updateModel(mce.getNewModel()); } } @@ -106,92 +66,9 @@ @Override protected void onModelChanged() { - final MenuHierarchy menu = new MenuHierarchy(); - List list = new LinkedList(); - if (getModel() instanceof JcrNodeModel) { - Node documentNode = ((JcrNodeModel) getModel()).getNode(); - if (documentNode != null) { - try { - Workspace workspace = documentNode.getSession().getWorkspace(); - if (workspace instanceof HippoWorkspace) { - WorkflowManager workflowMgr = ((HippoWorkspace) workspace).getWorkflowManager(); - for (final String category : categories) { - try { - final WorkflowDescriptor descriptor = workflowMgr.getWorkflowDescriptor(category, documentNode); - if (descriptor != null) { - String pluginRenderer = descriptor.getAttribute(FrontendNodeTypes.WORKFLOW_RENDERER); - Panel plugin = null; - WorkflowDescriptorModel pluginModel = new WorkflowDescriptorModel(descriptor, category, documentNode); - if (pluginRenderer == null || pluginRenderer.trim().equals("")) { - plugin = new StdWorkflowPlugin("item", pluginModel); - } else { - Class pluginClass = Class.forName(pluginRenderer); - if(IPlugin.class.isAssignableFrom(pluginClass)) { - plugin = (Panel) pluginClass.getConstructor(new Class[]{IPluginContext.class, IPluginConfig.class}).newInstance(new Object[]{getPluginContext(), getPluginConfig().getPluginConfig("workflow.options")}); - if(plugin instanceof IRenderService) { - ((IRenderService)plugin).bind(null, "id"); - } - plugin.setModel(pluginModel); - } else if(Panel.class.isAssignableFrom(pluginClass)) { - plugin = (Panel) pluginClass.getConstructor(new Class[]{String.class, WorkflowDescriptorModel.class}).newInstance(new Object[]{"item", pluginModel}); - plugin.setModel(pluginModel); - } else { - plugin = new Panel("item"); - } - } - if (plugin != null) { - plugin.visitChildren(new IVisitor() { - public Object component(Component component) { - try { - if (component instanceof ActionDescription) { - menu.put(new String[] {category, descriptor.getAttribute(FrontendNodeTypes.WORKFLOW_RENDERER), ((ActionDescription)component).getId()}, (ActionDescription)component); - } - } catch (RepositoryException ex) { - System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); - ex.printStackTrace(System.err); - } - return IVisitor.CONTINUE_TRAVERSAL; - } - }); - plugin.setVisible(false); - list.add(plugin); - } - } - } catch (ClassNotFoundException ex) { - System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); - ex.printStackTrace(System.err); - } catch (NoSuchMethodException ex) { - System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); - ex.printStackTrace(System.err); - } catch (InstantiationException ex) { - System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); - ex.printStackTrace(System.err); - } catch (IllegalAccessException ex) { - System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); - ex.printStackTrace(System.err); - } catch (InvocationTargetException ex) { - System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); - ex.printStackTrace(System.err); - } - } - } - } catch (RepositoryException ex) { - System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); - ex.printStackTrace(System.err); - } - } - } - AbstractView view; - addOrReplace(view = new AbstractView("view", new ListDataProvider(list)) { - @Override - protected void populateItem(Item item) { - item.add((Panel) item.getModelObject()); - } - }); - view.populate(); - + super.onModelChanged(); + MenuHierarchy menu = buildMenu(); menu.restructure(); - addOrReplace(new MenuBar("menu", menu)); } } Modified: hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/Workflow.java =================================================================== --- hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/Workflow.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/Workflow.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -17,7 +17,11 @@ import java.io.Serializable; import java.rmi.Remote; +import java.rmi.RemoteException; +import java.util.Map; +import javax.jcr.RepositoryException; + /** * Implementors of this interface should never return subclasses of the * #Document class in their interface. It is allowed to return an instance of @@ -27,4 +31,6 @@ public interface Workflow extends Remote, Serializable { final static String SVN_ID = "$Id$"; + + public Map hints() throws WorkflowException, RemoteException, RepositoryException; } Modified: hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/WorkflowDescriptor.java =================================================================== --- hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/WorkflowDescriptor.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/api/WorkflowDescriptor.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,6 +15,9 @@ */ package org.hippoecm.repository.api; +import java.io.Serializable; +import java.util.Map; + import javax.jcr.RepositoryException; public interface WorkflowDescriptor { @@ -39,4 +42,6 @@ * @returns A String value, can be null. */ public String getAttribute(String name) throws RepositoryException; + + public Map hints() throws RepositoryException; } Modified: hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/ext/WorkflowImpl.java =================================================================== --- hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/ext/WorkflowImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/api/src/main/java/org/hippoecm/repository/ext/WorkflowImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,8 +15,12 @@ */ package org.hippoecm.repository.ext; +import java.io.Serializable; +import java.lang.reflect.Method; import java.rmi.Remote; import java.rmi.RemoteException; +import java.util.Map; +import java.util.TreeMap; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowContext; @@ -40,4 +44,23 @@ final protected WorkflowContext getWorkflowContext() { return context; } + + public Map hints() { + return hints(this); + } + + static Map hints(Workflow workflow) { + Map map = new TreeMap(); + for(Class cls : workflow.getClass().getInterfaces()) { + if(Workflow.class.isAssignableFrom(cls)) { + for(Method method : cls.getDeclaredMethods()) { + String methodName = method.getName(); + if(methodName.equals("hints")) { + map.put(methodName, new Boolean(true)); + } + } + } + } + return map; + } } Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/ExceptionDialog.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/ExceptionDialog.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/dialog/ExceptionDialog.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -32,6 +32,11 @@ add(new Label("message", exception.getLocalizedMessage())); } + public ExceptionDialog(String message) { + cancel.setVisible(false); + add(new Label("message", message)); + } + public IModel getTitle() { return new Model("exception"); } Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/ContextMenuManager.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,8 +15,12 @@ */ package org.hippoecm.frontend.plugin; +import org.apache.wicket.ajax.AjaxRequestTarget; + public interface ContextMenuManager { final static String SVN_ID = "$Id$"; public void addContextMenu(ContextMenu activeMenu); + + public void collapse(ContextMenu current, AjaxRequestTarget target); } Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/DefaultAbstractTree.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/DefaultAbstractTree.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/DefaultAbstractTree.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -39,6 +39,8 @@ import org.apache.wicket.model.Model; import org.apache.wicket.util.lang.EnumeratedType; +import org.hippoecm.frontend.plugin.ContextMenu; +import org.hippoecm.frontend.plugin.ContextMenuManager; /** * Tree class that contains convenient functions related to presentation of the tree, which includes @@ -137,6 +139,10 @@ private static final ResourceReference ITEM = new ResourceReference(DefaultAbstractTree.class, "res/item.gif"); + /** Reference to the icon for context menus */ + private static final ResourceReference MENU = new ResourceReference(DefaultAbstractTree.class, + "res/menu.png"); + /** The link type, default is {@link LinkType#AJAX ajax}. */ private LinkType linkType = LinkType.AJAX; @@ -246,6 +252,11 @@ return ITEM; } + protected ResourceReference getMenuIcon(TreeNode node) + { + return MENU; + } + /** * Returns the resource reference for icon of specified tree node. * @@ -534,6 +545,71 @@ } + protected Component newMenuIcon(MarkupContainer parent, String id, final TreeNode node) + { + return new WebMarkupContainer(id) + { + private static final long serialVersionUID = 1L; + + protected void onComponentTag(ComponentTag tag) + { + super.onComponentTag(tag); + tag.put("style", "background-image: url('" + + RequestCycle.get().urlFor(getMenuIcon(node)) + "')"); + } + }; + + } + + protected MarkupContainer newContextContent(MarkupContainer parent, String id, final TreeNode node) + { + return new WebMarkupContainer(id); + } + + protected MarkupContainer newContextLink(final MarkupContainer parent, String id, final TreeNode node, MarkupContainer content) + { + AjaxLink link = new ContextLink(id, content, parent) { + public void onClick(AjaxRequestTarget target) + { + // It was a agreed decision that the node being operated upon was not to be selected + // getTreeState().selectNode(node, !getTreeState().isNodeSelected(node)); + updateTree(target); + content.setVisible(true); + active = true; + target.addComponent(parent); + ContextMenuManager menuManager = (ContextMenuManager) findParent(ContextMenuManager.class); + if (menuManager != null) { + menuManager.collapse(this, target); + menuManager.addContextMenu(this); + } + } + }; + setOutputMarkupId(true); + content.setOutputMarkupId(true); + content.setVisible(false); + return link; + } + + public static abstract class ContextLink extends AjaxLink implements ContextMenu { + MarkupContainer content; + MarkupContainer parent; + boolean active = false; + public ContextLink(String id, MarkupContainer content, MarkupContainer parent) { + super(id); + this.content = content; + this.parent = parent; + } + + public void collapse(AjaxRequestTarget target) { + if(active) { + active = false; + return; + } + content.setVisible(false); + target.addComponent(parent); + } + } + /** * Creates a link that can be used to select / deselect the specified node. * Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/Tree.html =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/Tree.html 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/Tree.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,12 +15,15 @@ limitations under the License. --> -
    -
    -
    - - -
    -
    -
    -
    \ No newline at end of file +
    +
    +
    +
    + + +
    +         +
    +
    +
    + Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/Tree.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/Tree.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/Tree.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -103,6 +103,12 @@ return renderNode(node); } })); + + MarkupContainer contextContent = newContextContent(item, "contextContent", node); + item.add(contextContent); + MarkupContainer contextLink = newContextLink(item, "contextLink", node, contextContent); + item.add(contextLink); + contextLink.add(newMenuIcon(contextLink, "menuimage", node)); // do distinguish between selected and unselected rows we add an // behavior Copied: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/res/menu.png (from rev 17032, hippo-ecm/trunk/package/skin/src/main/webapp/images/controls/folderdropdownicon.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/res/menu.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -62,6 +62,7 @@ protected abstract void onNodeLinkClicked(AjaxRequestTarget target, TreeNode clickedNode); + @Override public String renderNode(TreeNode treeNode) { String result = "unknown"; if (treeNode instanceof IJcrTreeNode) { Modified: hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/RootPlugin.java =================================================================== --- hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/RootPlugin.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/RootPlugin.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -27,14 +27,12 @@ import org.hippoecm.frontend.service.render.RenderService; import org.hippoecm.frontend.widgets.Pinger; -public class RootPlugin extends RenderPlugin implements ContextMenuManager { +public class RootPlugin extends RenderPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; - private ContextMenu activeContextMenu; - public RootPlugin(IPluginContext context, IPluginConfig config) { super(context, config); @@ -47,17 +45,5 @@ // unregister: don't repaint root plugin when model changes. context.unregisterService(this, modelId); } - - add(new AjaxEventBehavior("onclick") { - public void onEvent(AjaxRequestTarget target) { - if(activeContextMenu != null) { - activeContextMenu.collapse(target); - } - } - }); } - - public void addContextMenu(ContextMenu activeMenu) { - activeContextMenu = activeMenu; - } } Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -28,6 +28,7 @@
    editor.id + browser.id wicket.behavior wicket.model @@ -144,6 +145,9 @@ service.browse + + ${cluster.id}.validate + ${wicket.model} Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-folder-views.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-folder-views.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-folder-views.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -757,187 +757,6 @@ - - - frontend:plugincluster - - - wicket.id - - - model.folder - model.document - - - list.page.size - list.view.size - - - 20 - - - 3 - - - - frontend:plugin - - - org.hippoecm.frontend.plugins.cms.browse.list.DocumentListingPlugin - - - ${wicket.id} - - - ${model.folder} - - - ${model.document} - - - ${list.page.size} - - - ${list.view.size} - - - - frontend:pluginconfig - - - - frontend:pluginconfig - - - - - - - - - - - - hippostd:gallery - - - - - - false - - - - - - - - frontend:pluginconfig - - - - - - - - - - - - hippostd:folder - - - - - - true - - - - - - - - frontend:pluginconfig - - - - - - - - - - - - hippostd:directory - - - - - - true - - - - - - - - frontend:pluginconfig - - - - - - - - - - - - hippo:handle - - - - - - true - - - - - - - - frontend:pluginconfig - - - - - - - - - - - - nt:unstructured - - - - - - false - - - - - - - - - frontend:plugincluster Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-static.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -898,10 +898,10 @@ id=navigator-top,body=navigator-top-body,height=25px,resize=false - id=navigator-left,body=navigator-left-body,resize=true,scroll=true,minWidth=150,width=200,gutter=0px 0px 0px 0px + id=navigator-left,body=navigator-left-body,width=200,zindex=2 - id=navigator-center,body=navigator-center-body,minWidth=200,width=250,scroll=true,gutter=0px 0px 0px 0px + id=navigator-center,body=navigator-center-body,width=250 @@ -1178,6 +1178,9 @@ service.edit + + service.browse + service.behavior.editor.tabs.center @@ -1195,6 +1198,9 @@ service.edit + + service.browse + Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-tree-views.xml 2009-03-24 00:42:18 UTC (rev 17087) @@ -51,6 +51,20 @@ true + + + frontend:pluginconfig + + + + + + + + + threepane + + frontend:pluginconfig Modified: hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html =================================================================== --- hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html 2009-03-24 00:42:18 UTC (rev 17087) @@ -1,29 +1,29 @@ - - + +
    -

    +

    -

    +

    tree here
    @@ -32,6 +32,6 @@
    documents here
    - - - + + + Property changes on: hippo-ecm/trunk/package/layout/src/main/webapp/WEB-INF/default/org/hippoecm/frontend/plugins/cms/browse/Navigator.html ___________________________________________________________________ Added: svn:eol-style + native Modified: hippo-ecm/trunk/package/skin/src/main/webapp/screen.css =================================================================== --- hippo-ecm/trunk/package/skin/src/main/webapp/screen.css 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/package/skin/src/main/webapp/screen.css 2009-03-24 00:42:18 UTC (rev 17087) @@ -341,6 +341,8 @@ /* Toolbar */ /* ================================================ */ +.contexticon:{width:19px} +.contexticon:hover{background-position: 0px -21px; } .hippo-toolbar{padding: 7px; margin-left: 5px;} .hippo-toolbar .hippo-toolbar-section {display: block; float: left; color: #666666; padding-top: 0px; margin-right: 15px; background: url("images/devider.png") no-repeat 5px right;} .hippo-toolbar .hippo-toolbar-section li{margin-right: 15px; float: left;} @@ -581,7 +583,7 @@ /* overriding standard wicket tree styling */ /* remove the margin and set the hippo-tree wrapping div up as a scrollpane */ -.hippo-tree {overflow: auto; width: 200px; height: 350px;} +.hippo-tree {overflow: hidden; width: 200px; height: 350px; z-index: 1;} /* remove margins */ .hippo-tree div.wicket-tree{margin: 0px; border: none;} /* make sure the first folder level in the tree doens't have a left padding */ Modified: hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/client/ClientWorkflowDescriptor.java =================================================================== --- hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/client/ClientWorkflowDescriptor.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/client/ClientWorkflowDescriptor.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -16,8 +16,10 @@ package org.hippoecm.repository.decorating.client; import java.lang.reflect.Array; +import java.io.Serializable; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; +import java.util.Map; import javax.jcr.RepositoryException; @@ -53,6 +55,14 @@ } } + public Map hints() throws RepositoryException { + try { + return remote.hints(); + } catch (RemoteException ex) { + throw new RemoteRepositoryException(ex); + } + } + public Class[] getInterfaces() throws ClassNotFoundException, RepositoryException { try { String[] classes = remote.getInterfaces(); Modified: hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/remote/RemoteWorkflowDescriptor.java =================================================================== --- hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/remote/RemoteWorkflowDescriptor.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/remote/RemoteWorkflowDescriptor.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,8 +15,10 @@ */ package org.hippoecm.repository.decorating.remote; +import java.io.Serializable; import java.rmi.Remote; import java.rmi.RemoteException; +import java.util.Map; import javax.jcr.RepositoryException; @@ -29,6 +31,8 @@ public String getAttribute(String name) throws RepositoryException, RemoteException; + public Map hints() throws RepositoryException, RemoteException; + public Workflow getWorkflow() throws RepositoryException, RemoteException; public String[] getInterfaces() throws ClassNotFoundException, RepositoryException, RemoteException; Modified: hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/server/ServerWorkflowDescriptor.java =================================================================== --- hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/server/ServerWorkflowDescriptor.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/server/ServerWorkflowDescriptor.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,8 +15,10 @@ */ package org.hippoecm.repository.decorating.server; +import java.io.Serializable; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; +import java.util.Map; import javax.jcr.RepositoryException; @@ -46,6 +48,10 @@ return descriptor.getAttribute(name); } + public Map hints() throws RepositoryException, RemoteException { + return descriptor.hints(); + } + public String[] getInterfaces() throws ClassNotFoundException, RepositoryException, RemoteException { Class[] interfaces = descriptor.getInterfaces(); String[] classes = new String[interfaces.length]; Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowDescriptorImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowDescriptorImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowDescriptorImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -16,6 +16,8 @@ package org.hippoecm.repository.impl; import java.lang.reflect.Array; +import java.io.Serializable; +import java.rmi.RemoteException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -31,6 +33,7 @@ import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; +import org.hippoecm.repository.api.WorkflowException; final class WorkflowDescriptorImpl implements WorkflowDescriptor { @SuppressWarnings("unused") @@ -41,6 +44,7 @@ protected String displayName; protected Map attributes; protected String serviceName; + protected Map hints; WorkflowDescriptorImpl(WorkflowManagerImpl manager, String category, Node node, Node item) throws RepositoryException { this.category = category; @@ -66,6 +70,14 @@ WorkflowManagerImpl.log.error("Workflow specification corrupt on node " + nodeAbsPath); throw new RepositoryException("workflow specification corrupt", ex); } + + try { + hints = manager.getWorkflow(this).hints(); + } catch(WorkflowException ex) { + throw new RepositoryException("Workflow hints corruption", ex); + } catch(RemoteException ex) { + throw new RepositoryException("Workflow hints corruption", ex); + } } public String getDisplayName() { @@ -87,6 +99,10 @@ return interfaces.toArray((Class[]) Array.newInstance(Class.class, interfaces.size())); } + public Map hints() { + return hints; + } + public String toString() { return getClass().getName() + "[node=" + nodeAbsPath + ",category=" + category + ",service=" + serviceName + ",attributes=" + attributes.toString() + "]"; Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/impl/WorkflowManagerImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -500,9 +500,11 @@ if (returnObject instanceof Document) { returnObject = new Document(((Document)returnObject).getIdentity()); } - EventLoggerImpl eventLogger = new EventLoggerImpl(rootSession); - eventLogger.logWorkflowStep(session.getUserID(), upstream.getClass().getName(), - targetMethod.getName(), args, returnObject, path); + if(!targetMethod.getName().equals("hints")) { + EventLoggerImpl eventLogger = new EventLoggerImpl(rootSession); + eventLogger.logWorkflowStep(session.getUserID(), upstream.getClass().getName(), + targetMethod.getName(), args, returnObject, path); + } while (!invocationChain.isEmpty()) { WorkflowInvocationImpl current = (WorkflowInvocationImpl) invocationChain.remove(0); Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/DefaultWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/DefaultWorkflowImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/DefaultWorkflowImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,7 +15,10 @@ */ package org.hippoecm.repository.standardworkflow; +import java.io.Serializable; import java.rmi.RemoteException; +import java.util.Map; +import java.util.TreeMap; import javax.jcr.Node; import javax.jcr.RepositoryException; @@ -82,6 +85,10 @@ } } + public Map hints() { + return null; + } + public Document obtainEditableInstance() throws WorkflowException, MappingException, RepositoryException, RemoteException { return document; Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/EditmodelWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/EditmodelWorkflowImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/EditmodelWorkflowImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,7 +15,10 @@ */ package org.hippoecm.repository.standardworkflow; +import java.io.Serializable; import java.rmi.RemoteException; +import java.util.Map; +import java.util.TreeMap; import javax.jcr.ItemNotFoundException; import javax.jcr.Node; @@ -55,6 +58,10 @@ this.subject = subject; } + public Map hints() { + return new TreeMap(); + } + public String edit() throws WorkflowException, MappingException, RepositoryException { if (!subject.isNodeType(HippoNodeType.NT_TEMPLATETYPE)) throw new MappingException("invalid node type for EditmodelWorkflow"); Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/EventLoggerImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/EventLoggerImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/EventLoggerImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,8 +15,11 @@ */ package org.hippoecm.repository.standardworkflow; +import java.io.Serializable; import java.rmi.RemoteException; import java.util.NoSuchElementException; +import java.util.Map; +import java.util.TreeMap; import javax.jcr.ItemNotFoundException; import javax.jcr.Node; @@ -66,6 +69,10 @@ this(rootSession, rootSession, (rootSession.getRootNode().hasNode("hippo:log") ? rootSession.getRootNode().getNode("hippo:log") : null)); } + public Map hints() { + return new TreeMap(); + } + public void logWorkflowStep(String who, String className, String methodName, Object[] args, Object returnObject, String documentPath) { if (enabled) { try { Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,6 +15,7 @@ */ package org.hippoecm.repository.standardworkflow; +import java.io.Serializable; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.Collections; @@ -74,7 +75,29 @@ this.rootSession = rootSession; } + public Map hints() throws WorkflowException, MappingException, RepositoryException, RemoteException { + Map info = new TreeMap(); + info.put("add", new Boolean(true)); + info.put("list", new Boolean(false)); + info.put("archive", new Boolean(true)); + info.put("delete", new Boolean(true)); + info.put("rename", new Boolean(true)); + info.put("copy", new Boolean(true)); + info.put("duplicate", new Boolean(true)); + info.put("move", new Boolean(true)); + info.put("reorder", new Boolean(subject.getPrimaryNodeType().hasOrderableChildNodes())); + info.put("prototypes", (Serializable) prototypes()); + return info; + } + + /** + * @deprecated + */ public Map> list() throws WorkflowException, MappingException, RepositoryException, RemoteException { + return prototypes(); + } + + protected Map> prototypes() throws RepositoryException { Map> types = new TreeMap>(); try { QueryManager qmgr = rootSession.getWorkspace().getQueryManager(); Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/NullWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/NullWorkflowImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/NullWorkflowImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,7 +15,10 @@ */ package org.hippoecm.repository.standardworkflow; +import java.io.Serializable; import java.rmi.RemoteException; +import java.util.Map; +import java.util.TreeMap; import javax.jcr.Node; import javax.jcr.RepositoryException; @@ -40,20 +43,9 @@ Document document; public NullWorkflowImpl(Session userSession, Session rootSession, Node subject) throws RepositoryException { - document = new Document(subject.getUUID()); } - public Document obtainEditableInstance() - throws WorkflowException, MappingException, RepositoryException, RemoteException { - return document; + public Map hints() { + return new TreeMap(); } - - public void commitEditableInstance() - throws WorkflowException, MappingException, RepositoryException, RemoteException { - } - - public void disposeEditableInstance() - throws WorkflowException, MappingException, RepositoryException, RemoteException { - throw new WorkflowException("Document type does not allow for reverting changes"); - } } Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/RemodelWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/RemodelWorkflowImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/RemodelWorkflowImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -16,7 +16,9 @@ package org.hippoecm.repository.standardworkflow; import java.io.StringReader; +import java.io.Serializable; import java.rmi.RemoteException; +import java.util.Map; import java.util.HashMap; import javax.jcr.NamespaceException; @@ -55,6 +57,10 @@ this.subject = rootSession.getRootNode().getNode(subject.getPath().substring(1)); } + public Map hints() { + return null; + } + public void createNamespace(String prefix, String namespace) throws WorkflowException, MappingException, RepositoryException { try { Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/TemplateEditorActions.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/TemplateEditorActions.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/TemplateEditorActions.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,7 +15,9 @@ */ package org.hippoecm.repository.standardworkflow; +import java.io.Serializable; import java.rmi.RemoteException; +import java.util.Map; import javax.jcr.ItemNotFoundException; import javax.jcr.Node; @@ -55,6 +57,10 @@ this.subject = subject; } + public Map hints() { + return null; + } + public String edit() throws WorkflowException, MappingException, RepositoryException { if (!subject.isNodeType(HippoNodeType.NT_TEMPLATETYPE)) throw new MappingException("invalid node type for EditmodelWorkflow"); Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/VersionWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/VersionWorkflowImpl.java 2009-03-24 00:07:48 UTC (rev 17086) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/VersionWorkflowImpl.java 2009-03-24 00:42:18 UTC (rev 17087) @@ -15,6 +15,7 @@ */ package org.hippoecm.repository.standardworkflow; +import java.io.Serializable; import java.rmi.RemoteException; import java.util.Calendar; import java.util.Map; @@ -52,6 +53,10 @@ this.userSession = userSession; } + public Map hints() { + return new TreeMap(); + } + private boolean isSimilar(Node node) throws RepositoryException { if (node.hasNode("jcr:frozenNode")) { node = node.getNode("jcr:frozenNode"); From svn-logs at hippocms.org Tue Mar 24 01:44:00 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Tue Mar 24 01:42:22 2009 Subject: [HippoRepos-dev] [17088] hippo-ecm: HREPTWO-1999: use reviewed actions again Message-ID: <20090324004400.C5677C58B@svnnew.onehippo.org> Revision: 17088 Author: bvanhalderen Date: 2009-03-24 01:44:00 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-1999: use reviewed actions again Modified Paths: -------------- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml Added Paths: ----------- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin$FolderWorkflowDialog.html Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin$FolderWorkflowDialog.html =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin$FolderWorkflowDialog.html (rev 0) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin$FolderWorkflowDialog.html 2009-03-24 00:44:00 UTC (rev 17088) @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + +
    Name + +
    + + +
      + +
    +
    +
    + Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html 2009-03-24 00:42:18 UTC (rev 17087) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html 2009-03-24 00:44:00 UTC (rev 17088) @@ -1,5 +1,5 @@ - -
      - -
    • - -
    • -
      -
    • - -
    • -
    • - -
    • -
    +
    [WORKFLOW ITEM GOES HERE]
    +
    [WORKFLOW ITEM GOES HERE]
    +
    [WORKFLOW ITEM GOES HERE]
    +
    [WORKFLOW ITEM GOES HERE]
    +
    [WORKFLOW ITEM GOES HERE]
    +
    [WORKFLOW ITEM GOES HERE]
    +
    [WORKFLOW ITEM GOES HERE]
    Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml 2009-03-24 00:42:18 UTC (rev 17087) +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions-workflows.xml 2009-03-24 00:44:00 UTC (rev 17088) @@ -38,7 +38,7 @@ Reviewed actions workflow - org.hippoecm.addon.workflow.ReviewedActions + org.hippoecm.frontend.plugins.reviewedactions.FullReviewedActionsWorkflowPlugin From svn-logs at hippocms.org Tue Mar 24 10:28:46 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 10:27:11 2009 Subject: [HippoRepos-dev] [17089] hippo-ecm: HREPTWO-16: Fix character encoding of page, html validity and comestic changes Message-ID: <20090324092846.BBB9DC58B@svnnew.onehippo.org> Revision: 17089 Author: bvdschans Date: 2009-03-24 10:28:45 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-16: Fix character encoding of page, html validity and comestic changes Modified Paths: -------------- hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java Modified: hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java =================================================================== --- hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java 2009-03-24 00:44:00 UTC (rev 17088) +++ hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java 2009-03-24 09:28:45 UTC (rev 17089) @@ -66,31 +66,32 @@ import sun.misc.BASE64Decoder; public class RepositoryServlet extends HttpServlet { + @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; + private static final String SVN_ID = "$Id$"; + private static final long serialVersionUID = 1L; + private static final Logger log = LoggerFactory.getLogger(HippoRepository.class); - protected final Logger log = LoggerFactory.getLogger(HippoRepository.class); - /** Parameter name of the repository storage directory */ - public final static String REPOSITORY_DIRECTORY_PARAM = "repository-directory"; + public static final String REPOSITORY_DIRECTORY_PARAM = "repository-directory"; /** Parameter name of the binging address */ - public final static String REPOSITORY_BINDING_PARAM = "repository-address"; + public static final String REPOSITORY_BINDING_PARAM = "repository-address"; /** Parameter name of the repository config file */ - public final static String REPOSITORY_CONFIG_PARAM = "repository-config"; + public static final String REPOSITORY_CONFIG_PARAM = "repository-config"; /** Default repository storage directory */ - public final static String DEFAULT_REPOSITORY_DIRECTORY = "WEB-INF/storage"; + public static final String DEFAULT_REPOSITORY_DIRECTORY = "WEB-INF/storage"; /** Default binding address for server */ - public final static String DEFAULT_REPOSITORY_BINDING = "rmi://localhost:1099/hipporepository"; + public static final String DEFAULT_REPOSITORY_BINDING = "rmi://localhost:1099/hipporepository"; /** Default config file */ - public final static String DEFAULT_REPOSITORY_CONFIG = "repository.xml"; + public static final String DEFAULT_REPOSITORY_CONFIG = "repository.xml"; - /** System property for overriding the repostiory config file */ - public final static String SYSTEM_SERVLETCONFIG_PROPERTY = "repo.servletconfig"; + /** System property for overriding the repository config file */ + public static final String SYSTEM_SERVLETCONFIG_PROPERTY = "repo.servletconfig"; /** JNDI context to which to bind the repository. */ private Context ctx; @@ -274,24 +275,27 @@ writer.println(""); writer.println(""); - writer.println("Hippo Repository Console"); - writer.println(""); + writer.println(""); + writer.println(" Hippo Repository Console"); + writer.println(" "); + writer.println(" "); writer.println(""); writer.println(""); writer.println("

    Hippo Repository Console

    "); writer.println("

    Request parameters

    "); - writer - .println(" "); - writer.println(" "); - writer.println(" "); - writer.println(" "); + writer.println("
    namevalue
    servlet path: " + req.getServletPath() + "
    request uri: " + req.getRequestURI() + "
    relative path: " + path + "
    "); + writer.println(" "); + writer.println(" "); + writer.println(" "); + writer.println(" "); writer.println("
    namevalue
    servlet path : " + req.getServletPath() + "
    request uri : " + req.getRequestURI() + "
    relative path : " + path + "
    "); - writer.println("

    Login information

    "); - writer.println(" "); - writer.println(" "); + writer.println("
    logged in as:" + session.getUserID() + "
    "); + writer.println(" "); writer.println("
    logged in as : " + session.getUserID() + "
    "); writer.println("

    Referenced node

    "); From svn-logs at hippocms.org Tue Mar 24 10:33:58 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 10:32:24 2009 Subject: [HippoRepos-dev] [17090] hippo-ecm: HREPTWO-16: Fix character encoding of page, html validity and comestic changes Message-ID: <20090324093358.E8E5BC58B@svnnew.onehippo.org> Revision: 17090 Author: bvdschans Date: 2009-03-24 10:33:58 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-16: Fix character encoding of page, html validity and comestic changes Modified Paths: -------------- hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java Modified: hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java =================================================================== --- hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java 2009-03-24 09:28:45 UTC (rev 17089) +++ hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java 2009-03-24 09:33:58 UTC (rev 17090) @@ -15,6 +15,7 @@ */ package org.hippoecm.repository; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.net.MalformedURLException; @@ -63,7 +64,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sun.misc.BASE64Decoder; +import org.apache.jackrabbit.util.Base64; public class RepositoryServlet extends HttpServlet { @@ -235,7 +236,9 @@ String username = "admin", password = "admin"; String authhead = req.getHeader("Authorization"); if (authhead != null) { - String userpass = new String(new BASE64Decoder().decodeBuffer(authhead.substring(6))); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + Base64.decode(authhead.substring(6), out); + String userpass = new String(out.toByteArray(), "UTF-8"); username = userpass.substring(0, userpass.indexOf(":")); password = userpass.substring(userpass.indexOf(":") + 1); } else { From svn-logs at hippocms.org Tue Mar 24 10:38:49 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 10:37:14 2009 Subject: [HippoRepos-dev] [17091] hippo-ecm: HREPTWO-2286: Use JR base64 decoding instead of propriety sun classes Message-ID: <20090324093849.2814FC58B@svnnew.onehippo.org> Revision: 17091 Author: bvdschans Date: 2009-03-24 10:38:48 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-2286: Use JR base64 decoding instead of propriety sun classes Modified Paths: -------------- hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java Modified: hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java =================================================================== --- hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java 2009-03-24 09:33:58 UTC (rev 17090) +++ hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java 2009-03-24 09:38:48 UTC (rev 17091) @@ -57,6 +57,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringEscapeUtils; +import org.apache.jackrabbit.util.Base64; import org.hippoecm.repository.api.HippoNode; import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.NodeNameCodec; @@ -64,8 +65,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.jackrabbit.util.Base64; - public class RepositoryServlet extends HttpServlet { @SuppressWarnings("unused") From helpdesk at onehippo.com Tue Mar 24 10:50:28 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 24 10:49:25 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2286) Don't use sun.* classes for base64 encoding/decoding In-Reply-To: <18997735.1235555523654.JavaMail.jira@hat01> Message-ID: <25193971.1237888228490.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2286?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2286. ------------------------------------------ Resolution: Fixed > Don't use sun.* classes for base64 encoding/decoding > ---------------------------------------------------- > > Key: HREPTWO-2286 > URL: http://issues.onehippo.com/browse/HREPTWO-2286 > Project: Hippo Repository 2 > Issue Type: Improvement > Affects Versions: r2.04.00 (m11 - technical) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.05.01 (m12 - update) > > Original Estimate: 1 hour, 30 minutes > Remaining Estimate: 1 hour, 30 minutes > > Instead use the one from jackrabbit: http://jackrabbit.apache.org/api/1.5/org/apache/jackrabbit/util/Base64.html -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 24 11:11:28 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Tue Mar 24 11:10:26 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2255) No authorization takes place when running in eclipse In-Reply-To: <15139461.1234521446213.JavaMail.jira@hat01> Message-ID: <24563992.1237889488571.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2255?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2255. ----------------------------------------- Resolution: Cannot Reproduce The issue does not occur anymore, am not sure what fixed it. > No authorization takes place when running in eclipse > ---------------------------------------------------- > > Key: HREPTWO-2255 > URL: http://issues.onehippo.com/browse/HREPTWO-2255 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.04.00 (m11 - technical) > Reporter: Frank van Lankvelt > Assignee: Bart van der Schans > Fix For: Backlog > > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 24 12:11:27 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Tue Mar 24 12:09:51 2009 Subject: [HippoRepos-dev] [17092] hippo-ecm: HREPTWO-1999: Message-ID: <20090324111127.E5504C58B@svnnew.onehippo.org> Revision: 17092 Author: bvanhalderen Date: 2009-03-24 12:11:26 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-1999: - make sure right translations are used and right icons are available on classpath by including them in the build (see pom.xml); - port save and port button implementation; - use proper component containing the workflow (CompatibilityPlugin); Modified Paths: -------------- hippo-ecm/trunk/addon/builtin/frontend/pom.xml hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.properties hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java Added Paths: ----------- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties Modified: hippo-ecm/trunk/addon/builtin/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/pom.xml 2009-03-24 09:38:48 UTC (rev 17091) +++ hippo-ecm/trunk/addon/builtin/frontend/pom.xml 2009-03-24 11:11:26 UTC (rev 17092) @@ -67,12 +67,22 @@ false + src/main/resources + + + false ${basedir}/src/main/java **/*.html + **/*.js **/*.css + **/*.png + **/*.gif **/*.properties + + **/*.java + Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java 2009-03-24 09:38:48 UTC (rev 17091) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.java 2009-03-24 11:11:26 UTC (rev 17092) @@ -103,9 +103,9 @@ StringResourceModel text; try { Object[] params = new Object[]{((WorkflowDescriptorModel) FolderWorkflowPlugin.this.getModel()).getNode().getName()}; - text = new StringResourceModel("delete-message-extended", this, null, params); + text = new StringResourceModel("delete-message-extended", FolderWorkflowPlugin.this, null, params); } catch (RepositoryException ex) { - text = new StringResourceModel("delete-message", this, null); + text = new StringResourceModel("delete-message", FolderWorkflowPlugin.this, null); } return text; } @@ -134,7 +134,7 @@ for (final String category : prototypes.keySet()) { list.add(new WorkflowAction("id", category, new ResourceReference(getClass(), "document-new-16.png")) { public String prototype; - public String name; + public String targetName; @Override protected Dialog createRequestDialog() { return new FolderWorkflowDialog(this, new Model(category), category, prototypes.get(category)); @@ -145,7 +145,7 @@ if (prototype == null) { throw new IllegalArgumentException("You need to select a type"); } - if (name == null || "".equals(name)) { + if (targetName == null || "".equals(targetName)) { throw new IllegalArgumentException("You need to enter a name"); } if (workflow != null) { @@ -153,7 +153,7 @@ log.error("unknown folder type " + prototype); return "Unknown folder type " + prototype; } - String path = workflow.add(category, prototype, NodeNameCodec.encode(name, true)); + String path = workflow.add(category, prototype, NodeNameCodec.encode(targetName, true)); ((UserSession) Session.get()).getJcrSession().refresh(true); @@ -249,14 +249,14 @@ this.category = category; this.prototypes = prototypes; - PropertyModel nameModel = new PropertyModel(action, "name"); - PropertyModel prototypeModel = new PropertyModel(this, "prototype"); + PropertyModel nameModel = new PropertyModel(action, "targetName"); + PropertyModel prototypeModel = new PropertyModel(action, "prototype"); TextField text = new TextField("name", nameModel); text.setRequired(true); add(text); - Label typelabel = new Label("typelabel", new StringResourceModel("document-type", action, null)); + Label typelabel = new Label("typelabel", new StringResourceModel("document-type", FolderWorkflowPlugin.this, null)); add(typelabel); if (prototypes.size() > 1) { Modified: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.properties 2009-03-24 09:38:48 UTC (rev 17091) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin.properties 2009-03-24 11:11:26 UTC (rev 17092) @@ -1,3 +1,6 @@ +add-category: Add {0} +folder: folder +reorder-folder: Reorder folder delete-message: Are you sure you want to delete this folder and all of its contents permanently? delete-message-extended: Are you sure you want to delete folder {0} and all of its contents permanently? delete-title: Delete folder @@ -3,2 +6,4 @@ rename-title: Rename folder rename-text: Rename folder to: +document-type: Document Type +name-label: Name Added: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties (rev 0) +++ hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties 2009-03-24 11:11:26 UTC (rev 17092) @@ -0,0 +1,10 @@ +add-category: Voeg {0} toe +folder: map +reorder-folder: Orden map +delete-message: Weet u zeker dat u deze map en zijn inhoud permanent wilt verwijderen? +delete-message-extended: Weet u zeker dat u map {0} en zijn inhoud permanent wilt verwijderen? +delete-title: Verwijder map +rename-title: Hernoem map +rename-text: Hernoem map tot: +document-type: Document Type +name-label: Naam Property changes on: hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/FolderWorkflowPlugin_nl.properties ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-24 09:38:48 UTC (rev 17091) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-24 11:11:26 UTC (rev 17092) @@ -15,6 +15,7 @@ */ package org.hippoecm.frontend.plugins.reviewedactions; +import java.rmi.RemoteException; import java.util.List; import javax.jcr.Node; @@ -25,8 +26,12 @@ import javax.jcr.Value; import javax.jcr.nodetype.PropertyDefinition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.apache.wicket.Session; import org.apache.wicket.model.StringResourceModel; + import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; import org.hippoecm.frontend.dialog.IDialogService; @@ -44,13 +49,13 @@ import org.hippoecm.frontend.service.IValidateService; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.Document; +import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.HippoSession; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; +import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.reviewedactions.BasicReviewedActionsWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class EditingReviewedActionsWorkflowPlugin extends CompatibilityWorkflowPlugin implements IValidateService { @SuppressWarnings("unused") @@ -72,7 +77,8 @@ } else { log.warn("No validator id {} defined", IValidateService.VALIDATE_ID); } -/* + + final CompatibilityWorkflowPlugin plugin = this; final IEditor editor = context.getService(config.getString("editor.id"), IEditor.class); context.registerService(new IEditorFilter() { private static final long serialVersionUID = 1L; @@ -84,43 +90,46 @@ if (!closing) { try { OnCloseDialog.Actions actions = new OnCloseDialog.Actions() { - public void revert() { - execute(new WorkflowAction() { - private static final long serialVersionUID = 1L; - - @Override - public boolean validateSession(List validators) { - return true; + try { + WorkflowDescriptor descriptor = (WorkflowDescriptor)plugin.getModelObject(); + WorkflowManager manager = ((UserSession)org.apache.wicket.Session.get()).getWorkflowManager(); + javax.jcr.Session session = ((UserSession)org.apache.wicket.Session.get()).getJcrSession(); + Node handleNode = ((WorkflowDescriptorModel)plugin.getModel()).getNode(); + if (handleNode.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { + handleNode = handleNode.getParent(); } - - @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.refresh(false); - handleNode.getSession().refresh(true); - } - - @Override - public void execute(Workflow wf) throws Exception { - BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; - workflow.disposeEditableInstance(); - } - }, true); + handleNode.refresh(false); + handleNode.getSession().refresh(true); + Workflow workflow = manager.getWorkflow(descriptor); + ((BasicReviewedActionsWorkflow)workflow).disposeEditableInstance(); + session.refresh(true); + } catch (RepositoryException ex) { + log.error("failure while reverting", ex); + } catch (WorkflowException ex) { + log.error("failure while reverting", ex); + } catch (RemoteException ex) { + log.error("failure while reverting", ex); + } } - public void save() { - execute(new WorkflowAction() { - private static final long serialVersionUID = 1L; - - @Override - public void execute(Workflow wf) throws Exception { - BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; - workflow.commitEditableInstance(); - } - }, true); + try { + WorkflowDescriptor descriptor = (WorkflowDescriptor)plugin.getModelObject(); + WorkflowManager manager = ((UserSession)org.apache.wicket.Session.get()).getWorkflowManager(); + javax.jcr.Session session = ((UserSession)org.apache.wicket.Session.get()).getJcrSession(); + session.save(); + session.refresh(true); + Workflow workflow = manager.getWorkflow(descriptor); + ((BasicReviewedActionsWorkflow)workflow).commitEditableInstance(); + session.refresh(false); + } catch (RepositoryException ex) { + log.error("failure while reverting", ex); + } catch (WorkflowException ex) { + log.error("failure while reverting", ex); + } catch (RemoteException ex) { + log.error("failure while reverting", ex); + } } - public void close() { IEditor editor = context.getService(config.getString("editor.id"), IEditor.class); try { @@ -155,7 +164,6 @@ } catch (Exception ex) { ex.printStackTrace(); log.error(ex.getMessage()); - showException(ex); } return null; } else { @@ -165,11 +173,9 @@ }, context.getReference(editor).getServiceId()); - addWorkflowAction("save", new StringResourceModel("save", this, null, "Save"), new WorkflowAction() { - private static final long serialVersionUID = 1L; - + add(new WorkflowAction("save", new StringResourceModel("save", this, null, "Save").getString(), null) { @Override - public void execute(Workflow wf) throws Exception { + protected String execute(Workflow wf) throws Exception { BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.commitEditableInstance(); @@ -187,31 +193,31 @@ IModelReference ref = context.getService(config.getString("model.id"), IModelReference.class); ref.setModel(new JcrNodeModel(((UserSession) Session.get()).getJcrSession().getNodeByUUID( draft.getIdentity()))); - + return null; } }); - addWorkflowAction("done", new StringResourceModel("done", this, null, "Done"), new WorkflowAction() { - private static final long serialVersionUID = 1L; + add(new WorkflowAction("done", new StringResourceModel("done", this, null, "Done").getString(), null) { @Override - public void execute(Workflow wf) throws Exception { + public String execute(Workflow wf) throws Exception { + IBrowseService browser = context.getService("browser.id", IBrowseService.class); + IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID),IEditor.class); + BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.commitEditableInstance(); - ((UserSession) Session.get()).getJcrSession().refresh(true); - IBrowseService browser = context.getService("browser.id", IBrowseService.class); browser.browse(new JcrNodeModel(((WorkflowDescriptorModel) EditingReviewedActionsWorkflowPlugin.this.getModel()).getNode())); - IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID),IEditor.class); closing = true; editor.close(); browser.browse(new JcrNodeModel(((WorkflowDescriptorModel)EditingReviewedActionsWorkflowPlugin.this.getModel()).getNode())); + return null; } }); } -*/} + public boolean hasError() { if (!validated) { validate(); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-24 09:38:48 UTC (rev 17091) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-24 11:11:26 UTC (rev 17092) @@ -64,8 +64,8 @@ public FullReviewedActionsWorkflowPlugin(final IPluginContext context, IPluginConfig config) { super(context, config); - add(new StdWorkflow.Compatibility("edit", "edit", this) { - protected void execute(Workflow workflow) throws Exception { + add(new WorkflowAction("edit", "edit", null) { + protected String execute(Workflow workflow) throws Exception { FullReviewedActionsWorkflow wf = (FullReviewedActionsWorkflow)workflow; Document docRef = wf.obtainEditableInstance(); Session session = ((UserSession)getSession()).getJcrSession(); @@ -75,32 +75,17 @@ if (editorMgr != null) { editorMgr.openEditor(new JcrNodeModel(docNode)); } else { - System.err.println("No editor found to edit " + docNode.getPath()); + return "No editor found to edit " + docNode.getPath(); } + return null; } }); - add(new StdWorkflow("delete", "delete") { - protected void invoke() { - try { - WorkflowDescriptor descriptor = (WorkflowDescriptor) FullReviewedActionsWorkflowPlugin.this.getModelObject(); - Session session = ((UserSession) getSession()).getJcrSession(); - session.refresh(true); - session.save(); - WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); - DefaultWorkflow workflow = (DefaultWorkflow) manager.getWorkflow(descriptor); - workflow.delete(); - session.refresh(false); - } catch(WorkflowException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RemoteException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RepositoryException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } + add(new WorkflowAction("delete", "delete", null) { + protected String execute(Workflow workflow) throws Exception { + FullReviewedActionsWorkflow wf = (FullReviewedActionsWorkflow)workflow; + wf.delete(); + return null; } }); @@ -118,7 +103,6 @@ add(new StdWorkflow("move", "move") { protected void invoke() { context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - public IModel getTitle() { return new Model("Sure"); } Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml 2009-03-24 09:38:48 UTC (rev 17091) +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/editing-workflows.xml 2009-03-24 11:11:26 UTC (rev 17092) @@ -34,7 +34,7 @@ org.hippoecm.repository.reviewedactions.BasicReviewedActionsWorkflowImpl
    - Author Reviewed actions workflow + Editing publishable documents org.hippoecm.frontend.plugins.reviewedactions.EditingReviewedActionsWorkflowPlugin Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java 2009-03-24 09:38:48 UTC (rev 17091) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java 2009-03-24 11:11:26 UTC (rev 17092) @@ -128,7 +128,7 @@ protected String execute(WorkflowDescriptorModel model) { try { - WorkflowDescriptor descriptor = (WorkflowDescriptor) WorkflowAction.this.getModelObject(); + WorkflowDescriptor descriptor = (WorkflowDescriptor) model.getObject(); WorkflowManager manager = ((UserSession) org.apache.wicket.Session.get()).getWorkflowManager(); javax.jcr.Session session = ((UserSession) org.apache.wicket.Session.get()).getJcrSession(); session.save(); @@ -204,7 +204,7 @@ * the action to be performed when the dialog's ok button is clicked. */ protected final String execute() { - return WorkflowAction.this.execute((WorkflowDescriptorModel) WorkflowAction.this.getModel()); + return WorkflowAction.this.execute((WorkflowDescriptorModel) CompatibilityWorkflowPlugin.this.getModel()); } } From svn-logs at hippocms.org Tue Mar 24 13:11:17 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 13:09:41 2009 Subject: [HippoRepos-dev] [17096] hippo-ecm: HREPTWO-16: trivial code cleanups Message-ID: <20090324121117.BAFD1C58B@svnnew.onehippo.org> Revision: 17096 Author: bvdschans Date: 2009-03-24 13:11:17 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-16: trivial code cleanups Modified Paths: -------------- hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java Modified: hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java =================================================================== --- hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java 2009-03-24 11:32:17 UTC (rev 17095) +++ hippo-ecm/trunk/repository/application/src/main/java/org/hippoecm/repository/RepositoryServlet.java 2009-03-24 12:11:17 UTC (rev 17096) @@ -49,7 +49,6 @@ import javax.jcr.query.QueryResult; import javax.jcr.query.Row; import javax.jcr.query.RowIterator; -import javax.naming.Context; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -93,9 +92,6 @@ /** System property for overriding the repository config file */ public static final String SYSTEM_SERVLETCONFIG_PROPERTY = "repo.servletconfig"; - /** JNDI context to which to bind the repository. */ - private Context ctx; - /** RMI registry to which to bind the repository. */ private Registry registry; private boolean registryIsEmbedded = false; @@ -246,7 +242,7 @@ * password = null; a problem is that we don't have a password then * but this only works if we fully configured a security realm for this. */ - if (req.getAuthType() != req.BASIC_AUTH) { + if (req.getAuthType() != HttpServletRequest.BASIC_AUTH) { res.setHeader("WWW-Authenticate", "Basic realm=\"Repository\""); res.sendError(HttpServletResponse.SC_UNAUTHORIZED, ""); return; @@ -500,7 +496,6 @@ writer.println("No nodes have a reference to '" +n.getPath() + "'"); } } - } } catch (LoginException ex) { res.setHeader("WWW-Authenticate", "Basic realm=\"Repository\""); From helpdesk at onehippo.com Tue Mar 24 13:28:28 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Tue Mar 24 13:27:25 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2342) SPI Root node throws exception on getCanonicalNode Message-ID: <15413941.1237897708466.JavaMail.jira@jira.onehippo.org> SPI Root node throws exception on getCanonicalNode -------------------------------------------------- Key: HREPTWO-2342 URL: http://issues.onehippo.com/browse/HREPTWO-2342 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Frank van Lankvelt Fix For: Backlog Invoking getCanonicalNode() on the root-node throws the following exception: javax.jcr.RepositoryException: failed to resolve path relative to node /: empty path -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 24 14:36:30 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 14:34:53 2009 Subject: [HippoRepos-dev] [17097] hippo-ecm: HREPTWO-2342: Fix getCanonicalNode on root node and add unit test Message-ID: <20090324133630.3C337C58B@svnnew.onehippo.org> Revision: 17097 Author: bvdschans Date: 2009-03-24 14:36:29 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-2342: Fix getCanonicalNode on root node and add unit test Modified Paths: -------------- hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/spi/NodeDecorator.java hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/CanonicalPathTest.java Modified: hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/spi/NodeDecorator.java =================================================================== --- hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/spi/NodeDecorator.java 2009-03-24 12:11:17 UTC (rev 17096) +++ hippo-ecm/trunk/repository/connector/src/main/java/org/hippoecm/repository/decorating/spi/NodeDecorator.java 2009-03-24 13:36:29 UTC (rev 17097) @@ -43,12 +43,21 @@ } static Node getCanonicalNode(Session session, HippoSession remoteSession, Node node) throws RepositoryException { + String path = node.getPath(); + if (path == null) { + return null; + } + if ("/".equals(path)) { + return session.getRootNode(); + } node = remoteSession.getRootNode().getNode(node.getPath().substring(1)); - if(node == null) + if (node == null) { return null; - node = ((HippoNode)node).getCanonicalNode(); - if(node == null) + } + node = ((HippoNode) node).getCanonicalNode(); + if (node == null) { return null; + } return session.getRootNode().getNode(node.getPath().substring(1)); } Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/CanonicalPathTest.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/CanonicalPathTest.java 2009-03-24 12:11:17 UTC (rev 17096) +++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/CanonicalPathTest.java 2009-03-24 13:36:29 UTC (rev 17097) @@ -77,6 +77,13 @@ } /* + * Basic test on the root node: see HREPTWO-2342 + */ + @Test public void testRootNode() throws RepositoryException { + ((HippoNode) session.getRootNode()).getCanonicalNode(); + } + + /* * A virtual node in facetsearch which is not a mirror of a hippo document returns null * for getCanonicalNode() */ From helpdesk at onehippo.com Tue Mar 24 14:37:28 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 24 14:36:26 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2342) SPI Root node throws exception on getCanonicalNode In-Reply-To: <15413941.1237897708466.JavaMail.jira@jira.onehippo.org> Message-ID: <20454404.1237901848503.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2342?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2342. ------------------------------------------ Resolution: Fixed > SPI Root node throws exception on getCanonicalNode > -------------------------------------------------- > > Key: HREPTWO-2342 > URL: http://issues.onehippo.com/browse/HREPTWO-2342 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Frank van Lankvelt > Assignee: Bart van der Schans > Fix For: Backlog > > > Invoking getCanonicalNode() on the root-node throws the following exception: > javax.jcr.RepositoryException: failed to resolve path relative to node /: empty path -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 24 15:11:37 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 15:10:01 2009 Subject: [HippoRepos-dev] [17098] hippo-ecm: HREPTWO-2341: Add feedback panels Message-ID: <20090324141137.5E102C58B@svnnew.onehippo.org> Revision: 17098 Author: bvdschans Date: 2009-03-24 15:11:36 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-2341: Add feedback panels Modified Paths: -------------- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.properties hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/EditGroupPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/EditGroupPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ListGroupsPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ListGroupsPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/EditUserPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/EditUserPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ListUsersPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ListUsersPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetPasswordPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetPasswordPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.html hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.java Added Paths: ----------- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.html Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -22,7 +22,6 @@
    bar -
    Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -35,15 +35,10 @@ super(context, config); setOutputMarkupId(true); - // add feedback panel to show errors - FeedbackPanel feedback = new FeedbackPanel("feedback"); - feedback.setOutputMarkupId(true); - add(feedback); - - BreadCrumbBar breadCrumbBar = new AdminBreadCrumbBar("breadCrumbBar"); + final BreadCrumbBar breadCrumbBar = new AdminBreadCrumbBar("breadCrumbBar"); add(breadCrumbBar); - AdminPanel adminPanel = new AdminPanel("panel", context, breadCrumbBar); + final AdminPanel adminPanel = new AdminPanel("panel", context, breadCrumbBar); add(adminPanel); breadCrumbBar.setActive(adminPanel); @@ -69,5 +64,5 @@ public void showDialog(IDialogService.Dialog dialog) { getPluginContext().getService(IDialogService.class.getName(), IDialogService.class).show(dialog); } - + } Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.properties =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.properties 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.properties 2009-03-24 14:11:36 UTC (rev 17098) @@ -5,6 +5,7 @@ # form validators UsernameValidator.exists: '${input}' already exists, please think of another name GroupnameValidator.exists: Group '${input}' already exists, please think of another name +PasswordStrength.invalid: Password not strong enough, use minimally 4 characters # # Control panel Added: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.html (rev 0) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -0,0 +1,19 @@ + + +
    + + \ No newline at end of file Property changes on: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/crumbs/AdminBreadCrumbPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -17,12 +17,15 @@ import org.apache.wicket.extensions.breadcrumb.IBreadCrumbModel; import org.apache.wicket.extensions.breadcrumb.panel.BreadCrumbPanel; +import org.apache.wicket.markup.html.panel.FeedbackPanel; public abstract class AdminBreadCrumbPanel extends BreadCrumbPanel implements IAdminParticipant { @SuppressWarnings("unused") private static final String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; + private FeedbackPanel feedback; + public AdminBreadCrumbPanel(final String id, final IBreadCrumbModel breadCrumbModel) { super(id, breadCrumbModel); } @@ -30,5 +33,21 @@ public String getTitle() { return (String) getTitle(this).getObject(); } - + + /** + * Call this method to add a default feedback panel + */ + public void addFeedbackPanel() { + feedback = new FeedbackPanel("feedback"); + feedback.setOutputMarkupId(true); + add(feedback); + } + + /** + * get the feedback panel, might be null + * @return the feedback panel or null if not set + */ + public FeedbackPanel getFeedbackPanel() { + return feedback; + } } Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

    @@ -33,5 +33,5 @@ - + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/CreateGroupPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -53,7 +53,8 @@ public CreateGroupPanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel) { super(id, breadCrumbModel); setOutputMarkupId(true); - + addFeedbackPanel(); + // add form with markup id setter so it can be updated via ajax form = new Form("form", new CompoundPropertyModel(groupModel)); form.setOutputMarkupId(true); @@ -86,8 +87,13 @@ } catch (RepositoryException e) { Session.get().warn(getString("group-create-failed", groupModel)); log.error("Unable to create group '" + groupname + "' : ", e); + target.addComponent(getFeedbackPanel()); } } + @Override + protected void onError(AjaxRequestTarget target, Form form) { + target.addComponent(getFeedbackPanel()); + } }); // add a button that can be used to submit the form via ajax Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/EditGroupPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/EditGroupPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/EditGroupPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

    @@ -25,9 +25,9 @@
    - - + +
    - + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/EditGroupPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/EditGroupPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/EditGroupPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -50,6 +50,7 @@ final IModel model) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); this.model = model; @@ -81,6 +82,7 @@ } catch (RepositoryException e) { Session.get().warn(getString("group-save-failed", model)); log.error("Unable to save group '" + groupname + "' : ", e); + target.addComponent(getFeedbackPanel()); } } }); Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ListGroupsPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ListGroupsPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ListGroupsPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,12 +15,12 @@ * limitations under the License. --> - +

    [table]
    -
    + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ListGroupsPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ListGroupsPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ListGroupsPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -54,6 +54,7 @@ public ListGroupsPanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); add(new AjaxBreadCrumbPanelLink("create-group", context, this, CreateGroupPanel.class)); Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

    @@ -25,5 +25,5 @@

    [table]
    -
    + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -60,6 +60,8 @@ final IModel model) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); + this.model = model; final Group group = (Group) model.getObject(); @@ -85,11 +87,12 @@ group.addMembership(user.getUsername()); info(getString("group-member-added", model)); localList.removeAll(); - target.addComponent(SetMembersPanel.this); } catch (RepositoryException e) { error(getString("group-member-add-failed", model)); log.error("Failed to add member", e); } + target.addComponent(SetMembersPanel.this); + target.addComponent(getFeedbackPanel()); } }; item.add(action); @@ -132,11 +135,12 @@ group.removeMembership(username); info(getString("group-member-removed", null)); localList.removeAll(); - target.addComponent(SetMembersPanel.this); } catch (RepositoryException e) { error(getString("group-member-remove-failed", null)); log.error("Failed to remove memberships", e); } + target.addComponent(SetMembersPanel.this); + target.addComponent(getFeedbackPanel()); } }); } Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

    • @@ -40,5 +40,5 @@ - + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/ViewGroupPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -55,6 +55,7 @@ final IModel model) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); this.model = model; final Group group = (Group) model.getObject(); @@ -100,6 +101,7 @@ return "group-delete-text"; } }); + target.addComponent(getFeedbackPanel()); } }); } Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

      I want to give the: @@ -55,5 +55,5 @@ - + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/permissions/SetPermissionsPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -59,6 +59,7 @@ final IModel model) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); this.model = model; this.domain = (Domain) model.getObject(); @@ -80,6 +81,7 @@ error(getString("permissions-group-add-failed", model)); log.error("Failed to add permission", e); } + target.addComponent(getFeedbackPanel()); } }; @@ -139,6 +141,7 @@ error(getString("permissions-group-remove-failed", model)); log.error("Failed to revoke permission", e); } + target.addComponent(getFeedbackPanel()); } }); } Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

      Please fill in the details of the new user

      @@ -49,5 +49,5 @@ - + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/CreateUserPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -26,6 +26,7 @@ import org.apache.wicket.extensions.breadcrumb.IBreadCrumbModel; import org.apache.wicket.extensions.breadcrumb.IBreadCrumbParticipant; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.PasswordTextField; @@ -58,11 +59,9 @@ public CreateUserPanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel) { super(id, breadCrumbModel); setOutputMarkupId(true); + + addFeedbackPanel(); - - // title -// add(new Label("title", new StringResourceModel("user-create-title", userModel))); - // add form with markup id setter so it can be updated via ajax form = new Form("form", new CompoundPropertyModel(userModel)); form.setOutputMarkupId(true); @@ -88,13 +87,12 @@ final PasswordTextField password = new PasswordTextField("password", new Model("")); password.setResetPassword(false); - password.add(StringValidator.minimumLength(4)); + password.add(new PasswordStrengthValidator()); form.add(password); final PasswordTextField passwordCheck = new PasswordTextField("password-check"); passwordCheck.setModel(password.getModel()); passwordCheck.setResetPassword(false); - passwordCheck.add(StringValidator.minimumLength(4)); form.add(passwordCheck); form.add(new EqualPasswordInputValidator(password, passwordCheck)); @@ -119,10 +117,16 @@ } catch (RepositoryException e) { Session.get().warn(getString("user-create-failed", userModel)); log.error("Unable to create user '" + username + "' : ", e); + target.addComponent(getFeedbackPanel()); } } + + @Override + protected void onError(AjaxRequestTarget target, Form form) { + target.addComponent(getFeedbackPanel()); + } }); - + // add a button that can be used to submit the form via ajax form.add(new AjaxButton("cancel-button") { private static final long serialVersionUID = 1L; @@ -153,6 +157,25 @@ } } + + class PasswordStrengthValidator extends StringValidator { + private static final long serialVersionUID = 1L; + + @Override + protected void onValidate(IValidatable validatable) { + String password = (String) validatable.getValue(); + // currently only check length + if (password.length() < 4) { + error(validatable); + } + } + + @Override + protected String resourceKey() { + return "PasswordStrength.invalid"; + } + } + public IModel getTitle(Component component) { return new StringResourceModel("user-create", component, null); } Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/EditUserPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/EditUserPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/EditUserPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

      @@ -41,5 +41,5 @@ - + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/EditUserPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/EditUserPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/EditUserPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -51,7 +51,8 @@ public EditUserPanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel, final IModel model) { super(id, breadCrumbModel); setOutputMarkupId(true); - + addFeedbackPanel(); + this.model = model; // add form with markup id setter so it can be updated via ajax @@ -96,8 +97,13 @@ } catch (RepositoryException e) { Session.get().warn(getString("user-save-failed", model)); log.error("Unable to save user '" + username + "' : ", e); + target.addComponent(getFeedbackPanel()); } } + @Override + protected void onError(AjaxRequestTarget target, Form form) { + target.addComponent(getFeedbackPanel()); + } }); // add a button that can be used to submit the form via ajax Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ListUsersPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ListUsersPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ListUsersPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,12 +15,12 @@ * limitations under the License. --> - +

      Things you can do

      • Or click on a username to edit one
      [table]
      -
      + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ListUsersPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ListUsersPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ListUsersPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -56,8 +56,8 @@ public ListUsersPanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); - add(new AjaxBreadCrumbPanelLink("create-user", context, this, CreateUserPanel.class)); List columns = new ArrayList(); Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

      @@ -41,5 +41,5 @@
    • - + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -56,6 +56,8 @@ final IModel model) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); + this.model = model; final User user = (User) model.getObject(); @@ -71,11 +73,12 @@ selectedGroup.addMembership(user.getUsername()); info(getString("user-membership-added", new DetachableGroup(selectedGroup))); localList.removeAll(); - target.addComponent(SetMembershipsPanel.this); } catch (RepositoryException e) { error(getString("user-membership-add-failed", new DetachableGroup(selectedGroup))); log.error("Failed to add memberships", e); } + target.addComponent(SetMembershipsPanel.this); + target.addComponent(getFeedbackPanel()); } }; @@ -132,11 +135,12 @@ model.getGroup().removeMembership(user.getUsername()); info(getString("user-membership-removed", model)); localList.removeAll(); - target.addComponent(SetMembershipsPanel.this); } catch (RepositoryException e) { error(getString("user-membership-remove-failed", model)); log.error("Failed to remove memberships", e); } + target.addComponent(SetMembershipsPanel.this); + target.addComponent(getFeedbackPanel()); } }); } Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetPasswordPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetPasswordPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetPasswordPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

      @@ -33,5 +33,5 @@ - + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetPasswordPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetPasswordPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetPasswordPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -50,6 +50,8 @@ public SetPasswordPanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel, final IModel model) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); + this.model = model; final User user = (User) model.getObject(); @@ -89,9 +91,13 @@ } catch (RepositoryException e) { Session.get().warn(getString("user-save-failed", model)); log.error("Unable to set password for user '" + username + "' : ", e); - //panel.refresh(); + target.addComponent(getFeedbackPanel()); } } + @Override + protected void onError(AjaxRequestTarget target, Form form) { + target.addComponent(getFeedbackPanel()); + } }); // add a button that can be used to submit the form via ajax Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.html =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.html 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.html 2009-03-24 14:11:36 UTC (rev 17098) @@ -15,7 +15,7 @@ * limitations under the License. --> - +

      • @@ -74,5 +74,5 @@
    • -
      + Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.java 2009-03-24 13:36:29 UTC (rev 17097) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/ViewUserPanel.java 2009-03-24 14:11:36 UTC (rev 17098) @@ -55,6 +55,7 @@ final IModel model) { super(id, breadCrumbModel); setOutputMarkupId(true); + addFeedbackPanel(); this.model = model; final User user = (User) model.getObject(); @@ -116,7 +117,7 @@ private static final long serialVersionUID = 1L; @Override - public void onClick(AjaxRequestTarget target) { + public void onClick(final AjaxRequestTarget target) { context.getService(IDialogService.class.getName(), IDialogService.class).show( new ConfirmDeleteDialog(model, this) { private static final long serialVersionUID = 1L; @@ -124,6 +125,7 @@ @Override protected void onOk() { deleteUser(model); + target.addComponent(getFeedbackPanel()); } @Override From helpdesk at onehippo.com Tue Mar 24 15:13:41 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 24 15:12:03 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2341) Cannot create user In-Reply-To: <2968742.1237560935358.JavaMail.jira@jira.onehippo.org> Message-ID: <11062169.1237904021388.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2341. ------------------------------------------ Resolution: Fixed > Cannot create user > ------------------ > > Key: HREPTWO-2341 > URL: http://issues.onehippo.com/browse/HREPTWO-2341 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Frank van Lankvelt > Assignee: Bart van der Schans > Fix For: Backlog > > > It is not possible to create a user. The form does show up and allows me to enter data & click "Create",but this does not have any effect. The form stays open and when I navigate back to the overview page, the user is not listed. > I'm using the data: > username: abc > first: a > last: b > email: c@d.nl > password: abc > Perhaps there is a password restriction? -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 24 15:55:09 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 15:53:34 2009 Subject: [HippoRepos-dev] [17099] hippo-ecm/trunk: HREPTWO-2011: Use userSession for folderWorkflow actions, add correct permissions to defaultread Message-ID: <20090324145509.7D293C58B@svnnew.onehippo.org> Revision: 17099 Author: bvdschans Date: 2009-03-24 15:55:08 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-2011: Use userSession for folderWorkflow actions, add correct permissions to defaultread Modified Paths: -------------- hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java Modified: hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml =================================================================== --- hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml 2009-03-24 14:11:36 UTC (rev 17098) +++ hippo-ecm/trunk/package/auth/src/main/resources/domain-defaultread.xml 2009-03-24 14:55:08 UTC (rev 17099) @@ -225,11 +225,11 @@ - + hippo:domainrule - + hippo:facetrule @@ -247,6 +247,28 @@ + + + hippo:domainrule + + + + hippo:facetrule + + + nodetype + + + Name + + + hippo:propertyreference + + + true + + + hippo:domainrule @@ -313,6 +335,28 @@ + + + hippo:domainrule + + + + hippo:facetrule + + + jcr:primaryType + + + Name + + + hippostd:templates + + + true + + + hippo:domainrule Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java 2009-03-24 14:11:36 UTC (rev 17098) +++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/standardworkflow/FolderWorkflowImpl.java 2009-03-24 14:55:08 UTC (rev 17099) @@ -63,7 +63,6 @@ private static final long serialVersionUID = 1L; private final Session userSession; - private final Session rootSession; private final WorkflowContext workflowContext; private final Node subject; @@ -72,7 +71,6 @@ this.workflowContext = context; this.subject = subject; this.userSession = userSession; - this.rootSession = rootSession; } public Map hints() throws WorkflowException, MappingException, RepositoryException, RemoteException { @@ -100,9 +98,9 @@ protected Map> prototypes() throws RepositoryException { Map> types = new TreeMap>(); try { - QueryManager qmgr = rootSession.getWorkspace().getQueryManager(); + QueryManager qmgr = userSession.getWorkspace().getQueryManager(); Vector foldertypes = new Vector(); - Node templates = rootSession.getRootNode().getNode("hippo:configuration/hippo:queries/hippo:templates"); + Node templates = userSession.getRootNode().getNode("hippo:configuration/hippo:queries/hippo:templates"); Value[] foldertypeRefs = null; if (subject.hasProperty("hippostd:foldertype")) { try { @@ -176,13 +174,13 @@ public String add(String category, String template, Map arguments) throws WorkflowException, MappingException, RepositoryException, RemoteException { String name = arguments.get("name"); - QueryManager qmgr = rootSession.getWorkspace().getQueryManager(); - Node foldertype = rootSession.getRootNode().getNode("hippo:configuration/hippo:queries/hippo:templates").getNode(category); + QueryManager qmgr = userSession.getWorkspace().getQueryManager(); + Node foldertype = userSession.getRootNode().getNode("hippo:configuration/hippo:queries/hippo:templates").getNode(category); Query query = qmgr.getQuery(foldertype); query = qmgr.createQuery(foldertype.getProperty("jcr:statement").getString(), query.getLanguage()); QueryResult rs = query.execute(); Node result = null; - Node target = rootSession.getRootNode(); + Node target = userSession.getRootNode(); if(!subject.getPath().substring(1).equals("")) target = target.getNode(subject.getPath().substring(1)); Map renames = new TreeMap(); @@ -230,7 +228,7 @@ } } if(result != null) { - rootSession.save(); + userSession.save(); return result.getPath(); } else { return null; @@ -246,7 +244,7 @@ if(name.startsWith("/")) name = name.substring(1); String path = subject.getPath().substring(1); - Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + Node folder = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); if (folder.hasNode(name)) { Node offspring = folder.getNode(name); if (atticPath != null) { @@ -254,8 +252,8 @@ offspring.remove(); folder.save(); } else { - if (rootSession.getRootNode().hasNode(atticPath.substring(1))) { - rootSession.getWorkspace().move(folder.getPath() + "/" + offspring.getName(), + if (userSession.getRootNode().hasNode(atticPath.substring(1))) { + userSession.getWorkspace().move(folder.getPath() + "/" + offspring.getName(), atticPath + "/" + offspring.getName()); } else { throw new WorkflowException("Attic " + atticPath + " for archivation does not exist"); @@ -270,7 +268,7 @@ public void reorder(List newOrder) throws WorkflowException, MappingException, RepositoryException, RemoteException { List list = new ArrayList(newOrder); Collections.reverse(list); - Node folder = rootSession.getNodeByUUID(subject.getUUID()); + Node folder = userSession.getNodeByUUID(subject.getUUID()); for (String item : list) { Node head = folder.getNodes().nextNode(); if (!head.isSame(folder.getNode(item))) { @@ -284,7 +282,7 @@ if(name.startsWith("/")) name = name.substring(1); String path = subject.getPath().substring(1); - Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + Node folder = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); if (folder.hasNode(name)) { Node offspring = folder.getNode(name); offspring.remove(); @@ -294,8 +292,8 @@ public void delete(Document document) throws WorkflowException, MappingException, RepositoryException, RemoteException { String path = subject.getPath().substring(1); - Node folderNode = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); - Node documentNode = rootSession.getNodeByUUID(document.getIdentity()); + Node folderNode = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); + Node documentNode = userSession.getNodeByUUID(document.getIdentity()); if (documentNode.getPath().startsWith(folderNode.getPath()+"/")) { documentNode.remove(); folderNode.save(); @@ -321,7 +319,7 @@ if(name.startsWith("/")) name = name.substring(1); String path = subject.getPath().substring(1); - Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + Node folder = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); if (folder.hasNode(name)) { if (folder.hasNode(newName)) { throw new WorkflowException("Cannot move document to same name"); @@ -339,8 +337,8 @@ public void rename(Document document, String newName) throws WorkflowException, MappingException, RepositoryException, RemoteException { String path = subject.getPath().substring(1); - Node folderNode = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); - Node documentNode = rootSession.getNodeByUUID(document.getIdentity()); + Node folderNode = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); + Node documentNode = userSession.getNodeByUUID(document.getIdentity()); if(documentNode.isNodeType(HippoNodeType.NT_DOCUMENT) && documentNode.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { documentNode = documentNode.getParent(); } @@ -571,12 +569,12 @@ public Document copyFrom(Document offspring, Document targetFolder, String targetName, Map arguments) throws WorkflowException, MappingException, RepositoryException, RemoteException { String path = subject.getPath().substring(1); - Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); - Node destination = rootSession.getNodeByUUID(targetFolder.getIdentity()); + Node folder = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); + Node destination = userSession.getNodeByUUID(targetFolder.getIdentity()); if (folder.isSame(destination)) { throw new WorkflowException("Cannot copy document to same folder, use duplicate instead"); } - Node source = rootSession.getNodeByUUID(offspring.getIdentity()); + Node source = userSession.getNodeByUUID(offspring.getIdentity()); if (source.getAncestor(folder.getDepth()).isSame(folder)) { ((EmbedWorkflow)workflowContext.getWorkflow("embedded", new Document(destination.getUUID()))).copyTo(new Document(subject.getUUID()), offspring, targetName, arguments); } @@ -585,11 +583,11 @@ public Document copyTo(Document sourceFolder, Document offspring, String targetName, Map arguments) throws WorkflowException, MappingException, RepositoryException, RemoteException { String path = subject.getPath().substring(1); - Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + Node folder = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); if (folder.hasNode(targetName)) { throw new WorkflowException("Cannot copy document when document with same name exists"); } - Node source = rootSession.getNodeByUUID(offspring.getIdentity()); + Node source = userSession.getNodeByUUID(offspring.getIdentity()); if (source.isNodeType(HippoNodeType.NT_DOCUMENT) && source.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { source = source.getParent(); } @@ -607,12 +605,12 @@ public Document moveFrom(Document offspring, Document targetFolder, String targetName, Map arguments) throws WorkflowException, MappingException, RepositoryException, RemoteException { String path = subject.getPath().substring(1); - Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); - Node destination = rootSession.getNodeByUUID(targetFolder.getIdentity()); + Node folder = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); + Node destination = userSession.getNodeByUUID(targetFolder.getIdentity()); if (folder.isSame(destination)) { throw new WorkflowException("Cannot move document to same folder, use duplicate instead"); } - Node source = rootSession.getNodeByUUID(offspring.getIdentity()); + Node source = userSession.getNodeByUUID(offspring.getIdentity()); if (source.getAncestor(folder.getDepth()).isSame(folder)) { ((EmbedWorkflow)workflowContext.getWorkflow("embedded", new Document(destination.getUUID()))).moveTo(new Document(subject.getUUID()), offspring, targetName, arguments); } @@ -621,11 +619,11 @@ public Document moveTo(Document sourceFolder, Document offspring, String targetName, Map arguments) throws WorkflowException, MappingException, RepositoryException, RemoteException { String path = subject.getPath().substring(1); - Node folder = (path.equals("") ? rootSession.getRootNode() : rootSession.getRootNode().getNode(path)); + Node folder = (path.equals("") ? userSession.getRootNode() : userSession.getRootNode().getNode(path)); if (folder.hasNode(targetName)) { throw new WorkflowException("Cannot move document when document with same name exists"); } - Node source = rootSession.getNodeByUUID(offspring.getIdentity()); + Node source = userSession.getNodeByUUID(offspring.getIdentity()); if (source.isNodeType(HippoNodeType.NT_DOCUMENT) && source.getParent().isNodeType(HippoNodeType.NT_HANDLE)) { source = source.getParent(); } From helpdesk at onehippo.com Tue Mar 24 15:55:43 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 24 15:54:04 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2011) Authorization problems when creating new documents In-Reply-To: <28961700.1229613058878.JavaMail.jira@hat01> Message-ID: <2204906.1237906543449.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2011?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2011. ------------------------------------------ Resolution: Fixed > Authorization problems when creating new documents > -------------------------------------------------- > > Key: HREPTWO-2011 > URL: http://issues.onehippo.com/browse/HREPTWO-2011 > Project: Hippo Repository 2 > Issue Type: Bug > Reporter: (Berry) A.W. van Halderen > Assignee: Bart van der Schans > Fix For: Backlog > > Time Spent: 1 hour > Remaining Estimate: 0 minutes > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 24 15:58:02 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Tue Mar 24 15:56:27 2009 Subject: [HippoRepos-dev] [17100] hippo-ecm/trunk: HREPTWO-2279: generate events for facetsearches Message-ID: <20090324145803.0D019C58B@svnnew.onehippo.org> Revision: 17100 Author: fvlankvelt Date: 2009-03-24 15:58:02 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-2279: generate events for facetsearches - A more robust facetsearchprovider (null check) - Foldertree always redraws tree; it won't contribute when there are no changes - detach() must be called on virtual nodes before Session.refresh() is called - implement detach in EditorManager - look up browser in editing-reviewed-actions - state icon shown in virtual tree - introduction of the FacetSearchObserver; it monitors facetsearches in the system and allows one to register EventListeners in virtual trees. - convention for events that are generated in the obseration manager, based on the pending changes: path of the event is the path of the node that changed. (getType() value 0 is used to differentiate the event from the other, JCR native, events) - ajax tree rendering now detects parent rendering, iso relying on detach. - removed hack from plugin-request-target to call detach on nested components Modified Paths: -------------- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchProvider.java hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorManagerPlugin.java hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/StateIconAttributeModifier.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java hippo-ecm/trunk/frontend/engine/pom.xml hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/Home.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/PluginRequestTarget.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrNodeModel.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrSessionModel.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/CachedTreeModel.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/service/render/AbstractRenderService.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/AbstractTree.java hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java hippo-ecm/trunk/frontend/engine/src/test/resources/log4j.xml hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml Added Paths: ----------- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/FacetSearchObserver.java hippo-ecm/trunk/frontend/engine/src/test/resources/org/hippoecm/repository/extension.xml hippo-ecm/trunk/frontend/engine/src/test/resources/org/hippoecm/repository/test.cnd Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchProvider.java =================================================================== --- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchProvider.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/FacetSearchProvider.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -73,39 +73,42 @@ if (entries == null) { Map primaryNodes = new HashMap(); Node node = model.getNode(); - try { - NodeIterator subNodes = node.getNode(HippoNodeType.HIPPO_RESULTSET).getNodes(); - while (subNodes.hasNext()) { - Node subNode = subNodes.nextNode(); - if (subNode == null || !(subNode instanceof HippoNode)) { - continue; - } - try { - Node canonicalNode = ((HippoNode) subNode).getCanonicalNode(); - if (canonicalNode == null) { - // no physical equivalent exists + // workaround: node may disappear without notification + if (node != null) { + try { + NodeIterator subNodes = node.getNode(HippoNodeType.HIPPO_RESULTSET).getNodes(); + while (subNodes.hasNext()) { + Node subNode = subNodes.nextNode(); + if (subNode == null || !(subNode instanceof HippoNode)) { continue; } - if (canonicalNode.isNodeType(HippoNodeType.NT_DOCUMENT)) { - Node parentNode = canonicalNode.getParent(); - if (parentNode.isNodeType(HippoNodeType.NT_HANDLE)) { - if (primaryNodes.containsKey(parentNode.getUUID())) { - Node currentNode = primaryNodes.get(parentNode.getUUID()); - if (subNode.getIndex() < currentNode.getIndex()) { + try { + Node canonicalNode = ((HippoNode) subNode).getCanonicalNode(); + if (canonicalNode == null) { + // no physical equivalent exists + continue; + } + if (canonicalNode.isNodeType(HippoNodeType.NT_DOCUMENT)) { + Node parentNode = canonicalNode.getParent(); + if (parentNode.isNodeType(HippoNodeType.NT_HANDLE)) { + if (primaryNodes.containsKey(parentNode.getUUID())) { + Node currentNode = primaryNodes.get(parentNode.getUUID()); + if (subNode.getIndex() < currentNode.getIndex()) { + primaryNodes.put(parentNode.getUUID(), subNode); + } + } else { primaryNodes.put(parentNode.getUUID(), subNode); } - } else { - primaryNodes.put(parentNode.getUUID(), subNode); } } + } catch (ItemNotFoundException ex) { + // physical item no longer exists + continue; } - } catch (ItemNotFoundException ex) { - // physical item no longer exists - continue; } + } catch (RepositoryException ex) { + log.error(ex.getMessage()); } - } catch (RepositoryException ex) { - log.error(ex.getMessage()); } entries = new LinkedList(); for (Node subNode : primaryNodes.values()) { @@ -115,7 +118,7 @@ } // impl IDataProvider - + public Iterator iterator(int first, int count) { load(); List displayedList = new ArrayList(entries); @@ -159,19 +162,24 @@ } public void startObservation() { - // simply forward any events on the resultset node to our listeners - try { - resultSetModel = new JcrNodeModel(model.getNode().getNode(HippoNodeType.HIPPO_RESULTSET)); - resultSetModel.setObservationContext(obContext); - resultSetModel.startObservation(); - } catch (RepositoryException ex) { - log.error(ex.getMessage()); + // workaround: facetsearch does not generate events, so the node may disappear at any time + Node node = model.getNode(); + if (node != null) { + // simply forward any events on the resultset node to our listeners + try { + resultSetModel = new JcrNodeModel(node.getNode(HippoNodeType.HIPPO_RESULTSET)); + resultSetModel.setObservationContext(obContext); + resultSetModel.startObservation(); + } catch (RepositoryException ex) { + log.error(ex.getMessage()); + } } } public void stopObservation() { if (resultSetModel != null) { resultSetModel.stopObservation(); + resultSetModel = null; } } Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java =================================================================== --- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -24,6 +24,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.tree.ITreeState; import org.hippoecm.addon.workflow.ContextWorkflowPlugin; +import org.hippoecm.frontend.PluginRequestTarget; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.model.ModelReference; import org.hippoecm.frontend.model.event.IObserver; @@ -110,6 +111,12 @@ } @Override + public void render(PluginRequestTarget target) { + super.render(target); + tree.updateTree(); + } + + @Override public void onBeforeRender() { tree.detach(); super.onBeforeRender(); Modified: hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorManagerPlugin.java =================================================================== --- hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorManagerPlugin.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/addon/cms/edit/src/main/java/org/hippoecm/frontend/plugins/cms/edit/EditorManagerPlugin.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -100,6 +100,13 @@ } public void detach() { + for (Map.Entry entry : lastReferences.entrySet()) { + entry.getKey().detach(); + entry.getValue().detach(); + } + for (JcrNodeModel model : editors.keySet()) { + model.detach(); + } } public IObservable getObservable() { @@ -327,7 +334,7 @@ } } } catch (RepositoryException ex) { - log.error(ex.getMessage()); + log.error(ex.getMessage(), ex); } if (target != null) { modelService.setModel(new JcrNodeModel(target)); Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -201,8 +201,9 @@ add(new WorkflowAction("done", new StringResourceModel("done", this, null, "Done").getString(), null) { @Override public String execute(Workflow wf) throws Exception { - IBrowseService browser = context.getService("browser.id", IBrowseService.class); - IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID),IEditor.class); + IPluginConfig config = getPluginConfig(); + IBrowseService browser = context.getService(config.getString("browser.id"), IBrowseService.class); + IEditor editor = context.getService(config.getString(IEditorManager.EDITOR_ID),IEditor.class); BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.commitEditableInstance(); Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/StateIconAttributeModifier.java =================================================================== --- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/StateIconAttributeModifier.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/list/resolvers/StateIconAttributeModifier.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -29,6 +29,7 @@ import org.hippoecm.frontend.model.nodetypes.JcrNodeTypeModel; import org.hippoecm.frontend.model.properties.JcrPropertyModel; import org.hippoecm.frontend.model.properties.JcrPropertyValueModel; +import org.hippoecm.repository.api.HippoNodeType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,15 +77,23 @@ if (!loaded) { try { Node node = nodeModel.getNode(); - if (node != null && node.hasNode(node.getName())) { - Node canonicalNode = node.getNode(node.getName()); - if (canonicalNode.hasProperty("hippostd:stateSummary")) { - cssClass = PREFIX + canonicalNode.getProperty("hippostd:stateSummary").getString() + SUFFIX; + if (node != null) { + Node document = null; + if (node.isNodeType(HippoNodeType.NT_HANDLE)) { + document = node.getNode(node.getName()); + } else if (node.isNodeType(HippoNodeType.NT_DOCUMENT)) { + document = node; } - IModel stateModel = new JcrPropertyValueModel(new JcrPropertyModel(canonicalNode - .getProperty("hippostd:stateSummary"))); - summary = (String) new TypeTranslator(new JcrNodeTypeModel("hippostd:publishableSummary")) - .getValueName("hippostd:stateSummary", stateModel).getObject(); + if (document != null) { + if (document.isNodeType("hippostd:publishableSummary")) { + cssClass = PREFIX + document.getProperty("hippostd:stateSummary").getString() + SUFFIX; + IModel stateModel = new JcrPropertyValueModel(new JcrPropertyModel(document + .getProperty("hippostd:stateSummary"))); + summary = (String) new TypeTranslator(new JcrNodeTypeModel( + "hippostd:publishableSummary")).getValueName("hippostd:stateSummary", + stateModel).getObject(); + } + } } } catch (RepositoryException ex) { log.error("Unable to obtain state properties", ex); Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -16,19 +16,19 @@ package org.hippoecm.addon.workflow; import java.rmi.RemoteException; -import javax.jcr.Node; + import javax.jcr.RepositoryException; import javax.jcr.Session; + import org.apache.wicket.ResourceReference; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.model.StringResourceModel; -import org.hippoecm.frontend.model.JcrNodeModel; -import org.hippoecm.frontend.service.IEditorManager; +import org.hippoecm.frontend.Home; +import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.service.ServiceException; import org.hippoecm.frontend.service.render.RenderPlugin; import org.hippoecm.frontend.session.UserSession; -import org.hippoecm.repository.api.Document; import org.hippoecm.repository.api.HippoWorkspace; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; @@ -92,10 +92,12 @@ public static abstract class Compatibility extends StdWorkflow { RenderPlugin enclosingPlugin; + IPluginContext pluginContext; - public Compatibility(String id, String name, RenderPlugin enclosingPlugin) { + public Compatibility(String id, String name, RenderPlugin enclosingPlugin, IPluginContext context) { super(id, name); this.enclosingPlugin = enclosingPlugin; + this.pluginContext = context; } protected abstract void execute(Workflow wf) throws Exception; @@ -109,6 +111,7 @@ WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); Workflow workflow = manager.getWorkflow(descriptor); execute(workflow); + pluginContext.getService(Home.class.getName(), Home.class).detach(); session.refresh(false); } catch (WorkflowException ex) { System.err.println(ex.getClass().getName() + ": " + ex.getMessage()); Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/WorkflowPlugin.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -70,5 +70,7 @@ MenuHierarchy menu = buildMenu(); menu.restructure(); addOrReplace(new MenuBar("menu", menu)); + + redraw(); } } Modified: hippo-ecm/trunk/frontend/engine/pom.xml =================================================================== --- hippo-ecm/trunk/frontend/engine/pom.xml 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/pom.xml 2009-03-24 14:58:02 UTC (rev 17100) @@ -141,18 +141,6 @@ - - - false - ${basedir}/test/java - - ** - - - **/*.java - - - org.apache.maven.plugins Added: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/FacetSearchObserver.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/FacetSearchObserver.java (rev 0) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/FacetSearchObserver.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -0,0 +1,245 @@ +/* + * Copyright 2009 Hippo. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.hippoecm.frontend; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.jcr.Node; +import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.observation.Event; +import javax.jcr.observation.EventIterator; +import javax.jcr.observation.EventListener; +import javax.jcr.observation.ObservationManager; +import javax.jcr.query.Query; +import javax.jcr.query.QueryManager; +import javax.jcr.query.QueryResult; + +import org.hippoecm.repository.api.HippoNodeType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FacetSearchObserver implements EventListener { + + static final Logger log = LoggerFactory.getLogger(FacetSearchObserver.class); + + private Session session; + private Map listeners; + private Set upstream; + + public FacetSearchObserver(Session session) { + this.session = session; + this.upstream = new HashSet(); + this.listeners = new HashMap(); + } + + void start() { + try { + QueryManager queryMgr = session.getWorkspace().getQueryManager(); + Query query = queryMgr.createQuery("select * from hippo:facetsearch", Query.SQL); + QueryResult result = query.execute(); + NodeIterator nodes = result.getNodes(); + + ObservationManager obMgr = session.getWorkspace().getObservationManager(); + while (nodes.hasNext()) { + Node node = nodes.nextNode(); + if (node != null) { + String uuid = node.getProperty(HippoNodeType.HIPPO_DOCBASE).getString(); + String docbase = session.getNodeByUUID(uuid).getPath(); + listeners.put(node.getPath(), addFacetSearchListener(obMgr, docbase, node)); + } + } + + obMgr.addEventListener(this, Event.NODE_ADDED | Event.NODE_REMOVED, "/", true, null, + new String[] { HippoNodeType.NT_FACETSEARCH }, false); + } catch (RepositoryException ex) { + log.error("Failure to subscribe to facetsearch nodes", ex); + } + } + + void stop() { + try { + ObservationManager obMgr = session.getWorkspace().getObservationManager(); + obMgr.removeEventListener(this); + + Iterator> iter = listeners.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + obMgr.removeEventListener(entry.getValue()); + iter.remove(); + } + } catch (RepositoryException ex) { + log.error("Failed to unsubscribe", ex); + } + } + + public void addListener(EventListener listener, String basePath) { + if (upstream.size() == 0) { + start(); + } + UpstreamEntry entry = new UpstreamEntry(); + entry.basePath = basePath; + entry.listener = listener; + upstream.add(entry); + } + + public void removeListener(EventListener listener) { + Iterator iter = upstream.iterator(); + while (iter.hasNext()) { + UpstreamEntry entry = iter.next(); + if (entry.listener == listener) { + iter.remove(); + break; + } + } + if (upstream.size() == 0) { + stop(); + } + } + + @Override + public void onEvent(EventIterator events) { + try { + ObservationManager obMgr = session.getWorkspace().getObservationManager(); + while (events.hasNext()) { + Event event = events.nextEvent(); + try { + String path = event.getPath(); + switch (event.getType()) { + case Event.NODE_ADDED: + Node node = session.getRootNode().getNode(path.substring(1)); + String uuid = node.getProperty(HippoNodeType.HIPPO_DOCBASE).getString(); + String docbase = session.getNodeByUUID(uuid).getPath(); + listeners.put(path, addFacetSearchListener(obMgr, docbase, node)); + break; + case Event.NODE_REMOVED: + EventListener listener = listeners.remove(path); + if (listener != null) { + obMgr.removeEventListener(listener); + } else { + log.warn("No listener found for removed facetsearch at " + path); + } + break; + default: + log.warn("unexpected event type " + event.getType()); + } + } catch (RepositoryException ex) { + log.error("Error while processing event", ex); + } + } + } catch (RepositoryException ex) { + log.error("Error obtaining observation manager", ex); + } + } + + private FacetSearchListener addFacetSearchListener(ObservationManager mgr, String docbase, Node node) + throws RepositoryException { + FacetSearchListener listener = new FacetSearchListener(node.getPath()); + mgr.addEventListener(listener, Event.NODE_ADDED | Event.NODE_REMOVED, docbase, true, null, + null, false); + return listener; + } + + private static class UpstreamEntry { + String basePath; + EventListener listener; + } + + private class FacetSearchListener implements EventListener { + + // path to the facetsearch node + private String fsNodePath; + + FacetSearchListener(String path) { + this.fsNodePath = path; + } + + @Override + public void onEvent(EventIterator events) { + List base = new ArrayList(1); + base.add(new Event() { + + @Override + public String getPath() throws RepositoryException { + return fsNodePath; + } + + @Override + public int getType() { + return 0; + } + + @Override + public String getUserID() { + return "FacetSearchObserver"; + } + + }); + for (UpstreamEntry listener : upstream) { + // notify listener if it registered at an ancestor or child + if (fsNodePath.startsWith(listener.basePath) || listener.basePath.startsWith(fsNodePath)) { + final Iterator baseIter = base.iterator(); + listener.listener.onEvent(new EventIterator() { + + @Override + public Event nextEvent() { + return baseIter.next(); + } + + @Override + public long getPosition() { + return 0; + } + + @Override + public long getSize() { + return -1; + } + + @Override + public void skip(long skipNum) { + } + + @Override + public boolean hasNext() { + return baseIter.hasNext(); + } + + @Override + public Object next() { + return nextEvent(); + } + + @Override + public void remove() { + throw new UnsupportedOperationException("EventIterator is immutable"); + } + + }); + } + } + } + + } + +} Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/Home.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/Home.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/Home.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -47,6 +47,7 @@ private PluginContext context; private IRenderService root; private DialogService dialogService; + private ObservableRegistry obRegistry; private IPluginConfigService pluginConfigService; public Home() { @@ -63,7 +64,7 @@ pluginConfigService = configFactory.getPluginConfigService(); context.registerService(pluginConfigService, IPluginConfigService.class.getName()); - ObservableRegistry obRegistry = new ObservableRegistry(context, null); + obRegistry = new ObservableRegistry(context, null); obRegistry.startObservation(); dialogService = new DialogService(); @@ -97,6 +98,9 @@ } void update() { + // objects may be invalid after refresh, so reacquire them when needed + detach(); + // process JCR events JcrObservationManager.getInstance().processEvents(); Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -28,8 +28,10 @@ import java.util.Set; import java.util.WeakHashMap; +import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.NodeIterator; +import javax.jcr.PathNotFoundException; import javax.jcr.Property; import javax.jcr.PropertyIterator; import javax.jcr.RepositoryException; @@ -45,6 +47,8 @@ import org.hippoecm.frontend.model.properties.JcrPropertyModel; import org.hippoecm.frontend.model.properties.JcrPropertyValueModel; import org.hippoecm.frontend.session.UserSession; +import org.hippoecm.repository.api.HippoNode; +import org.hippoecm.repository.api.HippoNodeType; import org.hippoecm.repository.api.HippoSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -73,11 +77,15 @@ String name; NodeEvent(String name, int type) { + this.name = name; this.type = type; + if (type != 0 && name == null) { + throw new IllegalArgumentException("Name is mandatory when type of event is known"); + } } public String getPath() throws RepositoryException { - if (name != null) { + if (type != 0) { return path + "/" + name; } else { return path; @@ -118,7 +126,7 @@ JcrPropertyModel propertyModel = new JcrPropertyModel(property); if (property.getDefinition().isMultiple()) { List values = new ArrayList(propertyModel.size()); - Iterator iter = propertyModel.iterator(0, propertyModel.size()); + Iterator iter = propertyModel.iterator(0, propertyModel.size()); while (iter.hasNext()) { values.add(propertyModel.model(iter.next()).getObject()); } @@ -177,7 +185,6 @@ } private class JcrListener extends WeakReference implements EventListener { - Node root; String[] nodeTypes; boolean isDeep; String path; @@ -185,6 +192,7 @@ Map pending; List events; ObservationManager obMgr; + FacetSearchObserver fso; WeakReference sessionRef; JcrListener(UserSession userSession, EventListener upstream) { @@ -212,23 +220,28 @@ this.isDeep = isDeep; this.nodeTypes = nodeTypes; - Session session = sessionRef.get().getJcrSession(); - if ("/".equals(absPath)) { - root = session.getRootNode(); - } else { - root = session.getRootNode().getNode(absPath.substring(1)); - } + Session session = getSession().getJcrSession(); pending = new HashMap(); if (session != null) { obMgr = session.getWorkspace().getObservationManager(); obMgr.addEventListener(this, eventTypes, absPath, isDeep, uuid, nodeTypes, noLocal); + + // listen to facetsearches + if (listenToFacetSearch()) { + fso = getSession().getJcrSessionModel().getFacetSearchObserver(); + fso.addListener(this, absPath); + } } else { log.error("No jcr session bound to wicket session"); } } void dispose() { + if (fso != null) { + fso.removeListener(this); + fso = null; + } if (obMgr != null) { try { obMgr.removeEventListener(this); @@ -238,7 +251,6 @@ obMgr = null; } events.clear(); - root = null; nodeTypes = null; pending = null; } @@ -247,6 +259,61 @@ return sessionRef.get(); } + Node getRoot() throws PathNotFoundException, RepositoryException { + Session session = getSession().getJcrSession(); + if ("/".equals(path)) { + return session.getRootNode(); + } else { + return session.getRootNode().getNode(path.substring(1)); + } + } + + boolean listenToFacetSearch() { + // subscribe when listening to deep tree structures; + // there will/might be facetsearches in there. + if (isDeep) { + if (nodeTypes == null) { + return true; + } + for (String type : nodeTypes) { + if (type.equals(HippoNodeType.NT_DOCUMENT)) { + return true; + } + } + } + + // subscribe when target has a facetsearch as an ancestor + try { + Node node = getRoot(); + while (node.getDepth() > 0) { + if (node.isNodeType(HippoNodeType.NT_FACETSEARCH)) { + return true; + } + node = node.getParent(); + } + } catch (RepositoryException ex) { + log.error(ex.getMessage()); + } + return false; + } + + boolean isVirtual(Node node) throws RepositoryException { + if (node instanceof HippoNode) { + try { + Node canonical = ((HippoNode) node).getCanonicalNode(); + if (canonical == null) { + return true; + } + if (!canonical.isSame(node)) { + return true; + } + } catch (ItemNotFoundException ex) { + return true; + } + } + return false; + } + void processPending(NodeIterator iter, List nodes) throws RepositoryException { while (iter.hasNext()) { Node node = iter.nextNode(); @@ -270,54 +337,65 @@ log.debug("Listener " + this + " is no longer registerd"); return; } + + // process pending changes try { - List nodes = new LinkedList(); - if (nodeTypes == null) { - if (root.isModified()) { - nodes.add(root); - } - NodeIterator iter = ((HippoSession) root.getSession()).pendingChanges(root, null); - processPending(iter, nodes); - } else { - if (root.isModified()) { - for (String type : nodeTypes) { - if (root.isNodeType(type)) { - nodes.add(root); - break; + Node root = getRoot(); + if (!isVirtual(root)) { + List nodes = new LinkedList(); + if (nodeTypes == null) { + if (root.isModified()) { + nodes.add(root); + } + NodeIterator iter = ((HippoSession) root.getSession()).pendingChanges(root, null); + processPending(iter, nodes); + } else { + if (root.isModified()) { + for (String type : nodeTypes) { + if (root.isNodeType(type)) { + nodes.add(root); + break; + } } } + for (String type : nodeTypes) { + NodeIterator iter = ((HippoSession) root.getSession()).pendingChanges(root, type); + processPending(iter, nodes); + } } - for (String type : nodeTypes) { - NodeIterator iter = ((HippoSession) root.getSession()).pendingChanges(root, type); - processPending(iter, nodes); - } - } - List paths = new LinkedList(); - for (Node node : nodes) { - String path; - path = node.getPath(); - paths.add(path); - if (pending.containsKey(path)) { - Iterator iter = pending.get(path).update(); - while (iter.hasNext()) { - events.add(iter.next()); + List paths = new LinkedList(); + for (Node node : nodes) { + String path; + path = node.getPath(); + paths.add(path); + if (pending.containsKey(path)) { + Iterator iter = pending.get(path).update(); + while (iter.hasNext()) { + events.add(iter.next()); + } + } else { + NodeCache cache = new NodeCache(node); + pending.put(path, cache); + events.add(cache.new NodeEvent(null, 0)); } - } else { - NodeCache cache = new NodeCache(node); - pending.put(path, cache); - events.add(cache.new NodeEvent(null, 0)); } - } - for (String path : new ArrayList(pending.keySet())) { - if (!paths.contains(path)) { - NodeCache cache = pending.remove(path); - events.add(cache.new NodeEvent(null, 0)); + for (String path : new ArrayList(pending.keySet())) { + if (!paths.contains(path)) { + NodeCache cache = pending.remove(path); + events.add(cache.new NodeEvent(null, 0)); + } } } + } catch (PathNotFoundException ex) { + log.warn("Root node no longer exists: " + ex.getMessage()); + dispose(); + return; } catch (RepositoryException ex) { log.error("Failed to parse pending changes", ex); + dispose(); + return; } final Iterator upstream = events.iterator(); @@ -356,7 +434,11 @@ } }; - get().onEvent(iter); + try { + get().onEvent(iter); + } catch (RuntimeException ex) { + log.error("Error occured when processing event", ex); + } } @Override @@ -406,6 +488,8 @@ if (listeners.containsKey(listener)) { JcrListener realListener = listeners.remove(listener); realListener.dispose(); + } else { + log.info("Listener was not registered"); } } @@ -416,7 +500,7 @@ if (session != null) { try { session.getJcrSession().refresh(true); - } catch (RepositoryException ex) { + } catch (RepositoryException ex) { log.error("failed to refresh the session", ex); return; } Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/PluginRequestTarget.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/PluginRequestTarget.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/PluginRequestTarget.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -93,7 +93,6 @@ super.addComponent(component); break; } else if (updates.contains(parent)) { - component.detach(); break; } parent = parent.getParent(); Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrNodeModel.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrNodeModel.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrNodeModel.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -111,40 +111,14 @@ // implement IObservable - protected String getObservablePath() { - Node node = getNode(); - if (node != null) { - try { - if (!(node instanceof HippoNode)) { - return node.getPath(); - } - - HippoNode hippoNode = (HippoNode) node; - Node canonical = hippoNode.getCanonicalNode(); - if (canonical != null) { - return canonical.getPath(); - } - } catch (RepositoryException e) { - log.error(e.getMessage(), e); - } - } - return null; - } - public void setObservationContext(IObservationContext context) { this.context = context; } public void startObservation() { if (itemModel.getObject() != null) { - String path = getObservablePath(); - if (path != null) { - listener = new JcrEventListener(context, Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED - | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED, path, false, null, null); - } else { - // virtual tree - listener = new JcrEventListener(context, Event.NODE_ADDED | Event.NODE_REMOVED, "/", true, null, null); - } + listener = new JcrEventListener(context, Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED + | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED, getItemModel().getPath(), false, null, null); listener.start(); } else { log.debug("skipping observation for null node"); Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrSessionModel.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrSessionModel.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrSessionModel.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -16,11 +16,14 @@ package org.hippoecm.frontend.model; import java.rmi.RemoteException; +import java.util.Map; import javax.jcr.AccessDeniedException; import javax.jcr.LoginException; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.observation.EventIterator; +import javax.jcr.observation.EventListener; import org.apache.wicket.Application; import org.apache.wicket.RequestCycle; @@ -28,8 +31,10 @@ import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.protocol.http.WebRequestCycle; import org.apache.wicket.util.value.ValueMap; +import org.hippoecm.frontend.FacetSearchObserver; import org.hippoecm.frontend.InvalidLoginPage; import org.hippoecm.frontend.Main; +import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.HippoRepository; import org.hippoecm.repository.api.HippoSession; import org.hippoecm.repository.api.HippoWorkspace; @@ -53,6 +58,7 @@ private ValueMap credentials; private transient ClassLoader classLoader = null; private transient WorkflowManager workflowManager = null; + private transient FacetSearchObserver facetSearchObserver = null; public JcrSessionModel(ValueMap credentials) { this.credentials = credentials; @@ -121,6 +127,13 @@ return workflowManager; } + public FacetSearchObserver getFacetSearchObserver() { + if (facetSearchObserver == null) { + facetSearchObserver = new FacetSearchObserver(getSession()); + } + return facetSearchObserver; + } + @Override protected Object load() { javax.jcr.Session result = null; Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/CachedTreeModel.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/CachedTreeModel.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/CachedTreeModel.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -65,13 +65,23 @@ // translate the jcr event into a tree model event protected TreeModelEvent newTreeModelEvent(Event event) throws RepositoryException { JcrNodeModel nodeModel = new JcrNodeModel(event.getPath()); - TreePath parentPath = lookup(nodeModel.getParentModel()); - if (parentPath != null) { - TreeNode parentNode = (TreeNode) parentPath.getLastPathComponent(); - if ((parentNode instanceof IJcrTreeNode) - && ((IJcrTreeNode) parentNode).getNodeModel().equals(nodeModel.getParentModel())) { - return new TreeModelEvent(this, parentPath); + if (event.getType() != 0) { + TreePath parentPath = lookup(nodeModel.getParentModel()); + if (parentPath != null) { + TreeNode parentNode = (TreeNode) parentPath.getLastPathComponent(); + if ((parentNode instanceof IJcrTreeNode) + && ((IJcrTreeNode) parentNode).getNodeModel().equals(nodeModel.getParentModel())) { + return new TreeModelEvent(this, parentPath); + } } + } else { + TreePath nodePath = lookup(nodeModel); + if (nodePath != null) { + TreeNode treeNode = (TreeNode) nodePath.getLastPathComponent(); + if ((treeNode instanceof IJcrTreeNode) && ((IJcrTreeNode) treeNode).getNodeModel().equals(nodeModel)) { + return new TreeModelEvent(this, nodePath); + } + } } return null; } Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/service/render/AbstractRenderService.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/service/render/AbstractRenderService.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/service/render/AbstractRenderService.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -218,7 +218,6 @@ } public void onEvent(IEvent event) { - getModel().detach(); modelChanged(); } Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/AbstractTree.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/AbstractTree.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/wicket1985/AbstractTree.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -47,7 +47,6 @@ import org.apache.wicket.markup.html.tree.DefaultTreeState; import org.apache.wicket.markup.html.tree.ITreeState; import org.apache.wicket.markup.html.tree.ITreeStateListener; -import org.apache.wicket.model.IDetachable; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.util.string.AppendingStringBuffer; @@ -184,7 +183,7 @@ */ protected final boolean isRenderChildren() { - return getFlag(FLAG_RENDER_CHILDREN); + return getFlag(FLAG_RENDER_CHILDREN) && !AbstractTree.this.getFlag(FLAG_RENDERING); } /** @@ -233,7 +232,6 @@ } } }); - // } } } @@ -275,31 +273,6 @@ setFlag(FLAG_RENDER_CHILDREN, value); } - protected void onDetach() - { - super.onDetach(); - Object object = getModelObject(); - if (object instanceof IDetachable) - { - ((IDetachable)object).detach(); - } - - if (isRenderChildren()) - { - // visit every child - visitItemChildren(this, new IItemCallback() - { - public void visitItem(TreeItem item) - { - item.detach(); - } - }); - } - - // children are rendered, clear the flag - setRenderChildren(false); - } - protected void onBeforeRender() { onBeforeRenderInternal(); @@ -331,6 +304,7 @@ item.afterRender(); } }); + setFlag(FLAG_RENDER_CHILDREN, false); } } } @@ -450,6 +424,8 @@ /** comma separated list of ids of elements to be deleted. */ private final AppendingStringBuffer deleteIds = new AppendingStringBuffer(); + private final static int FLAG_RENDERING = 0x2000000; + /** * whether the whole tree is dirty (so the whole tree needs to be refreshed). */ @@ -891,7 +867,7 @@ target.addComponent(component); } - public void onTargetRespond(AjaxRequestTarget target) + public void onTargetRespond(AjaxRequestTarget target) { // check whether the model hasn't changed checkModel(); @@ -987,12 +963,12 @@ } } - // clear dirty flags - updated(); + // clear dirty flags + updated(); } } - - /** + + /** * Updates the changed portions of the tree using given AjaxRequestTarget. Call this method if * you modified the tree model during an ajax request target and you want to partially update * the component on page. Make sure that the tree model has fired the proper listener functions. Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -69,7 +69,7 @@ Node node = ((IJcrTreeNode) treeNode).getNodeModel().getNode(); if (node != null) { try { - if (node instanceof HippoNode) { + if ((node instanceof HippoNode) && !node.isNodeType(HippoNodeType.NT_FACETSEARCH)) { HippoNode hippoNode = (HippoNode) node; result = hippoNode.getDisplayName(); if (node.hasProperty(HippoNodeType.HIPPO_COUNT)) { Modified: hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java 2009-03-24 14:58:02 UTC (rev 17100) @@ -41,6 +41,8 @@ import org.hippoecm.frontend.plugin.config.impl.JavaPluginConfig; import org.hippoecm.frontend.plugin.impl.PluginContext; import org.hippoecm.repository.TestCase; +import org.hippoecm.repository.Utilities; +import org.hippoecm.repository.api.HippoNode; import org.junit.Test; public class ObservationTest extends TestCase { @@ -177,6 +179,7 @@ // in-session event JcrObservationManager.getInstance().processEvents(); + System.err.println("number of events: " + events.size()); assertTrue(events.size() == 1); // shouldn't receive new event on next processing @@ -308,4 +311,61 @@ assertTrue(copy.count == 1); } + @Test + /** + * test whether events are received on facet search nodes + */ + public void testFacetSearchEvent() throws Exception { + Node root = session.getRootNode(); + Node test = root.addNode("test", "nt:unstructured"); + + Node source = test.addNode("source", "nt:unstructured"); + source.addMixin("mix:referenceable"); + session.save(); + + Node sink = test.addNode("sink", "nt:unstructured"); + Node search = sink.addNode("search", "hippo:facetsearch"); + search.setProperty("hippo:facets", new String[] { "facet" }); + search.setProperty("hippo:queryname", "test"); + search.setProperty("hippo:docbase", source.getUUID()); + session.save(); + + final List events = new LinkedList(); + JcrEventListener listener = new JcrEventListener(new IObservationContext() { + private static final long serialVersionUID = 1L; + + @Override + public Page getPage() { + return home; + } + + @Override + public void notifyObservers(IEvent event) { + events.add(event); + } + + }, Event.NODE_ADDED | Event.NODE_REMOVED, "/test/sink", true, null, null); + listener.start(); + + Node xyz = source.addNode("xyz", "frontendtest:document"); + xyz.addMixin("hippo:harddocument"); + xyz.setProperty("facet", "xyz"); + session.refresh(true); + session.save(); + session.refresh(false); + + // wait for index + Thread.sleep(300); + + // event should have been received + JcrObservationManager.getInstance().processEvents(); + assertTrue(events.size() == 1); + + // basic facetsearch assertion + Node result = sink.getNode("search/xyz/hippo:resultset/xyz"); + assertTrue(((HippoNode) result).getCanonicalNode().isSame(xyz)); + + session.save(); + } + } Modified: hippo-ecm/trunk/frontend/engine/src/test/resources/log4j.xml =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/resources/log4j.xml 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/frontend/engine/src/test/resources/log4j.xml 2009-03-24 14:58:02 UTC (rev 17100) @@ -45,6 +45,11 @@ + + + + + Added: hippo-ecm/trunk/frontend/engine/src/test/resources/org/hippoecm/repository/extension.xml =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/resources/org/hippoecm/repository/extension.xml (rev 0) +++ hippo-ecm/trunk/frontend/engine/src/test/resources/org/hippoecm/repository/extension.xml 2009-03-24 14:58:02 UTC (rev 17100) @@ -0,0 +1,45 @@ + + + + + + hippo:initializefolder + + + + + + hippo:initializeitem + + + 105 + + + http://www.hippoecm.org/test/nt/1.0 + + + test.cnd + + + + Added: hippo-ecm/trunk/frontend/engine/src/test/resources/org/hippoecm/repository/test.cnd =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/resources/org/hippoecm/repository/test.cnd (rev 0) +++ hippo-ecm/trunk/frontend/engine/src/test/resources/org/hippoecm/repository/test.cnd 2009-03-24 14:58:02 UTC (rev 17100) @@ -0,0 +1,26 @@ +/* + * Copyright 2008 Hippo + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + + + + + +[frontendtest:document] > hippo:document +- * ++ * Modified: hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml =================================================================== --- hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml 2009-03-24 14:55:08 UTC (rev 17099) +++ hippo-ecm/trunk/package/config/src/main/resources/cms-editor.xml 2009-03-24 14:58:02 UTC (rev 17100) @@ -143,7 +143,7 @@ ${editor.id} - service.browse + ${browser.id} ${cluster.id}.validate From svn-logs at hippocms.org Tue Mar 24 16:15:53 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 16:14:15 2009 Subject: [HippoRepos-dev] [17101] hippo-ecm: HREPTWO-16: Suppress useless wicket localization warnings Message-ID: <20090324151553.44833C58B@svnnew.onehippo.org> Revision: 17101 Author: bvdschans Date: 2009-03-24 16:15:52 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-16: Suppress useless wicket localization warnings Modified Paths: -------------- hippo-ecm/trunk/quickstart/war/src/main/resources/log4j.xml Modified: hippo-ecm/trunk/quickstart/war/src/main/resources/log4j.xml =================================================================== --- hippo-ecm/trunk/quickstart/war/src/main/resources/log4j.xml 2009-03-24 14:58:02 UTC (rev 17100) +++ hippo-ecm/trunk/quickstart/war/src/main/resources/log4j.xml 2009-03-24 15:15:52 UTC (rev 17101) @@ -59,7 +59,10 @@ - + + + + From svn-logs at hippocms.org Tue Mar 24 19:51:28 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 19:49:49 2009 Subject: [HippoRepos-dev] [17102] hippo-ecm: HREPTWO-2340: prevent adding users twice to a group Message-ID: <20090324185128.A28A8C5BF@svnnew.onehippo.org> Revision: 17102 Author: bvdschans Date: 2009-03-24 19:51:27 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-2340: prevent adding users twice to a group Modified Paths: -------------- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.properties hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.properties =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.properties 2009-03-24 15:15:52 UTC (rev 17101) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/AdminPerspective.properties 2009-03-24 18:51:27 UTC (rev 17102) @@ -81,7 +81,8 @@ user-membership-added: Membership ${groupname} added user-membership-add-failed: Failed to add membership ${groupname} user-membership-removed: Membership ${groupname} removed -user-membership-remove-failed: Failed to remove membership ${groupname} +user-membership-remove-failed: Failed to remove membership ${groupname} +user-membership-already-member: User is already member of group ${groupname} user-membership-remove-action: remove user-membership-available-groups: Available groups @@ -124,7 +125,8 @@ group-member-add-action: Add group-member-added: User ${displayName} added -group-member-add-failed: Failed to add user ${displayName} +group-member-add-failed: Failed to add user ${displayName} +group-member-already-member: User ${displayName} is already member group-member-remove-action: remove group-member-removed: User removed group-member-remove-failed: Failed to remove user Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java 2009-03-24 15:15:52 UTC (rev 17101) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/groups/SetMembersPanel.java 2009-03-24 18:51:27 UTC (rev 17102) @@ -84,9 +84,13 @@ @Override public void onClick(AjaxRequestTarget target) { try { - group.addMembership(user.getUsername()); - info(getString("group-member-added", model)); - localList.removeAll(); + if (group.getMembers().contains(user.getUsername())) { + info(getString("group-member-already-member", model)); + } else { + group.addMembership(user.getUsername()); + info(getString("group-member-added", model)); + localList.removeAll(); + } } catch (RepositoryException e) { error(getString("group-member-add-failed", model)); log.error("Failed to add member", e); Modified: hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java =================================================================== --- hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java 2009-03-24 15:15:52 UTC (rev 17101) +++ hippo-ecm/trunk/addon/cms/admin/src/main/java/org/hippoecm/frontend/plugins/cms/admin/users/SetMembershipsPanel.java 2009-03-24 18:51:27 UTC (rev 17102) @@ -70,9 +70,13 @@ @Override protected void onSubmit(AjaxRequestTarget target, Form form) { try { - selectedGroup.addMembership(user.getUsername()); - info(getString("user-membership-added", new DetachableGroup(selectedGroup))); - localList.removeAll(); + if (selectedGroup.getMembers().contains(user.getUsername())) { + info(getString("user-membership-already-member", new DetachableGroup(selectedGroup))); + } else { + selectedGroup.addMembership(user.getUsername()); + info(getString("user-membership-added", new DetachableGroup(selectedGroup))); + localList.removeAll(); + } } catch (RepositoryException e) { error(getString("user-membership-add-failed", new DetachableGroup(selectedGroup))); log.error("Failed to add memberships", e); From helpdesk at onehippo.com Tue Mar 24 19:51:40 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Tue Mar 24 19:50:00 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2340) Can add same user multiple times to a group In-Reply-To: <28227223.1237560695271.JavaMail.jira@jira.onehippo.org> Message-ID: <10279924.1237920700635.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2340?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2340. ------------------------------------------ Resolution: Fixed > Can add same user multiple times to a group > ------------------------------------------- > > Key: HREPTWO-2340 > URL: http://issues.onehippo.com/browse/HREPTWO-2340 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.01 (m12 - update) > Reporter: Frank van Lankvelt > Assignee: Bart van der Schans > Fix For: Backlog > > > It is possible to add the same user multiple times to the same group. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 24 22:49:31 2009 From: svn-logs at hippocms.org (bvdschans) Date: Tue Mar 24 22:47:48 2009 Subject: [HippoRepos-dev] [17103] hippo-ecm/trunk: HREPTWO-16: Explicit set maven-war-plugin version to 2. 1-beta-1 for compatibility with maven 2.1.0 Message-ID: <20090324214932.07283C297@svnnew.onehippo.org> Revision: 17103 Author: bvdschans Date: 2009-03-24 22:49:29 +0100 (Tue, 24 Mar 2009) Log Message: ----------- HREPTWO-16: Explicit set maven-war-plugin version to 2.1-beta-1 for compatibility with maven 2.1.0 Modified Paths: -------------- hippo-ecm/trunk/addon/xinha/pom.xml hippo-ecm/trunk/frontend/application/pom.xml hippo-ecm/trunk/package/layout/pom.xml hippo-ecm/trunk/package/skin/pom.xml hippo-ecm/trunk/package/war/pom.xml hippo-ecm/trunk/quickstart/bin/pom.xml hippo-ecm/trunk/quickstart/war/pom.xml hippo-ecm/trunk/repository/application/pom.xml Modified: hippo-ecm/trunk/addon/xinha/pom.xml =================================================================== --- hippo-ecm/trunk/addon/xinha/pom.xml 2009-03-24 18:51:27 UTC (rev 17102) +++ hippo-ecm/trunk/addon/xinha/pom.xml 2009-03-24 21:49:29 UTC (rev 17103) @@ -67,7 +67,7 @@ org.apache.maven.plugins maven-war-plugin - 2.0.2 + 2.1-beta-1 true Modified: hippo-ecm/trunk/frontend/application/pom.xml =================================================================== --- hippo-ecm/trunk/frontend/application/pom.xml 2009-03-24 18:51:27 UTC (rev 17102) +++ hippo-ecm/trunk/frontend/application/pom.xml 2009-03-24 21:49:29 UTC (rev 17103) @@ -72,6 +72,7 @@ org.apache.maven.plugins maven-war-plugin + 2.1-beta-1 true Modified: hippo-ecm/trunk/package/layout/pom.xml =================================================================== --- hippo-ecm/trunk/package/layout/pom.xml 2009-03-24 18:51:27 UTC (rev 17102) +++ hippo-ecm/trunk/package/layout/pom.xml 2009-03-24 21:49:29 UTC (rev 17103) @@ -40,6 +40,7 @@ org.apache.maven.plugins maven-war-plugin + 2.1-beta-1 true Modified: hippo-ecm/trunk/package/skin/pom.xml =================================================================== --- hippo-ecm/trunk/package/skin/pom.xml 2009-03-24 18:51:27 UTC (rev 17102) +++ hippo-ecm/trunk/package/skin/pom.xml 2009-03-24 21:49:29 UTC (rev 17103) @@ -40,6 +40,7 @@ org.apache.maven.plugins maven-war-plugin + 2.1-beta-1 true Modified: hippo-ecm/trunk/package/war/pom.xml =================================================================== --- hippo-ecm/trunk/package/war/pom.xml 2009-03-24 18:51:27 UTC (rev 17102) +++ hippo-ecm/trunk/package/war/pom.xml 2009-03-24 21:49:29 UTC (rev 17103) @@ -267,7 +267,7 @@ org.apache.maven.plugins maven-war-plugin - 2.1-alpha-1 + 2.1-beta-1 true Modified: hippo-ecm/trunk/quickstart/bin/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/bin/pom.xml 2009-03-24 18:51:27 UTC (rev 17102) +++ hippo-ecm/trunk/quickstart/bin/pom.xml 2009-03-24 21:49:29 UTC (rev 17103) @@ -131,7 +131,7 @@ org.apache.maven.plugins maven-war-plugin - 2.1-alpha-1 + 2.1-beta-1 true Modified: hippo-ecm/trunk/quickstart/war/pom.xml =================================================================== --- hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-24 18:51:27 UTC (rev 17102) +++ hippo-ecm/trunk/quickstart/war/pom.xml 2009-03-24 21:49:29 UTC (rev 17103) @@ -298,7 +298,7 @@ org.apache.maven.plugins maven-war-plugin - 2.1-alpha-1 + 2.1-beta-1 true Modified: hippo-ecm/trunk/repository/application/pom.xml =================================================================== --- hippo-ecm/trunk/repository/application/pom.xml 2009-03-24 18:51:27 UTC (rev 17102) +++ hippo-ecm/trunk/repository/application/pom.xml 2009-03-24 21:49:29 UTC (rev 17103) @@ -86,6 +86,7 @@ org.apache.maven.plugins maven-war-plugin + 2.1-beta-1 true From svn-logs at hippocms.org Wed Mar 25 15:02:49 2009 From: svn-logs at hippocms.org (bvdschans) Date: Wed Mar 25 15:01:11 2009 Subject: [HippoRepos-dev] [17111] hippo-ecm: HREPTWO-2343: Select parent node on node copy for target Message-ID: <20090325140249.C24FCC58B@svnnew.onehippo.org> Revision: 17111 Author: bvdschans Date: 2009-03-25 15:02:49 +0100 (Wed, 25 Mar 2009) Log Message: ----------- HREPTWO-2343: Select parent node on node copy for target Modified Paths: -------------- hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/copy/CopyDialog.java Modified: hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/copy/CopyDialog.java =================================================================== --- hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/copy/CopyDialog.java 2009-03-25 13:52:56 UTC (rev 17110) +++ hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/copy/CopyDialog.java 2009-03-25 14:02:49 UTC (rev 17111) @@ -56,8 +56,10 @@ setSelectedNode(model); try { if (model.getParentModel() != null) { + setSelectedNode(model.getParentModel()); + add(new Label("source", model.getNode().getPath())); - + target = StringUtils.substringBeforeLast(model.getNode().getPath(), "/") + "/"; targetLabel = new Label("target", new PropertyModel(this, "target")); targetLabel.setOutputMarkupId(true); From helpdesk at onehippo.com Wed Mar 25 15:03:04 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Wed Mar 25 15:01:21 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2343) Copy node dialog should select parent node instead of current node as target Message-ID: <26618199.1237989784136.JavaMail.jira@jira.onehippo.org> Copy node dialog should select parent node instead of current node as target ---------------------------------------------------------------------------- Key: HREPTWO-2343 URL: http://issues.onehippo.com/browse/HREPTWO-2343 Project: Hippo Repository 2 Issue Type: Bug Components: front-end-core Affects Versions: r2.05.00 (m12 - new feats) Reporter: Bart van der Schans Assignee: Bart van der Schans Fix For: r2.05.01 (m12 - update) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Wed Mar 25 16:59:04 2009 From: helpdesk at onehippo.com (JIRA (Bart van der Schans)) Date: Wed Mar 25 16:57:20 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2343) Copy node dialog should select parent node instead of current node as target In-Reply-To: <26618199.1237989784136.JavaMail.jira@jira.onehippo.org> Message-ID: <511325.1237996744113.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2343?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Bart van der Schans resolved HREPTWO-2343. ------------------------------------------ Resolution: Fixed > Copy node dialog should select parent node instead of current node as target > ---------------------------------------------------------------------------- > > Key: HREPTWO-2343 > URL: http://issues.onehippo.com/browse/HREPTWO-2343 > Project: Hippo Repository 2 > Issue Type: Bug > Components: front-end-core > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Bart van der Schans > Assignee: Bart van der Schans > Fix For: r2.05.01 (m12 - update) > > -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Wed Mar 25 17:14:53 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Wed Mar 25 17:13:12 2009 Subject: [HippoRepos-dev] [17112] hippo-ecm: HREPTWO-16: java 5 doesn't allow @ Override annotations when implementing interfaces Message-ID: <20090325161453.B8725C58B@svnnew.onehippo.org> Revision: 17112 Author: fvlankvelt Date: 2009-03-25 17:14:53 +0100 (Wed, 25 Mar 2009) Log Message: ----------- HREPTWO-16: java 5 doesn't allow @Override annotations when implementing interfaces Modified Paths: -------------- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/FacetSearchObserver.java hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/FacetSearchObserver.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/FacetSearchObserver.java 2009-03-25 14:02:49 UTC (rev 17111) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/FacetSearchObserver.java 2009-03-25 16:14:53 UTC (rev 17112) @@ -117,7 +117,6 @@ } } - @Override public void onEvent(EventIterator events) { try { ObservationManager obMgr = session.getWorkspace().getObservationManager(); @@ -174,22 +173,18 @@ this.fsNodePath = path; } - @Override public void onEvent(EventIterator events) { List base = new ArrayList(1); base.add(new Event() { - @Override public String getPath() throws RepositoryException { return fsNodePath; } - @Override public int getType() { return 0; } - @Override public String getUserID() { return "FacetSearchObserver"; } @@ -201,36 +196,29 @@ final Iterator baseIter = base.iterator(); listener.listener.onEvent(new EventIterator() { - @Override public Event nextEvent() { return baseIter.next(); } - @Override public long getPosition() { return 0; } - @Override public long getSize() { return -1; } - @Override public void skip(long skipNum) { } - @Override public boolean hasNext() { return baseIter.hasNext(); } - @Override public Object next() { return nextEvent(); } - @Override public void remove() { throw new UnsupportedOperationException("EventIterator is immutable"); } Modified: hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java 2009-03-25 14:02:49 UTC (rev 17111) +++ hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java 2009-03-25 16:14:53 UTC (rev 17112) @@ -41,7 +41,6 @@ import org.hippoecm.frontend.plugin.config.impl.JavaPluginConfig; import org.hippoecm.frontend.plugin.impl.PluginContext; import org.hippoecm.repository.TestCase; -import org.hippoecm.repository.Utilities; import org.hippoecm.repository.api.HippoNode; import org.junit.Test; @@ -334,12 +333,10 @@ JcrEventListener listener = new JcrEventListener(new IObservationContext() { private static final long serialVersionUID = 1L; - @Override public Page getPage() { return home; } - @Override public void notifyObservers(IEvent event) { events.add(event); } From helpdesk at onehippo.com Fri Mar 27 14:18:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:16:13 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2344) Show context menu button when hovering over a folder Message-ID: <16559043.1238159884200.JavaMail.jira@jira.onehippo.org> Show context menu button when hovering over a folder ---------------------------------------------------- Key: HREPTWO-2344 URL: http://issues.onehippo.com/browse/HREPTWO-2344 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Auke van Scheltinga Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg See screenshot - Hide the button by default - Show when hovering over a folder - Align the button always to the right, and in the same column (screenshot shows a jump to the right) - Make sure the icon fits (it's now cut off) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:18:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:16:17 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2344) Show context menu button when hovering over a folder In-Reply-To: <16559043.1238159884200.JavaMail.jira@jira.onehippo.org> Message-ID: <8081799.1238159884446.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2344?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2344: ------------------------------- Attachment: screenshot-1.jpg > Show context menu button when hovering over a folder > ---------------------------------------------------- > > Key: HREPTWO-2344 > URL: http://issues.onehippo.com/browse/HREPTWO-2344 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Auke van Scheltinga > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > See screenshot > - Hide the button by default > - Show when hovering over a folder > - Align the button always to the right, and in the same column (screenshot shows a jump to the right) > - Make sure the icon fits (it's now cut off) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:20:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:18:15 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2345) Make context menu hover over the doclisting Message-ID: <11828161.1238160004417.JavaMail.jira@jira.onehippo.org> Make context menu hover over the doclisting ------------------------------------------- Key: HREPTWO-2345 URL: http://issues.onehippo.com/browse/HREPTWO-2345 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Arthur Bogaart Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg The menu is now opening to the left, but it should go the the right Menu should hover over the doclisting (z-index). -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:20:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:18:20 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2345) Make context menu hover over the doclisting In-Reply-To: <11828161.1238160004417.JavaMail.jira@jira.onehippo.org> Message-ID: <9257995.1238160004683.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2345?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2345: ------------------------------- Attachment: screenshot-1.jpg > Make context menu hover over the doclisting > ------------------------------------------- > > Key: HREPTWO-2345 > URL: http://issues.onehippo.com/browse/HREPTWO-2345 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Arthur Bogaart > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > The menu is now opening to the left, but it should go the the right > Menu should hover over the doclisting (z-index). -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:22:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:20:14 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2346) Don't show AJAXloader when checking for context menus to close Message-ID: <10517451.1238160124060.JavaMail.jira@jira.onehippo.org> Don't show AJAXloader when checking for context menus to close -------------------------------------------------------------- Key: HREPTWO-2346 URL: http://issues.onehippo.com/browse/HREPTWO-2346 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:22:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:20:18 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2346) Don't show AJAXloader when checking for context menus to close In-Reply-To: <10517451.1238160124060.JavaMail.jira@jira.onehippo.org> Message-ID: <23527911.1238160124194.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2346: ------------------------------- Description: Also, hide the loader when opening a dropdown - it's fast enough to not show the loader > Don't show AJAXloader when checking for context menus to close > -------------------------------------------------------------- > > Key: HREPTWO-2346 > URL: http://issues.onehippo.com/browse/HREPTWO-2346 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > > Also, hide the loader when opening a dropdown - it's fast enough to not show the loader -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:24:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:22:14 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2347) Make the entire context menu buttons clickable Message-ID: <17692817.1238160244133.JavaMail.jira@jira.onehippo.org> Make the entire context menu buttons clickable ----------------------------------------------- Key: HREPTWO-2347 URL: http://issues.onehippo.com/browse/HREPTWO-2347 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: (Berry) A.W. van Halderen Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg When hovering over a button, the entire button is highlighted (which is good). The user now expects to be able to click anywhere within the highlighted area, but only clicking on the text actually works. Change this behavior so that the user can click anywhere in the button. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:24:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:22:17 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2347) Make the entire context menu buttons clickable In-Reply-To: <17692817.1238160244133.JavaMail.jira@jira.onehippo.org> Message-ID: <26992441.1238160244254.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2347: ------------------------------- Attachment: screenshot-1.jpg > Make the entire context menu buttons clickable > ----------------------------------------------- > > Key: HREPTWO-2347 > URL: http://issues.onehippo.com/browse/HREPTWO-2347 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: (Berry) A.W. van Halderen > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > When hovering over a button, the entire button is highlighted (which is good). > The user now expects to be able to click anywhere within the highlighted area, but only clicking on the text actually works. > Change this behavior so that the user can click anywhere in the button. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:26:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:24:14 2009 Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-2346) Don't show AJAXloader when checking for context menus to close In-Reply-To: <10517451.1238160124060.JavaMail.jira@jira.onehippo.org> Message-ID: <5010134.1238160364562.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52351#action_52351 ] Arje Cahn commented on HREPTWO-2346: ------------------------------------ The mouseicon should not change into a wait icon either. > Don't show AJAXloader when checking for context menus to close > -------------------------------------------------------------- > > Key: HREPTWO-2346 > URL: http://issues.onehippo.com/browse/HREPTWO-2346 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > > Also, hide the loader when opening a dropdown - it's fast enough to not show the loader -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:30:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:28:18 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2348) Add "Virtual View" icon to faceted folders Message-ID: <10158765.1238160604593.JavaMail.jira@jira.onehippo.org> Add "Virtual View" icon to faceted folders ------------------------------------------ Key: HREPTWO-2348 URL: http://issues.onehippo.com/browse/HREPTWO-2348 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Auke van Scheltinga Fix For: r2.06.00 (m13) See screenshot. The "tags" and "state" folders are virtual folders, so they should get a slightly different icon that tells the user this is not a physical folder. "unpublished" / "draft" / "published" need a virtual folder icon too. This could be the same icon, unless it's possible to tell them apart from their parents, in which case it would be nice to have a different icon for facetvalues. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:32:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:30:12 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2348) Add "Virtual View" icon to faceted folders In-Reply-To: <10158765.1238160604593.JavaMail.jira@jira.onehippo.org> Message-ID: <24116937.1238160724031.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2348?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2348: ------------------------------- Attachment: screenshot-1.jpg > Add "Virtual View" icon to faceted folders > ------------------------------------------ > > Key: HREPTWO-2348 > URL: http://issues.onehippo.com/browse/HREPTWO-2348 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Auke van Scheltinga > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > See screenshot. > The "tags" and "state" folders are virtual folders, so they should get a slightly different icon that tells the user this is not a physical folder. > "unpublished" / "draft" / "published" need a virtual folder icon too. This could be the same icon, unless it's possible to tell them apart from their parents, in which case it would be nice to have a different icon for facetvalues. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:34:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:32:13 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2349) A facetsearch node should be rendere empty Message-ID: <17479588.1238160844047.JavaMail.jira@jira.onehippo.org> A facetsearch node should be rendere empty ------------------------------------------ Key: HREPTWO-2349 URL: http://issues.onehippo.com/browse/HREPTWO-2349 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) See screenshot. The facetsearch node itself should not show any results in the doclisting, if it has facetvalue childnodes. Maybe only endnodes should show results? The current list shows 4 results in the doclisting. This should be 0. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:36:05 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:34:16 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2350) Apply doclisting filters to facetsearch nodes in foldertree Message-ID: <6482945.1238160965768.JavaMail.jira@jira.onehippo.org> Apply doclisting filters to facetsearch nodes in foldertree ----------------------------------------------------------- Key: HREPTWO-2350 URL: http://issues.onehippo.com/browse/HREPTWO-2350 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) See screenshot. This facetsearch should render: "state [4]", because its resultset has 4 unique documents, which is shown in the doclisting. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:40:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:38:25 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2351) Add icon for button hovering Message-ID: <9710545.1238161204704.JavaMail.jira@jira.onehippo.org> Add icon for button hovering ---------------------------- Key: HREPTWO-2351 URL: http://issues.onehippo.com/browse/HREPTWO-2351 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Auke van Scheltinga Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg See screenshot. The user is hovering the button "save", and the icon disappears. Should suffice to display the normal (non-hover) icon when hovering, since the button itself is already highlighted. This happens with all context menus. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:40:05 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:38:29 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2351) Add icon for button hovering In-Reply-To: <9710545.1238161204704.JavaMail.jira@jira.onehippo.org> Message-ID: <24036503.1238161205083.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2351?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2351: ------------------------------- Attachment: screenshot-1.jpg > Add icon for button hovering > ---------------------------- > > Key: HREPTWO-2351 > URL: http://issues.onehippo.com/browse/HREPTWO-2351 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Auke van Scheltinga > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > See screenshot. The user is hovering the button "save", and the icon disappears. Should suffice to display the normal (non-hover) icon when hovering, since the button itself is already highlighted. > This happens with all context menus. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:40:05 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:38:33 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2352) Add icons to "document" dropdown Message-ID: <28303841.1238161205230.JavaMail.jira@jira.onehippo.org> Add icons to "document" dropdown -------------------------------- Key: HREPTWO-2352 URL: http://issues.onehippo.com/browse/HREPTWO-2352 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Auke van Scheltinga Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg See screenshot. Add an icon for delect / copy / move / rename. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:40:05 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:38:36 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2352) Add icons to "document" dropdown In-Reply-To: <28303841.1238161205230.JavaMail.jira@jira.onehippo.org> Message-ID: <6743305.1238161205334.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2352?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2352: ------------------------------- Attachment: screenshot-1.jpg > Add icons to "document" dropdown > -------------------------------- > > Key: HREPTWO-2352 > URL: http://issues.onehippo.com/browse/HREPTWO-2352 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Auke van Scheltinga > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > See screenshot. > Add an icon for delect / copy / move / rename. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:42:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:40:15 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2353) Add icons to "publication" dropdown Message-ID: <5054810.1238161324068.JavaMail.jira@jira.onehippo.org> Add icons to "publication" dropdown ----------------------------------- Key: HREPTWO-2353 URL: http://issues.onehippo.com/browse/HREPTWO-2353 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Auke van Scheltinga Fix For: r2.06.00 (m13) See screenshot. Add all icons. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:42:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:40:19 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2352) Add icons to "document" dropdown In-Reply-To: <28303841.1238161205230.JavaMail.jira@jira.onehippo.org> Message-ID: <29102485.1238161324276.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2352?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2352: ------------------------------- Description: See screenshot. Add all missing icons. was: See screenshot. Add an icon for delect / copy / move / rename. > Add icons to "document" dropdown > -------------------------------- > > Key: HREPTWO-2352 > URL: http://issues.onehippo.com/browse/HREPTWO-2352 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Auke van Scheltinga > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > See screenshot. > Add all missing icons. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:44:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:42:13 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2354) Add the possibility to have multiple previews open Message-ID: <30598402.1238161444166.JavaMail.jira@jira.onehippo.org> Add the possibility to have multiple previews open -------------------------------------------------- Key: HREPTWO-2354 URL: http://issues.onehippo.com/browse/HREPTWO-2354 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Priority: Low Fix For: r2.06.00 (m13) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:48:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:46:13 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2355) Run profiling to find any performance bottlenecks Message-ID: <17272005.1238161684011.JavaMail.jira@jira.onehippo.org> Run profiling to find any performance bottlenecks ------------------------------------------------- Key: HREPTWO-2355 URL: http://issues.onehippo.com/browse/HREPTWO-2355 Project: Hippo Repository 2 Issue Type: Task Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) Current issues: - Clicking on an article: preview loading - Clicking on a folder - Switch to edit - Saving - Closing a tab -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:54:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:52:14 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2356) Adding a document to the currently selected folder does not update doclisting Message-ID: <8669831.1238162044169.JavaMail.jira@jira.onehippo.org> Adding a document to the currently selected folder does not update doclisting ----------------------------------------------------------------------------- Key: HREPTWO-2356 URL: http://issues.onehippo.com/browse/HREPTWO-2356 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg, screenshot-2.jpg User has the folder "events" selected, and clicks "add new". Doclisting is not updated, but document *is* created. After switching to another folder and back, the doc is shown. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:54:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:52:18 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2356) Adding a document to the currently selected folder does not update doclisting In-Reply-To: <8669831.1238162044169.JavaMail.jira@jira.onehippo.org> Message-ID: <249419.1238162044388.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2356: ------------------------------- Attachment: screenshot-1.jpg > Adding a document to the currently selected folder does not update doclisting > ----------------------------------------------------------------------------- > > Key: HREPTWO-2356 > URL: http://issues.onehippo.com/browse/HREPTWO-2356 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg, screenshot-2.jpg > > > User has the folder "events" selected, and clicks "add new". Doclisting is not updated, but document *is* created. > After switching to another folder and back, the doc is shown. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:54:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:52:22 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2356) Adding a document to the currently selected folder does not update doclisting In-Reply-To: <8669831.1238162044169.JavaMail.jira@jira.onehippo.org> Message-ID: <9661395.1238162044508.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2356: ------------------------------- Attachment: screenshot-2.jpg > Adding a document to the currently selected folder does not update doclisting > ----------------------------------------------------------------------------- > > Key: HREPTWO-2356 > URL: http://issues.onehippo.com/browse/HREPTWO-2356 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg, screenshot-2.jpg > > > User has the folder "events" selected, and clicks "add new". Doclisting is not updated, but document *is* created. > After switching to another folder and back, the doc is shown. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:56:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:54:14 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2356) Adding a document to the currently selected folder does not update doclisting In-Reply-To: <8669831.1238162044169.JavaMail.jira@jira.onehippo.org> Message-ID: <5344373.1238162164129.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2356: ------------------------------- Description: User has the folder "events" selected, and clicks "add new". Doclisting is not updated, but document *is* created. After switching to another folder and back, the doc is shown. The same thing happens on facetsearches. When I select a facetsearch folder, and then add a document to one of the physical folders, the facetsearch doclisting is not updated and the document counts are not update either. was: User has the folder "events" selected, and clicks "add new". Doclisting is not updated, but document *is* created. After switching to another folder and back, the doc is shown. > Adding a document to the currently selected folder does not update doclisting > ----------------------------------------------------------------------------- > > Key: HREPTWO-2356 > URL: http://issues.onehippo.com/browse/HREPTWO-2356 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg, screenshot-2.jpg > > > User has the folder "events" selected, and clicks "add new". Doclisting is not updated, but document *is* created. > After switching to another folder and back, the doc is shown. > The same thing happens on facetsearches. When I select a facetsearch folder, and then add a document to one of the physical folders, the facetsearch doclisting is not updated and the document counts are not update either. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 14:58:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:56:13 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2357) Facetsearch counters not updated after publication Message-ID: <3948376.1238162284161.JavaMail.jira@jira.onehippo.org> Facetsearch counters not updated after publication -------------------------------------------------- Key: HREPTWO-2357 URL: http://issues.onehippo.com/browse/HREPTWO-2357 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) When publishing a document, the counter for "state / published" is not updated. However, when clicking Edit on a document, the "state / draft" counter *is* updated. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:00:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 14:58:20 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2357) Facetsearch counters not updated after publication In-Reply-To: <3948376.1238162284161.JavaMail.jira@jira.onehippo.org> Message-ID: <12401875.1238162404539.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2357?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2357: ------------------------------- Attachment: screenshot-1.jpg > Facetsearch counters not updated after publication > -------------------------------------------------- > > Key: HREPTWO-2357 > URL: http://issues.onehippo.com/browse/HREPTWO-2357 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > When publishing a document, the counter for "state / published" is not updated. > However, when clicking Edit on a document, the "state / draft" counter *is* updated. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:09:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 15:07:12 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2358) Close tab should check for unsaved changes Message-ID: <1462657.1238162944003.JavaMail.jira@jira.onehippo.org> Close tab should check for unsaved changes ------------------------------------------ Key: HREPTWO-2358 URL: http://issues.onehippo.com/browse/HREPTWO-2358 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg When editing a document, I add some text to the title and wait for 10 seconds. I click outside the field and wait another then seconds. Then I click the close icon on the tab and expect a "save changes" warning, but I don't get it. Instead, the document is closed and my changes are gone. Logs say: 27.03.2009 15:07:24 ERROR [org.hippoecm.repository.jackrabbit.AbstractFacetSearchProvider.populate():234] facet value with only facet type constant found. Skip result 27.03.2009 15:07:27 WARN [org.hippoecm.frontend.editor.plugins.field.FieldPlugin.updateProvider():114] Unknown field body in type defaultcontent:article 27.03.2009 15:07:27 ERROR [org.hippoecm.repository.jackrabbit.AbstractFacetSearchProvider.populate():234] facet value with only facet type constant found. Skip result 27.03.2009 15:07:42 WARN [org.hippoecm.frontend.plugins.standards.browse.BrowseService.browse():128] Model null is not an JcrNodeModel 27.03.2009 15:07:42 ERROR [org.apache.jackrabbit.jcr2spi.hierarchy.ChildNodeEntriesImpl.update():186] ChildInfo iterator contains multiple entries with the same name|index or uniqueID -> ignore ChildNodeInfo. 27.03.2009 15:07:42 ERROR [org.apache.jackrabbit.jcr2spi.hierarchy.ChildNodeEntriesImpl.update():186] ChildInfo iterator contains multiple entries with the same name|index or uniqueID -> ignore ChildNodeInfo. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:09:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 15:07:16 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2358) Close tab should check for unsaved changes In-Reply-To: <1462657.1238162944003.JavaMail.jira@jira.onehippo.org> Message-ID: <5451504.1238162944117.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2358: ------------------------------- Attachment: screenshot-1.jpg > Close tab should check for unsaved changes > ------------------------------------------ > > Key: HREPTWO-2358 > URL: http://issues.onehippo.com/browse/HREPTWO-2358 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > When editing a document, I add some text to the title and wait for 10 seconds. I click outside the field and wait another then seconds. Then I click the close icon on the tab and expect a "save changes" warning, but I don't get it. Instead, the document is closed and my changes are gone. > Logs say: > 27.03.2009 15:07:24 ERROR [org.hippoecm.repository.jackrabbit.AbstractFacetSearchProvider.populate():234] facet value with only facet type constant found. Skip > result > 27.03.2009 15:07:27 WARN [org.hippoecm.frontend.editor.plugins.field.FieldPlugin.updateProvider():114] Unknown field body in type defaultcontent:article > 27.03.2009 15:07:27 ERROR [org.hippoecm.repository.jackrabbit.AbstractFacetSearchProvider.populate():234] facet value with only facet type constant found. Skip > result > 27.03.2009 15:07:42 WARN [org.hippoecm.frontend.plugins.standards.browse.BrowseService.browse():128] Model null is not an JcrNodeModel > 27.03.2009 15:07:42 ERROR [org.apache.jackrabbit.jcr2spi.hierarchy.ChildNodeEntriesImpl.update():186] ChildInfo iterator contains multiple entries with the same > name|index or uniqueID -> ignore ChildNodeInfo. > 27.03.2009 15:07:42 ERROR [org.apache.jackrabbit.jcr2spi.hierarchy.ChildNodeEntriesImpl.update():186] ChildInfo iterator contains multiple entries with the same > name|index or uniqueID -> ignore ChildNodeInfo. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:11:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 15:09:14 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2359) Accordeon tabs should align to the bottom Message-ID: <26964143.1238163064222.JavaMail.jira@jira.onehippo.org> Accordeon tabs should align to the bottom ----------------------------------------- Key: HREPTWO-2359 URL: http://issues.onehippo.com/browse/HREPTWO-2359 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Arthur Bogaart Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg See screenshot. Align the tabs all the way to the bottom please! -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:11:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 15:09:17 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2359) Accordeon tabs should align to the bottom In-Reply-To: <26964143.1238163064222.JavaMail.jira@jira.onehippo.org> Message-ID: <1513601.1238163064354.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2359?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2359: ------------------------------- Attachment: screenshot-1.jpg > Accordeon tabs should align to the bottom > ----------------------------------------- > > Key: HREPTWO-2359 > URL: http://issues.onehippo.com/browse/HREPTWO-2359 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Arthur Bogaart > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > See screenshot. Align the tabs all the way to the bottom please! -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:15:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 15:13:15 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2360) Add "add folder" button to foldertree Message-ID: <27823197.1238163304227.JavaMail.jira@jira.onehippo.org> Add "add folder" button to foldertree ------------------------------------- Key: HREPTWO-2360 URL: http://issues.onehippo.com/browse/HREPTWO-2360 Project: Hippo Repository 2 Issue Type: Improvement Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: (Berry) A.W. van Halderen Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg See screenshot. Button should be aligned bottom-right. Adds a folder to the root node. The same button should be available under images, assets and configuration (ie, all foldertree accordeon tabs) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:15:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 15:13:19 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2360) Add "add folder" button to foldertree In-Reply-To: <27823197.1238163304227.JavaMail.jira@jira.onehippo.org> Message-ID: <31439911.1238163304508.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2360: ------------------------------- Attachment: screenshot-1.jpg > Add "add folder" button to foldertree > ------------------------------------- > > Key: HREPTWO-2360 > URL: http://issues.onehippo.com/browse/HREPTWO-2360 > Project: Hippo Repository 2 > Issue Type: Improvement > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: (Berry) A.W. van Halderen > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > See screenshot. Button should be aligned bottom-right. Adds a folder to the root node. > The same button should be available under images, assets and configuration (ie, all foldertree accordeon tabs) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:27:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 15:25:13 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2361) Clicking on a document in the history list doesn't jump to document in browse perspective Message-ID: <23754552.1238164024053.JavaMail.jira@jira.onehippo.org> Clicking on a document in the history list doesn't jump to document in browse perspective ----------------------------------------------------------------------------------------- Key: HREPTWO-2361 URL: http://issues.onehippo.com/browse/HREPTWO-2361 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.05.00 (m12 - new feats) Reporter: Arje Cahn Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) Attachments: screenshot-1.jpg It's loading for a long time (~20 seconds) and then stops. The UI doesn't switch to the browse perspective. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:27:04 2009 From: helpdesk at onehippo.com (JIRA (Arje Cahn)) Date: Fri Mar 27 15:25:17 2009 Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2361) Clicking on a document in the history list doesn't jump to document in browse perspective In-Reply-To: <23754552.1238164024053.JavaMail.jira@jira.onehippo.org> Message-ID: <26907838.1238164024250.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2361?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arje Cahn updated HREPTWO-2361: ------------------------------- Attachment: screenshot-1.jpg > Clicking on a document in the history list doesn't jump to document in browse perspective > ----------------------------------------------------------------------------------------- > > Key: HREPTWO-2361 > URL: http://issues.onehippo.com/browse/HREPTWO-2361 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > It's loading for a long time (~20 seconds) and then stops. The UI doesn't switch to the browse perspective. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Fri Mar 27 15:27:04 2009 From: helpdesk at onehippo.com (JIRA (Auke van Scheltinga)) Date: Fri Mar 27 15:25:21 2009 Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-2351) Add icon for button hovering In-Reply-To: <9710545.1238161204704.JavaMail.jira@jira.onehippo.org> Message-ID: <7033308.1238164024409.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52364#action_52364 ] Auke van Scheltinga commented on HREPTWO-2351: ---------------------------------------------- right now the html hiearchy won't let me do this. It's either a highlight without icon, or no highlight at all. > Add icon for button hovering > ---------------------------- > > Key: HREPTWO-2351 > URL: http://issues.onehippo.com/browse/HREPTWO-2351 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Auke van Scheltinga > Fix For: r2.06.00 (m13) > > Attachments: screenshot-1.jpg > > > See screenshot. The user is hovering the button "save", and the icon disappears. Should suffice to display the normal (non-hover) icon when hovering, since the button itself is already highlighted. > This happens with all context menus. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Fri Mar 27 15:41:08 2009 From: svn-logs at hippocms.org (rbijlsma) Date: Fri Mar 27 15:39:24 2009 Subject: [HippoRepos-dev] [17133] hippo-ecm: HREPTWODOCS-74 Dependency on skin SNAPSHOT to latest released skin Message-ID: <20090327144108.9AEFDC58B@svnnew.onehippo.org> Revision: 17133 Author: rbijlsma Date: 2009-03-27 15:41:08 +0100 (Fri, 27 Mar 2009) Log Message: ----------- HREPTWODOCS-74 Dependency on skin SNAPSHOT to latest released skin Modified Paths: -------------- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/site.xml Modified: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/site.xml =================================================================== --- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/site.xml 2009-03-27 14:02:27 UTC (rev 17132) +++ hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/site.xml 2009-03-27 14:41:08 UTC (rev 17133) @@ -25,7 +25,7 @@ org.onehippo.ecm.skin maven-skin - 1.01.07-SNAPSHOT + 1.01.06 -
      -
      Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/pom.xml 2009-03-31 09:11:11 UTC (rev 17153) @@ -72,13 +72,31 @@ false + src/main/resources + + + false ${basedir}/src/main/java **/*.html + **/*.js **/*.css + **/*.png + **/*.gif **/*.properties + + **/*.java + + + false + ${basedir}/src/main/resources + + **/*.cnd + **/*.xml + + Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions ___________________________________________________________________ Modified: svn:ignore - .FullRequestWorkflowPlugin.java.swp + .FullRequestWorkflowPlugin.java.swp .BasicReviewedActionsWorkflowPlugin.html.swp .FullReviewedActionsWorkflowPlugin.html.swp Deleted: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.html 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.html 2009-03-31 09:11:11 UTC (rev 17153) @@ -1,29 +0,0 @@ - - - - - - - - -
      - Date: - - -
      -
      - Deleted: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -1,64 +0,0 @@ -/* - * Copyright 2008 Hippo. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.hippoecm.frontend.plugins.reviewedactions; - -import java.util.Date; - -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxButton; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Button; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; -import org.hippoecm.frontend.widgets.AjaxDateTimeField; - -public abstract class AbstractDateDialog extends CompatibilityWorkflowPlugin.WorkflowAction.WorkflowDialog { - @SuppressWarnings("unused") - private final static String SVN_ID = "$Id$"; - - private static final long serialVersionUID = 1L; - - protected Date date; - - protected Button now; - - public AbstractDateDialog(CompatibilityWorkflowPlugin.WorkflowAction action, IModel question, Date date) { - action . super(); - this.date = date; - - add(new Label("question", question)); - - add(new AjaxDateTimeField("value", new PropertyModel(this, "date"))); - - now = new AjaxButton(getButtonId(), this) { - private static final long serialVersionUID = 1L; - - @Override - public void onSubmit(AjaxRequestTarget target, Form form) { - AbstractDateDialog.this.date = null; - onOk(); - if (!hasError()) { - closeDialog(); - } - } - }.setDefaultFormProcessing(false); - now.add(new Label("label", new ResourceModel("now", "Now"))); - addButton(now); - } -} Deleted: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.properties 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog.properties 2009-03-31 09:11:11 UTC (rev 17153) @@ -1,2 +0,0 @@ -ok: Schedule -now: Immediately Deleted: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog_nl.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog_nl.properties 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/AbstractDateDialog_nl.properties 2009-03-31 09:11:11 UTC (rev 17153) @@ -1,2 +0,0 @@ -ok: Agendeer -now: Nu Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.html 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.html 2009-03-31 09:11:11 UTC (rev 17153) @@ -15,32 +15,12 @@ --> -
        -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      -
        - -
      • -
        -
      • -
      • -
      +
      [INFO]
      +
      [EDIT]
      +
      [PUBLISH]
      +
      [DEPUBLISH]
      +
      [DELETE]
      +
      [SCHEDPUBLISH]
      +
      [SCHEDDEPUBLISH]
      Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/BasicReviewedActionsWorkflowPlugin.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -15,303 +15,222 @@ */ package org.hippoecm.frontend.plugins.reviewedactions; -import java.beans.Visibility; +import java.io.Serializable; import java.rmi.RemoteException; import java.util.Date; +import java.util.Map; import javax.jcr.Node; -import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; -import org.apache.wicket.Component; -import org.apache.wicket.markup.html.basic.Label; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.apache.wicket.ResourceReference; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; + import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; +import org.hippoecm.addon.workflow.StdWorkflow; import org.hippoecm.addon.workflow.WorkflowDescriptorModel; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.IDialogFactory; -import org.hippoecm.frontend.dialog.IDialogService; -import org.hippoecm.frontend.i18n.model.NodeTranslator; +import org.hippoecm.frontend.dialog.IDialogService.Dialog; import org.hippoecm.frontend.i18n.types.TypeTranslator; import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.model.nodetypes.JcrNodeTypeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.Document; -import org.hippoecm.repository.api.HippoNodeType; -import org.hippoecm.repository.api.MappingException; import org.hippoecm.repository.api.Workflow; +import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; +import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.reviewedactions.BasicReviewedActionsWorkflow; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class BasicReviewedActionsWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") private final static String SVN_ID = "$Id$"; private static final long serialVersionUID = 1L; - private static final Logger log = LoggerFactory.getLogger(BasicReviewedActionsWorkflowPlugin.class); + private static Logger log = LoggerFactory.getLogger(BasicReviewedActionsWorkflowPlugin.class); - private IModel caption = new StringResourceModel("unknown", this, null); - private String stateSummary = "UNKNOWN"; - private boolean isLocked = false; - private boolean pendingRequest = false; - private Component locked; + public String stateSummary = "UNKNOWN"; - public BasicReviewedActionsWorkflowPlugin(IPluginContext context, IPluginConfig config) { - super(context, config);}/* + WorkflowAction editAction; + WorkflowAction publishAction; + WorkflowAction depublishAction; + WorkflowAction deleteAction; + WorkflowAction schedulePublishAction; + WorkflowAction scheduleDepublishAction; - add(new Label("caption", caption)); + public BasicReviewedActionsWorkflowPlugin(final IPluginContext context, IPluginConfig config) { + super(context, config); - TypeTranslator translator = new TypeTranslator(new JcrNodeTypeModel("hippostd:publishableSummary")); - add(new Label("status", translator.getValueName("hippostd:stateSummary", new PropertyModel(this, "stateSummary")))); - - add(locked = new org.apache.wicket.markup.html.WebMarkupContainer("locked")); - - onModelChanged(); - - addWorkflowAction("edit-dialog", new StringResourceModel("edit", this, null), new Visibility() { - private static final long serialVersionUID = 1L; - public boolean isVisible() { - return !isLocked && !pendingRequest; + final TypeTranslator translator = new TypeTranslator(new JcrNodeTypeModel("hippostd:publishableSummary")); + add(new StdWorkflow("info", "info") { + @Override + protected IModel getTitle() { + return translator.getValueName("hippostd:stateSummary", new PropertyModel(BasicReviewedActionsWorkflowPlugin.this, "stateSummary")); } - }, new WorkflowAction() { - private static final long serialVersionUID = 1L; - // Workaround for HREPTWO-1328 @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.getSession().refresh(false); + protected void invoke() { } + }); + + add(editAction = new WorkflowAction("edit", new StringResourceModel("edit", this, null).getString(), null) { @Override - public void execute(Workflow wf) throws Exception { + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "edit-16.png"); + } + @Override + protected String execute(Workflow wf) throws Exception { BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; Document docRef = workflow.obtainEditableInstance(); ((UserSession) getSession()).getJcrSession().refresh(true); Node docNode = ((UserSession) getSession()).getJcrSession().getNodeByUUID(docRef.getIdentity()); - IEditorManager viewer = getPluginContext().getService( + IEditorManager editorMgr = getPluginContext().getService( getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); - if (viewer != null) { - viewer.openEditor(new JcrNodeModel(docNode)); + if (editorMgr != null) { + editorMgr.openEditor(new JcrNodeModel(docNode)); } else { log.warn("No editor found to edit {}", docNode.getPath()); } + return null; } }); - addWorkflowAction("requestPublication-dialog", new StringResourceModel("request-publication", this, null), new Visibility() { - private static final long serialVersionUID = 1L; - public boolean isVisible() { - // HREPTWO-2021 - // return !(stateSummary.equals("review") || stateSummary.equals("live")) && !pendingRequest; - return false; - } - }, new WorkflowAction() { - private static final long serialVersionUID = 1L; - // Workaround for HREPTWO-1328 + add(publishAction = new WorkflowAction("requestPublication", new StringResourceModel("request-publication", this, null).getString(), null) { @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.getSession().refresh(false); + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "workflow-requestpublish-16.png"); } @Override - public void execute(Workflow wf) throws Exception { + protected String execute(Workflow wf) throws Exception { BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.requestPublication(); + return null; } }); - addWorkflowAction("requestDePublication-dialog", new StringResourceModel("request-depublication", this, null), new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - // HREPTWO-2021 - // return !(stateSummary.equals("review") || stateSummary.equals("new")) && !pendingRequest; - return false; - } - }, new WorkflowAction() { - private static final long serialVersionUID = 1L; - // Workaround for HREPTWO-1328 + add(depublishAction = new WorkflowAction("requestDepublication", new StringResourceModel("request-depublication", this, null).getString(), null) { @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.getSession().refresh(false); + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "workflow-requestunpublish-16.png"); } @Override - public void execute(Workflow wf) throws Exception { + protected String execute(Workflow wf) throws Exception { BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.requestDepublication(); + return null; } }); - addWorkflowAction("requestDeletion-dialog", new StringResourceModel("request-delete", this, null), new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return !(stateSummary.equals("review") || stateSummary.equals("live")) && !pendingRequest; - } - }, new WorkflowAction() { - private static final long serialVersionUID = 1L; - // Workaround for HREPTWO-1328 + add(deleteAction = new WorkflowAction("requestDeletion", new StringResourceModel("request-delete", this, null).getString(), null) { @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.getSession().refresh(false); + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "workflow-requestdelete-16.png"); } @Override - public void execute(Workflow wf) throws Exception { + protected String execute(Workflow wf) throws Exception { BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) wf; workflow.requestDeletion(); + return null; } }); - IModel schedulePublishLabel = new StringResourceModel("schedule-publish-label", this, null); - final StringResourceModel schedulePublishTitle = new StringResourceModel("schedule-publish-title", this, null); - final StringResourceModel schedulePublishText = new StringResourceModel("schedule-publish-text", this, null); - addWorkflowDialog("schedule-publish-dialog", schedulePublishLabel, new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return !(stateSummary.equals("review") || stateSummary.equals("live")) && !pendingRequest; - - }}, new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public IDialogService.Dialog createDialog() { - - return new AbstractDateDialog(BasicReviewedActionsWorkflowPlugin.this, schedulePublishText, new Date()) { - private static final long serialVersionUID = 1L; - + add(schedulePublishAction = new WorkflowAction("schedulePublish", new StringResourceModel("schedule-publish-label", this, null).getString(), null) { + public Date date = new Date(); + @Override + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "publish-schedule-16.png"); + } + @Override + protected Dialog createRequestDialog() { + return new WorkflowAction.DateDialog(new StringResourceModel("schedule-publish-text", BasicReviewedActionsWorkflowPlugin.this, null)) { @Override - protected String execute() { - try { - BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) getWorkflow(); - if (date != null) { - workflow.requestPublication(date); - } else { - workflow.requestPublication(); - } - return null; - } catch(MappingException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RepositoryException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(WorkflowException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RemoteException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - public IModel getTitle() { - return schedulePublishTitle; - } - }; + return new StringResourceModel("schedule-publish-title", BasicReviewedActionsWorkflowPlugin.this, null); + }}; } + @Override + protected String execute(Workflow wf) throws Exception { + BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow)wf; + if (date != null) { + workflow.requestPublication(date); + } else { + workflow.requestPublication(); + } + return null; + } }); - IModel scheduleDePublishLabel = new StringResourceModel("schedule-depublish-label", this, null); - final StringResourceModel scheduleDePublishTitle = new StringResourceModel("schedule-depublish-title", this, null); - final StringResourceModel scheduleDePublishText = new StringResourceModel("schedule-depublish-text", this, null); - addWorkflowDialog("schedule-depublish-dialog", scheduleDePublishLabel, new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return !(stateSummary.equals("review") || stateSummary.equals("new")) && !pendingRequest; - - }}, new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - - return new AbstractDateDialog(BasicReviewedActionsWorkflowPlugin.this, scheduleDePublishText, new Date()) { - private static final long serialVersionUID = 1L; - + add(scheduleDepublishAction = new WorkflowAction("scheduleDepublish", new StringResourceModel("schedule-depublish-label", this, null).getString(), null) { + public Date date = new Date(); + @Override + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "unpublish-scheduled-16.png"); + } + @Override + protected Dialog createRequestDialog() { + return new WorkflowAction.DateDialog(new StringResourceModel("schedule-depublish-text", BasicReviewedActionsWorkflowPlugin.this, null)) { @Override - protected String execute() { - try { - BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow) getWorkflow(); - if (date != null) { - workflow.requestDepublication(date); - } else { - workflow.requestDepublication(); - } - return null; - } catch(MappingException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RepositoryException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(WorkflowException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RemoteException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - public IModel getTitle() { - return scheduleDePublishTitle; - } - }; + return new StringResourceModel("schedule-depublish-title", BasicReviewedActionsWorkflowPlugin.this, null); + }}; } + @Override + protected String execute(Workflow wf) throws Exception { + BasicReviewedActionsWorkflow workflow = (BasicReviewedActionsWorkflow)wf; + if (date != null) { + workflow.requestDepublication(date); + } else { + workflow.requestDepublication(); + } + return null; + } }); + + onModelChanged(); } - // FIXME: same implementation as in FullviewedActionsWorkflowPlugin @Override - public void onModelChanged() { + protected void onModelChanged() { super.onModelChanged(); - - WorkflowDescriptorModel model = (WorkflowDescriptorModel) getModel(); try { - JcrNodeModel nodeModel = new JcrNodeModel(model.getNode()); - caption = new NodeTranslator(nodeModel).getNodeName(); - - Node node = nodeModel.getNode(); - Node child = null; - if (node.isNodeType(HippoNodeType.NT_HANDLE)) { - pendingRequest = false; - for (NodeIterator iter = node.getNodes("hippo:request"); iter.hasNext(); ) { - Node request = iter.nextNode(); - if(request.isNodeType(HippoNodeType.NT_REQUEST)) { - if(!request.hasProperty("type") || !request.getProperty("type").getString().equals("rejected")) { - pendingRequest = true; - } - } + WorkflowManager manager = ((UserSession)org.apache.wicket.Session.get()).getWorkflowManager(); + WorkflowDescriptorModel workflowDescriptorModel = (WorkflowDescriptorModel)getModel(); + WorkflowDescriptor workflowDescriptor = (WorkflowDescriptor)getModelObject(); + if(workflowDescriptor != null) { + Node documentNode = workflowDescriptorModel.getNode(); + if(documentNode != null && documentNode.hasProperty("hippostd:stateSummary")) { + stateSummary = documentNode.getProperty("hippostd:stateSummary").getString(); } - for (NodeIterator iter = node.getNodes(node.getName()); iter.hasNext(); ) { - child = iter.nextNode(); - if (child.isNodeType(HippoNodeType.NT_DOCUMENT)) { - node = child; - if (child.hasProperty("hippostd:state") && child.getProperty("hippostd:state").getString().equals("draft")) { - break; - } - } else { - child = null; - } + Workflow workflow = manager.getWorkflow(workflowDescriptor); + Map info = workflow.hints(); + if (info.containsKey("obtainEditableInstanceobtainEditableInstance") && info.get("obtainEditableInstanceobtainEditableInstance") instanceof Boolean && !((Boolean)info.get("obtainEditableInstanceobtainEditableInstance")).booleanValue()) { + editAction.setVisible(false); } + if (info.containsKey("publish") && info.get("publish") instanceof Boolean && !((Boolean)info.get("publish")).booleanValue()) { + publishAction.setVisible(false); + schedulePublishAction.setVisible(false); + } + if (info.containsKey("depublish") && info.get("depublish") instanceof Boolean && !((Boolean)info.get("depublish")).booleanValue()) { + depublishAction.setVisible(false); + scheduleDepublishAction.setVisible(false); + } + if (info.containsKey("delete") && info.get("delete") instanceof Boolean && !((Boolean)info.get("delete")).booleanValue()) { + deleteAction.setVisible(false); + } } - if (child != null && child.hasProperty("hippostd:stateSummary")) { - stateSummary = node.getProperty("hippostd:stateSummary").getString(); - } - isLocked = false; - locked.setVisible(isLocked); - if (child != null && child.hasProperty("hippostd:state") && - child.getProperty("hippostd:state").getString().equals("draft") && child.hasProperty("hippostd:holder") && - !child.getProperty("hippostd:holder").getString().equals(child.getSession().getUserID())) { - isLocked = true; - locked.setVisible(isLocked); - } } catch (RepositoryException ex) { - // status unknown, maybe there are legit reasons for this, so don't emit a warning - log.info(ex.getClass().getName() + ": " + ex.getMessage()); + log.error(ex.getMessage(), ex); + } catch (WorkflowException ex) { + log.error(ex.getMessage(), ex); + } catch (RemoteException ex) { + log.error(ex.getMessage(), ex); } } -*/} +} Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.html 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.html 2009-03-31 09:11:11 UTC (rev 17153) @@ -15,10 +15,6 @@ --> -
        -
      • - -
      • -
      +
      [WORKFLOW ITEM GOES HERE]
      Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -39,37 +39,30 @@ private static Logger log = LoggerFactory.getLogger(EditingDefaultWorkflowPlugin.class); public EditingDefaultWorkflowPlugin(final IPluginContext context, IPluginConfig config) { - super(context, config);}/* + super(context, config); IEditor editor = context.getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditor.class); context.registerService(new IEditorFilter() { - private static final long serialVersionUID = 1L; - public void postClose(Object object) { // nothing to do } - public Object preClose() { try { ((WorkflowDescriptorModel) getModel()).getNode().save(); return new Object(); } catch (RepositoryException ex) { log.info(ex.getMessage()); - showException(ex); } return null; } - }, context.getReference(editor).getServiceId()); - addWorkflowAction("save", new StringResourceModel("save", this, null), new WorkflowAction() { - private static final long serialVersionUID = 1L; - + add(new WorkflowAction("save", new StringResourceModel("save", this, null, "Save").getString(), null) { @Override - public void execute(Workflow wf) throws Exception { + protected String execute(Workflow wf) throws Exception { ((WorkflowDescriptorModel) getModel()).getNode().save(); + return null; } }); } -*/ } Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin.properties 2009-03-31 09:11:11 UTC (rev 17153) @@ -1,2 +1 @@ save: Save -done: Done Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingDefaultWorkflowPlugin_nl.properties 2009-03-31 09:11:11 UTC (rev 17153) @@ -1,2 +1 @@ save: Sla op -done: Klaar Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/EditingReviewedActionsWorkflowPlugin.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -16,7 +16,6 @@ package org.hippoecm.frontend.plugins.reviewedactions; import java.rmi.RemoteException; -import java.util.List; import javax.jcr.Node; import javax.jcr.NodeIterator; @@ -39,7 +38,6 @@ import org.hippoecm.frontend.model.JcrNodeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; -import org.hippoecm.frontend.plugin.workflow.WorkflowAction; import org.hippoecm.frontend.plugins.reviewedactions.dialogs.OnCloseDialog; import org.hippoecm.frontend.service.EditorException; import org.hippoecm.frontend.service.IBrowseService; Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.html 2009-03-31 09:11:11 UTC (rev 17153) @@ -15,6 +15,7 @@ --> +
      [INFO]
      [WORKFLOW ITEM GOES HERE]
      [WORKFLOW ITEM GOES HERE]
      [WORKFLOW ITEM GOES HERE]
      @@ -22,5 +23,7 @@
      [WORKFLOW ITEM GOES HERE]
      [WORKFLOW ITEM GOES HERE]
      [WORKFLOW ITEM GOES HERE]
      +
      [WORKFLOW ITEM GOES HERE]
      +
      [WORKFLOW ITEM GOES HERE]
      Modified: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/FullReviewedActionsWorkflowPlugin.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -15,37 +15,41 @@ */ package org.hippoecm.frontend.plugins.reviewedactions; +import java.io.Serializable; import java.rmi.RemoteException; +import java.util.Date; +import java.util.Map; + import javax.jcr.Node; import javax.jcr.RepositoryException; -import javax.jcr.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.wicket.Component; +import org.apache.wicket.ResourceReference; import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.StringResourceModel; import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin; import org.hippoecm.addon.workflow.StdWorkflow; -import org.hippoecm.frontend.dialog.AbstractDialog; -import org.hippoecm.frontend.dialog.IDialogService; +import org.hippoecm.addon.workflow.WorkflowDescriptorModel; +import org.hippoecm.frontend.dialog.IDialogService.Dialog; +import org.hippoecm.frontend.i18n.types.TypeTranslator; import org.hippoecm.frontend.model.JcrNodeModel; +import org.hippoecm.frontend.model.nodetypes.JcrNodeTypeModel; import org.hippoecm.frontend.plugin.IPluginContext; import org.hippoecm.frontend.plugin.config.IPluginConfig; import org.hippoecm.frontend.service.IEditorManager; import org.hippoecm.frontend.session.UserSession; import org.hippoecm.repository.api.Document; -import org.hippoecm.repository.api.HippoWorkspace; +import org.hippoecm.repository.api.NodeNameCodec; import org.hippoecm.repository.api.Workflow; import org.hippoecm.repository.api.WorkflowDescriptor; import org.hippoecm.repository.api.WorkflowException; import org.hippoecm.repository.api.WorkflowManager; import org.hippoecm.repository.reviewedactions.FullReviewedActionsWorkflow; -import org.hippoecm.repository.standardworkflow.DefaultWorkflow; public class FullReviewedActionsWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") @@ -55,419 +59,246 @@ private static Logger log = LoggerFactory.getLogger(FullReviewedActionsWorkflowPlugin.class); - private IModel caption = new StringResourceModel("unknown", this, null); - private String stateSummary = "UNKNOWN"; - private boolean isLocked = false; - private boolean pendingRequest = false; - private Component locked; + public String stateSummary = "UNKNOWN"; + WorkflowAction editAction; + WorkflowAction publishAction; + WorkflowAction depublishAction; + WorkflowAction deleteAction; + WorkflowAction schedulePublishAction; + WorkflowAction scheduleDepublishAction; + public FullReviewedActionsWorkflowPlugin(final IPluginContext context, IPluginConfig config) { super(context, config); - add(new WorkflowAction("edit", "edit", null) { - protected String execute(Workflow workflow) throws Exception { - FullReviewedActionsWorkflow wf = (FullReviewedActionsWorkflow)workflow; - Document docRef = wf.obtainEditableInstance(); - Session session = ((UserSession)getSession()).getJcrSession(); - session.refresh(false); - Node docNode = session.getNodeByUUID(docRef.getIdentity()); - IEditorManager editorMgr = getPluginContext().getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); - if (editorMgr != null) { - editorMgr.openEditor(new JcrNodeModel(docNode)); - } else { - return "No editor found to edit " + docNode.getPath(); - } - return null; + final TypeTranslator translator = new TypeTranslator(new JcrNodeTypeModel("hippostd:publishableSummary")); + add(new StdWorkflow("info", "info") { + @Override + protected IModel getTitle() { + return translator.getValueName("hippostd:stateSummary", new PropertyModel(FullReviewedActionsWorkflowPlugin.this, "stateSummary")); } - }); - - add(new WorkflowAction("delete", "delete", null) { - protected String execute(Workflow workflow) throws Exception { - FullReviewedActionsWorkflow wf = (FullReviewedActionsWorkflow)workflow; - wf.delete(); - return null; - } - }); - - add(new StdWorkflow("copy", "copy") { + @Override protected void invoke() { - context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - - public IModel getTitle() { - return new Model("Sure"); - } - }); } }); - add(new StdWorkflow("move", "move") { - protected void invoke() { - context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - public IModel getTitle() { - return new Model("Sure"); - } - }); - } - }); - - add(new StdWorkflow("rename", "rename") { - protected void invoke() { - context.getService(IDialogService.class.getName(), IDialogService.class).show(new AbstractDialog() { - - public IModel getTitle() { - return new Model("Sure"); - } - }); - } - }); - - add(new StdWorkflow("publish", "publish") { - protected void invoke() { - try { - WorkflowDescriptor descriptor = (WorkflowDescriptor) FullReviewedActionsWorkflowPlugin.this.getModelObject(); - Session session = ((UserSession) getSession()).getJcrSession(); - session.refresh(true); - session.save(); - WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow(descriptor); - workflow.publish(); - session.refresh(false); - } catch(WorkflowException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RemoteException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RepositoryException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } - } - }); - - add(new StdWorkflow("depublish", "depublish") { - protected void invoke() { - try { - WorkflowDescriptor descriptor = (WorkflowDescriptor) FullReviewedActionsWorkflowPlugin.this.getModelObject(); - Session session = ((UserSession) getSession()).getJcrSession(); - session.refresh(true); - session.save(); - WorkflowManager manager = ((HippoWorkspace)session.getWorkspace()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow(descriptor); - workflow.depublish(); - session.refresh(false); - } catch(WorkflowException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RemoteException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } catch(RepositoryException ex) { - System.err.println(ex.getClass().getName()+": "+ex.getMessage()); - ex.printStackTrace(System.err); - } - } - }); - -}/* - - add(new Label("caption", caption)); - - TypeTranslator translator = new TypeTranslator(new JcrNodeTypeModel("hippostd:publishableSummary")); - add(new Label("status", translator.getValueName("hippostd:stateSummary", new PropertyModel(this, "stateSummary")))); - - add(locked = new org.apache.wicket.markup.html.WebMarkupContainer("locked")); - - onModelChanged(); - - addWorkflowAction("edit-dialog", new StringResourceModel("edit-label", this, null), new Visibility() { - private static final long serialVersionUID = 1L; - public boolean isVisible() { - return !isLocked && !pendingRequest; - } - }, new WorkflowAction() { - private static final long serialVersionUID = 1L; - // Workaround for HREPTWO-1328 + add(editAction = new WorkflowAction("edit", new StringResourceModel("edit-label", this, null).getString(), null) { @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.getSession().refresh(false); + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "edit-16.png"); } @Override - public void execute(Workflow wf) throws Exception { + protected String execute(Workflow wf) throws Exception { FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) wf; Document docRef = workflow.obtainEditableInstance(); - ((UserSession) getSession()).getJcrSession().refresh(false); + ((UserSession) getSession()).getJcrSession().refresh(true); Node docNode = ((UserSession) getSession()).getJcrSession().getNodeByUUID(docRef.getIdentity()); - IEditorManager editorMgr = getPluginContext().getService( - getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); + IEditorManager editorMgr = getPluginContext().getService(getPluginConfig().getString(IEditorManager.EDITOR_ID), IEditorManager.class); if (editorMgr != null) { editorMgr.openEditor(new JcrNodeModel(docNode)); } else { log.warn("No editor found to edit {}", docNode.getPath()); } + return null; } }); - addWorkflowAction("publish-dialog", new StringResourceModel("publish-label", this, null), new Visibility() { - private static final long serialVersionUID = 1L; - public boolean isVisible() { - // HREPTWO-2021 - // return !(stateSummary.equals("review") || stateSummary.equals("live")) && !pendingRequest; - return false; - } - }, new WorkflowAction() { - private static final long serialVersionUID = 1L; - // Workaround for HREPTWO-1328 + add(publishAction = new WorkflowAction("publish", new StringResourceModel("publish-label", this, null).getString(), null) { @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.getSession().refresh(false); + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "publish-16.png"); } @Override - public void execute(Workflow wf) throws Exception { + protected String execute(Workflow wf) throws Exception { FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) wf; workflow.publish(); + return null; } }); - addWorkflowAction("dePublish-dialog", new StringResourceModel("depublish-label", this, null), new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - // HREPTWO-2021 - // return !(stateSummary.equals("review") || stateSummary.equals("new")) && !pendingRequest; - return false; - } - }, new WorkflowAction() { - private static final long serialVersionUID = 1L; - // Workaround for HREPTWO-1328 + add(depublishAction = new WorkflowAction("depublish", new StringResourceModel("depublish-label", this, null).getString(), null) { @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.getSession().refresh(false); + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "unplublish-16.png"); } @Override - public void execute(Workflow wf) throws Exception { + protected String execute(Workflow wf) throws Exception { FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) wf; workflow.depublish(); + return null; } }); - IModel deleteLabel = new StringResourceModel("delete-label", this, null); - addWorkflowDialog("delete-dialog", deleteLabel, deleteLabel, new StringResourceModel("delete-message", this, - null, new Object[] { caption }), new WorkflowAction() { - private static final long serialVersionUID = 1L; - - // Workaround for HREPTWO-1328 + add(deleteAction = new WorkflowAction("delete", new StringResourceModel("delete-label", this, null).getString(), null) { @Override - public void prepareSession(JcrNodeModel handleModel) throws RepositoryException { - Node handleNode = handleModel.getNode(); - handleNode.getSession().refresh(false); + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "delete-16.png"); } - @Override - public void execute(Workflow wf) throws Exception { + protected Dialog createRequestDialog() { + return new WorkflowAction.WorkflowDialog(new StringResourceModel("delete-message", FullReviewedActionsWorkflowPlugin.this, null)) { + @Override + public IModel getTitle() { + return new StringResourceModel("delete-label", FullReviewedActionsWorkflowPlugin.this, null); + }}; + } + @Override + protected String execute(Workflow wf) throws Exception { FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) wf; workflow.delete(); + return null; } }); - IModel renameLabel = new StringResourceModel("rename-label", this, null); - final StringResourceModel renameTitle = new StringResourceModel("rename-title", this, null); - final StringResourceModel renameText = new StringResourceModel("rename-text", this, null); - addWorkflowDialog("rename-dialog", renameLabel, new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return true; - }}, new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - return new CompatibilityWorkflowPlugin.NameDialog(renameTitle, renameText, "") { - private static final long serialVersionUID = 1L; - + add(schedulePublishAction = new WorkflowAction("schedulePublish", new StringResourceModel("schedule-publish-label", this, null).getString(), null) { + public Date date = new Date(); + @Override + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "publish-schedule-16.png"); + } + @Override + protected Dialog createRequestDialog() { + return new WorkflowAction.DateDialog(new StringResourceModel("schedule-publish-text", FullReviewedActionsWorkflowPlugin.this, null)) { @Override - protected String execute() { - try { - WorkflowDescriptorModel model = (WorkflowDescriptorModel) FullReviewedActionsWorkflowPlugin.this.getModel(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow((WorkflowDescriptor)(model.getObject())); - workflow.rename(NodeNameCodec.encode(name, true)); - return null; - } catch(RepositoryException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(WorkflowException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RemoteException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - }; + public IModel getTitle() { + return new StringResourceModel("schedule-publish-title", FullReviewedActionsWorkflowPlugin.this, null); + }}; } + @Override + protected String execute(Workflow wf) throws Exception { + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow)wf; + if (date != null) { + workflow.requestPublication(date); + } else { + workflow.requestPublication(); + } + return null; + } }); - IModel copyLabel = new StringResourceModel("copy-label", this, null); - final StringResourceModel copyTitle = new StringResourceModel("copy-title", this, null); - final StringResourceModel copyText = new StringResourceModel("copy-text", this, null); - addWorkflowDialog("copy-dialog", copyLabel, new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return true; - }}, new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - - return new CompatibilityWorkflowPlugin.DestinationDialog(copyTitle, copyText) { - private static final long serialVersionUID = 1L; - + add(scheduleDepublishAction = new WorkflowAction("scheduleDepublish", new StringResourceModel("schedule-depublish-label", this, null).getString(), null) { + public Date date = new Date(); + @Override + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "unpublish-scheduled-16.png"); + } + @Override + protected Dialog createRequestDialog() { + return new WorkflowAction.DateDialog(new StringResourceModel("schedule-depublish-text", FullReviewedActionsWorkflowPlugin.this, null)) { @Override - protected String execute() { - try { - WorkflowDescriptorModel model = (WorkflowDescriptorModel) FullReviewedActionsWorkflowPlugin.this.getModel(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow((WorkflowDescriptor)(model.getObject())); - workflow.copy(new Document(destination.getNode().getUUID()), name); - return null; - } catch(RepositoryException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(WorkflowException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RemoteException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - }; + public IModel getTitle() { + return new StringResourceModel("schedule-depublish-title", FullReviewedActionsWorkflowPlugin.this, null); + }}; } + @Override + protected String execute(Workflow wf) throws Exception { + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow)wf; + if (date != null) { + workflow.requestDepublication(date); + } else { + workflow.requestDepublication(); + } + return null; + } }); - IModel moveLabel = new StringResourceModel("move-label", this, null); - final StringResourceModel moveTitle = new StringResourceModel("move-title", this, null); - final StringResourceModel moveText = new StringResourceModel("move-text", this, null); - addWorkflowDialog("move-dialog", moveLabel, new Visibility() { - private static final long serialVersionUID = 1L; + add(new WorkflowAction("move", new StringResourceModel("move-label", this, null)) { + public String name; + public JcrNodeModel destination; + @Override + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "move-16.png"); + } + @Override + protected Dialog createRequestDialog() { + name = ""; + return new WorkflowAction.DestinationDialog(new StringResourceModel("move-title", FullReviewedActionsWorkflowPlugin.this, null), new StringResourceModel("move-text", FullReviewedActionsWorkflowPlugin.this, null), new PropertyModel(this, "name"), destination); + } + @Override + protected String execute(Workflow wf) throws Exception { + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) wf; + workflow.move(new Document(destination.getNode().getUUID()), NodeNameCodec.encode(name, true)); + return null; + } + }); - public boolean isVisible() { - return true; - }}, new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - - return new CompatibilityWorkflowPlugin.DestinationDialog(moveTitle, moveText) { - private static final long serialVersionUID = 1L; - - @Override - protected String execute() { - try { - WorkflowDescriptorModel model = (WorkflowDescriptorModel) FullReviewedActionsWorkflowPlugin.this.getModel(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow((WorkflowDescriptor)(model.getObject())); - workflow.move(new Document(destination.getNode().getUUID()), name); - return null; - } catch(RepositoryException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(WorkflowException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RemoteException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - }; + add(new WorkflowAction("rename", new StringResourceModel("rename-label", this, null)) { + public String name; + @Override + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "rename-16.png"); } + @Override + protected Dialog createRequestDialog() { + name = ""; + return new WorkflowAction.NameDialog(new StringResourceModel("rename-title", FullReviewedActionsWorkflowPlugin.this, null), new StringResourceModel("rename-text", FullReviewedActionsWorkflowPlugin.this, null), new PropertyModel(this, "name")); + } + @Override + protected String execute(Workflow wf) throws Exception { + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) wf; + workflow.rename(NodeNameCodec.encode(name, true)); + return null; + } }); - IModel schedulePublishLabel = new StringResourceModel("schedule-publish-label", this, null); - final StringResourceModel schedulePublishTitle = new StringResourceModel("schedule-publish-title", this, null); - final StringResourceModel schedulePublishText = new StringResourceModel("schedule-publish-text", this, null); - addWorkflowDialog("schedule-publish-dialog", schedulePublishLabel, new Visibility() { - private static final long serialVersionUID = 1L; - - public boolean isVisible() { - return !(stateSummary.equals("review") || stateSummary.equals("live")) && !pendingRequest; - - }}, new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - - return new DateDialog(schedulePublishText, new Date()) { - private static final long serialVersionUID = 1L; - - @Override - protected String execute() { - try { - WorkflowDescriptorModel model = (WorkflowDescriptorModel) FullReviewedActionsWorkflowPlugin.this.getModel(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow((WorkflowDescriptor)(model.getObject())); - if (date != null) { - workflow.publish(date); - } else { - workflow.publish(); - } - return null; - } catch(RepositoryException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(WorkflowException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RemoteException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - - public IModel getTitle() { - return schedulePublishTitle; - } - }; + add(new WorkflowAction("copy", new StringResourceModel("copy-label", this, null)) { + public String name; + public JcrNodeModel destination; + @Override + protected ResourceReference getIcon() { + return new ResourceReference(getClass(), "copy-16.png"); } + @Override + protected Dialog createRequestDialog() { + name = ""; + return new WorkflowAction.DestinationDialog(new StringResourceModel("copy-title", FullReviewedActionsWorkflowPlugin.this, null), new StringResourceModel("copy-text", FullReviewedActionsWorkflowPlugin.this, null), new PropertyModel(this, "name"), destination); + } + @Override + protected String execute(Workflow wf) throws Exception { + FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) wf; + workflow.copy(new Document(destination.getNode().getUUID()), NodeNameCodec.encode(name, true)); + return null; + } }); - IModel scheduleDePublishLabel = new StringResourceModel("schedule-depublish-label", this, null); - final StringResourceModel scheduleDePublishTitle = new StringResourceModel("schedule-depublish-title", this, null); - final StringResourceModel scheduleDePublishText = new StringResourceModel("schedule-depublish-text", this, null); - addWorkflowDialog("schedule-depublish-dialog", scheduleDePublishLabel, new Visibility() { - private static final long serialVersionUID = 1L; + onModelChanged(); + } - public boolean isVisible() { - return !(stateSummary.equals("review") || stateSummary.equals("new")) && !pendingRequest; - - }}, new IDialogFactory() { - private static final long serialVersionUID = 1L; - - public AbstractDialog createDialog() { - - return new DateDialog(scheduleDePublishText, new Date()) { - private static final long serialVersionUID = 1L; - - @Override - protected String execute() { - try { - WorkflowDescriptorModel model = (WorkflowDescriptorModel) FullReviewedActionsWorkflowPlugin.this.getModel(); - WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager(); - FullReviewedActionsWorkflow workflow = (FullReviewedActionsWorkflow) manager.getWorkflow((WorkflowDescriptor)(model.getObject())); - if (date != null) { - workflow.depublish(date); - } else { - workflow.depublish(); - } - return null; - } catch(RepositoryException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(WorkflowException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } catch(RemoteException ex) { - return ex.getClass().getName()+": "+ex.getMessage(); - } - } - - public IModel getTitle() { - return scheduleDePublishTitle; - } - }; + @Override + protected void onModelChanged() { + super.onModelChanged(); + try { + WorkflowManager manager = ((UserSession)org.apache.wicket.Session.get()).getWorkflowManager(); + WorkflowDescriptorModel workflowDescriptorModel = (WorkflowDescriptorModel)getModel(); + WorkflowDescriptor workflowDescriptor = (WorkflowDescriptor)getModelObject(); + if(workflowDescriptor != null) { + Node documentNode = workflowDescriptorModel.getNode(); + if(documentNode != null && documentNode.hasProperty("hippostd:stateSummary")) { + stateSummary = documentNode.getProperty("hippostd:stateSummary").getString(); + } + Workflow workflow = manager.getWorkflow(workflowDescriptor); + Map info = workflow.hints(); + if (info.containsKey("obtainEditableInstanceobtainEditableInstance") && info.get("obtainEditableInstanceobtainEditableInstance") instanceof Boolean && !((Boolean)info.get("obtainEditableInstanceobtainEditableInstance")).booleanValue()) { + editAction.setVisible(false); + } + if (info.containsKey("publish") && info.get("publish") instanceof Boolean && !((Boolean)info.get("publish")).booleanValue()) { + publishAction.setVisible(false); + schedulePublishAction.setVisible(false); + } + if (info.containsKey("depublish") && info.get("depublish") instanceof Boolean && !((Boolean)info.get("depublish")).booleanValue()) { + depublishAction.setVisible(false); + scheduleDepublishAction.setVisible(false); + } + if (info.containsKey("delete") && info.get("delete") instanceof Boolean && !((Boolean)info.get("delete")).booleanValue()) { + deleteAction.setVisible(false); + } } - }); + } catch (RepositoryException ex) { + log.error(ex.getMessage(), ex); + } catch (WorkflowException ex) { + log.error(ex.getMessage(), ex); + } catch (RemoteException ex) { + log.error(ex.getMessage(), ex); + } } -*/} +} Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/copy-16.png (from rev 17151, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/copy-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/copy-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/delete-16.png (from rev 17151, hippo-ecm/trunk/addon/builtin/frontend/src/main/java/org/hippoecm/frontend/plugins/standardworkflow/delete-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/delete-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/depublish-16.png (from rev 17151, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/unplublish-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/depublish-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/edit-16.png (from rev 17141, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/edit-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/edit-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/move-16.png (from rev 17151, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/move-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/move-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/publish-16.png (from rev 17151, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/publish-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/publish-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/publish-schedule-16.png (from rev 17141, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/publish-schedule-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/publish-schedule-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/rename-16.png (from rev 17151, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/rename-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/rename-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/unpublish-scheduled-16.png (from rev 17141, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/unpublish-scheduled-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/unpublish-scheduled-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/workflow-requestdelete-16.png (from rev 17141, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/workflow-requestdelete-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/workflow-requestdelete-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/workflow-requestpublish-16.png (from rev 17141, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/workflow-requestpublish-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/workflow-requestpublish-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/workflow-requestunpublish-16.png (from rev 17141, hippo-ecm/trunk/package/skin/src/main/webapp/images/icons/workflow-requestunpublish-16.png) =================================================================== (Binary files differ) Property changes on: hippo-ecm/trunk/addon/reviewed-action/frontend/src/main/java/org/hippoecm/frontend/plugins/reviewedactions/workflow-requestunpublish-16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/BasicReviewedActionsWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/BasicReviewedActionsWorkflowImpl.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/BasicReviewedActionsWorkflowImpl.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -15,12 +15,12 @@ */ package org.hippoecm.repository.reviewedactions; +import java.io.Serializable; import java.rmi.RemoteException; import java.util.Calendar; import java.util.Date; import java.util.Map; import java.util.TreeMap; -import java.util.HashMap; import javax.jcr.RepositoryException; @@ -36,50 +36,105 @@ private static final long serialVersionUID = 1L; - protected String username; + protected String state; + protected String userIdentity; protected PublicationRequest current; protected PublicationRequest current2; protected PublicationRequest current3; - protected PublishableDocument published; - protected PublishableDocument unpublished; - protected PublishableDocument draft; + protected PublishableDocument publishedDocument; + protected PublishableDocument unpublishedDocument; + protected PublishableDocument draftDocument; + @Override + public Map hints() { + Map info = super.hints(); + boolean editable; + boolean publishable = false; + boolean depublishable = false; + boolean deleteable = false; + boolean locked = false; + boolean pendingRequest; + if(current != null || current2 != null || current3 != null) { + pendingRequest = true; + } else { + pendingRequest = false; + } + if(PublishableDocument.DRAFT.equals(state)) { + locked = true; + editable = draftDocument.username.equals(super.getWorkflowContext().getUserIdentity()); + depublishable = false; + publishable = false; + } else if(PublishableDocument.PUBLISHED.equals(state)) { + if(draftDocument != null || unpublishedDocument != null) { + editable = false; + } else if(pendingRequest) { + editable = false; + } else { + editable = true; + } + if(draftDocument == null && !pendingRequest) { + depublishable = true; + } + } else if(PublishableDocument.UNPUBLISHED.equals(state)) { + if(draftDocument != null) { + editable = false; + } else if(pendingRequest) { + editable = false; + } else { + editable = true; + } + if(draftDocument == null && !pendingRequest) { + publishable = true; + } + if(draftDocument == null && publishedDocument == null) { + deleteable = true; + } + } else { + editable = false; + } + info.put("obtainEditableInstanceobtainEditableInstance", editable); + info.put("publish", publishable); + info.put("depublish", depublishable); + info.put("delete", deleteable); + return info; + } + public BasicReviewedActionsWorkflowImpl() throws RemoteException { } public Document obtainEditableInstance() throws WorkflowException { ReviewedActionsWorkflowImpl.log.info("obtain editable instance on document "); - if(draft == null) { + if(draftDocument == null) { try { - if(unpublished != null) { - draft = (PublishableDocument) unpublished.clone(); + if(unpublishedDocument != null) { + draftDocument = (PublishableDocument) unpublishedDocument.clone(); } else { - draft = (PublishableDocument) published.clone(); + draftDocument = (PublishableDocument) publishedDocument.clone(); } - draft.state = PublishableDocument.DRAFT; - draft.setOwner(getWorkflowContext().getUserIdentity()); - if(unpublished != null) { - unpublished.setOwner(getWorkflowContext().getUserIdentity()); + draftDocument.state = PublishableDocument.DRAFT; + draftDocument.setOwner(getWorkflowContext().getUserIdentity()); + if(unpublishedDocument != null) { + unpublishedDocument.setOwner(getWorkflowContext().getUserIdentity()); } - if(published != null) { - published.setOwner(getWorkflowContext().getUserIdentity()); + if(publishedDocument != null) { + publishedDocument.setOwner(getWorkflowContext().getUserIdentity()); } - username = getWorkflowContext().getUserIdentity(); + userIdentity = getWorkflowContext().getUserIdentity(); } catch(CloneNotSupportedException ex) { throw new WorkflowException("document is not a publishable document"); } } else { - if(draft.username != null && !getWorkflowContext().getUserIdentity().equals(draft.username)) + if(draftDocument.username != null && !getWorkflowContext().getUserIdentity().equals(draftDocument.username)) throw new WorkflowException("document already being edited"); } - return draft; + return draftDocument; } public void commitEditableInstance() throws WorkflowException { ReviewedActionsWorkflowImpl.log.info("commit editable instance of document "); - if(draft != null) { - unpublished = null; - draft.setState(PublishableDocument.UNPUBLISHED); + if(draftDocument != null) { + unpublishedDocument = null; + draftDocument.setState(PublishableDocument.UNPUBLISHED); } else { throw new WorkflowException("no draft version of publication"); } @@ -87,13 +142,13 @@ public void disposeEditableInstance() throws WorkflowException { ReviewedActionsWorkflowImpl.log.info("dispose editable instance on document "); - draft = null; + draftDocument = null; } public void requestDeletion() throws WorkflowException { ReviewedActionsWorkflowImpl.log.info("deletion request on document "); if(current == null) { - current = new PublicationRequest(PublicationRequest.DELETE, unpublished, getWorkflowContext().getUserIdentity()); + current = new PublicationRequest(PublicationRequest.DELETE, unpublishedDocument, getWorkflowContext().getUserIdentity()); } else { throw new WorkflowException("request deletion failure"); } @@ -102,7 +157,7 @@ public void requestPublication() throws WorkflowException { ReviewedActionsWorkflowImpl.log.info("publication request on document "); if(current == null) { - current = new PublicationRequest(PublicationRequest.PUBLISH, unpublished, getWorkflowContext().getUserIdentity()); + current = new PublicationRequest(PublicationRequest.PUBLISH, unpublishedDocument, getWorkflowContext().getUserIdentity()); } else { throw new WorkflowException("publication request already pending"); } @@ -111,7 +166,7 @@ public void requestDepublication() throws WorkflowException { ReviewedActionsWorkflowImpl.log.info("depublication request on document "); if(current == null) { - current = new PublicationRequest(PublicationRequest.DEPUBLISH, published, getWorkflowContext().getUserIdentity()); + current = new PublicationRequest(PublicationRequest.DEPUBLISH, publishedDocument, getWorkflowContext().getUserIdentity()); } else { throw new WorkflowException("publication request already pending"); } @@ -130,7 +185,7 @@ public void requestPublication(Date publicationDate) throws WorkflowException { ReviewedActionsWorkflowImpl.log.info("publication request on document "); if(current == null) { - current = new PublicationRequest(PublicationRequest.SCHEDPUBLISH, unpublished, getWorkflowContext().getUserIdentity(), publicationDate); + current = new PublicationRequest(PublicationRequest.SCHEDPUBLISH, unpublishedDocument, getWorkflowContext().getUserIdentity(), publicationDate); } else { throw new WorkflowException("publication request already pending"); } @@ -144,7 +199,7 @@ public void requestDepublication(Date depublicationDate) throws WorkflowException { ReviewedActionsWorkflowImpl.log.info("depublication request on document "); if(current == null) { - current = new PublicationRequest(PublicationRequest.SCHEDDEPUBLISH, published, getWorkflowContext().getUserIdentity(), depublicationDate); + current = new PublicationRequest(PublicationRequest.SCHEDDEPUBLISH, publishedDocument, getWorkflowContext().getUserIdentity(), depublicationDate); } else { throw new WorkflowException("publication request already pending"); } @@ -152,7 +207,7 @@ PublishableDocument getRejectedDocument() throws WorkflowException { try { - PublishableDocument rejected = (PublishableDocument) unpublished.clone(); + PublishableDocument rejected = (PublishableDocument) unpublishedDocument.clone(); rejected.setState(PublishableDocument.STALE); return rejected; } catch(CloneNotSupportedException ex) { @@ -161,13 +216,13 @@ } public void restore(Calendar historic) throws WorkflowException { - if(unpublished != null || published == null) { + if(unpublishedDocument != null || publishedDocument == null) { throw new WorkflowException("Unable to retrieve historic version of document when document not in live state"); } try { Map replacements = new TreeMap(); // note not to use JDK1.5 types here, BCEL does not support them replacements.put("./hippostd:state", new String[] { "unpublished" }); - VersionWorkflow versionWorkflow = (VersionWorkflow) getWorkflowContext().getWorkflow("versioning", published); + VersionWorkflow versionWorkflow = (VersionWorkflow) getWorkflowContext().getWorkflow("versioning", publishedDocument); versionWorkflow.restore(historic, replacements); } catch(MappingException ex) { throw new WorkflowException("Restore historic document failed"); Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflowImpl.java =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflowImpl.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/java/org/hippoecm/repository/reviewedactions/FullReviewedActionsWorkflowImpl.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -46,15 +46,15 @@ throw new WorkflowException("cannot delete document with pending depublication request"); if(current3 != null) throw new WorkflowException("cannot delete document with pending delete request"); - if(published != null) + if(publishedDocument != null) throw new WorkflowException("cannot delete published document"); - if(draft != null) + if(draftDocument != null) throw new WorkflowException("cannot delete document being edited"); doDelete(); } public void doDelete() throws WorkflowException { - unpublished = draft = null; + unpublishedDocument = draftDocument = null; } public void copy(Document destination, String newName) throws MappingException, RemoteException, WorkflowException, RepositoryException { @@ -65,15 +65,15 @@ throw new WorkflowException("cannot copy document with pending depublication request"); if(current3 != null) throw new WorkflowException("cannot copy document with pending delete request"); - if(published != null) + if(publishedDocument != null) throw new WorkflowException("cannot copy published document"); - if(draft != null) + if(draftDocument != null) throw new WorkflowException("cannot copy document being edited"); - Document folder = getWorkflowContext().getDocument("embedded", unpublished.getIdentity()); + Document folder = getWorkflowContext().getDocument("embedded", unpublishedDocument.getIdentity()); Workflow workflow = getWorkflowContext().getWorkflow("internal", folder); if(workflow instanceof FolderWorkflow) - ((FolderWorkflow)workflow).copy(unpublished, destination, newName); + ((FolderWorkflow)workflow).copy(unpublishedDocument, destination, newName); else throw new WorkflowException("cannot copy document which is not contained in a folder"); } @@ -86,15 +86,15 @@ throw new WorkflowException("cannot move document with pending depublication request"); if(current3 != null) throw new WorkflowException("cannot move document with pending delete request"); - if(published != null) + if(publishedDocument != null) throw new WorkflowException("cannot move published document"); - if(draft != null) + if(draftDocument != null) throw new WorkflowException("cannot move document being edited"); - Document folder = getWorkflowContext().getDocument("embedded", unpublished.getIdentity()); + Document folder = getWorkflowContext().getDocument("embedded", unpublishedDocument.getIdentity()); Workflow workflow = getWorkflowContext().getWorkflow("internal", folder); if(workflow instanceof FolderWorkflow) - ((FolderWorkflow)workflow).move(unpublished, destination, newName); + ((FolderWorkflow)workflow).move(unpublishedDocument, destination, newName); else throw new WorkflowException("cannot move document which is not contained in a folder"); } @@ -107,19 +107,19 @@ throw new WorkflowException("cannot rename document with pending depublication request"); if(current3 != null) throw new WorkflowException("cannot rename document with pending delete request"); - if(published != null) + if(publishedDocument != null) throw new WorkflowException("cannot rename published document"); - if(draft != null) + if(draftDocument != null) throw new WorkflowException("cannot rename document being edited"); // doDepublish(); - DefaultWorkflow defaultWorkflow = (DefaultWorkflow) getWorkflowContext().getWorkflow("core", unpublished); + DefaultWorkflow defaultWorkflow = (DefaultWorkflow) getWorkflowContext().getWorkflow("core", unpublishedDocument); defaultWorkflow.rename(newName); } public void publish() throws WorkflowException, MappingException { ReviewedActionsWorkflowImpl.log.info("publication on document "); - if(unpublished == null) { - if(published == null) { + if(unpublishedDocument == null) { + if(publishedDocument == null) { throw new WorkflowException("No unpublished version of document available for publication"); } else { throw new WorkflowException("Document has already been published"); @@ -133,10 +133,10 @@ } public void doPublish() throws WorkflowException, MappingException { - published = null; - unpublished.setState(PublishableDocument.PUBLISHED); + publishedDocument = null; + unpublishedDocument.setState(PublishableDocument.PUBLISHED); try { - VersionWorkflow versionWorkflow = (VersionWorkflow) getWorkflowContext().getWorkflow("versioning", unpublished); + VersionWorkflow versionWorkflow = (VersionWorkflow) getWorkflowContext().getWorkflow("versioning", unpublishedDocument); versionWorkflow.version(); } catch(MappingException ex) { ReviewedActionsWorkflowImpl.log.warn(ex.getClass().getName()+": "+ex.getMessage(), ex); @@ -160,13 +160,13 @@ void doDepublish() throws WorkflowException { try { - if(unpublished == null) { - unpublished = (PublishableDocument) published.clone(); - unpublished.state = PublishableDocument.UNPUBLISHED; + if(unpublishedDocument == null) { + unpublishedDocument = (PublishableDocument) publishedDocument.clone(); + unpublishedDocument.state = PublishableDocument.UNPUBLISHED; } - published = null; + publishedDocument = null; try { - VersionWorkflow versionWorkflow = (VersionWorkflow) getWorkflowContext().getWorkflow("versioning", unpublished); + VersionWorkflow versionWorkflow = (VersionWorkflow) getWorkflowContext().getWorkflow("versioning", unpublishedDocument); versionWorkflow.version(); } catch(MappingException ex) { ReviewedActionsWorkflowImpl.log.warn(ex.getClass().getName()+": "+ex.getMessage(), ex); Modified: hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions/package.jdo =================================================================== --- hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions/package.jdo 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/reviewed-action/repository/src/main/resources/org/hippoecm/repository/reviewedactions/package.jdo 2009-03-31 09:11:11 UTC (rev 17153) @@ -13,7 +13,7 @@ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ---> +--> @@ -22,10 +22,11 @@ - - - - + + + + + Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin$WorkflowAction$DateDialog.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin$WorkflowAction$DateDialog.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin$WorkflowAction$DateDialog.html 2009-03-31 09:11:11 UTC (rev 17153) @@ -0,0 +1,29 @@ + + + + + + + + +
      + Date: + + +
      +
      + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin$WorkflowAction$DateDialog.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin$WorkflowAction$WorkflowDialog.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin$WorkflowAction$WorkflowDialog.html (rev 0) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin$WorkflowAction$WorkflowDialog.html 2009-03-31 09:11:11 UTC (rev 17153) @@ -0,0 +1,21 @@ + + + +
      + +
      + Property changes on: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin$WorkflowAction$WorkflowDialog.html ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/CompatibilityWorkflowPlugin.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -208,7 +208,7 @@ } } - public abstract class NameDialog extends WorkflowDialog { + public class NameDialog extends WorkflowDialog { @SuppressWarnings("unused") private final static String SVN_ID = "$Id: AbstractNameDialog.java 15465 2008-12-19 15:50:41Z jtietema $"; @@ -216,12 +216,11 @@ protected String name; private IModel title; - public NameDialog(IModel title, IModel question, String name) { + public NameDialog(IModel title, IModel question, PropertyModel nameModel) { super(); - this.name = name; this.title = title; add(new Label("question", question)); - add(new TextFieldWidget("value", new PropertyModel(this, "name"))); + add(new TextFieldWidget("value", nameModel)); } public IModel getTitle() { @@ -229,20 +228,17 @@ } } - public abstract class DestinationDialog extends WorkflowDialog { + public class DestinationDialog extends WorkflowDialog { - protected JcrNodeModel destination; - protected String name; private IModel title; private IRenderService dialogRenderer; private IClusterControl control; - public DestinationDialog(IModel title, IModel question) { + public DestinationDialog(IModel title, IModel question, PropertyModel nameModel, final JcrNodeModel destination) { super(); this.title = title; - this.destination = null; add(new Label("question", question)); - add(new TextFieldWidget("name", new PropertyModel(this, "name"))); + add(new TextFieldWidget("name", nameModel)); IPluginContext context = CompatibilityWorkflowPlugin.this.getPluginContext(); IPluginConfig config = CompatibilityWorkflowPlugin.this.getPluginConfig(); @@ -258,9 +254,8 @@ @Override public void setModel(IModel model) { - DestinationDialog.this.destination = null; if (model != null && model instanceof JcrNodeModel && ((JcrNodeModel) model).getNode() != null) { - destination = (JcrNodeModel) model; + destination.setObject(model.getObject()); } super.setModel(model); } @@ -293,28 +288,19 @@ public IModel getTitle() { return title; } - - @Override - public void onDetach() { - if (destination != null) { - destination.detach(); - } - super.onDetach(); - } } - public abstract class DateDialog extends WorkflowDialog { + public class DateDialog extends WorkflowDialog { - protected Date date; protected Button now; - public DateDialog(IModel question, Date date) { + public DateDialog(IModel question) { super(); - this.date = date; + final PropertyModel dateModel = new PropertyModel(WorkflowAction.this, "date"); add(new Label("question", question)); - add(new AjaxDateTimeField("value", new PropertyModel(this, "date"))); + add(new AjaxDateTimeField("value", dateModel)); now = new AjaxButton(getButtonId(), this) { @@ -322,7 +308,7 @@ @Override public void onSubmit(AjaxRequestTarget target, Form form) { - DateDialog.this.date = null; + dateModel.setObject(null); onOk(); if (!hasError()) { closeDialog(); Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuHierarchy.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuHierarchy.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuHierarchy.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -51,8 +51,13 @@ if(submenus.containsKey("default")) { MenuHierarchy submenu = submenus.get("default"); for(ActionDescription action : submenu.items) { - if(action.getId().equals("edit")) { + if(!action.isVisible()) { + continue; + } + if(action.getId().equals("info")) { put(action); + } else if(action.getId().equals("edit")) { + put(action); } else if(action.getId().equals("delete")) { put(new String[] { "document" }, action); } else if(action.getId().equals("copy")) { @@ -61,10 +66,8 @@ put(new String[] { "document" }, action); } else if(action.getId().equals("rename")) { put(new String[] { "document" }, action); - } else if(action.getId().equals("publish")) { + } else if(action.getId().toLowerCase().contains("publi")) { put(new String[] { "publication" }, action); - } else if(action.getId().equals("depublish")) { - put(new String[] { "publication" }, action); } else { put(new String[] { "miscelleneous" }, action); } Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java 2009-03-31 09:01:08 UTC (rev 17152) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/StdWorkflow.java 2009-03-31 09:11:11 UTC (rev 17153) @@ -23,6 +23,7 @@ import org.apache.wicket.ResourceReference; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.Image; +import org.apache.wicket.model.IModel; import org.apache.wicket.model.StringResourceModel; import org.hippoecm.frontend.Home; import org.hippoecm.frontend.plugin.IPluginContext; @@ -80,7 +81,7 @@ return name; } - protected StringResourceModel getTitle() { + protected IModel getTitle() { return new StringResourceModel(getName(), this, null, getName()); } From svn-logs at hippocms.org Tue Mar 31 11:12:24 2009 From: svn-logs at hippocms.org (bvanhalderen) Date: Tue Mar 31 12:03:40 2009 Subject: [HippoRepos-dev] [17154] hippo-ecm: HREPTWO-1999: remove edit icon from all buttons, the edit already has this button Message-ID: <20090331091224.8BA9FC5BF@svnnew.onehippo.org> Revision: 17154 Author: bvanhalderen Date: 2009-03-31 11:12:24 +0200 (Tue, 31 Mar 2009) Log Message: ----------- HREPTWO-1999: remove edit icon from all buttons, the edit already has this button Modified Paths: -------------- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuAction.html Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuAction.html =================================================================== --- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuAction.html 2009-03-31 09:11:11 UTC (rev 17153) +++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/MenuAction.html 2009-03-31 09:12:24 UTC (rev 17154) @@ -15,7 +15,7 @@ --> -
    • +
    • [DROP DOWN ICON][DROP DOWN TEXT] From helpdesk at onehippo.com Tue Mar 31 11:15:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Tue Mar 31 12:04:03 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2368) Improve performance Message-ID: <6583425.1238490904294.JavaMail.jira@jira.onehippo.org> Improve performance ------------------- Key: HREPTWO-2368 URL: http://issues.onehippo.com/browse/HREPTWO-2368 Project: Hippo Repository 2 Issue Type: Improvement Reporter: Frank van Lankvelt Assignee: Frank van Lankvelt Fix For: r2.06.00 (m13) The performance that the SPI layer should be giving is largely ruined by observations. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 31 11:17:01 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Tue Mar 31 12:04:21 2009 Subject: [HippoRepos-dev] [17155] hippo-ecm: HREPTWO-2368: only refresh parts of the tree that have received events Message-ID: <20090331091701.DFF1BC5BF@svnnew.onehippo.org> Revision: 17155 Author: fvlankvelt Date: 2009-03-31 11:17:01 +0200 (Tue, 31 Mar 2009) Log Message: ----------- HREPTWO-2368: only refresh parts of the tree that have received events Modified Paths: -------------- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java 2009-03-31 09:12:24 UTC (rev 17154) +++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/JcrObservationManager.java 2009-03-31 09:17:01 UTC (rev 17155) @@ -267,7 +267,7 @@ return session.getRootNode().getNode(path.substring(1)); } } - + boolean listenToFacetSearch() { // subscribe when listening to deep tree structures; // there will/might be facetsearches in there. @@ -341,6 +341,10 @@ // process pending changes try { Node root = getRoot(); + if (events.size() > 0) { + root.refresh(true); + } + if (!isVirtual(root)) { List nodes = new LinkedList(); if (nodeTypes == null) { @@ -498,13 +502,6 @@ UserSession session = (UserSession) org.apache.wicket.Session.get(); if (session != null) { - try { - session.getJcrSession().refresh(true); - } catch (RepositoryException ex) { - log.error("failed to refresh the session", ex); - return; - } - // copy set of listeners; don't synchronize on map while notifying observers // as it may need to be modified as a result of the event. Set> set; Modified: hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java =================================================================== --- hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java 2009-03-31 09:12:24 UTC (rev 17154) +++ hippo-ecm/trunk/frontend/engine/src/test/java/org/hippoecm/frontend/model/event/ObservationTest.java 2009-03-31 09:17:01 UTC (rev 17155) @@ -27,6 +27,7 @@ import java.util.List; import javax.jcr.Node; +import javax.jcr.Repository; import javax.jcr.observation.Event; import org.apache.wicket.Page; @@ -240,7 +241,28 @@ session.save(); } + @Test + public void testInterSessionCommunication() throws Exception { + Node root = session.getRootNode(); + List events = new LinkedList(); + IObserver observer = new TestObserver(new JcrNodeModel(root), events); + context.registerService(observer, IObserver.class.getName()); + + javax.jcr.Session other = server.login(SYSTEMUSER_ID, SYSTEMUSER_PASSWORD); + Node otherTestNode = other.getRootNode().addNode("test", "nt:unstructured"); + other.save(); + + Thread.sleep(500); + + JcrObservationManager.getInstance().processEvents(); + assertTrue(events.size() == 1); + + Node testNode = root.getNode("test"); + assertTrue(testNode.isSame(otherTestNode)); + } + + @Test /** * test whether event listeners are garbage collected. */ From helpdesk at onehippo.com Tue Mar 31 11:19:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Tue Mar 31 12:50:26 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2368) Improve performance In-Reply-To: <6583425.1238490904294.JavaMail.jira@jira.onehippo.org> Message-ID: <12069752.1238491144353.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2368?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2368. ----------------------------------------- Resolution: Fixed > Improve performance > ------------------- > > Key: HREPTWO-2368 > URL: http://issues.onehippo.com/browse/HREPTWO-2368 > Project: Hippo Repository 2 > Issue Type: Improvement > Reporter: Frank van Lankvelt > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > Original Estimate: 2 days > Remaining Estimate: 2 days > > The performance that the SPI layer should be giving is largely ruined by observations. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 31 11:27:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Tue Mar 31 12:50:52 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2355) Run profiling to find any performance bottlenecks In-Reply-To: <17272005.1238161684011.JavaMail.jira@jira.onehippo.org> Message-ID: <27717393.1238491624245.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2355?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2355. ----------------------------------------- Resolution: Fixed > Run profiling to find any performance bottlenecks > ------------------------------------------------- > > Key: HREPTWO-2355 > URL: http://issues.onehippo.com/browse/HREPTWO-2355 > Project: Hippo Repository 2 > Issue Type: Task > Affects Versions: r2.05.00 (m12 - new feats) > Reporter: Arje Cahn > Assignee: Frank van Lankvelt > Fix For: r2.06.00 (m13) > > > Current issues: > - Clicking on an article: preview loading > - Clicking on a folder > - Switch to edit > - Saving > - Closing a tab -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 31 11:27:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Tue Mar 31 12:50:58 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2317) New property not displayed in console directly after adding In-Reply-To: <23317615.1236292863664.JavaMail.jira@hat01> Message-ID: <12032573.1238491624098.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2317?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2317. ----------------------------------------- Resolution: Cannot Reproduce probably fixed by other changes. > New property not displayed in console directly after adding > ----------------------------------------------------------- > > Key: HREPTWO-2317 > URL: http://issues.onehippo.com/browse/HREPTWO-2317 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.03.00 (m10 - scalability), r2.04.00 (m11 - technical), r2.05.00 (m12 - new feats) > Environment: 2.03.00 and 2.05.00-SNAPSHOT build 16743 > I assume it is in 2.04.xx as well. > Reporter: Niels van Kampenhout > Assignee: Frank van Lankvelt > Priority: High > Fix For: r2.06.00 (m13) > > > - log in to console > - add a node > - select the new node > - add new property > - new property does not show up > - select a different node > - select the new node again > - the property does show up > This bug has been present since 2.03.00 and is a serious annoyance when e.g. creating HST configuration in the console. Surprisingly I could not find it in JIRA, maybe I missed it, in that case please mark this one as duplicate. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From helpdesk at onehippo.com Tue Mar 31 16:17:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Tue Mar 31 17:33:14 2009 Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-2369) Cannot select document with Link type Message-ID: <371372.1238509024001.JavaMail.jira@jira.onehippo.org> Cannot select document with Link type ------------------------------------- Key: HREPTWO-2369 URL: http://issues.onehippo.com/browse/HREPTWO-2369 Project: Hippo Repository 2 Issue Type: Bug Affects Versions: r2.03.02 Reporter: Frank van Lankvelt Assignee: Frank van Lankvelt Fix For: r2.03.03 It is not possible to select a document. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira From svn-logs at hippocms.org Tue Mar 31 16:17:27 2009 From: svn-logs at hippocms.org (fvlankvelt) Date: Tue Mar 31 17:33:50 2009 Subject: [HippoRepos-dev] [17162] hippo-ecm: HREPTWO-2369: Plugin expects a (specific) document type Message-ID: <20090331141727.555C3C5BF@svnnew.onehippo.org> Revision: 17162 Author: fvlankvelt Date: 2009-03-31 16:17:26 +0200 (Tue, 31 Mar 2009) Log Message: ----------- HREPTWO-2369: Plugin expects a (specific) document type Modified Paths: -------------- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/addon/editor/src/main/resources/namespace-system.xml Modified: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/addon/editor/src/main/resources/namespace-system.xml =================================================================== --- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/addon/editor/src/main/resources/namespace-system.xml 2009-03-31 12:56:54 UTC (rev 17161) +++ hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/addon/editor/src/main/resources/namespace-system.xml 2009-03-31 14:17:26 UTC (rev 17162) @@ -890,7 +890,7 @@ - hippo:handle + hippo:document From helpdesk at onehippo.com Tue Mar 31 16:28:04 2009 From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt)) Date: Tue Mar 31 17:34:20 2009 Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-2369) Cannot select document with Link type In-Reply-To: <371372.1238509024001.JavaMail.jira@jira.onehippo.org> Message-ID: <6125896.1238509684342.JavaMail.jira@jira.onehippo.org> [ http://issues.onehippo.com/browse/HREPTWO-2369?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Frank van Lankvelt resolved HREPTWO-2369. ----------------------------------------- Resolution: Fixed > Cannot select document with Link type > ------------------------------------- > > Key: HREPTWO-2369 > URL: http://issues.onehippo.com/browse/HREPTWO-2369 > Project: Hippo Repository 2 > Issue Type: Bug > Affects Versions: r2.03.02 > Reporter: Frank van Lankvelt > Assignee: Frank van Lankvelt > Fix For: r2.03.03 > > Original Estimate: 1 hour > Remaining Estimate: 1 hour > > It is not possible to select a document. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira