123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649 |
- <?php
- /* Copyright (C) 2016-2017 Laurent Destailleur <eldy@users.sourceforge.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /**
- * \file htdocs/website/index.php
- * \ingroup website
- * \brief Page to website view/edit
- */
- define('NOSCANPOSTFORINJECTION',1);
- define('NOSTYLECHECK',1);
- require '../main.inc.php';
- require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
- require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
- require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';
- require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
- require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
- require_once DOL_DOCUMENT_ROOT.'/core/class/html.formwebsite.class.php';
- 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->loadLangs(array("admin","other","website"));
- if (! $user->admin) accessforbidden();
- if (! ((GETPOST('testmenuhider','int') || ! empty($conf->global->MAIN_TESTMENUHIDER)) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)))
- {
- $conf->dol_hide_leftmenu = 1; // Force hide of left menu.
- }
- $error=0;
- $websitekey=GETPOST('website', 'alpha');
- $page=GETPOST('page', 'alpha');
- $pageid=GETPOST('pageid', 'int');
- $pageref=GETPOST('pageref', 'aZ09');
- $action=GETPOST('action','aZ09');
- $confirm=GETPOST('confirm','alpha');
- $cancel=GETPOST('cancel','alpha');
- $type_container=GETPOST('WEBSITE_TYPE_CONTAINER', 'alpha');
- $section_dir = GETPOST('section_dir', 'alpha');
- $file_manager = GETPOST('file_manager', 'alpha');
- if (GETPOST('deletesite','alpha')) { $action='deletesite'; }
- 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('exportsite','alpha')) { $action='exportsite'; }
- if (GETPOST('importsite','alpha')) { $action='importsite'; }
- if (GETPOST('createfromclone','alpha')) { $action='createfromclone'; }
- if (GETPOST('createpagefromclone','alpha')) { $action='createpagefromclone'; }
- if (empty($action) && $file_manager) $action='file_manager';
- // Load variable for pagination
- $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
- $sortfield = GETPOST("sortfield",'alpha');
- $sortorder = GETPOST("sortorder",'alpha');
- $page = GETPOST("page",'int');
- if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
- $offset = $limit * $page;
- $pageprev = $page - 1;
- $pagenext = $page + 1;
- //if (! $sortfield) $sortfield='name';
- //if (! $sortorder) $sortorder='ASC';
- if (empty($action)) $action='preview';
- $object=new Website($db);
- $objectpage=new WebsitePage($db);
- $object->fetchAll(); // Init $object->records
- // If website not defined, we take first found
- if (empty($websitekey))
- {
- foreach($object->records as $key => $valwebsite)
- {
- $websitekey=$valwebsite->ref;
- break;
- }
- }
- if ($websitekey)
- {
- $res = $object->fetch(0, $websitekey);
- }
- $website = $object;
- if ($pageid < 0) $pageid = 0;
- if (($pageid > 0 || $pageref) && $action != 'addcontainer')
- {
- $res = $objectpage->fetch($pageid, ($object->id > 0 ? $object->id : null), $pageref);
- //var_dump($res);exit;
- //if ($res == 0) // Page ref not found, we check in alias
- //{
- // $res = $objectpage->fetch($pageid, ($object->id > 0 ? $object->id : null), $pageref);
- //}
- // Check if pageid is inside the new website, if not we reset param pageid
- if ($object->id > 0 && ($objectpage->fk_website != $object->id))
- {
- $res = $objectpage->fetch(0, $object->id, '');;
- if ($res == 0) // Page was not found, we reset it
- {
- $objectpage=new WebsitePage($db);
- }
- }
- $pageid = $objectpage->id;
- }
- global $dolibarr_main_data_root;
- $pathofwebsite=$dolibarr_main_data_root.'/website/'.$websitekey;
- $filehtmlheader=$pathofwebsite.'/htmlheader.html';
- $filecss=$pathofwebsite.'/styles.css.php';
- $filejs=$pathofwebsite.'/javascript.js.php';
- $filerobot=$pathofwebsite.'/robots.txt';
- $filehtaccess=$pathofwebsite.'/.htaccess';
- $filetpl=$pathofwebsite.'/page'.$pageid.'.tpl.php';
- $fileindex=$pathofwebsite.'/index.php';
- // 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
- $permtouploadfile = $user->rights->website->write;
- $diroutput = $conf->medias->multidir_output[$conf->entity];
- $relativepath=$section_dir;
- $upload_dir = $diroutput.'/'.$relativepath;
- $htmlheadercontentdefault = '';
- $htmlheadercontentdefault.='<link rel="stylesheet" id="google-fonts-css" href="//fonts.googleapis.com/css?family=Open+Sans:300,400,700" />'."\n";
- $htmlheadercontentdefault.='<link rel="stylesheet" id="font-wasesome-css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />'."\n";
- $htmlheadercontentdefault.='<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>'."\n";
- $htmlheadercontentdefault.='<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>'."\n";
- $htmlheadercontentdefault.='<script src="//cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>'."\n";
- $htmlheadercontentdefault.='<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.13.0/umd/popper.min.js"></script>'."\n";
- $htmlheadercontentdefault.='<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script>'."\n";
- $htmlheadercontentdefault.='<!--'."\n";
- $htmlheadercontentdefault.='<script src="/document.php?modulepart=medias&file=css/myfile.css"></script>'."\n";
- $htmlheadercontentdefault.='<script src="/document.php?modulepart=medias&file=js/myfile.js"></script>'."\n";
- $htmlheadercontentdefault.='-->'."\n";
- /*
- * Actions
- */
- $backtopage=$_SERVER["PHP_SELF"].'?file_manager=1&website='.$websitekey.'&pageid='.$pageid; // used after a confirm_deletefile into actions_linkedfiles.inc.php
- include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php';
- if ($action == 'renamefile') $action='file_manager'; // After actions_linkedfiles, if action were renamefile, we set it to 'file_manager'
- if ($action == 'seteditinline')
- {
- dolibarr_set_const($db, 'WEBSITE_EDITINLINE', 1);
- header("Location: ".$_SERVER["PHP_SELF"].'?website='.GETPOST('website','alphanohtml').'&pageid='.GETPOST('pageid','int'));
- exit;
- }
- if ($action == 'unseteditinline')
- {
- dolibarr_del_const($db, 'WEBSITE_EDITINLINE');
- header("Location: ".$_SERVER["PHP_SELF"].'?website='.GETPOST('website','alphanohtml').'&pageid='.GETPOST('pageid','int'));
- exit;
- }
- // Add directory
- /*
- if ($action == 'adddir' && $permtouploadfile)
- {
- $ecmdir->ref = 'NOTUSEDYET';
- $ecmdir->label = GETPOST("label");
- $ecmdir->description = GETPOST("desc");
- //$id = $ecmdir->create($user);
- if ($id > 0)
- {
- header("Location: ".$_SERVER["PHP_SELF"]);
- exit;
- }
- else
- {
- setEventMessages('Error '.$langs->trans($ecmdir->error), null, 'errors');
- $action = "createcontainer";
- }
- clearstatcache();
- }
- */
- if (GETPOST('refreshsite','alpha')) // If we change the site, we reset the pageid and cancel addsite action.
- {
- $pageid=0;
- if ($action == 'addsite') $action = 'preview';
- }
- if (GETPOST('refreshpage','alpha') && ! in_array($action, array('updatecss'))) $action='preview';
- // Add site
- if ($action == 'addsite')
- {
- $db->begin();
- if (! $error && ! GETPOST('WEBSITE_REF','alpha'))
- {
- $error++;
- $langs->load("errors");
- setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->transnoentities("Ref")), null, 'errors');
- }
- if (! $error && ! preg_match('/^[a-z0-9_\-\.]+$/i', GETPOST('WEBSITE_REF','alpha')))
- {
- $error++;
- $langs->load("errors");
- 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;
- }
- }
- // Add page/container
- if ($action == 'addcontainer')
- {
- dol_mkdir($pathofwebsite);
- $db->begin();
- $objectpage->fk_website = $object->id;
- if (GETPOST('fetchexternalurl','alpha'))
- {
- $urltograb=GETPOST('externalurl','alpha');
- $grabimages=GETPOST('grabimages','alpha');
- $grabimagesinto=GETPOST('grabimagesinto','alpha');
- //var_dump($grabimages);exit;
- }
- if ($urltograb)
- {
- include_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php';
- // Clean url to grab, so url can be
- // http://www.example.com/ or http://www.example.com/dir1/ or http://www.example.com/dir1/aaa
- $urltograbwithoutdomainandparam = preg_replace('/^https?:\/\/[^\/]+\/?/i', '', $urltograb);
- $urltograbwithoutdomainandparam = preg_replace('/\?.*$/', '', $urltograbwithoutdomainandparam);
- if (empty($urltograbwithoutdomainandparam) && ! preg_match('/\/$/', $urltograb))
- {
- $urltograb.='/';
- }
- $pageurl = dol_sanitizeFileName(preg_replace('/[\/\.]/','-', preg_replace('/\/+$/', '', $urltograbwithoutdomainandparam)));
- $urltograbdirwithoutslash = dirname($urltograb.'.');
- $urltograbdirrootwithoutslash = getRootURLFromURL($urltograbdirwithoutslash);
- // Exemple, now $urltograbdirwithoutslash is https://www.dolimed.com/screenshots
- // and $urltograbdirrootwithoutslash is https://www.dolimed.com
- // Check pageurl is not already used
- if ($pageurl)
- {
- $tmpwebsitepage = new WebsitePage($db);
- $result = $tmpwebsitepage->fetch(0, $object->id, $pageurl);
- if ($result > 0)
- {
- setEventMessages($langs->trans("AliasPageAlreadyExists", $pageurl), null, 'errors');
- $error++;
- $action='createcontainer';
- }
- }
- if (! $error)
- {
- $tmp = getURLContent($urltograb);
- if ($tmp['curl_error_no'])
- {
- $error++;
- setEventMessages('Error getting '.$urltograb.': '.$tmp['curl_error_msg'], null, 'errors');
- $action='createcontainer';
- }
- elseif ($tmp['http_code'] != '200')
- {
- $error++;
- setEventMessages('Error getting '.$urltograb.': '.$tmp['http_code'], null, 'errors');
- $action='createcontainer';
- }
- else
- {
- // Remove comments
- $tmp['content'] = removeHtmlComment($tmp['content']);
- preg_match('/<head>(.*)<\/head>/is', $tmp['content'], $reg);
- $head = $reg[1];
- $objectpage->type_container = 'page';
- $objectpage->pageurl = $pageurl;
- if (empty($objectpage->pageurl))
- {
- $tmpdomain = getDomainFromURL($urltograb);
- $objectpage->pageurl=$tmpdomain.'-home';
- }
- $objectpage->aliasalt = '';
- if (preg_match('/^(\d+)\-/', basename($urltograb), $reg)) $objectpage->aliasalt = $reg[1];
- if (preg_match('/<title>(.*)<\/title>/ims', $head, $regtmp))
- {
- $objectpage->title = $regtmp[1];
- }
- if (preg_match('/<meta name="title"[^"]+content="([^"]+)"/ims', $head, $regtmp))
- {
- if (empty($objectpage->title)) $objectpage->title = $regtmp[1]; // If title not found into <title>, we get it from <meta title>
- }
- 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]) : '');
- }
- $tmp['content'] = preg_replace('/\s*<meta name="generator"[^"]+content="([^"]+)"\s*\/?>/ims', '', $tmp['content']);
- $objectpage->content = $tmp['content'];
- $objectpage->content = preg_replace('/^.*<body(\s[^>]*)*>/ims', '', $objectpage->content);
- $objectpage->content = preg_replace('/<\/body(\s[^>]*)*>.*$/ims', '', $objectpage->content);
- $absoluteurlinaction=$urltograbdirwithoutslash;
- // TODO Replace 'action="$urltograbdirwithoutslash' into action="/"
- // TODO Replace 'action="$urltograbdirwithoutslash..."' into action="..."
- // TODO Replace 'a href="$urltograbdirwithoutslash' into a href="/"
- // TODO Replace 'a href="$urltograbdirwithoutslash..."' into a href="..."
- // Now loop to fetch all css files. Include them inline into header of page
- $objectpage->htmlheader = $tmp['content'];
- $objectpage->htmlheader = preg_replace('/^.*<head(\s[^>]*)*>/ims', '', $objectpage->htmlheader);
- $objectpage->htmlheader = preg_replace('/<\/head(\s[^>]*)*>.*$/ims', '', $objectpage->htmlheader);
- $objectpage->htmlheader = preg_replace('/<base(\s[^>]*)*>\n*/ims', '', $objectpage->htmlheader);
- $objectpage->htmlheader = preg_replace('/<meta http-equiv="content-type"([^>]*)*>\n*/ims', '', $objectpage->htmlheader);
- $objectpage->htmlheader = preg_replace('/<meta name="robots"([^>]*)*>\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="keywords"([^>]*)*>\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)
- {
- dol_syslog("We will grab the resource found into script tag ".$regs[2][$key]);
- $linkwithoutdomain = $regs[2][$key];
- if (preg_match('/^\//', $regs[2][$key]))
- {
- $urltograbbis = $urltograbdirrootwithoutslash.$regs[2][$key]; // We use dirroot
- }
- else
- {
- $urltograbbis = $urltograbdirwithoutslash.'/'.$regs[2][$key]; // We use dir of grabbed file
- }
- //$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;
- }
- //print $domaintograb.' - '.$domaintograbbis.' - '.$urltograbdirwithoutslash.' - ';
- //print $linkwithoutdomain.' - '.$urltograbbis."<br>\n";
- // Test if this is an external URL of grabbed web site. If yes, we do not load resource
- $domaintograb = getDomainFromURL($urltograbdirwithoutslash);
- $domaintograbbis = getDomainFromURL($urltograbbis);
- if ($domaintograb != $domaintograbbis) continue;
- /*
- $tmpgeturl = getURLContent($urltograbbis);
- if ($tmpgeturl['curl_error_no'])
- {
- $error++;
- setEventMessages('Error getting '.$urltograbbis.': '.$tmpgeturl['curl_error_msg'], null, 'errors');
- $action='createcontainer';
- }
- elseif ($tmpgeturl['http_code'] != '200')
- {
- $error++;
- setEventMessages('Error getting '.$urltograbbis.': '.$tmpgeturl['http_code'], null, 'errors');
- $action='createcontainer';
- }
- 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);
- }
- $objectpage->htmlheader = trim($tmp)."\n";
- // 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)
- {
- dol_syslog("We will grab the resource found into link tag ".$regs[2][$key]);
- $linkwithoutdomain = $regs[2][$key];
- if (preg_match('/^\//', $regs[2][$key]))
- {
- $urltograbbis = $urltograbdirrootwithoutslash.$regs[2][$key]; // We use dirroot
- }
- else
- {
- $urltograbbis = $urltograbdirwithoutslash.'/'.$regs[2][$key]; // We use dir of grabbed file
- }
- //$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;
- }
- //print $domaintograb.' - '.$domaintograbbis.' - '.$urltograbdirwithoutslash.' - ';
- //print $linkwithoutdomain.' - '.$urltograbbis."<br>\n";
- // Test if this is an external URL of grabbed web site. If yes, we do not load resource
- $domaintograb = getDomainFromURL($urltograbdirwithoutslash);
- $domaintograbbis = getDomainFromURL($urltograbbis);
- if ($domaintograb != $domaintograbbis) continue;
- $tmpgeturl = getURLContent($urltograbbis);
- if ($tmpgeturl['curl_error_no'])
- {
- $error++;
- setEventMessages('Error getting '.$urltograbbis.': '.$tmpgeturl['curl_error_msg'], null, 'errors');
- $action='createcontainer';
- }
- elseif ($tmpgeturl['http_code'] != '200')
- {
- $error++;
- setEventMessages('Error getting '.$urltograbbis.': '.$tmpgeturl['http_code'], null, 'errors');
- $action='createcontainer';
- }
- 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";
- getAllImages($object, $objectpage, $urltograbbis, $tmpgeturl['content'], $action, 1, $grabimages, $grabimagesinto);
- $pagecsscontent.=$tmpgeturl['content']."\n";
- $objectpage->htmlheader = preg_replace('/'.preg_quote($regs[0][$key],'/').'\n*/ims', '', $objectpage->htmlheader);
- }
- }
- $pagecsscontent.='</style>';
- //var_dump($pagecsscontent);
- //print dol_escape_htmltag($tmp);exit;
- $objectpage->htmlheader .= trim($pagecsscontent)."\n";
- // Now loop to fetch all images into page
- $tmp = $objectpage->content;
- getAllImages($object, $objectpage, $urltograb, $tmp, $action, 1, $grabimages, $grabimagesinto);
- // Normalize links href to Dolibarr internal naming
- $tmp = preg_replace('/a href="\/([^\/"]+)\/([^\/"]+)"/', 'a href="/\1-\2.php"', $tmp);
- $tmp = preg_replace('/a href="\/([^\/"]+)\/([^\/"]+)\/([^\/"]+)"/', 'a href="/\1-\2-\3.php"', $tmp);
- $tmp = preg_replace('/a href="\/([^\/"]+)\/([^\/"]+)\/([^\/"]+)\/([^\/"]+)"/', 'a href="/\1-\2-\3-\4.php"', $tmp);
- //print dol_escape_htmltag($tmp);exit;
- $objectpage->content = $tmp;
- $objectpage->grabbed_from = $urltograb;
- }
- }
- }
- else
- {
- $objectpage->title = GETPOST('WEBSITE_TITLE','alpha');
- $objectpage->type_container = GETPOST('WEBSITE_TYPE_CONTAINER','alpha');
- $objectpage->pageurl = GETPOST('WEBSITE_PAGENAME','alpha');
- $objectpage->aliasalt = GETPOST('WEBSITE_ALIASALT','alpha');
- $objectpage->description = GETPOST('WEBSITE_DESCRIPTION','alpha');
- $objectpage->keywords = GETPOST('WEBSITE_KEYWORDS','alpha');
- $objectpage->lang = GETPOST('WEBSITE_LANG','aZ09');
- $objectpage->htmlheader = GETPOST('htmlheader','none');
- $substitutionarray=array();
- $substitutionarray['__WEBSITE_CREATE_BY__']=$user->getFullName($langs);
- $sample = GETPOST('sample','alpha');
- if (empty($sample)) $sample='empty';
- $pathtosample = DOL_DOCUMENT_ROOT.'/website/page-sample-'.$sample.'.html';
- // Init content with content into pagetemplate.html, blogposttempltate.html, ...
- $objectpage->content = make_substitutions(@file_get_contents($pathtosample), $substitutionarray);
- }
- if (! $error)
- {
- if (empty($objectpage->pageurl))
- {
- $langs->load("errors");
- setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("WEBSITE_PAGENAME")), null, 'errors');
- $error++;
- $action='createcontainer';
- }
- else if (! preg_match('/^[a-z0-9\-\_]+$/i', $objectpage->pageurl))
- {
- $langs->load("errors");
- setEventMessages($langs->transnoentities("ErrorFieldCanNotContainSpecialCharacters", $langs->transnoentities('WEBSITE_PAGENAME')), null, 'errors');
- $error++;
- $action='createcontainer';
- }
- if (empty($objectpage->title))
- {
- $langs->load("errors");
- setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("WEBSITE_TITLE")), null, 'errors');
- $error++;
- $action='createcontainer';
- }
- }
- if (! $error)
- {
- $res = $objectpage->create($user);
- if ($res <= 0)
- {
- $error++;
- setEventMessages($objectpage->error, $objectpage->errors, 'errors');
- $action='createcontainer';
- }
- }
- 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='.$websitekey.'&pageid='.$pageid);
- //exit;
- }
- else
- {
- setEventMessages('Failed to write file '.$filetpl, null, 'errors');
- //header("Location: ".$_SERVER["PHP_SELF"].'?website='.$websitekey.'&pageid='.$pageid);
- //exit;
- }
- }
- }
- if (! $error)
- {
- $db->commit();
- setEventMessages($langs->trans("PageAdded", $objectpage->pageurl), null, 'mesgs');
- $action='';
- }
- else
- {
- $db->rollback();
- }
- if (! $error)
- {
- $pageid = $objectpage->id;
- // To generate the CSS, robot and htmlheader file.
- // 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);
- }
- if (! dol_is_file($filehtmlheader))
- {
- $htmlheadercontent ="<html>\n";
- $htmlheadercontent.=$htmlheadercontentdefault;
- $htmlheadercontent.="</html>";
- $result=dolSaveHtmlHeader($filehtmlheader, $htmlheadercontent);
- }
- if (! dol_is_file($filecss))
- {
- $csscontent = "/* CSS content (all pages) */\nbody.bodywebsite { margin: 0; font-family: 'Open Sans', sans-serif; }\n.bodywebsite h1 { margin-top: 0; margin-bottom: 0; padding: 10px;}";
- $result=dolSaveCssFile($filecss, $csscontent);
- }
- if (! dol_is_file($filejs))
- {
- $jscontent = "/* JS content (all pages) */\n";
- $result=dolSaveJsFile($filejs, $jscontent);
- }
- if (! dol_is_file($filerobot))
- {
- $robotcontent = "# Robot file. Generated with Dolibarr\nUser-agent: *\nAllow: /public/\nDisallow: /administrator/";
- $result=dolSaveRobotFile($filerobot, $robotcontent);
- }
- if (! dol_is_file($filehtaccess))
- {
- $htaccesscontent = "# Order allow,deny\n# Deny from all";
- $result=dolSaveHtaccessFile($filehtaccess, $htaccesscontent);
- }
- $action = 'preview';
- }
- }
- // Delete site
- if ($action == 'deletesite')
- {
- $error = 0;
- $db->begin();
- $res = $object->fetch(0, $websitekey);
- $website = $object;
- if ($res > 0)
- {
- $res = $object->delete($user);
- if ($res <= 0)
- {
- $error++;
- setEventMessages($object->error, $object->errors, 'errors');
- }
- }
- if (! $error)
- {
- $db->commit();
- setEventMessages($langs->trans("SiteDeleted", $object->ref, $websitekey), null, 'mesgs');
- header("Location: ".$_SERVER["PHP_SELF"]);
- exit;
- }
- else
- {
- $db->rollback();
- dol_print_error($db);
- }
- }
- // Delete page
- if ($action == 'delete')
- {
- $error = 0;
- $db->begin();
- $res = $object->fetch(0, $websitekey);
- $website = $object;
- $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, $websitekey), null, 'mesgs');
- header("Location: ".$_SERVER["PHP_SELF"].'?website='.$websitekey);
- exit;
- }
- else
- {
- $db->rollback();
- dol_print_error($db);
- }
- }
- // Update css
- if ($action == 'updatecss')
- {
- if (GETPOST('refreshsite','alpha') || GETPOST('refreshpage','alpha')) // If we tried to reload another site/page, we stay on editcss mode.
- {
- $action='editcss';
- }
- else
- {
- $res = $object->fetch(0, $websitekey);
- $website = $object;
- // Html header file
- $htmlheadercontent ='';
- /* We disable php code since htmlheader is never executed as an include but only read by fgets_content.
- $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
- $htmlheadercontent.= "// END PHP ?>\n";*/
- $htmlheadercontent.= preg_replace(array('/<html>\n*/ims','/<\/html>\n*/ims'),array('',''),GETPOST('WEBSITE_HTML_HEADER', 'none'));
- /*$htmlheadercontent.= "\n".'<?php // BEGIN PHP'."\n";
- $htmlheadercontent.= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp);'."\n";
- $htmlheadercontent.= "// END PHP ?>"."\n";*/
- $htmlheadercontent = trim($htmlheadercontent)."\n";
- dolSaveHtmlHeader($filehtmlheader, $htmlheadercontent);
- // Css file
- $csscontent ='';
- $csscontent.= "<?php // BEGIN PHP\n";
- $csscontent.= '$websitekey=basename(dirname(__FILE__));'."\n";
- $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.
- $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";
- $csscontent.= "header('Content-type: text/css');\n";
- $csscontent.= "// END PHP ?>\n";
- $csscontent.= GETPOST('WEBSITE_CSS_INLINE', 'none');
- $csscontent.= "\n".'<?php // BEGIN PHP'."\n";
- $csscontent.= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp);'."\n";
- $csscontent.= "// END PHP ?>"."\n";
- dol_syslog("Save css content into ".$filecss);
- dol_mkdir($pathofwebsite);
- $result = file_put_contents($filecss, $csscontent);
- if (! empty($conf->global->MAIN_UMASK))
- @chmod($filecss, octdec($conf->global->MAIN_UMASK));
- if (! $result)
- {
- $error++;
- setEventMessages('Failed to write file '.$filecss, null, 'errors');
- }
- // Js file
- $jscontent ='';
- $jscontent.= "<?php // BEGIN PHP\n";
- $jscontent.= '$websitekey=basename(dirname(__FILE__));'."\n";
- $jscontent.= "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.
- $jscontent.= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n";
- $jscontent.= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n";
- $jscontent.= "ob_start();\n";
- $jscontent.= "header('Content-type: application/javascript');\n";
- $jscontent.= "// END PHP ?>\n";
- $jscontent.= GETPOST('WEBSITE_JS_INLINE', 'none');
- $jscontent.= "\n".'<?php // BEGIN PHP'."\n";
- $jscontent.= '$tmp = ob_get_contents(); ob_end_clean(); dolWebsiteOutput($tmp);'."\n";
- $jscontent.= "// END PHP ?>"."\n";
- dol_syslog("Save js content into ".$filejs);
- dol_mkdir($pathofwebsite);
- $result = file_put_contents($filejs, $jscontent);
- if (! empty($conf->global->MAIN_UMASK))
- @chmod($filejs, octdec($conf->global->MAIN_UMASK));
- if (! $result)
- {
- $error++;
- setEventMessages('Failed to write file '.$filejs, null, 'errors');
- }
- // Robot 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";*/
- $robotcontent.= GETPOST('WEBSITE_ROBOT', 'none');
- /*$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";*/
- $htaccesscontent.= GETPOST('WEBSITE_HTACCESS', 'none');
- /*$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
- if (! $error)
- {
- setEventMessages($langs->trans("Saved"), null, 'mesgs');
- }
- $action='preview';
- }
- }
- // Update page
- if ($action == 'setashome')
- {
- $db->begin();
- $object->fetch(0, $websitekey);
- $website = $object;
- $object->fk_default_home = $pageid;
- $res = $object->update($user);
- if (! $res > 0)
- {
- $error++;
- setEventMessages($object->error, $object->errors, 'errors');
- }
- if (! $error)
- {
- $db->commit();
- // Generate the index.php page to be the home page
- //-------------------------------------------------
- $result = dolSaveIndexPage($pathofwebsite, $fileindex, $filetpl);
- if ($result) setEventMessages($langs->trans("Saved"), null, 'mesgs');
- else setEventMessages('Failed to write file '.$fileindex, null, 'errors');
- $action='preview';
- }
- else
- {
- $db->rollback();
- }
- }
- // Update page (meta)
- if ($action == 'updatemeta')
- {
- $db->begin();
- $result = $object->fetch(0, $websitekey);
- $website = $object;
- $objectpage->fk_website = $object->id;
- // Check parameters
- if (! preg_match('/^[a-z0-9\-\_]+$/i', GETPOST('WEBSITE_PAGENAME', 'alpha')))
- {
- $error++;
- $langs->load("errors");
- setEventMessages($langs->transnoentities("ErrorFieldCanNotContainSpecialCharacters", $langs->transnoentities('WEBSITE_PAGENAME')), null, 'errors');
- $action='editmeta';
- }
- $res = $objectpage->fetch($pageid, $object->id);
- if ($res <= 0)
- {
- $error++;
- setEventMessages('Page not found '.$objectpage->error, $objectpage->errors, 'errors');
- }
- // Check alias not exists
- if (! $error && GETPOST('WEBSITE_PAGENAME', 'alpha'))
- {
- $websitepagetemp=new WebsitePage($db);
- $result = $websitepagetemp->fetch(-1 * $objectpage->id, $object->id, GETPOST('WEBSITE_PAGENAME', 'alpha'));
- if ($result < 0)
- {
- $error++;
- $langs->load("errors");
- setEventMessages($websitepagetemp->error, $websitepagetemp->errors, 'errors');
- $action = 'editmeta';
- }
- if ($result > 0)
- {
- $error++;
- $langs->load("errors");
- setEventMessages($langs->trans("ErrorAPageWithThisNameOrAliasAlreadyExists", $websitepagetemp->pageurl), null, 'errors');
- $action = 'editmeta';
- }
- }
- if (! $error && GETPOST('WEBSITE_ALIASALT', 'alpha'))
- {
- $arrayofaliastotest=explode(',', GETPOST('WEBSITE_ALIASALT', 'alpha'));
- $websitepagetemp=new WebsitePage($db);
- foreach($arrayofaliastotest as $aliastotest)
- {
- $result = $websitepagetemp->fetch(-1 * $objectpage->id, $object->id, $aliastotest);
- if ($result < 0)
- {
- $error++;
- $langs->load("errors");
- setEventMessages($websitepagetemp->error, $websitepagetemp->errors, 'errors');
- $action = 'editmeta';
- break;
- }
- if ($result > 0)
- {
- $error++;
- $langs->load("errors");
- setEventMessages($langs->trans("ErrorAPageWithThisNameOrAliasAlreadyExists", $websitepagetemp->pageurl), null, 'errors');
- $action = 'editmeta';
- break;
- }
- }
- }
- if (! $error)
- {
- $objectpage->old_object = clone $objectpage;
- $objectpage->title = GETPOST('WEBSITE_TITLE', 'alpha');
- $objectpage->type_container = GETPOST('WEBSITE_TYPE_CONTAINER', 'alpha');
- $objectpage->pageurl = GETPOST('WEBSITE_PAGENAME', 'alpha');
- $objectpage->aliasalt = GETPOST('WEBSITE_ALIASALT', 'alpha');
- $objectpage->description = GETPOST('WEBSITE_DESCRIPTION', 'alpha');
- $objectpage->keywords = GETPOST('WEBSITE_KEYWORDS', 'alpha');
- $objectpage->lang = GETPOST('WEBSITE_LANG', 'aZ09');
- $objectpage->htmlheader = trim(GETPOST('htmlheader', 'none'));
- $res = $objectpage->update($user);
- if (! ($res > 0))
- {
- $langs->load("errors");
- if ($db->lasterrno == 'DB_ERROR_RECORD_ALREADY_EXISTS')
- {
- $error++;
- $langs->load("errors");
- setEventMessages($langs->trans("ErrorAPageWithThisNameOrAliasAlreadyExists"), null, 'errors');
- $action = 'editmeta';
- }
- else
- {
- $error++;
- $langs->load("errors");
- setEventMessages($objectpage->error, $objectpage->errors, 'errors');
- $action = 'editmeta';
- }
- }
- }
- if (! $error)
- {
- $db->commit();
- }
- else
- {
- $db->rollback();
- }
- if (! $error)
- {
- $filemaster=$pathofwebsite.'/master.inc.php';
- $fileoldalias=$pathofwebsite.'/'.$objectpage->old_object->pageurl.'.php';
- $filealias=$pathofwebsite.'/'.$objectpage->pageurl.'.php';
- dol_mkdir($pathofwebsite);
- // Now generate the master.inc.php page
- dol_syslog("We regenerate the master file (because we update meta)");
- dol_delete_file($filemaster);
- $mastercontent = '<?php'."\n";
- $mastercontent.= '// File generated to link to the master file - DO NOT MODIFY - It is just an include'."\n";
- $mastercontent.= "if (! defined('USEDOLIBARRSERVER')) require_once '".DOL_DOCUMENT_ROOT."/master.inc.php';\n";
- //$mastercontent.= "include_once DOL_DOCUMENT_ROOT.'/website/class/website.class.php';"."\n";
- //$mastercontent.= '$website = new WebSite($db)'."\n";
- $mastercontent.= '?>'."\n";
- $result = file_put_contents($filemaster, $mastercontent);
- if (! empty($conf->global->MAIN_UMASK))
- @chmod($filemaster, octdec($conf->global->MAIN_UMASK));
- if (! $result) setEventMessages('Failed to write file '.$filemaster, null, 'errors');
- // Now delete the alias.php page
- if (! empty($fileoldalias))
- {
- dol_syslog("We delete old alias page name=".$fileoldalias." to build a new alias page=".$filealias);
- dol_delete_file($fileoldalias);
- }
- // Now delete the alternative alias.php pages
- if (! empty($objectpage->old_object->aliasalt))
- {
- $tmpaltaliases=explode(',', $objectpage->old_object->aliasalt);
- if (is_array($tmpaltaliases))
- {
- foreach($tmpaltaliases as $tmpaliasalt)
- {
- dol_syslog("We delete old alt alias pages name=".trim($tmpaliasalt));
- dol_delete_file($pathofwebsite.'/'.trim($tmpaliasalt).'.php');
- }
- }
- }
- // Save page alias
- $result=dolSavePageAlias($filealias, $object, $objectpage);
- if (! $result) setEventMessages('Failed to write file '.$filealias, null, 'errors');
- // Save alt aliases
- if (! empty($objectpage->aliasalt))
- {
- $tmpaltaliases=explode(',', $objectpage->aliasalt);
- if (is_array($tmpaltaliases))
- {
- foreach($tmpaltaliases as $tmpaliasalt)
- {
- $result=dolSavePageAlias($pathofwebsite.'/'.trim($tmpaliasalt).'.php', $object, $objectpage);
- if (! $result) setEventMessages('Failed to write file '.$pathofwebsite.'/'.trim($tmpaliasalt).'.php', 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='.$websitekey.'&pageid='.$pageid);
- //exit;
- }
- else
- {
- setEventMessages('Failed to write file '.$filetpl, null, 'errors');
- //header("Location: ".$_SERVER["PHP_SELF"].'?website='.$websitekey.'&pageid='.$pageid);
- //exit;
- }
- $action='preview';
- }
- }
- // Update page
- if (($action == 'updatesource' || $action == 'updatecontent' || $action == 'confirm_createfromclone' || $action == 'confirm_createpagefromclone')
- || ($action == 'preview' && (GETPOST('refreshsite') || GETPOST('refreshpage') || GETPOST('preview'))))
- {
- $object->fetch(0, $websitekey);
- $website = $object;
- if ($action == 'confirm_createfromclone')
- {
- $objectnew = new Website($db);
- $result = $objectnew->createFromClone($user, GETPOST('id','int'), GETPOST('siteref','aZ09'), (GETPOST('newlang','aZ09')?GETPOST('newlang','aZ09'):''));
- if ($result < 0)
- {
- $error++;
- setEventMessages($objectnew->error, $objectnew->errors, 'errors');
- $action='preview';
- }
- else
- {
- $object = $objectnew;
- $id = $object->id;
- $pageid = $object->fk_default_home;
- $websitekey = GETPOST('siteref','aZ09');
- }
- }
- if ($action == 'confirm_createpagefromclone')
- {
- $istranslation=(GETPOST('is_a_translation','aZ09')=='on'?1:0);
- if ($istranslation)
- {
- if (GETPOST('newlang','aZ09') == $objectpage->lang)
- {
- $error++;
- setEventMessages($langs->trans("LanguageMustNotBeSameThanClonedPage"), null, 'errors');
- $action='preview';
- }
- }
- if (! $error)
- {
- $objectpage = new WebsitePage($db);
- $result = $objectpage->createFromClone($user, $pageid, GETPOST('pageurl','aZ09'), (GETPOST('newlang','aZ09')?GETPOST('newlang','aZ09'):''), $istranslation, GETPOST('newwebsite','int'));
- if ($result < 0)
- {
- $error++;
- setEventMessages($objectpage->error, $objectpage->errors, 'errors');
- $action='createpagefromclone';
- }
- else
- {
- // TODO Switch on the new page ?
- }
- }
- }
- $res = 0;
- if (! $error)
- {
- // 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);
- }
- /*if (GETPOST('savevirtualhost') && $object->virtualhost != GETPOST('previewsite'))
- {
- $object->virtualhost = GETPOST('previewsite', 'alpha');
- $object->update($user);
- }*/
- $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);
- }
- }
- }
- if (! $error && $res > 0)
- {
- if ($action == 'updatesource' || $action == 'updatecontent')
- {
- $db->begin();
- $objectpage->content = GETPOST('PAGE_CONTENT','none');
- // Clean data. We remove all the head section.
- $objectpage->content = preg_replace('/<head>.*<\/head>/s', '', $objectpage->content);
- /* $objectpage->content = preg_replace('/<base\s+href=[\'"][^\'"]+[\'"]\s/?>/s', '', $objectpage->content); */
- $res = $objectpage->update($user);
- if ($res < 0)
- {
- $error++;
- setEventMessages($objectpage->error, $objectpage->errors, 'errors');
- }
- if (! $error)
- {
- $db->commit();
- $filemaster=$pathofwebsite.'/master.inc.php';
- //$fileoldalias=$pathofwebsite.'/'.$objectpage->old_object->pageurl.'.php';
- $filealias=$pathofwebsite.'/'.$objectpage->pageurl.'.php';
- dol_mkdir($pathofwebsite);
- // Now generate the master.inc.php page
- dol_syslog("We regenerate the master file");
- dol_delete_file($filemaster);
- $mastercontent = '<?php'."\n";
- $mastercontent.= '// File generated to link to the master file'."\n";
- $mastercontent.= "if (! defined('USEDOLIBARRSERVER')) require_once '".DOL_DOCUMENT_ROOT."/master.inc.php';\n";
- $mastercontent.= '?>'."\n";
- $result = file_put_contents($filemaster, $mastercontent);
- if (! empty($conf->global->MAIN_UMASK))
- @chmod($filemaster, octdec($conf->global->MAIN_UMASK));
- if (! $result) setEventMessages('Failed to write file '.$filemaster, null, 'errors');
- // 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);
- }
- // Save page alias
- $result=dolSavePageAlias($filealias, $object, $objectpage);
- if (! $result) setEventMessages('Failed to write file '.$filealias, null, 'errors');
- // Save page content
- $result=dolSavePageContent($filetpl, $object, $objectpage);
- if ($result)
- {
- setEventMessages($langs->trans("Saved"), null, 'mesgs');
- header("Location: ".$_SERVER["PHP_SELF"].'?website='.$websitekey.'&pageid='.$pageid);
- exit;
- }
- else
- {
- setEventMessages('Failed to write file '.$filetpl, null, 'errors');
- header("Location: ".$_SERVER["PHP_SELF"].'?website='.$websitekey.'&pageid='.$pageid);
- exit;
- }
- }
- else
- {
- $db->rollback();
- }
- }
- else
- {
- header("Location: ".$_SERVER["PHP_SELF"].'?website='.$websitekey.'&pageid='.$pageid);
- exit;
- }
- }
- else
- {
- if (! $error)
- {
- setEventMessages($langs->trans("NoPageYet"), null, 'warnings');
- setEventMessages($langs->trans("YouCanCreatePageOrImportTemplate"), null, 'warnings');
- }
- }
- }
- // Export site
- if ($action == 'exportsite')
- {
- $fileofzip = $object->exportWebSite();
- if ($fileofzip)
- {
- $file_name = basename($fileofzip);
- header("Content-Type: application/zip");
- header("Content-Disposition: attachment; filename=".$file_name);
- header("Content-Length: " . filesize($fileofzip));
- readfile($fileofzip);
- exit;
- }
- }
- // Import site
- if ($action == 'importsiteconfirm')
- {
- if (empty($_FILES))
- {
- setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("File")), null, 'errors');
- $action = 'importsite';
- }
- else
- {
- if (! empty($_FILES))
- {
- if (is_array($_FILES['userfile']['tmp_name'])) $userfiles=$_FILES['userfile']['tmp_name'];
- else $userfiles=array($_FILES['userfile']['tmp_name']);
- foreach($userfiles as $key => $userfile)
- {
- if (empty($_FILES['userfile']['tmp_name'][$key]))
- {
- $error++;
- if ($_FILES['userfile']['error'][$key] == 1 || $_FILES['userfile']['error'][$key] == 2){
- setEventMessages($langs->trans('ErrorFileSizeTooLarge'), null, 'errors');
- $action = 'importsite';
- }
- else {
- setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("File")), null, 'errors');
- $action = 'importsite';
- }
- }
- }
- if (! $error)
- {
- $upload_dir = $conf->website->dir_temp;
- $result = dol_add_file_process($upload_dir, 1, -1, 'userfile', '');
- // Get name of file (take last one if several name provided)
- $fileofzip = $upload_dir.'/unknown';
- foreach($_FILES as $key => $ifile)
- {
- foreach($ifile['name'] as $key2 => $ifile2)
- {
- $fileofzip = $upload_dir . '/' .$ifile2;
- }
- }
- $result = $object->importWebSite($fileofzip);
- if ($result < 0)
- {
- setEventMessages($object->error, $object->errors, 'errors');
- $action = 'importsite';
- }
- else
- {
- header("Location: ".$_SERVER["PHP_SELF"].'?website='.$object->ref);
- exit();
- }
- }
- }
- }
- }
- /*
- * View
- */
- $form = new Form($db);
- $formadmin = new FormAdmin($db);
- $formwebsite = new FormWebsite($db);
- $formother = new FormOther($db);
- $help_url='';
- $arrayofjs = array(
- '/includes/ace/ace.js',
- '/includes/ace/ext-statusbar.js',
- '/includes/ace/ext-language_tools.js',
- //'/includes/ace/ext-chromevox.js'
- //'/includes/jquery/plugins/jqueryscoped/jquery.scoped.js',
- );
- $arrayofcss = array();
- $moreheadcss='';
- $moreheadjs='';
- $arrayofjs[]='includes/jquery/plugins/blockUI/jquery.blockUI.js';
- $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";
- $moreheadjs.='var indicatorBlockUI = \''.DOL_URL_ROOT."/theme/".$conf->theme."/img/working.gif".'\';'."\n";
- $moreheadjs.='</script>'."\n";
- llxHeader($moreheadcss.$moreheadjs, $langs->trans("websiteetup"), $help_url, '', 0, 0, $arrayofjs, $arrayofcss, '', '', '<!-- Begin div class="fiche" -->'."\n".'<div class="fichebutwithotherclass">');
- print "\n".'<form action="'.$_SERVER["PHP_SELF"].'" method="POST" enctype="multipart/form-data">';
- print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
- if ($action == 'createsite')
- {
- print '<input type="hidden" name="action" value="addsite">';
- }
- if ($action == 'createcontainer')
- {
- print '<input type="hidden" name="action" value="addcontainer">';
- }
- if ($action == 'editcss')
- {
- print '<input type="hidden" name="action" value="updatecss">';
- }
- if ($action == 'editmenu')
- {
- print '<input type="hidden" name="action" value="updatemenu">';
- }
- if ($action == 'setashome')
- {
- print '<input type="hidden" name="action" value="updateashome">';
- }
- if ($action == 'editmeta')
- {
- print '<input type="hidden" name="action" value="updatemeta">';
- }
- if ($action == 'editsource')
- {
- print '<input type="hidden" name="action" value="updatesource">';
- }
- if ($action == 'editcontent')
- {
- print '<input type="hidden" name="action" value="updatecontent">';
- }
- if ($action == 'edit')
- {
- print '<input type="hidden" name="action" value="update">';
- }
- if ($action == 'importsite')
- {
- print '<input type="hidden" name="action" value="importsiteconfirm">';
- }
- if ($action == 'file_manager')
- {
- print '<input type="hidden" name="action" value="file_manager">';
- }
- print '<div>';
- // Add a margin under toolbar ?
- $style='';
- if ($action != 'preview' && $action != 'editcontent' && $action != 'editsource') $style=' margin-bottom: 5px;';
- if (! GETPOST('hide_websitemenu'))
- {
- //var_dump($objectpage);exit;
- print '<div class="centpercent websitebar">';
- if (count($object->records) > 0)
- {
- // ***** Part for web sites
- print '<div class="websiteselection hideonsmartphoneimp minwidth100 tdoverflowmax100">';
- print $langs->trans("Website").' : ';
- print '</div>';
- print '<div class="websiteselection hideonsmartphoneimp">';
- print ' <input type="submit"'.$disabled.' class="button" value="'.dol_escape_htmltag($langs->trans("Add")).'" name="createsite">';
- print '</div>';
- // List of website
- print '<div class="websiteselection">';
- $out='';
- $out.='<select name="website" class="minwidth100" id="website">';
- if (empty($object->records)) $out.='<option value="-1"> </option>';
- // Loop on each sites
- $i=0;
- foreach($object->records as $key => $valwebsite)
- {
- if (empty($websitekey)) $websitekey=$valwebsite->ref;
- $out.='<option value="'.$valwebsite->ref.'"';
- if ($websitekey == $valwebsite->ref) $out.=' selected'; // To preselect a value
- $out.='>';
- $out.=$valwebsite->ref;
- $out.='</option>';
- $i++;
- }
- $out.='</select>';
- $out.=ajax_combobox('website');
- print $out;
- //print '<input type="submit" class="button" name="refreshsite" value="'.$langs->trans("Load").'">';
- print '<input type="image" class="valignmiddle" src="'.img_picto('', 'refresh', '', 0, 1).'" name="refreshpage" value="'.$langs->trans("Load").'">';
- if ($websitekey)
- {
- $virtualurl='';
- $dataroot=DOL_DATA_ROOT.'/website/'.$websitekey;
- if (! empty($object->virtualhost)) $virtualurl=$object->virtualhost;
- }
- $array=$objectpage->fetchAll($object->id, 'ASC,ASC', 'type_container,pageurl');
- if (! is_array($array) && $array < 0) dol_print_error('', $objectpage->error, $objectpage->errors);
- $atleastonepage=(is_array($array) && count($array) > 0);
- if ($websitekey && ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone'))
- {
- $disabled='';
- if (empty($user->rights->website->write)) $disabled=' disabled="disabled"';
- print ' ';
- print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("EditCss")).'" name="editcss">';
- //print '<input type="submit" class="button"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("EditMenu")).'" name="editmenu">';
- print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("CloneSite")).'" name="createfromclone">';
- print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("ExportSite")).'" name="exportsite">';
- if (! $atleastonepage)
- {
- print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("ImportSite")).'" name="importsite">';
- }
- else
- {
- print '<input type="submit" class="button nobordertransp" disabled="disabled" value="'.dol_escape_htmltag($langs->trans("ImportSite")).'" name="importsite">';
- }
- print '<input type="submit" class="buttonDelete" name="deletesite" value="'.$langs->trans("Delete").'"'.($atleastonepage?' disabled="disabled"':'').'>';
- print ' ';
- print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("MediaFiles")).'" name="file_manager">';
- /*print '<a class="button button_file_manager"'.$disabled.'>'.dol_escape_htmltag($langs->trans("MediaFiles")).'</a>';
- print '<script language="javascript">
- jQuery(document).ready(function () {
- jQuery(".button_file_manager").click(function () {
- var $dialog = $(\'<div></div>\').html(\'<iframe style="border: 0px;" src="'.DOL_URL_ROOT.'/website/index.php?hide_websitemenu=1&dol_hide_topmenu=1&dol_hide_leftmenu=1&file_manager=1&website='.$websitekey.'&pageid='.$pageid.'" width="100%" height="100%"></iframe>\')
- .dialog({
- autoOpen: false,
- modal: true,
- height: 500,
- width: \'80%\',
- title: "'.dol_escape_js($langs->trans("FileManager")).'"
- });
- $dialog.dialog(\'open\');
- });
- });
- </script>';
- */
- }
- print '</div>';
- // Toolbar for website
- print '<div class="websitetools">';
- if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')
- {
- $urlext=$virtualurl;
- $urlint=$urlwithroot.'/public/website/index.php?website='.$websitekey;
- $htmltext = $langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $urlint, $dataroot);
- $htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("ReadPerm"), DOL_DOCUMENT_ROOT);
- $htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("WritePerm"), DOL_DATA_ROOT);
- print '<a class="websitebuttonsitepreview" id="previewsite" href="'.$urlwithroot.'/public/website/index.php?website='.$websitekey.'" target="tab'.$websitekey.'" alt="'.dol_escape_htmltag($htmltext).'">';
- print $form->textwithpicto('', $htmltext, 1, 'preview');
- print '</a>';
- print '<div class="websiteinputurl" id="websiteinputurl">';
- print '<input type="text" id="previewsiteurl" class="minwidth200imp" name="previewsite" placeholder="'.$langs->trans("http://myvirtualhost").'" value="'.$virtualurl.'">';
- //print '<input type="submit" class="button" name="previewwebsite" target="tab'.$websitekey.'" value="'.$langs->trans("ViewSiteInNewTab").'">';
- $htmltext =$langs->trans("SetHereVirtualHost", $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);
- $htmltext.='<br>';
- $htmltext.='<br>';
- $htmltext.=$langs->trans("YouCanAlsoTestWithPHPS", $dataroot);
- print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'helpvirtualhost');
- print '</div>';
- if (empty($object->fk_default_home))
- {
- $htmltext = '<span class="error">'.$langs->trans("YouMustDefineTheHomePage").'</span><br>'.$langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $dataroot, $urlext?$urlext:'<span class="error">'.$langs->trans("VirtualHostUrlNotDefined").'</span>');
- $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 '<span class="websitebuttonsitepreview websitebuttonsitepreviewdisabled cursornotallowed" id="previewsiteextdisabled" href="" target="tab'.$websitekey.'ext" alt="'.dol_escape_htmltag($langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $dataroot, $urlext)).'">';
- print $form->textwithpicto('', $htmltext, 1, 'preview_ext');
- print '</span>';
- }
- else
- {
- $htmltext = $langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $dataroot, $urlext?$urlext:'<span class="error">'.$langs->trans("VirtualHostUrlNotDefined").'</span>');
- $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 '<a class="websitebuttonsitepreview'.($urlext?'':' websitebuttonsitepreviewdisabled cursornotallowed').'" id="previewsiteext" href="'.$urlext.'" target="tab'.$websitekey.'ext" alt="'.dol_escape_htmltag($langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Site"), $langs->transnoentitiesnoconv("Site"), $dataroot, $urlext)).'">';
- print $form->textwithpicto('', $htmltext, 1, 'preview_ext');
- print '</a>';
- }
- }
- if (in_array($action, array('editcss','editmenu','file_manager')))
- {
- if (preg_match('/^create/',$action) && $action != 'file_manager') print '<input type="submit" id="savefile" class="button buttonforacesave" value="'.dol_escape_htmltag($langs->trans("Save")).'" name="update">';
- if (preg_match('/^edit/',$action) && $action != 'file_manager') print '<input type="submit" id="savefile" class="button buttonforacesave" value="'.dol_escape_htmltag($langs->trans("Save")).'" name="update">';
- if ($action != 'preview') print '<input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("Cancel")).'" name="preview">';
- }
- print '</div>';
- // Toolbar for pages
- if ($websitekey && ! in_array($action, array('editcss','editmenu','importsite')))
- {
- print '</div>'; // Close current websitebar to open a new one
- print '<div class="centpercent websitebar"'.($style?' style="'.$style.'"':'').'">';
- print '<div class="websiteselection hideonsmartphoneimp minwidth100 tdoverflowmax100">';
- print $langs->trans("PageContainer").': ';
- print '</div>';
- print '<div class="websiteselection hideonsmartphoneimp">';
- print '<input type="submit"'.$disabled.' class="button" value="'.dol_escape_htmltag($langs->trans("Add")).'" name="createcontainer">';
- print '</div>';
- print '<div class="websiteselection">';
- if ($action != 'addcontainer')
- {
- $out='';
- $out.='<select name="pageid" id="pageid" class="minwidth200 maxwidth300">';
- if ($atleastonepage)
- {
- if (empty($pageid) && $action != 'createcontainer') // 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
- }
- foreach($array as $key => $valpage)
- {
- $out.='<option value="'.$key.'"';
- if ($pageid > 0 && $pageid == $key) $out.=' selected'; // To preselect a value
- $out.='>';
- $out.='['.$valpage->type_container.' '.$valpage->id.'] ';
- $out.=$valpage->pageurl.' - '.$valpage->title;
- if ($object->fk_default_home && $key == $object->fk_default_home) $out.=' ('.$langs->trans("HomePage").')';
- $out.='</option>';
- }
- }
- else $out.='<option value="-1"> </option>';
- $out.='</select>';
- $out.=ajax_combobox('pageid');
- print $out;
- }
- else
- {
- print $langs->trans("New");
- }
- //print '<input type="submit" class="button" name="refreshpage" value="'.$langs->trans("Load").'"'.($atleastonepage?'':' disabled="disabled"').'>';
- print '<input type="image" class="valignmiddle" src="'.img_picto('', 'refresh', '', 0, 1).'" name="refreshpage" value="'.$langs->trans("Load").'"'.($atleastonepage?'':' disabled="disabled"').'>';
- // Print nav arrows
- $pagepreviousid=0;
- $pagenextid=0;
- if ($pageid)
- {
- $sql = 'SELECT MAX(rowid) as pagepreviousid FROM '.MAIN_DB_PREFIX.'website_page WHERE rowid < '.$pageid.' AND fk_website = '.$object->id;
- $resql = $db->query($sql);
- if ($resql)
- {
- $obj = $db->fetch_object($resql);
- if ($obj)
- {
- $pagepreviousid = $obj->pagepreviousid;
- }
- }
- else dol_print_error($db);
- $sql = 'SELECT MIN(rowid) as pagenextid FROM '.MAIN_DB_PREFIX.'website_page WHERE rowid > '.$pageid.' AND fk_website = '.$object->id;
- $resql = $db->query($sql);
- if ($resql)
- {
- $obj = $db->fetch_object($resql);
- if ($obj)
- {
- $pagenextid = $obj->pagenextid;
- }
- }
- else dol_print_error($db);
- }
- if ($pagepreviousid) print '<a class="valignmiddle" href="'.$_SERVER['PHP_SELF'].'?website='.urlencode($object->ref).'&pageid='.$pagepreviousid.'&action='.$action.'">'.img_previous($langs->trans("PreviousContainer")).'</a>';
- else print '<span class="valignmiddle opacitymedium">'.img_previous($langs->trans("PreviousContainer")).'</span>';
- if ($pagenextid) print '<a class="valignmiddle" href="'.$_SERVER['PHP_SELF'].'?website='.urlencode($object->ref).'&pageid='.$pagenextid.'&action='.$action.'">'.img_next($langs->trans("NextContainer")).'</a>';
- else print '<span class="valignmiddle opacitymedium">'.img_next($langs->trans("NextContainer")).'</span>';
- $websitepage = new WebSitePage($db);
- if ($pageid > 0 && ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone'))
- {
- $websitepage->fetch($pageid);
- }
- if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')
- {
- $disabled='';
- if (empty($user->rights->website->write)) $disabled=' disabled="disabled"';
- // Confirmation to clone
- if ($action == 'createfromclone') {
- // Create an array for form
- $formquestion = array(
- array('type' => 'text', 'name' => 'siteref', 'label'=> $langs->trans("WebSite") ,'value'=> 'copy_of_'.$object->ref),
- //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))
- );
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id='.$object->id, $langs->trans('CloneSite'), '', 'confirm_createfromclone', $formquestion, 0, 1, 200);
- print $formconfirm;
- }
- if ($pageid > 0)
- {
- // Confirmation to clone
- if ($action == 'createpagefromclone') {
- // Create an array for form
- $preselectedlanguage = GETPOST('newlang', 'az09') ? GETPOST('newlang', 'az09') : ($objectpage->lang ? $objectpage->lang : $langs->defaultlang);
- $formquestion = array(
- array('type' => 'text', 'tdclass'=>'maxwidth200', 'name' => 'pageurl', 'label'=> $langs->trans("WEBSITE_PAGENAME"), 'value'=> 'copy_of_'.$objectpage->pageurl),
- array('type' => 'checkbox', 'tdclass'=>'maxwidth200', 'name' => 'is_a_translation', 'label' => $langs->trans("PageIsANewTranslation"), 'value' => 0),
- array('type' => 'other','name' => 'newlang', 'label' => $langs->trans("Language"), 'value' => $formadmin->select_language($preselectedlanguage, 'newlang', 0, null, 1, 0, 0, 'minwidth200', 0, 1)),
- array('type' => 'other','name' => 'newwebsite', 'label' => $langs->trans("WebSite"), 'value' => $formwebsite->selectWebsite($object->id, 'newwebsite', 0)),
- );
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?website='.$object->ref.'&pageid=' . $pageid, $langs->trans('ClonePage'), '', 'confirm_createpagefromclone', $formquestion, 0, 1, 300, 550);
- print $formconfirm;
- }
- print ' ';
- print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("EditPageMeta")).'" name="editmeta">';
- print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("EditHTMLSource")).'" name="editsource">';
- if ($websitepage->grabbed_from)
- {
- //print '<input type="submit" class="button nobordertransp" disabled="disabled" title="'.dol_escape_htmltag($langs->trans("OnlyEditionOfSourceForGrabbedContent")).'" value="'.dol_escape_htmltag($langs->trans("EditWithEditor")).'" name="editcontent">';
- print '<a class="button nobordertransp nohoverborder"'.$disabled.' href="#" disabled="disabled" title="'.dol_escape_htmltag($langs->trans("OnlyEditionOfSourceForGrabbedContent")).'">'.img_picto($langs->trans("EditInLineOff"),'switch_off','',false,0,0,'','nomarginleft').'</a>';
- }
- else
- {
- //print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("EditWithEditor")).'" name="editcontent">';
- if (empty($conf->global->WEBSITE_EDITINLINE))
- {
- print '<a class="button nobordertransp nohoverborder"'.$disabled.' href="'.$_SERVER["PHP_SELF"].'?website='.$object->ref.'&pageid='.$websitepage->id.'&action=seteditinline">'.img_picto($langs->trans("EditInLineOff"),'switch_off','',false,0,0,'','nomarginleft').'</a>';
- }
- else
- {
- print '<a class="button nobordertransp nohoverborder"'.$disabled.' href="'.$_SERVER["PHP_SELF"].'?website='.$object->ref.'&pageid='.$websitepage->id.'&action=unseteditinline">'.img_picto($langs->trans("EditInLineOn"),'switch_on','',false,0,0,'','nomarginleft').'</a>';
- }
- }
- print ' ';
- if ($object->fk_default_home > 0 && $pageid == $object->fk_default_home) print '<input type="submit" class="button nobordertransp" disabled="disabled" value="'.dol_escape_htmltag($langs->trans("SetAsHomePage")).'" name="setashome">';
- else print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("SetAsHomePage")).'" name="setashome">';
- print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("ClonePage")).'" name="createpagefromclone">';
- print '<input type="submit" class="buttonDelete" name="delete" value="'.$langs->trans("Delete").'"'.($atleastonepage?'':' disabled="disabled"').'>';
- }
- }
- print '</div>'; // end website selection
- print '<div class="websitetools">';
- if ($pageid > 0 && ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone'))
- {
- $realpage=$urlwithroot.'/public/website/index.php?website='.$websitekey.'&pageref='.$websitepage->pageurl;
- $pagealias = $websitepage->pageurl;
- $htmltext = $langs->trans("PreviewSiteServedByDolibarr", $langs->transnoentitiesnoconv("Page"), $langs->transnoentitiesnoconv("Page"), $realpage, $dataroot);
- $htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("ReadPerm"), DOL_DOCUMENT_ROOT);
- $htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("WritePerm"), DOL_DATA_ROOT);
- print '<a class="websitebuttonsitepreview" id="previewpage" href="'.$realpage.'&nocache='.dol_now().'" class="button" target="tab'.$websitekey.'" alt="'.dol_escape_htmltag($htmltext).'">';
- print $form->textwithpicto('', $htmltext, 1, 'preview');
- print '</a>'; // View page in new Tab
- print '<div class="websiteinputurl" id="websiteinputpage">';
- print '<input type="text" id="previewpageurl" class="minwidth200imp" name="previewsite" value="'.$pagealias.'" disabled="disabled">';
- $htmltext=$langs->trans("PageNameAliasHelp", $langs->transnoentitiesnoconv("EditPageMeta"));
- print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'helppagealias');
- print '</div>';
- $urlext=$virtualurl.'/'.$pagealias.'.php';
- $urlint=$urlwithroot.'/public/website/index.php?website='.$websitekey;
- $htmltext = $langs->trans("PreviewSiteServedByWebServer", $langs->transnoentitiesnoconv("Page"), $langs->transnoentitiesnoconv("Page"), $dataroot, $virtualurl?$urlext:'<span class="error">'.$langs->trans("VirtualHostUrlNotDefined").'</span>');
- print '<a class="websitebuttonsitepreview'.($virtualurl?'':' websitebuttonsitepreviewdisabled cursornotallowed').'" id="previewpageext" href="'.$urlext.'" target="tab'.$websitekey.'ext" alt="'.dol_escape_htmltag($htmltext).'">';
- print $form->textwithpicto('', $htmltext, 1, 'preview_ext');
- print '</a>';
- //print '<input type="submit" class="button" name="previewpage" target="tab'.$websitekey.'"value="'.$langs->trans("ViewPageInNewTab").'">';
- // TODO Add js to save alias like we save virtual host name and use dynamic virtual host for url of id=previewpageext
- }
- if (! in_array($action, array('editcss','editmenu','file_manager','createsite','createcontainer','createpagefromclone')))
- {
- 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">';
- if ($action != 'preview') print '<input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("Cancel")).'" name="preview">';
- }
- print '</div>'; // end websitetools
- print '<div class="websitehelp">';
- if (GETPOST('editsource', 'alpha') || GETPOST('editcontent', 'alpha'))
- {
- $htmltext=$langs->transnoentitiesnoconv("YouCanEditHtmlSource").'<br>';
- print $form->textwithpicto($langs->trans("SyntaxHelp"), $htmltext, 1, 'help', 'inline-block', 1, 2, 'tooltipsubstitution');
- }
- print '</div>'; // end websitehelp
- if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')
- {
- // 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() {
- jQuery("#websiteinputurl").keyup(function() {
- console.log("Website external url modified "+jQuery("#previewsiteurl").val());
- if (jQuery("#previewsiteurl").val() != "" && jQuery("#previewsiteurl").val().startsWith("http"))
- {
- jQuery("a.websitebuttonsitepreviewdisabled img").css({ opacity: 1 });
- }
- else jQuery("a.websitebuttonsitepreviewdisabled img").css({ opacity: 0.2 });
- ';
- print '
- });
- jQuery("#previewsiteext,#previewpageext").click(function() {
- newurl=jQuery("#previewsiteurl").val();
- if (! newurl.startsWith("http"))
- {
- alert(\''.dol_escape_js($langs->trans("ExternalURLMustStartWithHttp")).'\');
- return false;
- }
- 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: \'website\',
- table_element: \'website\',
- fk_element: '.$object->id.',
- value: newurl,
- },
- context: document.body
- });
- jQuery("#previewsiteext").attr("href",newurl);
- jQuery("#previewpageext").attr("href",newpage);
- });
- });
- </script>';
- }
- }
- }
- }
- else
- {
- print '<div class="websiteselection">';
- $langs->load("errors");
- print $langs->trans("ErrorModuleSetupNotComplete");
- print '<div>';
- $action='';
- }
- print '</div>'; // end current websitebar
- }
- $head = array();
- /*
- * Edit Site HTML header and CSS
- */
- if ($action == 'editcss')
- {
- print '<div class="fiche">';
- print '<br>';
- if (GETPOST('editcss','alpha') || GETPOST('refreshpage','alpha'))
- {
- $csscontent = @file_get_contents($filecss);
- // Clean the php css file to remove php code and get only css part
- $csscontent = preg_replace('/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims', '', $csscontent);
- }
- else
- {
- $csscontent = GETPOST('WEBSITE_CSS_INLINE');
- }
- if (! trim($csscontent)) $csscontent='/* CSS content (all pages) */'."\n"."body.bodywebsite { margin: 0; font-family: 'Open Sans', sans-serif; }\n.bodywebsite h1 { margin-top: 0; margin-bottom: 0; padding: 10px;}";
- if (GETPOST('editcss','alpha') || GETPOST('refreshpage','alpha'))
- {
- $jscontent = @file_get_contents($filejs);
- // Clean the php js file to remove php code and get only js part
- $jscontent = preg_replace('/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims', '', $jscontent);
- }
- else
- {
- $jscontent = GETPOST('WEBSITE_JS_INLINE');
- }
- if (! trim($jscontent)) $jscontent='/* JS content (all pages) */'."\n";
- if (GETPOST('editcss','alpha') || GETPOST('refreshpage','alpha'))
- {
- $htmlheadercontent = @file_get_contents($filehtmlheader);
- // Clean the php htmlheader file to remove php code and get only html part
- $htmlheadercontent = preg_replace('/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims', '', $htmlheadercontent);
- }
- else
- {
- $htmlheadercontent = GETPOST('WEBSITE_HTML_HEADER');
- }
- if (! trim($htmlheadercontent))
- {
- $htmlheadercontent ="<html>\n";
- $htmlheadercontent.=$htmlheadercontentdefault;
- $htmlheadercontent.="</html>";
- }
- else
- {
- $htmlheadercontent = preg_replace('/^\s*<html>/ims', '', $htmlheadercontent);
- $htmlheadercontent = preg_replace('/<\/html>\s*$/ims', '', $htmlheadercontent);
- $htmlheadercontent='<html>'."\n".trim($htmlheadercontent)."\n".'</html>';
- }
- if (GETPOST('editcss','alpha') || GETPOST('refreshpage','alpha'))
- {
- $robotcontent = @file_get_contents($filerobot);
- // Clean the php htmlheader file to remove php code and get only html part
- $robotcontent = preg_replace('/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims', '', $robotcontent);
- }
- else
- {
- $robotcontent = GETPOST('WEBSITE_ROBOT');
- }
- if (! trim($robotcontent))
- {
- $robotcontent.="# Robot file. Generated with ".DOL_APPLICATION_TITLE."\n";
- $robotcontent.="User-agent: *\n";
- $robotcontent.="Allow: /public/\n";
- $robotcontent.="Disallow: /administrator/\n";
- }
- if (GETPOST('editcss','alpha') || GETPOST('refreshpage','alpha'))
- {
- $htaccesscontent = @file_get_contents($filehtaccess);
- // Clean the php htaccesscontent file to remove php code and get only html part
- $htaccesscontent = preg_replace('/<\?php \/\/ BEGIN PHP[^\?]*END PHP \?>\n*/ims', '', $htaccesscontent);
- }
- else
- {
- $htaccesscontent = GETPOST('WEBSITE_HTACCESS');
- }
- if (! trim($htaccesscontent))
- {
- $htaccesscontent.="# Order allow,deny\n";
- $htaccesscontent.="# Deny from all\n";
- }
- //else $htaccesscontent='<html>'."\n".$htaccesscontent."\n".'</html>';*/
- dol_fiche_head();
- print '<!-- Edit CSS -->'."\n";
- print '<table class="border" width="100%">';
- // Website
- print '<tr><td class="titlefieldcreate">';
- print $langs->trans('WebSite');
- print '</td><td>';
- print $websitekey;
- print '</td></tr>';
- // CSS file
- print '<tr><td class="tdtop">';
- print $langs->trans('WEBSITE_CSS_INLINE');
- print '</td><td>';
- $doleditor=new DolEditor('WEBSITE_CSS_INLINE', $csscontent, '', '220', 'ace', 'In', true, false, 'ace', 0, '100%', '');
- print $doleditor->Create(1, '', true, 'CSS', 'css');
- print '</td></tr>';
- // JS file
- print '<tr><td class="tdtop">';
- print $langs->trans('WEBSITE_JS_INLINE');
- print '</td><td>';
- $doleditor=new DolEditor('WEBSITE_JS_INLINE', $jscontent, '', '220', 'ace', 'In', true, false, 'ace', 0, '100%', '');
- print $doleditor->Create(1, '', true, 'JS', 'javascript');
- print '</td></tr>';
- // Common HTML header
- print '<tr><td class="tdtop">';
- $htmlhelp=$langs->trans("Example").' :<br>';
- $htmlhelp.=dol_htmlentitiesbr($htmlheadercontentdefault);
- print $form->textwithpicto($langs->trans('WEBSITE_HTML_HEADER'), $htmlhelp, 1, 'help', '', 0, 2, 'htmlheadertooltip');
- print '</td><td>';
- $doleditor=new DolEditor('WEBSITE_HTML_HEADER', $htmlheadercontent, '', '220', 'ace', 'In', true, false, 'ace', 0, '100%', '');
- print $doleditor->Create(1, '', true, 'HTML Header', 'html');
- 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', 'text');
- 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', 'text');
- print '</td></tr>';
- print '</table>';
- dol_fiche_end();
- print '</div>';
- print '<br>';
- }
- if ($action == 'createsite')
- {
- print '<div class="fiche">';
- print '<br>';
- /*$h = 0;
- $head = array();
- $head[$h][0] = dol_buildpath('/website/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 == 'createcontainer') 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>';
- $htmltext = $langs->trans("SetHereVirtualHost", DOL_DATA_ROOT.'/website/<i>websiteref</i>');
- $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($langs->trans('Virtualhost'), $htmltext, 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="addcontainer" 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>';
- }
- if ($action == 'importsite')
- {
- print '<div class="fiche">';
- print '<br>';
- print_fiche_titre($langs->trans("ImportSite"));
- dol_fiche_head(array(), '0', '', -1);
- print $langs->trans("ZipOfWebsitePackageToImport").'<br><br>';
- print '<input class="flat minwidth400" type="file" name="userfile[]" accept=".zip">';
- print '<input type="submit" class="button" name="buttonsubmitimportfile" value="'.dol_escape_htmltag($langs->trans("Upload")).'">';
- dol_fiche_end();
- print '</div>';
- print '<br>';
- }
- if ($action == 'editmeta' || $action == 'createcontainer')
- {
- print '<div class="fiche">';
- print '<br>';
- /*$h = 0;
- $head = array();
- $head[$h][0] = dol_buildpath('/website/index.php',1).'?id='.$object->id;
- $head[$h][1] = $langs->trans("AddPage");
- $head[$h][2] = 'card';
- $h++;
- dol_fiche_head($head, 'card', $langs->trans("AddPage"), -1, 'globe');
- */
- if ($action == 'createcontainer') print_fiche_titre($langs->trans("AddPage"));
- print '<!-- Edit or create page/container -->'."\n";
- //print '<div class="fichecenter">';
- if ($action == 'createcontainer')
- {
- print '<br>';
- print ' * '.$langs->trans("CreateByFetchingExternalPage").'<br><hr>';
- print '<table class="border" width="100%">';
- print '<tr><td class="titlefield">';
- print $langs->trans("URL");
- print '</td><td>';
- print '<input class="flat minwidth300" type="text" name="externalurl" value="'.dol_escape_htmltag(GETPOST('externalurl','alpha')).'" placeholder="https://externalsite/pagetofetch"> ';
- print '<input class="flat paddingtop" type="checkbox" name="grabimages" value="1" checked="checked"> '.$langs->trans("GrabImagesInto");
- print ' ';
- print $langs->trans("ImagesShouldBeSavedInto").' ';
- $arraygrabimagesinto=array('root'=>$langs->trans("WebsiteRootOfImages"), 'subpage'=>$langs->trans("SubdirOfPage"));
- print $form->selectarray('grabimagesinto', $arraygrabimagesinto, GETPOSTISSET('grabimagesinto')?GETPOST('grabimagesinto'):'root');
- print '<br>';
- print '<input class="button" style="margin-top: 5px" type="submit" name="fetchexternalurl" value="'.dol_escape_htmltag($langs->trans("FetchAndCreate")).'">';
- print '<br>'.info_admin($langs->trans("OnlyEditionOfSourceForGrabbedContentFuture"), 0, 0, '1');
- print '</td></tr>';
- print '</table>';
- print '<br>';
- print ' * '.$langs->trans("OrEnterPageInfoManually").'<br><hr>';
- }
- print '<table class="border" width="100%">';
- if ($action != 'createcontainer')
- {
- print '<tr><td class="titlefield">';
- print $langs->trans('IDOfPage');
- print '</td><td>';
- print $pageid;
- print '</td></tr>';
- print '<tr><td class="titlefield">';
- print $langs->trans('WEBSITE_PAGEURL');
- print '</td><td>';
- print '/public/website/index.php?website='.urlencode($websitekey).'&pageid='.urlencode($pageid);
- print '</td></tr>';
- /*
- print '<tr><td class="titlefield">';
- print $langs->trans('InitiallyGrabbedFrom');
- print '</td><td>';
- print $objectpage->grabbed_from;
- print '</td></tr>';
- */
- $type_container=$objectpage->type_container;
- $pageurl=$objectpage->pageurl;
- $pagealiasalt=$objectpage->aliasalt;
- $pagetitle=$objectpage->title;
- $pagedescription=$objectpage->description;
- $pagekeywords=$objectpage->keywords;
- $pagelang=$objectpage->lang;
- $pagehtmlheader=$objectpage->htmlheader;
- }
- else
- {
- $type_container = 'page';
- }
- if (GETPOST('WEBSITE_TITLE','alpha')) $pagetitle=GETPOST('WEBSITE_TITLE','alpha');
- if (GETPOST('WEBSITE_PAGENAME','alpha')) $pageurl=GETPOST('WEBSITE_PAGENAME','alpha');
- if (GETPOST('WEBSITE_ALIASALT','alpha')) $pagealiasalt=GETPOST('WEBSITE_ALIASALT','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');
- // Title
- print '<tr><td class="fieldrequired">';
- print $langs->trans('WEBSITE_TITLE');
- print '</td><td>';
- print '<input type="text" class="flat quatrevingtpercent" name="WEBSITE_TITLE" id="WEBSITE_TITLE" value="'.dol_escape_htmltag($pagetitle).'">';
- print '</td></tr>';
- // Alias
- print '<tr><td class="titlefieldcreate fieldrequired">';
- print $langs->trans('WEBSITE_PAGENAME');
- print '</td><td>';
- print '<input type="text" class="flat minwidth300" name="WEBSITE_PAGENAME" id="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','alpha')?GETPOST('WEBSITE_TYPE_CONTAINER','alpha'):$type_container));
- 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','alpha')?GETPOST('sample','alpha'):'corporatehomepage'));
- print '</td></tr>';
- }
- print '<tr><td>';
- print $langs->trans('WEBSITE_DESCRIPTION');
- print '</td><td>';
- print '<input type="text" class="flat quatrevingtpercent" name="WEBSITE_DESCRIPTION" value="'.dol_escape_htmltag($pagedescription).'">';
- print '</td></tr>';
- print '<tr><td>';
- print $langs->trans('WEBSITE_KEYWORDS');
- print '</td><td>';
- print '<input type="text" class="flat quatrevingtpercent" name="WEBSITE_KEYWORDS" value="'.dol_escape_htmltag($pagekeywords).'">';
- print '</td></tr>';
- print '<tr><td>';
- print $langs->trans('Language');
- print '</td><td>';
- print $formadmin->select_language($pagelang?$pagelang:$langs->defaultlang, 'WEBSITE_LANG', 0, null, '1');
- print '</td></tr>';
- print '<tr><td class="titlefieldcreate">';
- $htmlhelp=$langs->trans("WEBSITE_ALIASALTDesc");
- print $form->textwithpicto($langs->trans('WEBSITE_ALIASALT'), $htmlhelp, 1, 'help', '', 0, 2, 'htmlheadertooltip');
- 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>';
- $htmlhelp=$langs->trans("Example").' :<br>';
- $htmlhelp.=dol_htmlentitiesbr($htmlheadercontentdefault);
- print $form->textwithpicto($langs->trans('HtmlHeaderPage'), $htmlhelp, 1, 'help', '', 0, 2, 'htmlheadertooltip');
- print '</td><td>';
- $doleditor=new DolEditor('htmlheader', $pagehtmlheader, '', '180', 'ace', 'In', true, false, 'ace', 0, '100%', '');
- print $doleditor->Create(1, '', true, 'HTML Header', 'html');
- print '</td></tr>';
- print '</table>';
- if ($action == 'createcontainer')
- {
- print '<div class="center">';
- print '<input class="button" type="submit" name="addcontainer" value="'.$langs->trans("Create").'">';
- print '<input class="button" type="submit" name="preview" value="'.$langs->trans("Cancel").'">';
- print '</div>';
- }
- if ($action == 'createcontainer')
- {
- print '<script type="text/javascript" language="javascript">
- jQuery(document).ready(function() {
- var disableautofillofalias = 0;
- jQuery("#WEBSITE_TITLE").keyup(function() {
- if (disableautofillofalias == 0)
- {
- var valnospecial = jQuery("#WEBSITE_TITLE").val().replace(/[^\w]/gi, \'-\').toLowerCase();
- valnospecial = valnospecial.replace(/\-+/g, \'-\').replace(/\-$/, \'\');
- console.log("disableautofillofalias=0 so we replace WEBSITE_TITLE with "+valnospecial);
- jQuery("#WEBSITE_PAGENAME").val(valnospecial);
- }
- });
- jQuery("#WEBSITE_PAGENAME").keyup(function() {
- disableautofillofalias = 1;
- });
- });
- </script>';
- }
- //print '</div>';
- //dol_fiche_end();
- print '</div>';
- print '<br>';
- }
- if ($action == 'editfile' || $action == 'file_manager')
- {
- print '<!-- Edit Media -->'."\n";
- print '<div class="fiche"><br><br>';
- //print '<div class="center">'.$langs->trans("FeatureNotYetAvailable").'</center>';
- $module = 'medias';
- if (empty($url)) $url=DOL_URL_ROOT.'/website/index.php'; // Must be an url without param
- include DOL_DOCUMENT_ROOT.'/core/tpl/filemanager.tpl.php';
- print '</div>';
- }
- if ($action == 'editmenu')
- {
- print '<!-- Edit Menu -->'."\n";
- print '<div class="center">'.$langs->trans("FeatureNotYetAvailable").'</center>';
- }
- if ($action == 'editsource')
- {
- /*
- * Editing with source editor
- */
- $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';
- $doleditor=new DolEditor('PAGE_CONTENT',$contentforedit,'',500,'Full','',true,true,'ace',ROWS_5,'90%');
- $doleditor->Create(0, '', false, 'HTML Source', 'php');
- }
- if ($action == 'editcontent')
- {
- /*
- * Editing with default ckeditor
- */
- $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;
- $contentforedit = preg_replace('/(<img.*src=")(?!http)/', '\1'.DOL_URL_ROOT.'/viewimage.php?modulepart=medias&file=', $contentforedit, -1, $nbrep);
- require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
- $doleditor=new DolEditor('PAGE_CONTENT',$contentforedit,'',500,'Full','',true,true,true,ROWS_5,'90%');
- $doleditor->Create(0, '', false);
- }
- print "</div>\n</form>\n";
- if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')
- {
- if ($pageid > 0)
- {
- // $filejs
- // $filecss
- // $filephp
- // Ouput page under the Dolibarr top menu
- $objectpage->fetch($pageid);
- $jscontent = @file_get_contents($filejs);
- $out = '<!-- Page content '.$filetpl.' : Div with (CSS Of website from file + Style/htmlheader of page from database + Page content from database) -->'."\n";
- // Include a html so we can benefit of the header of page.
- // Note: We can't use iframe as it can be used to include another external html file
- // Note: We can't use frame as it is deprecated.
- $out.="\n<html><head>\n";
- $out.=dolWebsiteReplacementOfLinks($object, $objectpage->htmlheader, 1);
- $out.="</head>\n";
- $out.="\n<body>";
- $out.='<div id="websitecontentundertopmenu" class="websitecontentundertopmenu">'."\n";
- // REPLACEMENT OF LINKS When page called by website editor
- $out.='<style scoped>'."\n"; // "scoped" means "apply to parent element only". No more supported by browsers, snif !
- $tmpout='';
- $tmpout.= '/* Include website CSS file */'."\n";
- //$csscontent = @file_get_contents($filecss);
- ob_start();
- include $filecss;
- $csscontent = ob_get_contents();
- ob_end_clean();
- $tmpout.= dolWebsiteReplacementOfLinks($object, $csscontent, 1);
- $tmpout.= '/* Include style from the HTML header of page */'."\n";
- // Clean the html header of page to get only <style> content
- $tmp = preg_split('(<style[^>]*>|</style>)', $objectpage->htmlheader);
- $tmpstyleinheader ='';
- $i=0;
- foreach($tmp as $valtmp)
- {
- $i++;
- if ($i % 2 == 0) $tmpstyleinheader.=$valtmp."\n";
- }
- $tmpout.= $tmpstyleinheader."\n";
- // Clean style that may affect global style of Dolibarr
- $tmpout=preg_replace('/}[\s\n]*body\s*{[^}]+}/ims','}',$tmpout);
- $out.=$tmpout;
- $out.='</style>'."\n";
- // Note: <div> or <section> with contenteditable="true" inside this can be edited with inline ckeditor
- // Do not enable the contenteditable when page was grabbed, ckeditor is removing span and adding borders,
- // so editable will be available only from container created from scratch
- //$out.='<div id="bodywebsite" class="bodywebsite"'.($objectpage->grabbed_from ? ' contenteditable="true"' : '').'>'."\n";
- $out.='<div id="bodywebsite" class="bodywebsite">'."\n";
- // TODO Add the contenteditable="true" when mode Edit Inline is on
- $newcontent = $objectpage->content;
- if (empty($conf->global->WEBSITE_EDITINLINE))
- {
- $newcontent = preg_replace('/(div|section)(\s[^\>]*)contenteditable="true"/', '\1\2', $newcontent);
- }
- else
- {
- }
- /*
- $filephp = $objectpage->
- ob_start();
- include $filephp;
- $newcontent = ob_get_contents();
- ob_end_clean();
- */
- $out.=dolWebsiteReplacementOfLinks($object, $newcontent)."\n";
- $out.='</div>';
- $out.='</div> <!-- End div id=websitecontentundertopmenu -->';
- /*if ($includepageintoaframeoradiv == 'iframe')
- {
- $out .= "</body></html></iframe>";
- }*/
- $out .= "\n</body></html>\n";
- $out.= "\n".'<!-- End page content '.$filetpl.' -->'."\n\n";
- // For jqueryscoped (does not work as expected)
- //$out.="<script>$.scoped();</script>";
- print $out;
- /*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
- // 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;
- }
- //include_once $original_file_osencoded;
- */
- /*print '<iframe class="websiteiframenoborder centpercent" src="'.DOL_URL_ROOT.'/public/website/index.php?website='.$websitekey.'&pageid='.$pageid.'"/>';
- print '</iframe>';*/
- }
- else
- {
- print '<br><br><div class="center">'.$langs->trans("PreviewOfSiteNotYetAvailable", $object->ref).'</center><br><br><br>';
- print '<div class="center"><div class="logo_setup"></div></div>';
- }
- }
- // End of page
- llxFooter();
- $db->close();
|