The new website module become wonderfull
This commit is contained in:
parent
aa3fd067fc
commit
3cc48f156f
@ -284,17 +284,23 @@ function exportWebSite($website)
|
||||
*
|
||||
* @param Website $object Object website
|
||||
* @param WebsitePage $objectpage Object website page
|
||||
* @param string $urltograb URL to grab
|
||||
* @param string $urltograb URL to grab (exemple: http://www.nltechno.com/ or http://www.nltechno.com/dir1/ or http://www.nltechno.com/dir1/mapage1)
|
||||
* @param string $tmp Content to parse
|
||||
* @param string $action Var $action
|
||||
* @param string $modifylinks 0=Do not modify content, 1=Replace links with a link to
|
||||
* @param string $modifylinks 0=Do not modify content, 1=Replace links with a link to viewimage
|
||||
* @return void
|
||||
*/
|
||||
function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modifylinks=0)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
preg_match_all('/<img([^\.\/]+)src="([^>"]+)"([^>]*)>/i', $objectpage->content, $regs);
|
||||
$alreadygrabbed=array();
|
||||
|
||||
if (preg_match('/\/$/', $urltograb)) $urltograb.='.';
|
||||
$urltograb = dirname($urltograb); // So urltograb is now http://www.nltechno.com or http://www.nltechno.com/dir1
|
||||
|
||||
preg_match_all('/<img([^\.\/]+)src="([^>"]+)"([^>]*)>/i', $tmp, $regs);
|
||||
|
||||
foreach ($regs[0] as $key => $val)
|
||||
{
|
||||
$urltograbbis = $urltograb.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
@ -307,29 +313,100 @@ function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modify
|
||||
$filetosave = $conf->medias->multidir_output[$conf->entity].'/image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain;
|
||||
}
|
||||
|
||||
$tmpgeturl = getURLContent($urltograbbis);
|
||||
if ($tmpgeturl['curl_error_no'])
|
||||
{
|
||||
$error++;
|
||||
setEventMessages($tmpgeturl['curl_error_msg'], null, 'errors');
|
||||
$action='create';
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_mkdir(dirname($filetosave));
|
||||
$filename = 'image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain;
|
||||
|
||||
$fp = fopen($filetosave, "w");
|
||||
fputs($fp, $tmpgeturl['content']);
|
||||
fclose($fp);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
// Clean the aa/bb/../cc into aa/cc
|
||||
$filetosave = preg_replace('/\/[^\/]+\/\.\./', '', $filetosave);
|
||||
$filename = preg_replace('/\/[^\/]+\/\.\./', '', $filename);
|
||||
|
||||
//var_dump($filetosave);
|
||||
//var_dump($filename);
|
||||
//exit;
|
||||
|
||||
if (empty($alreadygrabbed[$urltograbbis]))
|
||||
{
|
||||
$tmpgeturl = getURLContent($urltograbbis);
|
||||
if ($tmpgeturl['curl_error_no'])
|
||||
{
|
||||
$error++;
|
||||
setEventMessages($tmpgeturl['curl_error_msg'], null, 'errors');
|
||||
$action='create';
|
||||
}
|
||||
else
|
||||
{
|
||||
$alreadygrabbed[$urltograbbis]=1; // Track that file was alreay grabbed.
|
||||
|
||||
dol_mkdir(dirname($filetosave));
|
||||
|
||||
$fp = fopen($filetosave, "w");
|
||||
fputs($fp, $tmpgeturl['content']);
|
||||
fclose($fp);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
}
|
||||
}
|
||||
|
||||
if ($modifylinks)
|
||||
{
|
||||
$filename = 'image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain;
|
||||
$tmp = preg_replace('/'.preg_quote($regs[0][$key],'/').'/i', '<img'.$regs[1][$key].'src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=medias&file='.$filename.'"'.$regs[3][$key].'>', $tmp);
|
||||
}
|
||||
}
|
||||
|
||||
// Search X in "background...url(X)"
|
||||
preg_match_all('/background([^\.\/\(;]+)url\([\"\']?([^\)\"\']*)[\"\']?\)/i', $tmp, $regs);
|
||||
|
||||
foreach ($regs[0] as $key => $val)
|
||||
{
|
||||
$urltograbbis = $urltograb.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
|
||||
$linkwithoutdomain = $regs[2][$key];
|
||||
$filetosave = $conf->medias->multidir_output[$conf->entity].'/image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
|
||||
if (preg_match('/^http/', $regs[2][$key]))
|
||||
{
|
||||
$urltograbbis = $regs[2][$key];
|
||||
$linkwithoutdomain = preg_replace('/^https?:\/\/[^\/]+\//i', '', $regs[2][$key]);
|
||||
$filetosave = $conf->medias->multidir_output[$conf->entity].'/image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain;
|
||||
}
|
||||
|
||||
$filename = 'image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain;
|
||||
|
||||
// Clean the aa/bb/../cc into aa/cc
|
||||
$filetosave = preg_replace('/\/[^\/]+\/\.\./', '', $filetosave);
|
||||
$filename = preg_replace('/\/[^\/]+\/\.\./', '', $filename);
|
||||
|
||||
//var_dump($filetosave);
|
||||
//var_dump($filename);
|
||||
//exit;
|
||||
|
||||
if (empty($alreadygrabbed[$urltograbbis]))
|
||||
{
|
||||
$tmpgeturl = getURLContent($urltograbbis);
|
||||
if ($tmpgeturl['curl_error_no'])
|
||||
{
|
||||
$error++;
|
||||
setEventMessages($tmpgeturl['curl_error_msg'], null, 'errors');
|
||||
$action='create';
|
||||
}
|
||||
else
|
||||
{
|
||||
$alreadygrabbed[$urltograbbis]=1; // Track that file was alreay grabbed.
|
||||
|
||||
dol_mkdir(dirname($filetosave));
|
||||
|
||||
$fp = fopen($filetosave, "w");
|
||||
fputs($fp, $tmpgeturl['content']);
|
||||
fclose($fp);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
}
|
||||
}
|
||||
|
||||
if ($modifylinks)
|
||||
{
|
||||
$tmp = preg_replace('/'.preg_quote($regs[0][$key],'/').'/i', 'background'.$regs[1][$key].'url("'.DOL_URL_ROOT.'/viewimage.php?modulepart=medias&file='.$filename.'")', $tmp);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -184,10 +184,9 @@ class Website extends CommonObject
|
||||
/**
|
||||
* Load object in memory from the database
|
||||
*
|
||||
* @param int $id Id object
|
||||
* @param string $ref Ref
|
||||
*
|
||||
* @return int <0 if KO, 0 if not found, >0 if OK
|
||||
* @param int $id Id object
|
||||
* @param string $ref Ref
|
||||
* @return int <0 if KO, 0 if not found, >0 if OK
|
||||
*/
|
||||
public function fetch($id, $ref = null)
|
||||
{
|
||||
@ -236,9 +235,6 @@ class Website extends CommonObject
|
||||
if ($numrows > 0) {
|
||||
// Lines
|
||||
$this->fetchLines();
|
||||
{
|
||||
return -3;
|
||||
}
|
||||
}
|
||||
|
||||
if ($numrows > 0) {
|
||||
|
||||
@ -303,7 +303,27 @@ class WebsitePage extends CommonObject
|
||||
*/
|
||||
public function delete(User $user, $notrigger = false)
|
||||
{
|
||||
return $this->deleteCommon($user, $trigger);
|
||||
$result = $this->deleteCommon($user, $trigger);
|
||||
|
||||
if ($result > 0)
|
||||
{
|
||||
$websiteobj=new Website($this->db);
|
||||
$result = $websiteobj->fetch($this->fk_website);
|
||||
|
||||
if ($result > 0)
|
||||
{
|
||||
global $dolibarr_main_data_root;
|
||||
$pathofwebsite=$dolibarr_main_data_root.'/websites/'.$websiteobj->ref;
|
||||
|
||||
$filealias=$pathofwebsite.'/'.$this->pageurl.'.php';
|
||||
$filetpl=$pathofwebsite.'/page'.$this->id.'.tpl.php';
|
||||
|
||||
dol_delete_file($filealias);
|
||||
dol_delete_file($filetpl);
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -231,6 +231,16 @@ if ($action == 'add')
|
||||
|
||||
if ($urltograb)
|
||||
{
|
||||
// Clean url to grab, so url can be
|
||||
// http://www.example.com/ or http://www.example.com/dir1/ or http://www.example.com/dir1/aaa
|
||||
$urltograbwithoutdomainandparam = preg_replace('/^https?:\/\/[^\/]+\/?/i', '', $urltograb);
|
||||
$urltograbwithoutdomainandparam = preg_replace('/\?.*$/', '', $urltograbwithoutdomainandparam);
|
||||
if (empty($urltograbwithoutdomainandparam) && ! preg_match('/\/$/', $urltograb))
|
||||
{
|
||||
$urltograb.='/';
|
||||
}
|
||||
$urltograbdirwithoutslash = dirname($urltograb.'.');
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php';
|
||||
|
||||
$tmp = getURLContent($urltograb);
|
||||
@ -245,12 +255,11 @@ if ($action == 'add')
|
||||
preg_match('/<head>(.*)<\/head>/is', $tmp['content'], $reg);
|
||||
$head = $reg[1];
|
||||
|
||||
$urltograbwithoutdomain = preg_replace('/^https?:\/\/[^\/]+\/?/i', '', $urltograbwithoutdomain);
|
||||
$objectpage->pageurl = basename($urltograbwithoutdomain);
|
||||
$objectpage->pageurl = dol_sanitizeFileName(preg_replace('/[\/\.]/','-',$urltograbwithoutdomainandparam));
|
||||
if (empty($objectpage->pageurl))
|
||||
{
|
||||
$tmpdomain = getDomainFromURL($urltograb);
|
||||
$objectpage->pageurl='home'.$tmpdomain;
|
||||
$objectpage->pageurl=$tmpdomain.'-home';
|
||||
}
|
||||
|
||||
if (preg_match('/<title>(.*)<\/title>/ims', $head, $regtmp))
|
||||
@ -297,7 +306,8 @@ if ($action == 'add')
|
||||
preg_match_all('/<script([^\.]+)src="([^>"]+)"([^>]*)><\/script>/i', $objectpage->htmlheader, $regs);
|
||||
foreach ($regs[0] as $key => $val)
|
||||
{
|
||||
$urltograbbis = $urltograb.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
$urltograbbis = $urltograbdirwithoutslash.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
|
||||
$linkwithoutdomain = $regs[2][$key];
|
||||
//$filetosave = $conf->medias->multidir_output[$conf->entity].'/css/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
if (preg_match('/^http/', $regs[2][$key]))
|
||||
@ -338,7 +348,7 @@ if ($action == 'add')
|
||||
preg_match_all('/<link([^\.]+)href="([^>"]+\.css)"([^>]*)>/i', $objectpage->htmlheader, $regs);
|
||||
foreach ($regs[0] as $key => $val)
|
||||
{
|
||||
$urltograbbis = $urltograb.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
$urltograbbis = $urltograbdirwithoutslash.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
$linkwithoutdomain = $regs[2][$key];
|
||||
//$filetosave = $conf->medias->multidir_output[$conf->entity].'/css/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key];
|
||||
if (preg_match('/^http/', $regs[2][$key]))
|
||||
@ -351,9 +361,9 @@ if ($action == 'add')
|
||||
$tmpgeturl = getURLContent($urltograbbis);
|
||||
if ($tmpgeturl['curl_error_no'])
|
||||
{
|
||||
$error++;
|
||||
setEventMessages($tmpgeturl['curl_error_msg'], null, 'errors');
|
||||
$action='create';
|
||||
$error++;
|
||||
setEventMessages($tmpgeturl['curl_error_msg'], null, 'errors');
|
||||
$action='create';
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -368,6 +378,9 @@ if ($action == 'add')
|
||||
|
||||
// $filename = 'image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain;
|
||||
$pagecsscontent.='/* Content of file '.$urltograbbis.' */'."\n";
|
||||
|
||||
getAllImages($object, $objectpage, $urltograbbis, $tmpgeturl['content'], $action, 1);
|
||||
|
||||
$pagecsscontent.=$tmpgeturl['content']."\n";
|
||||
|
||||
$objectpage->htmlheader = preg_replace('/'.preg_quote($regs[0][$key],'/').'\n*/ims', '', $objectpage->htmlheader);
|
||||
@ -379,6 +392,7 @@ if ($action == 'add')
|
||||
//print dol_escape_htmltag($tmp);exit;
|
||||
$objectpage->htmlheader .= $pagecsscontent;
|
||||
|
||||
|
||||
// Now loop to fetch all images
|
||||
$tmp = $objectpage->content;
|
||||
|
||||
@ -477,7 +491,6 @@ if ($action == 'add')
|
||||
|
||||
if (! dol_is_file($filehtmlheader))
|
||||
{
|
||||
// TODO use header of page for common header ?
|
||||
$htmlheadercontent = "<!-- HTML header content (common for all pages) -->";
|
||||
$result=dolSaveHtmlHeader($filehtmlheader, $htmlheadercontent);
|
||||
}
|
||||
@ -504,7 +517,7 @@ if ($action == 'add')
|
||||
}
|
||||
}
|
||||
|
||||
// Update page
|
||||
// Delete page
|
||||
if ($action == 'delete')
|
||||
{
|
||||
$db->begin();
|
||||
@ -1154,6 +1167,10 @@ if (count($object->records) > 0)
|
||||
|
||||
if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')
|
||||
{
|
||||
print '<a class="websitebuttonsitepreview" id="previewsite" href="'.$urlwithroot.'/public/websites/index.php?website='.$website.'" target="tab'.$website.'" alt="'.dol_escape_htmltag($langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $urlint)).'">';
|
||||
print $form->textwithpicto('', $langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $urlint, $dataroot), 1, 'preview');
|
||||
print '</a>';
|
||||
|
||||
print '<div class="websiteinputurl" id="websiteinputurl">';
|
||||
print '<input type="text" id="previewsiteurl" class="minwidth200imp" name="previewsite" placeholder="'.$langs->trans("http://myvirtualhost").'" value="'.$virtualurl.'">';
|
||||
//print '<input type="submit" class="button" name="previewwebsite" target="tab'.$website.'" value="'.$langs->trans("ViewSiteInNewTab").'">';
|
||||
@ -1166,10 +1183,6 @@ if (count($object->records) > 0)
|
||||
print '<a class="websitebuttonsitepreview'.($urlext?'':' websitebuttonsitepreviewdisabled cursornotallowed').'" id="previewsiteext" href="'.$urlext.'" target="tab'.$website.'ext" alt="'.dol_escape_htmltag($langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $dataroot, $urlext)).'">';
|
||||
print $form->textwithpicto('', $langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $dataroot, $urlext?$urlext:'<span class="error">'.$langs->trans("VirtualHostUrlNotDefined").'</span>'), 1, 'preview_ext');
|
||||
print '</a>';
|
||||
|
||||
print '<a class="websitebuttonsitepreview" id="previewsite" href="'.$urlwithroot.'/public/websites/index.php?website='.$website.'" target="tab'.$website.'" alt="'.dol_escape_htmltag($langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $urlint)).'">';
|
||||
print $form->textwithpicto('', $langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $urlint, $dataroot), 1, 'preview');
|
||||
print '</a>';
|
||||
}
|
||||
|
||||
if (in_array($action, array('editcss','editmenu','editmedias')))
|
||||
@ -1303,6 +1316,10 @@ if (count($object->records) > 0)
|
||||
$realpage=$urlwithroot.'/public/websites/index.php?website='.$website.'&pageref='.$websitepage->pageurl;
|
||||
$pagealias = $websitepage->pageurl;
|
||||
|
||||
print '<a class="websitebuttonsitepreview" id="previewpage" href="'.$realpage.'&nocache='.dol_now().'" class="button" target="tab'.$website.'" alt="'.dol_escape_htmltag($langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Page"), $langs->transnoentitiesnoconv("Page"), $realpage)).'">';
|
||||
print $form->textwithpicto('', $langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Page"), $langs->transnoentitiesnoconv("Page"), $realpage, $dataroot), 1, 'preview');
|
||||
print '</a>'; // View page in new Tab
|
||||
|
||||
print '<div class="websiteinputurl" id="websiteinputpage">';
|
||||
print '<input type="text" id="previewpageurl" class="minwidth200imp" name="previewsite" value="'.$pagealias.'" disabled="disabled">';
|
||||
$htmltext=$langs->trans("PageNameAliasHelp", $langs->transnoentitiesnoconv("EditPageMeta"));
|
||||
@ -1314,10 +1331,6 @@ if (count($object->records) > 0)
|
||||
print '<a class="websitebuttonsitepreview'.($virtualurl?'':' websitebuttonsitepreviewdisabled cursornotallowed').'" id="previewpageext" href="'.$urlext.'" target="tab'.$website.'ext" alt="'.dol_escape_htmltag($langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Page"), $langs->transnoentitiesnoconv("Page"), $dataroot, $urlext)).'">';
|
||||
print $form->textwithpicto('', $langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Page"), $langs->transnoentitiesnoconv("Page"), $dataroot, $virtualurl?$urlext:'<span class="error">'.$langs->trans("VirtualHostUrlNotDefined").'</span>'), 1, 'preview_ext');
|
||||
print '</a>';
|
||||
|
||||
print '<a class="websitebuttonsitepreview" id="previewpage" href="'.$realpage.'&nocache='.dol_now().'" class="button" target="tab'.$website.'" alt="'.dol_escape_htmltag($langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Page"), $langs->transnoentitiesnoconv("Page"), $realpage)).'">';
|
||||
print $form->textwithpicto('', $langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Page"), $langs->transnoentitiesnoconv("Page"), $realpage, $dataroot), 1, 'preview');
|
||||
print '</a>'; // View page in new Tab
|
||||
//print '<input type="submit" class="button" name="previewpage" target="tab'.$website.'"value="'.$langs->trans("ViewPageInNewTab").'">';
|
||||
|
||||
// TODO Add js to save alias like we save virtual host name and use dynamic virtual host for url of id=previewpageext
|
||||
@ -1767,14 +1780,18 @@ if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpa
|
||||
$objectpage->fetch($pageid);
|
||||
$csscontent = @file_get_contents($filecss);
|
||||
|
||||
$out = '<!-- Page content '.$filetpl.' : Div with (CSS + Page content from database) -->'."\n";
|
||||
$out = '<!-- Page content '.$filetpl.' : Div with (CSS Of website from file + Style/htmlheader of page from database + Page content from database) -->'."\n";
|
||||
|
||||
$out.='<div id="websitecontentundertopmenu" class="websitecontentundertopmenu">'."\n";
|
||||
|
||||
|
||||
// REPLACEMENT OF LINKS When page called by website editor
|
||||
|
||||
$out.='<style scoped>'."\n"; // "scoped" means "apply to parent element only". Not yet supported by browsers
|
||||
$out.= '<!-- Include website CSS file -->'."\n";
|
||||
$out.=dolWebsiteReplacementOfLinks($object, $csscontent);
|
||||
$out.= '<!-- Include HTML header from page inline block -->'."\n";
|
||||
$out.= $objectpage->htmlheader."\n";
|
||||
$out.='</style>'."\n";
|
||||
|
||||
$out.='<div id="bodywebsite" class="bodywebsite">'."\n";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user