Documentation TYPO3 par Ameos

index.php

00001 <?php
00002 /***************************************************************
00003 *  Copyright notice
00004 *
00005 *  (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
00006 *  All rights reserved
00007 *
00008 *  This script is part of the TYPO3 project. The TYPO3 project is
00009 *  free software; you can redistribute it and/or modify
00010 *  it under the terms of the GNU General Public License as published by
00011 *  the Free Software Foundation; either version 2 of the License, or
00012 *  (at your option) any later version.
00013 *
00014 *  The GNU General Public License can be found at
00015 *  http://www.gnu.org/copyleft/gpl.html.
00016 *  A copy is found in the textfile GPL.txt and important notices to the license
00017 *  from the author is found in LICENSE.txt distributed with these scripts.
00018 *
00019 *
00020 *  This script is distributed in the hope that it will be useful,
00021 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023 *  GNU General Public License for more details.
00024 *
00025 *  This copyright notice MUST APPEAR in all copies of the script!
00026 ***************************************************************/
00039 unset($MCONF);
00040 require ("conf.php");
00041 require ($BACK_PATH."init.php");
00042 require ($BACK_PATH."template.php");
00043 require_once (PATH_t3lib."class.t3lib_page.php");
00044 require_once (PATH_t3lib."class.t3lib_tstemplate.php");
00045 require_once (PATH_t3lib."class.t3lib_tsparser_ext.php");
00046 
00047 require_once (PATH_t3lib."class.t3lib_scbase.php");
00048 
00049 $BE_USER->modAccess($MCONF,1);
00050 
00051 
00052 // ***************************
00053 // Script Classes
00054 // ***************************
00055 class SC_mod_web_ts_index extends t3lib_SCbase {
00056         var $perms_clause;
00057         var $e;
00058         var $sObj;
00059         var $edit;
00060         var $textExtensions = 'html,htm,txt,css,tmpl,inc,js';
00061 
00062         var $modMenu_type = "";
00063         var $modMenu_dontValidateList = "ts_browser_toplevel_setup,ts_browser_toplevel_const,ts_browser_TLKeys_setup,ts_browser_TLKeys_const";
00064         var $modMenu_setDefaultList = "ts_browser_linkObjects,ts_browser_fixedLgd";
00065 
00066         function init() {
00067                 global $BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$CLIENT,$TYPO3_CONF_VARS;
00068 
00069                 parent::init();
00070 
00071                 $this->id = intval(t3lib_div::_GP("id"));
00072                 $this->e = t3lib_div::_GP("e");
00073                 $this->sObj = t3lib_div::_GP("sObj");
00074                 $this->edit = t3lib_div::_GP("edit");
00075 
00076                 $this->perms_clause = $BE_USER->getPagePermsClause(1);
00077 
00078                 if (t3lib_div::_GP("clear_all_cache"))  {
00079                         $this->include_once[]=PATH_t3lib."class.t3lib_tcemain.php";
00080                 }
00081         }
00082         function clearCache()   {
00083                 if (t3lib_div::_GP("clear_all_cache"))  {
00084                         $tce = t3lib_div::makeInstance("t3lib_TCEmain");
00085                         $tce->stripslashes_values=0;
00086                         $tce->start(Array(),Array());
00087                         $tce->clear_cacheCmd("all");
00088                 }
00089         }
00090         function main() {
00091                 global $BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$CLIENT,$TYPO3_CONF_VARS;
00092 
00093                 // Access check...
00094                 // The page will show only if there is a valid page and if this page may be viewed by the user
00095                 $pageinfo = t3lib_BEfunc::readPageAccess($this->id,$this->perms_clause);
00096                 $access = is_array($pageinfo) ? 1 : 0;
00097 
00098                 if ($this->id && $access)       {
00099                         $this->doc = t3lib_div::makeInstance("template");
00100                         $this->doc->backPath = $BACK_PATH;
00101 
00102 
00103                                 // JavaScript
00104                         $this->doc->JScode = '
00105                 <script language="javascript" type="text/javascript">
00106                         script_ended = 0;
00107                         function jumpToUrl(URL) {
00108                                 window.location.href = URL;
00109                         }
00110                         function uFormUrl(aname)        {
00111                                 document.forms[0].action = "index.php?id='.$this->id.'#"+aname;
00112                         }
00113                         function brPoint(lnumber,t)     {
00114                                 window.location.href = "index.php?id='.$this->id.'&SET[function]=tx_tstemplateobjbrowser&SET[ts_browser_type]="+(t?"setup":"const")+"&breakPointLN="+lnumber;
00115                                 return false;
00116                         }
00117                 </script>
00118                 ';
00119 
00120                         $this->doc->postCode='
00121                 <script language="javascript" type="text/javascript">
00122                         script_ended = 1;
00123                         if (top.fsMod) top.fsMod.recentIds["web"] = '.intval($this->id).';
00124                 </script>
00125                 ';
00126 
00127                         $this->doc->inDocStylesArray[] = '
00128                                 TABLE#typo3-objectBrowser A { text-decoration: none; }
00129                         ';
00130 
00131 
00132                                 // Setting up the context sensitive menu:
00133                         $CMparts=$this->doc->getContextMenuCode();
00134                         $this->doc->bodyTagAdditions = $CMparts[1];
00135                         $this->doc->JScode.=$CMparts[0];
00136                         $this->doc->postCode.= $CMparts[2];
00137 
00138 
00139                         $headerSection = $this->doc->getHeader("pages",$pageinfo,$pageinfo["_thePath"]).'<br>'.
00140                                 $LANG->sL("LLL:EXT:lang/locallang_core.php:labels.path").': '.
00141                                 '<span title="'.htmlspecialchars($pageinfo['_thePathFull']).'">'.htmlspecialchars(t3lib_div::fixed_lgd_cs($pageinfo['_thePath'],-50)).'</span>';
00142 
00143                                 // Draw the header.
00144                         $this->doc->form='<form action="index.php?id='.$this->id.'" method="post" enctype="'.$GLOBALS["TYPO3_CONF_VARS"]["SYS"]["form_enctype"].'" name="editForm">';
00145                         $this->content.=$this->doc->startPage("Template Tools");
00146                         $this->content.=$this->doc->header("Template Tools");
00147                         $this->content.=$this->doc->spacer(5);
00148                         $this->content.=$this->doc->section('',$this->doc->funcMenu($headerSection,t3lib_BEfunc::getFuncMenu($this->id,"SET[function]",$this->MOD_SETTINGS["function"],$this->MOD_MENU["function"])));
00149 
00150 
00151                         $this->extObjContent();
00152 
00153 
00154 
00155                         // ShortCut
00156                         if ($BE_USER->mayMakeShortcut())        {
00157                                 $this->content.=$this->doc->spacer(20).$this->doc->section('',$this->doc->makeShortcutIcon("id,e,sObj,template","function,ts_browser_type,constant_editor_cat",$this->MCONF["name"]));
00158                         }
00159                         $this->content.=$this->doc->spacer(10);
00160                 } else {
00161                                 // If no access or if ID == zero
00162 
00163                         $this->doc = t3lib_div::makeInstance("mediumDoc");
00164                         $this->doc->backPath = $BACK_PATH;
00165 
00166                         $this->content.=$this->doc->startPage("Template Tools");
00167                         $this->content.=$this->doc->header("Template Tools");
00168                         $this->content.=$this->doc->spacer(5);
00169 
00170 
00171                                 // Template pages:
00172                         $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
00173                                                 'pages.uid, count(*) AS count, max(sys_template.root) AS root_max_val, min(sys_template.root) AS root_min_val',
00174                                                 'pages,sys_template',
00175                                                 'pages.uid=sys_template.pid'.
00176                                                         t3lib_BEfunc::deleteClause('pages').
00177                                                         t3lib_BEfunc::versioningPlaceholderClause('pages').
00178                                                         t3lib_BEfunc::deleteClause('sys_template').
00179                                                         t3lib_BEfunc::versioningPlaceholderClause('sys_template'),
00180                                                 'pages.uid'
00181                                         );
00182                         $templateArray = array();
00183                         $pArray = array();
00184                         while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
00185                                 $this->setInPageArray(
00186                                         $pArray,
00187                                         t3lib_BEfunc::BEgetRootLine ($row["uid"],"AND 1=1"),
00188                                         $row
00189                                 );
00190                         }
00191 
00192                         $lines = array();
00193                         $lines[] = '<tr class="bgColor5">
00194                                 <td nowrap><strong>Page name</strong></td>
00195                                 <td nowrap><strong># Templates</strong></td>
00196                                 <td nowrap><strong>Is Root?</strong></td>
00197                                 <td nowrap><strong>Is Ext?</strong></td>
00198                                 </tr>';
00199                         $lines = array_merge($lines,$this->renderList($pArray));
00200 
00201                         $table = '<table border=0 cellpadding=0 cellspacing=1>'.implode("",$lines).'</table>';
00202                         $this->content.= $this->doc->section("",'
00203                         <BR>
00204                         This is an overview of the pages in the database containing one or more template records. Click a page title to go to the page.
00205                         <BR><BR>
00206                         '.$table);
00207                 //      debug($pArray);
00208                         // ********************************************
00209                         // RENDER LIST of pages with templates, END
00210                         // ********************************************
00211 
00212 
00213 
00214                         // ShortCut
00215                         if ($BE_USER->mayMakeShortcut())        {
00216                                 $this->content.=$this->doc->spacer(20).$this->doc->section('',$this->doc->makeShortcutIcon("id","",$this->MCONF["name"]));
00217                         }
00218 
00219                         $this->content.=$this->doc->spacer(10);
00220                 }
00221         }
00222         function printContent() {
00223 
00224                 $this->content.=$this->doc->endPage();
00225                 echo $this->content;
00226         }
00227 
00228         // ***************************
00229         // OTHER FUNCTIONS:
00230         // ***************************
00231         function getCountCacheTables($humanReadable)    {
00232                 $out=array();
00233 
00234                 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'cache_pages', '');
00235                 list($out["cache_pages"]) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00236 
00237                 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'cache_pagesection', '');
00238                 list($out["cache_pagesection"]) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00239 
00240                 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'cache_hash', '');
00241                 list($out["cache_hash"]) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
00242 
00243                 if ($humanReadable)     {
00244                         $newOut=array();
00245                         reset($out);
00246                         while(list($k,$v)=each($out))   {
00247                                 $newOut[]=$k.":".$v;
00248                         }
00249                         $out=implode($newOut,", ");
00250                 }
00251                 return $out;
00252         }
00253 
00254         function linkWrapTemplateTitle($title,$onlyKey="")      {
00255                 if ($onlyKey)   {
00256                         $title = '<a href="index.php?id='.$GLOBALS["SOBE"]->id.'&e['.$onlyKey.']=1&SET[function]=tx_tstemplateinfo">'.htmlspecialchars($title).'</a>';
00257                 } else {
00258                         $title = '<a href="index.php?id='.$GLOBALS["SOBE"]->id.'&e[constants]=1&e[config]=1&SET[function]=tx_tstemplateinfo">'.htmlspecialchars($title).'</a>';
00259                 }
00260                 return $title;
00261         }
00262         function noTemplate($newStandardTemplate=0)     {
00263                 global $SOBE;
00264 
00265                 $tmpl = t3lib_div::makeInstance("t3lib_tsparser_ext");  // Defined global here!
00266                 $tmpl->tt_track = 0;    // Do not log time-performance information
00267                 $tmpl->init();
00268 
00269                 $confirm = ' onClick="return confirm(\'Are you sure you want to do this?\');"';
00270 
00271                         // No template
00272                 $theOutput.=$this->doc->spacer(10);
00273                 $theOutput.=$this->doc->section('<span class="typo3-red">No template</span>',"There was no template on this page!<BR>Create a template record first in order to edit constants!",0,0,0,1);
00274                         // New standard?
00275                 if ($newStandardTemplate)       {
00276                         $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('title,uid', 'static_template', '', '', 'title');
00277                         $opt = "";
00278                         while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
00279                                 if (substr(trim($row["title"]),0,8)=="template")        {
00280                                         $opt.='<option value="'.$row["uid"].'">'.htmlspecialchars($row["title"]).'</option>';
00281                                 }
00282                         }
00283                         $selector = '<select name="createStandard"><option></option>'.$opt.'</select>';
00284                                 // Extension?
00285                         $theOutput.=$this->doc->spacer(10);
00286                         $theOutput.=$this->doc->section("Create new website",'If you want this page to be the root of a new website, optionally based on one of the standard templates, then press the button below:<BR>
00287                         <BR>
00288                         '.$selector.'<BR>
00289                         <img src="'.$GLOBALS["BACK_PATH"].'gfx/icon_warning.gif" width=18 height=16 hspace=5 align=top><input type="Submit" name="newWebsite" value="Create template for a new site"'.$confirm.'>',0,1);
00290                 }
00291                         // Extension?
00292                 $theOutput.=$this->doc->spacer(10);
00293                 $theOutput.=$this->doc->section("Create extension template",'An extension template allows you to enter TypoScript values that will affect only this page and subpages.<BR><BR><img src="'.$GLOBALS["BACK_PATH"].'gfx/icon_warning.gif" width=18 height=16 hspace=5 align=top><input type="submit" name="createExtension" value="Click here to create an extension template."'.$confirm.'>',0,1);
00294 
00295                         // Go to first appearing...
00296                 $first = $tmpl->ext_prevPageWithTemplate($this->id,$this->perms_clause);
00297                 if ($first)     {
00298                         $theOutput.=$this->doc->spacer(10);
00299                         $theOutput.=$this->doc->section("Go to closest page with template",sprintf("Closest template is on page '%s' (uid %s).<BR><BR>%s<strong>Click here to go.</strong>%s",$first["title"],$first["uid"],'<a href="index.php?id='.$first["uid"].'">','</a>'),0,1);
00300                 }
00301                 return $theOutput;
00302         }
00303         function templateMenu() {
00304                 $tmpl = t3lib_div::makeInstance("t3lib_tsparser_ext");  // Defined global here!
00305                 $tmpl->tt_track = 0;    // Do not log time-performance information
00306                 $tmpl->init();
00307                 $all = $tmpl->ext_getAllTemplates($this->id,$this->perms_clause);
00308                 $menu='';
00309                 if (count($all)>1)      {
00310                         $this->MOD_MENU['templatesOnPage']=array();
00311                         foreach($all as $d)     {
00312                                 $this->MOD_MENU['templatesOnPage'][$d['uid']] = $d['title'];
00313                         }
00314                 }
00315 
00316                 $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, t3lib_div::_GP('SET'), $this->MCONF['name']);
00317                 $menu = t3lib_BEfunc::getFuncMenu($this->id,'SET[templatesOnPage]',$this->MOD_SETTINGS['templatesOnPage'],$this->MOD_MENU['templatesOnPage']);
00318 
00319                 return $menu;
00320         }
00321         function createTemplate($id)    {
00322                 if (t3lib_div::_GP("createExtension"))  {
00323                         require_once (PATH_t3lib."class.t3lib_tcemain.php");
00324                         $tce = t3lib_div::makeInstance("t3lib_TCEmain");
00325                         $tce->stripslashes_values=0;
00326                         $recData=array();
00327                         $recData["sys_template"]["NEW"] = array(
00328                                 "pid" => $id,
00329                                 "title" => "+ext",
00330                                 "sorting" => time()
00331                         );
00332                         $tce->start($recData,Array());
00333                         $tce->process_datamap();
00334                 } elseif (t3lib_div::_GP("newWebsite")) {
00335                         require_once (PATH_t3lib."class.t3lib_tcemain.php");
00336                         $tce = t3lib_div::makeInstance("t3lib_TCEmain");
00337                         $tce->stripslashes_values=0;
00338                         $recData=array();
00339                         if (intval(t3lib_div::_GP("createStandard")))   {
00340                                 $staticT = intval(t3lib_div::_GP("createStandard"));
00341                                 $recData["sys_template"]["NEW"] = array(
00342                                         "pid" => $id,
00343                                         "title" => "NEW SITE, based on standard",
00344                                         "sorting" => 0,
00345                                         "root" => 1,
00346                                         "clear" => 3,
00347                                         "include_static" => $staticT.",57"      // 57 is cSet
00348                                 );
00349                         } else {
00350                                 $recData["sys_template"]["NEW"] = array(
00351                                         "pid" => $id,
00352                                         "title" => "NEW SITE",
00353                                         "sorting" => 0,
00354                                         "root" => 1,
00355                                         "clear" => 3,
00356                                         "config" => '
00357 # Default PAGE object:
00358 page = PAGE
00359 page.10 = TEXT
00360 page.10.value = HELLO WORLD!
00361 '
00362                                 );
00363                         }
00364                         $tce->start($recData,Array());
00365                         $tce->process_datamap();
00366                         $tce->clear_cacheCmd("all");
00367                 }
00368         }
00369         // ********************************************
00370         // RENDER LIST of pages with templates, BEGIN
00371         // ********************************************
00372         function setInPageArray(&$pArray,$rlArr,$row)   {
00373                 ksort($rlArr);
00374                 reset($rlArr);
00375                 if (!$rlArr[0]["uid"])          array_shift($rlArr);
00376 
00377                 $cEl = current($rlArr);
00378                 $pArray[$cEl["uid"]]=$cEl["title"];
00379                 array_shift($rlArr);
00380                 if (count($rlArr))      {
00381                         if (!isset($pArray[$cEl["uid"]."."]))   $pArray[$cEl["uid"]."."]=array();
00382                         $this->setInPageArray($pArray[$cEl["uid"]."."],$rlArr,$row);
00383                 } else {
00384                         $pArray[$cEl["uid"]."_"]=$row;
00385                 }
00386         }
00387         function renderList($pArray,$lines=array(),$c=0)        {
00388                 if (is_array($pArray))  {
00389                         reset($pArray);
00390                         while(list($k,$v)=each($pArray))        {
00391                                 if (t3lib_div::testInt($k))     {
00392                                         if (isset($pArray[$k."_"]))     {
00393                                                 $lines[]='<tr class="bgColor4">
00394                                                         <td nowrap><img src=clear.gif width=1 height=1 hspace='.($c*10).' align=top>'.
00395                                                         '<a href="'.t3lib_div::linkThisScript(array("id"=>$k)).'">'.
00396                                                         t3lib_iconWorks::getIconImage("pages",t3lib_BEfunc::getRecordWSOL("pages",$k),$GLOBALS["BACK_PATH"],' align="top" title="ID: '.$k.'"').
00397                                                         t3lib_div::fixed_lgd_cs($pArray[$k],30).'</a></td>
00398                                                         <td align=center>'.$pArray[$k."_"]["count"].'</td>
00399                                                         <td align=center>'.($pArray[$k."_"]["root_max_val"]>0?"x":"&nbsp;").'</td>
00400                                                         <td align=center>'.($pArray[$k."_"]["root_min_val"]==0?"x":"&nbsp;").'</td>
00401                                                         </tr>';
00402                                         } else {
00403                                                 $lines[]='<tr>
00404                                                         <td nowrap colspan=3><img src=clear.gif width=1 height=1 hspace='.($c*10).' align=top>'.
00405                                                         t3lib_iconWorks::getIconImage("pages",t3lib_BEfunc::getRecordWSOL("pages",$k),$GLOBALS["BACK_PATH"]," align=top").
00406                                                         t3lib_div::fixed_lgd_cs($pArray[$k],30).'</td>
00407                                                         </tr>';
00408                                         }
00409                                         $lines=$this->renderList($pArray[$k."."],$lines,$c+1);
00410                                 }
00411                         }
00412                 }
00413                 return $lines;
00414         }
00415 }
00416 
00417 // Include extension?
00418 if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/tstemplate/ts/index.php"])     {
00419         include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/tstemplate/ts/index.php"]);
00420 }
00421 
00422 
00423 
00424 
00425 
00426 
00427 
00428 
00429 
00430 
00431 
00432 
00433 // Make instance:
00434 $SOBE = t3lib_div::makeInstance("SC_mod_web_ts_index");
00435 $SOBE->init();
00436 
00437 // Include files?
00438 foreach($SOBE->include_once as $INC_FILE)       include_once($INC_FILE);
00439 $SOBE->checkExtObj();   // Checking for first level external objects
00440 
00441 $SOBE->clearCache();
00442 $SOBE->main();
00443 $SOBE->printContent();
00444 ?>


Généré par L'expert TYPO3 avec  doxygen 1.4.6