diff --git a/htdocs/admin/ecm.php b/htdocs/admin/ecm.php index 76bf86993e2..91236c33bd7 100644 --- a/htdocs/admin/ecm.php +++ b/htdocs/admin/ecm.php @@ -23,6 +23,7 @@ */ require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/ecm.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; // Load translation files required by the page @@ -70,6 +71,10 @@ $linkback = ''; +$head = ecm_admin_prepare_head(); + +dol_fiche_head($head, 'ecm', $langs->trans("Sendings"), -1, 'ecm'); + print ''; print ''; print ''; diff --git a/htdocs/core/lib/ecm.lib.php b/htdocs/core/lib/ecm.lib.php index b9da91093bb..3b0cef1a809 100644 --- a/htdocs/core/lib/ecm.lib.php +++ b/htdocs/core/lib/ecm.lib.php @@ -138,3 +138,38 @@ function ecm_prepare_head_fm($object) return $head; } + +/** + * Return array head with list of tabs to view object informations. + * + * @return array head array with tabs + */ +function ecm_admin_prepare_head() +{ + global $langs, $conf; + $langs->load("ecm"); + + $h = 0; + $head = array(); + + $head[$h][0] = DOL_URL_ROOT."/admin/ecm.php"; + $head[$h][1] = $langs->trans("Setup"); + $head[$h][2] = 'ecm'; + $h++; + + $head[$h][0] = DOL_URL_ROOT.'/admin/ecm_files_extrafields.php'; + $head[$h][1] = $langs->trans("ExtraFieldsEcmFiles"); + $head[$h][2] = 'attributes_ecm_files'; + $h++; + + $head[$h][0] = DOL_URL_ROOT.'/admin/ecm_directories_extrafields.php'; + $head[$h][1] = $langs->trans("ExtraFieldsEcmDirectories"); + $head[$h][2] = 'attributes_ecm_directories'; + $h++; + + complete_head_from_modules($conf, $langs, null, $head, $h, 'ecm_admin'); + + complete_head_from_modules($conf, $langs, null, $head, $h, 'ecm_admin', 'remove'); + + return $head; +} diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index 8799af86017..25673c65c6c 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -25,7 +25,7 @@ /** * Class to manage ECM directories */ -class EcmDirectory // extends CommonObject +class EcmDirectory extends CommonObject { /** * @var string ID to identify managed object @@ -35,7 +35,7 @@ class EcmDirectory // extends CommonObject /** * @var string Name of table without prefix where object is stored */ - //public $table_element='ecm_directories'; + public $table_element='ecm_directories'; /** * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png @@ -345,6 +345,10 @@ class EcmDirectory // extends CommonObject $this->date_m = $this->db->jdate($obj->date_m); } + // Retrieve all extrafields for ecm_files + // fetch optionals attributes and labels + $this->fetch_optionals(); + $this->db->free($resql); return $obj ? 1 : 0; diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index c3cb0e5462b..b0c1df8316f 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -403,9 +403,9 @@ class EcmFiles extends CommonObject $this->src_object_id = $obj->src_object_id; } - // Retrieve all extrafields for invoice + // Retrieve all extrafields for ecm_files // fetch optionals attributes and labels - // $this->fetch_optionals(); + $this->fetch_optionals(); // $this->fetch_lines(); diff --git a/htdocs/ecm/dir_card.php b/htdocs/ecm/dir_card.php index 27d08e9119f..b1473908c3a 100644 --- a/htdocs/ecm/dir_card.php +++ b/htdocs/ecm/dir_card.php @@ -27,6 +27,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/ecm.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; // Load translation files required by page $langs->loadLangs(array('ecm', 'companies', 'other')); @@ -204,6 +205,16 @@ if ($action == 'update' && !GETPOST('cancel', 'alpha')) // Fetch was already done $ecmdir->label = dol_sanitizeFileName(GETPOST("label")); $ecmdir->description = GETPOST("description"); + $ret = $extrafields->setOptionalsFromPost(null, $ecmdir); + if ($ret < 0) $error++; + if (!$error) { + // Actions on extra fields + $result = $ecmdir->insertExtraFields(); + if ($result < 0) { + setEventMessages($ecmdir->error, $ecmdir->errors, 'errors'); + $error++; + } + } $result = $ecmdir->update($user); if ($result > 0) { @@ -266,6 +277,10 @@ if ($action == 'update' && !GETPOST('cancel', 'alpha')) $form = new Form($db); $object = new EcmDirectory($db); // Need to create a new one instance +$extrafields = new ExtraFields($db); +// fetch optionals attributes and labels +$extrafields->fetch_name_optionals_label($object->table_element); + if ($module == 'ecm') { @@ -415,6 +430,7 @@ print ''; print ''; +print $object->showOptionals($extrafields, ($action == 'edit' ? 'edit' : 'view')); print '
'.$langs->trans("Description").'
'.$langs->trans("TotalSizeOfAttachedFiles").''; print dol_print_size($totalsize); print '
'; if ($action == 'edit') diff --git a/htdocs/ecm/file_card.php b/htdocs/ecm/file_card.php index 48c15f92aa2..3b5cca1eebe 100644 --- a/htdocs/ecm/file_card.php +++ b/htdocs/ecm/file_card.php @@ -27,6 +27,7 @@ require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmfiles.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/ecm.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; // Load translation files required by page $langs->loadLangs(array('ecm', 'companies', 'other', 'users', 'orders', 'propal', 'bills', 'contracts', 'categories')); @@ -94,6 +95,10 @@ $filepathtodocument = $relativetodocument.$file->label; // Try to load object from index $object = new ECMFiles($db); +$extrafields = new ExtraFields($db); +// fetch optionals attributes and labels +$extrafields->fetch_name_optionals_label($object->table_element); + $result = $object->fetch(0, '', $filepathtodocument); if ($result < 0) { @@ -148,7 +153,6 @@ if ($action == 'update') // Now we update index of file $db->begin(); - //print $oldfile.' - '.$newfile; if ($newlabel != $oldlabel) { @@ -181,6 +185,16 @@ if ($action == 'update') if ($object->id > 0) { + $ret = $extrafields->setOptionalsFromPost(null, $object); + if ($ret < 0) $error++; + if (!$error) { + // Actions on extra fields + $result = $object->insertExtraFields(); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + $error++; + } + } // Call update to set the share key $result = $object->update($user); if ($result < 0) @@ -365,8 +379,9 @@ if (!empty($object->share)) print 'share ? ' checked="checked"' : '').' /> '; } } -print ''; - +print ''; +print ''; +print $object->showOptionals($extrafields, ($action == 'edit'?'edit':'view')); print ''; print ''; diff --git a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql index e76948808bb..af9d40d9449 100644 --- a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql +++ b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql @@ -105,28 +105,28 @@ ALTER TABLE llx_c_incoterms ADD COLUMN label varchar(100) NULL; CREATE TABLE llx_recruitment_recruitmentjobposition( - rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, - ref varchar(128) DEFAULT '(PROV)' NOT NULL, - entity INTEGER DEFAULT 1 NOT NULL, - label varchar(255) NOT NULL, - qty integer DEFAULT 1 NOT NULL, - fk_soc integer, - fk_project integer, - fk_user_recruiter integer, - fk_user_supervisor integer, - fk_establishment integer, - date_planned date, - remuneration_suggested varchar(255), - description text, - note_public text, - note_private text, - date_creation datetime NOT NULL, - tms timestamp, - fk_user_creat integer NOT NULL, - fk_user_modif integer, - last_main_doc varchar(255), - import_key varchar(14), - model_pdf varchar(255), + rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, + ref varchar(128) DEFAULT '(PROV)' NOT NULL, + entity INTEGER DEFAULT 1 NOT NULL, + label varchar(255) NOT NULL, + qty integer DEFAULT 1 NOT NULL, + fk_soc integer, + fk_project integer, + fk_user_recruiter integer, + fk_user_supervisor integer, + fk_establishment integer, + date_planned date, + remuneration_suggested varchar(255), + description text, + note_public text, + note_private text, + date_creation datetime NOT NULL, + tms timestamp, + fk_user_creat integer NOT NULL, + fk_user_modif integer, + last_main_doc varchar(255), + import_key varchar(14), + model_pdf varchar(255), status smallint NOT NULL ) ENGINE=innodb; @@ -160,24 +160,24 @@ CREATE TABLE llx_recruitment_recruitmentcandidature( -- BEGIN MODULEBUILDER FIELDS rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, entity integer NOT NULL DEFAULT 1, - fk_recruitmentjobposition INTEGER NULL, - ref varchar(128) DEFAULT '(PROV)' NOT NULL, - description text, - note_public text, - note_private text, - date_creation datetime NOT NULL, - tms timestamp, - fk_user_creat integer NOT NULL, - fk_user_modif integer, - import_key varchar(14), - model_pdf varchar(255), - status smallint NOT NULL, - firstname varchar(128), + fk_recruitmentjobposition INTEGER NULL, + ref varchar(128) DEFAULT '(PROV)' NOT NULL, + description text, + note_public text, + note_private text, + date_creation datetime NOT NULL, + tms timestamp, + fk_user_creat integer NOT NULL, + fk_user_modif integer, + import_key varchar(14), + model_pdf varchar(255), + status smallint NOT NULL, + firstname varchar(128), lastname varchar(128), email varchar(255), phone varchar(64), date_birth date, - remuneration_requested integer, + remuneration_requested integer, remuneration_proposed integer, email_msgid varchar(255), fk_recruitment_origin INTEGER NULL @@ -272,8 +272,8 @@ ALTER TABLE llx_recruitment_recruitmentcandidature ADD UNIQUE INDEX uk_recruitme ALTER TABLE llx_product MODIFY COLUMN seuil_stock_alerte float; ALTER TABLE llx_product MODIFY COLUMN desiredstock float; -ALTER TABLE llx_product_warehouse_properties MODIFY COLUMN seuil_stock_alerte float; -ALTER TABLE llx_product_warehouse_properties MODIFY COLUMN desiredstock float; +ALTER TABLE llx_product_warehouse_properties MODIFY COLUMN seuil_stock_alerte float; +ALTER TABLE llx_product_warehouse_properties MODIFY COLUMN desiredstock float; ALTER TABLE llx_product ADD COLUMN fk_state integer DEFAULT NULL; @@ -330,3 +330,23 @@ ALTER TABLE llx_bank ADD COLUMN origin_type varchar(64) NULL; ALTER TABLE llx_bank ADD COLUMN import_key varchar(14); ALTER TABLE llx_menu MODIFY COLUMN enabled text; + +CREATE TABLE llx_ecm_files_extrafields +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + tms timestamp, + fk_object integer NOT NULL, + import_key varchar(14) -- import key +) ENGINE=innodb; + +ALTER TABLE llx_ecm_files_extrafields ADD INDEX idx_ecm_files_extrafields (fk_object); + +CREATE TABLE llx_ecm_directories_extrafields +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + tms timestamp, + fk_object integer NOT NULL, + import_key varchar(14) -- import key +) ENGINE=innodb; + +ALTER TABLE llx_ecm_directories_extrafields ADD INDEX idx_ecm_directories_extrafields (fk_object); diff --git a/htdocs/langs/en_US/ecm.lang b/htdocs/langs/en_US/ecm.lang index 369ac6dfdfa..aaf81b0f346 100644 --- a/htdocs/langs/en_US/ecm.lang +++ b/htdocs/langs/en_US/ecm.lang @@ -50,3 +50,6 @@ ReSyncListOfDir=Resync list of directories HashOfFileContent=Hash of file content NoDirectoriesFound=No directories found FileNotYetIndexedInDatabase=File not yet indexed into database (try to re-upload it) +ExtraFieldsEcmFiles=Extrafields Ecm Files +ExtraFieldsEcmDirectories=Extrafields Ecm Directories +ECMSetup=ECM Setup