From 941ccf5ec79bd2917cb169e28d41ac41b3048905 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 18 Apr 2025 13:33:55 +0200 Subject: [PATCH] Debug v22 --- htdocs/admin/eventorganization.php | 1 - htdocs/admin/eventorganization_public.php | 317 ++++++++++++++++++++++ htdocs/core/lib/eventorganization.lib.php | 5 + htdocs/langs/fr_FR/eventorganization.lang | 1 + htdocs/public/project/index.php | 17 +- 5 files changed, 327 insertions(+), 14 deletions(-) create mode 100644 htdocs/admin/eventorganization_public.php diff --git a/htdocs/admin/eventorganization.php b/htdocs/admin/eventorganization.php index 2aff61e40ca..39733496763 100644 --- a/htdocs/admin/eventorganization.php +++ b/htdocs/admin/eventorganization.php @@ -68,7 +68,6 @@ $arrayofparameters = array( //'EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES'=>array('type'=>'emailtemplate:conferenceorbooth', 'enabled'=>1, 'css' => ''), 'SERVICE_BOOTH_LOCATION' => array('type' => 'product', 'enabled' => 1, 'css' => ''), 'SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION' => array('type' => 'product', 'enabled' => 1, 'css' => ''), - 'EVENTORGANIZATION_SECUREKEY' => array('type' => 'securekey', 'enabled' => 1, 'css' => ''), ); $error = 0; diff --git a/htdocs/admin/eventorganization_public.php b/htdocs/admin/eventorganization_public.php new file mode 100644 index 00000000000..42ed804737c --- /dev/null +++ b/htdocs/admin/eventorganization_public.php @@ -0,0 +1,317 @@ + + * Copyright (C) 2024-2025 MDW + * Copyright (C) 2024 Frédéric France + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/admin/eventorganization.php + * \ingroup eventorganization + * \brief EventOrganization setup page. + */ + +// Load Dolibarr environment +require '../main.inc.php'; + +// 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'; + +/** + * @var Conf $conf + * @var DoliDB $db + * @var HookManager $hookmanager + * @var Translate $langs + * @var User $user + */ + +// Translations +$langs->loadLangs(array("admin", "eventorganization", "categories")); + +// Parameters +$action = GETPOST('action', 'aZ09'); +$cancel = GETPOST('cancel', 'aZ09'); +$backtopage = GETPOST('backtopage', 'alpha'); + +$value = GETPOST('value', 'alpha'); +$label = GETPOST('label', 'alpha'); +$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php + +$scandir = GETPOST('scan_dir', 'alpha'); +$type = 'myobject'; + +$arrayofparameters = array( + 'EVENTORGANIZATION_SECUREKEY' => array('type' => 'securekey', 'enabled' => 1, 'css' => ''), +); + +$error = 0; +$setupnotempty = 0; + +$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); + +// Access control +if (empty($user->admin)) { + accessforbidden(); +} + + + +/* + * Actions + */ + +if ($cancel) { + $action = ''; +} + +include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; + + + +/* + * View + */ + +$form = new Form($db); + +$page_name = "EventOrganizationSetup"; + +llxHeader('', $langs->trans($page_name), '', '', 0, 0, '', '', '', 'mod-admin page-eventorganization'); + +// Subheader +$linkback = ''.$langs->trans("BackToModuleList").''; + +print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup'); + +// Configuration header +$head = eventorganizationAdminPrepareHead(); +print dol_get_fiche_head($head, 'public', $langs->trans($page_name), -1, 'eventorganization'); + +// Setup page goes here +echo ''.$langs->trans("EventOrganizationSetupPage").'

'; + + +if ($action == 'edit') { + print '
'; + print ''; + print ''; + + print ''; + print ''; + + foreach ($arrayofparameters as $constname => $val) { + if ($val['enabled'] == 1) { + $setupnotempty++; + print ''; + } + } + print '
'.$langs->trans("Parameter").'
'; + $tooltiphelp = (($langs->trans($constname . 'Tooltip') != $constname . 'Tooltip') ? $langs->trans($constname . 'Tooltip') : ''); + $tooltiphelp .= (($langs->trans($constname . 'Tooltip2') && $langs->trans($constname . 'Tooltip2') != $constname . 'Tooltip2') ? '

'."\n".$langs->trans($constname . 'Tooltip2') : ''); + print ''.$form->textwithpicto($langs->trans($constname), $tooltiphelp, 1, 'info', '', 0, 3, 'tootips'.$constname).''; + print '
'; + + if ($val['type'] == 'textarea') { + print '\n"; + } elseif ($val['type'] == 'html') { + require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; + $doleditor = new DolEditor($constname, getDolGlobalString($constname), '', 160, 'dolibarr_notes', '', false, false, isModEnabled('fckeditor'), ROWS_5, '90%'); + $doleditor->Create(); + } elseif ($val['type'] == 'yesno') { + print $form->selectyesno($constname, getDolGlobalString($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 = ' (' . $langs->trans("SeveralLangugeVariatFound") . ')'; + } + // 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, getDolGlobalString($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], getDolGlobalInt($constname), $constname, 0, $langs->trans('CustomersProspectsCategoriesShort')); + } elseif (preg_match('/thirdparty_type/', $val['type'])) { + require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; + $formcompany = new FormCompany($db); + print $formcompany->selectProspectCustomerType(getDolGlobalString($constname), $constname, 'customerorprospect', 'form', '', '1'); + } elseif ($val['type'] == 'securekey') { + print ''; + if (!empty($conf->use_javascript_ajax)) { + print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token'.$constname.'" class="linkobject"'); + } + + // Add button to autosuggest a key + include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; + print dolJSToSetRandomPassword($constname, 'generate_token'.$constname); + } elseif ($val['type'] == 'product') { + if (isModEnabled("product") || isModEnabled("service")) { + $selected = getDolGlobalInt($constname); + print img_picto('', 'product', 'class="pictofixedwidth"'); + print $form->select_produits($selected, $constname, '', 0, 0, 1, 2, '', 0, array(), 0, '1', 0, 'maxwidth500 widthcentpercentminusx', 0, '', null, 1); + } + } else { + print ''; + } + print '
'; + + print $form->buttonsSaveCancel(); + + print '
'; + print '
'; +} else { + if (!empty($arrayofparameters)) { + print ''; + print ''; + + foreach ($arrayofparameters as $constname => $val) { + if ($val['enabled'] == 1) { + $setupnotempty++; + print ''; + print ''; + + print ''; + } + } + + print '
'.$langs->trans("Parameter").'
'; + $tooltiphelp = (($langs->trans($constname . 'Tooltip') != $constname . 'Tooltip') ? $langs->trans($constname . 'Tooltip') : ''); + $tooltiphelp .= (($langs->trans($constname . 'Tooltip2') && $langs->trans($constname . 'Tooltip2') != $constname . 'Tooltip2') ? '

'."\n".$langs->trans($constname . 'Tooltip2') : ''); + print $form->textwithpicto($langs->trans($constname), $tooltiphelp); + print '
'; + + if ($val['type'] == 'textarea') { + print dol_nl2br(getDolGlobalString($constname)); + } elseif ($val['type'] == 'html') { + print getDolGlobalString($constname); + } elseif ($val['type'] == 'yesno') { + print ajax_constantonoff($constname); + } elseif (preg_match('/emailtemplate:/', $val['type'])) { + if (getDolGlobalString($constname)) { + include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php'; + $formmail = new FormMail($db); + + $tmp = explode(':', $val['type']); + $labelemailtemplate = getDolGlobalString($constname); + if ($labelemailtemplate && $labelemailtemplate != '-1') { + $template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, getDolGlobalInt($constname)); + if (is_numeric($template) && $template < 0) { + setEventMessages($formmail->error, $formmail->errors, 'errors'); + } else { + if ($template->label != 'default') { + print $langs->trans($template->label); + } + } + } + } + } elseif (preg_match('/category:/', $val['type'])) { + if (getDolGlobalInt($constname)) { + $c = new Categorie($db); + $result = $c->fetch(getDolGlobalInt($constname)); + if ($result < 0) { + setEventMessages(null, $c->errors, 'errors'); + } + $ways = $c->print_all_ways(' >> ', 'none', 0, 1); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formatted text + $toprint = array(); + foreach ($ways as $way) { + $toprint[] = '
  • color ? ' style="background: #' . $c->color . ';"' : ' style="background: #bbb"') . '>' . $way . '
  • '; + } + print '
      ' . implode(' ', $toprint) . '
    '; + } + } elseif (preg_match('/thirdparty_type/', $val['type'])) { + if (getDolGlobalString($constname) == 2) { + print $langs->trans("Prospect"); + } elseif (getDolGlobalString($constname) == 3) { + print $langs->trans("ProspectCustomer"); + } elseif (getDolGlobalString($constname) == 1) { + print $langs->trans("Customer"); + } elseif (getDolGlobalString($constname) == 0) { + print $langs->trans("NorProspectNorCustomer"); + } + } elseif ($val['type'] == 'product') { + $product = new Product($db); + $idproduct = getDolGlobalInt($constname); + if ($idproduct > 0) { + $resprod = $product->fetch($idproduct); + if ($resprod > 0) { + print $product->getNomUrl(1); + } elseif ($resprod < 0) { + setEventMessages($product->error, $product->errors, "errors"); + } + } + } else { + print getDolGlobalString($constname); + } + print '
    '; + + print '
    '; + print ''.$langs->trans("Modify").''; + print '
    '; + } else { + print '
    '.$langs->trans("NothingToSetup"); + } +} + + +// Page end +print dol_get_fiche_end(); + + +//if (getDolGlobalString('EVENTORGANIZATION_ENABLE_PUBLIC')) { + print '
    '; + //print $langs->trans('FollowingLinksArePublic').'
    '; + print img_picto('', 'globe').' '.$langs->trans('BlankSubscriptionForm').'
    '; +if (isModEnabled('multicompany')) { + $entity_qr = '?entity='.$conf->entity; +} else { + $entity_qr = ''; +} + + // Define $urlwithroot + $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); + $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file + //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current + + print ''; + print ajax_autoselect('publicurlmember'); +//} + + +llxFooter(); +$db->close(); diff --git a/htdocs/core/lib/eventorganization.lib.php b/htdocs/core/lib/eventorganization.lib.php index 79510429856..658af8b86d6 100644 --- a/htdocs/core/lib/eventorganization.lib.php +++ b/htdocs/core/lib/eventorganization.lib.php @@ -65,6 +65,11 @@ function eventorganizationAdminPrepareHead() $head[$h][2] = 'conferenceorboothattendee_extrafields'; $h++; + $head[$h][0] = DOL_URL_ROOT.'/admin/eventorganization_public.php'; + $head[$h][1] = $langs->trans("BlankSubscriptionForm"); + $head[$h][2] = 'public'; + $h++; + // Show more tabs from modules // Entries must be declared in modules descriptor with line //$this->tabs = array( diff --git a/htdocs/langs/fr_FR/eventorganization.lang b/htdocs/langs/fr_FR/eventorganization.lang index b69e7c9b3d8..b65aa6000e5 100644 --- a/htdocs/langs/fr_FR/eventorganization.lang +++ b/htdocs/langs/fr_FR/eventorganization.lang @@ -160,3 +160,4 @@ RecordsUpdated=%s enregistrement(s) mis à jour RecordUpdated=Enregistrement mis à jour NoRecordUpdated=Aucun enregistrement mis à jour ProfitPerValidatedAttendee=Bénéfice par participant +TheLinkIsAvailableOnTheProjectEventCard=The link is provided into the page of the project/event diff --git a/htdocs/public/project/index.php b/htdocs/public/project/index.php index cf1cfb715f2..a4a6d54312e 100644 --- a/htdocs/public/project/index.php +++ b/htdocs/public/project/index.php @@ -20,7 +20,8 @@ /** * \file htdocs/public/project/index.php * \ingroup core - * \brief File to offer a way to suggest a conference or a booth for an event + * \brief Page to offer a way to suggest a conference or a booth for a given event. + * Link of this page is given into the project card. */ if (!defined('NOLOGIN')) { @@ -54,8 +55,6 @@ require_once DOL_DOCUMENT_ROOT.'/societe/class/societeaccount.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; -global $dolibarr_main_url_root; - /** * @var Conf $conf * @var DoliDB $db @@ -251,7 +250,7 @@ print load_fiche_titre($langs->trans("NewRegistration"), '', '', 0, '', 'center' print ''.$langs->trans("EvntOrgRegistrationWelcomeMessage").''; print '
    '; // Title -print ''.dol_escape_htmltag($project->title . ' '. $conference->label).'
    '; +print ''.dol_escape_htmltag($project->title . ' '. $project->label).'
    '; print ''; // Help text @@ -293,16 +292,8 @@ print '
    '; print ''."\n"; -print $text; - // Output payment summary form -print '
    '; - -$found = false; -$error = 0; -$var = false; - -$object = null; +print '
    '; print "\n";