From f0f5688adac46361bb0e252e92a38f2ed40a5556 Mon Sep 17 00:00:00 2001
From: Yves Christian Kpakpo <yveschristian.kpakpo@maarch.org>
Date: Tue, 19 Feb 2013 18:50:11 +0000
Subject: [PATCH] =?UTF-8?q?Update:=20Ajout=20des=20fonctionnalit=C3=A9s=20?=
 =?UTF-8?q?de=20workflow=20dossiers=20au=20trunk=20(core)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 core/trunk/core/class/StatusControler.php |  6 ++++++
 core/trunk/core/class/class_security.php  |  4 +++-
 core/trunk/core/manage_action.php         | 10 ++++++++--
 core/trunk/core/xml/actions_pages.xml     | 16 ++++++++++++++++
 core/trunk/data_en.sql                    |  4 ++--
 core/trunk/data_fr.sql                    |  4 ++--
 core/trunk/data_mlb_fr.sql                | 10 +++++-----
 core/trunk/structure.sql                  |  9 ++++++++-
 8 files changed, 50 insertions(+), 13 deletions(-)

diff --git a/core/trunk/core/class/StatusControler.php b/core/trunk/core/class/StatusControler.php
index 0e59b3b6d6f..e21269e8d8b 100644
--- a/core/trunk/core/class/StatusControler.php
+++ b/core/trunk/core/class/StatusControler.php
@@ -257,6 +257,12 @@ class Maarch_Core_Class_StatusControler
                 && $status->can_be_modified != 'N')) {
           $status->can_be_modified = 'Y';
         }
+        
+        if (!isset($status->is_folder_status)
+            || ($status->is_folder_status != 'N'
+                && $status->is_folder_status != 'Y')) {
+          $status->is_folder_status = 'N';
+        }
 
         $_SESSION['service_tag'] = 'status_check';
         $core = new core_tools();
diff --git a/core/trunk/core/class/class_security.php b/core/trunk/core/class/class_security.php
index 97177d5a94b..ffc192bfaac 100644
--- a/core/trunk/core/class/class_security.php
+++ b/core/trunk/core/class/class_security.php
@@ -761,7 +761,9 @@ class security extends dbquery
                     if(
                         isset($_SESSION['user']['baskets'][$ind_bask]['clause']) 
                         && trim($_SESSION['user']['baskets'][$ind_bask]['clause']
-                    ) <> '') {
+                        ) <> '' 
+                        && $_SESSION['user']['baskets'][$ind_bask]['is_folder_basket'] == 'N'
+                    ) {
                         $basketQuery .= ' or (' 
                             . $_SESSION['user']['baskets'][$ind_bask]['clause'] 
                             . ')';
diff --git a/core/trunk/core/manage_action.php b/core/trunk/core/manage_action.php
index cdce605b1c1..dcfc42e9321 100644
--- a/core/trunk/core/manage_action.php
+++ b/core/trunk/core/manage_action.php
@@ -140,7 +140,10 @@ elseif(trim($_POST['req']) == 'change_status' && !empty($_POST['values']) && !em
         $arr_id[$i] = str_replace('#', '', $arr_id[$i]);
         $result .= $arr_id[$i].'#';
         if (trim($_POST['new_status']) <> '') {
-            if ($_POST['table'] == 'rm_ios') {
+            if ($_POST['table'] == 'folders') {
+                $query_str = "update " . $_POST['table'] .  " set status = '" 
+                    . $_POST['new_status'] . "' where folders_system_id = " . $arr_id[$i];
+            } else if ($_POST['table'] == 'rm_ios') {
                 $query_str = "update " . $_POST['table'] .  " set status = '" 
                     . $_POST['new_status'] . "' where io_id = " . $arr_id[$i];
             } else {
@@ -216,7 +219,10 @@ else
             $arr_id[$i] = str_replace('#', '', $arr_id[$i]);
             $result .= $arr_id[$i].'#';
             if (trim($status) <> '') {
-                if ($_POST['table'] == 'rm_ios') {
+                if ($_POST['table'] == 'folders') {
+                    $query_str = "update " . $_POST['table'] .  " set status = '" 
+                    . $status . "' where folders_system_id = " . $arr_id[$i];
+                } else if ($_POST['table'] == 'rm_ios') {
                     $query_str = "update " . $_POST['table'] .  " set status = '" 
                         . $status . "' where io_id = " . $arr_id[$i];
                 } else {
diff --git a/core/trunk/core/xml/actions_pages.xml b/core/trunk/core/xml/actions_pages.xml
index 6dafa1605e9..8e1a0bfb178 100644
--- a/core/trunk/core/xml/actions_pages.xml
+++ b/core/trunk/core/xml/actions_pages.xml
@@ -159,4 +159,20 @@ An action page is described in a ACTIONPAGE tag :
         <MODULE>records_management</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
     </ACTIONPAGE>
+    <ACTIONPAGE>
+        <ID>confirm_folder_status</ID>
+        <LABEL>_CONFIRM_FOLDER_STATUS</LABEL>
+        <NAME>confirm_folder_status</NAME>
+        <ORIGIN>module</ORIGIN>
+        <MODULE>folder</MODULE>
+        <FLAG_CREATE>false</FLAG_CREATE>
+    </ACTIONPAGE>
+    <ACTIONPAGE>
+        <ID>redirect_folder</ID>
+        <LABEL>_REDIRECT_FOLDER</LABEL>
+        <NAME>redirect_folder</NAME>
+        <ORIGIN>module</ORIGIN>
+        <MODULE>folder</MODULE>
+        <FLAG_CREATE>false</FLAG_CREATE>
+    </ACTIONPAGE>
 </ROOT>
diff --git a/core/trunk/data_en.sql b/core/trunk/data_en.sql
index 27cd5bbee4d..2cb77f54711 100644
--- a/core/trunk/data_en.sql
+++ b/core/trunk/data_en.sql
@@ -141,7 +141,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', 'ph
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', 'physical_archive_batch_manage');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', '_print_sep');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'my_alerts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'use_alerts_on_doc');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'use_alerts_on_folder');
@@ -156,7 +156,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'clo
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'print_details');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'my_alerts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'use_alerts_on_doc');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'use_alerts_on_folder');
diff --git a/core/trunk/data_fr.sql b/core/trunk/data_fr.sql
index 1b0665320e8..d871f8e6b6e 100644
--- a/core/trunk/data_fr.sql
+++ b/core/trunk/data_fr.sql
@@ -141,7 +141,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', 'ph
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', 'physical_archive_batch_manage');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', '_print_sep');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'my_alerts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'use_alerts_on_doc');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'use_alerts_on_folder');
@@ -156,7 +156,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'clo
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'print_details');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'my_alerts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'use_alerts_on_doc');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'use_alerts_on_folder');
diff --git a/core/trunk/data_mlb_fr.sql b/core/trunk/data_mlb_fr.sql
index 7d021cf7870..7896ecbd0e0 100644
--- a/core/trunk/data_mlb_fr.sql
+++ b/core/trunk/data_mlb_fr.sql
@@ -90,7 +90,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'c
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'add_copy_in_process');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'admin_templates');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'view_versions');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'add_links');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'update_case');
@@ -113,7 +113,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'add_cas
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'update_list_diff_in_details');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'create_folder');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'add_new_version');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'add_links');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'update_case');
@@ -136,7 +136,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'upda
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'reports');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'add_new_version');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'admin');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'admin_architecture');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'my_contacts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'put_in_validation');
@@ -171,7 +171,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('ELU', 'tag_view'
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ELU', 'add_tag_to_res');
 
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'add_links');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'view_baskets');
@@ -203,7 +203,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER',
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'update_list_diff_in_details');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'reports');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'admin');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'my_contacts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'view_baskets');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'join_res_case');
diff --git a/core/trunk/structure.sql b/core/trunk/structure.sql
index 2d6483d2449..ba2c163062a 100644
--- a/core/trunk/structure.sql
+++ b/core/trunk/structure.sql
@@ -27,6 +27,7 @@ CREATE TABLE actions
   label_action character varying(255),
   id_status character varying(10),
   is_system character(1) NOT NULL DEFAULT 'N'::bpchar,
+  is_folder_action character(1) NOT NULL DEFAULT 'N'::bpchar,
   enabled character(1) NOT NULL DEFAULT 'Y'::bpchar,
   action_page character varying(255),
   history character(1) NOT NULL DEFAULT 'N'::bpchar,
@@ -235,6 +236,7 @@ CREATE TABLE status
   id character varying(10) NOT NULL,
   label_status character varying(50) NOT NULL,
   is_system character(1) NOT NULL DEFAULT 'Y'::bpchar,
+  is_folder_status character(1) NOT NULL default 'N'::bpchar,
   img_filename character varying(255),
   maarch_module character varying(255) NOT NULL DEFAULT 'apps'::character varying,
   can_be_searched character(1) NOT NULL DEFAULT 'Y'::bpchar,
@@ -683,6 +685,7 @@ CREATE TABLE baskets
   basket_clause text NOT NULL,
   is_generic character varying(6) NOT NULL DEFAULT 'N'::character varying,
   is_visible character(1) NOT NULL DEFAULT 'Y'::bpchar,
+  is_folder_basket character (1) NOT NULL default 'N'::bpchar,
   enabled character(1) NOT NULL DEFAULT 'Y'::bpchar,
   CONSTRAINT baskets_pkey PRIMARY KEY (coll_id, basket_id)
 )
@@ -709,6 +712,8 @@ CREATE TABLE groupbasket
   can_redirect character(1) NOT NULL DEFAULT 'N'::bpchar,
   can_delete character(1) NOT NULL DEFAULT 'N'::bpchar,
   can_insert character(1) NOT NULL DEFAULT 'N'::bpchar,
+  list_lock_clause text,
+  sublist_lock_clause text,
   CONSTRAINT groupbasket_pkey PRIMARY KEY (group_id, basket_id)
 )
 WITH (OIDS=FALSE);
@@ -894,9 +899,11 @@ CREATE TABLE folders
   description character varying(255) DEFAULT NULL::character varying,
   author character varying(255) DEFAULT NULL::character varying,
   typist character varying(255) DEFAULT NULL::character varying,
-  status character varying(50) NOT NULL DEFAULT 'NEW'::character varying,
+  status character varying(50) NOT NULL DEFAULT 'FOLDNEW'::character varying,
   folder_level smallint DEFAULT (1)::smallint,
   creation_date timestamp without time zone NOT NULL,
+  destination character varying(50) DEFAULT NULL,
+  dest_user character varying(128) DEFAULT NULL,
   folder_out_id bigint,
   video_status character varying(10) DEFAULT NULL,
   video_user character varying(128) DEFAULT NULL,
-- 
GitLab