mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-11 03:51:25 +01:00
Merge pull request #16288 from FHenry/dev_EventOrganisation_setuppage
wip : Event Organization module - PR-1 - setup page #FoundationFunding
This commit is contained in:
600
htdocs/admin/eventorganization.php
Normal file
600
htdocs/admin/eventorganization.php
Normal file
@@ -0,0 +1,600 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2021 Florian Henry <florian.henry@scopen.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 htdocs/admin/setup.php
|
||||||
|
* \ingroup eventorganization
|
||||||
|
* \brief EventOrganization setup page.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Load Dolibarr environment
|
||||||
|
require '../main.inc.php';
|
||||||
|
|
||||||
|
global $langs, $user;
|
||||||
|
|
||||||
|
// Libraries
|
||||||
|
require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/eventorganization.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
|
|
||||||
|
// Translations
|
||||||
|
$langs->loadLangs(array("admin", "eventorganization"));
|
||||||
|
|
||||||
|
// Access control
|
||||||
|
if (!$user->admin) {
|
||||||
|
accessforbidden();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parameters
|
||||||
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
$backtopage = GETPOST('backtopage', 'alpha');
|
||||||
|
|
||||||
|
$value = GETPOST('value', 'alpha');
|
||||||
|
$label = GETPOST('label', 'alpha');
|
||||||
|
$scandir = GETPOST('scan_dir', 'alpha');
|
||||||
|
$type = 'myobject';
|
||||||
|
|
||||||
|
$arrayofparameters = array(
|
||||||
|
'EVENTORGANIZATION_TASK_LABEL'=>array('type'=>'textarea','enabled'=>1),
|
||||||
|
'EVENTORGANIZATION_CATEG_THIRDPARTY_CONF'=>array('type'=>'category:'.Categorie::TYPE_CUSTOMER, 'enabled'=>1),
|
||||||
|
'EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH'=>array('type'=>'category:'.Categorie::TYPE_CUSTOMER, 'enabled'=>1),
|
||||||
|
'EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF'=>array('type'=>'emailtemplate:eventorganization_send', 'enabled'=>1),
|
||||||
|
'EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH'=>array('type'=>'emailtemplate:eventorganization_send', 'enabled'=>1),
|
||||||
|
'EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH'=>array('type'=>'emailtemplate:eventorganization_send', 'enabled'=>1),
|
||||||
|
'EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT'=>array('type'=>'emailtemplate:eventorganization_send', 'enabled'=>1),
|
||||||
|
'EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER'=>array('type'=>'emailtemplate:eventorganization_send', 'enabled'=>1),
|
||||||
|
'EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES'=>array('type'=>'emailtemplate:eventorganization_send', 'enabled'=>1),
|
||||||
|
);
|
||||||
|
|
||||||
|
$error = 0;
|
||||||
|
$setupnotempty = 0;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actions
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ((float) DOL_VERSION >= 6) {
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($action == 'updateMask') {
|
||||||
|
$maskconstorder = GETPOST('maskconstorder', 'alpha');
|
||||||
|
$maskorder = GETPOST('maskorder', 'alpha');
|
||||||
|
|
||||||
|
if ($maskconstorder) {
|
||||||
|
$res = dolibarr_set_const($db, $maskconstorder, $maskorder, '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/eventorganization/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 = 'EVENTORGANIZATION_'.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 = 'EVENTORGANIZATION_'.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 = 'EVENTORGANIZATION_'.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 = 'EVENTORGANIZATION_'.strtoupper($tmpobjectkey).'_ADDON_PDF';
|
||||||
|
dolibarr_del_const($db, $constforval, $conf->entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
|
||||||
|
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
|
||||||
|
|
||||||
|
$page_name = "EventOrganizationSetup";
|
||||||
|
llxHeader('', $langs->trans($page_name));
|
||||||
|
|
||||||
|
// 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, 'eventorganization');
|
||||||
|
|
||||||
|
// Configuration header
|
||||||
|
$head = eventorganizationAdminPrepareHead();
|
||||||
|
print dol_get_fiche_head($head, 'settings', $langs->trans($page_name), -1, 'eventorganization');
|
||||||
|
|
||||||
|
// Setup page goes here
|
||||||
|
echo '<span class="opacitymedium">'.$langs->trans("EventOrganizationSetupPage").'</span><br><br>';
|
||||||
|
|
||||||
|
|
||||||
|
if ($action == 'edit') {
|
||||||
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
|
print '<input type="hidden" name="action" value="update">';
|
||||||
|
|
||||||
|
print '<table class="noborder centpercent">';
|
||||||
|
print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>';
|
||||||
|
|
||||||
|
foreach ($arrayofparameters as $constname => $val) {
|
||||||
|
if ($val['enabled']==1) {
|
||||||
|
$setupnotempty++;
|
||||||
|
print '<tr class="oddeven"><td>';
|
||||||
|
$tooltiphelp = (($langs->trans($constname . 'Tooltip') != $constname . 'Tooltip') ? $langs->trans($constname . 'Tooltip') : '');
|
||||||
|
print '<span id="helplink'.$constname.'" class="spanforparamtooltip">'.$form->textwithpicto($langs->trans($constname), $tooltiphelp, 1, 'info', '', 0, 3, 'tootips'.$constname).'</span>';
|
||||||
|
print '</td><td>';
|
||||||
|
|
||||||
|
if ($val['type'] == 'textarea') {
|
||||||
|
print '<textarea class="flat" name="'.$constname.'" id="'.$constname.'" cols="50" rows="5" wrap="soft">' . "\n";
|
||||||
|
print $conf->global->{$constname};
|
||||||
|
print "</textarea>\n";
|
||||||
|
} elseif ($val['type']== 'html') {
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
||||||
|
$doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%');
|
||||||
|
$doleditor->Create();
|
||||||
|
} elseif ($val['type'] == 'yesno') {
|
||||||
|
print $form->selectyesno($constname, $conf->global->{$constname}, 1);
|
||||||
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
|
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||||
|
$formmail = new FormMail($db);
|
||||||
|
|
||||||
|
$tmp = explode(':', $val['type']);
|
||||||
|
$nboftemplates = $formmail->fetchAllEMailTemplate($tmp[1], $user, null, 1); // We set lang=null to get in priority record with no lang
|
||||||
|
//$arraydefaultmessage = $formmail->getEMailTemplate($db, $tmp[1], $user, null, 0, 1, '');
|
||||||
|
$arrayofmessagename = array();
|
||||||
|
if (is_array($formmail->lines_model)) {
|
||||||
|
foreach ($formmail->lines_model as $modelmail) {
|
||||||
|
//var_dump($modelmail);
|
||||||
|
$moreonlabel = '';
|
||||||
|
if (!empty($arrayofmessagename[$modelmail->label])) {
|
||||||
|
$moreonlabel = ' <span class="opacitymedium">(' . $langs->trans("SeveralLangugeVariatFound") . ')</span>';
|
||||||
|
}
|
||||||
|
// The 'label' is the key that is unique if we exclude the language
|
||||||
|
$arrayofmessagename[$modelmail->id] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->label)) . $moreonlabel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print $form->selectarray($constname, $arrayofmessagename, $conf->global->{$constname}, 'None', 0, 0, '', 0, 0, 0, '', '', 1);
|
||||||
|
} elseif (preg_match('/category:/', $val['type'])) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
|
$formother = new FormOther($db);
|
||||||
|
|
||||||
|
$tmp = explode(':', $val['type']);
|
||||||
|
print img_picto('', 'category', 'class="pictofixedwidth"');
|
||||||
|
print $formother->select_categories($tmp[1], $conf->global->{$constname}, $constname, 0, $langs->trans('CustomersProspectsCategoriesShort'));
|
||||||
|
} else {
|
||||||
|
print '<input name="'.$constname.'" class="flat '.(empty($val['css']) ? 'minwidth200' : $val['css']).'" value="'.$conf->global->{$constname}.'">';
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
print '<br><div class="center">';
|
||||||
|
print '<input class="button button-save" type="submit" value="'.$langs->trans("Save").'">';
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
print '<br>';
|
||||||
|
} else {
|
||||||
|
if (!empty($arrayofparameters)) {
|
||||||
|
print '<table class="noborder centpercent">';
|
||||||
|
print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>';
|
||||||
|
|
||||||
|
foreach ($arrayofparameters as $constname => $val) {
|
||||||
|
if ($val['enabled']==1) {
|
||||||
|
$setupnotempty++;
|
||||||
|
print '<tr class="oddeven"><td>';
|
||||||
|
$tooltiphelp = (($langs->trans($constname . 'Tooltip') != $constname . 'Tooltip') ? $langs->trans($constname . 'Tooltip') : '');
|
||||||
|
print $form->textwithpicto($langs->trans($constname), $tooltiphelp);
|
||||||
|
print '</td><td>';
|
||||||
|
|
||||||
|
if ($val['type'] == 'textarea') {
|
||||||
|
print dol_nl2br($conf->global->{$constname});
|
||||||
|
} elseif ($val['type']== 'html') {
|
||||||
|
print $conf->global->{$constname};
|
||||||
|
} elseif ($val['type'] == 'yesno') {
|
||||||
|
print ajax_constantonoff($constname);
|
||||||
|
} elseif (preg_match('/emailtemplate:/', $val['type'])) {
|
||||||
|
if (!empty($conf->global->{$constname})) {
|
||||||
|
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||||
|
$formmail = new FormMail($db);
|
||||||
|
|
||||||
|
$tmp = explode(':', $val['type']);
|
||||||
|
|
||||||
|
$template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, $conf->global->{$constname});
|
||||||
|
if ($template < 0) {
|
||||||
|
setEventMessages(null, $formmail->errors, 'errors');
|
||||||
|
}
|
||||||
|
print $langs->trans($template->label);
|
||||||
|
}
|
||||||
|
} elseif (preg_match('/category:/', $val['type'])) {
|
||||||
|
if (!empty($conf->global->{$constname})) {
|
||||||
|
$c = new Categorie($db);
|
||||||
|
$result = $c->fetch($conf->global->{$constname});
|
||||||
|
if ($result < 0) {
|
||||||
|
setEventMessages(null, $c->errors, 'errors');
|
||||||
|
}
|
||||||
|
$ways = $c->print_all_ways(' >> ', 'none', 0, 1); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formated text
|
||||||
|
$toprint = array();
|
||||||
|
foreach ($ways as $way) {
|
||||||
|
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories"' . ($c->color ? ' style="background: #' . $c->color . ';"' : ' style="background: #bbb"') . '>' . $way . '</li>';
|
||||||
|
}
|
||||||
|
print '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode(' ', $toprint) . '</ul></div>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print $conf->global->{$constname};
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
print '<div class="tabsAction">';
|
||||||
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a>';
|
||||||
|
print '</div>';
|
||||||
|
} else {
|
||||||
|
print '<br>'.$langs->trans("NothingToSetup");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$moduledir = 'eventorganization';
|
||||||
|
$myTmpObjects = array();
|
||||||
|
$myTmpObjects['MyObject'] = array('includerefgeneration'=>0, 'includedocgeneration'=>0);
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
||||||
|
if ($myTmpObjectKey == 'MyObject') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($myTmpObjectArray['includerefgeneration']) {
|
||||||
|
/*
|
||||||
|
* Orders Numbering model
|
||||||
|
*/
|
||||||
|
$setupnotempty++;
|
||||||
|
|
||||||
|
print load_fiche_titre($langs->trans("NumberingModules", $myTmpObjectKey), '', '');
|
||||||
|
|
||||||
|
print '<table class="noborder centpercent">';
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td>'.$langs->trans("Name").'</td>';
|
||||||
|
print '<td>'.$langs->trans("Description").'</td>';
|
||||||
|
print '<td class="nowrap">'.$langs->trans("Example").'</td>';
|
||||||
|
print '<td class="center" width="60">'.$langs->trans("Status").'</td>';
|
||||||
|
print '<td class="center" width="16">'.$langs->trans("ShortInfo").'</td>';
|
||||||
|
print '</tr>'."\n";
|
||||||
|
|
||||||
|
clearstatcache();
|
||||||
|
|
||||||
|
foreach ($dirmodels as $reldir) {
|
||||||
|
$dir = dol_buildpath($reldir."core/modules/".$moduledir);
|
||||||
|
|
||||||
|
if (is_dir($dir)) {
|
||||||
|
$handle = opendir($dir);
|
||||||
|
if (is_resource($handle)) {
|
||||||
|
while (($file = readdir($handle)) !== false) {
|
||||||
|
if (strpos($file, 'mod_'.strtolower($myTmpObjectKey).'_') === 0 && substr($file, dol_strlen($file) - 3, 3) == 'php') {
|
||||||
|
$file = substr($file, 0, dol_strlen($file) - 4);
|
||||||
|
|
||||||
|
require_once $dir.'/'.$file.'.php';
|
||||||
|
|
||||||
|
$module = new $file($db);
|
||||||
|
|
||||||
|
// Show modules according to features level
|
||||||
|
if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($module->isEnabled()) {
|
||||||
|
dol_include_once('/'.$moduledir.'/class/'.strtolower($myTmpObjectKey).'.class.php');
|
||||||
|
|
||||||
|
print '<tr class="oddeven"><td>'.$module->name."</td><td>\n";
|
||||||
|
print $module->info();
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Show example of numbering model
|
||||||
|
print '<td class="nowrap">';
|
||||||
|
$tmp = $module->getExample();
|
||||||
|
if (preg_match('/^Error/', $tmp)) {
|
||||||
|
$langs->load("errors");
|
||||||
|
print '<div class="error">'.$langs->trans($tmp).'</div>';
|
||||||
|
} elseif ($tmp == 'NotConfigured') {
|
||||||
|
print $langs->trans($tmp);
|
||||||
|
} else {
|
||||||
|
print $tmp;
|
||||||
|
}
|
||||||
|
print '</td>'."\n";
|
||||||
|
|
||||||
|
print '<td class="center">';
|
||||||
|
$constforvar = 'EVENTORGANIZATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
|
if ($conf->global->$constforvar == $file) {
|
||||||
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
|
} else {
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
|
||||||
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
$mytmpinstance = new $myTmpObjectKey($db);
|
||||||
|
$mytmpinstance->initAsSpecimen();
|
||||||
|
|
||||||
|
// Info
|
||||||
|
$htmltooltip = '';
|
||||||
|
$htmltooltip .= ''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
|
||||||
|
|
||||||
|
$nextval = $module->getNextValue($mytmpinstance);
|
||||||
|
if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval
|
||||||
|
$htmltooltip .= ''.$langs->trans("NextValue").': ';
|
||||||
|
if ($nextval) {
|
||||||
|
if (preg_match('/^Error/', $nextval) || $nextval == 'NotConfigured') {
|
||||||
|
$nextval = $langs->trans($nextval);
|
||||||
|
}
|
||||||
|
$htmltooltip .= $nextval.'<br>';
|
||||||
|
} else {
|
||||||
|
$htmltooltip .= $langs->trans($module->error).'<br>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<td class="center">';
|
||||||
|
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "</table><br>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($myTmpObjectArray['includedocgeneration']) {
|
||||||
|
/*
|
||||||
|
* Document templates generators
|
||||||
|
*/
|
||||||
|
$setupnotempty++;
|
||||||
|
$type = strtolower($myTmpObjectKey);
|
||||||
|
|
||||||
|
print load_fiche_titre($langs->trans("DocumentModules", $myTmpObjectKey), '', '');
|
||||||
|
|
||||||
|
// Load array def with activated templates
|
||||||
|
$def = array();
|
||||||
|
$sql = "SELECT nom";
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX."document_model";
|
||||||
|
$sql .= " WHERE type = '".$db->escape($type)."'";
|
||||||
|
$sql .= " AND entity = ".$conf->entity;
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
$i = 0;
|
||||||
|
$num_rows = $db->num_rows($resql);
|
||||||
|
while ($i < $num_rows) {
|
||||||
|
$array = $db->fetch_array($resql);
|
||||||
|
array_push($def, $array[0]);
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
print "<table class=\"noborder\" width=\"100%\">\n";
|
||||||
|
print "<tr class=\"liste_titre\">\n";
|
||||||
|
print '<td>'.$langs->trans("Name").'</td>';
|
||||||
|
print '<td>'.$langs->trans("Description").'</td>';
|
||||||
|
print '<td class="center" width="60">'.$langs->trans("Status")."</td>\n";
|
||||||
|
print '<td class="center" width="60">'.$langs->trans("Default")."</td>\n";
|
||||||
|
print '<td class="center" width="38">'.$langs->trans("ShortInfo").'</td>';
|
||||||
|
print '<td class="center" width="38">'.$langs->trans("Preview").'</td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
|
||||||
|
clearstatcache();
|
||||||
|
|
||||||
|
foreach ($dirmodels as $reldir) {
|
||||||
|
foreach (array('', '/doc') as $valdir) {
|
||||||
|
$realpath = $reldir."core/modules/".$moduledir.$valdir;
|
||||||
|
$dir = dol_buildpath($realpath);
|
||||||
|
|
||||||
|
if (is_dir($dir)) {
|
||||||
|
$handle = opendir($dir);
|
||||||
|
if (is_resource($handle)) {
|
||||||
|
while (($file = readdir($handle)) !== false) {
|
||||||
|
$filelist[] = $file;
|
||||||
|
}
|
||||||
|
closedir($handle);
|
||||||
|
arsort($filelist);
|
||||||
|
|
||||||
|
foreach ($filelist as $file) {
|
||||||
|
if (preg_match('/\.modules\.php$/i', $file) && preg_match('/^(pdf_|doc_)/', $file)) {
|
||||||
|
if (file_exists($dir.'/'.$file)) {
|
||||||
|
$name = substr($file, 4, dol_strlen($file) - 16);
|
||||||
|
$classname = substr($file, 0, dol_strlen($file) - 12);
|
||||||
|
|
||||||
|
require_once $dir.'/'.$file;
|
||||||
|
$module = new $classname($db);
|
||||||
|
|
||||||
|
$modulequalified = 1;
|
||||||
|
if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
|
||||||
|
$modulequalified = 0;
|
||||||
|
}
|
||||||
|
if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
|
||||||
|
$modulequalified = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($modulequalified) {
|
||||||
|
print '<tr class="oddeven"><td width="100">';
|
||||||
|
print (empty($module->name) ? $name : $module->name);
|
||||||
|
print "</td><td>\n";
|
||||||
|
if (method_exists($module, 'info')) {
|
||||||
|
print $module->info($langs);
|
||||||
|
} else {
|
||||||
|
print $module->description;
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Active
|
||||||
|
if (in_array($name, $def)) {
|
||||||
|
print '<td class="center">'."\n";
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&token='.newToken().'&value='.$name.'">';
|
||||||
|
print img_picto($langs->trans("Enabled"), 'switch_on');
|
||||||
|
print '</a>';
|
||||||
|
print '</td>';
|
||||||
|
} else {
|
||||||
|
print '<td class="center">'."\n";
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=set&token='.newToken().'&value='.$name.'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
|
||||||
|
print "</td>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default
|
||||||
|
print '<td class="center">';
|
||||||
|
$constforvar = 'EVENTORGANIZATION_'.strtoupper($myTmpObjectKey).'_ADDON';
|
||||||
|
if ($conf->global->$constforvar == $name) {
|
||||||
|
//print img_picto($langs->trans("Default"), 'on');
|
||||||
|
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
|
||||||
|
} else {
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.$name.'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Info
|
||||||
|
$htmltooltip = ''.$langs->trans("Name").': '.$module->name;
|
||||||
|
$htmltooltip .= '<br>'.$langs->trans("Type").': '.($module->type ? $module->type : $langs->trans("Unknown"));
|
||||||
|
if ($module->type == 'pdf') {
|
||||||
|
$htmltooltip .= '<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
|
||||||
|
}
|
||||||
|
$htmltooltip .= '<br>'.$langs->trans("Path").': '.preg_replace('/^\//', '', $realpath).'/'.$file;
|
||||||
|
|
||||||
|
$htmltooltip .= '<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
|
||||||
|
$htmltooltip .= '<br>'.$langs->trans("Logo").': '.yn($module->option_logo, 1, 1);
|
||||||
|
$htmltooltip .= '<br>'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang, 1, 1);
|
||||||
|
|
||||||
|
print '<td class="center">';
|
||||||
|
print $form->textwithpicto('', $htmltooltip, 1, 0);
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
// Preview
|
||||||
|
print '<td class="center">';
|
||||||
|
if ($module->type == 'pdf') {
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.$name.'&object='.$myTmpObjectKey.'">'.img_object($langs->trans("Preview"), 'pdf').'</a>';
|
||||||
|
} else {
|
||||||
|
print img_object($langs->trans("PreviewNotAvailable"), 'generic');
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($setupnotempty)) {
|
||||||
|
print '<br>'.$langs->trans("NothingToSetup");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Page end
|
||||||
|
print dol_get_fiche_end();
|
||||||
|
|
||||||
|
llxFooter();
|
||||||
|
$db->close();
|
||||||
108
htdocs/admin/eventorganization_confbooth_extrafields.php
Normal file
108
htdocs/admin/eventorganization_confbooth_extrafields.php
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2021 Florian Henry <florian.henry@scopen.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 htdocs/admin/eventorganization_extrafields.php
|
||||||
|
* \ingroup bom
|
||||||
|
* \brief Page to setup extra fields of EventOrganization
|
||||||
|
*/
|
||||||
|
|
||||||
|
require '../main.inc.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/eventorganization.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
|
|
||||||
|
// Load translation files required by the page
|
||||||
|
$langs->loadLangs(array('eventorganization', 'admin'));
|
||||||
|
|
||||||
|
$extrafields = new ExtraFields($db);
|
||||||
|
$form = new Form($db);
|
||||||
|
|
||||||
|
// List of supported format
|
||||||
|
$tmptype2label = ExtraFields::$type2label;
|
||||||
|
$type2label = array('');
|
||||||
|
foreach ($tmptype2label as $key => $val) $type2label[$key] = $langs->transnoentitiesnoconv($val);
|
||||||
|
|
||||||
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
$attrname = GETPOST('attrname', 'alpha');
|
||||||
|
$elementtype = 'actioncomm';
|
||||||
|
|
||||||
|
if (!$user->admin) accessforbidden();
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Actions
|
||||||
|
*/
|
||||||
|
|
||||||
|
require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
llxHeader('', $langs->trans("EventOrganizationSetup"), $help_url);
|
||||||
|
|
||||||
|
|
||||||
|
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
||||||
|
print load_fiche_titre($langs->trans("EventOrganizationSetup"), $linkback, 'eventorganization');
|
||||||
|
|
||||||
|
|
||||||
|
$head = eventorganizationAdminPrepareHead();
|
||||||
|
|
||||||
|
print dol_get_fiche_head($head, 'eventorganization_extrafields', $langs->trans("ExtraFields"), -1, 'eventorganization');
|
||||||
|
|
||||||
|
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php';
|
||||||
|
|
||||||
|
print dol_get_fiche_end();
|
||||||
|
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
if ($action != 'create' && $action != 'edit')
|
||||||
|
{
|
||||||
|
print '<div class="tabsAction">';
|
||||||
|
print "<a class=\"butAction\" href=\"".$_SERVER["PHP_SELF"]."?action=create#newattrib\">".$langs->trans("NewAttribute")."</a>";
|
||||||
|
print "</div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creation of an optional field
|
||||||
|
*/
|
||||||
|
if ($action == 'create')
|
||||||
|
{
|
||||||
|
print '<br><div id="newattrib"></div>';
|
||||||
|
print load_fiche_titre($langs->trans('NewAttribute'));
|
||||||
|
|
||||||
|
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Edition of an optional field
|
||||||
|
*/
|
||||||
|
if ($action == 'edit' && !empty($attrname))
|
||||||
|
{
|
||||||
|
print "<br>";
|
||||||
|
print load_fiche_titre($langs->trans("FieldEdition", $attrname));
|
||||||
|
|
||||||
|
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
// End of page
|
||||||
|
llxFooter();
|
||||||
|
$db->close();
|
||||||
@@ -43,7 +43,16 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("errors", "admin", "mails", "languages"));
|
$langsArray=array("errors", "admin", "mails", "languages");
|
||||||
|
|
||||||
|
if ($conf->adherent->enabled) {
|
||||||
|
$langsArray[]='members';
|
||||||
|
}
|
||||||
|
if ($conf->eventorganization->enabled) {
|
||||||
|
$langsArray[]='eventorganization';
|
||||||
|
}
|
||||||
|
|
||||||
|
$langs->loadLangs($langsArray);
|
||||||
|
|
||||||
$action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view';
|
$action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view';
|
||||||
$confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation
|
$confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation
|
||||||
@@ -210,6 +219,9 @@ if ($conf->ticket->enabled && $user->rights->ticket->read) {
|
|||||||
if ($conf->agenda->enabled) {
|
if ($conf->agenda->enabled) {
|
||||||
$elementList['actioncomm_send'] = img_picto('', 'action', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendEventPush'));
|
$elementList['actioncomm_send'] = img_picto('', 'action', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendEventPush'));
|
||||||
}
|
}
|
||||||
|
if ($conf->eventorganization->enabled && $user->rights->eventorganization->read) {
|
||||||
|
$elementList['eventorganization_send'] = img_picto('', 'action', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendEventOrganization'));
|
||||||
|
}
|
||||||
|
|
||||||
$parameters = array('elementList'=>$elementList);
|
$parameters = array('elementList'=>$elementList);
|
||||||
$reshook = $hookmanager->executeHooks('emailElementlist', $parameters); // Note that $action and $object may have been modified by some hooks
|
$reshook = $hookmanager->executeHooks('emailElementlist', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||||
@@ -878,10 +890,14 @@ if ($resql)
|
|||||||
$class = "tddict";
|
$class = "tddict";
|
||||||
$valuetoshow = $obj->{$fieldlist[$field]};
|
$valuetoshow = $obj->{$fieldlist[$field]};
|
||||||
if ($value == 'label' || $value == 'topic') {
|
if ($value == 'label' || $value == 'topic') {
|
||||||
|
if ($langs->trans($valuetoshow) != $valuetoshow) {
|
||||||
|
$valuetoshow = $langs->trans($valuetoshow);
|
||||||
|
}
|
||||||
$valuetoshow = dol_escape_htmltag($valuetoshow);
|
$valuetoshow = dol_escape_htmltag($valuetoshow);
|
||||||
}
|
}
|
||||||
if ($value == 'label') {
|
if ($value == 'label') {
|
||||||
$class .= ' tdoverflowmax100';
|
$class .= ' tdoverflowmax100';
|
||||||
|
$valuetoshow = '<span title="'.$valuetoshow.'">'.$valuetoshow.'</span>';
|
||||||
}
|
}
|
||||||
/*if ($value == 'topic') {
|
/*if ($value == 'topic') {
|
||||||
$class .= ' tdoverflowmax300';
|
$class .= ' tdoverflowmax300';
|
||||||
|
|||||||
@@ -365,6 +365,8 @@ class Categorie extends CommonObject
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_print_error($this->db);
|
dol_print_error($this->db);
|
||||||
|
$this->error=$this->db->lasterror;
|
||||||
|
$this->errors[]=$this->db->lasterror;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6886,7 +6886,7 @@ abstract class CommonObject
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to show lines of extrafields with output datas.
|
* Function to show lines of extrafields with output datas.
|
||||||
* This function is responsible to output the <tr> and <td> according to correct number of columns received into $params['colspan']
|
* This function is responsible to output the <tr> and <td> according to correct number of columns received into $params['colspan'] or <div> according to $display_type
|
||||||
*
|
*
|
||||||
* @param Extrafields $extrafields Extrafield Object
|
* @param Extrafields $extrafields Extrafield Object
|
||||||
* @param string $mode Show output ('view') or input ('create' or 'edit') for extrafield
|
* @param string $mode Show output ('view') or input ('create' or 'edit') for extrafield
|
||||||
|
|||||||
@@ -1257,7 +1257,7 @@ class FormMail extends Form
|
|||||||
$sql .= " AND (lang = '".$db->escape($languagetosearch)."'".($languagetosearchmain ? " OR lang = '".$db->escape($languagetosearchmain)."'" : "")." OR lang IS NULL OR lang = '')";
|
$sql .= " AND (lang = '".$db->escape($languagetosearch)."'".($languagetosearchmain ? " OR lang = '".$db->escape($languagetosearchmain)."'" : "")." OR lang IS NULL OR lang = '')";
|
||||||
}
|
}
|
||||||
if ($id > 0) {
|
if ($id > 0) {
|
||||||
$sql .= " AND rowid=".$id;
|
$sql .= " AND rowid=".(int) $id;
|
||||||
}
|
}
|
||||||
if ($id == -1) {
|
if ($id == -1) {
|
||||||
$sql .= " AND position=0";
|
$sql .= " AND position=0";
|
||||||
@@ -1331,6 +1331,8 @@ class FormMail extends Form
|
|||||||
return $ret;
|
return $ret;
|
||||||
} else {
|
} else {
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
|
$this->error=$db->lasterror;
|
||||||
|
$this->errors[]=$db->lasterror;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
62
htdocs/core/lib/eventorganization.lib.php
Normal file
62
htdocs/core/lib/eventorganization.lib.php
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2021 Florian Henry <florian.henry@scopen.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 eventorganization/lib/eventorganization.lib.php
|
||||||
|
* \ingroup eventorganization
|
||||||
|
* \brief Library files with common functions for EventOrganization
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepare admin pages header
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function eventorganizationAdminPrepareHead()
|
||||||
|
{
|
||||||
|
global $langs, $conf;
|
||||||
|
|
||||||
|
$langs->load("eventorganization");
|
||||||
|
|
||||||
|
$h = 0;
|
||||||
|
$head = array();
|
||||||
|
|
||||||
|
$head[$h][0] = DOL_URL_ROOT.'/admin/eventorganization.php';
|
||||||
|
$head[$h][1] = $langs->trans("Settings");
|
||||||
|
$head[$h][2] = 'settings';
|
||||||
|
$h++;
|
||||||
|
|
||||||
|
|
||||||
|
$head[$h][0] = DOL_URL_ROOT.'/admin/eventorganization_confbooth_extrafields.php';
|
||||||
|
$head[$h][1] = $langs->trans("ExtraFields")." (".$langs->trans("EventOrganizationConfOrBooth").")";
|
||||||
|
$head[$h][2] = 'eventorganization_extrafields';
|
||||||
|
$h++;
|
||||||
|
|
||||||
|
// Show more tabs from modules
|
||||||
|
// Entries must be declared in modules descriptor with line
|
||||||
|
//$this->tabs = array(
|
||||||
|
// 'entity:+tabname:Title:@eventorganization:/eventorganization/mypage.php?id=__ID__'
|
||||||
|
//); // to add new tab
|
||||||
|
//$this->tabs = array(
|
||||||
|
// 'entity:-tabname:Title:@eventorganization:/eventorganization/mypage.php?id=__ID__'
|
||||||
|
//); // to remove a tab
|
||||||
|
complete_head_from_modules($conf, $langs, null, $head, $h, 'eventorganization');
|
||||||
|
|
||||||
|
complete_head_from_modules($conf, $langs, null, $head, $h, 'eventorganization', 'remove');
|
||||||
|
|
||||||
|
return $head;
|
||||||
|
}
|
||||||
@@ -3245,7 +3245,6 @@ function dol_trunc($string, $size = 40, $trunc = 'right', $stringencoding = 'UTF
|
|||||||
function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $srconly = 0, $notitle = 0, $alt = '', $morecss = '', $marginleftonlyshort = 2)
|
function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $srconly = 0, $notitle = 0, $alt = '', $morecss = '', $marginleftonlyshort = 2)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
// We forge fullpathpicto for image to $path/img/$picto. By default, we take DOL_URL_ROOT/theme/$conf->theme/img/$picto
|
// We forge fullpathpicto for image to $path/img/$picto. By default, we take DOL_URL_ROOT/theme/$conf->theme/img/$picto
|
||||||
$url = DOL_URL_ROOT;
|
$url = DOL_URL_ROOT;
|
||||||
$theme = isset($conf->theme) ? $conf->theme : null;
|
$theme = isset($conf->theme) ? $conf->theme : null;
|
||||||
@@ -3296,7 +3295,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
'error', 'warning',
|
'error', 'warning',
|
||||||
'recruitmentcandidature', 'recruitmentjobposition', 'resource',
|
'recruitmentcandidature', 'recruitmentjobposition', 'resource',
|
||||||
'shapes', 'supplier_proposal', 'supplier_order', 'supplier_invoice', 'user-cog',
|
'shapes', 'supplier_proposal', 'supplier_order', 'supplier_invoice', 'user-cog',
|
||||||
'title_setup', 'title_accountancy', 'title_bank', 'title_hrm', 'title_agenda'
|
'title_setup', 'title_accountancy', 'title_bank', 'title_hrm', 'title_agenda',
|
||||||
|
'eventorganization', 'object_eventorganization'
|
||||||
)
|
)
|
||||||
)) {
|
)) {
|
||||||
$pictowithouttext = str_replace('object_', '', $pictowithouttext);
|
$pictowithouttext = str_replace('object_', '', $pictowithouttext);
|
||||||
@@ -3341,7 +3341,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
'title_agenda'=>'calendar-alt',
|
'title_agenda'=>'calendar-alt',
|
||||||
'uparrow'=>'mail-forward', 'vcard'=>'address-card',
|
'uparrow'=>'mail-forward', 'vcard'=>'address-card',
|
||||||
'jabber'=>'comment-o',
|
'jabber'=>'comment-o',
|
||||||
'website'=>'globe-americas'
|
'website'=>'globe-americas',
|
||||||
|
'eventorganization'=>'id-badge'
|
||||||
);
|
);
|
||||||
if ($pictowithouttext == 'off') {
|
if ($pictowithouttext == 'off') {
|
||||||
$fakey = 'fa-square';
|
$fakey = 'fa-square';
|
||||||
|
|||||||
460
htdocs/core/modules/modEventOrganization.class.php
Normal file
460
htdocs/core/modules/modEventOrganization.class.php
Normal file
@@ -0,0 +1,460 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2021 Florian Henry <florian.henry@scopen.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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \defgroup eventorganization Module EventOrganization
|
||||||
|
* \brief EventOrganization module descriptor.
|
||||||
|
*
|
||||||
|
* \file htdocs/eventorganization/core/modules/modEventOrganization.class.php
|
||||||
|
* \ingroup eventorganization
|
||||||
|
* \brief Description and activation file for module EventOrganization
|
||||||
|
*/
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description and activation class for module EventOrganization
|
||||||
|
* This module is base on this specification :
|
||||||
|
* https://wiki.dolibarr.org/index.php/Draft:Module_Event_Organization
|
||||||
|
*/
|
||||||
|
class modEventOrganization extends DolibarrModules
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Constructor. Define names, constants, directories, boxes, permissions
|
||||||
|
*
|
||||||
|
* @param DoliDB $db Database handler
|
||||||
|
*/
|
||||||
|
public function __construct($db)
|
||||||
|
{
|
||||||
|
global $langs, $conf;
|
||||||
|
$this->db = $db;
|
||||||
|
|
||||||
|
$this->numero = 2450;
|
||||||
|
|
||||||
|
$this->rights_class = 'eventorganization';
|
||||||
|
|
||||||
|
$this->family = "projects";
|
||||||
|
|
||||||
|
$this->module_position = '20';
|
||||||
|
|
||||||
|
$this->name = preg_replace('/^mod/i', '', get_class($this));
|
||||||
|
|
||||||
|
$this->description = "EventOrganizationDescription";
|
||||||
|
$this->descriptionlong = "EventOrganizationDescriptionLong";
|
||||||
|
|
||||||
|
$this->version = 'development';
|
||||||
|
|
||||||
|
|
||||||
|
// Key used in llx_const table to save module status enabled/disabled (where EVENTORGANIZATION is value of property name of module in uppercase)
|
||||||
|
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
|
||||||
|
|
||||||
|
$this->picto = 'action';
|
||||||
|
|
||||||
|
// Define some features supported by module (triggers, login, substitutions, menus, css, etc...)
|
||||||
|
$this->module_parts = array(
|
||||||
|
// Set this to 1 if module has its own trigger directory (core/triggers)
|
||||||
|
'triggers' => 0,
|
||||||
|
// Set this to 1 if module has its own login method file (core/login)
|
||||||
|
'login' => 0,
|
||||||
|
// Set this to 1 if module has its own substitution function file (core/substitutions)
|
||||||
|
'substitutions' => 0,
|
||||||
|
// Set this to 1 if module has its own menus handler directory (core/menus)
|
||||||
|
'menus' => 0,
|
||||||
|
// Set this to 1 if module overwrite template dir (core/tpl)
|
||||||
|
'tpl' => 0,
|
||||||
|
// Set this to 1 if module has its own barcode directory (core/modules/barcode)
|
||||||
|
'barcode' => 0,
|
||||||
|
// Set this to 1 if module has its own models directory (core/modules/xxx)
|
||||||
|
'models' => 1,
|
||||||
|
// Set this to 1 if module has its own printing directory (core/modules/printing)
|
||||||
|
'printing' => 0,
|
||||||
|
// Set this to 1 if module has its own theme directory (theme)
|
||||||
|
'theme' => 0,
|
||||||
|
// Set this to relative path of css file if module has its own css file
|
||||||
|
'css' => array(
|
||||||
|
// '/eventorganization/css/eventorganization.css.php',
|
||||||
|
),
|
||||||
|
// Set this to relative path of js file if module must load a js on all pages
|
||||||
|
'js' => array(
|
||||||
|
// '/eventorganization/js/eventorganization.js.php',
|
||||||
|
),
|
||||||
|
// Set here all hooks context managed by module. To find available hook context, make a "grep -r '>initHooks(' *" on source code. You can also set hook context to 'all'
|
||||||
|
'hooks' => array(
|
||||||
|
// 'data' => array(
|
||||||
|
// 'hookcontext1',
|
||||||
|
// 'hookcontext2',
|
||||||
|
// ),
|
||||||
|
// 'entity' => '0',
|
||||||
|
),
|
||||||
|
// Set this to 1 if features of module are opened to external users
|
||||||
|
'moduleforexternal' => 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Data directories to create when module is enabled.
|
||||||
|
// Example: this->dirs = array("/eventorganization/temp","/eventorganization/subdir");
|
||||||
|
$this->dirs = array("/eventorganization/temp");
|
||||||
|
|
||||||
|
// Config pages. Put here list of php page, stored into eventorganization/admin directory, to use to setup module.
|
||||||
|
$this->config_page_url = array("eventorganization.php");
|
||||||
|
|
||||||
|
// Dependencies
|
||||||
|
// A condition to hide module
|
||||||
|
$this->hidden = false;
|
||||||
|
// List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...)
|
||||||
|
$this->depends = array('modProjet','modCategorie');
|
||||||
|
$this->requiredby = array(); // List of module class names as string to disable if this one is disabled. Example: array('modModuleToDisable1', ...)
|
||||||
|
$this->conflictwith = array(); // List of module class names as string this module is in conflict with. Example: array('modModuleToDisable1', ...)
|
||||||
|
|
||||||
|
// The language file dedicated to your module
|
||||||
|
$this->langfiles = array("eventorganization");
|
||||||
|
|
||||||
|
// Prerequisites
|
||||||
|
$this->phpmin = array(5, 6); // Minimum version of PHP required by module
|
||||||
|
$this->need_dolibarr_version = array(13, -3); // Minimum version of Dolibarr required by module
|
||||||
|
|
||||||
|
// Messages at activation
|
||||||
|
$this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
|
||||||
|
$this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
|
||||||
|
//$this->automatic_activation = array('FR'=>'EventOrganizationWasAutomaticallyActivatedBecauseOfYourCountryChoice');
|
||||||
|
//$this->always_enabled = true; // If true, can't be disabled
|
||||||
|
|
||||||
|
// Constants
|
||||||
|
// List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
|
||||||
|
// Example: $this->const=array(1 => array('EVENTORGANIZATION_MYNEWCONST1', 'chaine', 'myvalue', 'This is a constant to add', 1),
|
||||||
|
// 2 => array('EVENTORGANIZATION_MYNEWCONST2', 'chaine', 'myvalue', 'This is another constant to add', 0, 'current', 1)
|
||||||
|
// );
|
||||||
|
$this->const = array(1 => array('EVENTORGANIZATION_TASK_LABEL', 'chaine', '', '', 0));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Some keys to add into the overwriting translation tables
|
||||||
|
/*$this->overwrite_translation = array(
|
||||||
|
'en_US:ParentCompany'=>'Parent company or reseller',
|
||||||
|
'fr_FR:ParentCompany'=>'Maison mère ou revendeur'
|
||||||
|
)*/
|
||||||
|
|
||||||
|
if (!isset($conf->eventorganization) || !isset($conf->eventorganization->enabled)) {
|
||||||
|
$conf->eventorganization = new stdClass();
|
||||||
|
$conf->eventorganization->enabled = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Array to add new pages in new tabs
|
||||||
|
$this->tabs = array();
|
||||||
|
// Example:
|
||||||
|
// $this->tabs[] = array('data'=>'objecttype:+tabname1:Title1:mylangfile@eventorganization:$user->rights->eventorganization->read:/eventorganization/mynewtab1.php?id=__ID__'); // To add a new tab identified by code tabname1
|
||||||
|
// $this->tabs[] = array('data'=>'objecttype:+tabname2:SUBSTITUTION_Title2:mylangfile@eventorganization:$user->rights->othermodule->read:/eventorganization/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2. Label will be result of calling all substitution functions on 'Title2' key.
|
||||||
|
// $this->tabs[] = array('data'=>'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname
|
||||||
|
//
|
||||||
|
// Where objecttype can be
|
||||||
|
// 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member)
|
||||||
|
// 'contact' to add a tab in contact view
|
||||||
|
// 'contract' to add a tab in contract view
|
||||||
|
// 'group' to add a tab in group view
|
||||||
|
// 'intervention' to add a tab in intervention view
|
||||||
|
// 'invoice' to add a tab in customer invoice view
|
||||||
|
// 'invoice_supplier' to add a tab in supplier invoice view
|
||||||
|
// 'member' to add a tab in fundation member view
|
||||||
|
// 'opensurveypoll' to add a tab in opensurvey poll view
|
||||||
|
// 'order' to add a tab in customer order view
|
||||||
|
// 'order_supplier' to add a tab in supplier order view
|
||||||
|
// 'payment' to add a tab in payment view
|
||||||
|
// 'payment_supplier' to add a tab in supplier payment view
|
||||||
|
// 'product' to add a tab in product view
|
||||||
|
// 'propal' to add a tab in propal view
|
||||||
|
// 'project' to add a tab in project view
|
||||||
|
// 'stock' to add a tab in stock view
|
||||||
|
// 'thirdparty' to add a tab in third party view
|
||||||
|
// 'user' to add a tab in user view
|
||||||
|
|
||||||
|
// Dictionaries
|
||||||
|
$this->dictionaries = array();
|
||||||
|
/* Example:
|
||||||
|
$this->dictionaries=array(
|
||||||
|
'langs'=>'eventorganization@eventorganization',
|
||||||
|
// List of tables we want to see into dictonnary editor
|
||||||
|
'tabname'=>array(MAIN_DB_PREFIX."table1", MAIN_DB_PREFIX."table2", MAIN_DB_PREFIX."table3"),
|
||||||
|
// Label of tables
|
||||||
|
'tablib'=>array("Table1", "Table2", "Table3"),
|
||||||
|
// Request to select fields
|
||||||
|
'tabsql'=>array('SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table1 as f', 'SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table2 as f', 'SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table3 as f'),
|
||||||
|
// Sort order
|
||||||
|
'tabsqlsort'=>array("label ASC", "label ASC", "label ASC"),
|
||||||
|
// List of fields (result of select to show dictionary)
|
||||||
|
'tabfield'=>array("code,label", "code,label", "code,label"),
|
||||||
|
// List of fields (list of fields to edit a record)
|
||||||
|
'tabfieldvalue'=>array("code,label", "code,label", "code,label"),
|
||||||
|
// List of fields (list of fields for insert)
|
||||||
|
'tabfieldinsert'=>array("code,label", "code,label", "code,label"),
|
||||||
|
// Name of columns with primary key (try to always name it 'rowid')
|
||||||
|
'tabrowid'=>array("rowid", "rowid", "rowid"),
|
||||||
|
// Condition to show each dictionary
|
||||||
|
'tabcond'=>array($conf->eventorganization->enabled, $conf->eventorganization->enabled, $conf->eventorganization->enabled)
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Boxes/Widgets
|
||||||
|
// Add here list of php file(s) stored in eventorganization/core/boxes that contains a class to show a widget.
|
||||||
|
$this->boxes = array(
|
||||||
|
// 0 => array(
|
||||||
|
// 'file' => 'eventorganizationwidget1.php@eventorganization',
|
||||||
|
// 'note' => 'Widget provided by EventOrganization',
|
||||||
|
// 'enabledbydefaulton' => 'Home',
|
||||||
|
// ),
|
||||||
|
// ...
|
||||||
|
);
|
||||||
|
|
||||||
|
// Cronjobs (List of cron jobs entries to add when module is enabled)
|
||||||
|
// unit_frequency must be 60 for minute, 3600 for hour, 86400 for day, 604800 for week
|
||||||
|
$this->cronjobs = array(
|
||||||
|
// 0 => array(
|
||||||
|
// 'label' => 'MyJob label',
|
||||||
|
// 'jobtype' => 'method',
|
||||||
|
// 'class' => '/eventorganization/class/conferenceorbooth.class.php',
|
||||||
|
// 'objectname' => 'ConferenceOrBooth',
|
||||||
|
// 'method' => 'doScheduledJob',
|
||||||
|
// 'parameters' => '',
|
||||||
|
// 'comment' => 'Comment',
|
||||||
|
// 'frequency' => 2,
|
||||||
|
// 'unitfrequency' => 3600,
|
||||||
|
// 'status' => 0,
|
||||||
|
// 'test' => '$conf->eventorganization->enabled',
|
||||||
|
// 'priority' => 50,
|
||||||
|
// ),
|
||||||
|
);
|
||||||
|
// Example: $this->cronjobs=array(
|
||||||
|
// 0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'/dir/class/file.class.php', 'objectname'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>2, 'unitfrequency'=>3600, 'status'=>0, 'test'=>'$conf->eventorganization->enabled', 'priority'=>50),
|
||||||
|
// 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24, 'status'=>0, 'test'=>'$conf->eventorganization->enabled', 'priority'=>50)
|
||||||
|
// );
|
||||||
|
|
||||||
|
// Permissions provided by this module
|
||||||
|
$this->rights = array();
|
||||||
|
$r = 0;
|
||||||
|
// Add here entries to declare new permissions
|
||||||
|
/* BEGIN MODULEBUILDER PERMISSIONS */
|
||||||
|
$this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used)
|
||||||
|
$this->rights[$r][1] = 'Read objects of EventOrganization'; // Permission label
|
||||||
|
$this->rights[$r][4] = 'read'; // In php code, permission will be checked by test if ($user->rights->eventorganization->level1)
|
||||||
|
$r++;
|
||||||
|
$this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used)
|
||||||
|
$this->rights[$r][1] = 'Create/Update objects of EventOrganization'; // Permission label
|
||||||
|
$this->rights[$r][4] = 'write'; // In php code, permission will be checked by test if ($user->rights->eventorganization->level1)
|
||||||
|
$r++;
|
||||||
|
$this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used)
|
||||||
|
$this->rights[$r][1] = 'Delete objects of EventOrganization'; // Permission label
|
||||||
|
$this->rights[$r][4] = 'delete'; // In php code, permission will be checked by test if ($user->rights->eventorganization->level1)
|
||||||
|
$r++;
|
||||||
|
/* END MODULEBUILDER PERMISSIONS */
|
||||||
|
|
||||||
|
// Main menu entries to add
|
||||||
|
$this->menu = array();
|
||||||
|
$r = 0;
|
||||||
|
// Add here entries to declare new menus
|
||||||
|
/* BEGIN MODULEBUILDER TOPMENU */
|
||||||
|
/*$this->menu[$r++] = array(
|
||||||
|
'fk_menu'=>'', // '' 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'=>'top', // This is a Top menu entry
|
||||||
|
'titre'=>'ModuleEventOrganizationName',
|
||||||
|
'mainmenu'=>'eventorganization',
|
||||||
|
'leftmenu'=>'',
|
||||||
|
'url'=>'/eventorganization/eventorganizationindex.php',
|
||||||
|
'langs'=>'eventorganization@eventorganization', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
|
'position'=>1000 + $r,
|
||||||
|
'enabled'=>'$conf->eventorganization->enabled', // Define condition to show or hide menu entry. Use '$conf->eventorganization->enabled' if entry must be visible if module is enabled.
|
||||||
|
'perms'=>'1', // Use 'perms'=>'$user->rights->eventorganization->conferenceorbooth->read' if you want your menu with a permission rules
|
||||||
|
'target'=>'',
|
||||||
|
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
|
||||||
|
);*/
|
||||||
|
/* END MODULEBUILDER TOPMENU */
|
||||||
|
/* BEGIN MODULEBUILDER LEFTMENU CONFERENCEORBOOTH
|
||||||
|
$this->menu[$r++]=array(
|
||||||
|
'fk_menu'=>'fk_mainmenu=eventorganization', // '' 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 Top menu entry
|
||||||
|
'titre'=>'ConferenceOrBooth',
|
||||||
|
'mainmenu'=>'eventorganization',
|
||||||
|
'leftmenu'=>'conferenceorbooth',
|
||||||
|
'url'=>'/eventorganization/eventorganizationindex.php',
|
||||||
|
'langs'=>'eventorganization@eventorganization', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
|
'position'=>1000+$r,
|
||||||
|
'enabled'=>'$conf->eventorganization->enabled', // Define condition to show or hide menu entry. Use '$conf->eventorganization->enabled' if entry must be visible if module is enabled.
|
||||||
|
'perms'=>'$user->rights->eventorganization->conferenceorbooth->read', // Use 'perms'=>'$user->rights->eventorganization->level1->level2' if you want your menu with a permission rules
|
||||||
|
'target'=>'',
|
||||||
|
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
|
||||||
|
);
|
||||||
|
$this->menu[$r++]=array(
|
||||||
|
'fk_menu'=>'fk_mainmenu=eventorganization,fk_leftmenu=conferenceorbooth', // '' 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'=>'List_ConferenceOrBooth',
|
||||||
|
'mainmenu'=>'eventorganization',
|
||||||
|
'leftmenu'=>'eventorganization_conferenceorbooth_list',
|
||||||
|
'url'=>'/eventorganization/conferenceorbooth_list.php',
|
||||||
|
'langs'=>'eventorganization@eventorganization', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
|
'position'=>1000+$r,
|
||||||
|
'enabled'=>'$conf->eventorganization->enabled', // Define condition to show or hide menu entry. Use '$conf->eventorganization->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
|
||||||
|
'perms'=>'$user->rights->eventorganization->conferenceorbooth->read', // Use 'perms'=>'$user->rights->eventorganization->level1->level2' if you want your menu with a permission rules
|
||||||
|
'target'=>'',
|
||||||
|
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
|
||||||
|
);
|
||||||
|
$this->menu[$r++]=array(
|
||||||
|
'fk_menu'=>'fk_mainmenu=eventorganization,fk_leftmenu=conferenceorbooth', // '' 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'=>'New_ConferenceOrBooth',
|
||||||
|
'mainmenu'=>'eventorganization',
|
||||||
|
'leftmenu'=>'eventorganization_conferenceorbooth_new',
|
||||||
|
'url'=>'/eventorganization/conferenceorbooth_card.php?action=create',
|
||||||
|
'langs'=>'eventorganization@eventorganization', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
|
'position'=>1000+$r,
|
||||||
|
'enabled'=>'$conf->eventorganization->enabled', // Define condition to show or hide menu entry. Use '$conf->eventorganization->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
|
||||||
|
'perms'=>'$user->rights->eventorganization->conferenceorbooth->write', // Use 'perms'=>'$user->rights->eventorganization->level1->level2' if you want your menu with a permission rules
|
||||||
|
'target'=>'',
|
||||||
|
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* END MODULEBUILDER LEFTMENU CONFERENCEORBOOTH */
|
||||||
|
// Exports profiles provided by this module
|
||||||
|
$r = 1;
|
||||||
|
/* BEGIN MODULEBUILDER EXPORT CONFERENCEORBOOTH */
|
||||||
|
/*
|
||||||
|
$langs->load("eventorganization@eventorganization");
|
||||||
|
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
||||||
|
$this->export_label[$r]='ConferenceOrBoothLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
||||||
|
$this->export_icon[$r]='conferenceorbooth@eventorganization';
|
||||||
|
// Define $this->export_fields_array, $this->export_TypeFields_array and $this->export_entities_array
|
||||||
|
$keyforclass = 'ConferenceOrBooth'; $keyforclassfile='/eventorganization/class/conferenceorbooth.class.php'; $keyforelement='conferenceorbooth@eventorganization';
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
||||||
|
//$this->export_fields_array[$r]['t.fieldtoadd']='FieldToAdd'; $this->export_TypeFields_array[$r]['t.fieldtoadd']='Text';
|
||||||
|
//unset($this->export_fields_array[$r]['t.fieldtoremove']);
|
||||||
|
//$keyforclass = 'ConferenceOrBoothLine'; $keyforclassfile='/eventorganization/class/conferenceorbooth.class.php'; $keyforelement='conferenceorboothline@eventorganization'; $keyforalias='tl';
|
||||||
|
//include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
||||||
|
$keyforselect='conferenceorbooth'; $keyforaliasextra='extra'; $keyforelement='conferenceorbooth@eventorganization';
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
||||||
|
//$keyforselect='conferenceorboothline'; $keyforaliasextra='extraline'; $keyforelement='conferenceorboothline@eventorganization';
|
||||||
|
//include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
||||||
|
//$this->export_dependencies_array[$r] = array('conferenceorboothline'=>array('tl.rowid','tl.ref')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields)
|
||||||
|
//$this->export_special_array[$r] = array('t.field'=>'...');
|
||||||
|
//$this->export_examplevalues_array[$r] = array('t.field'=>'Example');
|
||||||
|
//$this->export_help_array[$r] = array('t.field'=>'FieldDescHelp');
|
||||||
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'conferenceorbooth as t';
|
||||||
|
//$this->export_sql_end[$r] =' LEFT JOIN '.MAIN_DB_PREFIX.'conferenceorbooth_line as tl ON tl.fk_conferenceorbooth = t.rowid';
|
||||||
|
$this->export_sql_end[$r] .=' WHERE 1 = 1';
|
||||||
|
$this->export_sql_end[$r] .=' AND t.entity IN ('.getEntity('conferenceorbooth').')';
|
||||||
|
$r++; */
|
||||||
|
/* END MODULEBUILDER EXPORT CONFERENCEORBOOTH */
|
||||||
|
|
||||||
|
// Imports profiles provided by this module
|
||||||
|
$r = 1;
|
||||||
|
/* BEGIN MODULEBUILDER IMPORT CONFERENCEORBOOTH */
|
||||||
|
/*
|
||||||
|
$langs->load("eventorganization@eventorganization");
|
||||||
|
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
||||||
|
$this->export_label[$r]='ConferenceOrBoothLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
||||||
|
$this->export_icon[$r]='conferenceorbooth@eventorganization';
|
||||||
|
$keyforclass = 'ConferenceOrBooth'; $keyforclassfile='/eventorganization/class/conferenceorbooth.class.php'; $keyforelement='conferenceorbooth@eventorganization';
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
||||||
|
$keyforselect='conferenceorbooth'; $keyforaliasextra='extra'; $keyforelement='conferenceorbooth@eventorganization';
|
||||||
|
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
||||||
|
//$this->export_dependencies_array[$r]=array('mysubobject'=>'ts.rowid', 't.myfield'=>array('t.myfield2','t.myfield3')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields)
|
||||||
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
|
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'conferenceorbooth as t';
|
||||||
|
$this->export_sql_end[$r] .=' WHERE 1 = 1';
|
||||||
|
$this->export_sql_end[$r] .=' AND t.entity IN ('.getEntity('conferenceorbooth').')';
|
||||||
|
$r++; */
|
||||||
|
/* END MODULEBUILDER IMPORT CONFERENCEORBOOTH */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called when module is enabled.
|
||||||
|
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
|
||||||
|
* It also creates data directories
|
||||||
|
*
|
||||||
|
* @param string $options Options when enabling module ('', 'noboxes')
|
||||||
|
* @return int 1 if OK, 0 if KO
|
||||||
|
*/
|
||||||
|
public function init($options = '')
|
||||||
|
{
|
||||||
|
global $conf, $langs;
|
||||||
|
|
||||||
|
$result = $this->_load_tables('/eventorganization/sql/');
|
||||||
|
if ($result < 0) {
|
||||||
|
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create extrafields during init
|
||||||
|
//include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
|
//$extrafields = new ExtraFields($this->db);
|
||||||
|
//$result1=$extrafields->addExtraField('eventorganization_myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty', 0, 0, '', '', 1, '', 0, 0, '', '', 'eventorganization@eventorganization', '$conf->eventorganization->enabled');
|
||||||
|
//$result2=$extrafields->addExtraField('eventorganization_myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project', 0, 0, '', '', 1, '', 0, 0, '', '', 'eventorganization@eventorganization', '$conf->eventorganization->enabled');
|
||||||
|
//$result3=$extrafields->addExtraField('eventorganization_myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'eventorganization@eventorganization', '$conf->eventorganization->enabled');
|
||||||
|
//$result4=$extrafields->addExtraField('eventorganization_myattr4', "New Attr 4 label", 'select', 1, 3, 'thirdparty', 0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1,'', 0, 0, '', '', 'eventorganization@eventorganization', '$conf->eventorganization->enabled');
|
||||||
|
//$result5=$extrafields->addExtraField('eventorganization_myattr5', "New Attr 5 label", 'text', 1, 10, 'user', 0, 0, '', '', 1, '', 0, 0, '', '', 'eventorganization@eventorganization', '$conf->eventorganization->enabled');
|
||||||
|
|
||||||
|
// Permissions
|
||||||
|
$this->remove($options);
|
||||||
|
|
||||||
|
$sql = array();
|
||||||
|
|
||||||
|
// Document templates
|
||||||
|
$moduledir = 'eventorganization';
|
||||||
|
$myTmpObjects = array();
|
||||||
|
$myTmpObjects['ConferenceOrBooth'] = array('includerefgeneration'=>0, 'includedocgeneration'=>0);
|
||||||
|
|
||||||
|
foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
|
||||||
|
if ($myTmpObjectKey == 'ConferenceOrBooth') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($myTmpObjectArray['includerefgeneration']) {
|
||||||
|
$src = DOL_DOCUMENT_ROOT.'/install/doctemplates/eventorganization/template_conferenceorbooths.odt';
|
||||||
|
$dirodt = DOL_DATA_ROOT.'/doctemplates/eventorganization';
|
||||||
|
$dest = $dirodt.'/template_conferenceorbooths.odt';
|
||||||
|
|
||||||
|
if (file_exists($src) && !file_exists($dest)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
dol_mkdir($dirodt);
|
||||||
|
$result = dol_copy($src, $dest, 0, 0);
|
||||||
|
if ($result < 0) {
|
||||||
|
$langs->load("errors");
|
||||||
|
$this->error = $langs->trans('ErrorFailToCopyFile', $src, $dest);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = array_merge($sql, array(
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'standard_".strtolower($myTmpObjectKey)."' AND type = '".strtolower($myTmpObjectKey)."' AND entity = ".$conf->entity,
|
||||||
|
"INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('standard_".strtolower($myTmpObjectKey)."','".strtolower($myTmpObjectKey)."',".$conf->entity.")",
|
||||||
|
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'generic_".strtolower($myTmpObjectKey)."_odt' AND type = '".strtolower($myTmpObjectKey)."' AND entity = ".$conf->entity,
|
||||||
|
"INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('generic_".strtolower($myTmpObjectKey)."_odt', '".strtolower($myTmpObjectKey)."', ".$conf->entity.")"
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->_init($sql, $options);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called when module is disabled.
|
||||||
|
* Remove from database constants, boxes and permissions from Dolibarr database.
|
||||||
|
* Data directories are not deleted
|
||||||
|
*
|
||||||
|
* @param string $options Options when enabling module ('', 'noboxes')
|
||||||
|
* @return int 1 if OK, 0 if KO
|
||||||
|
*/
|
||||||
|
public function remove($options = '')
|
||||||
|
{
|
||||||
|
$sql = array();
|
||||||
|
return $this->_remove($sql, $options);
|
||||||
|
}
|
||||||
|
}
|
||||||
3
htdocs/eventorganization/modulebuilder.txt
Normal file
3
htdocs/eventorganization/modulebuilder.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# DO NOT DELETE THIS FILE MANUALLY
|
||||||
|
# File to flag module built using official module template.
|
||||||
|
# When this file is present into a module directory, you can edit it with the module builder tool.
|
||||||
@@ -32,3 +32,9 @@ INSERT INTO llx_c_email_templates (entity,module,type_template,lang,private,fk_u
|
|||||||
|
|
||||||
INSERT INTO llx_c_email_templates (entity,module,type_template,lang,private,fk_user,datec,label,position,enabled,active,topic,content,content_lines,joinfiles) VALUES (0,'recruitment','recruitmentcandidature_send','',0,null,null,'(AnswerCandidature)' ,100,'$conf->recruitment->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourCandidature)__', '__(Hello)__ __CANDIDATE_FULLNAME__,<br><br>\n\n__(YourCandidatureAnswerMessage)__<br>__ONLINE_INTERVIEW_SCHEDULER_TEXT_AND_URL__\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
INSERT INTO llx_c_email_templates (entity,module,type_template,lang,private,fk_user,datec,label,position,enabled,active,topic,content,content_lines,joinfiles) VALUES (0,'recruitment','recruitmentcandidature_send','',0,null,null,'(AnswerCandidature)' ,100,'$conf->recruitment->enabled',1,'[__[MAIN_INFO_SOCIETE_NOM]__] __(YourCandidature)__', '__(Hello)__ __CANDIDATE_FULLNAME__,<br><br>\n\n__(YourCandidatureAnswerMessage)__<br>__ONLINE_INTERVIEW_SCHEDULER_TEXT_AND_URL__\n<br><br>\n__(Sincerely)__<br>__USER_SIGNATURE__',null, 0);
|
||||||
|
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailAskConf', 10, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskConf)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventConfRequestWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailAskBooth', 20, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskBooth)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventBoothRequestWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsBooth', 30, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsBooth)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventBoothSubscriptionWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsEvent', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsEvent)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventEventSubscriptionWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationMassEmailAttendes', 50, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailAttendes)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventBulkMailToAttendes)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationMassEmailSpeakers', 60, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailSpeakers)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventBulkMailToSpeakers)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
|||||||
@@ -162,3 +162,11 @@ ALTER TABLE llx_tva ADD COLUMN fk_account integer;
|
|||||||
--ALTER TABLE llx_tva DROP COLUMN fk_bank;
|
--ALTER TABLE llx_tva DROP COLUMN fk_bank;
|
||||||
|
|
||||||
ALTER TABLE llx_tva ALTER COLUMN paye SET DEFAULT 0;
|
ALTER TABLE llx_tva ALTER COLUMN paye SET DEFAULT 0;
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailAskConf', 10, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskConf)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventConfRequestWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailAskBooth', 20, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailAskBooth)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventBoothRequestWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsBooth', 30, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsBooth)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventBoothSubscriptionWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationEmailSubsEvent', 40, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationEmailSubsEvent)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventEventSubscriptionWasReceived)__<br /><br />__ONLINE_PAYMENT_TEXT_AND_URL__<br /><br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationMassEmailAttendes', 50, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailAttendes)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventBulkMailToAttendes)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
INSERT INTO llx_c_email_templates (entity, module, type_template, lang, private, fk_user, datec, tms, label, position, active, topic, content, content_lines, enabled, joinfiles) values (0, '', 'eventorganization_send', '', 0, null, null, '2021-02-14 14:42:41', 'EventOrganizationMassEmailSpeakers', 60, 1, '[__[MAIN_INFO_SOCIETE_NOM]__] __(EventOrganizationMassEmailSpeakers)__', '__(Hello)__ __THIRDPARTY_NAME__,<br /><br />__(ThisIsContentOfYourOragnisationEventBulkMailToSpeakers)__<br /><br />__(Sincerely)__<br />__USER_SIGNATURE__', null, '1', null);
|
||||||
|
|||||||
@@ -2102,3 +2102,4 @@ SHOW_SUBPRODUCT_REF_IN_PDF=If the feature "%s" of module <b>%s</b> is used, show
|
|||||||
AskThisIDToYourBank=Contact your bank to get this ID
|
AskThisIDToYourBank=Contact your bank to get this ID
|
||||||
AdvancedModeOnly=Permision available in Advanced permission mode only
|
AdvancedModeOnly=Permision available in Advanced permission mode only
|
||||||
ConfFileIsReadableOrWritableByAnyUsers=The conf file is reabable or writable by any users. Give permission to web server user and group only.
|
ConfFileIsReadableOrWritableByAnyUsers=The conf file is reabable or writable by any users. Give permission to web server user and group only.
|
||||||
|
MailToSendEventOrganization=Event Organization
|
||||||
|
|||||||
57
htdocs/langs/en_US/eventorganization.lang
Normal file
57
htdocs/langs/en_US/eventorganization.lang
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Copyright (C) 2021 Florian Henry <florian.henry@scopen.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/>.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generic
|
||||||
|
#
|
||||||
|
|
||||||
|
ModuleEventOrganizationName = Event Organization
|
||||||
|
EventOrganizationDescription = Event Organization
|
||||||
|
EventOrganizationDescriptionLong= Manage Event organization for conference, attendees, speaker, and attendees, with public subcription page
|
||||||
|
|
||||||
|
#
|
||||||
|
# Admin page
|
||||||
|
#
|
||||||
|
EventOrganizationSetup = Event Organization setup
|
||||||
|
Settings = Settings
|
||||||
|
EventOrganizationSetupPage = Event Organization setup page
|
||||||
|
EVENTORGANIZATION_TASK_LABEL = Task label created when validate
|
||||||
|
EVENTORGANIZATION_TASK_LABELTooltip = When validate a Conference or a booth, some tasks will be created in the project<br><br> for example: <br>Send Call for Conference<br>Send Call for Booth<br>Receive call for conferences<br>Receive call for Booth<br>Open subscriptions to events for attendees<br>Send remind of event to speakers<br>Send remind of event to Booth hoster<br>Send remind of event to attendees
|
||||||
|
EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties automatically created when someone suggests a conference
|
||||||
|
EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth
|
||||||
|
EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference.
|
||||||
|
EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth.
|
||||||
|
EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a subscription to a booth has been paid.
|
||||||
|
EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a subscription to an event has been paid.
|
||||||
|
EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes
|
||||||
|
EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers
|
||||||
|
|
||||||
|
#
|
||||||
|
# Object
|
||||||
|
#
|
||||||
|
EventOrganizationConfOrBooth= Conference Or Booth
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template Mail
|
||||||
|
#
|
||||||
|
YourOragnisationEventConfRequestWasReceived = Your request for conference was received
|
||||||
|
YourOragnisationEventBoothRequestWasReceived = Your request for booth was received
|
||||||
|
EventOrganizationEmailAskConf = Request for conference
|
||||||
|
EventOrganizationEmailAskBooth = Request for booth
|
||||||
|
EventOrganizationEmailSubsBooth = Subscription for booth
|
||||||
|
EventOrganizationEmailSubsEvent = Subscription for an event
|
||||||
|
EventOrganizationMassEmailAttendes = Communication to attendes
|
||||||
|
EventOrganizationMassEmailSpeakers = Communication to speakers
|
||||||
Reference in New Issue
Block a user