NEW Support alternative aliases of page name in website

This commit is contained in:
Laurent Destailleur 2018-02-28 14:36:22 +01:00
parent c8e6a8c014
commit e2c7585ae7
7 changed files with 152 additions and 72 deletions

View File

@ -165,47 +165,70 @@ function dolWebsiteSaveContent($content)
/**
* Make a redirect to another container
* Make a redirect to another container.
*
* @param string $containeralias Path to file to include (must be a page from website root. Example: 'mypage.php' means 'mywebsite/mypage.php')
* @param string $containerref Ref of container to redirect to (must be a page from website root. Example: 'mypage.php' means 'mywebsite/mypage.php').
* @param string $containeraliasalt Ref of alternative aliases to redirect to.
* @param int $containerid Id of container.
* @return void
*/
function redirectToContainer($containeralias)
function redirectToContainer($containerref, $containeraliasalt='',$containerid=0)
{
global $db, $website;
$newurl = '';
// We make redirect using the alternative alias, we must find the real $containerref
if ($containeraliasalt)
{
include_once DOL_DOCUMENT_ROOT.'/website/class/websitepage.class.php';
$tmpwebsitepage=new WebsitePage($db);
$result = $tmpwebsitepage->fetch(0, $website->id, '', $containeraliasalt);
if ($result > 0)
{
$containerref = $tmpwebsitepage->pageurl;
}
else
{
print "Error, page contains a redirect to the alternative alias '".$containeraliasalt."' that does not exists in web site (".$website->id." / ".$website->ref.")";
exit;
}
}
if (defined('USEDOLIBARRSERVER')) // When page called from Dolibarr server
{
// Check new container exists
$tmpwebsitepage=new WebsitePage($db);
$result = $tmpwebsitepage->fetch(0, $website->id, $containeralias);
unset($tmpwebsitepage);
if (! $containeraliasalt) // If containeraliasalt set, we already did the test
{
include_once DOL_DOCUMENT_ROOT.'/website/class/websitepage.class.php';
$tmpwebsitepage=new WebsitePage($db);
$result = $tmpwebsitepage->fetch(0, $website->id, $containerref);
unset($tmpwebsitepage);
}
if ($result > 0)
{
$currenturi = $_SERVER["REQUEST_URI"];
if (preg_match('/&pageref=([^&]+)/', $currenturi, $regtmp))
{
if ($regtmp[0] == $containeralias)
if ($regtmp[0] == $containerref)
{
print "Error, page with uri '.$currenturi.' try a redirect to the same alias page '".$containeralias."' in web site '".$website->ref."'";
print "Error, page with uri '.$currenturi.' try a redirect to the same alias page '".$containerref."' in web site '".$website->ref."'";
exit;
}
else
{
$newurl = preg_replace('/&pageref=([^&]+)/', '&pageref='.$containeralias, $currenturi);
$newurl = preg_replace('/&pageref=([^&]+)/', '&pageref='.$containerref, $currenturi);
}
}
else
{
$newurl = $currenturi.'&pageref='.urlencode($containeralias);
$newurl = $currenturi.'&pageref='.urlencode($containerref);
}
}
}
else // When page called from virtual host server
{
$newurl = '/'.$containeralias.'.php';
$newurl = '/'.$containerref.'.php';
}
if ($newurl)
@ -215,7 +238,7 @@ function redirectToContainer($containeralias)
}
else
{
print "Error, page contains a redirect to the alias page '".$containeralias."' that does not exists in web site '".$website->ref."'";
print "Error, page contains a redirect to the alias page '".$containerref."' that does not exists in web site (".$website->id." / ".$website->ref.")";
exit;
}
}
@ -225,10 +248,10 @@ function redirectToContainer($containeralias)
* Clean an HTML page to report only content, so we can include it into another page.
* It outputs content of file sanitized from html and body part.
*
* @param string $containeralias Path to file to include (must be a page from website root. Example: 'mypage.php' means 'mywebsite/mypage.php')
* @param string $containerref Path to file to include (must be a page from website root. Example: 'mypage.php' means 'mywebsite/mypage.php')
* @return void
*/
function includeContainer($containeralias)
function includeContainer($containerref)
{
global $conf, $db, $langs, $mysoc, $user, $website;
global $includehtmlcontentopened;
@ -236,9 +259,9 @@ function includeContainer($containeralias)
$MAXLEVEL=20;
if (! preg_match('/\.php$/i', $containeralias)) $containeralias.='.php';
if (! preg_match('/\.php$/i', $containerref)) $containerref.='.php';
$fullpathfile=DOL_DATA_ROOT.'/website/'.$websitekey.'/'.$containeralias;
$fullpathfile=DOL_DATA_ROOT.'/website/'.$websitekey.'/'.$containerref;
if (empty($includehtmlcontentopened)) $includehtmlcontentopened=0;
$includehtmlcontentopened++;
@ -261,7 +284,7 @@ function includeContainer($containeralias)
if (! $res)
{
print 'ERROR: FAILED TO INCLUDE PAGE '.$containeralias.".\n";
print 'ERROR: FAILED TO INCLUDE PAGE '.$containerref.".\n";
}
$includehtmlcontentopened--;
@ -550,6 +573,42 @@ function dolSavePageContent($filetpl, $object, $objectpage)
}
/**
* Save content of the index.php page
*
* @param string $pathofwebsite Path of website root
* @param string $fileindex Full path of file index.php
* @param string $filetpl File tpl to index.php page redirect to
* @return boolean True if OK
*/
function dolSaveIndexPage($pathofwebsite, $fileindex, $filetpl)
{
global $conf;
$result=0;
dol_mkdir($pathofwebsite);
dol_delete_file($fileindex);
$indexcontent = '<?php'."\n";
$indexcontent.= "// BEGIN PHP File generated to provide an index.php as Home Page or alias redirector - DO NOT MODIFY - It is just a generated wrapper.\n";
$indexcontent.= '$websitekey=basename(dirname(__FILE__));'."\n";
$indexcontent.= "if (! defined('USEDOLIBARRSERVER')) { require_once './master.inc.php'; } // Load master if not already loaded\n";
$indexcontent.= 'if (! empty($_GET[\'pageref\']) || ! empty($_GET[\'pagealiasalt\']) || ! empty($_GET[\'pageid\'])) {'."\n";
$indexcontent.= " require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n";
$indexcontent.= " require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n";
$indexcontent.= ' redirectToContainer($_GET[\'pageref\'], $_GET[\'pagealiasalt\'], $_GET[\'pageid\']);'."\n";
$indexcontent.= "}\n";
$indexcontent.= "include_once './".basename($filetpl)."'\n";
$indexcontent.= '// END PHP ?>'."\n";
$result = file_put_contents($fileindex, $indexcontent);
if (! empty($conf->global->MAIN_UMASK))
@chmod($fileindex, octdec($conf->global->MAIN_UMASK));
return $result;
}
/**
* Save content of a page on disk
*

View File

@ -58,4 +58,5 @@ insert into llx_c_type_container (code,label,module,active) values ('other',
ALTER TABLE llx_expensereport_det ADD COLUMN docnumber varchar(128) after fk_expensereport;
ALTER TABLE llx_website_page ADD COLUMN aliasalt varchar(255) after pageurl;

View File

@ -22,6 +22,7 @@ CREATE TABLE llx_website_page
rowid integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
fk_website integer NOT NULL,
pageurl varchar(255) NOT NULL,
aliasalt varchar(255),
title varchar(255),
description varchar(255),
keywords varchar(255),

View File

@ -6,6 +6,7 @@ ConfirmDeleteWebsite=Are you sure you want to delete this web site. All its page
WEBSITE_TYPE_CONTAINER=Type of page/container
WEBSITE_PAGE_EXAMPLE=Web page to use as example
WEBSITE_PAGENAME=Page name/alias
WEBSITE_ALIASALT=Alternative page names/aliases
WEBSITE_CSS_URL=URL of external CSS file
WEBSITE_CSS_INLINE=CSS file content (common to all pages)
WEBSITE_JS_INLINE=Javascript file content (common to all pages)
@ -36,6 +37,7 @@ SetAsHomePage=Set as Home page
RealURL=Real URL
ViewWebsiteInProduction=View web site using home URLs
SetHereVirtualHost=If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then enter here the virtual hostname you have created, so the preview can be done also using this dedicated web server access instead of only using Dolibarr server.
YouCanAlsoTestWithPHPS=On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong>
CheckVirtualHostPerms=Check also that virtual host has <strong>%s</strong> on files into<br><strong>%s</strong>
ReadPerm=Read permission
WritePerm=Write permission

View File

@ -612,17 +612,11 @@ class Website extends CommonObject
if (! $error)
{
dol_delete_file($fileindex);
$filetpl=$pathofwebsitenew.'/page'.$newidforhome.'.tpl.php';
$indexcontent = '<?php'."\n";
$indexcontent.= '// File generated to provide a shortcut to the Home Page - DO NOT MODIFY - It is just an include.'."\n";
$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));
// Generate the index.php page to be the home page
//-------------------------------------------------
$result = dolSaveIndexPage($pathofwebsite, $fileindex, $filetpl);
}
}

View File

@ -53,6 +53,7 @@ class WebsitePage extends CommonObject
public $fk_website;
public $pageurl;
public $aliasalt;
public $type_container;
public $title;
public $description;
@ -71,8 +72,9 @@ class WebsitePage extends CommonObject
*/
public $fields=array(
'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'index'=>1, 'position'=>1, 'comment'=>'Id'),
'pageurl' =>array('type'=>'varchar(16)', 'label'=>'WEBSITE_PAGENAME', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'comment'=>'Alias of page'),
'type_container' =>array('type'=>'varchar(16)', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'index'=>0, 'position'=>11, 'comment'=>'Type of container'),
'pageurl' =>array('type'=>'varchar(16)', 'label'=>'WEBSITE_PAGENAME', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'comment'=>'Ref/alias of page'),
'aliasalt' =>array('type'=>'varchar(255)', 'label'=>'AliasAlt', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'index'=>0, 'position'=>11, 'searchall'=>0, 'comment'=>'Alias alternative of page'),
'type_container' =>array('type'=>'varchar(16)', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'index'=>0, 'position'=>12, 'comment'=>'Type of container'),
'title' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1),
'description' =>array('type'=>'varchar(255)', 'label'=>'Description', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1),
'keywords' =>array('type'=>'varchar(255)', 'label'=>'Keywords', 'enabled'=>1, 'visible'=>1, 'position'=>45, 'searchall'=>0),
@ -115,6 +117,7 @@ class WebsitePage extends CommonObject
{
$this->description = dol_trunc($this->description, 255, 'right', 'utf-8', 1);
$this->keywords = dol_trunc($this->keywords, 255, 'right', 'utf-8', 1);
if ($this->aliasalt) $this->aliasalt = ','.preg_replace('/,+$/', '', preg_replace('/^,+/', '', $this->aliasalt)).','; // content in database must be ',xxx,...,yyy,'
return $this->createCommon($user, $notrigger);
}
@ -122,13 +125,14 @@ class WebsitePage extends CommonObject
/**
* Load object in memory from the database
*
* @param int $id Id object. If this is 0, the value into $page will be used. If not found of $page not defined, the default page of website_id will be used or the first page found if not set.
* @param string $website_id Web site id (page name must also be filled if this parameter is used)
* @param string $page Page name (website id must also be filled if this parameter is used)
* @param int $id Id object. If this is 0, the value into $page will be used. If not found of $page not defined, the default page of website_id will be used or the first page found if not set.
* @param string $website_id Web site id (page name must also be filled if this parameter is used)
* @param string $page Page name (website id must also be filled if this parameter is used)
* @param string $aliasalt Alternative alias to search page (slow)
*
* @return int <0 if KO, 0 if not found, >0 if OK
*/
public function fetch($id, $website_id = null, $page = null)
public function fetch($id, $website_id = null, $page = null, $aliasalt = null)
{
dol_syslog(__METHOD__, LOG_DEBUG);
@ -137,6 +141,7 @@ class WebsitePage extends CommonObject
$sql .= " t.fk_website,";
$sql .= ' t.type_container,';
$sql .= " t.pageurl,";
$sql .= " t.aliasalt,";
$sql .= " t.title,";
$sql .= " t.description,";
$sql .= " t.keywords,";
@ -159,7 +164,8 @@ class WebsitePage extends CommonObject
{
if (null !== $website_id) {
$sql .= " AND t.fk_website = '" . $this->db->escape($website_id) . "'";
if ($page) $sql .= " AND t.pageurl = '" . $this->db->escape($page) . "'";
if ($page) $sql .= " AND t.pageurl = '" . $this->db->escape($page) . "'";
if ($aliasalt) $sql .= " AND t.aliasalt LIKE '%," . $this->db->escape($aliasalt) . ",%'";
}
}
$sql .= $this->db->plimit(1);
@ -175,6 +181,7 @@ class WebsitePage extends CommonObject
$this->fk_website = $obj->fk_website;
$this->type_container = $obj->type_container;
$this->pageurl = $obj->pageurl;
$this->aliasalt = preg_replace('/,+$/', '', preg_replace('/^,+/', '', $obj->aliasalt));
$this->title = $obj->title;
$this->description = $obj->description;
$this->keywords = $obj->keywords;
@ -225,6 +232,7 @@ class WebsitePage extends CommonObject
$sql .= " t.fk_website,";
$sql .= " t.type_container,";
$sql .= " t.pageurl,";
$sql .= " t.aliasalt,";
$sql .= " t.title,";
$sql .= " t.description,";
$sql .= " t.keywords,";
@ -272,6 +280,7 @@ class WebsitePage extends CommonObject
$record->fk_website = $obj->fk_website;
$record->type_container = $obj->type_container;
$record->pageurl = $obj->pageurl;
$record->aliasalt = preg_replace('/,+$/', '', preg_replace('/^,+/', '', $obj->aliasalt));
$record->title = $obj->title;
$record->description = $obj->description;
$record->keywords = $obj->keywords;
@ -306,6 +315,10 @@ class WebsitePage extends CommonObject
*/
public function update(User $user, $notrigger = false)
{
$this->description = dol_trunc($this->description, 255, 'right', 'utf-8', 1);
$this->keywords = dol_trunc($this->keywords, 255, 'right', 'utf-8', 1);
if ($this->aliasalt) $this->aliasalt = ','.preg_replace('/,+$/', '', preg_replace('/^,+/', '', $this->aliasalt)).','; // content in database must be ',xxx,...,yyy,'
return $this->updateCommon($user, $notrigger);
}
@ -371,6 +384,7 @@ class WebsitePage extends CommonObject
// Clear fields
$object->ref = $newref;
$object->pageurl = $newref;
$object->aliasalt = '';
$object->title = $langs->trans("CopyOf").' '.$object->title;
if (! empty($newlang)) $object->lang=$newlang;
if ($istranslation) $object->fk_page = $fromid;
@ -510,6 +524,7 @@ class WebsitePage extends CommonObject
$this->fk_website = '';
$this->type_container = 'page';
$this->pageurl = 'specimen';
$this->aliasalt = 'specimenalt';
$this->title = 'My Page';
$this->description = 'This is my page';
$this->keywords = 'keyword1, keyword2';

View File

@ -35,9 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/website/class/website.class.php';
require_once DOL_DOCUMENT_ROOT.'/website/class/websitepage.class.php';
$langs->load("admin");
$langs->load("other");
$langs->load("website");
$langs->loadLangs(array("admin","other","website"));
if (! $user->admin) accessforbidden();
@ -60,18 +58,18 @@ $type_container=GETPOST('WEBSITE_TYPE_CONTAINER', 'alpha');
$section_dir = GETPOST('section_dir', 'alpha');
$file_manager = GETPOST('file_manager', 'alpha');
if (GETPOST('delete')) { $action='delete'; }
if (GETPOST('preview')) $action='preview';
if (GETPOST('createsite')) { $action='createsite'; }
if (GETPOST('createcontainer')) { $action='createcontainer'; }
if (GETPOST('editcss')) { $action='editcss'; }
if (GETPOST('editmenu')) { $action='editmenu'; }
if (GETPOST('setashome')) { $action='setashome'; }
if (GETPOST('editmeta')) { $action='editmeta'; }
if (GETPOST('editsource')) { $action='editsource'; }
if (GETPOST('editcontent')) { $action='editcontent'; }
if (GETPOST('createfromclone')) { $action='createfromclone'; }
if (GETPOST('createpagefromclone')) { $action='createpagefromclone'; }
if (GETPOST('delete','alpha')) { $action='delete'; }
if (GETPOST('preview','alpha')) $action='preview';
if (GETPOST('createsite','alpha')) { $action='createsite'; }
if (GETPOST('createcontainer','alpha')) { $action='createcontainer'; }
if (GETPOST('editcss','alpha')) { $action='editcss'; }
if (GETPOST('editmenu','alpha')) { $action='editmenu'; }
if (GETPOST('setashome','alpha')) { $action='setashome'; }
if (GETPOST('editmeta','alpha')) { $action='editmeta'; }
if (GETPOST('editsource','alpha')) { $action='editsource'; }
if (GETPOST('editcontent','alpha')) { $action='editcontent'; }
if (GETPOST('createfromclone','alpha')) { $action='createfromclone'; }
if (GETPOST('createpagefromclone','alpha')) { $action='createpagefromclone'; }
if (empty($action) && $file_manager) $action='file_manager';
// Load variable for pagination
@ -331,6 +329,9 @@ if ($action == 'addcontainer')
$objectpage->pageurl=$tmpdomain.'-home';
}
$objectpage->aliasalt = '';
if (preg_match('/^(\d+)\-/', basename($pageurl), $reg)) $objectpage->aliasalt = $reg[0];
if (preg_match('/<title>(.*)<\/title>/ims', $head, $regtmp))
{
$objectpage->title = $regtmp[1];
@ -542,8 +543,9 @@ if ($action == 'addcontainer')
else
{
$objectpage->type_container = GETPOST('WEBSITE_TYPE_CONTAINER','alpha');
$objectpage->title = GETPOST('WEBSITE_TITLE','alpha');
$objectpage->pageurl = GETPOST('WEBSITE_PAGENAME','alpha');
$objectpage->aliasalt = GETPOST('WEBSITE_ALIASALT','alpha');
$objectpage->title = GETPOST('WEBSITE_TITLE','alpha');
$objectpage->description = GETPOST('WEBSITE_DESCRIPTION','alpha');
$objectpage->keywords = GETPOST('WEBSITE_KEYWORDS','alpha');
$objectpage->lang = GETPOST('WEBSITE_LANG','aZ09');
@ -914,16 +916,7 @@ if ($action == 'setashome')
// Generate the index.php page to be the home page
//-------------------------------------------------
dol_mkdir($pathofwebsite);
dol_delete_file($fileindex);
$indexcontent = '<?php'."\n";
$indexcontent.= '// File generated to provide a shortcut to the Home Page - DO NOT MODIFY - It is just an include.'."\n";
$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));
$result = dolSaveIndexPage($pathofwebsite, $fileindex, $filetpl);
if ($result) setEventMessages($langs->trans("Saved"), null, 'mesgs');
else setEventMessages('Failed to write file '.$fileindex, null, 'errors');
@ -967,6 +960,7 @@ if ($action == 'updatemeta')
$objectpage->type_container = GETPOST('WEBSITE_TYPE_CONTAINER', 'alpha');
$objectpage->pageurl = GETPOST('WEBSITE_PAGENAME', 'alpha');
$objectpage->aliasalt = GETPOST('WEBSITE_ALIASALT', 'alpha');
$objectpage->title = GETPOST('WEBSITE_TITLE', 'alpha');
$objectpage->description = GETPOST('WEBSITE_DESCRIPTION', 'alpha');
$objectpage->keywords = GETPOST('WEBSITE_KEYWORDS', 'alpha');
@ -1273,7 +1267,7 @@ $moreheadcss='';
$moreheadjs='';
$arrayofjs[]='includes/jquery/plugins/blockUI/jquery.blockUI.js';
$arrayofjs[]='core/js/blockUI.js'; // Used by ecm/tpl/enabledfiletreeajax.tpl.pgp
$arrayofjs[]='core/js/blockUI.js'; // Used by ecm/tpl/enabledfiletreeajax.tpl.php
if (empty($conf->global->MAIN_ECM_DISABLE_JS)) $arrayofjs[]="includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js";
$moreheadjs.='<script type="text/javascript">'."\n";
@ -1438,6 +1432,9 @@ if (count($object->records) > 0)
//print '<input type="submit" class="button" name="previewwebsite" target="tab'.$website.'" value="'.$langs->trans("ViewSiteInNewTab").'">';
$htmltext =$langs->trans("SetHereVirtualHost", $dataroot);
$htmltext.='<br>';
$htmltext.='<br>';
$htmltext.=$langs->trans("YouCanAlsoTestWithPHPS", $dataroot);
$htmltext.='<br>';
$htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("ReadPerm"), DOL_DOCUMENT_ROOT);
$htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("WritePerm"), DOL_DATA_ROOT);
print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'helpvirtualhost');
@ -2000,7 +1997,7 @@ if ($action == 'editmeta' || $action == 'createcontainer')
if ($action != 'createcontainer')
{
print '<tr><td class="titlefield fieldrequired">';
print '<tr><td class="titlefield">';
print $langs->trans('IDOfPage');
print '</td><td>';
print $pageid;
@ -2022,6 +2019,7 @@ if ($action == 'editmeta' || $action == 'createcontainer')
$type_container=$objectpage->type_container;
$pageurl=$objectpage->pageurl;
$pagealiasalt=$objectpage->aliasalt;
$pagetitle=$objectpage->title;
$pagedescription=$objectpage->description;
$pagekeywords=$objectpage->keywords;
@ -2029,29 +2027,33 @@ if ($action == 'editmeta' || $action == 'createcontainer')
$pagehtmlheader=$objectpage->htmlheader;
}
if (GETPOST('WEBSITE_PAGENAME','alpha')) $pageurl=GETPOST('WEBSITE_PAGENAME','alpha');
if (GETPOST('WEBSITE_ALIASALT','alpha')) $pagealiasalt=GETPOST('WEBSITE_ALIASALT','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');
print '<tr><td class="titlefieldcreate fieldrequired">';
print $langs->trans('WEBSITE_PAGENAME');
print '</td><td>';
print '<input type="text" class="flat minwidth300" name="WEBSITE_PAGENAME" value="'.dol_escape_htmltag($pageurl).'">';
print '</td></tr>';
print '<tr><td class="titlefield fieldrequired">';
print $langs->trans('WEBSITE_TYPE_CONTAINER');
print '</td><td>';
print $formwebsite->selectTypeOfContainer('WEBSITE_TYPE_CONTAINER', (GETPOST('WEBSITE_TYPE_CONTAINER')?GETPOST('WEBSITE_TYPE_CONTAINER'):'page'));
print '</td></tr>';
print '<tr><td class="titlefield fieldrequired">';
print $langs->trans('WEBSITE_PAGE_EXAMPLE');
print '</td><td>';
print $formwebsite->selectSampleOfContainer('sample', (GETPOST('sample')?GETPOST('sample'):'corporatehomepage'));
print '</td></tr>';
print '<tr><td class="titlefieldcreate fieldrequired">';
print $langs->trans('WEBSITE_PAGENAME');
print '</td><td>';
print '<input type="text" class="flat minwidth300" name="WEBSITE_PAGENAME" value="'.dol_escape_htmltag($pageurl).'">';
print '</td></tr>';
if ($action == 'createcontainer')
{
print '<tr><td class="titlefield fieldrequired">';
print $langs->trans('WEBSITE_PAGE_EXAMPLE');
print '</td><td>';
print $formwebsite->selectSampleOfContainer('sample', (GETPOST('sample')?GETPOST('sample'):'corporatehomepage'));
print '</td></tr>';
}
print '<tr><td class="fieldrequired">';
print $langs->trans('WEBSITE_TITLE');
@ -2077,6 +2079,12 @@ if ($action == 'editmeta' || $action == 'createcontainer')
print $formadmin->select_language($pagelang?$pagelang:$langs->defaultlang, 'WEBSITE_LANG', 0, null, '1');
print '</td></tr>';
print '<tr><td class="titlefieldcreate">';
print $langs->trans('WEBSITE_ALIASALT');
print '</td><td>';
print '<input type="text" class="flat minwidth300" name="WEBSITE_ALIASALT" value="'.dol_escape_htmltag($pagealiasalt).'">';
print '</td></tr>';
print '<tr><td class="tdhtmlheader tdtop">';
$htmlhelp=$langs->trans("EditTheWebSiteForACommonHeader").'<br><br>';