Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into develop

Conflicts:
	htdocs/adherents/card.php
	htdocs/core/class/commonobjectline.class.php
	htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php
	htdocs/public/project/index.php
This commit is contained in:
Laurent Destailleur 2021-09-01 17:52:04 +02:00
commit 38c0e93285
19 changed files with 199 additions and 151 deletions

View File

@ -1937,7 +1937,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
if (!empty($conf->societe->enabled) && !$object->socid) { if (!empty($conf->societe->enabled) && !$object->socid) {
if ($user->rights->societe->creer) { if ($user->rights->societe->creer) {
if (Adherent::STATUS_DRAFT != $object->statut) { if (Adherent::STATUS_DRAFT != $object->statut) {
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?rowid='.$object->id.'&amp;action=create_thirdparty">'.$langs->trans("CreateDolibarrThirdParty").'</a>'."\n"; print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?rowid='.$object->id.'&amp;action=create_thirdparty" title="'.dol_escape_htmltag($langs->trans("CreateDolibarrThirdPartyDesc")).'">'.$langs->trans("CreateDolibarrThirdParty").'</a>'."\n";
} else { } else {
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("ValidateBefore")).'">'.$langs->trans("CreateDolibarrThirdParty").'</a>'."\n"; print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("ValidateBefore")).'">'.$langs->trans("CreateDolibarrThirdParty").'</a>'."\n";
} }
@ -1950,7 +1950,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
if (!$user->socid && !$object->user_id) { if (!$user->socid && !$object->user_id) {
if ($user->rights->user->user->creer) { if ($user->rights->user->user->creer) {
if (Adherent::STATUS_DRAFT != $object->statut) { if (Adherent::STATUS_DRAFT != $object->statut) {
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?rowid='.$object->id.'&amp;action=create_user">'.$langs->trans("CreateDolibarrLogin").'</a>'."\n"; print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?rowid='.$object->id.'&amp;action=create_user" title="'.dol_escape_htmltag($langs->trans("CreateDolibarrLoginDesc")).'">'.$langs->trans("CreateDolibarrLogin").'</a>'."\n";
} else { } else {
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("ValidateBefore")).'">'.$langs->trans("CreateDolibarrLogin").'</a>'."\n"; print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("ValidateBefore")).'">'.$langs->trans("CreateDolibarrLogin").'</a>'."\n";
} }

View File

@ -962,7 +962,8 @@ while ($i < min($num, $limit)) {
// Firstname // Firstname
if (!empty($arrayfields['d.firstname']['checked'])) { if (!empty($arrayfields['d.firstname']['checked'])) {
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->firstname).'">'; print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->firstname).'">';
print $obj->firstname; print $memberstatic->getNomUrl(0, 0, 'card', 'fistname');
//print $obj->firstname;
print "</td>\n"; print "</td>\n";
if (!$i) { if (!$i) {
$totalarray['nbfield']++; $totalarray['nbfield']++;
@ -971,7 +972,8 @@ while ($i < min($num, $limit)) {
// Lastname // Lastname
if (!empty($arrayfields['d.lastname']['checked'])) { if (!empty($arrayfields['d.lastname']['checked'])) {
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->lastname).'">'; print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->lastname).'">';
print $obj->lastname; print $memberstatic->getNomUrl(0, 0, 'card', 'lastname');
//print $obj->lastname;
print "</td>\n"; print "</td>\n";
if (!$i) { if (!$i) {
$totalarray['nbfield']++; $totalarray['nbfield']++;
@ -1101,7 +1103,9 @@ while ($i < min($num, $limit)) {
} }
// EMail // EMail
if (!empty($arrayfields['d.email']['checked'])) { if (!empty($arrayfields['d.email']['checked'])) {
print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->email).'">'.dol_print_email($obj->email, 0, 0, 1)."</td>\n"; print '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->email).'">';
print dol_print_email($obj->email, 0, 0, 1, 64, 1, 1);
print "</td>\n";
} }
// End of subscription date // End of subscription date
$datefin = $db->jdate($obj->datefin); $datefin = $db->jdate($obj->datefin);

View File

@ -70,6 +70,10 @@ $offsetvalue = GETPOST('offsetvalue', 'int');
$offsetunit = GETPOST('offsetunittype_duration', 'aZ09'); $offsetunit = GETPOST('offsetunittype_duration', 'aZ09');
$remindertype = GETPOST('selectremindertype', 'aZ09'); $remindertype = GETPOST('selectremindertype', 'aZ09');
$modelmail = GETPOST('actioncommsendmodel_mail', 'int'); $modelmail = GETPOST('actioncommsendmodel_mail', 'int');
$complete = GETPOST('complete', 'alpha'); // 'na' must be allowed
if ($complete == 'na' || $complete == -2) {
$complete = -1;
}
$datep = dol_mktime($fulldayevent ? '00' : $aphour, $fulldayevent ? '00' : $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int')); $datep = dol_mktime($fulldayevent ? '00' : $aphour, $fulldayevent ? '00' : $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'));
$datef = dol_mktime($fulldayevent ? '23' : $p2hour, $fulldayevent ? '59' : $p2min, $fulldayevent ? '59' : '0', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int')); $datef = dol_mktime($fulldayevent ? '23' : $p2hour, $fulldayevent ? '59' : $p2min, $fulldayevent ? '59' : '0', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'));
@ -240,7 +244,7 @@ if (empty($reshook) && $action == 'add') {
exit; exit;
} }
$percentage = in_array(GETPOST('status'), array(-1, 100)) ?GETPOST('status') : (in_array(GETPOST('complete'), array(-1, 100)) ?GETPOST('complete') : GETPOST("percentage")); // If status is -1 or 100, percentage is not defined and we must use status $percentage = in_array(GETPOST('status'), array(-1, 100)) ? GETPOST('status') : (in_array($complete, array(-1, 100)) ? $complete : GETPOST("percentage", 'int')); // If status is -1 or 100, percentage is not defined and we must use status
// Clean parameters // Clean parameters
$datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser'); $datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser');
@ -471,7 +475,7 @@ if (empty($reshook) && $action == 'update') {
$apmin = GETPOST('apmin', 'int'); $apmin = GETPOST('apmin', 'int');
$p2hour = GETPOST('p2hour', 'int'); $p2hour = GETPOST('p2hour', 'int');
$p2min = GETPOST('p2min', 'int'); $p2min = GETPOST('p2min', 'int');
$percentage = in_array(GETPOST('status'), array(-1, 100)) ?GETPOST('status') : (in_array(GETPOST('complete'), array(-1, 100)) ?GETPOST('complete') : GETPOST("percentage")); // If status is -1 or 100, percentage is not defined and we must use status $percentage = in_array(GETPOST('status'), array(-1, 100)) ? GETPOST('status') : (in_array($complete, array(-1, 100)) ? $complete : GETPOST("percentage", 'int')); // If status is -1 or 100, percentage is not defined and we must use status
// Clean parameters // Clean parameters
if ($aphour == -1) { if ($aphour == -1) {
@ -1074,15 +1078,15 @@ if ($action == 'create') {
// Status // Status
print '<tr><td>'.$langs->trans("Status").' / '.$langs->trans("Percentage").'</td>'; print '<tr><td>'.$langs->trans("Status").' / '.$langs->trans("Percentage").'</td>';
print '<td>'; print '<td>';
$percent = GETPOST('complete')!=='' ? GETPOST('complete') : -1; $percent = $complete !=='' ? $complete : -1;
if (GETPOSTISSET('status')) { if (GETPOSTISSET('status')) {
$percent = GETPOST('status'); $percent = GETPOST('status');
} elseif (GETPOSTISSET('percentage')) { } elseif (GETPOSTISSET('percentage')) {
$percent = GETPOST('percentage'); $percent = GETPOST('percentage', 'int');
} else { } else {
if (GETPOST('complete') == '0' || GETPOST("afaire") == 1) { if ($complete == '0' || GETPOST("afaire") == 1) {
$percent = '0'; $percent = '0';
} elseif (GETPOST('complete') == 100 || GETPOST("afaire") == 2) { } elseif ($complete == 100 || GETPOST("afaire") == 2) {
$percent = 100; $percent = 100;
} }
} }
@ -1340,7 +1344,7 @@ if ($id > 0) {
$result5 = $object->fetch_optionals(); $result5 = $object->fetch_optionals();
if ($listUserAssignedUpdated || $donotclearsession) { if ($listUserAssignedUpdated || $donotclearsession) {
$percentage = in_array(GETPOST('status'), array(-1, 100)) ?GETPOST('status') : (in_array(GETPOST('complete'), array(-1, 100)) ?GETPOST('complete') : GETPOST("percentage")); // If status is -1 or 100, percentage is not defined and we must use status $percentage = in_array(GETPOST('status'), array(-1, 100)) ? GETPOST('status') : (in_array($complete, array(-1, 100)) ? $complete : GETPOST("percentage", 'int')); // If status is -1 or 100, percentage is not defined and we must use status
$datep = dol_mktime($fulldayevent ? '00' : $aphour, $fulldayevent ? '00' : $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser'); $datep = dol_mktime($fulldayevent ? '00' : $aphour, $fulldayevent ? '00' : $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser');
$datef = dol_mktime($fulldayevent ? '23' : $p2hour, $fulldayevent ? '59' : $p2min, $fulldayevent ? '59' : '0', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser'); $datef = dol_mktime($fulldayevent ? '23' : $p2hour, $fulldayevent ? '59' : $p2min, $fulldayevent ? '59' : '0', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser');
@ -1534,7 +1538,7 @@ if ($id > 0) {
// Status // Status
print '<tr><td class="nowrap">'.$langs->trans("Status").' / '.$langs->trans("Percentage").'</td><td colspan="3">'; print '<tr><td class="nowrap">'.$langs->trans("Status").' / '.$langs->trans("Percentage").'</td><td colspan="3">';
$percent = GETPOST("percentage") ? GETPOST("percentage") : $object->percentage; $percent = GETPOSTISSET("percentage") ? GETPOST("percentage", "int") : $object->percentage;
$formactions->form_select_status_action('formaction', $percent, 1, 'complete', 0, 0, 'maxwidth200'); $formactions->form_select_status_action('formaction', $percent, 1, 'complete', 0, 0, 'maxwidth200');
print '</td></tr>'; print '</td></tr>';

View File

@ -71,7 +71,7 @@ abstract class CommonObjectLine extends CommonObject
{ {
global $langs; global $langs;
if (!$this->fk_unit) { if (empty($this->fk_unit)) {
return ''; return '';
} }
@ -87,6 +87,7 @@ abstract class CommonObjectLine extends CommonObject
} }
$sql = "SELECT ".$label_type.", code from ".MAIN_DB_PREFIX."c_units where rowid = ".((int) $this->fk_unit); $sql = "SELECT ".$label_type.", code from ".MAIN_DB_PREFIX."c_units where rowid = ".((int) $this->fk_unit);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql && $this->db->num_rows($resql) > 0) { if ($resql && $this->db->num_rows($resql) > 0) {
$res = $this->db->fetch_array($resql); $res = $this->db->fetch_array($resql);

View File

@ -263,7 +263,7 @@ class FormTicket
require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php';
print '<tr><td class="titlefield"><label for="email"><span class="fieldrequired">'.$langs->trans("SecurityCode").'</span></label></td><td>'; print '<tr><td class="titlefield"><label for="email"><span class="fieldrequired">'.$langs->trans("SecurityCode").'</span></label></td><td>';
print '<span class="span-icon-security inline-block">'; print '<span class="span-icon-security inline-block">';
print '<input id="securitycode" placeholder="'.$langs->trans("SecurityCode").'" class="flat input-icon-security width150" type="text" maxlength="5" name="code" tabindex="3" />'; print '<input id="securitycode" placeholder="'.$langs->trans("SecurityCode").'" class="flat input-icon-security width125" type="text" maxlength="5" name="code" tabindex="3" />';
print '</span>'; print '</span>';
print '<span class="nowrap inline-block">'; print '<span class="nowrap inline-block">';
print '<img class="inline-block valignmiddle" src="'.DOL_URL_ROOT.'/core/antispamimage.php" border="0" width="80" height="32" id="img_securitycode" />'; print '<img class="inline-block valignmiddle" src="'.DOL_URL_ROOT.'/core/antispamimage.php" border="0" width="80" height="32" id="img_securitycode" />';

View File

@ -1733,7 +1733,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM
$titleboth = $langs->trans("LeadsOrProjects"); $titleboth = $langs->trans("LeadsOrProjects");
$titlenew = $langs->trans("NewLeadOrProject"); // Leads and opportunities by default $titlenew = $langs->trans("NewLeadOrProject"); // Leads and opportunities by default
if (isset($conf->global->PROJECT_USE_OPPORTUNITIES) && $conf->global->PROJECT_USE_OPPORTUNITIES == 0) { if (empty($conf->global->PROJECT_USE_OPPORTUNITIES)) {
$titleboth = $langs->trans("Projects"); $titleboth = $langs->trans("Projects");
$titlenew = $langs->trans("NewProject"); $titlenew = $langs->trans("NewProject");
} }
@ -1746,7 +1746,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM
$newmenu->add("/projet/index.php?leftmenu=projects".($search_project_user ? '&search_project_user='.$search_project_user : ''), $titleboth, 0, $user->rights->projet->lire, '', $mainmenu, 'projects', 0, '', '', '', img_picto('', 'project', 'class="pictofixedwidth"')); $newmenu->add("/projet/index.php?leftmenu=projects".($search_project_user ? '&search_project_user='.$search_project_user : ''), $titleboth, 0, $user->rights->projet->lire, '', $mainmenu, 'projects', 0, '', '', '', img_picto('', 'project', 'class="pictofixedwidth"'));
$newmenu->add("/projet/card.php?leftmenu=projects&action=create".($search_project_user ? '&search_project_user='.$search_project_user : ''), $titlenew, 1, $user->rights->projet->creer); $newmenu->add("/projet/card.php?leftmenu=projects&action=create".($search_project_user ? '&search_project_user='.$search_project_user : ''), $titlenew, 1, $user->rights->projet->creer);
if (isset($conf->global->PROJECT_USE_OPPORTUNITIES) && $conf->global->PROJECT_USE_OPPORTUNITIES == 0) { if (empty($conf->global->PROJECT_USE_OPPORTUNITIES)) {
$newmenu->add("/projet/list.php?leftmenu=projets".($search_project_user ? '&search_project_user='.$search_project_user : '').'&search_status=99', $langs->trans("List"), 1, $showmode, '', 'project', 'list'); $newmenu->add("/projet/list.php?leftmenu=projets".($search_project_user ? '&search_project_user='.$search_project_user : '').'&search_status=99', $langs->trans("List"), 1, $showmode, '', 'project', 'list');
} elseif (isset($conf->global->PROJECT_USE_OPPORTUNITIES) && $conf->global->PROJECT_USE_OPPORTUNITIES == 1) { } elseif (isset($conf->global->PROJECT_USE_OPPORTUNITIES) && $conf->global->PROJECT_USE_OPPORTUNITIES == 1) {
$newmenu->add("/projet/list.php?leftmenu=projets".($search_project_user ? '&search_project_user='.$search_project_user : ''), $langs->trans("List"), 1, $showmode, '', 'project', 'list'); $newmenu->add("/projet/list.php?leftmenu=projets".($search_project_user ? '&search_project_user='.$search_project_user : ''), $langs->trans("List"), 1, $showmode, '', 'project', 'list');

View File

@ -66,7 +66,7 @@ class modProjet extends DolibarrModules
// Dependencies // Dependencies
$this->hidden = false; // A condition to hide module $this->hidden = false; // A condition to hide module
$this->depends = array(); // List of module class names as string that must be enabled if this module is enabled $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
$this->requiredby = array(); // List of module ids to disable if this one is disabled $this->requiredby = array('modEventOrganization'); // List of module ids to disable if this one is disabled
$this->conflictwith = array(); // List of module class names as string this module is in conflict with $this->conflictwith = array(); // List of module class names as string this module is in conflict with
$this->phpmin = array(5, 6); // Minimum version of PHP required by module $this->phpmin = array(5, 6); // Minimum version of PHP required by module
$this->langfiles = array('projects'); $this->langfiles = array('projects');

View File

@ -212,7 +212,7 @@ if ($captcha) {
<span class="fa fa-unlock"></span> <span class="fa fa-unlock"></span>
<span class="span-icon-security inline-block"> <span class="span-icon-security inline-block">
<input id="securitycode" placeholder="<?php echo $langs->trans("SecurityCode"); ?>" class="flat input-icon-security width150" type="text" maxlength="5" name="code" tabindex="3" autocomplete="off" /> <input id="securitycode" placeholder="<?php echo $langs->trans("SecurityCode"); ?>" class="flat input-icon-security width125" type="text" maxlength="5" name="code" tabindex="3" autocomplete="off" />
</span> </span>
<span class="nowrap inline-block"> <span class="nowrap inline-block">
<img class="inline-block valignmiddle" src="<?php echo DOL_URL_ROOT ?>/core/antispamimage.php" border="0" width="80" height="32" id="img_securitycode" /> <img class="inline-block valignmiddle" src="<?php echo DOL_URL_ROOT ?>/core/antispamimage.php" border="0" width="80" height="32" id="img_securitycode" />

View File

@ -150,7 +150,7 @@ if (!empty($captcha)) {
<span class="fa fa-unlock"></span> <span class="fa fa-unlock"></span>
<span class="nofa inline-block"> <span class="nofa inline-block">
<input id="securitycode" placeholder="<?php echo $langs->trans("SecurityCode"); ?>" class="flat input-icon-security width150" type="text" maxlength="5" name="code" tabindex="3" autocomplete="off" /> <input id="securitycode" placeholder="<?php echo $langs->trans("SecurityCode"); ?>" class="flat input-icon-security width125" type="text" maxlength="5" name="code" tabindex="3" autocomplete="off" />
</span> </span>
<span class="nowrap inline-block"> <span class="nowrap inline-block">
<img class="inline-block valignmiddle" src="<?php echo DOL_URL_ROOT ?>/core/antispamimage.php" border="0" width="80" height="32" id="img_securitycode" /> <img class="inline-block valignmiddle" src="<?php echo DOL_URL_ROOT ?>/core/antispamimage.php" border="0" width="80" height="32" id="img_securitycode" />

View File

@ -192,7 +192,8 @@ class InterfaceWorkflowManager extends DolibarrTriggers
if ($action == 'BILL_SUPPLIER_VALIDATE') { if ($action == 'BILL_SUPPLIER_VALIDATE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
// First classify billed the order to allow the proposal classify process // Firstly, we set to purchase order to "Billed" if WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER is set.
// After we will set proposals
if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER)) { if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER)) {
$object->fetchObjectLinked('', 'order_supplier', $object->id, $object->element); $object->fetchObjectLinked('', 'order_supplier', $object->id, $object->element);
if (!empty($object->linkedObjects)) { if (!empty($object->linkedObjects)) {
@ -206,13 +207,15 @@ class InterfaceWorkflowManager extends DolibarrTriggers
if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) { if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) {
foreach ($object->linkedObjects['order_supplier'] as $element) { foreach ($object->linkedObjects['order_supplier'] as $element) {
$ret = $element->classifyBilled($user); $ret = $element->classifyBilled($user);
if ($ret < 0) {
return $ret;
}
} }
} }
} }
return $ret;
} }
// Second classify billed the proposal. // Secondly, we set to linked Proposal to "Billed" if WORKFLOW_INVOICE_CLASSIFY_BILLED_SUPPLIER_PROPOSAL is set.
if (!empty($conf->supplier_proposal->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_SUPPLIER_PROPOSAL)) { if (!empty($conf->supplier_proposal->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_SUPPLIER_PROPOSAL)) {
$object->fetchObjectLinked('', 'supplier_proposal', $object->id, $object->element); $object->fetchObjectLinked('', 'supplier_proposal', $object->id, $object->element);
if (!empty($object->linkedObjects)) { if (!empty($object->linkedObjects)) {
@ -226,11 +229,37 @@ class InterfaceWorkflowManager extends DolibarrTriggers
if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) { if ($this->shouldClassify($conf, $totalonlinkedelements, $object->total_ht)) {
foreach ($object->linkedObjects['supplier_proposal'] as $element) { foreach ($object->linkedObjects['supplier_proposal'] as $element) {
$ret = $element->classifyBilled($user); $ret = $element->classifyBilled($user);
if ($ret < 0) {
return $ret;
}
} }
} }
} }
return $ret;
} }
// Then set reception to "Billed" if WORKFLOW_BILL_ON_RECEPTION is set
if (!empty($conf->reception->enabled) && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) {
$object->fetchObjectLinked('', 'reception', $object->id, $object->element);
if (!empty($object->linkedObjects)) {
$totalonlinkedelements = 0;
foreach ($object->linkedObjects['reception'] as $element) {
if ($element->statut == Reception::STATUS_VALIDATED) {
$totalonlinkedelements += $element->total_ht;
}
}
dol_syslog("Amount of linked reception = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht), LOG_DEBUG);
if ($totalonlinkedelements == $object->total_ht) {
foreach ($object->linkedObjects['reception'] as $element) {
$ret = $element->setBilled();
if ($ret < 0) {
return $ret;
}
}
}
}
}
return $ret;
} }
// Invoice classify billed order // Invoice classify billed order
@ -325,30 +354,6 @@ class InterfaceWorkflowManager extends DolibarrTriggers
} }
} }
// classify billed reception
if ($action == 'BILL_SUPPLIER_VALIDATE') {
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id, LOG_DEBUG);
if (!empty($conf->reception->enabled) && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) {
$object->fetchObjectLinked('', 'reception', $object->id, $object->element);
if (!empty($object->linkedObjects)) {
$totalonlinkedelements = 0;
foreach ($object->linkedObjects['reception'] as $element) {
if ($element->statut == Reception::STATUS_VALIDATED) {
$totalonlinkedelements += $element->total_ht;
}
}
dol_syslog("Amount of linked proposals = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht), LOG_DEBUG);
if ($totalonlinkedelements == $object->total_ht) {
foreach ($object->linkedObjects['reception'] as $element) {
$ret = $element->setBilled();
}
}
}
return $ret;
}
}
return 0; return 0;
} }

View File

@ -242,11 +242,11 @@ class ConferenceOrBooth extends ActionComm
*/ */
public function fetch($id, $ref = null, $ref_ext = '', $email_msgid = '') public function fetch($id, $ref = null, $ref_ext = '', $email_msgid = '')
{ {
global $dolibarr_main_url_root, $dolibarr_main_instance_unique_id, $conf, $langs; global $dolibarr_main_url_root, $conf, $langs;
$result = parent::fetch($id, $ref, $ref_ext, $email_msgid); $result = parent::fetch($id, $ref, $ref_ext, $email_msgid);
$link_subscription = $dolibarr_main_url_root.'/public/eventorganization/attendee_subscription.php?id='.$id; $link_subscription = $dolibarr_main_url_root.'/public/eventorganization/attendee_subscription.php?id='.urlencode($id);
$encodedsecurekey = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$id, 2); $encodedsecurekey = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$id, 2);
$link_subscription .= '&securekey='.urlencode($encodedsecurekey); $link_subscription .= '&securekey='.urlencode($encodedsecurekey);

View File

@ -33,13 +33,13 @@ if ($conf->categorie->enabled) {
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
} }
global $dolibarr_main_url_root;
// for other modules // for other modules
//dol_include_once('/othermodule/class/otherobject.class.php'); //dol_include_once('/othermodule/class/otherobject.class.php');
// Load translation files required by the page // Load translation files required by the page
$langs->loadLangs(array("eventorganization", "other")); $langs->loadLangs(array("eventorganization", "other", "projects"));
global $dolibarr_main_url_root, $dolibarr_main_instance_unique_id;
$action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ... $action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists) $massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists)
@ -228,7 +228,7 @@ $now = dol_now();
//$help_url="EN:Module_ConferenceOrBooth|FR:Module_ConferenceOrBooth_FR|ES:Módulo_ConferenceOrBooth"; //$help_url="EN:Module_ConferenceOrBooth|FR:Module_ConferenceOrBooth_FR|ES:Módulo_ConferenceOrBooth";
$help_url = ''; $help_url = '';
$title = $langs->trans('ListOf', $langs->transnoentitiesnoconv("ConferenceOrBooths")); $title = $langs->trans('ListOfConferencesOrBooths');
if ($projectid > 0) { if ($projectid > 0) {
$project = new Project($db); $project = new Project($db);
@ -246,9 +246,9 @@ if ($projectid > 0) {
} }
$help_url = "EN:Module_Projects|FR:Module_Projets|ES:M&oacute;dulo_Proyectos"; $help_url = "EN:Module_Projects|FR:Module_Projets|ES:M&oacute;dulo_Proyectos";
$title = $langs->trans("Project") . ' - ' . $langs->trans("ConferenceOrBooths") . ' - ' . $project->ref . ' ' . $project->name; $title = $langs->trans("Project") . ' - ' . $langs->trans("ListOfConferencesOrBooths") . ' - ' . $project->ref . ' ' . $project->name;
if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/', $conf->global->MAIN_HTML_TITLE) && $project->name) { if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/', $conf->global->MAIN_HTML_TITLE) && $project->name) {
$title = $project->ref . ' ' . $project->name . ' - ' . $langs->trans("ConferenceOrBooths"); $title = $project->ref . ' ' . $project->name . ' - ' . $langs->trans("ListOfConferencesOrBooths");
} }
} }
@ -352,14 +352,6 @@ if ($projectid > 0) {
} }
print '</td></tr>'; print '</td></tr>';
// Link to the vote/register page
print '<tr><td>'.$langs->trans("RegisterPage").'</td><td>';
$linkregister = $dolibarr_main_url_root.'/public/project/index.php?id='.$project->id;
$encodedsecurekey = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$project->id, 2);
$linkregister .= '&securekey='.urlencode($encodedsecurekey);
print '<a target="_blank" href="'.$linkregister.'">'.$linkregister.'</a>';
print '</td></tr>';
// Other attributes // Other attributes
$cols = 2; $cols = 2;
$objectconf=$object; $objectconf=$object;
@ -422,12 +414,45 @@ if ($projectid > 0) {
$urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT;
// Show message // Show message
$message = '<a href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=ical'.($conf->entity > 1 ? "&entity=".$conf->entity : ""); $message = '<a target="blank" href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=ical'.($conf->entity > 1 ? "&entity=".$conf->entity : "");
$message .= '&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...'); $message .= '&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY ?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY) : '...');
$message .= "&project=".$projectid.'&module='.urlencode('@eventorganization').'&status='.ConferenceOrBooth::STATUS_CONFIRMED.'">'.$langs->trans('DownloadICSLink').'</a>'; $message .= "&project=".$projectid.'&module='.urlencode('@eventorganization').'&status='.ConferenceOrBooth::STATUS_CONFIRMED.'">'.$langs->trans('DownloadICSLink').img_picto('', 'download', 'class="paddingleft"').'</a>';
print $message; print $message;
print "</td></tr>"; print "</td></tr>";
// Link to the submit vote/register page
print '<tr><td>';
//print '<span class="opacitymedium">';
print $form->textwithpicto($langs->trans("SuggestOrVoteForConfOrBooth"), $langs->trans("EvntOrgRegistrationHelpMessage"));
//print '</span>';
print '</td><td>';
$linksuggest = $dolibarr_main_url_root.'/public/project/index.php?id='.$project->id;
$encodedsecurekey = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$project->id, 2);
$linksuggest .= '&securekey='.urlencode($encodedsecurekey);
//print '<div class="urllink">';
//print '<input type="text" value="'.$linksuggest.'" id="linkregister" class="quatrevingtpercent paddingrightonly">';
print '<div class="tdoverflowmax200 inline-block valignmiddle"><a target="_blank" href="'.$linksuggest.'" class="quatrevingtpercent">'.$linksuggest.'</a></div>';
print '<a target="_blank" href="'.$linksuggest.'">'.img_picto('', 'globe').'</a>';
//print '</div>';
//print ajax_autoselect("linkregister");
print '</td></tr>';
// Link to the subscribe
print '<tr><td>';
//print '<span class="opacitymedium">';
print $langs->trans("PublicAttendeeSubscriptionPage");
//print '</span>';
print '</td><td>';
$link_subscription = $dolibarr_main_url_root.'/public/eventorganization/attendee_subscription.php?id='.$project->id;
$encodedsecurekey = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$project->id, 2);
$link_subscription .= '&securekey='.urlencode($encodedsecurekey);
//print '<div class="urllink">';
//print '<input type="text" value="'.$linkregister.'" id="linkregister" class="quatrevingtpercent paddingrightonly">';
print '<div class="tdoverflowmax200 inline-block valignmiddle"><a target="_blank" href="'.$link_subscription.'" class="quatrevingtpercent">'.$link_subscription.'</a></div>';
print '<a target="_blank" href="'.$link_subscription.'">'.img_picto('', 'globe').'</a>';
//print '</div>';
//print ajax_autoselect("linkregister");
print '</td></tr>';
print '</table>'; print '</table>';
@ -437,7 +462,6 @@ if ($projectid > 0) {
print '<div class="clearboth"></div>'; print '<div class="clearboth"></div>';
print dol_get_fiche_end(); print dol_get_fiche_end();
} }
@ -665,7 +689,7 @@ foreach ($object->fields as $key => $val) {
$cssforfield .= ($cssforfield ? ' ' : '').'center'; $cssforfield .= ($cssforfield ? ' ' : '').'center';
} elseif (in_array($val['type'], array('timestamp'))) { } elseif (in_array($val['type'], array('timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; $cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID') { } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'ref')) && $val['label'] != 'TechnicalID') {
$cssforfield .= ($cssforfield ? ' ' : '').'right'; $cssforfield .= ($cssforfield ? ' ' : '').'right';
} }
if (!empty($arrayfields['t.'.$key]['checked'])) { if (!empty($arrayfields['t.'.$key]['checked'])) {
@ -713,7 +737,7 @@ foreach ($object->fields as $key => $val) {
$cssforfield .= ($cssforfield ? ' ' : '').'center'; $cssforfield .= ($cssforfield ? ' ' : '').'center';
} elseif (in_array($val['type'], array('timestamp'))) { } elseif (in_array($val['type'], array('timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; $cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
} elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID') { } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'ref')) && $val['label'] != 'TechnicalID') {
$cssforfield .= ($cssforfield ? ' ' : '').'right'; $cssforfield .= ($cssforfield ? ' ' : '').'right';
} }
if (!empty($arrayfields['t.'.$key]['checked'])) { if (!empty($arrayfields['t.'.$key]['checked'])) {
@ -768,10 +792,10 @@ while ($i < ($limit ? min($num, $limit) : $num)) {
if (in_array($val['type'], array('timestamp'))) { if (in_array($val['type'], array('timestamp'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; $cssforfield .= ($cssforfield ? ' ' : '').'nowrap';
} elseif ($key == 'ref') { } elseif ($key == 'ref') {
$cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; $cssforfield .= ($cssforfield ? ' ' : '').'nowrap left';
} }
if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status'))) { if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'ref', 'status'))) {
$cssforfield .= ($cssforfield ? ' ' : '').'right'; $cssforfield .= ($cssforfield ? ' ' : '').'right';
} }
//if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100';

View File

@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT."/reception/class/reception.class.php";
/** /**
* Class to manage table commandefournisseurdispatch * Class to manage table commandefournisseurdispatch
*/ */
class CommandeFournisseurDispatch extends CommonObject class CommandeFournisseurDispatch extends CommonObjectLine
{ {
/** /**
* @var DoliDB Database handler. * @var DoliDB Database handler.

View File

@ -100,16 +100,17 @@ EvntOrgCancelled = Cancelled
# Public page # Public page
# #
SuggestForm = Suggestion page SuggestForm = Suggestion page
RegisterPage = Page for conferences or booth SuggestOrVoteForConfOrBooth = Page for suggestion or vote
EvntOrgRegistrationHelpMessage = Here, you can vote for an event, or suggest a new conference or booth for the project EvntOrgRegistrationHelpMessage = Here, you can vote for an event, or suggest a new conference or booth for the project
EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference 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 EvntOrgRegistrationBoothHelpMessage = Here, you can suggest a new booth for the project
ListOfSuggestedConferences = List of suggested conferences ListOfSuggestedConferences = List of suggested conferences
ListOfSuggestedBooths = List of suggested booths ListOfSuggestedBooths = List of suggested booths
ListOfConferencesOrBooths=List of conferences or booths
SuggestConference = Suggest a new conference SuggestConference = Suggest a new conference
SuggestBooth = Suggest a booth SuggestBooth = Suggest a booth
ViewAndVote = View and vote for suggested events ViewAndVote = View and vote for suggested events
PublicAttendeeSubscriptionPage = Public link of registration to a conference PublicAttendeeSubscriptionPage = Public link for registration to the event
MissingOrBadSecureKey = The security key is invalid or missing MissingOrBadSecureKey = The security key is invalid or missing
EvntOrgWelcomeMessage = This form allows you to register as a new participant to the conference : '%s' EvntOrgWelcomeMessage = This form allows you to register as a new participant to the conference : '%s'
EvntOrgDuration = This conference starts on %s and ends on %s. EvntOrgDuration = This conference starts on %s and ends on %s.
@ -122,6 +123,8 @@ ConferenceIsNotConfirmed=Subcription not available, conference is not confirmed
DateMustBeBeforeThan=%s must be before %s DateMustBeBeforeThan=%s must be before %s
DateMustBeAfterThan=%s must be after %s DateMustBeAfterThan=%s must be after %s
NewSubscription=Registration
# #
# Vote page # Vote page
# #

View File

@ -19,8 +19,8 @@ MembersCards=Business cards for members
MembersList=List of members MembersList=List of members
MembersListToValid=List of draft members (to be validated) MembersListToValid=List of draft members (to be validated)
MembersListValid=List of valid members MembersListValid=List of valid members
MembersListUpToDate=List of valid members with up-to-date subscription MembersListUpToDate=List of valid members with up-to-date contribution
MembersListNotUpToDate=List of valid members with out-of-date subscription MembersListNotUpToDate=List of valid members with out-of-date contribution
MembersListExcluded=List of excluded members MembersListExcluded=List of excluded members
MembersListResiliated=List of terminated members MembersListResiliated=List of terminated members
MembersListQualified=List of qualified members MembersListQualified=List of qualified members
@ -28,13 +28,13 @@ MenuMembersToValidate=Draft members
MenuMembersValidated=Validated members MenuMembersValidated=Validated members
MenuMembersExcluded=Excluded members MenuMembersExcluded=Excluded members
MenuMembersResiliated=Terminated members MenuMembersResiliated=Terminated members
MembersWithSubscriptionToReceive=Members with subscription to receive MembersWithSubscriptionToReceive=Members with contribution to receive
MembersWithSubscriptionToReceiveShort=Subscription to receive MembersWithSubscriptionToReceiveShort=Membership contribution to receive
DateSubscription=Subscription date DateSubscription=Date of membership
DateEndSubscription=Subscription end date DateEndSubscription=End date of membership
EndSubscription=Subscription Ends EndSubscription=End of membership
SubscriptionId=Subscription id SubscriptionId=Contribution ID
WithoutSubscription=Without subscription WithoutSubscription=Without contribution
MemberId=Member id MemberId=Member id
NewMember=New member NewMember=New member
MemberType=Member type MemberType=Member type
@ -43,9 +43,9 @@ MemberTypeLabel=Member type label
MembersTypes=Members types MembersTypes=Members types
MemberStatusDraft=Draft (needs to be validated) MemberStatusDraft=Draft (needs to be validated)
MemberStatusDraftShort=Draft MemberStatusDraftShort=Draft
MemberStatusActive=Validated (waiting subscription) MemberStatusActive=Validated (waiting contribution)
MemberStatusActiveShort=Validated MemberStatusActiveShort=Validated
MemberStatusActiveLate=Subscription expired MemberStatusActiveLate=Contribution expired
MemberStatusActiveLateShort=Expired MemberStatusActiveLateShort=Expired
MemberStatusPaid=Subscription up to date MemberStatusPaid=Subscription up to date
MemberStatusPaidShort=Up to date MemberStatusPaidShort=Up to date
@ -56,9 +56,9 @@ MemberStatusResiliatedShort=Terminated
MembersStatusToValid=Draft members MembersStatusToValid=Draft members
MembersStatusExcluded=Excluded members MembersStatusExcluded=Excluded members
MembersStatusResiliated=Terminated members MembersStatusResiliated=Terminated members
MemberStatusNoSubscription=Validated (no subscription needed) MemberStatusNoSubscription=Validated (no contribution required)
MemberStatusNoSubscriptionShort=Validated MemberStatusNoSubscriptionShort=Validated
SubscriptionNotNeeded=No subscription needed SubscriptionNotNeeded=No contribution required
NewCotisation=New contribution NewCotisation=New contribution
PaymentSubscription=New contribution payment PaymentSubscription=New contribution payment
SubscriptionEndDate=Subscription's end date SubscriptionEndDate=Subscription's end date
@ -70,17 +70,17 @@ MemberTypeDeleted=Member type deleted
MemberTypeCanNotBeDeleted=Member type can not be deleted MemberTypeCanNotBeDeleted=Member type can not be deleted
NewSubscription=New subscription NewSubscription=New subscription
NewSubscriptionDesc=This form allows you to record your subscription as a new member of the foundation. If you want to renew your subscription (if already a member), please contact foundation board instead by email %s. NewSubscriptionDesc=This form allows you to record your subscription as a new member of the foundation. If you want to renew your subscription (if already a member), please contact foundation board instead by email %s.
Subscription=Subscription Subscription=Contribution
Subscriptions=Subscriptions Subscriptions=Contributions
SubscriptionLate=Late SubscriptionLate=Late
SubscriptionNotReceived=Subscription never received SubscriptionNotReceived=Contribution never received
ListOfSubscriptions=List of subscriptions ListOfSubscriptions=List of contributions
SendCardByMail=Send card by email SendCardByMail=Send card by email
AddMember=Create member AddMember=Create member
NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types" NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types"
NewMemberType=New member type NewMemberType=New member type
WelcomeEMail=Welcome email WelcomeEMail=Welcome email
SubscriptionRequired=Subscription required SubscriptionRequired=Contribution required
DeleteType=Delete DeleteType=Delete
VoteAllowed=Vote allowed VoteAllowed=Vote allowed
Physical=Individual Physical=Individual
@ -88,47 +88,48 @@ Moral=Corporation
MorAndPhy=Corporation and Individual MorAndPhy=Corporation and Individual
Reenable=Re-Enable Reenable=Re-Enable
ExcludeMember=Exclude a member ExcludeMember=Exclude a member
Exclude=Exclude
ConfirmExcludeMember=Are you sure you want to exclude this member ? ConfirmExcludeMember=Are you sure you want to exclude this member ?
ResiliateMember=Terminate a member ResiliateMember=Terminate a member
ConfirmResiliateMember=Are you sure you want to terminate this member? ConfirmResiliateMember=Are you sure you want to terminate this member?
DeleteMember=Delete a member DeleteMember=Delete a member
ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his subscriptions)? ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his contributions)?
DeleteSubscription=Delete a subscription DeleteSubscription=Delete a subscription
ConfirmDeleteSubscription=Are you sure you want to delete this subscription? ConfirmDeleteSubscription=Are you sure you want to delete this contribution?
Filehtpasswd=htpasswd file Filehtpasswd=htpasswd file
ValidateMember=Validate a member ValidateMember=Validate a member
ConfirmValidateMember=Are you sure you want to validate this member? ConfirmValidateMember=Are you sure you want to validate this member?
FollowingLinksArePublic=The following links are open pages not protected by any Dolibarr permission. They are not formatted pages, provided as example to show how to list members database. FollowingLinksArePublic=The following links are open pages not protected by any Dolibarr permission. They are not formatted pages, provided as example to show how to list members database.
PublicMemberList=Public member list PublicMemberList=Public member list
BlankSubscriptionForm=Public self-subscription form BlankSubscriptionForm=Public self-registration form
BlankSubscriptionFormDesc=Dolibarr can provide you a public URL/website to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form may also be automatically provided. BlankSubscriptionFormDesc=Dolibarr can provide you a public URL/website to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form may also be automatically provided.
EnablePublicSubscriptionForm=Enable the public website with self-subscription form EnablePublicSubscriptionForm=Enable the public website with self-subscription form
ForceMemberType=Force the member type ForceMemberType=Force the member type
ExportDataset_member_1=Members and subscriptions ExportDataset_member_1=Members and contributions
ImportDataset_member_1=Members ImportDataset_member_1=Members
LastMembersModified=Latest %s modified members LastMembersModified=Latest %s modified members
LastSubscriptionsModified=Latest %s modified subscriptions LastSubscriptionsModified=Latest %s modified contributions
String=String String=String
Text=Text Text=Text
Int=Int Int=Int
DateAndTime=Date and time DateAndTime=Date and time
PublicMemberCard=Member public card PublicMemberCard=Member public card
SubscriptionNotRecorded=Subscription not recorded SubscriptionNotRecorded=Contribution not recorded
AddSubscription=Create subscription AddSubscription=Create contribution
ShowSubscription=Show subscription ShowSubscription=Show contribution
# Label of email templates # Label of email templates
SendingAnEMailToMember=Sending information email to member SendingAnEMailToMember=Sending information email to member
SendingEmailOnAutoSubscription=Sending email on auto registration SendingEmailOnAutoSubscription=Sending email on auto registration
SendingEmailOnMemberValidation=Sending email on new member validation SendingEmailOnMemberValidation=Sending email on new member validation
SendingEmailOnNewSubscription=Sending email on new subscription SendingEmailOnNewSubscription=Sending email on new contribution
SendingReminderForExpiredSubscription=Sending reminder for expired subscriptions SendingReminderForExpiredSubscription=Sending reminder for expired contributions
SendingEmailOnCancelation=Sending email on cancelation SendingEmailOnCancelation=Sending email on cancelation
SendingReminderActionComm=Sending reminder for agenda event SendingReminderActionComm=Sending reminder for agenda event
# Topic of email templates # Topic of email templates
YourMembershipRequestWasReceived=Your membership was received. YourMembershipRequestWasReceived=Your membership was received.
YourMembershipWasValidated=Your membership was validated YourMembershipWasValidated=Your membership was validated
YourSubscriptionWasRecorded=Your new subscription was recorded YourSubscriptionWasRecorded=Your new contribution was recorded
SubscriptionReminderEmail=Subscription reminder SubscriptionReminderEmail=contribution reminder
YourMembershipWasCanceled=Your membership was canceled YourMembershipWasCanceled=Your membership was canceled
CardContent=Content of your member card CardContent=Content of your member card
# Text of email templates # Text of email templates
@ -139,10 +140,10 @@ ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subsc
ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.<br><br> ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.<br><br>
DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest
DescADHERENT_AUTOREGISTER_NOTIF_MAIL=Content of the notification email received in case of auto-inscription of a guest DescADHERENT_AUTOREGISTER_NOTIF_MAIL=Content of the notification email received in case of auto-inscription of a guest
DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Email template to use to send email to a member on member autosubscription DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Email template to use to send email to a member on member auto-registration
DescADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION=Email template to use to send email to a member on member validation DescADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION=Email template to use to send email to a member on member validation
DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Email template to use to send email to a member on new subscription recording DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Email template to use to send email to a member on new contribution recording
DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Email template to use to send email reminder when subscription is about to expire DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Email template to use to send email reminder when contribution is about to expire
DescADHERENT_EMAIL_TEMPLATE_CANCELATION=Email template to use to send email to a member on member cancelation DescADHERENT_EMAIL_TEMPLATE_CANCELATION=Email template to use to send email to a member on member cancelation
DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Email template to use to send email to a member on member exclusion DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Email template to use to send email to a member on member exclusion
DescADHERENT_MAIL_FROM=Sender Email for automatic emails DescADHERENT_MAIL_FROM=Sender Email for automatic emails
@ -156,9 +157,9 @@ DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards
ShowTypeCard=Show type '%s' ShowTypeCard=Show type '%s'
HTPasswordExport=htpassword file generation HTPasswordExport=htpassword file generation
NoThirdPartyAssociatedToMember=No third party associated with this member NoThirdPartyAssociatedToMember=No third party associated with this member
MembersAndSubscriptions= Members and Subscriptions MembersAndSubscriptions=Members and Contributions
MoreActions=Complementary action on recording MoreActions=Complementary action on recording
MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription MoreActionsOnSubscription=Complementary action, suggested by default when recording a contribution
MoreActionBankDirect=Create a direct entry on bank account MoreActionBankDirect=Create a direct entry on bank account
MoreActionBankViaInvoice=Create an invoice, and a payment on bank account MoreActionBankViaInvoice=Create an invoice, and a payment on bank account
MoreActionInvoiceOnly=Create an invoice with no payment MoreActionInvoiceOnly=Create an invoice with no payment
@ -167,9 +168,9 @@ LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with busin
DocForAllMembersCards=Generate business cards for all members DocForAllMembersCards=Generate business cards for all members
DocForOneMemberCards=Generate business cards for a particular member DocForOneMemberCards=Generate business cards for a particular member
DocForLabels=Generate address sheets DocForLabels=Generate address sheets
SubscriptionPayment=Subscription payment SubscriptionPayment=Contribution payment
LastSubscriptionDate=Date of latest subscription payment LastSubscriptionDate=Date of latest contribution payment
LastSubscriptionAmount=Amount of latest subscription LastSubscriptionAmount=Amount of latest contribution
LastMemberType=Last Member type LastMemberType=Last Member type
MembersStatisticsByCountries=Members statistics by country MembersStatisticsByCountries=Members statistics by country
MembersStatisticsByState=Members statistics by state/province MembersStatisticsByState=Members statistics by state/province
@ -186,32 +187,34 @@ MembersByRegion=This screen show you statistics of members by region.
MembersStatisticsDesc=Choose statistics you want to read... MembersStatisticsDesc=Choose statistics you want to read...
MenuMembersStats=Statistics MenuMembersStats=Statistics
LastMemberDate=Latest membership date LastMemberDate=Latest membership date
LatestSubscriptionDate=Latest subscription date LatestSubscriptionDate=Latest contribution date
MemberNature=Nature of the member MemberNature=Nature of the member
MembersNature=Nature of the members MembersNature=Nature of the members
Public=Information is public Public=Information is public
NewMemberbyWeb=New member added. Awaiting approval NewMemberbyWeb=New member added. Awaiting approval
NewMemberForm=New member form NewMemberForm=New member form
SubscriptionsStatistics=Subscriptions statistics SubscriptionsStatistics=Contributions statistics
NbOfSubscriptions=Number of subscriptions NbOfSubscriptions=Number of contributions
AmountOfSubscriptions=Amount collected from subscriptions AmountOfSubscriptions=Amount collected from contributions
TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation)
DefaultAmount=Default amount of subscription DefaultAmount=Default amount of contribution
CanEditAmount=Visitor can choose/edit amount of its subscription CanEditAmount=Visitor can choose/edit amount of its contribution
MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page
ByProperties=By nature ByProperties=By nature
MembersStatisticsByProperties=Members statistics by nature MembersStatisticsByProperties=Members statistics by nature
VATToUseForSubscriptions=VAT rate to use for subscriptions VATToUseForSubscriptions=VAT rate to use for contributionss
NoVatOnSubscription=No VAT for subscriptions NoVatOnSubscription=No VAT for contributions
ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for contribution line into invoice: %s
NameOrCompany=Name or company NameOrCompany=Name or company
SubscriptionRecorded=Subscription recorded SubscriptionRecorded=Subscription recorded
NoEmailSentToMember=No email sent to member NoEmailSentToMember=No email sent to member
EmailSentToMember=Email sent to member at %s EmailSentToMember=Email sent to member at %s
SendReminderForExpiredSubscriptionTitle=Send reminder by email for expired subscription SendReminderForExpiredSubscriptionTitle=Send reminder by email for expired contributions
SendReminderForExpiredSubscription=Send reminder by email to members when subscription is about to expire (parameter is number of days before end of subscription to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5') SendReminderForExpiredSubscription=Send reminder by email to members when contribution is about to expire (parameter is number of days before end of membership to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5')
MembershipPaid=Membership paid for current period (until %s) MembershipPaid=Membership paid for current period (until %s)
YouMayFindYourInvoiceInThisEmail=You may find your invoice attached to this email YouMayFindYourInvoiceInThisEmail=You may find your invoice attached to this email
XMembersClosed=%s member(s) closed XMembersClosed=%s member(s) closed
XExternalUserCreated=%s external user(s) created XExternalUserCreated=%s external user(s) created
ForceMemberNature=Force member nature (Individual or Corporation) ForceMemberNature=Force member nature (Individual or Corporation)
CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves.
CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution.

View File

@ -461,7 +461,7 @@ llxHeader("", $title, $help_url);
$titleboth = $langs->trans("LeadsOrProjects"); $titleboth = $langs->trans("LeadsOrProjects");
$titlenew = $langs->trans("NewLeadOrProject"); // Leads and opportunities by default $titlenew = $langs->trans("NewLeadOrProject"); // Leads and opportunities by default
if ($conf->global->PROJECT_USE_OPPORTUNITIES == 0) { if (empty($conf->global->PROJECT_USE_OPPORTUNITIES)) {
$titleboth = $langs->trans("Projects"); $titleboth = $langs->trans("Projects");
$titlenew = $langs->trans("NewProject"); $titlenew = $langs->trans("NewProject");
} }
@ -564,9 +564,9 @@ if ($action == 'create' && $user->rights->projet->creer) {
print '<br>'; print '<br>';
} }
if (!empty($conf->eventorganization->enabled)) { if (!empty($conf->eventorganization->enabled)) {
print '<input type="checkbox" name="usage_organize_event"'.(GETPOST('usage_organize_event', 'alpha')!=''?' checked="checked"':'').'"> '; print '<input type="checkbox" id="usage_organize_event" name="usage_organize_event"'.(GETPOST('usage_organize_event', 'alpha')!=''?' checked="checked"':'').'"> ';
$htmltext = $langs->trans("EventOrganizationDescriptionLong"); $htmltext = $langs->trans("EventOrganizationDescriptionLong");
print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext); print '<label for="usage_organize_event">'.$form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext).'</label>';
} }
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
@ -821,7 +821,7 @@ if ($action == 'create' && $user->rights->projet->creer) {
if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) {
print '<input type="checkbox" id="usage_opportunity" name="usage_opportunity"'.(GETPOSTISSET('usage_opportunity') ? (GETPOST('usage_opportunity', 'alpha') != '' ? ' checked="checked"' : '') : ($object->usage_opportunity ? ' checked="checked"' : '')).'"> '; print '<input type="checkbox" id="usage_opportunity" name="usage_opportunity"'.(GETPOSTISSET('usage_opportunity') ? (GETPOST('usage_opportunity', 'alpha') != '' ? ' checked="checked"' : '') : ($object->usage_opportunity ? ' checked="checked"' : '')).'"> ';
$htmltext = $langs->trans("ProjectFollowOpportunity"); $htmltext = $langs->trans("ProjectFollowOpportunity");
print $form->textwithpicto($langs->trans("ProjectFollowOpportunity"), $htmltext); print '<label for="usage_opportunity">'.$form->textwithpicto($langs->trans("ProjectFollowOpportunity"), $htmltext).'</label>';
print '<script>'; print '<script>';
print '$( document ).ready(function() { print '$( document ).ready(function() {
jQuery("#usage_opportunity").change(function() { jQuery("#usage_opportunity").change(function() {
@ -838,21 +838,21 @@ if ($action == 'create' && $user->rights->projet->creer) {
print '<br>'; print '<br>';
} }
if (empty($conf->global->PROJECT_HIDE_TASKS)) { if (empty($conf->global->PROJECT_HIDE_TASKS)) {
print '<input type="checkbox" name="usage_task"' . (GETPOSTISSET('usage_task') ? (GETPOST('usage_task', 'alpha') != '' ? ' checked="checked"' : '') : ($object->usage_task ? ' checked="checked"' : '')) . '"> '; print '<input type="checkbox" id="usage_task" name="usage_task"' . (GETPOSTISSET('usage_task') ? (GETPOST('usage_task', 'alpha') != '' ? ' checked="checked"' : '') : ($object->usage_task ? ' checked="checked"' : '')) . '"> ';
$htmltext = $langs->trans("ProjectFollowTasks"); $htmltext = $langs->trans("ProjectFollowTasks");
print $form->textwithpicto($langs->trans("ProjectFollowTasks"), $htmltext); print '<label for="usage_task">'.$form->textwithpicto($langs->trans("ProjectFollowTasks"), $htmltext).'</label>';
print '<br>'; print '<br>';
} }
if (empty($conf->global->PROJECT_HIDE_TASKS) && !empty($conf->global->PROJECT_BILL_TIME_SPENT)) { if (empty($conf->global->PROJECT_HIDE_TASKS) && !empty($conf->global->PROJECT_BILL_TIME_SPENT)) {
print '<input type="checkbox" name="usage_bill_time"' . (GETPOSTISSET('usage_bill_time') ? (GETPOST('usage_bill_time', 'alpha') != '' ? ' checked="checked"' : '') : ($object->usage_bill_time ? ' checked="checked"' : '')) . '"> '; print '<input type="checkbox" id="usage_bill_time" name="usage_bill_time"' . (GETPOSTISSET('usage_bill_time') ? (GETPOST('usage_bill_time', 'alpha') != '' ? ' checked="checked"' : '') : ($object->usage_bill_time ? ' checked="checked"' : '')) . '"> ';
$htmltext = $langs->trans("ProjectBillTimeDescription"); $htmltext = $langs->trans("ProjectBillTimeDescription");
print $form->textwithpicto($langs->trans("BillTime"), $htmltext); print '<label for="usage_bill_time">'.$form->textwithpicto($langs->trans("BillTime"), $htmltext).'</label>';
print '<br>'; print '<br>';
} }
if (!empty($conf->eventorganization->enabled)) { if (!empty($conf->eventorganization->enabled)) {
print '<input type="checkbox" name="usage_organize_event"'. (GETPOSTISSET('usage_organize_event') ? (GETPOST('usage_organize_event', 'alpha') != '' ? ' checked="checked"' : '') : ($object->usage_organize_event ? ' checked="checked"' : '')) . '"> '; print '<input type="checkbox" id="usage_organize_event" name="usage_organize_event"'. (GETPOSTISSET('usage_organize_event') ? (GETPOST('usage_organize_event', 'alpha') != '' ? ' checked="checked"' : '') : ($object->usage_organize_event ? ' checked="checked"' : '')) . '"> ';
$htmltext = $langs->trans("EventOrganizationDescriptionLong"); $htmltext = $langs->trans("EventOrganizationDescriptionLong");
print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext); print '<label for="usage_organize_event">'.$form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext).'</label>';
} }
print '</td></tr>'; print '</td></tr>';
} }

View File

@ -16,9 +16,9 @@
*/ */
/** /**
* \file htdocs/public/members/new.php * \file htdocs/public/eventorganization/attendee_subscription.php
* \ingroup member * \ingroup project
* \brief Example of form to add a new member * \brief Example of form to subscribe to an event
* *
* Note that you can add following constant to change behaviour of page * Note that you can add following constant to change behaviour of page
* MEMBER_NEWFORM_AMOUNT Default amount for auto-subscribe form * MEMBER_NEWFORM_AMOUNT Default amount for auto-subscribe form
@ -79,12 +79,13 @@ $email = GETPOST("email");
$societe = GETPOST("societe"); $societe = GETPOST("societe");
// Getting id from Post and decoding it // Getting id from Post and decoding it
$id = GETPOST('id'); $id = GETPOST('id', 'int');
$conference = new ConferenceOrBooth($db); $conference = new ConferenceOrBooth($db);
$resultconf = $conference->fetch($id); $resultconf = $conference->fetch($id);
if ($resultconf < 0) { if ($resultconf < 0) {
setEventMessages(null, $conference->errors, "errors"); print 'Bad value for parameter id';
exit;
} }
$project = new Project($db); $project = new Project($db);
@ -196,7 +197,7 @@ function llxFooterVierge()
/* /*
* Actions * Actions
*/ */
global $mysoc;
$parameters = array(); $parameters = array();
// Note that $action and $object may have been modified by some hooks // Note that $action and $object may have been modified by some hooks
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action);
@ -205,7 +206,7 @@ if ($reshook < 0) {
} }
// Action called when page is submitted // Action called when page is submitted
if (empty($reshook) && $action == 'add' && $conference->status==2) { if (empty($reshook) && $action == 'add' && $conference->status == 2) {
$error = 0; $error = 0;
$urlback = ''; $urlback = '';
@ -460,7 +461,7 @@ $formcompany = new FormCompany($db);
llxHeaderVierge($langs->trans("NewSubscription")); llxHeaderVierge($langs->trans("NewSubscription"));
print '<br>';
print load_fiche_titre($langs->trans("NewSubscription"), '', '', 0, 0, 'center'); print load_fiche_titre($langs->trans("NewSubscription"), '', '', 0, 0, 'center');
@ -473,6 +474,9 @@ print $langs->trans("EvntOrgWelcomeMessage", $conference->label);
print '<br>'; print '<br>';
print $langs->trans("EvntOrgDuration", dol_print_date($conference->datep), dol_print_date($conference->datef)); print $langs->trans("EvntOrgDuration", dol_print_date($conference->datep), dol_print_date($conference->datef));
print '</div>'; print '</div>';
print '<br>';
dol_htmloutput_errors($errmsg); dol_htmloutput_errors($errmsg);
if ($conference->status!=2) { if ($conference->status!=2) {

View File

@ -195,7 +195,7 @@ if (!empty($conf->global->PROJECT_IMAGE_PUBLIC_ORGANIZEDEVENT)) {
print '<table id="dolpaymenttable" summary="Payment form" class="center">'."\n"; print '<table id="dolpaymenttable" summary="Payment form" class="center">'."\n";
$text = '<tr><td class="textpublicpayment"><br><strong>'.$langs->trans("EvntOrgRegistrationWelcomeMessage").'</strong></td></tr>'."\n"; $text = '<tr><td class="textpublicpayment"><br><strong>'.$langs->trans("EvntOrgRegistrationWelcomeMessage").'</strong></td></tr>'."\n";
$text .= '<tr><td class="textpublicpayment">'.$langs->trans("EvntOrgRegistrationHelpMessage").' '.$id.'.<br><br></td></tr>'."\n"; $text .= '<tr><td class="textpublicpayment">'.$langs->trans("EvntOrgRegistrationHelpMessage").' '.$project->title.'.<br><br></td></tr>'."\n";
$text .= '<tr><td class="textpublicpayment">'.$project->note_public.'<br><br></td></tr>'."\n"; $text .= '<tr><td class="textpublicpayment">'.$project->note_public.'<br><br></td></tr>'."\n";
print $text; print $text;

View File

@ -2602,7 +2602,7 @@ if (!GETPOST('hide_websitemenu')) {
print $langs->trans("Website").' : '; print $langs->trans("Website").' : ';
print '</span>'; print '</span>';
$urltocreatenewwebsite = $_SERVER["PHP_SEFL"].'?action=createsite'; $urltocreatenewwebsite = $_SERVER["PHP_SELF"].'?action=createsite';
if (empty($conf->use_javascript_ajax)) { if (empty($conf->use_javascript_ajax)) {
print '<span class="websiteselection hideonsmartphoneimp">'; print '<span class="websiteselection hideonsmartphoneimp">';
print '<a href="'.$urltocreatenewwebsite.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("AddWebsite")).'"><span class="fa fa-plus-circle valignmiddle btnTitle-icon"><span></a>'; print '<a href="'.$urltocreatenewwebsite.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("AddWebsite")).'"><span class="fa fa-plus-circle valignmiddle btnTitle-icon"><span></a>';
@ -2652,7 +2652,7 @@ if (!GETPOST('hide_websitemenu')) {
$out .= ' if (jQuery("#website option:selected").val() == \'-2\') {'; $out .= ' if (jQuery("#website option:selected").val() == \'-2\') {';
$out .= ' window.location.href = "'.dol_escape_js($urltocreatenewwebsite).'";'; $out .= ' window.location.href = "'.dol_escape_js($urltocreatenewwebsite).'";';
$out .= ' } else {'; $out .= ' } else {';
$out .= ' window.location.href = "'.$_SERVER["PHP_SEFL"].'?website="+jQuery("#website option:selected").val();'; $out .= ' window.location.href = "'.$_SERVER["PHP_SELF"].'?website="+jQuery("#website option:selected").val();';
$out .= ' }'; $out .= ' }';
$out .= ' });'; $out .= ' });';
$out .= '});'; $out .= '});';
@ -2691,16 +2691,16 @@ if (!GETPOST('hide_websitemenu')) {
print '<input type="submit" class="buttonDelete bordertransp" name="deletesite" value="'.$langs->trans("Delete").'"'.($atleastonepage ? ' disabled="disabled"' : '').'>'; print '<input type="submit" class="buttonDelete bordertransp" name="deletesite" value="'.$langs->trans("Delete").'"'.($atleastonepage ? ' disabled="disabled"' : '').'>';
// Regenerate all pages // Regenerate all pages
print '<a href="'.$_SERVER["PHP_SEFL"].'?action=regeneratesite&website='.$website->ref.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("RegenerateWebsiteContent")).'"><span class="fa fa-cogs"><span></a>'; print '<a href="'.$_SERVER["PHP_SELF"].'?action=regeneratesite&website='.$website->ref.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("RegenerateWebsiteContent")).'"><span class="fa fa-cogs"><span></a>';
print ' &nbsp; '; print ' &nbsp; ';
// Generate site map // Generate site map
print '<a href="'.$_SERVER["PHP_SEFL"].'?action=confirmgeneratesitemaps&website='.$website->ref.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("GenerateSitemaps")).'"><span class="fa fa-sitemap"><span></a>'; print '<a href="'.$_SERVER["PHP_SELF"].'?action=confirmgeneratesitemaps&website='.$website->ref.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("GenerateSitemaps")).'"><span class="fa fa-sitemap"><span></a>';
print ' &nbsp; '; print ' &nbsp; ';
print '<a href="'.$_SERVER["PHP_SEFL"].'?action=replacesite&website='.$website->ref.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("ReplaceWebsiteContent")).'"><span class="fa fa-search"><span></a>'; print '<a href="'.$_SERVER["PHP_SELF"].'?action=replacesite&website='.$website->ref.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("ReplaceWebsiteContent")).'"><span class="fa fa-search"><span></a>';
} }
print '</span>'; print '</span>';
@ -2811,7 +2811,7 @@ if (!GETPOST('hide_websitemenu')) {
print '</span>'; print '</span>';
print '<span class="websiteselection hideonsmartphoneimp">'; print '<span class="websiteselection hideonsmartphoneimp">';
print '<a href="'.$_SERVER["PHP_SEFL"].'?action=createcontainer&website='.$website->ref.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("AddPage")).'"><span class="fa fa-plus-circle valignmiddle btnTitle-icon"><span></a>'; print '<a href="'.$_SERVER["PHP_SELF"].'?action=createcontainer&website='.$website->ref.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("AddPage")).'"><span class="fa fa-plus-circle valignmiddle btnTitle-icon"><span></a>';
print '</span>'; print '</span>';
//print '<span class="websiteselection">'; //print '<span class="websiteselection">';
@ -2826,7 +2826,7 @@ if (!GETPOST('hide_websitemenu')) {
$out .= $s; $out .= $s;
$out .= '</span>'; $out .= '</span>';
$urltocreatenewpage = $_SERVER["PHP_SEFL"].'?action=createcontainer&website='.$website->ref; $urltocreatenewpage = $_SERVER["PHP_SELF"].'?action=createcontainer&website='.$website->ref;
if (!empty($conf->use_javascript_ajax)) { if (!empty($conf->use_javascript_ajax)) {
$out .= '<script language="javascript">'; $out .= '<script language="javascript">';
@ -2836,7 +2836,7 @@ if (!GETPOST('hide_websitemenu')) {
$out .= ' if (jQuery("#pgeid option:selected").val() == \'-2\') {'; $out .= ' if (jQuery("#pgeid option:selected").val() == \'-2\') {';
$out .= ' window.location.href = "'.$urltocreatenewpage.'";'; $out .= ' window.location.href = "'.$urltocreatenewpage.'";';
$out .= ' } else {'; $out .= ' } else {';
$out .= ' window.location.href = "'.$_SERVER["PHP_SEFL"].'?website='.$website->ref.'&pageid="+jQuery("#pageid option:selected").val();'; $out .= ' window.location.href = "'.$_SERVER["PHP_SELF"].'?website='.$website->ref.'&pageid="+jQuery("#pageid option:selected").val();';
$out .= ' }'; $out .= ' }';
$out .= ' });'; $out .= ' });';
$out .= '});'; $out .= '});';
@ -3062,7 +3062,7 @@ if (!GETPOST('hide_websitemenu')) {
} else { } else {
//$disabled=''; //$disabled='';
//print '<input type="submit" class="button bordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("SetAsHomePage")).'" name="setashome">'; //print '<input type="submit" class="button bordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("SetAsHomePage")).'" name="setashome">';
print '<a href="'.$_SERVER["PHP_SEFL"].'?action=setashome&token='.newToken().'&website='.$website->ref.'&pageid='.$pageid.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("SetAsHomePage")).'"><span class="fa fa-home valignmiddle btnTitle-icon"><span></a>'; print '<a href="'.$_SERVER["PHP_SELF"].'?action=setashome&token='.newToken().'&website='.$website->ref.'&pageid='.$pageid.'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("SetAsHomePage")).'"><span class="fa fa-home valignmiddle btnTitle-icon"><span></a>';
} }
print '<input type="submit" class="button bordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("ClonePage")).'" name="createpagefromclone">'; print '<input type="submit" class="button bordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("ClonePage")).'" name="createpagefromclone">';
print '<input type="submit" class="buttonDelete bordertransp" name="delete" value="'.$langs->trans("Delete").'"'.($atleastonepage ? '' : ' disabled="disabled"').'>'; print '<input type="submit" class="buttonDelete bordertransp" name="delete" value="'.$langs->trans("Delete").'"'.($atleastonepage ? '' : ' disabled="disabled"').'>';