Skip to content

Commit

Permalink
[Config] add: config page & default fields hidden
Browse files Browse the repository at this point in the history
  • Loading branch information
Théo David committed Jun 13, 2022
1 parent cb34206 commit 45e1094
Show file tree
Hide file tree
Showing 5 changed files with 379 additions and 2 deletions.
296 changes: 296 additions & 0 deletions admin/registrationcertificate.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,296 @@
<?php
/* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2022 SuperAdmin <test@test.fr>
*
* 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 <https://www.gnu.org/licenses/>.
*/

/**
* \file dolicar/admin/setup.php
* \ingroup dolicar
* \brief DoliCar setup page.
*/

// 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) {
die("Include of main fails");
}

global $langs, $user;

// Libraries
require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
require_once '../lib/dolicar.lib.php';
//require_once "../class/myclass.class.php";

// Translations
$langs->loadLangs(array("admin", "dolicar@dolicar"));

// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
$hookmanager->initHooks(array('dolicarsetup', 'globalsetup'));

// Access control
if (!$user->admin) {
accessforbidden();
}

// Parameters
$action = GETPOST('action', 'aZ09');
$backtopage = GETPOST('backtopage', 'alpha');
$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php

$value = GETPOST('value', 'alpha');
$label = GETPOST('label', 'alpha');
$scandir = GETPOST('scan_dir', 'alpha');
$type = 'myobject';

$arrayofparameters = array(
'DOLICAR_MYPARAM1'=>array('type'=>'string', 'css'=>'minwidth500' ,'enabled'=>1),
'DOLICAR_MYPARAM2'=>array('type'=>'textarea','enabled'=>1),
//'DOLICAR_MYPARAM3'=>array('type'=>'category:'.Categorie::TYPE_CUSTOMER, 'enabled'=>1),
//'DOLICAR_MYPARAM4'=>array('type'=>'emailtemplate:thirdparty', 'enabled'=>1),
//'DOLICAR_MYPARAM5'=>array('type'=>'yesno', 'enabled'=>1),
//'DOLICAR_MYPARAM5'=>array('type'=>'thirdparty_type', 'enabled'=>1),
//'DOLICAR_MYPARAM6'=>array('type'=>'securekey', 'enabled'=>1),
//'DOLICAR_MYPARAM7'=>array('type'=>'product', 'enabled'=>1),
);

$error = 0;
$setupnotempty = 0;

// Set this to 1 to use the factory to manage constants. Warning, the generated module will be compatible with version v15+ only
$useFormSetup = 0;
// Convert arrayofparameter into a formSetup object
if ($useFormSetup && (float) DOL_VERSION >= 15) {
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsetup.class.php';
$formSetup = new FormSetup($db);

// you can use the param convertor
$formSetup->addItemsFromParamsArray($arrayofparameters);

// or use the new system see exemple as follow (or use both because you can ;-) )

/*
// Hôte
$item = $formSetup->newItem('NO_PARAM_JUST_TEXT');
$item->fieldOverride = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'];
$item->cssClass = 'minwidth500';
// Setup conf DOLICAR_MYPARAM1 as a simple string input
$item = $formSetup->newItem('DOLICAR_MYPARAM1');
// Setup conf DOLICAR_MYPARAM1 as a simple textarea input but we replace the text of field title
$item = $formSetup->newItem('DOLICAR_MYPARAM2');
$item->nameText = $item->getNameText().' more html text ';
// Setup conf DOLICAR_MYPARAM3
$item = $formSetup->newItem('DOLICAR_MYPARAM3');
$item->setAsThirdpartyType();
// Setup conf DOLICAR_MYPARAM4 : exemple of quick define write style
$formSetup->newItem('DOLICAR_MYPARAM4')->setAsYesNo();
// Setup conf DOLICAR_MYPARAM5
$formSetup->newItem('DOLICAR_MYPARAM5')->setAsEmailTemplate('thirdparty');
// Setup conf DOLICAR_MYPARAM6
$formSetup->newItem('DOLICAR_MYPARAM6')->setAsSecureKey()->enabled = 0; // disabled
// Setup conf DOLICAR_MYPARAM7
$formSetup->newItem('DOLICAR_MYPARAM7')->setAsProduct();
*/

$setupnotempty = count($formSetup->items);
}


$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);


/*
* Actions
*/

include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';

if ($action == 'updateMask') {
$maskconst = GETPOST('maskconst', 'alpha');
$maskvalue = GETPOST('maskvalue', 'alpha');

if ($maskconst) {
$res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
if (!($res > 0)) {
$error++;
}
}

if (!$error) {
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
} else {
setEventMessages($langs->trans("Error"), null, 'errors');
}
} elseif ($action == 'specimen') {
$modele = GETPOST('module', 'alpha');
$tmpobjectkey = GETPOST('object');

$tmpobject = new $tmpobjectkey($db);
$tmpobject->initAsSpecimen();

// Search template files
$file = ''; $classname = ''; $filefound = 0;
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
foreach ($dirmodels as $reldir) {
$file = dol_buildpath($reldir."core/modules/dolicar/doc/pdf_".$modele."_".strtolower($tmpobjectkey).".modules.php", 0);
if (file_exists($file)) {
$filefound = 1;
$classname = "pdf_".$modele;
break;
}
}

if ($filefound) {
require_once $file;

$module = new $classname($db);

if ($module->write_file($tmpobject, $langs) > 0) {
header("Location: ".DOL_URL_ROOT."/document.php?modulepart=".strtolower($tmpobjectkey)."&file=SPECIMEN.pdf");
return;
} else {
setEventMessages($module->error, null, 'errors');
dol_syslog($module->error, LOG_ERR);
}
} else {
setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors');
dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
}
} elseif ($action == 'setmod') {
// TODO Check if numbering module chosen can be activated by calling method canBeActivated
$tmpobjectkey = GETPOST('object');
if (!empty($tmpobjectkey)) {
$constforval = 'DOLICAR_'.strtoupper($tmpobjectkey)."_ADDON";
dolibarr_set_const($db, $constforval, $value, 'chaine', 0, '', $conf->entity);
}
} elseif ($action == 'set') {
// Activate a model
$ret = addDocumentModel($value, $type, $label, $scandir);
} elseif ($action == 'del') {
$ret = delDocumentModel($value, $type);
if ($ret > 0) {
$tmpobjectkey = GETPOST('object');
if (!empty($tmpobjectkey)) {
$constforval = 'DOLICAR_'.strtoupper($tmpobjectkey).'_ADDON_PDF';
if ($conf->global->$constforval == "$value") {
dolibarr_del_const($db, $constforval, $conf->entity);
}
}
}
} elseif ($action == 'setdoc') {
// Set or unset default model
$tmpobjectkey = GETPOST('object');
if (!empty($tmpobjectkey)) {
$constforval = 'DOLICAR_'.strtoupper($tmpobjectkey).'_ADDON_PDF';
if (dolibarr_set_const($db, $constforval, $value, 'chaine', 0, '', $conf->entity)) {
// The constant that was read before the new set
// We therefore requires a variable to have a coherent view
$conf->global->$constforval = $value;
}

// We disable/enable the document template (into llx_document_model table)
$ret = delDocumentModel($value, $type);
if ($ret > 0) {
$ret = addDocumentModel($value, $type, $label, $scandir);
}
}
} elseif ($action == 'unsetdoc') {
$tmpobjectkey = GETPOST('object');
if (!empty($tmpobjectkey)) {
$constforval = 'DOLICAR_'.strtoupper($tmpobjectkey).'_ADDON_PDF';
dolibarr_del_const($db, $constforval, $conf->entity);
}
}



/*
* View
*/

$form = new Form($db);

$help_url = '';
$page_name = "DoliCarSetup";

llxHeader('', $langs->trans($page_name), $help_url);

// Subheader
$linkback = '<a href="'.($backtopage ? $backtopage : DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1').'">'.$langs->trans("BackToModuleList").'</a>';

print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup');

// Configuration header
$head = dolicarAdminPrepareHead();
print dol_get_fiche_head($head, 'registrationcertificate', $langs->trans($page_name), -1, "dolicar@dolicar");
print load_fiche_titre($langs->trans("Fields"), '', '');

print '<div class="div-table-responsive-no-min">';
print '<table class="noborder centpercent">';
print '<tr class="liste_titre">';
print '<td>' . $langs->trans("Parameters") . '</td>';
print '<td class="center">' . $langs->trans("ShortInfo") . '</td>';
print '<td class="center">' . $langs->trans("Status") . '</td>';
print '</tr>';

// Show logo for company
print '<tr class="oddeven"><td>' . $langs->trans("RegistrationCertificateShowFields") . '</td>';
print '<td class="center">';
print $langs->trans("RegistrationCertificateShowFieldsDescription");
print '</td>';
print '<td class="center">';
print ajax_constantonoff('DOLICAR_HIDE_REGISTRATIONCERTIFICATE');
print '</td>';
print '</tr>';
print '</form>';

print '</table>';
print '</div>';

// Page end
print dol_get_fiche_end();

llxFooter();
$db->close();
23 changes: 23 additions & 0 deletions core/modules/modDoliCar.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ public function __construct($db)
5 => array('DOLICAR_DEFAULT_VEHICLE', 'integer', 0, '', 0, 'current'),
6 => array('DOLICAR_VEHICLE_TAG', 'integer', 0, '', 0, 'current'),
7 => array('DOLICAR_MENU_DEFAULT_VEHICLE_UPDATED', 'integer', 0, '', 0, 'current'),
8 => array('DOLICAR_HIDE_REGISTRATIONCERTIFICATE', 'integer', 1, '', 0, 'current'),
);

if (!isset($conf->dolicar) || !isset($conf->dolicar->enabled)) {
Expand Down Expand Up @@ -199,6 +200,14 @@ public function __construct($db)
$this->rights[$r][5] = 'delete'; // In php code, permission will be checked by test if ($user->rights->dolicar->registrationcertificatefr->delete)
$r++;

$this->rights[$r][0] = $this->numero . sprintf("%02d", $r + 1); // Permission id (must not be already used)
$this->rights[$r][1] = 'Read admin page of DoliCar'; // Permission label
$this->rights[$r][4] = 'adminpage';
$this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->dolicar->registrationcertificatefr->delete)
$r++;

$langs->load("dolicar@dolicar");

// Main menu entries to add
$this->menu = array();
$r = 0;
Expand Down Expand Up @@ -260,6 +269,20 @@ public function __construct($db)
// 0=Menu for internal users, 1=external users, 2=both
'user'=>2
);
$this->menu[$r++] = array(
'fk_menu' => 'fk_mainmenu=dolicar', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
'type' => 'left', // This is a Left menu entry
'titre' => '<i class="fas fa-cog"></i> ' . $langs->trans('DolicarConfig'),
'mainmenu' => 'dolicar',
'leftmenu' => 'dolicarconfig',
'url' => '/dolicar/admin/setup.php',
'langs' => 'dolicar@dolicar', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
'position' => 48520 + $r,
'enabled' => '$conf->dolicar->enabled', // Define condition to show or hide menu entry. Use '$conf->dolicar->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
'perms' => '$user->rights->dolicar->adminpage->read', // Use 'perms'=>'$user->rights->dolicar->level1->level2' if you want your menu with a permission rules
'target' => '',
'user' => 0, // 0=Menu for internal users, 1=external users, 2=both
);

/* END MODULEBUILDER LEFTMENU REGISTRATIONCERTIFICATEFR */
}
Expand Down
6 changes: 5 additions & 1 deletion langs/fr_FR/dolicar.lang
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ DOLICAR_MYPARAM1 = My param 1
DOLICAR_MYPARAM1Tooltip = My param 1 tooltip
DOLICAR_MYPARAM2=My param 2
DOLICAR_MYPARAM2Tooltip=My param 2 tooltip

DolicarConfig = Configuration du module

#
# About page
Expand Down Expand Up @@ -71,6 +71,7 @@ DigiriskListingRisksPhotoStandardModel = Renvoie le numéro sous la forme RLPn o

# Data - Donnée
RegistrationCertificateFr = Carte grise
RegistrationCertificate = Carte grise
NewRegistrationCertificateFr = Nouvelle carte grise
ModifyRegistrationCertificateFr = Modifier la carte grise
ListRegistrationCertificateFr = Liste des cartes grises
Expand Down Expand Up @@ -125,12 +126,15 @@ ObjectsLinked = Objets liés
ObjectType = Type d'objet
Object = Objet
DefaultBrand = Marque par défaut
RegistrationCertificateShowFields = Cacher les champs de la carte grise
RegistrationCertificateShowFieldsDescription = Cette option permet de cacher/afficher une partie des champs de la carte grise

#
# Other
#

# Data - Donnée
Settings = Réglages
Vehicle = Véhicule
Mileage = Kilométrage
ProductLotMileageModifyTrigger = Modification du kilométrage
Expand Down
5 changes: 5 additions & 0 deletions lib/dolicar.lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ function dolicarAdminPrepareHead()
$head[$h][2] = 'about';
$h++;

$head[$h][0] = dol_buildpath("/dolicar/admin/registrationcertificate.php", 1);
$head[$h][1] = $langs->trans("RegistrationCertificate");
$head[$h][2] = 'registrationcertificate';
$h++;

// Show more tabs from modules
// Entries must be declared in modules descriptor with line
//$this->tabs = array(
Expand Down

0 comments on commit 45e1094

Please sign in to comment.