diff --git a/htdocs/langs/en_US/eventorganization.lang b/htdocs/langs/en_US/eventorganization.lang
index 1d7b16c17f6..1940c9674c1 100644
--- a/htdocs/langs/en_US/eventorganization.lang
+++ b/htdocs/langs/en_US/eventorganization.lang
@@ -99,7 +99,9 @@ EvntOrgCancelled = Cancelled
SuggestForm = Suggestion page
RegisterPage = Page for conferences or booth
EvntOrgRegistrationWelcomeMessage = Welcome on the conference or booth suggestion page.
-EvntOrgRegistrationHelpMessage = Here, you can suggest a new conference or a new booth for the project
+EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference for the project
+EvntOrgRegistrationBoothHelpMessage = Here, you can suggest a new booth for the project
+EvntOrgVoteHelpMessage = Here, you can view and vote for the suggested events for the project
SuggestConference = Suggest a new conference
SuggestBooth = Suggest a booth
ViewAndVote = View and vote for suggested events
diff --git a/htdocs/public/project/suggestbooth.php b/htdocs/public/project/suggestbooth.php
index bb03c0d3782..ecaf524c034 100644
--- a/htdocs/public/project/suggestbooth.php
+++ b/htdocs/public/project/suggestbooth.php
@@ -526,7 +526,7 @@ print '
';
diff --git a/htdocs/public/project/viewandvote.php b/htdocs/public/project/viewandvote.php
index b3d9bbc7f37..fe7d4d2ed59 100644
--- a/htdocs/public/project/viewandvote.php
+++ b/htdocs/public/project/viewandvote.php
@@ -1 +1,217 @@
+ * Copyright (C) 2006-2017 Laurent Destailleur
+ * Copyright (C) 2009-2012 Regis Houssin
+ * Copyright (C) 2018 Juanjo Menent
+ * Copyright (C) 2018-2019 Thibault FOUCART
+ * Copyright (C) 2021 Waƫl Almoman
+ *
+ * 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 .
+ *
+ * For Paypal test: https://developer.paypal.com/
+ * For Paybox test: ???
+ * For Stripe test: Use credit card 4242424242424242 .More example on https://stripe.com/docs/testing
+ *
+ * Variants:
+ * - When option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION is on, we use the new PaymentIntent API
+ * - When option STRIPE_USE_NEW_CHECKOUT is on, we use the new checkout API
+ * - If no option set, we use old APIS (charge)
+ */
+
+/**
+ * \file htdocs/public/payment/newpayment.php
+ * \ingroup core
+ * \brief File to offer a way to make a payment for a particular Dolibarr object
+ */
+
+if (!defined('NOLOGIN')) {
+ define("NOLOGIN", 1); // This means this output page does not require to be logged.
+}
+if (!defined('NOCSRFCHECK')) {
+ define("NOCSRFCHECK", 1); // We accept to go on this page from external web site.
+}
+if (!defined('NOIPCHECK')) {
+ define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip
+}
+if (!defined('NOBROWSERNOTIF')) {
+ define('NOBROWSERNOTIF', '1');
+}
+
+// For MultiCompany module.
+// Do not use GETPOST here, function is not defined and get of entity must be done before including main.inc.php
+$entity = (!empty($_GET['entity']) ? (int) $_GET['entity'] : (!empty($_POST['entity']) ? (int) $_POST['entity'] : (!empty($_GET['e']) ? (int) $_GET['e'] : (!empty($_POST['e']) ? (int) $_POST['e'] : 1))));
+if (is_numeric($entity)) {
+ define("DOLENTITY", $entity);
+}
+
+require '../../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
+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';
+// Hook to be used by external payment modules (ie Payzen, ...)
+include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
+$hookmanager = new HookManager($db);
+$hookmanager->initHooks(array('newpayment'));
+
+// For encryption
+global $dolibarr_main_instance_unique_id;
+
+// Load translation files
+$langs->loadLangs(array("main", "other", "dict", "bills", "companies", "errors", "paybox", "paypal", "stripe")); // File with generic data
+
+// Security check
+// No check on module enabled. Done later according to $validpaymentmethod
+
+$action = GETPOST('action', 'aZ09');
+$id = GETPOST('id');
+$securekeyreceived = GETPOST("securekey");
+$securekeytocompare = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$id, 2);
+
+if ($securekeytocompare != $securekeyreceived) {
+ print $langs->trans('MissingOrBadSecureKey');
+ exit;
+}
+
+// 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. For Paypal payment, we can use internal URL like localhost.
+
+$project = new Project($db);
+$resultproject = $project->fetch($id);
+if ($resultproject < 0) {
+ $error++;
+ $errmsg .= $project->error;
+}
+
+/*
+ * Actions
+ */
+
+$listOfEvents = '