2016-01-24 21:35:41 +01:00
< ? php
2017-04-07 16:44:43 +02:00
/* Copyright ( C ) 2016 - 2017 Laurent Destailleur < eldy @ users . sourceforge . net >
2016-01-24 21:35:41 +01:00
*
* 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 < http :// www . gnu . org / licenses />.
*/
/**
2016-05-01 19:49:03 +02:00
* \file htdocs / website / index . php
2016-02-02 16:24:12 +01:00
* \ingroup website
2016-05-01 19:49:03 +02:00
* \brief Page to website view / edit
2016-01-24 21:35:41 +01:00
*/
2016-05-01 19:49:03 +02:00
define ( 'NOSCANPOSTFORINJECTION' , 1 );
define ( 'NOSTYLECHECK' , 1 );
2016-04-12 19:17:50 +02:00
/**
* Show HTML header HTML + BODY + Top menu + left menu + DIV
*
* @ param string $head Optionnal head lines
* @ param string $title HTML title
* @ param string $help_url Url links to help page
* Syntax is : For a wiki page : EN : EnglishPage | FR : FrenchPage | ES : SpanishPage
* For other external page : http :// server / url
* @ param string $target Target to use on links
* @ param int $disablejs More content into html header
* @ param int $disablehead More content into html header
* @ param array $arrayofjs Array of complementary js files
* @ param array $arrayofcss Array of complementary css files
2017-05-13 15:19:35 +02:00
* @ param string $morequerystring Query string to add to the link " print " to get same parameters ( set this only if autodetect fails )
2016-04-12 19:17:50 +02:00
* @ return void
*/
function llxHeader ( $head = '' , $title = '' , $help_url = '' , $target = '' , $disablejs = 0 , $disablehead = 0 , $arrayofjs = '' , $arrayofcss = '' , $morequerystring = '' )
{
global $conf ;
// html header
top_htmlhead ( $head , $title , $disablejs , $disablehead , $arrayofjs , $arrayofcss );
2017-07-21 02:30:02 +02:00
print '<body id="mainbody">' ;
2017-07-02 23:38:19 +02:00
2016-04-12 19:17:50 +02:00
// top menu and left menu area
if ( empty ( $conf -> dol_hide_topmenu ))
{
top_menu ( $head , $title , $target , $disablejs , $disablehead , $arrayofjs , $arrayofcss , $morequerystring , $help_url );
}
if ( empty ( $conf -> dol_hide_leftmenu ))
{
left_menu ( '' , $help_url , '' , '' , 1 , $title , 1 );
}
// main area
//main_area($title);
2017-02-24 21:13:40 +01:00
print '<!-- Begin div class="fiche" -->' . " \n " . '<div class="fichebutwithotherclass">' . " \n " ;
2016-04-12 19:17:50 +02:00
}
2016-01-24 21:35:41 +01:00
require '../main.inc.php' ;
2016-02-02 16:24:12 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php' ;
2016-05-01 16:34:50 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php' ;
2017-08-21 03:13:44 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/website.lib.php' ;
2017-07-19 16:38:00 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php' ;
2017-07-22 20:01:29 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formadmin.class.php' ;
2017-07-23 16:20:53 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formwebsite.class.php' ;
2016-04-12 19:17:50 +02:00
require_once DOL_DOCUMENT_ROOT . '/websites/class/website.class.php' ;
2016-04-19 11:02:55 +02:00
require_once DOL_DOCUMENT_ROOT . '/websites/class/websitepage.class.php' ;
2016-02-02 16:24:12 +01:00
$langs -> load ( " admin " );
$langs -> load ( " other " );
$langs -> load ( " website " );
if ( ! $user -> admin ) accessforbidden ();
2017-05-16 13:27:32 +02:00
if ( ! (( GETPOST ( 'testmenuhider' , 'int' ) || ! empty ( $conf -> global -> MAIN_TESTMENUHIDER )) && empty ( $conf -> global -> MAIN_OPTIMIZEFORTEXTBROWSER )))
2017-02-24 21:13:40 +01:00
{
$conf -> dol_hide_leftmenu = 1 ; // Force hide of left menu.
}
2016-04-19 11:02:55 +02:00
$error = 0 ;
$website = GETPOST ( 'website' , 'alpha' );
$page = GETPOST ( 'page' , 'alpha' );
2016-05-01 19:49:03 +02:00
$pageid = GETPOST ( 'pageid' , 'int' );
2017-07-21 02:30:02 +02:00
$pageref = GETPOST ( 'pageref' , 'aZ09' );
2016-04-23 21:34:10 +02:00
$action = GETPOST ( 'action' , 'alpha' );
2016-02-02 16:24:12 +01:00
2017-10-01 18:27:54 +02:00
2016-05-01 17:01:38 +02:00
if ( GETPOST ( 'delete' )) { $action = 'delete' ; }
2016-04-19 11:02:55 +02:00
if ( GETPOST ( 'preview' )) $action = 'preview' ;
2017-09-01 12:19:55 +02:00
if ( GETPOST ( 'createsite' )) { $action = 'createsite' ; }
2016-04-23 21:34:10 +02:00
if ( GETPOST ( 'create' )) { $action = 'create' ; }
2017-08-20 21:23:19 +02:00
if ( GETPOST ( 'editmedias' )) { $action = 'editmedias' ; }
2016-05-01 16:34:50 +02:00
if ( GETPOST ( 'editcss' )) { $action = 'editcss' ; }
2016-04-19 11:02:55 +02:00
if ( GETPOST ( 'editmenu' )) { $action = 'editmenu' ; }
2016-05-02 15:51:18 +02:00
if ( GETPOST ( 'setashome' )) { $action = 'setashome' ; }
2016-04-23 21:34:10 +02:00
if ( GETPOST ( 'editmeta' )) { $action = 'editmeta' ; }
2017-07-22 20:19:10 +02:00
if ( GETPOST ( 'editsource' )) { $action = 'editsource' ; }
2016-04-19 11:02:55 +02:00
if ( GETPOST ( 'editcontent' )) { $action = 'editcontent' ; }
2017-07-21 13:38:13 +02:00
if ( GETPOST ( 'createfromclone' )) { $action = 'createfromclone' ; }
if ( GETPOST ( 'createpagefromclone' )) { $action = 'createpagefromclone' ; }
2016-04-19 11:02:55 +02:00
if ( empty ( $action )) $action = 'preview' ;
2016-01-24 21:35:41 +01:00
2016-04-12 19:17:50 +02:00
$object = new Website ( $db );
2016-04-19 11:02:55 +02:00
$objectpage = new WebsitePage ( $db );
2016-02-02 16:24:12 +01:00
2016-04-29 20:35:38 +02:00
$object -> fetchAll (); // Init $object->records
// If website not defined, we take first found
if ( empty ( $website ))
{
foreach ( $object -> records as $key => $valwebsite )
{
$website = $valwebsite -> ref ;
break ;
}
}
2016-04-23 21:34:10 +02:00
if ( $website )
{
$res = $object -> fetch ( 0 , $website );
}
2016-05-01 19:49:03 +02:00
if ( $pageid < 0 ) $pageid = 0 ;
2017-07-21 02:30:02 +02:00
if (( $pageid > 0 || $pageref ) && $action != 'add' )
2016-04-23 21:34:10 +02:00
{
2017-07-21 02:30:02 +02:00
$res = $objectpage -> fetch ( $pageid , ( $object -> id > 0 ? $object -> id : null ), $pageref );
$pageid = $objectpage -> id ;
2016-04-23 21:34:10 +02:00
}
2016-05-01 16:34:50 +02:00
global $dolibarr_main_data_root ;
$pathofwebsite = $dolibarr_main_data_root . '/websites/' . $website ;
2017-07-20 20:05:49 +02:00
$filehtmlheader = $pathofwebsite . '/htmlheader.html' ;
2016-08-08 14:21:43 +02:00
$filecss = $pathofwebsite . '/styles.css.php' ;
2017-07-23 17:44:26 +02:00
$filerobot = $pathofwebsite . '/robots.txt' ;
$filehtaccess = $pathofwebsite . '/.htaccess' ;
2016-05-01 16:34:50 +02:00
$filetpl = $pathofwebsite . '/page' . $pageid . '.tpl.php' ;
2016-08-08 18:25:37 +02:00
$fileindex = $pathofwebsite . '/index.php' ;
2016-05-01 16:34:50 +02:00
2016-05-07 16:38:32 +02:00
// Define $urlwithroot
$urlwithouturlroot = preg_replace ( '/' . preg_quote ( DOL_URL_ROOT , '/' ) . '$/i' , '' , trim ( $dolibarr_main_url_root ));
$urlwithroot = $urlwithouturlroot . DOL_URL_ROOT ; // This is to use external domain name found into config file
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
2016-05-01 16:34:50 +02:00
2016-02-02 16:24:12 +01:00
/*
* Actions
*/
2017-09-01 12:19:55 +02:00
if ( GETPOST ( 'refreshsite' )) // If we change the site, we reset the pageid and cancel addsite action.
{
$pageid = 0 ;
if ( $action == 'addsite' ) $action = 'preview' ;
}
2017-07-19 16:38:00 +02:00
if ( GETPOST ( 'refreshpage' ) && ! in_array ( $action , array ( 'updatecss' ))) $action = 'preview' ;
2016-07-02 12:21:47 +02:00
2017-09-01 12:19:55 +02:00
// Add site
if ( $action == 'addsite' )
{
$db -> begin ();
2017-09-01 22:49:33 +02:00
if ( ! $error && ! GETPOST ( 'WEBSITE_REF' , 'alpha' ))
2017-09-01 12:19:55 +02:00
{
$error ++ ;
setEventMessages ( $langs -> transnoentities ( " ErrorFieldRequired " , $langs -> transnoentities ( " Ref " )), null , 'errors' );
}
if ( ! $error && ! preg_match ( '/^[a-z0-9_\-\.]+$/i' , GETPOST ( 'WEBSITE_REF' , 'alpha' )))
{
$error ++ ;
setEventMessages ( $langs -> transnoentities ( " ErrorFieldCanNotContainSpecialCharacters " , $langs -> transnoentities ( " Ref " )), null , 'errors' );
}
if ( ! $error )
{
$tmpobject = new Website ( $db );
$tmpobject -> ref = GETPOST ( 'WEBSITE_REF' , 'alpha' );
$tmpobject -> description = GETPOST ( 'WEBSITE_DESCRIPTION' , 'alpha' );
$tmpobject -> virtualhost = GETPOST ( 'WEBSITE_VIRTUALHOST' , 'alpha' );
$result = $tmpobject -> create ( $user );
if ( $result <= 0 )
{
$error ++ ;
setEventMessages ( $tmpobject -> error , $tmpobject -> errors , 'errors' );
}
}
if ( ! $error )
{
$db -> commit ();
setEventMessages ( $langs -> trans ( " SiteAdded " , $object -> ref ), null , 'mesgs' );
$action = '' ;
header ( " Location: " . $_SERVER [ " PHP_SELF " ] . '?website=' . $tmpobject -> ref );
exit ;
}
else
{
$db -> rollback ();
$action = 'createsite' ;
}
if ( ! $error )
{
$action = 'preview' ;
$id = $object -> id ;
}
}
2016-04-23 21:34:10 +02:00
// Add page
if ( $action == 'add' )
{
$db -> begin ();
2016-04-27 09:41:42 +02:00
2016-04-23 21:34:10 +02:00
$objectpage -> fk_website = $object -> id ;
2017-08-20 18:50:51 +02:00
if ( GETPOST ( 'fetchexternalurl' , 'alpha' ))
{
$urltograb = GETPOST ( 'externalurl' , 'alpha' );
}
2016-04-27 09:41:42 +02:00
2017-08-20 18:50:51 +02:00
if ( $urltograb )
2016-04-23 21:34:10 +02:00
{
2017-08-20 18:50:51 +02:00
include_once DOL_DOCUMENT_ROOT . '/core/lib/geturl.lib.php' ;
$tmp = getURLContent ( $urltograb );
if ( $tmp [ 'curl_error_no' ])
{
$error ++ ;
setEventMessages ( $tmp [ 'curl_error_msg' ], null , 'errors' );
$action = 'create' ;
}
else
{
preg_match ( '/<head>(.*)<\/head>/is' , $tmp [ 'content' ], $reg );
$head = $reg [ 1 ];
$urltograbwithoutdomain = preg_replace ( '/^https?:\/\/[^\/]+\/?/i' , '' , $urltograbwithoutdomain );
$objectpage -> pageurl = basename ( $urltograbwithoutdomain );
2017-10-01 18:27:54 +02:00
if ( empty ( $objectpage -> pageurl ))
{
$tmpdomain = getDomainFromURL ( $urltograb );
$objectpage -> pageurl = 'home' . $tmpdomain ;
}
2017-08-20 18:50:51 +02:00
if ( preg_match ( '/<title>(.*)<\/title>/ims' , $head , $regtmp ))
{
$objectpage -> title = $regtmp [ 1 ];
}
if ( preg_match ( '/<meta name="description"[^"]+content="([^"]+)"/ims' , $head , $regtmp ))
{
$objectpage -> description = $regtmp [ 1 ];
}
if ( preg_match ( '/<meta name="keywords"[^"]+content="([^"]+)"/ims' , $head , $regtmp ))
{
$objectpage -> keywords = $regtmp [ 1 ];
}
if ( preg_match ( '/<html\s+lang="([^"]+)"/ims' , $tmp [ 'content' ], $regtmp ))
{
$tmplang = explode ( '-' , $regtmp [ 1 ]);
$objectpage -> lang = $tmplang [ 0 ] . ( $tmplang [ 1 ] ? '_' . strtoupper ( $tmplang [ 1 ]) : '' );
}
$objectpage -> content = $tmp [ 'content' ];
$objectpage -> content = preg_replace ( '/^.*<body[^>]*>/ims' , '' , $objectpage -> content );
$objectpage -> content = preg_replace ( '/<\/body[^>]*>.*$/ims' , '' , $objectpage -> content );
2017-10-01 21:29:49 +02:00
// Now loop to fetch all css files. Include them inline into header of page
2017-10-06 22:49:08 +02:00
$objectpage -> htmlheader = $tmp [ 'content' ];
$objectpage -> htmlheader = preg_replace ( '/^.*<head[^>]*>/ims' , '' , $objectpage -> htmlheader );
$objectpage -> htmlheader = preg_replace ( '/<\/head[^>]*>.*$/ims' , '' , $objectpage -> htmlheader );
$objectpage -> htmlheader = preg_replace ( '/<base[^>]*>\n*/ims' , '' , $objectpage -> htmlheader );
$objectpage -> htmlheader = preg_replace ( '/<meta name="robot[^>]*>\n*/ims' , '' , $objectpage -> htmlheader );
$objectpage -> htmlheader = preg_replace ( '/<meta name="keywords[^>]*>\n*/ims' , '' , $objectpage -> htmlheader );
$objectpage -> htmlheader = preg_replace ( '/<meta name="title[^>]*>\n*/ims' , '' , $objectpage -> htmlheader );
$objectpage -> htmlheader = preg_replace ( '/<meta name="description[^>]*>\n*/ims' , '' , $objectpage -> htmlheader );
$objectpage -> htmlheader = preg_replace ( '/<meta name="generator[^>]*>\n*/ims' , '' , $objectpage -> htmlheader );
//$objectpage->htmlheader = preg_replace('/<meta name="verify-v1[^>]*>\n*/ims', '', $objectpage->htmlheader);
//$objectpage->htmlheader = preg_replace('/<meta name="msvalidate.01[^>]*>\n*/ims', '', $objectpage->htmlheader);
$objectpage -> htmlheader = preg_replace ( '/<title>[^<]*<\/title>\n*/ims' , '' , $objectpage -> htmlheader );
$objectpage -> htmlheader = preg_replace ( '/<link[^>]*rel="shortcut[^>]*>\n/ims' , '' , $objectpage -> htmlheader );
// Now loop to fetch JS
$tmp = $objectpage -> htmlheader ;
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 ];
$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 ]))
{
$urltograbbis = $regs [ 2 ][ $key ];
$linkwithoutdomain = preg_replace ( '/^https?:\/\/[^\/]+\//i' , '' , $regs [ 2 ][ $key ]);
//$filetosave = $conf->medias->multidir_output[$conf->entity].'/css/'.$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 ));
$fp = fopen ( $filetosave , " w " );
fputs ( $fp , $tmpgeturl [ 'content' ]);
fclose ( $fp );
if ( ! empty ( $conf -> global -> MAIN_UMASK ))
@ chmod ( $file , octdec ( $conf -> global -> MAIN_UMASK ));
}
$filename = 'image/' . $object -> ref . '/' . $objectpage -> pageurl . ( preg_match ( '/^\//' , $linkwithoutdomain ) ? '' : '/' ) . $linkwithoutdomain ;
*/
$tmp = preg_replace ( '/' . preg_quote ( $regs [ 0 ][ $key ], '/' ) . '/i' , '' , $tmp );
}
2017-10-06 23:54:45 +02:00
$objectpage -> htmlheader = trim ( $tmp );
2017-10-01 21:29:49 +02:00
2017-10-06 22:49:08 +02:00
// Now loop to fetch CSS
$pagecsscontent = " \n " . '<style>' . " \n " ;
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 ];
$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 ]))
{
$urltograbbis = $regs [ 2 ][ $key ];
$linkwithoutdomain = preg_replace ( '/^https?:\/\/[^\/]+\//i' , '' , $regs [ 2 ][ $key ]);
//$filetosave = $conf->medias->multidir_output[$conf->entity].'/css/'.$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));
//$fp = fopen($filetosave, "w");
//fputs($fp, $tmpgeturl['content']);
//fclose($fp);
//if (! empty($conf->global->MAIN_UMASK))
// @chmod($file, octdec($conf->global->MAIN_UMASK));
}
// $filename = 'image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain;
$pagecsscontent .= '/* Content of file ' . $urltograbbis . ' */' . " \n " ;
$pagecsscontent .= $tmpgeturl [ 'content' ] . " \n " ;
$objectpage -> htmlheader = preg_replace ( '/' . preg_quote ( $regs [ 0 ][ $key ], '/' ) . '\n*/ims' , '' , $objectpage -> htmlheader );
}
$pagecsscontent .= '</style>' . " \n " ;
//var_dump($pagecsscontent);
//print dol_escape_htmltag($tmp);exit;
$objectpage -> htmlheader .= $pagecsscontent ;
2017-10-01 18:27:54 +02:00
2017-10-01 21:29:49 +02:00
// Now loop to fetch all images
2017-10-06 22:49:08 +02:00
$tmp = $objectpage -> content ;
2017-10-06 23:54:45 +02:00
getAllImages ( $object , $objectpage , $urltograb , $tmp , $action , 1 );
2017-10-01 20:37:41 +02:00
//print dol_escape_htmltag($tmp);exit;
2017-10-01 18:27:54 +02:00
$objectpage -> content = $tmp ;
2017-08-20 18:50:51 +02:00
$objectpage -> grabbed_from = $urltograb ;
}
2017-07-02 23:38:19 +02:00
}
2017-08-20 18:50:51 +02:00
else
2017-07-21 02:30:02 +02:00
{
2017-09-23 01:24:31 +02:00
$objectpage -> title = GETPOST ( 'WEBSITE_TITLE' , 'alpha' );
$objectpage -> pageurl = GETPOST ( 'WEBSITE_PAGENAME' , 'alpha' );
$objectpage -> description = GETPOST ( 'WEBSITE_DESCRIPTION' , 'alpha' );
$objectpage -> keywords = GETPOST ( 'WEBSITE_KEYWORDS' , 'alpha' );
2017-10-06 18:29:18 +02:00
$objectpage -> lang = GETPOST ( 'WEBSITE_LANG' , 'aZ09' );
$objectpage -> htmlheader = GETPOST ( 'htmlheader' , 'none' );
2017-07-21 02:30:02 +02:00
}
2017-08-20 18:50:51 +02:00
if ( ! $error )
2017-07-02 23:38:19 +02:00
{
2017-08-20 18:50:51 +02:00
if ( empty ( $objectpage -> pageurl ))
{
setEventMessages ( $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentitiesnoconv ( " WEBSITE_PAGENAME " )), null , 'errors' );
$error ++ ;
$action = 'create' ;
}
else if ( ! preg_match ( '/^[a-z0-9\-\_]+$/i' , $objectpage -> pageurl ))
{
setEventMessages ( $langs -> transnoentities ( " ErrorFieldCanNotContainSpecialCharacters " , $langs -> transnoentities ( 'WEBSITE_PAGENAME' )), null , 'errors' );
$error ++ ;
$action = 'create' ;
}
if ( empty ( $objectpage -> title ))
{
setEventMessages ( $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentitiesnoconv ( " WEBSITE_TITLE " )), null , 'errors' );
$error ++ ;
$action = 'create' ;
}
2016-04-23 21:34:10 +02:00
}
2016-04-27 09:41:42 +02:00
2016-04-23 21:34:10 +02:00
if ( ! $error )
{
$res = $objectpage -> create ( $user );
if ( $res <= 0 )
{
$error ++ ;
setEventMessages ( $objectpage -> error , $objectpage -> errors , 'errors' );
}
2017-10-01 20:37:41 +02:00
}
if ( ! $error )
{
if ( ! empty ( $objectpage -> content ))
{
$filealias = $pathofwebsite . '/' . $objectpage -> pageurl . '.php' ;
$filetpl = $pathofwebsite . '/page' . $objectpage -> id . '.tpl.php' ;
// Save page alias
$result = dolSavePageAlias ( $filealias , $object , $objectpage );
if ( ! $result ) setEventMessages ( 'Failed to write file ' . $filealias , null , 'errors' );
// Save page of content
$result = dolSavePageContent ( $filetpl , $object , $objectpage );
if ( $result )
{
setEventMessages ( $langs -> trans ( " Saved " ), null , 'mesgs' );
//header("Location: ".$_SERVER["PHP_SELF"].'?website='.$website.'&pageid='.$pageid);
//exit;
}
else
{
setEventMessages ( 'Failed to write file ' . $filetpl , null , 'errors' );
//header("Location: ".$_SERVER["PHP_SELF"].'?website='.$website.'&pageid='.$pageid);
//exit;
}
}
2016-04-23 21:34:10 +02:00
}
if ( ! $error )
{
$db -> commit ();
2016-05-07 16:38:32 +02:00
setEventMessages ( $langs -> trans ( " PageAdded " , $objectpage -> pageurl ), null , 'mesgs' );
2016-04-23 21:34:10 +02:00
$action = '' ;
}
else
{
$db -> rollback ();
}
2017-07-02 23:38:19 +02:00
if ( ! $error )
{
2017-10-01 21:29:49 +02:00
$pageid = $objectpage -> id ;
2017-10-01 20:37:41 +02:00
2017-10-01 21:29:49 +02:00
// To generate the CSS, robot and htmlheader file.
2017-10-01 20:37:41 +02:00
if ( ! dol_is_file ( $filehtmlheader ))
{
2017-10-01 21:29:49 +02:00
// TODO use header of page for common header ?
2017-10-01 20:37:41 +02:00
$htmlheadercontent = " <!-- HTML header content (common for all pages) --> " ;
$result = dolSaveHtmlHeader ( $filehtmlheader , $htmlheadercontent );
}
if ( ! dol_is_file ( $filecss ))
{
$csscontent = " /* CSS content (all pages) */ \n body.bodywebsite { margin: 0; }' " ;
$result = dolSaveCssFile ( $filecss , $csscontent );
}
if ( ! dol_is_file ( $filerobot ))
{
$robotcontent = " # Robot file. Generated with Dolibarr \n User-agent: * \n Allow: /public/ \n Disallow: /administrator/ " ;
$result = dolSaveRobotFile ( $filerobot , $robotcontent );
}
if ( ! dol_is_file ( $filehtaccess ))
{
$htaccesscontent = " # Order allow,deny \n # Deny from all " ;
$result = dolSaveHtaccessFile ( $filehtaccess , $htaccesscontent );
}
$action = 'preview' ;
2017-07-02 23:38:19 +02:00
}
2016-04-23 21:34:10 +02:00
}
// Update page
2016-05-01 17:01:38 +02:00
if ( $action == 'delete' )
{
$db -> begin ();
$res = $object -> fetch ( 0 , $website );
$res = $objectpage -> fetch ( $pageid , $object -> fk_website );
if ( $res > 0 )
{
$res = $objectpage -> delete ( $user );
if ( ! $res > 0 )
{
$error ++ ;
setEventMessages ( $objectpage -> error , $objectpage -> errors , 'errors' );
}
if ( ! $error )
{
$db -> commit ();
setEventMessages ( $langs -> trans ( " PageDeleted " , $objectpage -> pageurl , $website ), null , 'mesgs' );
2017-07-02 23:38:19 +02:00
2016-05-01 17:01:38 +02:00
header ( " Location: " . $_SERVER [ " PHP_SELF " ] . '?website=' . $website );
exit ;
}
else
{
$db -> rollback ();
}
}
else
{
dol_print_error ( $db );
}
}
2016-05-01 16:34:50 +02:00
// Update css
if ( $action == 'updatecss' )
2016-04-23 21:34:10 +02:00
{
2017-07-19 16:38:00 +02:00
if ( GETPOST ( 'refreshsite' ) || GETPOST ( 'refreshpage' )) // If we tried to reload another site/page, we stay on editcss mode.
{
$action = 'editcss' ;
}
else
{
$res = $object -> fetch ( 0 , $website );
// Html header file
2017-07-21 02:30:02 +02:00
$htmlheadercontent = '' ;
2017-07-21 20:16:53 +02:00
2017-08-21 04:17:28 +02:00
/* We disable php code since htmlheader is never executed as an include but only read by fgets_content .
2017-07-21 20:16:53 +02:00
$htmlheadercontent .= " <?php // BEGIN PHP \n " ;
$htmlheadercontent .= '$websitekey=basename(dirname(__FILE__));' . " \n " ;
$htmlheadercontent .= " if (! defined('USEDOLIBARRSERVER')) { require_once './master.inc.php'; } // Not already loaded " . " \n " ;
$htmlheadercontent .= " require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php'; \n " ;
$htmlheadercontent .= " require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php'; \n " ;
$htmlheadercontent .= " ob_start(); \n " ;
// $htmlheadercontent.= "header('Content-type: text/html');\n"; // Not required. htmlheader.html is never call as a standalone page
2017-08-21 04:17:28 +02:00
$htmlheadercontent .= " // END PHP ?> \n " ; */
2017-07-21 20:16:53 +02:00
2017-09-23 01:24:31 +02:00
$htmlheadercontent .= preg_replace ( array ( '/<html>\n*/ims' , '/<\/html>\n*/ims' ), array ( '' , '' ), GETPOST ( 'WEBSITE_HTML_HEADER' , 'none' ));
2017-07-19 16:38:00 +02:00
2017-08-21 04:17:28 +02:00
/* $htmlheadercontent .= " \n " . '<?php // BEGIN PHP' . " \n " ;
2017-07-21 20:16:53 +02:00
$htmlheadercontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp);' . " \n " ;
2017-08-21 04:17:28 +02:00
$htmlheadercontent .= " // END PHP ?> " . " \n " ; */
2017-07-21 20:16:53 +02:00
2017-08-21 04:17:28 +02:00
$htmlheadercontent = trim ( $htmlheadercontent ) . " \n " ;
2017-10-01 20:37:41 +02:00
dolSaveHtmlHeader ( $filehtmlheader , $htmlheadercontent );
2017-07-19 16:38:00 +02:00
// Css file
2017-07-21 02:30:02 +02:00
$csscontent = '' ;
2017-07-21 20:16:53 +02:00
$csscontent .= " <?php // BEGIN PHP \n " ;
$csscontent .= '$websitekey=basename(dirname(__FILE__));' . " \n " ;
2017-07-28 12:11:20 +02:00
$csscontent .= " if (! defined('USEDOLIBARRSERVER')) { require_once dirname(__FILE__).'/master.inc.php'; } // Not already loaded " . " \n " ; // For the css, we need to set path of master using the dirname of css file.
2017-07-21 20:16:53 +02:00
$csscontent .= " require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php'; \n " ;
$csscontent .= " require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php'; \n " ;
$csscontent .= " ob_start(); \n " ;
2017-07-19 16:38:00 +02:00
$csscontent .= " header('Content-type: text/css'); \n " ;
2017-07-21 20:16:53 +02:00
$csscontent .= " // END PHP ?> \n " ;
2017-09-23 01:24:31 +02:00
$csscontent .= GETPOST ( 'WEBSITE_CSS_INLINE' , 'none' );
2017-07-19 16:38:00 +02:00
2017-07-21 20:16:53 +02:00
$csscontent .= " \n " . '<?php // BEGIN PHP' . " \n " ;
$csscontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp);' . " \n " ;
$csscontent .= " // END PHP ?> " . " \n " ;
2017-08-21 04:17:28 +02:00
dol_syslog ( " Save css content into " . $filecss );
2017-07-19 16:38:00 +02:00
dol_mkdir ( $pathofwebsite );
$result = file_put_contents ( $filecss , $csscontent );
if ( ! empty ( $conf -> global -> MAIN_UMASK ))
@ chmod ( $filecss , octdec ( $conf -> global -> MAIN_UMASK ));
if ( ! $result )
{
$error ++ ;
setEventMessages ( 'Failed to write file ' . $filecss , null , 'errors' );
}
2017-07-23 17:44:26 +02:00
// Css file
$robotcontent = '' ;
/* $robotcontent .= " <?php // BEGIN PHP \n " ;
$robotcontent .= '$websitekey=basename(dirname(__FILE__));' . " \n " ;
$robotcontent .= " if (! defined('USEDOLIBARRSERVER')) { require_once './master.inc.php'; } // Not already loaded " . " \n " ;
$robotcontent .= " require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php'; \n " ;
$robotcontent .= " require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php'; \n " ;
$robotcontent .= " ob_start(); \n " ;
$robotcontent .= " header('Content-type: text/css'); \n " ;
$robotcontent .= " // END PHP ?> \n " ; */
2017-09-23 01:24:31 +02:00
$robotcontent .= GETPOST ( 'WEBSITE_ROBOT' , 'none' );
2017-07-23 17:44:26 +02:00
/* $robotcontent .= " \n " . '<?php // BEGIN PHP' . " \n " ;
$robotcontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp);' . " \n " ;
$robotcontent .= " // END PHP ?> " . " \n " ; */
dol_syslog ( " Save file robot 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 )
{
$error ++ ;
setEventMessages ( 'Failed to write file ' . $filerobot , null , 'errors' );
}
// Css file
$htaccesscontent = '' ;
/* $robotcontent .= " <?php // BEGIN PHP \n " ;
$robotcontent .= '$websitekey=basename(dirname(__FILE__));' . " \n " ;
$robotcontent .= " if (! defined('USEDOLIBARRSERVER')) { require_once './master.inc.php'; } // Not already loaded " . " \n " ;
$robotcontent .= " require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php'; \n " ;
$robotcontent .= " require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php'; \n " ;
$robotcontent .= " ob_start(); \n " ;
$robotcontent .= " header('Content-type: text/css'); \n " ;
$robotcontent .= " // END PHP ?> \n " ; */
2017-09-23 01:24:31 +02:00
$htaccesscontent .= GETPOST ( 'WEBSITE_HTACCESS' , 'none' );
2017-07-23 17:44:26 +02:00
/* $robotcontent .= " \n " . '<?php // BEGIN PHP' . " \n " ;
$robotcontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp);' . " \n " ;
$robotcontent .= " // END PHP ?> " . " \n " ; */
dol_syslog ( " Save file htaccess into " . $filehtaccess );
dol_mkdir ( $pathofwebsite );
$result = file_put_contents ( $filehtaccess , $htaccesscontent );
if ( ! empty ( $conf -> global -> MAIN_UMASK ))
@ chmod ( $filehtaccess , octdec ( $conf -> global -> MAIN_UMASK ));
if ( ! $result )
{
$error ++ ;
setEventMessages ( 'Failed to write file ' . $filehtaccess , null , 'errors' );
}
// Message if no error
2017-07-19 16:38:00 +02:00
if ( ! $error )
{
setEventMessages ( $langs -> trans ( " Saved " ), null , 'mesgs' );
}
$action = 'preview' ;
}
2016-05-01 16:34:50 +02:00
}
2016-05-02 15:51:18 +02:00
// Update page
if ( $action == 'setashome' )
{
$db -> begin ();
$object -> fetch ( 0 , $website );
$object -> fk_default_home = $pageid ;
$res = $object -> update ( $user );
if ( ! $res > 0 )
{
$error ++ ;
2017-08-21 00:40:45 +02:00
setEventMessages ( $object -> error , $object -> errors , 'errors' );
2016-05-02 15:51:18 +02:00
}
2017-07-02 23:38:19 +02:00
2016-05-02 15:51:18 +02:00
if ( ! $error )
{
$db -> commit ();
2017-07-02 23:38:19 +02:00
2016-08-08 18:25:37 +02:00
// Generate the index.php page to be the home page
//-------------------------------------------------
dol_mkdir ( $pathofwebsite );
dol_delete_file ( $fileindex );
$indexcontent = '<?php' . " \n " ;
2017-07-10 23:44:46 +02:00
$indexcontent .= '// File generated to provide a shortcut to the Home Page - DO NOT MODIFY - It is just an include.' . " \n " ;
2016-08-08 18:25:37 +02:00
$indexcontent .= " include_once './ " . basename ( $filetpl ) . " ' \n " ;
$indexcontent .= '?>' . " \n " ;
$result = file_put_contents ( $fileindex , $indexcontent );
if ( ! empty ( $conf -> global -> MAIN_UMASK ))
@ chmod ( $fileindex , octdec ( $conf -> global -> MAIN_UMASK ));
2017-07-02 23:38:19 +02:00
2016-08-08 18:25:37 +02:00
if ( $result ) setEventMessages ( $langs -> trans ( " Saved " ), null , 'mesgs' );
else setEventMessages ( 'Failed to write file ' . $fileindex , null , 'errors' );
2017-07-02 23:38:19 +02:00
2016-05-02 15:51:18 +02:00
$action = 'preview' ;
}
else
{
$db -> rollback ();
}
}
2016-09-15 19:27:04 +02:00
// Update page (meta)
2016-05-01 16:34:50 +02:00
if ( $action == 'updatemeta' )
{
$db -> begin ();
2016-04-23 21:34:10 +02:00
$object -> fetch ( 0 , $website );
2016-04-27 09:41:42 +02:00
2016-04-23 21:34:10 +02:00
$objectpage -> fk_website = $object -> id ;
2016-05-01 16:34:50 +02:00
2017-07-21 02:30:02 +02:00
// Check parameters
if ( ! preg_match ( '/^[a-z0-9\-\_]+$/i' , $objectpage -> pageurl ))
{
$error ++ ;
setEventMessages ( $langs -> transnoentities ( " ErrorFieldCanNotContainSpecialCharacters " , $langs -> transnoentities ( 'WEBSITE_PAGENAME' )), null , 'errors' );
$action = 'editmeta' ;
}
2016-05-01 16:34:50 +02:00
$res = $objectpage -> fetch ( $pageid , $object -> fk_website );
2017-07-21 02:30:02 +02:00
if ( $res <= 0 )
{
$error ++ ;
dol_print_error ( $db , 'Page not found' );
}
if ( ! $error )
2016-05-01 16:34:50 +02:00
{
2016-09-15 19:27:04 +02:00
$objectpage -> old_object = clone $objectpage ;
2017-07-02 23:38:19 +02:00
2017-09-23 01:24:31 +02:00
$objectpage -> pageurl = GETPOST ( 'WEBSITE_PAGENAME' , 'alpha' );
$objectpage -> title = GETPOST ( 'WEBSITE_TITLE' , 'alpha' );
$objectpage -> description = GETPOST ( 'WEBSITE_DESCRIPTION' , 'alpha' );
$objectpage -> keywords = GETPOST ( 'WEBSITE_KEYWORDS' , 'alpha' );
2017-10-06 18:29:18 +02:00
$objectpage -> lang = GETPOST ( 'WEBSITE_LANG' , 'aZ09' );
$objectpage -> htmlheader = GETPOST ( 'htmlheader' , 'none' );
2016-04-27 09:41:42 +02:00
2016-05-01 16:34:50 +02:00
$res = $objectpage -> update ( $user );
if ( ! $res > 0 )
{
$error ++ ;
setEventMessages ( $objectpage -> error , $objectpage -> errors , 'errors' );
}
2016-04-27 09:41:42 +02:00
2016-05-01 16:34:50 +02:00
if ( ! $error )
{
$db -> commit ();
2016-08-08 18:25:37 +02:00
2016-09-16 01:00:24 +02:00
$filemaster = $pathofwebsite . '/master.inc.php' ;
2016-09-15 19:27:04 +02:00
$fileoldalias = $pathofwebsite . '/' . $objectpage -> old_object -> pageurl . '.php' ;
2016-08-08 18:25:37 +02:00
$filealias = $pathofwebsite . '/' . $objectpage -> pageurl . '.php' ;
2016-09-16 01:23:54 +02:00
2016-09-16 01:00:24 +02:00
dol_mkdir ( $pathofwebsite );
2017-07-02 23:38:19 +02:00
2016-09-16 01:00:24 +02:00
// Now generate the master.inc.php page
2017-07-20 16:49:20 +02:00
dol_syslog ( " We regenerate the master file (because we update meta) " );
2016-09-16 01:00:24 +02:00
dol_delete_file ( $filemaster );
2017-07-02 23:38:19 +02:00
2016-09-16 01:00:24 +02:00
$mastercontent = '<?php' . " \n " ;
2017-02-24 21:13:40 +01:00
$mastercontent .= '// File generated to link to the master file - DO NOT MODIFY - It is just an include' . " \n " ;
2017-07-21 17:55:43 +02:00
$mastercontent .= " if (! defined('USEDOLIBARRSERVER')) require_once ' " . DOL_DOCUMENT_ROOT . " /master.inc.php'; \n " ;
2017-07-21 02:30:02 +02:00
//$mastercontent.= "include_once DOL_DOCUMENT_ROOT.'/websites/class/website.class.php';"."\n";
//$mastercontent.= '$website = new WebSite($db)'."\n";
2016-09-16 01:00:24 +02:00
$mastercontent .= '?>' . " \n " ;
$result = file_put_contents ( $filemaster , $mastercontent );
if ( ! empty ( $conf -> global -> MAIN_UMASK ))
@ chmod ( $filemaster , octdec ( $conf -> global -> MAIN_UMASK ));
2017-07-02 23:38:19 +02:00
2016-09-16 01:00:24 +02:00
if ( ! $result ) setEventMessages ( 'Failed to write file ' . $filemaster , null , 'errors' );
2017-07-02 23:38:19 +02:00
2016-09-16 01:00:24 +02:00
// Now generate the alias.php page
if ( ! empty ( $fileoldalias ))
{
dol_syslog ( " We regenerate alias page new name= " . $filealias . " , old name= " . $fileoldalias );
dol_delete_file ( $fileoldalias );
}
2017-07-02 23:38:19 +02:00
2017-08-21 00:40:45 +02:00
// Save page alias
$result = dolSavePageAlias ( $filealias , $object , $objectpage );
2016-09-16 01:00:24 +02:00
if ( ! $result ) setEventMessages ( 'Failed to write file ' . $filealias , null , 'errors' );
2016-08-08 18:25:37 +02:00
2017-07-28 15:32:15 +02:00
// Save page of content
$result = dolSavePageContent ( $filetpl , $object , $objectpage );
2016-08-08 18:25:37 +02:00
if ( $result )
{
2016-09-16 01:00:24 +02:00
setEventMessages ( $langs -> trans ( " Saved " ), null , 'mesgs' );
2016-08-08 18:25:37 +02:00
//header("Location: ".$_SERVER["PHP_SELF"].'?website='.$website.'&pageid='.$pageid);
//exit;
}
2017-07-28 15:32:15 +02:00
else
{
setEventMessages ( 'Failed to write file ' . $filetpl , null , 'errors' );
//header("Location: ".$_SERVER["PHP_SELF"].'?website='.$website.'&pageid='.$pageid);
//exit;
}
2017-07-02 23:38:19 +02:00
2016-05-01 16:34:50 +02:00
$action = 'preview' ;
}
else
{
$db -> rollback ();
}
}
}
2016-04-23 21:34:10 +02:00
// Update page
2017-08-03 01:45:31 +02:00
if (( $action == 'updatesource' || $action == 'updatecontent' || $action == 'confirm_createfromclone' || $action == 'confirm_createpagefromclone' )
2017-07-21 13:38:13 +02:00
|| ( $action == 'preview' && ( GETPOST ( 'refreshsite' ) || GETPOST ( 'refreshpage' ) || GETPOST ( 'preview' ))))
2016-04-23 21:34:10 +02:00
{
$object -> fetch ( 0 , $website );
2016-05-01 16:34:50 +02:00
2017-08-03 01:45:31 +02:00
if ( $action == 'confirm_createfromclone' )
{
$objectnew = new Website ( $db );
2017-08-21 01:04:30 +02:00
$result = $objectnew -> createFromClone ( $user , GETPOST ( 'id' , 'int' ), GETPOST ( 'siteref' , 'aZ09' ), ( GETPOST ( 'newlang' , 'aZ09' ) ? GETPOST ( 'newlang' , 'aZ09' ) : '' ));
2017-08-03 01:45:31 +02:00
if ( $result < 0 )
{
$error ++ ;
setEventMessages ( $objectnew -> error , $objectnew -> errors , 'errors' );
2017-08-21 00:40:45 +02:00
$action = 'preview' ;
}
else
{
$object = $objectnew ;
$id = $object -> id ;
$pageid = $object -> fk_default_home ;
2017-08-03 01:45:31 +02:00
}
}
2017-07-22 20:01:29 +02:00
if ( $action == 'confirm_createpagefromclone' )
2017-07-21 13:38:13 +02:00
{
2017-07-22 20:01:29 +02:00
$istranslation = ( GETPOST ( 'is_a_translation' , 'aZ09' ) == 'on' ? 1 : 0 );
if ( $istranslation )
2017-07-21 13:38:13 +02:00
{
2017-07-22 20:01:29 +02:00
if ( GETPOST ( 'newlang' , 'aZ09' ) == $objectpage -> lang )
{
$error ++ ;
setEventMessages ( $langs -> trans ( " LanguageMustNotBeSameThanClonedPage " ), null , 'errors' );
$action = 'preview' ;
}
2017-07-21 13:38:13 +02:00
}
2017-07-22 20:01:29 +02:00
if ( ! $error )
{
$objectpage = new WebsitePage ( $db );
2017-08-03 01:45:31 +02:00
$result = $objectpage -> createFromClone ( $user , $pageid , GETPOST ( 'pageurl' , 'aZ09' ), ( GETPOST ( 'newlang' , 'aZ09' ) ? GETPOST ( 'newlang' , 'aZ09' ) : '' ), $istranslation , GETPOST ( 'newwebsite' , 'int' ));
2017-07-22 20:01:29 +02:00
if ( $result < 0 )
{
$error ++ ;
setEventMessages ( $objectpage -> error , $objectpage -> errors , 'errors' );
$action = 'createpagefromclone' ;
}
}
2017-07-03 02:09:14 +02:00
}
2017-07-22 20:01:29 +02:00
$res = 0 ;
if ( ! $error )
2017-04-28 13:10:08 +02:00
{
2017-07-22 20:01:29 +02:00
// Check symlink to medias and restore it if ko
$pathtomedias = DOL_DATA_ROOT . '/medias' ;
$pathtomediasinwebsite = $pathofwebsite . '/medias' ;
if ( ! is_link ( dol_osencode ( $pathtomediasinwebsite )))
{
dol_syslog ( " Create symlink for " . $pathtomedias . " into name " . $pathtomediasinwebsite );
dol_mkdir ( dirname ( $pathtomediasinwebsite )); // To be sure dir for website exists
$result = symlink ( $pathtomedias , $pathtomediasinwebsite );
}
2017-07-02 23:38:19 +02:00
2017-07-22 20:01:29 +02:00
/* if ( GETPOST ( 'savevirtualhost' ) && $object -> virtualhost != GETPOST ( 'previewsite' ))
{
$object -> virtualhost = GETPOST ( 'previewsite' , 'alpha' );
$object -> update ( $user );
} */
2016-05-02 20:27:34 +02:00
2017-07-22 20:01:29 +02:00
$objectpage -> fk_website = $object -> id ;
if ( $pageid > 0 )
{
$res = $objectpage -> fetch ( $pageid );
}
else
{
$res = 0 ;
if ( $object -> fk_default_home > 0 )
{
$res = $objectpage -> fetch ( $object -> fk_default_home );
}
if ( ! ( $res > 0 ))
{
$res = $objectpage -> fetch ( 0 , $object -> id );
}
}
2017-04-28 13:10:08 +02:00
}
2017-07-02 23:38:19 +02:00
2017-07-22 20:01:29 +02:00
if ( ! $error && $res > 0 )
2016-04-23 21:34:10 +02:00
{
2017-07-22 20:46:02 +02:00
if ( $action == 'updatesource' || $action == 'updatecontent' )
2016-04-23 21:34:10 +02:00
{
2017-04-28 13:10:08 +02:00
$db -> begin ();
2017-07-02 23:38:19 +02:00
2017-09-01 13:09:13 +02:00
$objectpage -> content = GETPOST ( 'PAGE_CONTENT' , 'none' );
2017-07-02 23:38:19 +02:00
2017-04-07 16:44:43 +02:00
// Clean data. We remove all the head section.
2017-07-28 13:05:24 +02:00
$objectpage -> content = preg_replace ( '/<head>.*<\/head>/s' , '' , $objectpage -> content );
2017-04-07 16:44:43 +02:00
/* $objectpage->content = preg_replace('/<base\s+href=[\'"][^\'"]+[\'"]\s/?>/s', '', $objectpage->content); */
2017-07-02 23:38:19 +02:00
2017-08-21 03:13:44 +02:00
2017-04-07 16:44:43 +02:00
$res = $objectpage -> update ( $user );
if ( $res < 0 )
{
$error ++ ;
setEventMessages ( $objectpage -> error , $objectpage -> errors , 'errors' );
}
2017-07-02 23:38:19 +02:00
2017-04-07 16:44:43 +02:00
if ( ! $error )
{
$db -> commit ();
2017-07-02 23:38:19 +02:00
2017-04-07 16:44:43 +02:00
$filemaster = $pathofwebsite . '/master.inc.php' ;
//$fileoldalias=$pathofwebsite.'/'.$objectpage->old_object->pageurl.'.php';
$filealias = $pathofwebsite . '/' . $objectpage -> pageurl . '.php' ;
2017-07-02 23:38:19 +02:00
2017-04-07 16:44:43 +02:00
dol_mkdir ( $pathofwebsite );
2017-07-02 23:38:19 +02:00
2017-04-07 16:44:43 +02:00
// Now generate the master.inc.php page
dol_syslog ( " We regenerate the master file " );
dol_delete_file ( $filemaster );
2017-07-02 23:38:19 +02:00
2017-04-07 16:44:43 +02:00
$mastercontent = '<?php' . " \n " ;
$mastercontent .= '// File generated to link to the master file' . " \n " ;
2017-07-21 17:55:43 +02:00
$mastercontent .= " if (! defined('USEDOLIBARRSERVER')) require_once ' " . DOL_DOCUMENT_ROOT . " /master.inc.php'; \n " ;
2017-04-07 16:44:43 +02:00
$mastercontent .= '?>' . " \n " ;
$result = file_put_contents ( $filemaster , $mastercontent );
if ( ! empty ( $conf -> global -> MAIN_UMASK ))
@ chmod ( $filemaster , octdec ( $conf -> global -> MAIN_UMASK ));
2017-07-02 23:38:19 +02:00
2017-04-07 16:44:43 +02:00
if ( ! $result ) setEventMessages ( 'Failed to write file ' . $filemaster , null , 'errors' );
2017-07-02 23:38:19 +02:00
2017-04-07 16:44:43 +02:00
// Now generate the alias.php page
if ( ! empty ( $fileoldalias ))
{
dol_syslog ( " We regenerate alias page new name= " . $filealias . " , old name= " . $fileoldalias );
dol_delete_file ( $fileoldalias );
}
2017-07-02 23:38:19 +02:00
2017-08-21 00:40:45 +02:00
// Save page alias
$result = dolSavePageAlias ( $filealias , $object , $objectpage );
2017-04-07 16:44:43 +02:00
if ( ! $result ) setEventMessages ( 'Failed to write file ' . $filealias , null , 'errors' );
2017-07-02 23:38:19 +02:00
2017-07-28 15:32:15 +02:00
// Save page content
$result = dolSavePageContent ( $filetpl , $object , $objectpage );
2017-04-07 16:44:43 +02:00
if ( $result )
{
setEventMessages ( $langs -> trans ( " Saved " ), null , 'mesgs' );
header ( " Location: " . $_SERVER [ " PHP_SELF " ] . '?website=' . $website . '&pageid=' . $pageid );
exit ;
}
2017-07-02 23:38:19 +02:00
else
2017-04-07 16:44:43 +02:00
{
2017-07-02 23:38:19 +02:00
setEventMessages ( 'Failed to write file ' . $filetpl , null , 'errors' );
2017-04-07 16:44:43 +02:00
header ( " Location: " . $_SERVER [ " PHP_SELF " ] . '?website=' . $website . '&pageid=' . $pageid );
exit ;
}
}
else
{
$db -> rollback ();
}
}
else
{
header ( " Location: " . $_SERVER [ " PHP_SELF " ] . '?website=' . $website . '&pageid=' . $pageid );
exit ;
}
2016-04-23 21:34:10 +02:00
}
else
{
2017-07-22 20:01:29 +02:00
if ( ! $error ) setEventMessages ( $langs -> trans ( " NoPageYet " ), null , 'warnings' );
2016-04-23 21:34:10 +02:00
}
}
2016-01-24 21:35:41 +01:00
2017-09-01 11:10:03 +02:00
// Export site
if ( GETPOST ( 'exportsite' ))
{
$fileofzip = exportWebSite ( $object );
2017-10-06 18:29:18 +02:00
$file_name = basename ( $fileofzip );
2017-09-01 11:10:03 +02:00
header ( " Content-Type: application/zip " );
header ( " Content-Disposition: attachment; filename= " . $file_name );
2017-10-06 18:29:18 +02:00
header ( " Content-Length: " . filesize ( $fileofzip ));
2017-09-01 11:10:03 +02:00
readfile ( $fileofzip );
exit ;
}
2016-01-24 21:35:41 +01:00
2016-02-02 16:24:12 +01:00
/*
* View
*/
$form = new Form ( $db );
2017-07-22 20:01:29 +02:00
$formadmin = new FormAdmin ( $db );
2017-07-23 16:20:53 +02:00
$formwebsite = new FormWebsite ( $db );
2016-02-02 16:24:12 +01:00
$help_url = '' ;
2017-07-19 16:38:00 +02:00
llxHeader ( '' , $langs -> trans ( " WebsiteSetup " ), $help_url , '' , 0 , 0 ,
array (
'/includes/ace/ace.js' ,
'/includes/ace/ext-statusbar.js' ,
'/includes/ace/ext-language_tools.js' ,
//'/includes/ace/ext-chromevox.js'
), array ());
2016-04-12 19:17:50 +02:00
2016-09-14 23:23:22 +02:00
print " \n " . '<form action="' . $_SERVER [ " PHP_SELF " ] . '" method="POST"><div>' ;
2016-04-23 21:34:10 +02:00
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
2017-09-01 12:19:55 +02:00
if ( $action == 'createsite' )
{
print '<input type="hidden" name="action" value="addsite">' ;
}
2016-04-23 21:34:10 +02:00
if ( $action == 'create' )
{
print '<input type="hidden" name="action" value="add">' ;
}
2016-05-01 16:34:50 +02:00
if ( $action == 'editcss' )
{
print '<input type="hidden" name="action" value="updatecss">' ;
}
if ( $action == 'editmenu' )
{
print '<input type="hidden" name="action" value="updatemenu">' ;
}
2016-05-02 15:51:18 +02:00
if ( $action == 'setashome' )
{
print '<input type="hidden" name="action" value="updateashome">' ;
}
2016-05-01 16:34:50 +02:00
if ( $action == 'editmeta' )
{
print '<input type="hidden" name="action" value="updatemeta">' ;
}
2017-07-22 20:19:10 +02:00
if ( $action == 'editsource' )
{
print '<input type="hidden" name="action" value="updatesource">' ;
}
2016-04-23 21:34:10 +02:00
if ( $action == 'editcontent' )
{
print '<input type="hidden" name="action" value="updatecontent">' ;
}
if ( $action == 'edit' )
{
2016-04-19 11:02:55 +02:00
print '<input type="hidden" name="action" value="update">' ;
2016-04-23 21:34:10 +02:00
}
2016-02-02 16:24:12 +01:00
2016-04-23 21:34:10 +02:00
// Add a margin under toolbar ?
2016-04-19 11:02:55 +02:00
$style = '' ;
2017-07-22 20:19:10 +02:00
if ( $action != 'preview' && $action != 'editcontent' && $action != 'editsource' ) $style = ' margin-bottom: 5px;' ;
2016-04-23 21:34:10 +02:00
2017-04-07 16:44:43 +02:00
//var_dump($objectpage);exit;
2016-04-19 11:02:55 +02:00
print '<div class="centpercent websitebar">' ;
2016-04-12 19:17:50 +02:00
2016-04-19 11:02:55 +02:00
if ( count ( $object -> records ) > 0 )
2016-04-12 19:17:50 +02:00
{
2016-07-14 12:52:00 +02:00
// ***** Part for web sites
2017-07-02 23:38:19 +02:00
2017-09-01 12:19:55 +02:00
print '<div class="websiteselection hideonsmartphoneimp minwwidth100">' ;
print '<input type="submit"' . $disabled . ' class="button" value="' . dol_escape_htmltag ( $langs -> trans ( " AddWebsite " )) . '" name="createsite">' ;
print '</div>' ;
2017-02-24 21:13:40 +01:00
print '<div class="websiteselection hideonsmartphoneimp">' ;
2016-04-19 11:02:55 +02:00
print $langs -> trans ( " Website " ) . ': ' ;
print '</div>' ;
2016-04-27 09:41:42 +02:00
2016-05-01 21:19:29 +02:00
// List of websites
2016-04-19 11:02:55 +02:00
print '<div class="websiteselection">' ;
2016-05-01 19:49:03 +02:00
$out = '' ;
2017-04-28 13:10:08 +02:00
$out .= '<select name="website" class="minwidth100" id="website">' ;
2016-05-01 19:49:03 +02:00
if ( empty ( $object -> records )) $out .= '<option value="-1"> </option>' ;
2016-04-19 11:02:55 +02:00
// Loop on each sites
$i = 0 ;
2016-04-23 21:34:10 +02:00
foreach ( $object -> records as $key => $valwebsite )
2016-04-19 11:02:55 +02:00
{
2016-04-23 21:34:10 +02:00
if ( empty ( $website )) $website = $valwebsite -> ref ;
2016-05-01 19:49:03 +02:00
$out .= '<option value="' . $valwebsite -> ref . '"' ;
if ( $website == $valwebsite -> ref ) $out .= ' selected' ; // To preselect a value
$out .= '>' ;
$out .= $valwebsite -> ref ;
$out .= '</option>' ;
2016-04-27 09:41:42 +02:00
$i ++ ;
2016-04-19 11:02:55 +02:00
}
2016-05-01 19:49:03 +02:00
$out .= '</select>' ;
2017-02-24 21:13:40 +01:00
$out .= ajax_combobox ( 'website' );
2016-05-01 19:49:03 +02:00
print $out ;
2016-07-14 12:52:00 +02:00
print '<input type="submit" class="button" name="refreshsite" value="' . $langs -> trans ( " Load " ) . '">' ;
2016-04-27 09:41:42 +02:00
2016-05-01 21:19:29 +02:00
if ( $website )
{
2017-04-28 13:10:08 +02:00
$virtualurl = '' ;
2016-07-14 12:52:00 +02:00
$dataroot = DOL_DATA_ROOT . '/websites/' . $website ;
2017-04-28 13:10:08 +02:00
if ( ! empty ( $object -> virtualhost )) $virtualurl = $object -> virtualhost ;
2016-09-14 23:23:22 +02:00
}
2017-07-02 23:38:19 +02:00
2017-08-03 01:45:31 +02:00
if ( $website && ( $action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone' ))
2016-09-14 23:23:22 +02:00
{
$disabled = '' ;
2016-11-12 16:39:08 +01:00
if ( empty ( $user -> rights -> websites -> write )) $disabled = ' disabled="disabled"' ;
2017-07-02 23:38:19 +02:00
2016-07-14 12:52:00 +02:00
print ' ' ;
2017-07-02 23:38:19 +02:00
2016-09-14 23:23:22 +02:00
print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " EditCss " )) . '" name="editcss">' ;
2017-09-01 12:19:55 +02:00
//print '<input type="submit" class="button"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("EditMenu")).'" name="editmenu">';
2017-08-03 01:45:31 +02:00
print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " CloneSite " )) . '" name="createfromclone">' ;
2017-09-01 11:10:03 +02:00
print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " ExportSite " )) . '" name="exportsite">' ;
2017-08-20 21:23:19 +02:00
print ' ' ;
print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " MediaFiles " )) . '" name="editmedias">' ;
2016-05-01 21:19:29 +02:00
}
2017-07-02 23:38:19 +02:00
2016-04-19 11:02:55 +02:00
print '</div>' ;
2016-04-27 09:41:42 +02:00
2016-05-01 21:19:29 +02:00
// Button for websites
2016-04-19 11:02:55 +02:00
print '<div class="websitetools">' ;
2016-04-27 09:41:42 +02:00
2017-08-03 01:45:31 +02:00
if ( $action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone' )
2016-04-19 11:02:55 +02:00
{
2017-07-20 11:51:30 +02:00
print '<div class="websiteinputurl" id="websiteinputurl">' ;
2017-04-28 13:10:08 +02:00
print '<input type="text" id="previewsiteurl" class="minwidth200imp" name="previewsite" placeholder="' . $langs -> trans ( " http://myvirtualhost " ) . '" value="' . $virtualurl . '">' ;
2016-09-14 23:23:22 +02:00
//print '<input type="submit" class="button" name="previewwebsite" target="tab'.$website.'" value="'.$langs->trans("ViewSiteInNewTab").'">';
$htmltext = $langs -> trans ( " SetHereVirtualHost " , $dataroot );
2017-07-03 12:04:45 +02:00
print $form -> textwithpicto ( '' , $htmltext , 1 , 'help' , '' , 0 , 2 , 'helpvirtualhost' );
2016-09-14 23:23:22 +02:00
print '</div>' ;
2017-07-02 23:38:19 +02:00
2017-04-28 13:10:08 +02:00
$urlext = $virtualurl ;
$urlint = $urlwithroot . '/public/websites/index.php?website=' . $website ;
2017-07-20 18:31:58 +02:00
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 )) . '">' ;
2017-07-22 20:46:02 +02:00
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' );
2017-07-19 16:38:00 +02:00
print '</a>' ;
2017-07-02 23:38:19 +02:00
2017-04-28 13:10:08 +02:00
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' );
2016-09-14 23:23:22 +02:00
print '</a>' ;
2016-04-19 11:02:55 +02:00
}
2016-04-27 09:41:42 +02:00
2017-08-20 21:23:19 +02:00
if ( in_array ( $action , array ( 'editcss' , 'editmenu' , 'editmedias' )))
2016-05-01 19:49:03 +02:00
{
2017-09-01 13:09:13 +02:00
if ( preg_match ( '/^create/' , $action ) && $action != 'editmedias' ) print '<input type="submit" id="savefile" class="button buttonforacesave" value="' . dol_escape_htmltag ( $langs -> trans ( " Save " )) . '" name="update">' ;
if ( preg_match ( '/^edit/' , $action ) && $action != 'editmedias' ) print '<input type="submit" id="savefile" class="button buttonforacesave" value="' . dol_escape_htmltag ( $langs -> trans ( " Save " )) . '" name="update">' ;
2016-05-01 19:49:03 +02:00
if ( $action != 'preview' ) print '<input type="submit" class="button" value="' . dol_escape_htmltag ( $langs -> trans ( " Cancel " )) . '" name="preview">' ;
}
2017-07-02 23:38:19 +02:00
2016-04-19 11:02:55 +02:00
print '</div>' ;
2016-04-27 09:41:42 +02:00
2016-07-14 12:52:00 +02:00
// ***** Part for pages
2017-07-02 23:38:19 +02:00
2017-08-20 21:23:19 +02:00
if ( $website && ! in_array ( $action , array ( 'editcss' , 'editmenu' , 'editmedias' )))
2016-04-19 11:02:55 +02:00
{
2017-08-20 18:50:51 +02:00
print '</div>' ; // Close current websitebar to open a new one
2016-04-23 21:34:10 +02:00
2016-05-07 16:38:32 +02:00
$array = $objectpage -> fetchAll ( $object -> id );
if ( ! is_array ( $array ) && $array < 0 ) dol_print_error ( '' , $objectpage -> error , $objectpage -> errors );
$atleastonepage = ( is_array ( $array ) && count ( $array ) > 0 );
2017-07-02 23:38:19 +02:00
2016-04-19 11:02:55 +02:00
print '<div class="centpercent websitebar"' . ( $style ? ' style="' . $style . '"' : '' ) . '">' ;
2017-07-21 13:38:13 +02:00
2017-09-01 12:19:55 +02:00
print '<div class="websiteselection hideonsmartphoneimp monwidth100">' ;
2017-07-21 13:38:13 +02:00
print '<input type="submit"' . $disabled . ' class="button" value="' . dol_escape_htmltag ( $langs -> trans ( " AddPage " )) . '" name="create">' ;
print '</div>' ;
2017-02-24 21:13:40 +01:00
print '<div class="websiteselection hideonsmartphoneimp">' ;
2016-04-19 11:02:55 +02:00
print $langs -> trans ( " Page " ) . ': ' ;
print '</div>' ;
print '<div class="websiteselection">' ;
2017-07-02 23:38:19 +02:00
2016-09-14 23:23:22 +02:00
if ( $action != 'add' )
2016-04-23 21:34:10 +02:00
{
2016-09-14 23:23:22 +02:00
$out = '' ;
2017-07-21 02:30:02 +02:00
$out .= '<select name="pageid" id="pageid" class="minwidth200 maxwidth300">' ;
2016-09-14 23:23:22 +02:00
if ( $atleastonepage )
2016-07-02 12:21:47 +02:00
{
2016-09-14 23:23:22 +02:00
if ( empty ( $pageid ) && $action != 'create' ) // Page id is not defined, we try to take one
{
$firstpageid = 0 ; $homepageid = 0 ;
foreach ( $array as $key => $valpage )
{
if ( empty ( $firstpageid )) $firstpageid = $valpage -> id ;
if ( $object -> fk_default_home && $key == $object -> fk_default_home ) $homepageid = $valpage -> id ;
}
$pageid = $homepageid ? $homepageid : $firstpageid ; // We choose home page and if not defined yet, we take first page
}
2017-07-02 23:38:19 +02:00
2016-07-02 12:21:47 +02:00
foreach ( $array as $key => $valpage )
{
2016-09-14 23:23:22 +02:00
$out .= '<option value="' . $key . '"' ;
if ( $pageid > 0 && $pageid == $key ) $out .= ' selected' ; // To preselect a value
$out .= '>' ;
2017-07-21 02:30:02 +02:00
$out .= $valpage -> pageurl . ' - ' . $valpage -> title ;
2016-09-14 23:23:22 +02:00
if ( $object -> fk_default_home && $key == $object -> fk_default_home ) $out .= ' (' . $langs -> trans ( " HomePage " ) . ')' ;
$out .= '</option>' ;
2016-07-02 12:21:47 +02:00
}
2016-05-07 16:38:32 +02:00
}
2016-09-14 23:23:22 +02:00
else $out .= '<option value="-1"> </option>' ;
$out .= '</select>' ;
2017-02-24 21:13:40 +01:00
$out .= ajax_combobox ( 'pageid' );
2016-09-14 23:23:22 +02:00
print $out ;
}
else
{
print $langs -> trans ( " New " );
2016-04-23 21:34:10 +02:00
}
2016-08-08 14:21:43 +02:00
2016-07-14 12:52:00 +02:00
print '<input type="submit" class="button" name="refreshpage" value="' . $langs -> trans ( " Load " ) . '"' . ( $atleastonepage ? '' : ' disabled="disabled"' ) . '>' ;
2017-07-02 23:38:19 +02:00
2017-08-03 01:45:31 +02:00
if ( $action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone' )
2016-04-19 11:02:55 +02:00
{
$disabled = '' ;
2016-11-12 16:39:08 +01:00
if ( empty ( $user -> rights -> websites -> write )) $disabled = ' disabled="disabled"' ;
2017-07-02 23:38:19 +02:00
2017-08-03 01:45:31 +02:00
// Confirmation to clone
if ( $action == 'createfromclone' ) {
// Create an array for form
$formquestion = array (
2017-08-21 00:40:45 +02:00
array ( 'type' => 'text' , 'name' => 'siteref' , 'label' => $langs -> trans ( " Website " ) , 'value' => 'copy_of_' . $object -> ref ),
2017-08-03 01:45:31 +02:00
//array('type' => 'checkbox', 'name' => 'is_a_translation', 'label' => $langs->trans("SiteIsANewTranslation"), 'value' => 0),
//array('type' => 'other','name' => 'newlang','label' => $langs->trans("Language"), 'value' => $formadmin->select_language(GETPOST('newlang', 'az09')?GETPOST('newlang', 'az09'):$langs->defaultlang, 'newlang', 0, null, '', 0, 0, 'minwidth200')),
//array('type' => 'other','name' => 'newwebsite','label' => $langs->trans("Website"), 'value' => $formwebsite->selectWebsite($object->id, 'newwebsite', 0))
);
2017-08-21 01:04:30 +02:00
$formconfirm = $form -> formconfirm ( $_SERVER [ " PHP_SELF " ] . '?id=' . $object -> id , $langs -> trans ( 'CloneSite' ), '' , 'confirm_createfromclone' , $formquestion , 0 , 1 , 200 );
2017-08-03 01:45:31 +02:00
print $formconfirm ;
}
2016-04-23 21:34:10 +02:00
if ( $pageid > 0 )
2016-04-19 11:02:55 +02:00
{
2017-08-03 01:45:31 +02:00
// Confirmation to clone
2017-07-22 20:01:29 +02:00
if ( $action == 'createpagefromclone' ) {
// Create an array for form
$formquestion = array (
array ( 'type' => 'text' , 'name' => 'pageurl' , 'label' => $langs -> trans ( " WEBSITE_PAGENAME " ) , 'value' => 'copy_of_' . $objectpage -> pageurl ),
array ( 'type' => 'checkbox' , 'name' => 'is_a_translation' , 'label' => $langs -> trans ( " PageIsANewTranslation " ), 'value' => 0 ),
2017-07-23 16:20:53 +02:00
array ( 'type' => 'other' , 'name' => 'newlang' , 'label' => $langs -> trans ( " Language " ), 'value' => $formadmin -> select_language ( GETPOST ( 'newlang' , 'az09' ) ? GETPOST ( 'newlang' , 'az09' ) : $langs -> defaultlang , 'newlang' , 0 , null , '' , 0 , 0 , 'minwidth200' )),
array ( 'type' => 'other' , 'name' => 'newwebsite' , 'label' => $langs -> trans ( " Website " ), 'value' => $formwebsite -> selectWebsite ( $object -> id , 'newwebsite' , 0 ))
);
2017-07-22 20:01:29 +02:00
$formconfirm = $form -> formconfirm ( $_SERVER [ " PHP_SELF " ] . '?pageid=' . $pageid , $langs -> trans ( 'ClonePage' ), '' , 'confirm_createpagefromclone' , $formquestion , 0 , 1 , 250 );
print $formconfirm ;
}
2016-09-14 23:23:22 +02:00
print ' ' ;
2017-07-02 23:38:19 +02:00
2017-08-20 18:50:51 +02:00
print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " EditPageMeta " )) . '" name="editmeta">' ;
2017-09-01 13:09:13 +02:00
print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " EditWithEditor " )) . '" name="editcontent">' ;
print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " EditHTMLSource " )) . '" name="editsource">' ;
2017-07-20 20:05:49 +02:00
if ( $object -> fk_default_home > 0 && $pageid == $object -> fk_default_home ) print '<input type="submit" class="button" disabled="disabled" value="' . dol_escape_htmltag ( $langs -> trans ( " SetAsHomePage " )) . '" name="setashome">' ;
else print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " SetAsHomePage " )) . '" name="setashome">' ;
2017-07-21 13:38:13 +02:00
print '<input type="submit" class="button"' . $disabled . ' value="' . dol_escape_htmltag ( $langs -> trans ( " ClonePage " )) . '" name="createpagefromclone">' ;
2016-08-08 14:21:43 +02:00
print '<input type="submit" class="buttonDelete" name="delete" value="' . $langs -> trans ( " Delete " ) . '"' . ( $atleastonepage ? '' : ' disabled="disabled"' ) . '>' ;
2016-04-19 11:02:55 +02:00
}
}
2017-07-02 23:38:19 +02:00
2017-08-20 18:50:51 +02:00
print '</div>' ; // end website selection
2016-09-14 23:23:22 +02:00
print '<div class="websitetools">' ;
2017-08-03 01:45:31 +02:00
if ( $website && $pageid > 0 && ( $action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone' ))
2016-09-14 23:23:22 +02:00
{
$websitepage = new WebSitePage ( $db );
$websitepage -> fetch ( $pageid );
2017-07-02 23:38:19 +02:00
2017-07-21 02:30:02 +02:00
$realpage = $urlwithroot . '/public/websites/index.php?website=' . $website . '&pageref=' . $websitepage -> pageurl ;
2016-09-14 23:23:22 +02:00
$pagealias = $websitepage -> pageurl ;
2017-07-02 23:38:19 +02:00
2017-07-20 11:51:30 +02:00
print '<div class="websiteinputurl" id="websiteinputpage">' ;
2016-09-14 23:23:22 +02:00
print '<input type="text" id="previewpageurl" class="minwidth200imp" name="previewsite" value="' . $pagealias . '" disabled="disabled">' ;
2017-07-03 12:04:45 +02:00
$htmltext = $langs -> trans ( " PageNameAliasHelp " , $langs -> transnoentitiesnoconv ( " EditPageMeta " ));
print $form -> textwithpicto ( '' , $htmltext , 1 , 'help' , '' , 0 , 2 , 'helppagealias' );
2016-09-14 23:23:22 +02:00
print '</div>' ;
2017-07-02 23:38:19 +02:00
2017-07-20 11:51:30 +02:00
$urlext = $virtualurl . '/' . $pagealias . '.php' ;
$urlint = $urlwithroot . '/public/websites/index.php?website=' . $website ;
2017-07-21 02:30:02 +02:00
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 )) . '">' ;
2017-07-20 18:31:58 +02:00
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' );
2017-07-20 11:51:30 +02:00
print '</a>' ;
2017-07-02 23:38:19 +02:00
2017-04-28 13:10:08 +02:00
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 )) . '">' ;
2017-07-02 23:38:19 +02:00
print $form -> textwithpicto ( '' , $langs -> trans ( " PreviewSiteServedByDolibarr " , $langs -> transnoentitiesnoconv ( " Page " ), $langs -> transnoentitiesnoconv ( " Page " ), $realpage , $dataroot ), 1 , 'preview' );
2016-09-14 23:23:22 +02:00
print '</a>' ; // View page in new Tab
//print '<input type="submit" class="button" name="previewpage" target="tab'.$website.'"value="'.$langs->trans("ViewPageInNewTab").'">';
2017-07-02 23:38:19 +02:00
2016-09-14 23:23:22 +02:00
// TODO Add js to save alias like we save virtual host name and use dynamic virtual host for url of id=previewpageext
}
2017-09-01 12:19:55 +02:00
if ( ! in_array ( $action , array ( 'editcss' , 'editmenu' , 'editmedias' , 'createsite' , 'create' , 'createpagefromclone' )))
2016-05-01 19:49:03 +02:00
{
2017-09-01 13:09:13 +02:00
if ( preg_match ( '/^create/' , $action )) print '<input type="submit" id="savefile" class="button buttonforacesave" value="' . dol_escape_htmltag ( $langs -> trans ( " Save " )) . '" name="update">' ;
if ( preg_match ( '/^edit/' , $action )) print '<input type="submit" id="savefile" class="button buttonforacesave" value="' . dol_escape_htmltag ( $langs -> trans ( " Save " )) . '" name="update">' ;
2016-05-01 19:49:03 +02:00
if ( $action != 'preview' ) print '<input type="submit" class="button" value="' . dol_escape_htmltag ( $langs -> trans ( " Cancel " )) . '" name="preview">' ;
}
2017-07-02 23:38:19 +02:00
2017-08-20 18:50:51 +02:00
print '</div>' ; // end websitetools
2016-04-27 09:41:42 +02:00
2017-07-20 16:49:20 +02:00
print '<div class="websitehelp">' ;
2017-07-22 20:19:10 +02:00
if ( GETPOST ( 'editsource' , 'alpha' ) || GETPOST ( 'editcontent' , 'alpha' ))
2017-07-20 16:49:20 +02:00
{
$htmltext = $langs -> transnoentitiesnoconv ( " YouCanEditHtmlSource " );
print $form -> textwithpicto ( $langs -> trans ( " SyntaxHelp " ), $htmltext , 1 , 'help' , 'inline-block' , 0 , 2 , 'tooltipsubstitution' );
}
2017-08-20 18:50:51 +02:00
print '</div>' ; // end websitehelp
2017-07-20 16:49:20 +02:00
2017-08-03 01:45:31 +02:00
if ( $action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone' )
2016-09-14 23:23:22 +02:00
{
// Adding jquery code to change on the fly url of preview ext
if ( ! empty ( $conf -> use_javascript_ajax ))
{
print ' < script type = " text/javascript " language = " javascript " >
jQuery ( document ) . ready ( function () {
2017-07-20 11:51:30 +02:00
jQuery ( " #websiteinputurl " ) . keyup ( function () {
console . log ( " Website external url modified " + jQuery ( " #previewsiteurl " ) . val ());
if ( jQuery ( " #previewsiteurl " ) . val () != " " ) jQuery ( " a.websitebuttonsitepreviewdisabled img " ) . css ({ opacity : 1 });
else jQuery ( " a.websitebuttonsitepreviewdisabled img " ) . css ({ opacity : 0.2 });
});
2016-09-14 23:23:22 +02:00
jQuery ( " #previewsiteext,#previewpageext " ) . click ( function () {
newurl = jQuery ( " #previewsiteurl " ) . val ();
newpage = jQuery ( " #previewsiteurl " ) . val () + " / " + jQuery ( " #previewpageurl " ) . val () + " .php " ;
console . log ( " Open url " + newurl );
/* Save url */
jQuery . ajax ({
method : " POST " ,
url : " '.DOL_URL_ROOT.'/core/ajax/saveinplace.php " ,
data : {
field : \ ' editval_virtualhost\ ' ,
element : \ ' websites\ ' ,
table_element : \ ' website\ ' ,
fk_element : '.$object->id.' ,
value : newurl ,
},
context : document . body
});
2017-07-02 23:38:19 +02:00
2016-09-14 23:23:22 +02:00
jQuery ( " #previewsiteext " ) . attr ( " href " , newurl );
jQuery ( " #previewpageext " ) . attr ( " href " , newpage );
});
});
</ script > ' ;
}
}
2016-04-27 09:41:42 +02:00
}
2016-04-19 11:02:55 +02:00
}
else
{
print '<div class="websiteselection">' ;
$langs -> load ( " errors " );
print $langs -> trans ( " ErrorModuleSetupNotComplete " );
print '<div>' ;
$action = '' ;
2016-04-12 19:17:50 +02:00
}
2016-02-02 16:24:12 +01:00
2016-04-19 11:02:55 +02:00
2017-08-20 18:50:51 +02:00
print '</div>' ; // end current websitebar
2016-02-02 16:24:12 +01:00
$head = array ();
/*
* Edit mode
*/
2016-05-01 16:34:50 +02:00
if ( $action == 'editcss' )
2016-02-02 16:24:12 +01:00
{
2016-04-23 21:34:10 +02:00
print '<div class="fiche">' ;
2016-04-27 09:41:42 +02:00
2016-05-01 16:34:50 +02:00
print '<br>' ;
2017-07-19 16:38:00 +02:00
$csscontent = @ file_get_contents ( $filecss );
// Clean the php css file to remove php code and get only css part
2017-07-28 12:11:20 +02:00
$csscontent = preg_replace ( '/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims' , '' , $csscontent );
2017-07-21 20:16:53 +02:00
$csscontent .= GETPOST ( 'WEBSITE_CSS_INLINE' );
2017-07-21 02:30:02 +02:00
if ( ! trim ( $csscontent )) $csscontent = '/* CSS content (all pages) */' . " \n " . 'body.bodywebsite { margin: 0; }' ;
2017-07-19 16:38:00 +02:00
2017-07-10 23:44:46 +02:00
$htmlheader = @ file_get_contents ( $filehtmlheader );
2017-07-21 00:01:27 +02:00
// Clean the php htmlheader file to remove php code and get only html part
2017-07-28 12:11:20 +02:00
$htmlheader = preg_replace ( '/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims' , '' , $htmlheader );
2017-08-20 21:23:19 +02:00
if ( ! trim ( $htmlheader )) $htmlheader = '<!-- HTML header content (common for all pages) -->' ;
else $htmlheader = '<html>' . " \n " . trim ( $htmlheader ) . " \n " . '</html>' ;
2017-07-02 23:38:19 +02:00
2017-07-23 17:44:26 +02:00
$robotcontent = @ file_get_contents ( $filerobot );
// Clean the php htmlheader file to remove php code and get only html part
2017-07-28 12:11:20 +02:00
$robotcontent = preg_replace ( '/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims' , '' , $robotcontent );
2017-07-23 17:44:26 +02:00
if ( ! trim ( $robotcontent ))
{
$robotcontent .= " # Robot file. Generated with " . DOL_APPLICATION_TITLE . " \n " ;
$robotcontent .= " User-agent: * \n " ;
$robotcontent .= " Allow: /public/ \n " ;
$robotcontent .= " Disallow: /administrator/ \n " ;
}
$htaccesscontent = @ file_get_contents ( $filehtaccess );
2017-08-21 04:17:28 +02:00
// Clean the php htaccesscontent file to remove php code and get only html part
2017-07-28 12:11:20 +02:00
$htaccesscontent = preg_replace ( '/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims' , '' , $htaccesscontent );
2017-07-23 17:44:26 +02:00
if ( ! trim ( $htaccesscontent ))
{
$htaccesscontent .= " # Order allow,deny \n " ;
$htaccesscontent .= " # Deny from all \n " ;
}
//else $htaccesscontent='<html>'."\n".$htaccesscontent."\n".'</html>';*/
2016-04-23 21:34:10 +02:00
dol_fiche_head ();
2016-04-27 09:41:42 +02:00
2016-09-14 23:42:17 +02:00
print '<!-- Edit CSS -->' . " \n " ;
2016-04-23 21:34:10 +02:00
print '<table class="border" width="100%">' ;
2016-04-27 09:41:42 +02:00
2017-07-23 17:44:26 +02:00
// Website
2016-09-15 09:33:00 +02:00
print '<tr><td class="titlefieldcreate">' ;
2016-05-01 16:34:50 +02:00
print $langs -> trans ( 'WebSite' );
2016-02-02 16:24:12 +01:00
print '</td><td>' ;
2016-05-01 16:34:50 +02:00
print $website ;
2016-02-02 16:24:12 +01:00
print '</td></tr>' ;
2016-04-27 09:41:42 +02:00
2017-07-23 17:44:26 +02:00
// CSS file
2017-01-22 12:13:32 +01:00
print '<tr><td class="tdtop">' ;
2016-05-01 16:34:50 +02:00
print $langs -> trans ( 'WEBSITE_CSS_INLINE' );
2016-02-02 16:24:12 +01:00
print '</td><td>' ;
2017-07-19 16:38:00 +02:00
$doleditor = new DolEditor ( 'WEBSITE_CSS_INLINE' , $csscontent , '' , '220' , 'ace' , 'In' , true , false , 'ace' , 0 , '100%' , '' );
print $doleditor -> Create ( 1 , '' , true , 'CSS' , 'css' );
2016-02-02 16:24:12 +01:00
print '</td></tr>' ;
2016-05-01 16:34:50 +02:00
2017-07-23 17:44:26 +02:00
// Common HTML header
2017-07-19 16:38:00 +02:00
print '<tr><td class="tdtop">' ;
2017-07-10 23:44:46 +02:00
print $langs -> trans ( 'WEBSITE_HTML_HEADER' );
print '</td><td>' ;
2017-07-19 16:38:00 +02:00
$doleditor = new DolEditor ( 'WEBSITE_HTML_HEADER' , $htmlheader , '' , '220' , 'ace' , 'In' , true , false , 'ace' , 0 , '100%' , '' );
print $doleditor -> Create ( 1 , '' , true , 'HTML Header' , 'html' );
2017-07-23 17:44:26 +02:00
print '</td></tr>' ;
// Robot file
print '<tr><td class="tdtop">' ;
print $langs -> trans ( 'WEBSITE_ROBOT' );
print '</td><td>' ;
$doleditor = new DolEditor ( 'WEBSITE_ROBOT' , $robotcontent , '' , '220' , 'ace' , 'In' , true , false , 'ace' , 0 , '100%' , '' );
print $doleditor -> Create ( 1 , '' , true , 'Robot file' , 'txt' );
print '</td></tr>' ;
// .htaccess
print '<tr><td class="tdtop">' ;
print $langs -> trans ( 'WEBSITE_HTACCESS' );
print '</td><td>' ;
$doleditor = new DolEditor ( 'WEBSITE_HTACCESS' , $htaccesscontent , '' , '220' , 'ace' , 'In' , true , false , 'ace' , 0 , '100%' , '' );
print $doleditor -> Create ( 1 , '' , true , $langs -> trans ( " File " ) . ' .htaccess' , 'txt' );
2017-07-10 23:44:46 +02:00
print '</td></tr>' ;
2016-05-01 16:34:50 +02:00
print '</table>' ;
dol_fiche_end ();
print '</div>' ;
print '<br>' ;
}
2017-09-01 12:19:55 +02:00
if ( $action == 'createsite' )
{
print '<div class="fiche">' ;
print '<br>' ;
/* $h = 0 ;
$head = array ();
$head [ $h ][ 0 ] = dol_buildpath ( '/websites/index.php' , 1 ) . '?id=' . $object -> id ;
$head [ $h ][ 1 ] = $langs -> trans ( " AddSite " );
$head [ $h ][ 2 ] = 'card' ;
$h ++ ;
dol_fiche_head ( $head , 'card' , $langs -> trans ( " AddSite " ), - 1 , 'globe' );
*/
if ( $action == 'create' ) print_fiche_titre ( $langs -> trans ( " AddSite " ));
print '<!-- Add site -->' . " \n " ;
//print '<div class="fichecenter">';
print '<table class="border" width="100%">' ;
if ( GETPOST ( 'WEBSITE_REF' )) $siteref = GETPOST ( 'WEBSITE_REF' , 'alpha' );
if ( GETPOST ( 'WEBSITE_DESCRIPTION' )) $sitedesc = GETPOST ( 'WEBSITE_DESCRIPTION' , 'alpha' );
print '<tr><td class="titlefieldcreate fieldrequired">' ;
print $langs -> trans ( 'Ref' );
print '</td><td>' ;
print '<input type="text" class="flat maxwidth300" name="WEBSITE_REF" value="' . dol_escape_htmltag ( $siteref ) . '">' ;
print '</td></tr>' ;
print '<tr><td>' ;
print $langs -> trans ( 'Description' );
print '</td><td>' ;
print '<input type="text" class="flat minwidth300" name="WEBSITE_DESCRIPTION" value="' . dol_escape_htmltag ( $sitedesc ) . '">' ;
print '</td></tr>' ;
print '<tr><td>' ;
print $form -> textwithpicto ( $langs -> trans ( 'Virtualhost' ), $langs -> trans ( " SetHereVirtualHost " , DOL_DATA_ROOT . '/websites/<i>websiteref</i>' ), 1 , 'help' , '' , 0 , 2 , 'tooltipvirtual' );
print '</td><td>' ;
print '<input type="text" class="flat minwidth300" name="WEBSITE_DESCRIPTION" value="' . dol_escape_htmltag ( $sitedesc ) . '">' ;
print '</td></tr>' ;
print '</table>' ;
if ( $action == 'createsite' )
{
print '<div class="center">' ;
print '<input class="button" type="submit" name="add" value="' . $langs -> trans ( " Create " ) . '">' ;
print '<input class="button" type="submit" name="preview" value="' . $langs -> trans ( " Cancel " ) . '">' ;
print '</div>' ;
}
//print '</div>';
//dol_fiche_end();
print '</div>' ;
print '<br>' ;
}
2016-05-01 16:34:50 +02:00
if ( $action == 'editmeta' || $action == 'create' )
{
print '<div class="fiche">' ;
2017-07-02 23:38:19 +02:00
2016-05-01 16:34:50 +02:00
print '<br>' ;
2017-07-02 23:38:19 +02:00
2017-09-01 12:19:55 +02:00
/* $h = 0 ;
2017-08-03 01:45:31 +02:00
$head = array ();
$head [ $h ][ 0 ] = dol_buildpath ( '/websites/index.php' , 1 ) . '?id=' . $object -> id ;
$head [ $h ][ 1 ] = $langs -> trans ( " AddPage " );
$head [ $h ][ 2 ] = 'card' ;
$h ++ ;
2017-09-01 12:19:55 +02:00
dol_fiche_head ( $head , 'card' , $langs -> trans ( " AddPage " ), - 1 , 'globe' );
*/
2017-08-03 01:45:31 +02:00
if ( $action == 'create' ) print_fiche_titre ( $langs -> trans ( " AddPage " ));
2017-07-02 23:38:19 +02:00
2017-09-01 12:19:55 +02:00
print '<!-- Edit or create page -->' . " \n " ;
2017-08-03 01:45:31 +02:00
//print '<div class="fichecenter">';
if ( $action == 'create' )
{
2017-08-20 18:50:51 +02:00
print '<br>' ;
print ' * ' . $langs -> trans ( " CreateByFetchingExternalPage " ) . '<br><hr>' ;
2017-08-03 01:45:31 +02:00
print '<table class="border" width="100%">' ;
print '<tr><td class="titlefieldcreate">' ;
print $langs -> trans ( " URL " );
print '</td><td>' ;
2017-08-20 18:50:51 +02:00
print '<input class="flat minwidth300" type="text" name="externalurl" value="' . dol_escape_htmltag ( GETPOST ( 'externalurl' , 'alpha' )) . '" placeholder="http://externalsite/pagetofetch"> ' ;
print '<input class="button" type="submit" name="fetchexternalurl" value="' . dol_escape_htmltag ( $langs -> trans ( " FetchAndCreate " )) . '">' ;
2017-08-03 01:45:31 +02:00
print '</td></tr>' ;
print '</table>' ;
print '<br>' ;
2017-08-20 18:50:51 +02:00
print ' * ' . $langs -> trans ( " OrEnterPageInfoManually " ) . '<br><hr>' ;
2017-08-03 01:45:31 +02:00
}
2016-05-01 16:34:50 +02:00
print '<table class="border" width="100%">' ;
2017-07-02 23:38:19 +02:00
2016-04-23 21:34:10 +02:00
if ( $action != 'create' )
2016-04-19 11:02:55 +02:00
{
2017-10-01 21:29:49 +02:00
print '<tr><td class="titlefield">' ;
print $langs -> trans ( 'IDOfPage' );
print '</td><td>' ;
print $pageid ;
print '</td></tr>' ;
2017-08-03 01:45:31 +02:00
print '<tr><td class="titlefield">' ;
2016-05-01 16:34:50 +02:00
print $langs -> trans ( 'WEBSITE_PAGEURL' );
2016-04-19 11:02:55 +02:00
print '</td><td>' ;
2016-05-01 16:34:50 +02:00
print '/public/websites/index.php?website=' . urlencode ( $website ) . '&pageid=' . urlencode ( $pageid );
2016-04-19 11:02:55 +02:00
print '</td></tr>' ;
2017-08-20 19:47:55 +02:00
/*
print '<tr><td class="titlefield">' ;
print $langs -> trans ( 'InitiallyGrabbedFrom' );
print '</td><td>' ;
print $objectpage -> grabbed_from ;
print '</td></tr>' ;
*/
2017-07-22 20:01:29 +02:00
$pageurl = $objectpage -> pageurl ;
$pagetitle = $objectpage -> title ;
$pagedescription = $objectpage -> description ;
$pagekeywords = $objectpage -> keywords ;
$pagelang = $objectpage -> lang ;
2017-10-06 18:29:18 +02:00
$pagehtmlheader = $objectpage -> htmlheader ;
2016-04-19 11:02:55 +02:00
}
2017-10-06 18:29:18 +02:00
if ( GETPOST ( 'WEBSITE_PAGENAME' , 'alpha' )) $pageurl = GETPOST ( 'WEBSITE_PAGENAME' , 'alpha' );
if ( GETPOST ( 'WEBSITE_TITLE' , 'alpha' )) $pagetitle = GETPOST ( 'WEBSITE_TITLE' , 'alpha' );
if ( GETPOST ( 'WEBSITE_DESCRIPTION' , 'alpha' )) $pagedescription = GETPOST ( 'WEBSITE_DESCRIPTION' , 'alpha' );
if ( GETPOST ( 'WEBSITE_KEYWORDS' , 'alpha' )) $pagekeywords = GETPOST ( 'WEBSITE_KEYWORDS' , 'alpha' );
if ( GETPOST ( 'WEBSITE_LANG' , 'aZ09' )) $pagelang = GETPOST ( 'WEBSITE_LANG' , 'aZ09' );
if ( GETPOST ( 'htmlheader' , 'none' )) $pagehtmlheader = GETPOST ( 'htmlheader' , 'none' );
2016-04-27 09:41:42 +02:00
2017-07-19 16:38:00 +02:00
print '<tr><td class="titlefieldcreate fieldrequired">' ;
2016-05-01 16:34:50 +02:00
print $langs -> trans ( 'WEBSITE_PAGENAME' );
print '</td><td>' ;
2017-08-03 01:45:31 +02:00
print '<input type="text" class="flat maxwidth300" name="WEBSITE_PAGENAME" value="' . dol_escape_htmltag ( $pageurl ) . '">' ;
2016-05-01 16:34:50 +02:00
print '</td></tr>' ;
2017-07-02 23:38:19 +02:00
2017-07-19 16:38:00 +02:00
print '<tr><td class="fieldrequired">' ;
2016-02-02 16:24:12 +01:00
print $langs -> trans ( 'WEBSITE_TITLE' );
print '</td><td>' ;
2017-08-03 01:45:31 +02:00
print '<input type="text" class="flat quatrevingtpercent" name="WEBSITE_TITLE" value="' . dol_escape_htmltag ( $pagetitle ) . '">' ;
2016-02-02 16:24:12 +01:00
print '</td></tr>' ;
2016-04-27 09:41:42 +02:00
2016-02-02 16:24:12 +01:00
print '<tr><td>' ;
print $langs -> trans ( 'WEBSITE_DESCRIPTION' );
print '</td><td>' ;
2017-08-03 01:45:31 +02:00
print '<input type="text" class="flat quatrevingtpercent" name="WEBSITE_DESCRIPTION" value="' . dol_escape_htmltag ( $pagedescription ) . '">' ;
2016-02-02 16:24:12 +01:00
print '</td></tr>' ;
2016-04-27 09:41:42 +02:00
2016-02-02 16:24:12 +01:00
print '<tr><td>' ;
print $langs -> trans ( 'WEBSITE_KEYWORDS' );
print '</td><td>' ;
2017-08-03 01:45:31 +02:00
print '<input type="text" class="flat quatrevingtpercent" name="WEBSITE_KEYWORDS" value="' . dol_escape_htmltag ( $pagekeywords ) . '">' ;
2017-07-22 20:01:29 +02:00
print '</td></tr>' ;
print '<tr><td>' ;
print $langs -> trans ( 'Language' );
print '</td><td>' ;
print $formadmin -> select_language ( $pagelang ? $pagelang : $langs -> defaultlang , 'WEBSITE_LANG' );
2016-02-02 16:24:12 +01:00
print '</td></tr>' ;
2017-10-06 18:29:18 +02:00
print '<tr><td>' ;
print $langs -> trans ( 'HtmlHeaderPage' );
print '</td><td>' ;
$doleditor = new DolEditor ( 'htmlheader' , $pagehtmlheader , '' , '220' , 'ace' , 'In' , true , false , 'ace' , 0 , '100%' , '' );
print $doleditor -> Create ( 1 , '' , true , 'HTML Header' , 'html' );
print '</td></tr>' ;
2016-04-27 09:41:42 +02:00
2016-02-02 16:24:12 +01:00
print '</table>' ;
2017-08-20 18:50:51 +02:00
if ( $action == 'create' )
{
print '<div class="center">' ;
print '<input class="button" type="submit" name="add" value="' . $langs -> trans ( " Create " ) . '">' ;
print '<input class="button" type="submit" name="preview" value="' . $langs -> trans ( " Cancel " ) . '">' ;
print '</div>' ;
}
2017-08-03 01:45:31 +02:00
//print '</div>';
2016-04-27 09:41:42 +02:00
2017-08-03 01:45:31 +02:00
//dol_fiche_end();
2016-04-27 09:41:42 +02:00
2016-04-23 21:34:10 +02:00
print '</div>' ;
2016-04-27 09:41:42 +02:00
2016-02-02 16:24:12 +01:00
print '<br>' ;
2016-04-19 11:02:55 +02:00
}
2017-08-20 21:23:19 +02:00
if ( $action == 'editmedias' )
2016-05-01 16:34:50 +02:00
{
2016-09-14 23:42:17 +02:00
print '<!-- Edit Media -->' . " \n " ;
2016-05-01 16:34:50 +02:00
print '<div class="center">' . $langs -> trans ( " FeatureNotYetAvailable " ) . '</center>' ;
}
2016-04-19 11:02:55 +02:00
if ( $action == 'editmenu' )
{
2016-09-14 23:42:17 +02:00
print '<!-- Edit Menu -->' . " \n " ;
2016-04-19 11:02:55 +02:00
print '<div class="center">' . $langs -> trans ( " FeatureNotYetAvailable " ) . '</center>' ;
}
2017-07-22 20:19:10 +02:00
if ( $action == 'editsource' )
{
/*
* Editing global variables not related to a specific theme
*/
2017-07-23 17:44:26 +02:00
//$csscontent = @file_get_contents($filecss);
2017-07-22 20:19:10 +02:00
$contentforedit = '' ;
/* $contentforedit .= '<style scoped>' . " \n " ; // "scoped" means "apply to parent element only". Not yet supported by browsers
$contentforedit .= $csscontent ;
$contentforedit .= '</style>' . " \n " ; */
$contentforedit .= $objectpage -> content ;
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php' ;
2017-07-22 20:46:02 +02:00
$doleditor = new DolEditor ( 'PAGE_CONTENT' , $contentforedit , '' , 500 , 'Full' , '' , true , true , 'ace' , ROWS_5 , '90%' );
$doleditor -> Create ( 0 , '' , false , 'HTML Source' , 'php' );
2017-07-22 20:19:10 +02:00
}
2016-04-19 11:02:55 +02:00
if ( $action == 'editcontent' )
{
2016-04-23 21:34:10 +02:00
/*
2016-02-02 16:24:12 +01:00
* Editing global variables not related to a specific theme
*/
2017-07-02 23:38:19 +02:00
2017-07-23 17:44:26 +02:00
//$csscontent = @file_get_contents($filecss);
2017-07-02 23:38:19 +02:00
2016-08-08 14:21:43 +02:00
$contentforedit = '' ;
/* $contentforedit .= '<style scoped>' . " \n " ; // "scoped" means "apply to parent element only". Not yet supported by browsers
$contentforedit .= $csscontent ;
$contentforedit .= '</style>' . " \n " ; */
$contentforedit .= $objectpage -> content ;
2017-07-02 23:38:19 +02:00
2017-08-21 03:13:44 +02:00
$contentforedit = preg_replace ( '/(<img.*src=")(?!http)/' , '\1' . DOL_URL_ROOT . '/viewimage.php?modulepart=medias&file=' , $contentforedit , - 1 , $nbrep );
2016-02-02 16:24:12 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php' ;
2016-11-25 17:47:47 +01:00
$doleditor = new DolEditor ( 'PAGE_CONTENT' , $contentforedit , '' , 500 , 'Full' , '' , true , true , true , ROWS_5 , '90%' );
2016-09-15 23:23:10 +02:00
$doleditor -> Create ( 0 , '' , false );
2016-02-02 16:24:12 +01:00
}
2016-09-17 21:03:20 +02:00
print " </div> \n </form> \n " ;
2016-04-19 11:02:55 +02:00
2016-02-02 16:24:12 +01:00
2017-08-03 01:45:31 +02:00
if ( $action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone' )
2016-04-19 11:02:55 +02:00
{
2016-04-23 21:34:10 +02:00
if ( $pageid > 0 )
{
2017-07-21 02:30:02 +02:00
// Ouput page under the Dolibarr top menu
2016-04-23 21:34:10 +02:00
$objectpage -> fetch ( $pageid );
2017-07-28 17:17:40 +02:00
$csscontent = @ file_get_contents ( $filecss );
2016-04-27 09:41:42 +02:00
2017-07-21 02:30:02 +02:00
$out = '<!-- Page content ' . $filetpl . ' : Div with (CSS + Page content from database) -->' . " \n " ;
2017-07-02 23:38:19 +02:00
2017-07-21 02:30:02 +02:00
$out .= '<div id="websitecontentundertopmenu" class="websitecontentundertopmenu">' . " \n " ;
2017-07-02 23:38:19 +02:00
2017-07-28 17:17:40 +02:00
// REPLACEMENT OF LINKS When page called by website editor
2017-07-02 23:38:19 +02:00
2016-05-01 16:34:50 +02:00
$out .= '<style scoped>' . " \n " ; // "scoped" means "apply to parent element only". Not yet supported by browsers
2017-08-20 18:50:51 +02:00
$out .= dolWebsiteReplacementOfLinks ( $object , $csscontent );
2016-05-01 16:34:50 +02:00
$out .= '</style>' . " \n " ;
2017-07-02 23:38:19 +02:00
2017-07-21 02:30:02 +02:00
$out .= '<div id="bodywebsite" class="bodywebsite">' . " \n " ;
2017-08-20 18:50:51 +02:00
$out .= dolWebsiteReplacementOfLinks ( $object , $objectpage -> content ) . " \n " ;
2017-07-02 23:38:19 +02:00
2017-07-21 02:30:02 +02:00
$out .= '</div>' ;
2017-07-28 17:17:40 +02:00
2016-05-01 16:34:50 +02:00
$out .= '</div>' ;
2017-07-02 23:38:19 +02:00
2017-02-24 21:13:40 +01:00
$out .= " \n " . '<!-- End page content ' . $filetpl . ' -->' . " \n \n " ;
2017-07-02 23:38:19 +02:00
2016-05-01 16:34:50 +02:00
print $out ;
2017-07-02 23:38:19 +02:00
2016-05-01 16:34:50 +02:00
/* file_put_contents ( $filetpl , $out );
if ( ! empty ( $conf -> global -> MAIN_UMASK ))
@ chmod ( $filetpl , octdec ( $conf -> global -> MAIN_UMASK ));
// Output file on browser
dol_syslog ( " index.php include $filetpl $filename content-type= $type " );
$original_file_osencoded = dol_osencode ( $filetpl ); // New file name encoded in OS encoding charset
2017-07-02 23:38:19 +02:00
2016-05-01 16:34:50 +02:00
// This test if file exists should be useless. We keep it to find bug more easily
if ( ! file_exists ( $original_file_osencoded ))
{
dol_print_error ( 0 , $langs -> trans ( " ErrorFileDoesNotExists " , $original_file ));
exit ;
}
2017-07-02 23:38:19 +02:00
2016-05-01 16:34:50 +02:00
//include_once $original_file_osencoded;
*/
2017-07-02 23:38:19 +02:00
2016-05-01 16:34:50 +02:00
/* print '<iframe class="websiteiframenoborder centpercent" src="' . DOL_URL_ROOT . '/public/websites/index.php?website=' . $website . '&pageid=' . $pageid . '"/>' ;
print '</iframe>' ; */
2016-04-23 21:34:10 +02:00
}
else
{
print '<br><br><div class="center">' . $langs -> trans ( " PreviewOfSiteNotYetAvailable " , $website ) . '</center><br><br><br>' ;
print '<div class="center"><div class="logo_setup"></div></div>' ;
}
2016-04-19 11:02:55 +02:00
}
2016-04-27 09:41:42 +02:00
2016-04-19 11:02:55 +02:00
2016-02-02 16:24:12 +01:00
llxFooter ();
$db -> close ();
2017-07-28 15:32:15 +02:00
2017-08-21 00:40:45 +02:00
/**
* 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 = '<?php' . " \n " ;
$aliascontent .= " // File generated to wrap the alias page - DO NOT MODIFY - It is just a wrapper to real page \n " ;
$aliascontent .= 'global $dolibarr_main_data_root;' . " \n " ;
$aliascontent .= 'if (empty($dolibarr_main_data_root)) require \'./page' . $objectpage -> id . '.tpl.php\'; ' ;
$aliascontent .= 'else require $dolibarr_main_data_root.\'/websites/\'.$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 );
}
2017-07-28 15:32:15 +02:00
/**
* 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 .= " <?php // BEGIN PHP \n " ;
$tplcontent .= '$websitekey=basename(dirname(__FILE__));' . " \n " ;
$tplcontent .= " if (! defined('USEDOLIBARRSERVER')) { require_once './master.inc.php'; } // Not already loaded " . " \n " ;
$tplcontent .= " require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php'; \n " ;
$tplcontent .= " require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php'; \n " ;
$tplcontent .= " ob_start(); \n " ;
$tplcontent .= " // END PHP ?> \n " ;
$tplcontent .= '<html' . ( $shortlangcode ? ' lang="' . $shortlangcode . '"' : '' ) . '>' . " \n " ;
$tplcontent .= '<head>' . " \n " ;
$tplcontent .= '<title>' . dol_string_nohtmltag ( $objectpage -> title , 0 , 'UTF-8' ) . '</title>' . " \n " ;
$tplcontent .= '<meta charset="UTF-8">' . " \n " ;
$tplcontent .= '<meta http-equiv="content-type" content="text/html; charset=utf-8" />' . " \n " ;
$tplcontent .= '<meta name="robots" content="index, follow" />' . " \n " ;
2017-09-04 09:25:53 +02:00
$tplcontent .= '<meta name="viewport" content="width=device-width, initial-scale=1.0">' . " \n " ;
2017-08-22 15:58:57 +02:00
$tplcontent .= '<meta name="keywords" content="' . dol_string_nohtmltag ( $objectpage -> keywords ) . '" />' . " \n " ;
2017-07-28 15:32:15 +02:00
$tplcontent .= '<meta name="title" content="' . dol_string_nohtmltag ( $objectpage -> title , 0 , 'UTF-8' ) . '" />' . " \n " ;
$tplcontent .= '<meta name="description" content="' . dol_string_nohtmltag ( $objectpage -> description , 0 , 'UTF-8' ) . '" />' . " \n " ;
$tplcontent .= '<meta name="generator" content="' . DOL_APPLICATION_TITLE . ' ' . DOL_VERSION . '" />' . " \n " ;
$tplcontent .= '<!-- Include link to CSS file -->' . " \n " ;
$tplcontent .= '<link rel="stylesheet" href="styles.css.php?websiteid=' . $object -> id . '" type="text/css" />' . " \n " ;
2017-10-06 22:49:08 +02:00
$tplcontent .= '<!-- Include HTML header from common file -->' . " \n " ;
2017-07-28 15:32:15 +02:00
$tplcontent .= '<?php print file_get_contents(DOL_DATA_ROOT."/websites/' . $object -> ref . '/htmlheader.html"); ?>' . " \n " ;
2017-10-06 22:49:08 +02:00
$tplcontent .= '<!-- Include HTML header from page inline block -->' . " \n " ;
$tplcontent .= $objectpage -> htmlheader . " \n " ;
2017-07-28 15:32:15 +02:00
$tplcontent .= '</head>' . " \n " ;
$tplcontent .= '<!-- File generated by Dolibarr website module editor -->' . " \n " ;
$tplcontent .= '<body id="bodywebsite" class="bodywebsite">' . " \n " ;
$tplcontent .= $objectpage -> content . " \n " ;
$tplcontent .= '</body>' . " \n " ;
$tplcontent .= '<?php // BEGIN PHP' . " \n " ;
$tplcontent .= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp);' . " \n " ;
$tplcontent .= " // END PHP ?> " . " \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 ;
2017-07-28 17:17:40 +02:00
}
2017-10-01 20:37:41 +02:00
/**
* Save content of a page on disk
*
2017-10-02 13:52:18 +02:00
* @ param string $filehtmlheader Full path of filename to generate
2017-10-01 20:37:41 +02:00
* @ 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 html header into " . $filecss );
dol_mkdir ( $pathofwebsite );
$result = file_put_contents ( $filecss , $csscontent );
if ( ! empty ( $conf -> global -> MAIN_UMASK ))
@ chmod ( $filecss , octdec ( $conf -> global -> MAIN_UMASK ));
2017-10-06 00:26:24 +02:00
if ( ! $result )
{
setEventMessages ( 'Failed to write file ' . $filecss , null , 'errors' );
return false ;
}
2017-10-01 20:37:41 +02:00
2017-10-06 00:26:24 +02:00
return true ;
2017-10-01 20:37:41 +02:00
}
/**
* 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 html header 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 html header 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 ;
}