From c4ccdfa001f8f403cfee590432c3615393058794 Mon Sep 17 00:00:00 2001 From: Hystepik Date: Thu, 22 Feb 2024 09:34:08 +0100 Subject: [PATCH 1/5] New add note on deploymentserver object --- class/deploymentserver.class.php | 2 ++ sql/dolibarr_allversions.sql | 1 + sql/llx_sellyoursaas_deploymentserver.sql | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/class/deploymentserver.class.php b/class/deploymentserver.class.php index b2c34802c..7968bd903 100644 --- a/class/deploymentserver.class.php +++ b/class/deploymentserver.class.php @@ -130,6 +130,7 @@ class Deploymentserver extends CommonObject 'servercustomerannounce' => array('type'=>'text', 'label'=>'ServerCustomerAnnounce', 'enabled'=>'1', 'position'=>162, 'notnull'=>0, 'visible'=>1, 'help'=>"ServerCustomerAnnounceInfo", 'csslist'=>'small tdoverflowmax200'), 'servercustomerannouncestatus' => array('type'=>'integer', 'label'=>'ServerCustomerAnnounceStatus', 'enabled'=>'1', 'default'=>0, 'position'=>163, 'notnull'=>1, 'visible'=>1, 'arrayofkeyval'=>array('0'=>'Disabled', '1'=>'Enabled'), 'csslist'=>'center'), 'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModification', 'enabled'=>'1', 'position'=>600, 'notnull'=>0, 'visible'=>-2, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax500'), + 'note' => array('type' => 'text', 'label' => 'Note', 'enabled' => '1', 'position' => 167, 'notnull' => 0, 'visible' => '1',), ); /** @@ -158,6 +159,7 @@ class Deploymentserver extends CommonObject public $servercustomerannouncestatus; public $servercustomerannounce; public $fk_user_modif; + public $note; // END MODULEBUILDER PROPERTIES diff --git a/sql/dolibarr_allversions.sql b/sql/dolibarr_allversions.sql index 792c6904c..f50108376 100644 --- a/sql/dolibarr_allversions.sql +++ b/sql/dolibarr_allversions.sql @@ -157,4 +157,5 @@ ALTER TABLE llx_sellyoursaas_whitelistip ADD UNIQUE INDEX uk_sellyoursaas_whitel ALTER TABLE llx_dolicloud_stats RENAME TO llx_sellyoursaas_stats; ALTER TABLE llx_sellyoursaas_deploymentserver ADD COLUMN fk_user_modif integer; +ALTER TABLE llx_sellyoursaas_deploymentserver ADD COLUMN note text; diff --git a/sql/llx_sellyoursaas_deploymentserver.sql b/sql/llx_sellyoursaas_deploymentserver.sql index bba14e82f..3ba6921c4 100644 --- a/sql/llx_sellyoursaas_deploymentserver.sql +++ b/sql/llx_sellyoursaas_deploymentserver.sql @@ -28,6 +28,7 @@ CREATE TABLE llx_sellyoursaas_deploymentserver( ipaddress varchar(128) NOT NULL, servercountries text, servercustomerannouncestatus integer, - servercustomerannounce text + servercustomerannounce text, + note text -- END MODULEBUILDER FIELDS ) ENGINE=innodb; From f324d1d4b3f7f5e1c178f0939b842f5056cc86ea Mon Sep 17 00:00:00 2001 From: Hystepik Date: Fri, 23 Feb 2024 09:45:52 +0100 Subject: [PATCH 2/5] fix top have public and private note tab --- class/deploymentserver.class.php | 2 +- deploymentserver_note.php | 228 ++++++++++++++++++++++ lib/sellyoursaas_deploymentserver.lib.php | 2 +- sql/dolibarr_allversions.sql | 3 +- 4 files changed, 232 insertions(+), 3 deletions(-) create mode 100644 deploymentserver_note.php diff --git a/class/deploymentserver.class.php b/class/deploymentserver.class.php index 7968bd903..8c2dbdc88 100644 --- a/class/deploymentserver.class.php +++ b/class/deploymentserver.class.php @@ -127,10 +127,10 @@ class Deploymentserver extends CommonObject //'fk_country' => array('type'=>'integer:Ccountry:core/class/ccountry.class.php', 'label'=>'Country', 'enabled'=>'1', 'position'=>52, 'notnull'=>0, 'visible'=>-1, 'picto'=>'country', 'css'=>'maxwidth500 '), 'status' => array('type'=>'integer', 'label'=>'OpenCloseStatus', 'enabled'=>'1', 'position'=>100, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Closed', '1'=>'Opened'), 'validate'=>'1',), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>200, 'notnull'=>0, 'visible'=>0, 'cssview'=>'wordbreak', 'validate'=>'1',), + 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>200, 'notnull'=>0, 'visible'=>0, 'cssview'=>'wordbreak', 'validate'=>'1',), 'servercustomerannounce' => array('type'=>'text', 'label'=>'ServerCustomerAnnounce', 'enabled'=>'1', 'position'=>162, 'notnull'=>0, 'visible'=>1, 'help'=>"ServerCustomerAnnounceInfo", 'csslist'=>'small tdoverflowmax200'), 'servercustomerannouncestatus' => array('type'=>'integer', 'label'=>'ServerCustomerAnnounceStatus', 'enabled'=>'1', 'default'=>0, 'position'=>163, 'notnull'=>1, 'visible'=>1, 'arrayofkeyval'=>array('0'=>'Disabled', '1'=>'Enabled'), 'csslist'=>'center'), 'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModification', 'enabled'=>'1', 'position'=>600, 'notnull'=>0, 'visible'=>-2, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax500'), - 'note' => array('type' => 'text', 'label' => 'Note', 'enabled' => '1', 'position' => 167, 'notnull' => 0, 'visible' => '1',), ); /** diff --git a/deploymentserver_note.php b/deploymentserver_note.php new file mode 100644 index 000000000..deb57a8fb --- /dev/null +++ b/deploymentserver_note.php @@ -0,0 +1,228 @@ + + * Copyright (C) ---Put here your own copyright and developer email--- + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/modulebuilder/template/deploymentserver_note.php + * \ingroup sellyoursaas + * \brief Tab for notes on deploymentserver + */ + + +// General defined Options +//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET +//if (! defined('MAIN_AUTHENTICATION_MODE')) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler +//if (! defined('MAIN_LANG_DEFAULT')) define('MAIN_LANG_DEFAULT', 'auto'); // Force LANG (language) to a particular value +//if (! defined('MAIN_SECURITY_FORCECSP')) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies +//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification +//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip +//if (! defined('NOLOGIN')) define('NOLOGIN', '1'); // Do not use login - if this page is public (can be called outside logged session). This includes the NOIPCHECK too. +//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db +//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // Do not load html.form.class.php +//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // Do not load and show top and left menu +//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user +//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters +//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters +//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data +//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) + + +// Load Dolibarr environment +$res = 0; +// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) +if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { + $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; +} +// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME +$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; +while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { + $i--; + $j--; +} +if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { + $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; +} +if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { + $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; +} +// Try main.inc.php using relative path +if (!$res && file_exists("../main.inc.php")) { + $res = @include "../main.inc.php"; +} +if (!$res && file_exists("../../main.inc.php")) { + $res = @include "../../main.inc.php"; +} +if (!$res && file_exists("../../../main.inc.php")) { + $res = @include "../../../main.inc.php"; +} +if (!$res) { + die("Include of main fails"); +} + +dol_include_once('/sellyoursaas/class/deploymentserver.class.php'); +dol_include_once('/sellyoursaas/lib/sellyoursaas_deploymentserver.lib.php'); + +// Load translation files required by the page +$langs->loadLangs(array("sellyoursaas@sellyoursaas", "companies")); + +// Get parameters +$id = GETPOST('id', 'int'); +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action', 'aZ09'); +$cancel = GETPOST('cancel', 'aZ09'); +$backtopage = GETPOST('backtopage', 'alpha'); + +// Initialize technical objects +$object = new Deploymentserver($db); +$extrafields = new ExtraFields($db); +$diroutputmassaction = $conf->sellyoursaas->dir_output.'/temp/massgeneration/'.$user->id; +$hookmanager->initHooks(array($object->element.'note', 'globalcard')); // Note that conf->hooks_modules contains array +// Fetch optionals attributes and labels +$extrafields->fetch_name_optionals_label($object->table_element); + +// Load object +include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals +if ($id > 0 || !empty($ref)) { + $upload_dir = $conf->sellyoursaas->multidir_output[empty($object->entity) ? $conf->entity : $object->entity]."/".$object->id; +} + + +// There is several ways to check permission. +// Set $enablepermissioncheck to 1 to enable a minimum low level of checks +$enablepermissioncheck = 0; +if ($enablepermissioncheck) { + $permissiontoread = $user->rights->sellyoursaas->deploymentserver->read; + $permissiontoadd = $user->rights->sellyoursaas->deploymentserver->write; + $permissionnote = $user->rights->sellyoursaas->deploymentserver->write; // Used by the include of actions_setnotes.inc.php +} else { + $permissiontoread = 1; + $permissiontoadd = 1; + $permissionnote = 1; +} + +// Security check (enable the most restrictive one) +//if ($user->socid > 0) accessforbidden(); +//if ($user->socid > 0) $socid = $user->socid; +//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); +//restrictedArea($user, $object->module, $object->id, $object->table_element, $object->element, 'fk_soc', 'rowid', $isdraft); +if (!isModEnabled("sellyoursaas")) { + accessforbidden(); +} +if (!$permissiontoread) { + accessforbidden(); +} + + +/* + * Actions + */ + +$parameters = array(); +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) { + setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); +} +if (empty($reshook)) { + include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once +} + + +/* + * View + */ + +$form = new Form($db); + +$title = $langs->trans('deploymentserver').' - '.$langs->trans("Notes"); +//$title = $object->ref." - ".$langs->trans("Notes"); +$help_url = ''; +//$help_url='EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes'; + +llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-sellyoursaas page-card_notes'); + +if ($id > 0 || !empty($ref)) { + $object->fetch_thirdparty(); + + $head = deploymentserverPrepareHead($object); + + print dol_get_fiche_head($head, 'note', $langs->trans("deploymentserver"), -1, $object->picto); + + // Object card + // ------------------------------------------------------------ + $linkback = ''.$langs->trans("BackToList").''; + + $morehtmlref = '
'; + /* + // Ref customer + $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); + $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); + // Thirdparty + $morehtmlref.='
'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); + // Project + if (isModEnabled('project')) { + $langs->load("projects"); + $morehtmlref.='
'.$langs->trans('Project') . ' '; + if ($permissiontoadd) + { + if ($action != 'classify') + //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; + $morehtmlref.=' : '; + if ($action == 'classify') { + //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); + $morehtmlref.='
'; + $morehtmlref.=''; + $morehtmlref.=''; + $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref.=''; + $morehtmlref.='
'; + } else { + $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); + } + } else { + if (!empty($object->fk_project)) { + $proj = new Project($db); + $proj->fetch($object->fk_project); + $morehtmlref .= ': '.$proj->getNomUrl(); + } else { + $morehtmlref .= ''; + } + } + }*/ + $morehtmlref .= '
'; + + + dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); + + + print '
'; + print '
'; + + + $cssclass = "titlefield"; + include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; + + print '
'; + + print dol_get_fiche_end(); +} + +// End of page +llxFooter(); +$db->close(); diff --git a/lib/sellyoursaas_deploymentserver.lib.php b/lib/sellyoursaas_deploymentserver.lib.php index 6e3e587aa..465e4f988 100644 --- a/lib/sellyoursaas_deploymentserver.lib.php +++ b/lib/sellyoursaas_deploymentserver.lib.php @@ -34,7 +34,7 @@ function deploymentserverPrepareHead($object) $langs->load("sellyoursaas@sellyoursaas"); $showtabofpagecontact = 0; - $showtabofpagenote = 0; + $showtabofpagenote = 1; $showtabofpagedocument = 0; $showtabofpageagenda = 0; diff --git a/sql/dolibarr_allversions.sql b/sql/dolibarr_allversions.sql index f50108376..fae78f134 100644 --- a/sql/dolibarr_allversions.sql +++ b/sql/dolibarr_allversions.sql @@ -117,6 +117,7 @@ CREATE TABLE llx_sellyoursaas_deploymentserver( ref varchar(128) NOT NULL, entity integer DEFAULT 1 NOT NULL, -- multi company id note_private text, + note_public text, date_creation datetime NOT NULL, date_modification timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, status integer DEFAULT 0 NOT NULL, @@ -157,5 +158,5 @@ ALTER TABLE llx_sellyoursaas_whitelistip ADD UNIQUE INDEX uk_sellyoursaas_whitel ALTER TABLE llx_dolicloud_stats RENAME TO llx_sellyoursaas_stats; ALTER TABLE llx_sellyoursaas_deploymentserver ADD COLUMN fk_user_modif integer; -ALTER TABLE llx_sellyoursaas_deploymentserver ADD COLUMN note text; +ALTER TABLE llx_sellyoursaas_deploymentserver ADD COLUMN note_public text; From 1cd2b6250c91e2fc7ed55b23541bfa93a20b5be0 Mon Sep 17 00:00:00 2001 From: Hystepik Date: Fri, 23 Feb 2024 09:49:00 +0100 Subject: [PATCH 3/5] add notepublic --- class/deploymentserver.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/class/deploymentserver.class.php b/class/deploymentserver.class.php index 8c2dbdc88..ed0cb888d 100644 --- a/class/deploymentserver.class.php +++ b/class/deploymentserver.class.php @@ -149,6 +149,7 @@ class Deploymentserver extends CommonObject public $entity; public $note_private; + public $note_public; public $date_creation; public $date_modification; public $status; @@ -159,7 +160,6 @@ class Deploymentserver extends CommonObject public $servercustomerannouncestatus; public $servercustomerannounce; public $fk_user_modif; - public $note; // END MODULEBUILDER PROPERTIES From d7f1ef9f6aafd5d7cd8619a385c7add0e86b5958 Mon Sep 17 00:00:00 2001 From: Hystepik Date: Fri, 23 Feb 2024 09:50:03 +0100 Subject: [PATCH 4/5] sql modif --- sql/llx_sellyoursaas_deploymentserver.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/llx_sellyoursaas_deploymentserver.sql b/sql/llx_sellyoursaas_deploymentserver.sql index 3ba6921c4..6412a4efc 100644 --- a/sql/llx_sellyoursaas_deploymentserver.sql +++ b/sql/llx_sellyoursaas_deploymentserver.sql @@ -29,6 +29,6 @@ CREATE TABLE llx_sellyoursaas_deploymentserver( servercountries text, servercustomerannouncestatus integer, servercustomerannounce text, - note text + note_public text -- END MODULEBUILDER FIELDS ) ENGINE=innodb; From ed080532bb3d75fab63db9fdcf7502fada1fc17d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 25 Feb 2024 09:52:49 +0100 Subject: [PATCH 5/5] Update llx_sellyoursaas_deploymentserver.sql --- sql/llx_sellyoursaas_deploymentserver.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/llx_sellyoursaas_deploymentserver.sql b/sql/llx_sellyoursaas_deploymentserver.sql index 6412a4efc..aa1b79c3d 100644 --- a/sql/llx_sellyoursaas_deploymentserver.sql +++ b/sql/llx_sellyoursaas_deploymentserver.sql @@ -20,6 +20,7 @@ CREATE TABLE llx_sellyoursaas_deploymentserver( ref varchar(128) NOT NULL, entity integer DEFAULT 1 NOT NULL, -- multi company id note_private text, + note_public text, date_creation datetime NOT NULL, date_modification timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, status integer NOT NULL, @@ -28,7 +29,6 @@ CREATE TABLE llx_sellyoursaas_deploymentserver( ipaddress varchar(128) NOT NULL, servercountries text, servercustomerannouncestatus integer, - servercustomerannounce text, - note_public text + servercustomerannounce text -- END MODULEBUILDER FIELDS ) ENGINE=innodb;