Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into NEW---Shipping-address-to-invoice

This commit is contained in:
Anthony Berton 2022-11-21 08:26:24 +01:00
commit cb20ac6567
39 changed files with 954 additions and 2803 deletions

View File

@ -9,9 +9,8 @@ For users:
--------------- ---------------
NEW: Minimal PHP version is now PHP 7.0 instead of PHP 5.6 NEW: Minimal PHP version is now PHP 7.0 instead of PHP 5.6
NEW: #21750 Added "Get lines and Post lines from BOM" at the REST Service
NEW: #21780 Add pid field to Cronjob class and store PID on job execution NEW: #21780 Add pid field to Cronjob class and store PID on job execution
NEW: #19680 Add option PRODUCT_ALLOW_EXTERNAL_DOWNLOAD NEW: #19680 Add option PRODUCT_ALLOW_EXTERNAL_DOWNLOAD to automatically have uploaded files shared publicly by a link
NEW: #20650 can move the checkbox column on left (experimental option) NEW: #20650 can move the checkbox column on left (experimental option)
NEW: #21000 Added columns 'alias_name' on poject, supplier invoice, supplier order, supplier proposals and taks list NEW: #21000 Added columns 'alias_name' on poject, supplier invoice, supplier order, supplier proposals and taks list
NEW: #21395 Added option for dark theme mode in display - color and theme NEW: #21395 Added option for dark theme mode in display - color and theme
@ -19,11 +18,9 @@ NEW: #21397 added option to auto define barcode numbers for third-parties in bar
NEW: #21399 NEW: #21399
NEW: #21442 Enhancement of module builder init NEW: #21442 Enhancement of module builder init
NEW: #21654 add bank account number used on invoices for debit NEW: #21654 add bank account number used on invoices for debit
NEW: #21775 Template 03 manages send mails
NEW: #22048 Added notes to productlot module NEW: #22048 Added notes to productlot module
NEW: #22298 Bank - Add salaries & vat in tab planned entries NEW: #22298 Bank - Add salaries & vat in the tab of planned entries of a bank account
NEW: #22328 NEW: #22328
NEW: #22370 Modulebuilder supports 'alwayseditable' (like extrafields)
NEW: #22424 NEW: #22424
NEW: #22500 member module set up made easier NEW: #22500 member module set up made easier
NEW: #22527 projects and thirdparties can be viewed as conversation ("Message" view), like events/agenda. NEW: #22527 projects and thirdparties can be viewed as conversation ("Message" view), like events/agenda.
@ -57,7 +54,6 @@ NEW: Add hidden option MAIN_EMAIL_SUPPORT_ACK to restore Email ack checkbox (fea
NEW: Add IMAP port setting on email collector module NEW: Add IMAP port setting on email collector module
NEW: Adding JAPAN Chart-of-Account and regions/departments NEW: Adding JAPAN Chart-of-Account and regions/departments
NEW: Adding NIF verification for Algeria NEW: Adding NIF verification for Algeria
NEW: Add 4 other templates in website module
NEW: Add link to create an element from the category page NEW: Add link to create an element from the category page
NEW: add margin infos to takepos invoice lines NEW: add margin infos to takepos invoice lines
NEW: Add max size send for "backup and link to mail" option NEW: Add max size send for "backup and link to mail" option
@ -98,6 +94,7 @@ NEW: Website Can remove a website template
NEW: Website can set header "Strict-Transport-Security" in web sites. NEW: Website can set header "Strict-Transport-Security" in web sites.
NEW: Website Can switch status of website and page from the website toolbar NEW: Website Can switch status of website and page from the website toolbar
NEW: Website Templates of websites are now directories and not zip into core repo NEW: Website Templates of websites are now directories and not zip into core repo
NEW: Website Add 4 other templates in website module
NEW: Can use products categories to make inventory NEW: Can use products categories to make inventory
NEW: Change filter type on tickets list into a multiselect combo NEW: Change filter type on tickets list into a multiselect combo
NEW: conf TIMESPENT_ALWAYS_UPDATE_THM, when it's on we always check current thm of user to update it in task time line NEW: conf TIMESPENT_ALWAYS_UPDATE_THM, when it's on we always check current thm of user to update it in task time line
@ -129,7 +126,6 @@ NEW: manage no email with thirdparties (better for GDPR)
NEW: Manage Position (Rank) on Contract Lines NEW: Manage Position (Rank) on Contract Lines
NEW: Manage VAT on all lines on purchases cycle NEW: Manage VAT on all lines on purchases cycle
NEW: manage virtual stock at a future date NEW: manage virtual stock at a future date
NEW: ModuleBuilder can generate code of class from an existing SQL table
NEW: On a bank reconciled line, we can modify the bank receipt NEW: On a bank reconciled line, we can modify the bank receipt
NEW: On a form to send an email, we show all emails of all contacts of object NEW: On a form to send an email, we show all emails of all contacts of object
NEW: Option PRODUCTBATCH_SHOW_WAREHOUSE_ON_SHIPMENT showing wh on PDF NEW: Option PRODUCTBATCH_SHOW_WAREHOUSE_ON_SHIPMENT showing wh on PDF
@ -163,7 +159,6 @@ NEW: SMTP using oauth2 authentication
NEW: can substitue project title in mail template NEW: can substitue project title in mail template
NEW: Supplier order list - Add column private and public note NEW: Supplier order list - Add column private and public note
NEW: Support IP type in extrafields NEW: Support IP type in extrafields
NEW: support multilang in Civilities API
NEW: Table of membership types NEW: Table of membership types
NEW: The purge of files can purge only if older than a number of seconds NEW: The purge of files can purge only if older than a number of seconds
NEW: Update ActionComm type_code on email message ticket NEW: Update ActionComm type_code on email message ticket
@ -174,8 +169,11 @@ NEW: expand/collapse permissions on user permission page
For developers or integrators: For developers or integrators:
------------------------------ ------------------------------
NEW: ModuleBuilder can generate code of class from an existing SQL table
NEW: #22370 Modulebuilder supports 'alwayseditable' (like extrafields)
NEW: #20912 Add trigger to record the event of sending an email from a project NEW: #20912 Add trigger to record the event of sending an email from a project
NEW: Removed completely the need for library adodbtime NEW: #21750 Added "Get lines and Post lines from BOM" at the REST Service
NEW: Removed completely the need for the library adodbtime
NEW: hook on agenda pages NEW: hook on agenda pages
NEW: hook to complete payment in TakePOS NEW: hook to complete payment in TakePOS
NEW: hook "changeHelpURL" to modify target of the help button NEW: hook "changeHelpURL" to modify target of the help button
@ -186,6 +184,7 @@ NEW: Add new hooks for actioncomm
NEW: conf->global->SYSLOG_FILE_ONEPERSESSION accept a string NEW: conf->global->SYSLOG_FILE_ONEPERSESSION accept a string
NEW: translate for contact type API, setup/ticket API, shipping method API NEW: translate for contact type API, setup/ticket API, shipping method API
NEW: All ajax pages have now a top_httphead() NEW: All ajax pages have now a top_httphead()
NEW: support multilang in Civilities API
NEW: Add API for the partnership module NEW: Add API for the partnership module
NEW: Add "Get lines and Post lines from BOM" in the API NEW: Add "Get lines and Post lines from BOM" in the API
NEW: Replace fk_categories_product with categories_product in inventory NEW: Replace fk_categories_product with categories_product in inventory

View File

@ -53,12 +53,6 @@ if ($action == 'set') {
$error++; $error++;
} }
if (!$error && $gimcdf && !file_exists($gimcdf)) {
setEventMessages($langs->trans("ErrorFileNotFound", $gimcdf), null, 'errors');
$error++;
}
if (!$error) {
$res1 = dolibarr_set_const($db, "GEOIP_VERSION", GETPOST('geoipversion', 'aZ09'), 'chaine', 0, '', $conf->entity); $res1 = dolibarr_set_const($db, "GEOIP_VERSION", GETPOST('geoipversion', 'aZ09'), 'chaine', 0, '', $conf->entity);
if (!($res1 > 0)) { if (!($res1 > 0)) {
$error++; $error++;
@ -72,8 +66,7 @@ if ($action == 'set') {
if (!$error) { if (!$error) {
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
} else { } else {
setEventMessages($langs->trans("Error"), null, 'errors'); //setEventMessages($langs->trans("Error"), null, 'errors');
}
} }
} }
@ -112,8 +105,8 @@ print '<td class="right"><input type="submit" class="button button-edit" value="
print "</tr>\n"; print "</tr>\n";
// Lib version // Lib version
print '<tr class="oddeven"><td width="50%">'.$langs->trans("GeoIPLibVersion").'</td>'; print '<tr class="oddeven"><td>'.$langs->trans("GeoIPLibVersion").'</td>';
print '<td colspan="2">'; print '<td>';
$arrayofvalues = array('php' => 'Native PHP functions', '1' => 'Embedded GeoIP v1', '2' => 'Embedded GeoIP v2'); $arrayofvalues = array('php' => 'Native PHP functions', '1' => 'Embedded GeoIP v1', '2' => 'Embedded GeoIP v2');
print $form->selectarray('geoipversion', $arrayofvalues, (isset($conf->global->GEOIP_VERSION) ? $conf->global->GEOIP_VERSION : '2')); print $form->selectarray('geoipversion', $arrayofvalues, (isset($conf->global->GEOIP_VERSION) ? $conf->global->GEOIP_VERSION : '2'));
if ($conf->global->GEOIP_VERSION == 'php') { if ($conf->global->GEOIP_VERSION == 'php') {
@ -124,16 +117,29 @@ if ($conf->global->GEOIP_VERSION == 'php') {
print '<br>'.$langs->trans("Version").': '.$version; print '<br>'.$langs->trans("Version").': '.$version;
} }
} }
print '</td>';
print '<td>';
print '</td></tr>'; print '</td></tr>';
$gimcdf = getDolGlobalString('GEOIPMAXMIND_COUNTRY_DATAFILE');
// Path to database file // Path to database file
print '<tr class="oddeven"><td>'.$langs->trans("PathToGeoIPMaxmindCountryDataFile").'</td>'; print '<tr class="oddeven"><td>'.$langs->trans("PathToGeoIPMaxmindCountryDataFile").'</td>';
print '<td colspan="2">'; print '<td>';
if ($conf->global->GEOIP_VERSION == 'php') { if ($conf->global->GEOIP_VERSION == 'php') {
print 'Using geoip PHP internal functions. Value must be '.geoip_db_filename(GEOIP_COUNTRY_EDITION).' or '.geoip_db_filename(GEOIP_CITY_EDITION_REV1).' or /pathtodatafile/GeoLite2-Country.mmdb<br>'; print 'Using geoip PHP internal functions. Value must be '.geoip_db_filename(GEOIP_COUNTRY_EDITION).' or '.geoip_db_filename(GEOIP_CITY_EDITION_REV1).' or /pathtodatafile/GeoLite2-Country.mmdb<br>';
} }
print '<input type="text" class="minwidth200" name="GEOIPMAXMIND_COUNTRY_DATAFILE" value="'.dol_escape_htmltag($conf->global->GEOIPMAXMIND_COUNTRY_DATAFILE).'">'; print '<input type="text" class="minwidth200" name="GEOIPMAXMIND_COUNTRY_DATAFILE" value="'.dol_escape_htmltag(getDolGlobalString('GEOIPMAXMIND_COUNTRY_DATAFILE')).'">';
if (!file_exists($gimcdf)) {
print '<div class="error">'.$langs->trans("ErrorFileNotFound", $gimcdf).'</div>';
}
print '</td><td>';
print '<span class="opacitymedium">';
print $langs->trans("Example").'<br>';
print '/usr/local/share/GeoIP/GeoIP.dat<br>
/usr/share/GeoIP/GeoIP.dat<br>
/usr/share/GeoIP/GeoLite2-Country.mmdb';
print '</span>';
print '</td></tr>'; print '</td></tr>';
print '</table>'; print '</table>';
@ -145,12 +151,16 @@ print '<br>';
print $langs->trans("NoteOnPathLocation").'<br>'; print $langs->trans("NoteOnPathLocation").'<br>';
$url1 = 'http://www.maxmind.com/en/city?rId=awstats'; $url1 = 'http://www.maxmind.com/en/city?rId=awstats';
print $langs->trans("YouCanDownloadFreeDatFileTo", '<a href="'.$url1.'" target="_blank" rel="noopener noreferrer external">'.$url1.'</a>'); $textoshow = $langs->trans("YouCanDownloadFreeDatFileTo", '{s1}');
$textoshow = str_replace('{s1}', '<a href="'.$url1.'" target="_blank" rel="noopener noreferrer external">'.$url1.'</a>', $textoshow);
print $textoshow;
print '<br>'; print '<br>';
$url2 = 'http://www.maxmind.com/en/city?rId=awstats'; $url2 = 'http://www.maxmind.com/en/city?rId=awstats';
print $langs->trans("YouCanDownloadAdvancedDatFileTo", '<a href="'.$url2.'" target="_blank" rel="noopener noreferrer external">'.$url2.'</a>'); $textoshow = $langs->trans("YouCanDownloadAdvancedDatFileTo", '{s1}');
$textoshow = str_replace('{s1}', '<a href="'.$url2.'" target="_blank" rel="noopener noreferrer external">'.$url2.'</a>', $textoshow);
print $textoshow;
if ($geoip) { if ($geoip) {
print '<br><br>'; print '<br><br>';

View File

@ -542,13 +542,13 @@ print '<br>';
print '<strong>MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL</strong> = '.(empty($conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL) ? '<span class="opacitymedium">'.$langs->trans("Undefined").' &nbsp; ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 0)</span>' : $conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL)."<br>"; print '<strong>MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL</strong> = '.(empty($conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL) ? '<span class="opacitymedium">'.$langs->trans("Undefined").' &nbsp; ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 0)</span>' : $conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL)."<br>";
print '<br>'; print '<br>';
print '<strong>MAIN_SECURITY_FORCECSP</strong> = '.(empty($conf->global->MAIN_SECURITY_FORCECSP) ? '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>' : $conf->global->MAIN_SECURITY_FORCECSP).' &nbsp; <span class="opacitymedium">('.$langs->trans("Example").": \"default-src 'self'; img-src *;\")</span><br>"; print '<strong>MAIN_SECURITY_FORCECSP</strong> = '.(empty($conf->global->MAIN_SECURITY_FORCECSP) ? '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>' : $conf->global->MAIN_SECURITY_FORCECSP).' &nbsp; <span class="opacitymedium">('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src 'self'; img-src *;\")</span><br>";
print '<br>'; print '<br>';
print '<strong>MAIN_SECURITY_FORCERP</strong> = '.(empty($conf->global->MAIN_SECURITY_FORCERP) ? '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>' : $conf->global->MAIN_SECURITY_FORCERP).' &nbsp; <span class="opacitymedium">('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"same-origin\")</span><br>"; print '<strong>MAIN_SECURITY_FORCERP</strong> = '.(empty($conf->global->MAIN_SECURITY_FORCERP) ? '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>' : $conf->global->MAIN_SECURITY_FORCERP).' &nbsp; <span class="opacitymedium">('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"same-origin\" so browser doesn't send any referrer when going into another web site domain)</span><br>";
print '<br>'; print '<br>';
print '<strong>WEBSITE_MAIN_SECURITY_FORCECSP</strong> = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCECSP) ? '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>' : $conf->global->WEBSITE_MAIN_SECURITY_FORCECSP).' &nbsp; <span class="opacitymedium">('.$langs->trans("Example").": \"default-src 'self'; style-src: https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src: https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src: *;\")</span><br>"; print '<strong>WEBSITE_MAIN_SECURITY_FORCECSP</strong> = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCECSP) ? '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>' : $conf->global->WEBSITE_MAIN_SECURITY_FORCECSP).' &nbsp; <span class="opacitymedium">('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src 'self'; style-src https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src *;\")</span><br>";
print '<br>'; print '<br>';
print '<strong>WEBSITE_MAIN_SECURITY_FORCERP</strong> = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCERP) ? '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>' : $conf->global->WEBSITE_MAIN_SECURITY_FORCERP).' &nbsp; <span class="opacitymedium">('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"strict-origin-when-cross-origin\")</span><br>"; print '<strong>WEBSITE_MAIN_SECURITY_FORCERP</strong> = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCERP) ? '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>' : $conf->global->WEBSITE_MAIN_SECURITY_FORCERP).' &nbsp; <span class="opacitymedium">('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"strict-origin-when-cross-origin\")</span><br>";

View File

@ -567,16 +567,17 @@ if (isModEnabled('socialnetworks')) {
if ($value['active'] && strlen($search_[$key])) { if ($value['active'] && strlen($search_[$key])) {
$searchkeyinjsonformat = preg_replace('/"$/', '', preg_replace('/^"/', '', json_encode($search_[$key]))); $searchkeyinjsonformat = preg_replace('/"$/', '', preg_replace('/^"/', '', json_encode($search_[$key])));
if (in_array($db->type, array('mysql', 'mysqli'))) { if (in_array($db->type, array('mysql', 'mysqli'))) {
$sql .= " AND p.socialnetworks REGEXP '\"".$db->escapeforlike($db->escape($key))."\":\"[^\"]*".$db->escapeforlike($db->escape($searchkeyinjsonformat))."'"; $sql .= " AND p.socialnetworks REGEXP '\"".$db->escape($db->escapeforlike($key))."\":\"[^\"]*".$db->escape($db->escapeforlike($searchkeyinjsonformat))."'";
} elseif ($db->type == 'pgsql') { } elseif ($db->type == 'pgsql') {
$sql .= " AND p.socialnetworks ~ '\"".$db->escapeforlike($db->escape($key))."\":\"[^\"]*".$db->escapeforlike($db->escape($searchkeyinjsonformat))."'"; $sql .= " AND p.socialnetworks ~ '\"".$db->escape($db->escapeforlike($key))."\":\"[^\"]*".$db->escape($db->escapeforlike($searchkeyinjsonformat))."'";
} else { } else {
// Works with all database but not reliable because search only for social network code starting with earched value // Works with all database but not reliable because search only for social network code starting with earched value
$sql .= " AND p.socialnetworks LIKE '%\"".$db->escapeforlike($db->escape($key))."\":\"".$db->escapeforlike($db->escape($searchkeyinjsonformat))."%'"; $sql .= " AND p.socialnetworks LIKE '%\"".$db->escape($db->escapeforlike($key))."\":\"".$db->escape($db->escapeforlike($searchkeyinjsonformat))."%'";
} }
} }
} }
} }
//print $sql;
if (strlen($search_email)) { if (strlen($search_email)) {
$sql .= natural_search('p.email', $search_email); $sql .= natural_search('p.email', $search_email);
} }

View File

@ -936,7 +936,7 @@ function getSocialNetworkSharingLinks()
* @param string $langcode Language code ('' or 'en', 'fr', 'es', ...) * @param string $langcode Language code ('' or 'en', 'fr', 'es', ...)
* @param array $otherfilters Other filters * @param array $otherfilters Other filters
* @param int $status 0 or 1, or -1 for both * @param int $status 0 or 1, or -1 for both
* @return string HTML content * @return array Array with results of search
*/ */
function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $sortfield = 'date_creation', $sortorder = 'DESC', $langcode = '', $otherfilters = 'null', $status = 1) function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $sortfield = 'date_creation', $sortorder = 'DESC', $langcode = '', $otherfilters = 'null', $status = 1)
{ {
@ -974,6 +974,8 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so
$found = 0; $found = 0;
if (!$error && (empty($max) || ($found < $max)) && (preg_match('/meta/', $algo) || preg_match('/content/', $algo))) { if (!$error && (empty($max) || ($found < $max)) && (preg_match('/meta/', $algo) || preg_match('/content/', $algo))) {
include_once DOL_DOCUMENT_ROOT.'/website/class/websitepage.class.php';
$sql = 'SELECT wp.rowid FROM '.MAIN_DB_PREFIX.'website_page as wp'; $sql = 'SELECT wp.rowid FROM '.MAIN_DB_PREFIX.'website_page as wp';
if (is_array($otherfilters) && !empty($otherfilters['category'])) { if (is_array($otherfilters) && !empty($otherfilters['category'])) {
$sql .= ', '.MAIN_DB_PREFIX.'categorie_website_page as cwp'; $sql .= ', '.MAIN_DB_PREFIX.'categorie_website_page as cwp';
@ -996,11 +998,11 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so
$sql .= " AND ("; $sql .= " AND (";
$searchalgo = ''; $searchalgo = '';
if (preg_match('/meta/', $algo)) { if (preg_match('/meta/', $algo)) {
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.title LIKE '%".$db->escapeforlike($db->escape($searchstring))."%' OR wp.description LIKE '%".$db->escapeforlike($db->escape($searchstring))."%'"; $searchalgo .= ($searchalgo ? ' OR ' : '')."wp.title LIKE '%".$db->escape($db->escapeforlike($searchstring))."%' OR wp.description LIKE '%".$db->escape($db->escapeforlike($searchstring))."%'";
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.keywords LIKE '".$db->escapeforlike($db->escape($searchstring)).",%' OR wp.keywords LIKE '% ".$db->escapeforlike($db->escape($searchstring))."%'"; // TODO Use a better way to scan keywords $searchalgo .= ($searchalgo ? ' OR ' : '')."wp.keywords LIKE '".$db->escape($db->escapeforlike($searchstring)).",%' OR wp.keywords LIKE '% ".$db->escape($db->escapeforlike($searchstring))."%'"; // TODO Use a better way to scan keywords
} }
if (preg_match('/content/', $algo)) { if (preg_match('/content/', $algo)) {
$searchalgo .= ($searchalgo ? ' OR ' : '')."wp.content LIKE '%".$db->escapeforlike($db->escape($searchstring))."%'"; $searchalgo .= ($searchalgo ? ' OR ' : '')."wp.content LIKE '%".$db->escape($db->escapeforlike($searchstring))."%'";
} }
$sql .= $searchalgo; $sql .= $searchalgo;
if (is_array($otherfilters) && !empty($otherfilters['category'])) { if (is_array($otherfilters) && !empty($otherfilters['category'])) {
@ -1012,6 +1014,7 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so
//print $sql; //print $sql;
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) { if ($resql) {
$i = 0; $i = 0;
while (($obj = $db->fetch_object($resql)) && ($i < $max || $max == 0)) { while (($obj = $db->fetch_object($resql)) && ($i < $max || $max == 0)) {

View File

@ -862,8 +862,8 @@ class ImportCsv extends ModeleImports
$stringtosearch = json_encode($socialnetwork).':'.json_encode($json->$socialnetwork); $stringtosearch = json_encode($socialnetwork).':'.json_encode($json->$socialnetwork);
//var_dump($stringtosearch); //var_dump($stringtosearch);
//var_dump($this->db->escape($stringtosearch)); // This provide a value for sql string (but not for a like) //var_dump($this->db->escape($stringtosearch)); // This provide a value for sql string (but not for a like)
$where[] = $key." LIKE '%".$this->db->escapeforlike($this->db->escape($stringtosearch))."%'"; $where[] = $key." LIKE '%".$this->db->escape($this->db->escapeforlike($stringtosearch))."%'";
$filters[] = $col." LIKE '%".$this->db->escapeforlike($this->db->escape($stringtosearch))."%'"; $filters[] = $col." LIKE '%".$this->db->escape($this->db->escapeforlike($stringtosearch))."%'";
//var_dump($where[1]); // This provide a value for sql string inside a like //var_dump($where[1]); // This provide a value for sql string inside a like
} else { } else {
$where[] = $key.' = '.$data[$key]; $where[] = $key.' = '.$data[$key];

View File

@ -908,8 +908,8 @@ class ImportXlsx extends ModeleImports
$stringtosearch = json_encode($socialnetwork).':'.json_encode($json->$socialnetwork); $stringtosearch = json_encode($socialnetwork).':'.json_encode($json->$socialnetwork);
//var_dump($stringtosearch); //var_dump($stringtosearch);
//var_dump($this->db->escape($stringtosearch)); // This provide a value for sql string (but not for a like) //var_dump($this->db->escape($stringtosearch)); // This provide a value for sql string (but not for a like)
$where[] = $key." LIKE '%".$this->db->escapeforlike($this->db->escape($stringtosearch))."%'"; $where[] = $key." LIKE '%".$this->db->escape($this->db->escapeforlike($stringtosearch))."%'";
$filters[] = $col." LIKE '%".$this->db->escapeforlike($this->db->escape($stringtosearch))."%'"; $filters[] = $col." LIKE '%".$this->db->escape($this->db->escapeforlike($stringtosearch))."%'";
//var_dump($where[1]); // This provide a value for sql string inside a like //var_dump($where[1]); // This provide a value for sql string inside a like
} else { } else {
$where[] = $key.' = '.$data[$key]; $where[] = $key.' = '.$data[$key];

View File

@ -1068,6 +1068,7 @@ if ($step == 4 && $datatoimport) {
print '<div id="left" class="connectedSortable">'."\n"; print '<div id="left" class="connectedSortable">'."\n";
// List of source fields // List of source fields
$var = false; $var = false;
$lefti = 1; $lefti = 1;
foreach ($fieldssource as $key => $val) { foreach ($fieldssource as $key => $val) {
@ -1090,6 +1091,7 @@ if ($step == 4 && $datatoimport) {
print '</td><td width="50%" class="nopaddingrightimp">'; print '</td><td width="50%" class="nopaddingrightimp">';
// Set the list of all possible target fields in Dolibarr. // Set the list of all possible target fields in Dolibarr.
$optionsall = array(); $optionsall = array();
foreach ($fieldstarget as $code => $line) { foreach ($fieldstarget as $code => $line) {
//var_dump($line); //var_dump($line);
@ -1141,8 +1143,7 @@ if ($step == 4 && $datatoimport) {
$entityicon = !empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ... $entityicon = !empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ...
$entitylang = $entitytolang[$entity] ? $entitytolang[$entity] : $objimport->array_import_label[0]; // $entitylang must be a translation key to describe object the field is related to, like 'Company', 'Contact', 'MyModyle', ... $entitylang = $entitytolang[$entity] ? $entitytolang[$entity] : $objimport->array_import_label[0]; // $entitylang must be a translation key to describe object the field is related to, like 'Company', 'Contact', 'MyModyle', ...
//print '<td class="nowraponall" style="font-weight: normal">=> '.img_object('', $entityicon).' '.$langs->trans($entitylang).'</td>'; print '<td class="nowraponall hideonsmartphone" style="font-weight: normal">=> </td>';
print '<td class="nowraponall" style="font-weight: normal">=> </td>';
print '<td class="nowraponall" style="font-weight: normal">'; print '<td class="nowraponall" style="font-weight: normal">';
//var_dump($_SESSION['dol_array_match_file_to_database_select']); //var_dump($_SESSION['dol_array_match_file_to_database_select']);
@ -1510,7 +1511,7 @@ if ($step == 4 && $datatoimport) {
print '<tr class="oddeven"><td>'; print '<tr class="oddeven"><td>';
print $obj->label; print $obj->label;
print '</td>'; print '</td>';
print '<td>'; print '<td class="tdoverflowmax150">';
if (empty($obj->fk_user)) { if (empty($obj->fk_user)) {
print $langs->trans("Everybody"); print $langs->trans("Everybody");
} else { } else {
@ -2338,7 +2339,7 @@ $db->close();
*/ */
function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') function show_elem($fieldssource, $pos, $key, $var, $nostyle = '')
{ {
global $langs; global $conf, $langs;
$height = '32px'; $height = '32px';
@ -2384,7 +2385,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '')
if (isset($fieldssource[$pos]['imported']) && $fieldssource[$pos]['imported'] == false) { if (isset($fieldssource[$pos]['imported']) && $fieldssource[$pos]['imported'] == false) {
print '<td class="nowraponall boxtdunused" style="font-weight: normal">'; print '<td class="nowraponall boxtdunused" style="font-weight: normal">';
} else { } else {
print '<td class="nowraponall" style="font-weight: normal">'; print '<td class="nowraponall tdoverflowmax500" style="font-weight: normal">';
} }
print $langs->trans("Column").' '.num2Alpha($pos - 1).' (#'.$pos.')'; print $langs->trans("Column").' '.num2Alpha($pos - 1).' (#'.$pos.')';
if (empty($fieldssource[$pos]['example1'])) { if (empty($fieldssource[$pos]['example1'])) {
@ -2396,7 +2397,12 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '')
if (!utf8_check($example)) { if (!utf8_check($example)) {
$example = utf8_encode($example); $example = utf8_encode($example);
} }
if (!empty($conf->dol_optimize_smallscreen)) {
//print '<br>';
print ' - '; print ' - ';
} else {
print ' - ';
}
//print '<span class="opacitymedium hideonsmartphone">'.$langs->trans("ExampleOnFirstLine").': </span>'; //print '<span class="opacitymedium hideonsmartphone">'.$langs->trans("ExampleOnFirstLine").': </span>';
print '<i class="opacitymedium">'.$example.'</i>'; print '<i class="opacitymedium">'.$example.'</i>';
} }

View File

@ -1,7 +0,0 @@
README
======
ADOdb Date Library, part of the ADOdb abstraction library
See Wiki: https://adodb.org/dokuwiki/doku.php?id=v5:datetime:datetime_index
Download: https://github.com/ADOdb/ADOdb/blob/master/adodb-time.inc.php

File diff suppressed because it is too large Load Diff

View File

@ -1 +1,2 @@
Website generated by Dolibarr ERP CRM Website generated by Dolibarr ERP CRM
This website template is an example of website for a restaurant

View File

@ -1,2 +1,8 @@
Image are provided under the Unsplash+ License LICENSE
Rest of templates (HTML and PHP code) content are GPLv3 -------
Images are provided under the license:
Unsplash+ License
Rest of templates (HTML and PHP code) content are under license
CC-BY-SA - https://creativecommons.org/licenses/by/4.0/

View File

@ -1 +1,2 @@
Website generated by Dolibarr ERP CRM Website generated by Dolibarr ERP CRM
This website template is an example of website for a restaurant

View File

@ -1,5 +1,5 @@
<?php <?php
// File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page // File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page
global $dolibarr_main_data_root; global $dolibarr_main_data_root;
if (empty($dolibarr_main_data_root)) require './page169.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page169.tpl.php'; if (empty($dolibarr_main_data_root)) require './page248.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page248.tpl.php';
?> ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page // File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page
global $dolibarr_main_data_root; global $dolibarr_main_data_root;
if (empty($dolibarr_main_data_root)) require './page170.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page170.tpl.php'; if (empty($dolibarr_main_data_root)) require './page249.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page249.tpl.php';
?> ?>

View File

@ -0,0 +1,5 @@
<?php
// File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page
global $dolibarr_main_data_root;
if (empty($dolibarr_main_data_root)) require './page252.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page252.tpl.php';
?>

View File

@ -0,0 +1,5 @@
<?php
// File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page
global $dolibarr_main_data_root;
if (empty($dolibarr_main_data_root)) require './page253.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page253.tpl.php';
?>

View File

@ -1,6 +1,6 @@
<link rel="stylesheet" id="google-fonts-css" href="//fonts.googleapis.com/css?family=Open+Sans:300,400,700" /> <link rel="stylesheet" id="google-fonts-css" href="//fonts.googleapis.com/css?family=Open+Sans:300,400,700" />
<link rel="stylesheet" id="font-wasesome-css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" /> <link rel="stylesheet" id="font-wasesome-css" type="text/css" href="/dolibarr_dev/htdocs/theme/common/fontawesome-5/css/all.min.css?layout=classic&amp;version=17.0.0-beta">
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

View File

@ -1,11 +1,5 @@
<?php <?php
// BEGIN PHP File generated to provide an index.php as Home Page or alias redirector - DO NOT MODIFY - It is just a generated wrapper. // File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page
$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__; global $dolibarr_main_data_root;
if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) { require_once './master.inc.php'; } // Load master if not already loaded if (empty($dolibarr_main_data_root)) require './page250.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page250.tpl.php';
if (!empty($_GET['pageref']) || !empty($_GET['pagealiasalt']) || !empty($_GET['pageid'])) { ?>
require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';
redirectToContainer($_GET['pageref'], $_GET['pagealiasalt'], $_GET['pageid']);
}
include_once './page171.tpl.php';
// END PHP

View File

@ -8,6 +8,7 @@ header('Cache-Control: max-age=3600, public, must-revalidate');
header('Content-type: application/javascript'); header('Content-type: application/javascript');
// END PHP ?> // END PHP ?>
/* JS content (all pages) */ /* JS content (all pages) */
// test
<?php // BEGIN PHP <?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "js"); $tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "js");
// END PHP ?> // END PHP ?>

View File

@ -1,5 +1,5 @@
<?php <?php
// File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page // File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page
global $dolibarr_main_data_root; global $dolibarr_main_data_root;
if (empty($dolibarr_main_data_root)) require './page172.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page172.tpl.php'; if (empty($dolibarr_main_data_root)) require './page251.tpl.php'; else require $dolibarr_main_data_root.'/website/'.$website->ref.'/page251.tpl.php';
?> ?>

View File

@ -1,198 +0,0 @@
<?php // BEGIN PHP
$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__;
if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) {
$pathdepth = count(explode('/', $_SERVER['SCRIPT_NAME'])) - 2;
require_once ($pathdepth ? str_repeat('../', $pathdepth) : './').'master.inc.php';
} // Not already loaded
require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';
ob_start();
// END PHP ?>
<html lang="en">
<head>
<title>About us</title>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="" />
<meta name="title" content="About us" />
<meta name="description" content="" />
<meta name="generator" content="Dolibarr 17.0.0-alpha (https://www.dolibarr.org)" />
<meta name="dolibarr:pageid" content="169" />
<?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?>
<!-- Include link to CSS file -->
<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />
<!-- Include link to JS file -->
<script async src="/javascript.js.php"></script>
<!-- Include HTML header from common file -->
<?php if (file_exists(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")) include DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html"; ?>
<!-- Include HTML header from page header block -->
</head>
<!-- File generated by Dolibarr website module editor -->
<body id="bodywebsite" class="bodywebsite bodywebpage-about">
<!-- Enter here your HTML content. Add a section with an id tag and tag contenteditable="true" if you want to use the inline editor for the content -->
<section id="mysection1" contenteditable="true">
<nav class="navbar navbar-expand-lg bg-white shadow-lg">
<div class="container">
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNav"
aria-controls="navbarNav"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="index.html"><?php echo $mysoc->name; ?></a>
<div class="d-lg-none">
<a href="contact.php#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
>
Reservation
</a>
</div>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="about.php">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="menu.php">Menu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.php">Contact</a>
</li>
</ul>
</div>
<div class="d-none d-lg-block">
<a href="contact.php#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
>
Reservation
</a>
</div>
</div>
</nav>
<main>
<header class="site-header site-about-header">
<div class="container">
<div class="row">
<div class="col-lg-10 col-12 mx-auto">
<h1 class="text-white">About Us</h1>
<strong class="text-white">Get to know us more</strong>
</div>
</div>
</div>
<div class="overlay"></div>
</header>
<section class="about section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="mb-5">Team Members</h2>
</div>
<div class="col-lg-4 col-12">
<div class="team-thumb">
<img src="image/mypersonalsite/team/matthew-hamilton-tNCH0sKSZbA-unsplash.jpg" class="img-fluid team-image" alt="">
<div class="team-info">
<h4 class="mt-3 mb-0">Sophia</h4>
<p>CEO &amp; Founder</p>
</div>
</div>
</div>
<div class="col-lg-4 col-12 my-lg-0 my-4">
<div class="team-thumb">
<img src="image/mypersonalsite/team/nicolas-horn-MTZTGvDsHFY-unsplash.jpg" class="img-fluid team-image" alt="">
<h4 class="mt-3 mb-0">Benjamin W.</h4>
<p>Restaurant Manager</p>
</div>
</div>
<div class="col-lg-4 col-12">
<div class="team-thumb">
<img src="image/mypersonalsite/team/rc-cf-FMh5o5m5N9E-unsplash.jpg" class="img-fluid team-image" alt="">
<h4 class="mt-3 mb-0">Muchen Jack</h4>
<p>Senior Chef</p>
</div>
</div>
</div>
</div>
</section>
<!--
<section class="newsletter section-padding bg-white">
<div class="container">
<div class="row">
<div class="col-lg-6 col-12">
<img src="image/mypersonalsite/charles-deluvio-FdDkfYFHqe4-unsplash.jpg" class="img-fluid newsletter-image" alt="">
</div>
<div class="col-lg-6 col-12 d-flex align-items-center mt-5 mt-lg-0 mx-auto">
<div class="subscribe-form-wrap">
<h4 class="mb-0">Our Newsletter</h4>
<p>The food news every day</p>
<form class="custom-form subscribe-form mt-4" role="form">
<input type="email" name="subscribe-email" id="subscribe-email" pattern="[^ @]*@[^ @]*" class="form-control" placeholder="Your email address" required="">
<button type="submit" class="form-control mb-3" id="subscribe">Subscribe</button>
<small>By signing up, you agree to our Privacy Notice and the data policy</small>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
-->
</main>
</section>
</body>
</html>
<?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 169);
// END PHP ?>

View File

@ -1,597 +0,0 @@
<?php // BEGIN PHP
$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__;
if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) {
$pathdepth = count(explode('/', $_SERVER['SCRIPT_NAME'])) - 2;
require_once ($pathdepth ? str_repeat('../', $pathdepth) : './').'master.inc.php';
} // Not already loaded
require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';
ob_start();
// END PHP ?>
<html lang="en">
<head>
<title>Our menus</title>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="" />
<meta name="title" content="Our menus" />
<meta name="description" content="" />
<meta name="generator" content="Dolibarr 17.0.0-alpha (https://www.dolibarr.org)" />
<meta name="dolibarr:pageid" content="172" />
<?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?>
<!-- Include link to CSS file -->
<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />
<!-- Include link to JS file -->
<script async src="/javascript.js.php"></script>
<!-- Include HTML header from common file -->
<?php if (file_exists(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")) include DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html"; ?>
<!-- Include HTML header from page header block -->
</head>
<!-- File generated by Dolibarr website module editor -->
<body id="bodywebsite" class="bodywebsite bodywebpage-menu">
<!-- Enter here your HTML content. Add a section with an id tag and tag contenteditable="true" if you want to use the inline editor for the content -->
<section id="mysection1" contenteditable="true">
<nav class="navbar navbar-expand-lg bg-white shadow-lg">
<div class="container">
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNav"
aria-controls="navbarNav"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="index.html"><?php echo $mysoc->name; ?></a>
<div class="d-lg-none">
<a href="contact.php#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
>
Reservation
</a>
</div>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.php">About</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="menu.php">Menu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.php">Contact</a>
</li>
</ul>
</div>
<div class="d-none d-lg-block">
<a href="contact.php#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
>
Reservation
</a>
</div>
</div>
</nav>
<main>
<header class="site-header site-menu-header">
<div class="container">
<div class="row">
<div class="col-lg-10 col-12 mx-auto">
<h1 class="text-white">Our Menus</h1>
<strong class="text-white"
>Perfect for all Breakfast, Lunch and
Dinner</strong
>
</div>
</div>
</div>
<div class="overlay"></div>
</header>
<section class="menu section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="mb-lg-5 mb-4">Breakfast Menu</h2>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/mypersonalsite/breakfast/brett-jordan-8xt8-HIFqc8-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Fresh Start</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>24.50</span
>
<div
class="d-flex flex-wrap align-items-center w-100 mt-2"
>
<h6 class="reviews-text mb-0 me-3">
4.4/5
</h6>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i class="bi-star reviews-icon"></i>
</div>
<p class="reviews-text mb-0 ms-4">
128 Reviews
</p>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="/image/mypersonalsite/breakfast/lucas-swennen-1W_MyJSRLuQ-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Baked Creamy</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>16.50</span
>
<div
class="d-flex flex-wrap align-items-center w-100 mt-2"
>
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i>
</div>
<p class="reviews-text mb-0 ms-4">
64 Reviews
</p>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/mypersonalsite/breakfast/louis-hansel-dphM2U1xq0U-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Burger Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>24.50</span
>
<del class="ms-4"
><small>$</small>36.50</del
>
<div
class="d-flex flex-wrap align-items-center w-100 mt-2"
>
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i>
</div>
<p class="reviews-text mb-0 ms-4">
32 Reviews
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="menu section-padding bg-white">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="mb-lg-5 mb-4">Lunch Menu</h2>
</div>
<div class="col-lg-6 col-12">
<div class="menu-thumb">
<img
src="image/mypersonalsite/lunch/louis-hansel-cH5IPjaAYyo-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Super Steak Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>32.75</span
>
<del class="ms-4"><small>$</small>55</del>
<div
class="d-flex flex-wrap align-items-center w-100 mt-2"
>
<h6 class="reviews-text mb-0 me-3">
4.2/5
</h6>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i class="bi-star reviews-icon"></i>
</div>
<p class="reviews-text mb-0 ms-4">
66 Reviews
</p>
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-12">
<div class="menu-thumb">
<img
src="image/mypersonalsite/lunch/louis-hansel-rheOvfxOlOA-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Bread &amp; Steak Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>42.50</span
>
<div
class="d-flex flex-wrap align-items-center w-100 mt-2"
>
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i>
</div>
<p class="reviews-text mb-0 ms-4">
84 Reviews
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="menu section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="mb-lg-5 mb-4">Dinner Menu</h2>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/mypersonalsite/dinner/farhad-ibrahimzade-ZipYER3NLhY-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Seafood Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>65.50</span
>
<div
class="d-flex flex-wrap align-items-center w-100 mt-2"
>
<h6 class="reviews-text mb-0 me-3">
4.4/5
</h6>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i class="bi-star reviews-icon"></i>
</div>
<p class="reviews-text mb-0 ms-4">
102 Reviews
</p>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/mypersonalsite/dinner/keriliwi-c3mFafsFz2w-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Premium Steak</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>74.25</span
>
<div
class="d-flex flex-wrap align-items-center w-100 mt-2"
>
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i>
</div>
<p class="reviews-text mb-0 ms-4">
56 Reviews
</p>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/mypersonalsite/dinner/farhad-ibrahimzade-isHUj3N0194-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Salmon Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>60</span
>
<div
class="d-flex flex-wrap align-items-center w-100 mt-2"
>
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i>
</div>
<p class="reviews-text mb-0 ms-4">
76 Reviews
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h4 class="text-white mb-4 me-5"><?php echo $mysoc->name; ?></h4>
</div>
<div class="col-lg-4 col-md-7 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Location</h6>
<p><?php echo $mysoc->getFullAddress(); ?></p>
<a
href="https://goo.gl/maps/CJ8FfebWZHLQBA2r5"
class="custom-btn btn btn-dark mt-2"
>Directions</a
>
</div>
<div class="col-lg-4 col-md-5 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Opening Hours</h6>
<?php $days = ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"];
foreach ($days as $day){
echo "<p> $day : " .getDolGlobalString("MAIN_INFO_OPENINGHOURS_$day") ."</p>";
}
?>
<p>
Tel:
<a href="tel: 010-02-0340" class="tel-link"
><?php echo $mysoc->phone ?></a
>
</p>
</div>
<div class="col-lg-4 col-md-6 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Social</h6>
<ul class="social-icon">
<?php foreach($mysoc->socialnetworks as $key => $value) {
print '<li> <a class="btn btn-perso2 btn-floating m-1" href="'. (preg_match('/^http/', $value) ? $value : 'https://www.'.$key.'.com/'.$value).'"><span class="fab fa-'.$key.'"></i></a> </li>';
} ?>
</ul>
<p class="copyright-text tooplate-mt60">
Copyright © <?php echo $mysoc->name; ?>
</p>
</div>
</div>
<!-- row ending -->
</div>
<!-- container ending -->
</footer>
</section>
</body>
</html>
<?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 172);
// END PHP ?>

View File

@ -0,0 +1,113 @@
<?php // BEGIN PHP
$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__;
if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) {
$pathdepth = count(explode('/', $_SERVER['SCRIPT_NAME'])) - 2;
require_once ($pathdepth ? str_repeat('../', $pathdepth) : './').'master.inc.php';
} // Not already loaded
require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';
ob_start();
// END PHP ?>
<html lang="en">
<head>
<title>About us</title>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="" />
<meta name="title" content="About us" />
<meta name="description" content="" />
<meta name="generator" content="Dolibarr 17.0.0-beta (https://www.dolibarr.org)" />
<meta name="dolibarr:pageid" content="248" />
<?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?>
<!-- Include link to CSS file -->
<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />
<!-- Include link to JS file -->
<script async src="/javascript.js.php"></script>
<!-- Include HTML header from common file -->
<?php if (file_exists(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")) include DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html"; ?>
<!-- Include HTML header from page header block -->
</head>
<!-- File generated by Dolibarr website module editor -->
<body id="bodywebsite" class="bodywebsite bodywebpage-about">
<!-- Enter here your HTML content. Add a section with an id tag and tag contenteditable="true" if you want to use the inline editor for the content -->
<?php includeContainer('header'); ?>
<section id="mysection1" contenteditable="true">
<main>
<header class="site-header site-about-header">
<div class="container">
<div class="row">
<div class="col-lg-10 col-12 mx-auto">
<h1 class="text-white">About Us</h1>
<strong class="text-white">Get to know us more</strong>
</div>
</div>
</div>
<div class="overlay"></div>
</header>
<section class="about section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="mb-5">Team Members</h2>
</div>
<div class="col-lg-4 col-12">
<div class="team-thumb">
<img src="image/aaab/team/matthew-hamilton-tNCH0sKSZbA-unsplash.jpg" class="img-fluid team-image" alt="">
<div class="team-info">
<h4 class="mt-3 mb-0">Sophia</h4>
<p>CEO &amp; Founder</p>
</div>
</div>
</div>
<div class="col-lg-4 col-12 my-lg-0 my-4">
<div class="team-thumb">
<img src="image/aaab/team/nicolas-horn-MTZTGvDsHFY-unsplash.jpg" class="img-fluid team-image" alt="">
<h4 class="mt-3 mb-0">Benjamin W.</h4>
<p>Restaurant Manager</p>
</div>
</div>
<div class="col-lg-4 col-12">
<div class="team-thumb">
<img src="image/aaab/team/rc-cf-FMh5o5m5N9E-unsplash.jpg" class="img-fluid team-image" alt="">
<h4 class="mt-3 mb-0">Muchen Jack</h4>
<p>Senior Chef</p>
</div>
</div>
</div>
</div>
</section>
</main>
</section>
<?php includeContainer('footer'); ?>
</body>
</html>
<?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 248);
// END PHP ?>

View File

@ -18,8 +18,8 @@ ob_start();
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="title" content="Contact us" /> <meta name="title" content="Contact us" />
<meta name="description" content="" /> <meta name="description" content="" />
<meta name="generator" content="Dolibarr 17.0.0-alpha (https://www.dolibarr.org)" /> <meta name="generator" content="Dolibarr 17.0.0-beta (https://www.dolibarr.org)" />
<meta name="dolibarr:pageid" content="170" /> <meta name="dolibarr:pageid" content="249" />
<?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?> <?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?>
<!-- Include link to CSS file --> <!-- Include link to CSS file -->
<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" /> <link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />
@ -51,66 +51,11 @@ ob_start();
} }
} }
?> ?>
<?php includeContainer('header'); ?>
<section id="mysection1" contenteditable="true"> <section id="mysection1" contenteditable="true">
<nav class="navbar navbar-expand-lg bg-white shadow-lg">
<div class="container">
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNav"
aria-controls="navbarNav"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="index.html"><?php echo $mysoc->name; ?></a>
<div class="d-lg-none">
<a href="#reservation"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
>
Reservation
</a>
</div>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.php">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="menu.php">Menu</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="contact.php">Contact</a>
</li>
</ul>
</div>
<div class="d-none d-lg-block">
<a href="#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
>
Reservation
</a>
</div>
</div>
</nav>
<main> <main>
<header class="site-header site-contact-header"> <header class="site-header site-contact-header">
<div class="container"> <div class="container">
@ -128,7 +73,7 @@ ob_start();
<div class="overlay"></div> <div class="overlay"></div>
</header> </header>
<a id="reservation"></a> <a id="reservation"></a><br>
<section class="contact section-padding"> <section class="contact section-padding">
<div class="container"> <div class="container">
@ -144,6 +89,9 @@ ob_start();
method="post" method="post"
role="form" role="form"
> >
<input type="hidden" name="action" value="sendmail">
<input type="hidden" name="toekn" value="<?php echo newToken(); ?>">
<div class="col-lg-6 col-6"> <div class="col-lg-6 col-6">
<label for="contact-name" class="form-label" <label for="contact-name" class="form-label"
>Full Name</label >Full Name</label
@ -163,7 +111,7 @@ ob_start();
<label <label
for="contact-phone" for="contact-phone"
class="form-label" class="form-label"
>Phone Number</label ><?php echo $weblangs->trans("Phone"); ?></label
> >
<input <input
@ -178,7 +126,7 @@ ob_start();
<label <label
for="contact-email" for="contact-email"
class="form-label" class="form-label"
>Email</label ><?php echo $weblangs->trans("Email"); ?></label
> >
<input <input
@ -194,7 +142,7 @@ ob_start();
<label <label
for="contact-message" for="contact-message"
class="form-label" class="form-label"
>Message</label ><?php echo $weblangs->trans("Message"); ?></label
> >
<textarea <textarea
@ -208,7 +156,7 @@ ob_start();
<div class="col-lg-5 col-12 ms-auto"> <div class="col-lg-5 col-12 ms-auto">
<button type="submit" class="form-control"> <button type="submit" class="form-control">
Send <?php echo $weblangs->trans("Send"); ?>
</button> </button>
</div> </div>
</form> </form>
@ -234,88 +182,24 @@ ob_start();
</div> </div>
</div> </div>
<div class="col-12"> <div class="col-12" id="divaddress">
<h4 class="mt-5 mb-4"> <br><br>
<h4 class="mt-5 mb-4 center">
<?php echo $mysoc->getFullAddress() ?> <?php echo $mysoc->getFullAddress() ?>
</h4> </h4>
<div class="google-map pt-3"> <!-- Google MAPS -->
<iframe <center><div class="mapouter"><div class="gmap_canvas"><iframe width="600" height="500" id="gmap_canvas" src="https://maps.google.com/maps?q=<?php echo urlencode($mysoc->getFullAddress()); ?>&t=&z=13&ie=UTF8&iwloc=&output=embed" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe>
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d90596.06698695973!2d-0.7089680200547398!3d44.79859846268479!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0xd54d8fb00b62b4d%3A0x963d0840e2fa1f97!2sPessac%20Centre!5e0!3m2!1sen!2sfr!4v1659970475018!5m2!1sen!2sfr"
width="100%"
height="300"
style="border: 0"
allowfullscreen=""
loading="lazy"
referrerpolicy="no-referrer-when-downgrade"
></iframe>
</div> </div>
<style>.mapouter{text-align:right;height:500px;width:600px;}.gmap_canvas {overflow:hidden;background:none!important;height:500px;width:600px;}</style>
</div></center>
</div> </div>
</div> </div>
</div> </div>
</section> </section>
</main> </main>
<footer class="site-footer section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h4 class="text-white mb-4 me-5"><?php echo $mysoc->name; ?></h4>
</div>
<div class="col-lg-4 col-md-7 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Location</h6>
<p><?php echo $mysoc->getFullAddress(); ?></p>
<a
href="https://goo.gl/maps/CJ8FfebWZHLQBA2r5"
class="custom-btn btn btn-dark mt-2"
>Directions</a
>
</div>
<div class="col-lg-4 col-md-5 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Opening Hours</h6>
<?php $days = ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"];
foreach ($days as $day){
echo "<p> $day : " .getDolGlobalString("MAIN_INFO_OPENINGHOURS_$day") ."</p>";
}
?>
<p>
Tel:
<a href="tel: 010-02-0340" class="tel-link"
><?php echo $mysoc->phone ?></a
>
</p>
</div>
<div class="col-lg-4 col-md-6 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Social</h6>
<ul class="social-icon">
<?php foreach($mysoc->socialnetworks as $key => $value) {
print '<li> <a class="btn btn-perso2 btn-floating m-1" href="'. (preg_match('/^http/', $value) ? $value : 'https://www.'.$key.'.com/'.$value).'"><span class="fab fa-'.$key.'"></i></a> </li>';
} ?>
</ul>
<p class="copyright-text tooplate-mt60">
Copyright © <?php echo $mysoc->name; ?>
</p>
</div>
</div>
<!-- row ending -->
</div>
<!-- container ending -->
</footer>
<!-- Modal --> <!-- Modal -->
@ -346,7 +230,7 @@ ob_start();
<form <form
class="booking-form row" class="booking-form row"
role="form" role="form"
action="index.php" action="contact.php"
method="POST" method="POST"
> >
<input type="hidden" name="token" value="<?php echo newToken(); ?>" /> <input type="hidden" name="token" value="<?php echo newToken(); ?>" />
@ -473,8 +357,12 @@ ob_start();
</section> </section>
<?php includeContainer('footer'); ?>
</body> </body>
</html> </html>
<?php // BEGIN PHP <?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 170); $tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 249);
// END PHP ?> // END PHP ?>

View File

@ -18,8 +18,8 @@ ob_start();
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="title" content="index" /> <meta name="title" content="index" />
<meta name="description" content="" /> <meta name="description" content="" />
<meta name="generator" content="Dolibarr 17.0.0-alpha (https://www.dolibarr.org)" /> <meta name="generator" content="Dolibarr 17.0.0-beta (https://www.dolibarr.org)" />
<meta name="dolibarr:pageid" content="171" /> <meta name="dolibarr:pageid" content="250" />
<?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?> <?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?>
<!-- Include link to CSS file --> <!-- Include link to CSS file -->
<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" /> <link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />
@ -34,68 +34,10 @@ ob_start();
<body id="bodywebsite" class="bodywebsite bodywebpage-index"> <body id="bodywebsite" class="bodywebsite bodywebpage-index">
<!-- Enter here your HTML content. Add a section with an id tag and tag contenteditable="true" if you want to use the inline editor for the content --> <!-- Enter here your HTML content. Add a section with an id tag and tag contenteditable="true" if you want to use the inline editor for the content -->
<?php includeContainer('header'); ?>
<section id="mysection1" contenteditable="true"> <section id="mysection1" contenteditable="true">
<nav class="navbar navbar-expand-lg bg-white shadow-lg">
<div class="container">
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNav"
aria-controls="navbarNav"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="index.html"><?php echo $mysoc->name; ?></a>
<div class="d-lg-none">
<a href="contact.php#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
>
Reservation
</a>
</div>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link active" href="index.php"
>Home</a
>
</li>
<li class="nav-item">
<a class="nav-link" href="about.php">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="menu.php">Menu</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.php">Contact</a>
</li>
</ul>
</div>
<div class="d-none d-lg-block">
<a href="contact.php#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
>
Reservation
</a>
</div>
</div>
</nav>
<main> <main>
<section class="hero"> <section class="hero">
<div class="container"> <div class="container">
@ -106,16 +48,9 @@ ob_start();
Delicious Steaks Delicious Steaks
</h1> </h1>
<div class="c-reviews my-3 d-flex flex-wrap align-items-center">
<div <div
class="c-reviews my-3 d-flex flex-wrap align-items-center" class="d-flex flex-wrap align-items-center">
>
<div
class="d-flex flex-wrap align-items-center"
>
<h4 class="text-white mb-0 me-3">
4.7/5
</h4>
<div class="reviews-stars"> <div class="reviews-stars">
<i <i
class="bi-star-fill reviews-icon" class="bi-star-fill reviews-icon"
@ -132,11 +67,6 @@ ob_start();
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
</div> </div>
</div> </div>
<p class="text-white w-100">
From <strong>1,206+</strong> Customer
Reviews
</p>
</div> </div>
</div> </div>
</div> </div>
@ -151,7 +81,7 @@ ob_start();
<div class="carousel-item active"> <div class="carousel-item active">
<div class="carousel-image-wrap"> <div class="carousel-image-wrap">
<img <img
src="image/mypersonalsite/slide/jay-wennington-N_Y88TWmGwA-unsplash.jpg" src="image/aaab/slide/jay-wennington-N_Y88TWmGwA-unsplash.jpg"
class="img-fluid carousel-image" class="img-fluid carousel-image"
alt="" alt=""
/> />
@ -167,7 +97,7 @@ ob_start();
<div class="carousel-item"> <div class="carousel-item">
<div class="carousel-image-wrap"> <div class="carousel-image-wrap">
<img <img
src="image/mypersonalsite/slide/jason-leung-O67LZfeyYBk-unsplash.jpg" src="image/aaab/slide/jason-leung-O67LZfeyYBk-unsplash.jpg"
class="img-fluid carousel-image" class="img-fluid carousel-image"
alt="" alt=""
/> />
@ -183,41 +113,13 @@ ob_start();
>26.50<small>€</small></span >26.50<small>€</small></span
> >
</div> </div>
<div
class="d-flex flex-wrap align-items-center"
>
<h5
class="reviews-text mb-0 me-3"
>
3.8/5
</h5>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star reviews-icon"
></i>
<i
class="bi-star reviews-icon"
></i>
</div>
</div>
</div> </div>
</div> </div>
<div class="carousel-item"> <div class="carousel-item">
<div class="carousel-image-wrap"> <div class="carousel-image-wrap">
<img <img
src="image/mypersonalsite/slide/ivan-torres-MQUqbmszGGM-unsplash.jpg" src="image/aaab/slide/ivan-torres-MQUqbmszGGM-unsplash.jpg"
class="img-fluid carousel-image" class="img-fluid carousel-image"
alt="" alt=""
/> />
@ -235,34 +137,6 @@ ob_start();
>18.25<small>€</small></span >18.25<small>€</small></span
> >
</div> </div>
<div
class="d-flex flex-wrap align-items-center"
>
<h5
class="reviews-text mb-0 me-3"
>
4.2/5
</h5>
<div class="reviews-stars">
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star-fill reviews-icon"
></i>
<i
class="bi-star reviews-icon"
></i>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -299,22 +173,6 @@ ob_start();
</div> </div>
</div> </div>
<div class="video-wrap">
<video
autoplay=""
loop=""
muted=""
class="custom-video"
poster=""
>
<source
src="image/mypersonalsite/video/production_ID_3769033.mp4"
type="video/mp4"
/>
Your browser does not support the video tag.
</video>
</div>
<div class="overlay"></div> <div class="overlay"></div>
</section> </section>
@ -331,7 +189,7 @@ ob_start();
<div class="menu-thumb"> <div class="menu-thumb">
<div class="menu-image-wrap"> <div class="menu-image-wrap">
<img <img
src="image/mypersonalsite/breakfast/brett-jordan-8xt8-HIFqc8-unsplash.jpg" src="image/aaab/breakfast/brett-jordan-8xt8-HIFqc8-unsplash.jpg"
class="img-fluid menu-image" class="img-fluid menu-image"
alt="" alt=""
/> />
@ -354,10 +212,6 @@ ob_start();
<div <div
class="d-flex flex-wrap align-items-center w-100 mt-2" class="d-flex flex-wrap align-items-center w-100 mt-2"
> >
<h6 class="reviews-text mb-0 me-3">
4.3/5
</h6>
<div class="reviews-stars"> <div class="reviews-stars">
<i <i
class="bi-star-fill reviews-icon" class="bi-star-fill reviews-icon"
@ -373,10 +227,6 @@ ob_start();
></i> ></i>
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
</div> </div>
<p class="reviews-text mb-0 ms-4">
102 Reviews
</p>
</div> </div>
</div> </div>
</div> </div>
@ -386,7 +236,7 @@ ob_start();
<div class="menu-thumb"> <div class="menu-thumb">
<div class="menu-image-wrap"> <div class="menu-image-wrap">
<img <img
src="image/mypersonalsite/lunch/farhad-ibrahimzade-MGKqxm6u2bc-unsplash.jpg" src="image/aaab/lunch/farhad-ibrahimzade-MGKqxm6u2bc-unsplash.jpg"
class="img-fluid menu-image" class="img-fluid menu-image"
alt="" alt=""
/> />
@ -409,10 +259,6 @@ ob_start();
<div <div
class="d-flex flex-wrap align-items-center w-100 mt-2" class="d-flex flex-wrap align-items-center w-100 mt-2"
> >
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars"> <div class="reviews-stars">
<i <i
class="bi-star-fill reviews-icon" class="bi-star-fill reviews-icon"
@ -426,10 +272,6 @@ ob_start();
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
</div> </div>
<p class="reviews-text mb-0 ms-4">
50 Reviews
</p>
</div> </div>
</div> </div>
</div> </div>
@ -439,7 +281,7 @@ ob_start();
<div class="menu-thumb"> <div class="menu-thumb">
<div class="menu-image-wrap"> <div class="menu-image-wrap">
<img <img
src="image/mypersonalsite/dinner/keriliwi-c3mFafsFz2w-unsplash.jpg" src="image/aaab/dinner/keriliwi-c3mFafsFz2w-unsplash.jpg"
class="img-fluid menu-image" class="img-fluid menu-image"
alt="" alt=""
/> />
@ -462,10 +304,6 @@ ob_start();
<div <div
class="d-flex flex-wrap align-items-center w-100 mt-2" class="d-flex flex-wrap align-items-center w-100 mt-2"
> >
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars"> <div class="reviews-stars">
<i <i
class="bi-star-fill reviews-icon" class="bi-star-fill reviews-icon"
@ -479,10 +317,6 @@ ob_start();
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
</div> </div>
<p class="reviews-text mb-0 ms-4">
86 Reviews
</p>
</div> </div>
</div> </div>
</div> </div>
@ -492,7 +326,7 @@ ob_start();
<div class="menu-thumb"> <div class="menu-thumb">
<div class="menu-image-wrap"> <div class="menu-image-wrap">
<img <img
src="image/mypersonalsite/dinner/farhad-ibrahimzade-ZipYER3NLhY-unsplash.jpg" src="image/aaab/dinner/farhad-ibrahimzade-ZipYER3NLhY-unsplash.jpg"
class="img-fluid menu-image" class="img-fluid menu-image"
alt="" alt=""
/> />
@ -515,10 +349,6 @@ ob_start();
<div <div
class="d-flex flex-wrap align-items-center w-100 mt-2" class="d-flex flex-wrap align-items-center w-100 mt-2"
> >
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars"> <div class="reviews-stars">
<i <i
class="bi-star-fill reviews-icon" class="bi-star-fill reviews-icon"
@ -532,10 +362,6 @@ ob_start();
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
</div> </div>
<p class="reviews-text mb-0 ms-4">
44 Reviews
</p>
</div> </div>
</div> </div>
</div> </div>
@ -545,7 +371,7 @@ ob_start();
<div class="menu-thumb"> <div class="menu-thumb">
<div class="menu-image-wrap"> <div class="menu-image-wrap">
<img <img
src="image/mypersonalsite/breakfast/louis-hansel-dphM2U1xq0U-unsplash.jpg" src="image/aaab/breakfast/louis-hansel-dphM2U1xq0U-unsplash.jpg"
class="img-fluid menu-image" class="img-fluid menu-image"
alt="" alt=""
/> />
@ -568,10 +394,6 @@ ob_start();
<div <div
class="d-flex flex-wrap align-items-center w-100 mt-2" class="d-flex flex-wrap align-items-center w-100 mt-2"
> >
<h6 class="reviews-text mb-0 me-3">
4.3/5
</h6>
<div class="reviews-stars"> <div class="reviews-stars">
<i <i
class="bi-star-fill reviews-icon" class="bi-star-fill reviews-icon"
@ -587,10 +409,6 @@ ob_start();
></i> ></i>
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
</div> </div>
<p class="reviews-text mb-0 ms-4">
102 Reviews
</p>
</div> </div>
</div> </div>
</div> </div>
@ -600,7 +418,7 @@ ob_start();
<div class="menu-thumb"> <div class="menu-thumb">
<div class="menu-image-wrap"> <div class="menu-image-wrap">
<img <img
src="image/mypersonalsite/lunch/farhad-ibrahimzade-D5c9ZciQy_I-unsplash.jpg" src="image/aaab/lunch/farhad-ibrahimzade-D5c9ZciQy_I-unsplash.jpg"
class="img-fluid menu-image" class="img-fluid menu-image"
alt="" alt=""
/> />
@ -623,10 +441,6 @@ ob_start();
<div <div
class="d-flex flex-wrap align-items-center w-100 mt-2" class="d-flex flex-wrap align-items-center w-100 mt-2"
> >
<h6 class="reviews-text mb-0 me-3">
3/5
</h6>
<div class="reviews-stars"> <div class="reviews-stars">
<i <i
class="bi-star-fill reviews-icon" class="bi-star-fill reviews-icon"
@ -640,10 +454,6 @@ ob_start();
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
<i class="bi-star reviews-icon"></i> <i class="bi-star reviews-icon"></i>
</div> </div>
<p class="reviews-text mb-0 ms-4">
64 Reviews
</p>
</div> </div>
</div> </div>
</div> </div>
@ -653,68 +463,13 @@ ob_start();
</section> </section>
</main> </main>
<footer class="site-footer section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h4 class="text-white mb-4 me-5"><?php echo $mysoc->name; ?></h4>
</div>
<div class="col-lg-4 col-md-7 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Location</h6>
<p><?php echo $mysoc->getFullAddress(); ?></p>
<a
href="https://goo.gl/maps/CJ8FfebWZHLQBA2r5"
class="custom-btn btn btn-dark mt-2"
>Directions</a
>
</div>
<div class="col-lg-4 col-md-5 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Opening Hours</h6>
<?php $days = ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"];
foreach ($days as $day){
echo "<p> $day : " .getDolGlobalString("MAIN_INFO_OPENINGHOURS_$day") ."</p>";
}
?>
<p>
Tel:
<a href="tel: 010-02-0340" class="tel-link"
><?php echo $mysoc->phone ?></a
>
</p>
</div>
<div class="col-lg-4 col-md-6 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Social</h6>
<ul class="social-icon">
<?php foreach($mysoc->socialnetworks as $key => $value) {
print '<li> <a class="btn btn-perso2 btn-floating m-1" href="'. (preg_match('/^http/', $value) ? $value : 'https://www.'.$key.'.com/'.$value).'"><span class="fab fa-'.$key.'"></i></a> </li>';
} ?>
</ul>
<p class="copyright-text tooplate-mt60">
Copyright © <?php echo $mysoc->name; ?>
</p>
</div>
</div>
<!-- row ending -->
</div>
<!-- container ending -->
</footer>
</section> </section>
<?php includeContainer('footer'); ?>
</body> </body>
</html> </html>
<?php // BEGIN PHP <?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 171); $tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 250);
// END PHP ?> // END PHP ?>

View File

@ -0,0 +1,273 @@
<?php // BEGIN PHP
$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__;
if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) {
$pathdepth = count(explode('/', $_SERVER['SCRIPT_NAME'])) - 2;
require_once ($pathdepth ? str_repeat('../', $pathdepth) : './').'master.inc.php';
} // Not already loaded
require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';
ob_start();
// END PHP ?>
<html lang="en">
<head>
<title>Our menus</title>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="" />
<meta name="title" content="Our menus" />
<meta name="description" content="" />
<meta name="generator" content="Dolibarr 17.0.0-beta (https://www.dolibarr.org)" />
<meta name="dolibarr:pageid" content="251" />
<?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?>
<!-- Include link to CSS file -->
<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />
<!-- Include link to JS file -->
<script async src="/javascript.js.php"></script>
<!-- Include HTML header from common file -->
<?php if (file_exists(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")) include DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html"; ?>
<!-- Include HTML header from page header block -->
</head>
<!-- File generated by Dolibarr website module editor -->
<body id="bodywebsite" class="bodywebsite bodywebpage-menu">
<!-- Enter here your HTML content. Add a section with an id tag and tag contenteditable="true" if you want to use the inline editor for the content -->
<?php includeContainer('header'); ?>
<section id="mysection1" contenteditable="true">
<main>
<header class="site-header site-menu-header">
<div class="container">
<div class="row">
<div class="col-lg-10 col-12 mx-auto">
<h1 class="text-white">Our Menus</h1>
<strong class="text-white"
>Perfect for all Breakfast, Lunch and
Dinner</strong
>
</div>
</div>
</div>
<div class="overlay"></div>
</header>
<section class="menu section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="mb-lg-5 mb-4">Breakfast Menu</h2>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/aaab/breakfast/brett-jordan-8xt8-HIFqc8-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Fresh Start</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>24.50</span
>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="/image/aaab/breakfast/lucas-swennen-1W_MyJSRLuQ-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Baked Creamy</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>16.50</span
>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/aaab/breakfast/louis-hansel-dphM2U1xq0U-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Burger Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>24.50</span
>
<del class="ms-4"
><small>$</small>36.50</del
>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="menu section-padding bg-white">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="mb-lg-5 mb-4">Lunch Menu</h2>
</div>
<div class="col-lg-6 col-12">
<div class="menu-thumb">
<img
src="image/aaab/lunch/louis-hansel-cH5IPjaAYyo-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Super Steak Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>32.75</span
>
<del class="ms-4"><small>$</small>55</del>
</div>
</div>
</div>
<div class="col-lg-6 col-12">
<div class="menu-thumb">
<img
src="image/aaab/lunch/louis-hansel-rheOvfxOlOA-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Bread &amp; Steak Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>42.50</span
>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="menu section-padding">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="mb-lg-5 mb-4">Dinner Menu</h2>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/aaab/dinner/farhad-ibrahimzade-ZipYER3NLhY-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Seafood Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>65.50</span
>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/aaab/dinner/keriliwi-c3mFafsFz2w-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Premium Steak</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>74.25</span
>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="menu-thumb">
<img
src="image/aaab/dinner/farhad-ibrahimzade-isHUj3N0194-unsplash.jpg"
class="img-fluid menu-image"
alt=""
/>
<div
class="menu-info d-flex flex-wrap align-items-center"
>
<h4 class="mb-0">Salmon Set</h4>
<span
class="price-tag bg-white shadow-lg ms-4"
><small>$</small>60</span
>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
</section>
<?php includeContainer('footer'); ?>
</body>
</html>
<?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 251);
// END PHP ?>

View File

@ -0,0 +1,93 @@
<?php // BEGIN PHP
$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__;
if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) {
$pathdepth = count(explode('/', $_SERVER['SCRIPT_NAME'])) - 2;
require_once ($pathdepth ? str_repeat('../', $pathdepth) : './').'master.inc.php';
} // Not already loaded
require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';
ob_start();
// END PHP ?>
<html lang="en">
<head>
<title>Footer</title>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="" />
<meta name="title" content="Footer" />
<meta name="description" content="" />
<meta name="generator" content="Dolibarr 17.0.0-beta (https://www.dolibarr.org)" />
<meta name="dolibarr:pageid" content="252" />
<?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?>
<!-- Include link to CSS file -->
<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />
<!-- Include link to JS file -->
<script async src="/javascript.js.php"></script>
<!-- Include HTML header from common file -->
<?php if (file_exists(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")) include DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html"; ?>
<!-- Include HTML header from page header block -->
</head>
<!-- File generated by Dolibarr website module editor -->
<body id="bodywebsite" class="bodywebsite bodywebpage-footer">
<!-- Enter here your HTML content. Add a section with an id tag and tag contenteditable="true" if you want to use the inline editor for the content -->
<section id="footer" contenteditable="true">
<!-- Footer -->
<footer class="site-footer section-padding">
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-7 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3"><?php echo $weblangs->trans("Location"); ?></h6>
<p><?php echo $mysoc->getFullAddress(); ?></p>
<a href="contact.php#divaddress" class="custom-btn btn btn-dark mt-2"><?php echo $weblangs->trans("Map"); ?></a>
</div>
<div class="col-lg-4 col-md-5 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Opening Hours</h6>
<?php $days = ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"];
foreach ($days as $day){
echo "<p> $day : " .getDolGlobalString("MAIN_INFO_OPENINGHOURS_$day") ."</p>";
}
?>
<p>
Tel:
<a href="tel: <?php echo $mysoc->phone ?>" class="tel-link"
><?php echo $mysoc->phone ?></a
>
</p>
</div>
<div class="col-lg-4 col-md-6 col-xs-12 tooplate-mt30">
<h6 class="text-white mb-lg-4 mb-3">Social</h6>
<ul class="social-icon">
<?php foreach($mysoc->socialnetworks as $key => $value) {
print '<li> <a class="btn btn-perso2 btn-floating m-1" href="'. (preg_match('/^http/', $value) ? $value : 'https://www.'.$key.'.com/'.$value).'"><span class="fab fa-'.$key.'"></i></a> </li>';
} ?>
</ul>
<p class="copyright-text tooplate-mt60">
Copyright © <?php echo $mysoc->name; ?>
</p>
</div>
</div>
<!-- row ending -->
</div>
<!-- container ending -->
</footer>
</section>
</body>
</html>
<?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 252);
// END PHP ?>

View File

@ -0,0 +1,98 @@
<?php // BEGIN PHP
$websitekey=basename(__DIR__); if (empty($websitepagefile)) $websitepagefile=__FILE__;
if (! defined('USEDOLIBARRSERVER') && ! defined('USEDOLIBARREDITOR')) {
$pathdepth = count(explode('/', $_SERVER['SCRIPT_NAME'])) - 2;
require_once ($pathdepth ? str_repeat('../', $pathdepth) : './').'master.inc.php';
} // Not already loaded
require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';
ob_start();
// END PHP ?>
<html lang="en">
<head>
<title>Header</title>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="" />
<meta name="title" content="Header" />
<meta name="description" content="" />
<meta name="generator" content="Dolibarr 17.0.0-beta (https://www.dolibarr.org)" />
<meta name="dolibarr:pageid" content="253" />
<?php if ($website->use_manifest) { print '<link rel="manifest" href="/manifest.json.php" />'."\n"; } ?>
<!-- Include link to CSS file -->
<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />
<!-- Include link to JS file -->
<script async src="/javascript.js.php"></script>
<!-- Include HTML header from common file -->
<?php if (file_exists(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")) include DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html"; ?>
<!-- Include HTML header from page header block -->
</head>
<!-- File generated by Dolibarr website module editor -->
<body id="bodywebsite" class="bodywebsite bodywebpage-header">
<section id="header" contenteditable="true">
<nav class="navbar navbar-expand-lg bg-white shadow-lg">
<div class="container">
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNav"
aria-controls="navbarNav"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="index.html"><?php echo $mysoc->name; ?></a>
<div class="d-lg-none">
<a href="contact.php#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
><?php $langs->trans("Reservation"); ?></a>
</div>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link<?php echo ($websitepage->ref == 'index' ? ' active' : ''); ?>" href="index.php"><?php echo $weblangs->trans("Home"); ?></a>
</li>
<li class="nav-item">
<a class="nav-link<?php echo ($websitepage->ref == 'about' ? ' active' : ''); ?>" href="about.php"><?php echo $weblangs->trans("About"); ?></a>
</li>
<li class="nav-item">
<a class="nav-link<?php echo ($websitepage->ref == 'menu' ? ' active' : ''); ?>" href="menu.php"><?php echo $weblangs->trans("Menu"); ?></a>
</li>
<li class="nav-item">
<a class="nav-link<?php echo ($websitepage->ref == 'contact' ? ' active' : ''); ?>" href="contact.php"><?php echo $weblangs->trans("Contact"); ?></a>
</li>
</ul>
</div>
<div class="d-none d-lg-block">
<a href="contact.php#reservation"
type="button"
class="custom-btn btn btn-danger"
data-bs-toggle="modal"
data-bs-target="#BookingModal"
><?php echo $weblangs->trans("Reservation"); ?></a>
</div>
</div>
</nav>
</section>
</body>
</html>
<?php // BEGIN PHP
$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp, "html", 253);
// END PHP ?>

View File

@ -11,44 +11,6 @@ header('Content-type: text/css');
// END PHP ?> // END PHP ?>
@charset "UTF-8"; @charset "UTF-8";
.bodywebsite {
/*!
* Bootstrap v5.2.1 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors
* Copyright 2011-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
/* rtl:begin:ignore */
/* rtl:end:ignore */
/* rtl:begin:ignore */
/* rtl:end:ignore */
/* rtl:begin:ignore */
/* rtl:end:ignore */
/* rtl:begin:ignore */
/* rtl:end:ignore */
/* rtl:begin:ignore */
/* rtl:end:ignore */
/* rtl:options: {
"autoRename": true,
"stringMap":[ {
"name" : "prev-next",
"search" : "prev",
"replace" : "next"
} ]
} */
/* rtl:begin:remove */
/* rtl:end:remove */
/*# sourceMappingURL=bootstrap.css.map */;
}
.bodywebsite :root { .bodywebsite :root {
--bs-blue: #0d6efd; --bs-blue: #0d6efd;
--bs-indigo: #6610f2; --bs-indigo: #6610f2;
@ -143,6 +105,10 @@ header('Content-type: text/css');
-webkit-tap-highlight-color: transparent; -webkit-tap-highlight-color: transparent;
} }
.bodywebsite .center {
text-align: center;
}
.bodywebsite hr { .bodywebsite hr {
margin: 1rem 0; margin: 1rem 0;
color: inherit; color: inherit;
@ -8367,6 +8333,7 @@ header('Content-type: text/css');
.bodywebsite .m-1 { .bodywebsite .m-1 {
margin: 0.25rem !important; margin: 0.25rem !important;
padding-left: 0px !important;
} }
.bodywebsite .m-2 { .bodywebsite .m-2 {
@ -12596,8 +12563,8 @@ body.bodywebsite { margin: 0; font-family: 'Open Sans', sans-serif; }
} }
.bodywebsite .section-padding { .bodywebsite .section-padding {
padding-top: 8rem; padding-top: 6rem;
padding-bottom: 8rem; padding-bottom: 6rem;
} }
.bodywebsite b, .bodywebsite b,
@ -13019,8 +12986,8 @@ body.bodywebsite { margin: 0; font-family: 'Open Sans', sans-serif; }
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
background-size: cover; background-size: cover;
padding-top: 7rem; padding-top: 3rem;
padding-bottom: 7rem; padding-bottom: 3rem;
position: relative; position: relative;
} }

File diff suppressed because one or more lines are too long

View File

@ -57,7 +57,7 @@ create table llx_product
fk_user_modif integer, -- user making last change fk_user_modif integer, -- user making last change
tosell tinyint DEFAULT 1, -- Product you sell tosell tinyint DEFAULT 1, -- Product you sell
tobuy tinyint DEFAULT 1, -- Product you buy tobuy tinyint DEFAULT 1, -- Product you buy
onportal tinyint DEFAULT 0, -- If it is a product you sell and you want to sell it on portal (module website must be on) onportal tinyint DEFAULT 0, -- If it is a product you sell and you want to sell it from internal portal (module 'portal')
tobatch tinyint DEFAULT 0 NOT NULL, -- Is it a product that need a batch management (eat-by or lot management) tobatch tinyint DEFAULT 0 NOT NULL, -- Is it a product that need a batch management (eat-by or lot management)
sell_or_eat_by_mandatory tinyint DEFAULT 0 NOT NULL, -- Make sell-by or eat-by date mandatory sell_or_eat_by_mandatory tinyint DEFAULT 0 NOT NULL, -- Make sell-by or eat-by date mandatory
batch_mask varchar(32) DEFAULT NULL, -- If the product has batch feature, you may want to use a batch mask per product batch_mask varchar(32) DEFAULT NULL, -- If the product has batch feature, you may want to use a batch mask per product

View File

@ -1881,7 +1881,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models
IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval
##### GeoIPMaxmind ##### ##### GeoIPMaxmind #####
GeoIPMaxmindSetup=GeoIP Maxmind module setup GeoIPMaxmindSetup=GeoIP Maxmind module setup
PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.<br>Examples:<br>/usr/local/share/GeoIP/GeoIP.dat<br>/usr/share/GeoIP/GeoIP.dat<br>/usr/share/GeoIP/GeoLite2-Country.mmdb PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation
NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions).
YouCanDownloadFreeDatFileTo=You can download a <b>free demo version</b> of the Maxmind GeoIP country file at %s. YouCanDownloadFreeDatFileTo=You can download a <b>free demo version</b> of the Maxmind GeoIP country file at %s.
YouCanDownloadAdvancedDatFileTo=You can also download a more <b>complete version, with updates,</b> of the Maxmind GeoIP country file at %s. YouCanDownloadAdvancedDatFileTo=You can also download a more <b>complete version, with updates,</b> of the Maxmind GeoIP country file at %s.

View File

@ -153,3 +153,5 @@ PreviousContainer=Previous page/container
WebsiteMustBeDisabled=The website must have the status "%s" WebsiteMustBeDisabled=The website must have the status "%s"
WebpageMustBeDisabled=The web page must have the status "%s" WebpageMustBeDisabled=The web page must have the status "%s"
SetWebsiteOnlineBefore=When website is offline, all pages are offline. Change status of website first. SetWebsiteOnlineBefore=When website is offline, all pages are offline. Change status of website first.
Booking=Booking
Reservation=Reservation

View File

@ -1484,7 +1484,7 @@ function top_httphead($contenttype = 'text/html', $forcenocache = 0)
// Referrer-Policy // Referrer-Policy
// Say if we must provide the referrer when we jump onto another web page. // Say if we must provide the referrer when we jump onto another web page.
// Default browser are 'strict-origin-when-cross-origin', we want more so we use 'same-origin' so we don't send any referrer when going into another web site // Default browser are 'strict-origin-when-cross-origin' (only domain is sent on other domain switching), we want more so we use 'same-origin' so browser doesn't send any referrer when going into another web site domain.
if (!defined('MAIN_SECURITY_FORCERP')) { if (!defined('MAIN_SECURITY_FORCERP')) {
$referrerpolicy = getDolGlobalString('MAIN_SECURITY_FORCERP', "same-origin"); $referrerpolicy = getDolGlobalString('MAIN_SECURITY_FORCERP', "same-origin");

View File

@ -1709,6 +1709,7 @@ select.widthcentpercentminusxx, span.widthcentpercentminusxx:not(.select2-select
select.minwidth100imp, select.minwidth100, select.minwidth200, select.minwidth200imp, select.minwidth300 { select.minwidth100imp, select.minwidth100, select.minwidth200, select.minwidth200imp, select.minwidth300 {
width: calc(100% - 40px) !important; width: calc(100% - 40px) !important;
min-width: 100px;
display: inline-block; display: inline-block;
} }
select.widthcentpercentminusxx, span.widthcentpercentminusxx:not(.select2-selection), input.widthcentpercentminusxx { select.widthcentpercentminusxx, span.widthcentpercentminusxx:not(.select2-selection), input.widthcentpercentminusxx {

View File

@ -154,7 +154,7 @@ class Website extends CommonObject
* @param User $user User that creates * @param User $user User that creates
* @param bool $notrigger false=launch triggers after, true=disable triggers * @param bool $notrigger false=launch triggers after, true=disable triggers
* *
* @return int <0 if KO, Id of created object if OK * @return int <0 if KO, 0 if already exists, ID of created object if OK
*/ */
public function create(User $user, $notrigger = false) public function create(User $user, $notrigger = false)
{ {
@ -282,8 +282,11 @@ class Website extends CommonObject
// Commit or rollback // Commit or rollback
if ($error) { if ($error) {
$this->db->rollback(); $this->db->rollback();
if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
return 0;
} else {
return -1 * $error; return -1 * $error;
}
} else { } else {
$this->db->commit(); $this->db->commit();

View File

@ -694,7 +694,10 @@ if ($action == 'addsite' && $usercanedit) {
$tmpobject->virtualhost = GETPOST('virtualhost', 'alpha'); $tmpobject->virtualhost = GETPOST('virtualhost', 'alpha');
$result = $tmpobject->create($user); $result = $tmpobject->create($user);
if ($result <= 0) { if ($result == 0) {
$error++;
setEventMessages($langs->trans("ErrorLabelAlreadyExists"), null, 'errors');
} elseif ($result < 0) {
$error++; $error++;
setEventMessages($tmpobject->error, $tmpobject->errors, 'errors'); setEventMessages($tmpobject->error, $tmpobject->errors, 'errors');
} }
@ -3678,7 +3681,7 @@ if ($action == 'editcss') {
// Manifest.json // Manifest.json
print '<tr><td class="tdtop">'; print '<tr><td class="tdtop">';
$htmlhelp = $langs->trans("Example").' :<br>'; $htmlhelp = $langs->trans("Example").' :<br>';
$htmlhelp .= dol_htmlentitiesbr($manifestjsoncontentdefault); $htmlhelp .= '<small>'.dol_htmlentitiesbr($manifestjsoncontentdefault).'</small>';
print $form->textwithpicto($langs->trans('WEBSITE_MANIFEST_JSON'), $htmlhelp, 1, 'help', '', 0, 2, 'manifestjsontooltip'); print $form->textwithpicto($langs->trans('WEBSITE_MANIFEST_JSON'), $htmlhelp, 1, 'help', '', 0, 2, 'manifestjsontooltip');
print '</td><td>'; print '</td><td>';
print $langs->trans("UseManifest").': '.$form->selectyesno('use_manifest', $website->use_manifest, 1).'<br>'; print $langs->trans("UseManifest").': '.$form->selectyesno('use_manifest', $website->use_manifest, 1).'<br>';

View File

@ -0,0 +1,178 @@
<?php
/* Copyright (C) 2010 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
* or see https://www.gnu.org/
*/
/**
* \file test/phpunit/WebsiteTest.php
* \ingroup test
* \brief PHPUnit test
* \remarks To run this script as CLI: phpunit filename.php
*/
global $conf,$user,$langs,$db;
//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver
//require_once 'PHPUnit/Autoload.php';
if (! defined('NOREQUIRESOC')) {
define('NOREQUIRESOC', '1');
}
if (! defined('NOCSRFCHECK')) {
define('NOCSRFCHECK', '1');
}
if (! defined('NOTOKENRENEWAL')) {
define('NOTOKENRENEWAL', '1');
}
if (! defined('NOREQUIREMENU')) {
define('NOREQUIREMENU', '1'); // If there is no menu to show
}
if (! defined('NOREQUIREHTML')) {
define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php
}
if (! defined('NOREQUIREAJAX')) {
define('NOREQUIREAJAX', '1');
}
if (! defined("NOLOGIN")) {
define("NOLOGIN", '1'); // If this page is public (can be called outside logged session)
}
if (! defined("NOSESSION")) {
define("NOSESSION", '1');
}
require_once dirname(__FILE__).'/../../htdocs/main.inc.php';
require_once dirname(__FILE__).'/../../htdocs/core/lib/website.lib.php';
if (empty($user->id)) {
print "Load permissions for admin user nb 1\n";
$user->fetch(1);
$user->getrights();
}
$conf->global->MAIN_DISABLE_ALL_MAILS=1;
/**
* Class for PHPUnit tests
*
* @backupGlobals disabled
* @backupStaticAttributes enabled
* @remarks backupGlobals must be disabled to have db,conf,user and lang not erased.
*/
class WebsiteTest extends PHPUnit\Framework\TestCase
{
protected $savconf;
protected $savuser;
protected $savlangs;
protected $savdb;
/**
* Constructor
* We save global variables into local variables
*
* @return SecurityTest
*/
public function __construct()
{
parent::__construct();
//$this->sharedFixture
global $conf,$user,$langs,$db;
$this->savconf=$conf;
$this->savuser=$user;
$this->savlangs=$langs;
$this->savdb=$db;
print __METHOD__." db->type=".$db->type." user->id=".$user->id;
//print " - db ".$db->db;
print "\n";
}
/**
* setUpBeforeClass
*
* @return void
*/
public static function setUpBeforeClass()
{
global $conf,$user,$langs,$db;
$db->begin(); // This is to have all actions inside a transaction even if test launched without suite.
print __METHOD__."\n";
}
/**
* tearDownAfterClass
*
* @return void
*/
public static function tearDownAfterClass()
{
global $conf,$user,$langs,$db;
$db->rollback();
print __METHOD__."\n";
}
/**
* Init phpunit tests
*
* @return void
*/
protected function setUp()
{
global $conf,$user,$langs,$db;
$conf=$this->savconf;
$user=$this->savuser;
$langs=$this->savlangs;
$db=$this->savdb;
print __METHOD__."\n";
}
/**
* End phpunit tests
*
* @return void
*/
protected function tearDown()
{
print __METHOD__."\n";
}
/**
* testGetPagesFromSearchCriterias
*
* @return void
*/
public function testGetPagesFromSearchCriterias()
{
global $db;
$s = "123') OR 1=1-- \' xxx";
/*
var_dump($s);
var_dump($db->escapeforlike($s));
var_dump($db->escape($db->escapeforlike($s)));
*/
$res = getPagesFromSearchCriterias('page,blogpost', 'meta,content', $s, 2, 'date_creation', 'DESC', 'en');
//var_dump($res);
print __METHOD__." message=".$res['code']."\n";
// We must found no line (so code should be KO). If we found somethiing, it means there is a SQL injection of the 1=1
$this->assertEquals($res['code'], 'KO');
}
}