From 8ad2081555c0616f07cb3fe9dafed817dcf74950 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 12 Aug 2019 22:19:24 +0200 Subject: [PATCH] NEW Can select website templates from available default templates --- ChangeLog | 2 +- htdocs/admin/ihm.php | 4 +- htdocs/core/lib/files.lib.php | 7 + htdocs/core/lib/usergroups.lib.php | 33 +- htdocs/core/lib/website.lib.php | 312 +------------ htdocs/core/lib/website2.lib.php | 430 ++++++++++++++++++ .../websites/website-template-corporate.jpg | Bin 0 -> 94744 bytes htdocs/langs/en_US/main.lang | 1 + htdocs/langs/en_US/website.lang | 5 +- htdocs/user/param_ihm.php | 4 +- htdocs/viewimage.php | 2 +- htdocs/website/index.php | 62 ++- 12 files changed, 504 insertions(+), 358 deletions(-) create mode 100644 htdocs/core/lib/website2.lib.php create mode 100644 htdocs/install/doctemplates/websites/website-template-corporate.jpg diff --git a/ChangeLog b/ChangeLog index cb4ad0c3982..0839fd77e95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,7 +15,7 @@ WARNING: Following changes may create regressions for some external modules, but were necessary to make Dolibarr better: * Properties ->libelle_incoterms were renamed into ->label_incoterms * Removed the method liste_array() of project class. It was not used by core code. - +* The function show_theme() hase been renamed into showSkins() ***** ChangeLog for 10.0.1 compared to 10.0.0 ***** diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 509a04494d2..37c997ee306 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -259,7 +259,7 @@ if ($action == 'edit') // Edit print '
'."\n"; // Themes and themes options - show_theme(null, 1); + showSkins(null, 1); print '
'; // Other @@ -464,7 +464,7 @@ else // Show // Themes - show_theme(null, 0); + showSkins(null, 0); print '
'; diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index e126ff2b7f0..92b739b3190 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -555,6 +555,7 @@ function dol_count_nb_of_line($file) * * @param string $pathoffile Path of file * @return integer File size + * @see dol_print_size() */ function dol_filesize($pathoffile) { @@ -2164,6 +2165,12 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $accessallowed=($user->admin && basename($original_file) == $original_file && preg_match('/^dolibarr.*\.log$/', basename($original_file))); $original_file=$dolibarr_main_data_root.'/'.$original_file; } + // Wrapping for *.log files, like when used with url http://.../document.php?modulepart=logs&file=dolibarr.log + elseif ($modulepart == 'doctemplateswebsite' && !empty($dolibarr_main_data_root)) + { + $accessallowed=($fuser->rights->website->write && preg_match('/\.jpg$/i', basename($original_file))); + $original_file=$dolibarr_main_data_root.'/doctemplates/websites/'.$original_file; + } // Wrapping for *.zip files, like when used with url http://.../document.php?modulepart=packages&file=module_myfile.zip elseif ($modulepart == 'packages' && !empty($dolibarr_main_data_root)) { diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index ea7f9856509..81e9c8dea73 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -295,10 +295,9 @@ function user_admin_prepare_head() * @param boolean $foruserprofile Show for user profile view * @return void */ -function show_theme($fuser, $edit = 0, $foruserprofile = false) +function showSkins($fuser, $edit = 0, $foruserprofile = false) { global $conf,$langs,$db,$form; - global $bc; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; @@ -351,9 +350,7 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) { print ''.$langs->trans("DefaultSkin").''; print ''; - $url='https://www.dolistore.com/lang-en/4-skins'; - if (preg_match('/fr/i', $langs->defaultlang)) $url='https://www.dolistore.com/fr/4-themes'; - //if (preg_match('/es/i',$langs->defaultlang)) $url='http://www.dolistore.com/lang-es/4-themes'; + $url='https://www.dolistore.com/4-skins'; print ''; print $langs->trans('DownloadMoreSkins'); print ''; @@ -432,7 +429,7 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) print ''; print ''.$langs->trans("TopMenuDisableImages").''; print ''.($conf->global->THEME_TOPMENU_DISABLE_IMAGE?$conf->global->THEME_TOPMENU_DISABLE_IMAGE:$langs->trans("Default")).''; - print 'conf->THEME_ELDY_TEXTLINK)?" checked":""); + print 'conf->THEME_ELDY_TEXTLINK)?" checked":""); print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo print '> '.$langs->trans("UsePersonalValue").''; print ''; @@ -477,7 +474,7 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) print ''; print ''.$langs->trans("TopMenuBackgroundColor").''; print ''.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).''; - print 'conf->THEME_ELDY_TOPMENU_BACK1)?" checked":""); + print 'conf->THEME_ELDY_TOPMENU_BACK1)?" checked":""); print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo print '> '.$langs->trans("UsePersonalValue").''; print ''; @@ -524,7 +521,7 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) print ''; print ''.$langs->trans("TopMenuBackgroundColor").''; print ''.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).''; - print 'conf->THEME_ELDY_TOPMENU_BACK1)?" checked":""); + print 'conf->THEME_ELDY_TOPMENU_BACK1)?" checked":""); print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo print '> '.$langs->trans("UsePersonalValue").''; print ''; @@ -573,7 +570,7 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) print ''; print ''.$langs->trans("TopMenuBackgroundColor").''; print ''.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_VERMENU_BACK1:$langs->trans("Default")).''; - print 'conf->THEME_ELDY_TOPMENU_BACK1)?" checked":""); + print 'conf->THEME_ELDY_TOPMENU_BACK1)?" checked":""); print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo print '> '.$langs->trans("UsePersonalValue").''; print ''; @@ -763,7 +760,7 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) print ''; print ''.$langs->trans("TopMenuBackgroundColor").''; print ''.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TEXTLINK:$langs->trans("Default")).''; - print 'conf->THEME_ELDY_TEXTLINK)?" checked":""); + print 'conf->THEME_ELDY_TEXTLINK)?" checked":""); print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo print '> '.$langs->trans("UsePersonalValue").''; print ''; @@ -813,9 +810,9 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) /* Must first change option to choose color of highlight instead of yes or no. print ''; print ''.$langs->trans("HighlightLinesOnMouseHover").''; - print 'global->THEME_ELDY_USE_HOVER?" checked":"").'>'; - print ' '.$langs->trans("UsePersonalValue").''; - print ''; + print 'global->THEME_ELDY_USE_HOVER?" checked":"").'>'; + print ' '.$langs->trans("UsePersonalValue").''; + print ''; print '   ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print ''; print ''; @@ -825,7 +822,7 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) print ''; print ''.$langs->trans("HighlightLinesColor").''; print ''; - //print ''; + //print ''; //print '   ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; if ($edit) { @@ -856,9 +853,9 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) /* Must first change option to choose color of highlight instead of yes or no. print ''; print ''.$langs->trans("HighlightLinesOnMouseHover").''; - print 'global->THEME_ELDY_USE_HOVER?" checked":"").'>'; - print ' '.$langs->trans("UsePersonalValue").''; - print ''; + print 'global->THEME_ELDY_USE_HOVER?" checked":"").'>'; + print ' '.$langs->trans("UsePersonalValue").''; + print ''; print '   ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print ''; print ''; @@ -869,7 +866,7 @@ function show_theme($fuser, $edit = 0, $foruserprofile = false) print ''; print ''.$langs->trans("HighlightLinesChecked").''; print ''; - //print ''; + //print ''; //print '   ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; if ($edit) { diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 78da87a8fe4..e9507b8556d 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -622,7 +622,7 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25) if (empty($arrayresult['list'])) { $arrayresult['code']='KO'; - $arrayresult['message']=$weblangs->trans("NothingFound"); + $arrayresult['message']=$weblangs->trans("NoRecordFound"); } } else @@ -819,313 +819,3 @@ function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modify } } } - - - -/** - * Save content of a page on disk - * - * @param string $filemaster Full path of filename master.inc.php for website to generate - * @return boolean True if OK - */ -function dolSaveMasterFile($filemaster) -{ - global $conf; - - // Now generate the master.inc.php page - dol_syslog("We regenerate the master file"); - dol_delete_file($filemaster); - - $mastercontent = ''."\n"; - $result = file_put_contents($filemaster, $mastercontent); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($filemaster, octdec($conf->global->MAIN_UMASK)); - - return $result; -} - -/** - * Save content of a page on disk - * - * @param string $filealias Full path of filename to generate - * @param Website $object Object website - * @param WebsitePage $objectpage Object websitepage - * @return boolean True if OK - */ -function dolSavePageAlias($filealias, $object, $objectpage) -{ - global $conf; - - // Now create the .tpl file (duplicate code with actions updatesource or updatecontent but we need this to save new header) - dol_syslog("We regenerate the alias page filealias=".$filealias); - - $aliascontent = 'id.'.tpl.php\'; '; - $aliascontent.= 'else require $dolibarr_main_data_root.\'/website/\'.$website->ref.\'/page'.$objectpage->id.'.tpl.php\';'."\n"; - $aliascontent.= '?>'."\n"; - $result = file_put_contents($filealias, $aliascontent); - if (! empty($conf->global->MAIN_UMASK)) { - @chmod($filealias, octdec($conf->global->MAIN_UMASK)); - } - - return ($result?true:false); -} - - -/** - * Save content of a page on disk - * - * @param string $filetpl Full path of filename to generate - * @param Website $object Object website - * @param WebsitePage $objectpage Object websitepage - * @return boolean True if OK - */ -function dolSavePageContent($filetpl, $object, $objectpage) -{ - global $conf; - - // Now create the .tpl file (duplicate code with actions updatesource or updatecontent but we need this to save new header) - dol_syslog("We regenerate the tpl page filetpl=".$filetpl); - - dol_delete_file($filetpl); - - $shortlangcode = ''; - if ($objectpage->lang) $shortlangcode=preg_replace('/[_-].*$/', '', $objectpage->lang); // en_US or en-US -> en - - $tplcontent =''; - $tplcontent.= "\n"; - if (! empty($conf->global->WEBSITE_FORCE_DOCTYPE_HTML5)) - { - $tplcontent.= "\n"; - } - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''.dol_string_nohtmltag($objectpage->title, 0, 'UTF-8').''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= '/ims\', \'\', file_get_contents(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")); ?>'."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= preg_replace('/<\/?html>/ims', '', $objectpage->htmlheader)."\n"; - $tplcontent.= ''."\n"; - - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= $objectpage->content."\n"; - $tplcontent.= ''."\n"; - $tplcontent.= ''."\n"; - - $tplcontent.= '"."\n"; - - //var_dump($filetpl);exit; - $result = file_put_contents($filetpl, $tplcontent); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($filetpl, octdec($conf->global->MAIN_UMASK)); - - return $result; -} - - -/** - * Save content of the index.php and wrapper.php page - * - * @param string $pathofwebsite Path of website root - * @param string $fileindex Full path of file index.php - * @param string $filetpl File tpl to index.php page redirect to - * @param string $filewrapper Full path of file wrapper.php - * @return boolean True if OK - */ -function dolSaveIndexPage($pathofwebsite, $fileindex, $filetpl, $filewrapper) -{ - global $conf; - - $result1=false; - $result2=false; - - dol_mkdir($pathofwebsite); - - dol_delete_file($fileindex); - $indexcontent = ''."\n"; - $result1 = file_put_contents($fileindex, $indexcontent); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($fileindex, octdec($conf->global->MAIN_UMASK)); - - dol_delete_file($filewrapper); - - $wrappercontent=file_get_contents(DOL_DOCUMENT_ROOT.'/website/samples/wrapper.html'); - - $result2 = file_put_contents($filewrapper, $wrappercontent); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($filewrapper, octdec($conf->global->MAIN_UMASK)); - - return ($result1 && $result2); -} - - -/** - * Save content of a page on disk - * - * @param string $filehtmlheader Full path of filename to generate - * @param string $htmlheadercontent Content of file - * @return boolean True if OK - */ -function dolSaveHtmlHeader($filehtmlheader, $htmlheadercontent) -{ - global $conf, $pathofwebsite; - - dol_syslog("Save html header into ".$filehtmlheader); - - dol_mkdir($pathofwebsite); - $result = file_put_contents($filehtmlheader, $htmlheadercontent); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($filehtmlheader, octdec($conf->global->MAIN_UMASK)); - - if (! $result) - { - setEventMessages('Failed to write file '.$filehtmlheader, null, 'errors'); - return false; - } - - return true; -} - -/** - * Save content of a page on disk - * - * @param string $filecss Full path of filename to generate - * @param string $csscontent Content of file - * @return boolean True if OK - */ -function dolSaveCssFile($filecss, $csscontent) -{ - global $conf, $pathofwebsite; - - dol_syslog("Save css file into ".$filecss); - - dol_mkdir($pathofwebsite); - $result = file_put_contents($filecss, $csscontent); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($filecss, octdec($conf->global->MAIN_UMASK)); - - if (! $result) - { - setEventMessages('Failed to write file '.$filecss, null, 'errors'); - return false; - } - - return true; -} - -/** - * Save content of a page on disk - * - * @param string $filejs Full path of filename to generate - * @param string $jscontent Content of file - * @return boolean True if OK - */ -function dolSaveJsFile($filejs, $jscontent) -{ - global $conf, $pathofwebsite; - - dol_syslog("Save js file into ".$filejs); - - dol_mkdir($pathofwebsite); - $result = file_put_contents($filejs, $jscontent); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($filejs, octdec($conf->global->MAIN_UMASK)); - - if (! $result) - { - setEventMessages('Failed to write file '.$filejs, null, 'errors'); - return false; - } - - return true; -} - -/** - * Save content of a page on disk - * - * @param string $filerobot Full path of filename to generate - * @param string $robotcontent Content of file - * @return boolean True if OK - */ -function dolSaveRobotFile($filerobot, $robotcontent) -{ - global $conf, $pathofwebsite; - - dol_syslog("Save robot file into ".$filerobot); - - dol_mkdir($pathofwebsite); - $result = file_put_contents($filerobot, $robotcontent); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($filerobot, octdec($conf->global->MAIN_UMASK)); - - if (! $result) - { - setEventMessages('Failed to write file '.$filerobot, null, 'errors'); - return false; - } - - return true; -} - -/** - * Save content of a page on disk - * - * @param string $filehtaccess Full path of filename to generate - * @param string $htaccess Content of file - * @return boolean True if OK - */ -function dolSaveHtaccessFile($filehtaccess, $htaccess) -{ - global $conf, $pathofwebsite; - - dol_syslog("Save htaccess file into ".$filehtaccess); - - dol_mkdir($pathofwebsite); - $result = file_put_contents($filehtaccess, $htaccess); - if (! empty($conf->global->MAIN_UMASK)) - @chmod($filehtaccess, octdec($conf->global->MAIN_UMASK)); - - if (! $result) - { - setEventMessages('Failed to write file '.$filehtaccess, null, 'errors'); - return false; - } - - return true; -} diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php new file mode 100644 index 00000000000..903b8a8d144 --- /dev/null +++ b/htdocs/core/lib/website2.lib.php @@ -0,0 +1,430 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/core/lib/website2.lib.php + * \ingroup website + * \brief Library for website module (rare functions not required for execution of website) + */ + + + +/** + * Save content of a page on disk + * + * @param string $filemaster Full path of filename master.inc.php for website to generate + * @return boolean True if OK + */ +function dolSaveMasterFile($filemaster) +{ + global $conf; + + // Now generate the master.inc.php page + dol_syslog("We regenerate the master file"); + dol_delete_file($filemaster); + + $mastercontent = ''."\n"; + $result = file_put_contents($filemaster, $mastercontent); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($filemaster, octdec($conf->global->MAIN_UMASK)); + + return $result; +} + +/** + * Save content of a page on disk + * + * @param string $filealias Full path of filename to generate + * @param Website $object Object website + * @param WebsitePage $objectpage Object websitepage + * @return boolean True if OK + */ +function dolSavePageAlias($filealias, $object, $objectpage) +{ + global $conf; + + // Now create the .tpl file (duplicate code with actions updatesource or updatecontent but we need this to save new header) + dol_syslog("We regenerate the alias page filealias=".$filealias); + + $aliascontent = 'id.'.tpl.php\'; '; + $aliascontent.= 'else require $dolibarr_main_data_root.\'/website/\'.$website->ref.\'/page'.$objectpage->id.'.tpl.php\';'."\n"; + $aliascontent.= '?>'."\n"; + $result = file_put_contents($filealias, $aliascontent); + if (! empty($conf->global->MAIN_UMASK)) { + @chmod($filealias, octdec($conf->global->MAIN_UMASK)); + } + + return ($result?true:false); +} + + +/** + * Save content of a page on disk + * + * @param string $filetpl Full path of filename to generate + * @param Website $object Object website + * @param WebsitePage $objectpage Object websitepage + * @return boolean True if OK + */ +function dolSavePageContent($filetpl, $object, $objectpage) +{ + global $conf; + + // Now create the .tpl file (duplicate code with actions updatesource or updatecontent but we need this to save new header) + dol_syslog("We regenerate the tpl page filetpl=".$filetpl); + + dol_delete_file($filetpl); + + $shortlangcode = ''; + if ($objectpage->lang) $shortlangcode=preg_replace('/[_-].*$/', '', $objectpage->lang); // en_US or en-US -> en + + $tplcontent =''; + $tplcontent.= "\n"; + if (! empty($conf->global->WEBSITE_FORCE_DOCTYPE_HTML5)) + { + $tplcontent.= "\n"; + } + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''.dol_string_nohtmltag($objectpage->title, 0, 'UTF-8').''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= '/ims\', \'\', file_get_contents(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")); ?>'."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= preg_replace('/<\/?html>/ims', '', $objectpage->htmlheader)."\n"; + $tplcontent.= ''."\n"; + + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= $objectpage->content."\n"; + $tplcontent.= ''."\n"; + $tplcontent.= ''."\n"; + + $tplcontent.= '"."\n"; + + //var_dump($filetpl);exit; + $result = file_put_contents($filetpl, $tplcontent); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($filetpl, octdec($conf->global->MAIN_UMASK)); + + return $result; +} + + +/** + * Save content of the index.php and wrapper.php page + * + * @param string $pathofwebsite Path of website root + * @param string $fileindex Full path of file index.php + * @param string $filetpl File tpl to index.php page redirect to + * @param string $filewrapper Full path of file wrapper.php + * @return boolean True if OK + */ +function dolSaveIndexPage($pathofwebsite, $fileindex, $filetpl, $filewrapper) +{ + global $conf; + + $result1=false; + $result2=false; + + dol_mkdir($pathofwebsite); + + dol_delete_file($fileindex); + $indexcontent = ''."\n"; + $result1 = file_put_contents($fileindex, $indexcontent); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($fileindex, octdec($conf->global->MAIN_UMASK)); + + dol_delete_file($filewrapper); + + $wrappercontent=file_get_contents(DOL_DOCUMENT_ROOT.'/website/samples/wrapper.html'); + + $result2 = file_put_contents($filewrapper, $wrappercontent); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($filewrapper, octdec($conf->global->MAIN_UMASK)); + + return ($result1 && $result2); +} + + +/** + * Save content of a page on disk + * + * @param string $filehtmlheader Full path of filename to generate + * @param string $htmlheadercontent Content of file + * @return boolean True if OK + */ +function dolSaveHtmlHeader($filehtmlheader, $htmlheadercontent) +{ + global $conf, $pathofwebsite; + + dol_syslog("Save html header into ".$filehtmlheader); + + dol_mkdir($pathofwebsite); + $result = file_put_contents($filehtmlheader, $htmlheadercontent); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($filehtmlheader, octdec($conf->global->MAIN_UMASK)); + + if (! $result) + { + setEventMessages('Failed to write file '.$filehtmlheader, null, 'errors'); + return false; + } + + return true; +} + +/** + * Save content of a page on disk + * + * @param string $filecss Full path of filename to generate + * @param string $csscontent Content of file + * @return boolean True if OK + */ +function dolSaveCssFile($filecss, $csscontent) +{ + global $conf, $pathofwebsite; + + dol_syslog("Save css file into ".$filecss); + + dol_mkdir($pathofwebsite); + $result = file_put_contents($filecss, $csscontent); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($filecss, octdec($conf->global->MAIN_UMASK)); + + if (! $result) + { + setEventMessages('Failed to write file '.$filecss, null, 'errors'); + return false; + } + + return true; +} + +/** + * Save content of a page on disk + * + * @param string $filejs Full path of filename to generate + * @param string $jscontent Content of file + * @return boolean True if OK + */ +function dolSaveJsFile($filejs, $jscontent) +{ + global $conf, $pathofwebsite; + + dol_syslog("Save js file into ".$filejs); + + dol_mkdir($pathofwebsite); + $result = file_put_contents($filejs, $jscontent); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($filejs, octdec($conf->global->MAIN_UMASK)); + + if (! $result) + { + setEventMessages('Failed to write file '.$filejs, null, 'errors'); + return false; + } + + return true; +} + +/** + * Save content of a page on disk + * + * @param string $filerobot Full path of filename to generate + * @param string $robotcontent Content of file + * @return boolean True if OK + */ +function dolSaveRobotFile($filerobot, $robotcontent) +{ + global $conf, $pathofwebsite; + + dol_syslog("Save robot file into ".$filerobot); + + dol_mkdir($pathofwebsite); + $result = file_put_contents($filerobot, $robotcontent); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($filerobot, octdec($conf->global->MAIN_UMASK)); + + if (! $result) + { + setEventMessages('Failed to write file '.$filerobot, null, 'errors'); + return false; + } + + return true; +} + +/** + * Save content of a page on disk + * + * @param string $filehtaccess Full path of filename to generate + * @param string $htaccess Content of file + * @return boolean True if OK + */ +function dolSaveHtaccessFile($filehtaccess, $htaccess) +{ + global $conf, $pathofwebsite; + + dol_syslog("Save htaccess file into ".$filehtaccess); + + dol_mkdir($pathofwebsite); + $result = file_put_contents($filehtaccess, $htaccess); + if (! empty($conf->global->MAIN_UMASK)) + @chmod($filehtaccess, octdec($conf->global->MAIN_UMASK)); + + if (! $result) + { + setEventMessages('Failed to write file '.$filehtaccess, null, 'errors'); + return false; + } + + return true; +} + + + +/** + * Show list of themes. Show all thumbs of themes + * + * @param Website $website Object website to load the tempalte into + * @return void + */ +function showWebsiteTemplates(Website $website) +{ + global $conf,$langs,$db,$form; + global $bc; + + $dirthemes=array('/doctemplates/websites'); + if (! empty($conf->modules_parts['websitetemplates'])) // Using this feature slow down application + { + foreach($conf->modules_parts['websitetemplates'] as $reldir) + { + $dirthemes=array_merge($dirthemes, (array) ($reldir.'doctemplates/websites')); + } + } + $dirthemes=array_unique($dirthemes); + // Now dir_themes=array('/themes') or dir_themes=array('/theme','/mymodule/theme') + + $colspan=2; + + $thumbsbyrow=6; + print ''; + + // Title + print ''; + print ''; + + print ''; + print ''; + print ''; + print ''; + + print ''; + print '
'; + $url='https://www.dolistore.com/43-web-site-templates'; + print ''; + print $langs->trans('DownloadMoreSkins'); + print ''; + print '
'.$langs->trans("ThemeDir").''; + foreach($dirthemes as $dirtheme) + { + echo '"'.$dirtheme.'" '; + } + print '
'; + + print '
'; + + $i=0; + foreach($dirthemes as $dir) + { + //print $dirroot.$dir;exit; + $dirtheme=DOL_DATA_ROOT.$dir; // This include loop on $conf->file->dol_document_root + if (is_dir($dirtheme)) + { + $handle=opendir($dirtheme); + if (is_resource($handle)) + { + while (($subdir = readdir($handle))!==false) + { + if (is_file($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.' + && substr($subdir, 0, 3) <> 'CVS' && preg_match('/\.zip$/i', $subdir)) + { + $subdirwithoutzip = preg_replace('/\.zip$/i', '', $subdir); + + // Disable not stable themes (dir ends with _exp or _dev) + if ($conf->global->MAIN_FEATURES_LEVEL < 2 && preg_match('/_dev$/i', $subdir)) continue; + if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/_exp$/i', $subdir)) continue; + + print '
'; + + $file=$dirtheme."/".$subdirwithoutzip.".jpg"; + $url=DOL_URL_ROOT.'/viewimage.php?modulepart=doctemplateswebsite&file='.$subdirwithoutzip.".jpg"; + + if (! file_exists($file)) $url=DOL_URL_ROOT.'/public/theme/common/nophoto.png'; + print ''.$title.''; + print '
'; + print $subdir.' ('.dol_print_size(dol_filesize($dirtheme."/".$subdir), 1, 1).')'; + print '
ref.'&templateuserfile='.$subdir.'" class="button">'.$langs->trans("Load").''; + print '
'; + + $i++; + } + } + } + } + } + + print '
'; + + print '
'; +} diff --git a/htdocs/install/doctemplates/websites/website-template-corporate.jpg b/htdocs/install/doctemplates/websites/website-template-corporate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a693fb4395eaf618fd26b3267fe204183ca8a792 GIT binary patch literal 94744 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Ⓢ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ƈ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 alias is also used to forge a SEO URL when website is ran from a Virtual host of a Web server (like Apacke, Nginx, ...). Use the button "%s" to edit this alias. EditTheWebSiteForACommonHeader=Note: If you want to define a personalized header for all pages, edit the header on the site level instead of on the page/container. @@ -89,7 +90,8 @@ AliasPageAlreadyExists=Alias page %s already exists CorporateHomePage=Corporate Home page EmptyPage=Empty page ExternalURLMustStartWithHttp=External URL must start with http:// or https:// -ZipOfWebsitePackageToImport=Zip file of website package +ZipOfWebsitePackageToImport=Upload the Zip file of the website template package +ZipOfWebsitePackageToLoad=or Choose an available embedded website template package ShowSubcontainers=Include dynamic content InternalURLOfPage=Internal URL of page ThisPageIsTranslationOf=This page/container is a translation of @@ -101,5 +103,4 @@ NotAllowedToAddDynamicContent=You don't have permission to add or edit PHP dynam ReplaceWebsiteContent=Search or Replace website content DeleteAlsoJs=Delete also all javascript files specific to this website? DeleteAlsoMedias=Delete also all medias files specific to this website? -# Export MyWebsitePages=My website pages \ No newline at end of file diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index c33c26fa95b..30dc17fa0a7 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -314,7 +314,7 @@ if ($action == 'edit') print '
'; // Theme - show_theme($object, (($user->admin || empty($dolibarr_main_demo))?1:0), true); + showSkins($object, (($user->admin || empty($dolibarr_main_demo))?1:0), true); dol_fiche_end(); @@ -387,7 +387,7 @@ else // Skin - show_theme($object, 0, true); + showSkins($object, 0, true); dol_fiche_end(); diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index 69ab71e62ed..8dc38eb2ae1 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -94,7 +94,7 @@ $entity=GETPOST('entity', 'int')?GETPOST('entity', 'int'):$conf->entity; // Security check if (empty($modulepart) && empty($hashp)) accessforbidden('Bad link. Bad value for parameter modulepart', 0, 0, 1); -if (empty($original_file) && empty($hashp) && $modulepart != 'barcode') accessforbidden('Bad link. Missing identification to find file (original_file or hashp)', 0, 0, 1); +if (empty($original_file) && empty($hashp) && $modulepart != 'barcode') accessforbidden('Bad link. Missing identification to find file (param file or hashp)', 0, 0, 1); if ($modulepart == 'fckeditor') $modulepart='medias'; // For backward compatibility diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 5083f492266..77b70261a4c 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -30,6 +30,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/website2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formwebsite.class.php'; @@ -1671,14 +1672,14 @@ if ($action == 'exportsite') // Import site if ($action == 'importsiteconfirm') { - if (empty($_FILES)) + if (empty($_FILES) && ! GETPOSTISSET('templateuserfile')) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("File")), null, 'errors'); $action = 'importsite'; } else { - if (! empty($_FILES)) + if (! empty($_FILES) || GETPOSTISSET('templateuserfile')) { // Check symlink to medias and restore it if ko $pathtomedias=DOL_DATA_ROOT.'/medias'; @@ -1695,29 +1696,37 @@ if ($action == 'importsiteconfirm') } } - if (is_array($_FILES['userfile']['tmp_name'])) $userfiles=$_FILES['userfile']['tmp_name']; - else $userfiles=array($_FILES['userfile']['tmp_name']); - - foreach($userfiles as $key => $userfile) + $fileofzip = ''; + if (GETPOSTISSET('templateuserfile')) { - if (empty($_FILES['userfile']['tmp_name'][$key])) + $fileofzip = DOL_DATA_ROOT.'/doctemplates/websites/'.GETPOST('templateuserfile', 'alpha'); + } + elseif (! empty($_FILES)) + { + if (is_array($_FILES['userfile']['tmp_name'])) $userfiles=$_FILES['userfile']['tmp_name']; + else $userfiles=array($_FILES['userfile']['tmp_name']); + + foreach($userfiles as $key => $userfile) { - $error++; - if ($_FILES['userfile']['error'][$key] == 1 || $_FILES['userfile']['error'][$key] == 2){ - setEventMessages($langs->trans('ErrorFileSizeTooLarge'), null, 'errors'); - $action = 'importsite'; - } - else { - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("File")), null, 'errors'); - $action = 'importsite'; + if (empty($_FILES['userfile']['tmp_name'][$key])) + { + $error++; + if ($_FILES['userfile']['error'][$key] == 1 || $_FILES['userfile']['error'][$key] == 2){ + setEventMessages($langs->trans('ErrorFileSizeTooLarge'), null, 'errors'); + $action = 'importsite'; + } + else { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("File")), null, 'errors'); + $action = 'importsite'; + } } } - } - if (! $error) - { - $upload_dir = $conf->website->dir_temp; - $result = dol_add_file_process($upload_dir, 1, -1, 'userfile', ''); + if (! $error) + { + $upload_dir = $conf->website->dir_temp; + $result = dol_add_file_process($upload_dir, 1, -1, 'userfile', ''); + } // Get name of file (take last one if several name provided) $fileofzip = $upload_dir.'/unknown'; @@ -1728,7 +1737,10 @@ if ($action == 'importsiteconfirm') $fileofzip = $upload_dir . '/' .$ifile2; } } + } + if (! $error) + { $result = $object->importWebSite($fileofzip); if ($result < 0) { @@ -2648,12 +2660,20 @@ if ($action == 'importsite') dol_fiche_head(array(), '0', '', -1); - print $langs->trans("ZipOfWebsitePackageToImport").'

'; + print ''.$langs->trans("ZipOfWebsitePackageToImport").'

'; print ''; print ''; print ''; + print '


'; + + + print ''.$langs->trans("ZipOfWebsitePackageToLoad").'

'; + + showWebsiteTemplates($website); + + dol_fiche_end(); print '';