00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00067 $BACK_PATH='';
00068 require('init.php');
00069 require('template.php');
00070 $LANG->includeLLFile('EXT:lang/locallang_misc.xml');
00071
00072
00073
00074
00075 require_once(PATH_t3lib.'class.t3lib_page.php');
00076 require_once(PATH_t3lib.'class.t3lib_positionmap.php');
00077 require_once(PATH_t3lib.'class.t3lib_pagetree.php');
00078
00079
00080
00081
00082
00090 class localPageTree extends t3lib_pageTree {
00091
00099 function wrapIcon($icon,$row) {
00100 return $this->addTagAttributes($icon,' title="id='.htmlspecialchars($row['uid']).'"');
00101 }
00102
00110 function expandNext($id) {
00111 return $id==$GLOBALS['SOBE']->id ? 1 : 0;
00112 }
00113 }
00114
00115
00116
00117
00118
00119
00120
00128 class SC_db_new {
00129 var $pageinfo;
00130 var $pidInfo;
00131 var $newPagesInto;
00132 var $newContentInto;
00133 var $newPagesAfter;
00134 var $web_list_modTSconfig;
00135 var $allowedNewTables;
00136 var $web_list_modTSconfig_pid;
00137 var $allowedNewTables_pid;
00138 var $code;
00139 var $R_URI;
00140
00141
00142 var $id;
00143 var $returnUrl;
00144 var $pagesOnly;
00145
00146
00147 var $perms_clause;
00148 var $doc;
00149 var $content;
00150
00151
00157 function init() {
00158 global $BE_USER,$LANG,$BACK_PATH;
00159
00160
00161 $this->perms_clause = $BE_USER->getPagePermsClause(1);
00162
00163
00164 if ($pidList = $GLOBALS['BE_USER']->getTSConfigVal('options.hideRecords.pages')) {
00165 if ($pidList = $GLOBALS['TYPO3_DB']->cleanIntList($pidList)) {
00166 $this->perms_clause .= ' AND pages.uid NOT IN ('.$pidList.')';
00167 }
00168 }
00169
00170 $this->id = intval(t3lib_div::_GP('id'));
00171 $this->returnUrl = t3lib_div::_GP('returnUrl');
00172 $this->pagesOnly = t3lib_div::_GP('pagesOnly');
00173
00174
00175 $this->doc = t3lib_div::makeInstance('mediumDoc');
00176 $this->doc->backPath = $BACK_PATH;
00177 $this->doc->docType= 'xhtml_trans';
00178 $this->doc->JScode='';
00179
00180
00181 $this->content='';
00182 $this->content.=$this->doc->startPage($LANG->sL('LLL:EXT:lang/locallang_core.php:db_new.php.pagetitle'));
00183 $this->content.=$this->doc->header($LANG->sL('LLL:EXT:lang/locallang_core.php:db_new.php.pagetitle'));
00184
00185
00186 if ($this->id > 0) {
00187 $this->pageinfo = t3lib_BEfunc::readPageAccess($this->id,$this->perms_clause);
00188 }
00189
00190
00191 if ($this->pageinfo['uid']) {
00192
00193
00194 $this->pidInfo=t3lib_BEfunc::getRecord('pages',$this->pageinfo['pid']);
00195
00196 if ($BE_USER->doesUserHaveAccess($this->pageinfo,8)) {
00197 $this->newPagesInto=1;
00198 }
00199 if ($BE_USER->doesUserHaveAccess($this->pageinfo,16)) {
00200 $this->newContentInto=1;
00201 }
00202
00203 if (($BE_USER->isAdmin()||is_array($this->pidInfo)) && $BE_USER->doesUserHaveAccess($this->pidInfo,8)) {
00204 $this->newPagesAfter=1;
00205 }
00206 } elseif ($BE_USER->isAdmin()) {
00207
00208 $this->newPagesInto=1;
00209 $this->newContentInto=1;
00210 $this->newPagesAfter=0;
00211 } else {
00212
00213 $this->newPagesInto=0;
00214 $this->newContentInto=0;
00215 $this->newPagesAfter=0;
00216 }
00217 }
00218
00224 function main() {
00225 global $BE_USER,$LANG;
00226
00227
00228 if ($this->pageinfo['uid'] || $BE_USER->isAdmin()) {
00229
00230 $this->web_list_modTSconfig = t3lib_BEfunc::getModTSconfig($this->pageinfo['uid'],'mod.web_list');
00231 $this->allowedNewTables = t3lib_div::trimExplode(',',$this->web_list_modTSconfig['properties']['allowedNewTables'],1);
00232
00233
00234 $this->web_list_modTSconfig_pid = t3lib_BEfunc::getModTSconfig($this->pageinfo['pid'],'mod.web_list');
00235 $this->allowedNewTables_pid = t3lib_div::trimExplode(',',$this->web_list_modTSconfig_pid['properties']['allowedNewTables'],1);
00236
00237
00238 if (!$this->showNewRecLink('pages')) {
00239 $this->newPagesInto=0;
00240 }
00241 if (!$this->showNewRecLink('pages',$this->allowedNewTables_pid)) {
00242 $this->newPagesAfter=0;
00243 }
00244
00245
00246
00247 $this->code = $this->doc->getHeader('pages',$this->pageinfo,$this->pageinfo['_thePath']).'<br />
00248 ';
00249 $this->R_URI = $this->returnUrl;
00250
00251
00252 if (!$this->pagesOnly) {
00253 $this->regularNew();
00254 } elseif ($this->showNewRecLink('pages')) {
00255 $this->pagesOnly();
00256 }
00257
00258
00259 if ($this->R_URI) {
00260 $this->code.='<br />
00261 <a href="'.htmlspecialchars($this->R_URI).'" class="typo3-goBack">'.
00262 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/goback.gif','width="14" height="14"').' alt="" />'.
00263 $LANG->getLL('goBack',1).
00264 '</a>';
00265 }
00266
00267 $this->content.=$this->doc->section('',$this->code);
00268 }
00269 }
00270
00276 function pagesOnly() {
00277 global $LANG;
00278
00279 $posMap = t3lib_div::makeInstance('t3lib_positionMap');
00280 $this->code.='
00281 <h3>'.htmlspecialchars($LANG->getLL('selectPosition')).':</h3>
00282 ';
00283 $this->code.= $posMap->positionTree($this->id,$this->pageinfo,$this->perms_clause,$this->R_URI);
00284
00285
00286 $this->code.= t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'new_pages', $GLOBALS['BACK_PATH'],'<br/>');
00287 }
00288
00294 function regularNew() {
00295 global $BE_USER,$LANG,$BACK_PATH,$TCA;
00296
00297 $doNotShowFullDescr = FALSE;
00298
00299
00300 $this->code.='<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/ol/halfline.gif','width="18" height="8"').' alt="" /><br />';
00301
00302
00303 $tRows = array();
00304
00305
00306 if ($this->newPagesInto
00307 && $this->isTableAllowedForThisPage($this->pageinfo, 'pages')
00308 && $BE_USER->check('tables_modify','pages')
00309 && $BE_USER->workspaceCreateNewRecord($this->pageinfo['_ORIG_uid']?$this->pageinfo['_ORIG_uid']:$this->id, 'pages')
00310 ) {
00311
00312
00313 $t = 'pages';
00314 $v = $TCA[$t];
00315 $rowContent = '<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/ol/join.gif','width="18" height="16"').' alt="" />'.
00316 $this->linkWrap(
00317 '<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/i/'.($v['ctrl']['iconfile'] ? $v['ctrl']['iconfile'] : $t.'.gif'),'width="18" height="16"').' alt="" />'.
00318 $LANG->sL($v['ctrl']['title'],1).' ('.$LANG->sL('LLL:EXT:lang/locallang_core.php:db_new.php.inside',1).')',
00319 $t,
00320 $this->id).'<br/>';
00321
00322
00323 $rowContent.= '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/ol/line.gif','width="18" height="16"').' alt="" /><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/ol/joinbottom.gif','width="18" height="16"').' alt="" />'.
00324 '<a href="'.htmlspecialchars(t3lib_div::linkThisScript(array('pagesOnly'=>1))).'">'.
00325 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/new_page.gif','width="13" height="12"').' alt="" /> '.
00326 htmlspecialchars($LANG->getLL('clickForWizard')).
00327 '</a>';
00328
00329 $rowContent.= '<br /><img'.t3lib_iconWorks::skinImg('','gfx/ol/halfline.gif','width="18" height="8"').' alt="" />';
00330
00331
00332 $tRows[]='
00333 <tr>
00334 <td nowrap="nowrap">'.$rowContent.'</td>
00335 <td>'.t3lib_BEfunc::cshItem($t,'',$GLOBALS['BACK_PATH'],'',$doNotShowFullDescr).'</td>
00336 </tr>
00337 ';
00338 }
00339
00340
00341 if ($this->newContentInto) {
00342 if (is_array($TCA)) {
00343 foreach($TCA as $t => $v) {
00344 if ($t!='pages'
00345 && $this->showNewRecLink($t)
00346 && $this->isTableAllowedForThisPage($this->pageinfo, $t)
00347 && $BE_USER->check('tables_modify',$t)
00348 && (($v['ctrl']['rootLevel'] xor $this->id) || $v['ctrl']['rootLevel']==-1)
00349 && $BE_USER->workspaceCreateNewRecord($this->pageinfo['_ORIG_uid']?$this->pageinfo['_ORIG_uid']:$this->id, $t)
00350 ) {
00351
00352
00353 $rowContent = '<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/ol/join.gif','width="18" height="16"').' alt="" />'.
00354 $this->linkWrap(
00355 t3lib_iconWorks::getIconImage($t,array(),$BACK_PATH,'').
00356 $LANG->sL($v['ctrl']['title'],1)
00357 ,$t
00358 ,$this->id);
00359
00360
00361 if ($t=='tt_content') {
00362
00363
00364 $overrideExt = $this->web_list_modTSconfig['properties']['newContentWiz.']['overrideWithExtension'];
00365 $pathToWizard = (t3lib_extMgm::isLoaded($overrideExt)) ? (t3lib_extMgm::extRelPath($overrideExt).'mod1/db_new_content_el.php') : 'sysext/cms/layout/db_new_content_el.php';
00366
00367 $href = $pathToWizard.'?id='.$this->id.'&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'));
00368 $rowContent.= '<br /><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/ol/line.gif','width="18" height="16"').' alt="" />'.
00369 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/ol/joinbottom.gif','width="18" height="16"').' alt="" />'.
00370 '<a href="'.htmlspecialchars($href).'"><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/new_record.gif','width="16" height="12"').' alt="" /> '.
00371 htmlspecialchars($LANG->getLL('clickForWizard')).
00372 '</a>';
00373
00374
00375 $rowContent.= '<br /><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/ol/halfline.gif','width="18" height="8"').' alt="" />';
00376 }
00377
00378
00379
00380 $tRows[] = '
00381 <tr>
00382 <td nowrap="nowrap">'.$rowContent.'</td>
00383 <td>'.t3lib_BEfunc::cshItem($t,'',$GLOBALS['BACK_PATH'],'',$doNotShowFullDescr).'</td>
00384 </tr>
00385 ';
00386
00387 }
00388 }
00389 }
00390 }
00391
00392
00393 if ($this->newPagesAfter
00394 && $this->isTableAllowedForThisPage($this->pidInfo,'pages')
00395 && $BE_USER->check('tables_modify','pages')
00396 && $BE_USER->workspaceCreateNewRecord($this->pidInfo['uid'], 'pages')
00397 ) {
00398
00399
00400 $t = 'pages';
00401 $v = $TCA[$t];
00402 $rowContent = $this->linkWrap(
00403 t3lib_iconWorks::getIconImage($t,array(),$BACK_PATH,'').
00404 $LANG->sL($v['ctrl']['title'],1).' ('.$LANG->sL('LLL:EXT:lang/locallang_core.php:db_new.php.after',1).')',
00405 'pages',
00406 -$this->id
00407 );
00408
00409
00410 $tRows[] = '
00411 <tr>
00412 <td nowrap="nowrap">'.$rowContent.'</td>
00413 <td>'.t3lib_BEfunc::cshItem($t,'',$GLOBALS['BACK_PATH'],'',$doNotShowFullDescr).'</td>
00414 </tr>
00415 ';
00416 } else {
00417
00418 $tRows[]='
00419 <tr>
00420 <td><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/ol/stopper.gif','width="18" height="16"').' alt="" /></td>
00421 <td></td>
00422 </tr>
00423 ';
00424 }
00425
00426
00427 $this->code.='
00428 <table border="0" cellpadding="0" cellspacing="0" id="typo3-newRecord">
00429 '.implode('',$tRows).'
00430 </table>
00431 ';
00432
00433
00434 if ($this->showNewRecLink('pages')) {
00435 $this->code.='
00436
00437 <!--
00438 Link; create new page:
00439 -->
00440 <div id="typo3-newPageLink">
00441 <a href="'.htmlspecialchars(t3lib_div::linkThisScript(array('pagesOnly'=>'1'))).'">'.
00442 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/new_page.gif','width="13" height="12"').' alt="" />'.
00443 htmlspecialchars($LANG->getLL('createNewPage')).
00444 '</a>
00445 </div>
00446 ';
00447 }
00448
00449
00450 $this->code.= t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'new_regular', $GLOBALS['BACK_PATH'],'<br/>');
00451 }
00452
00458 function printContent() {
00459 $this->content.= $this->doc->endPage();
00460 $this->content = $this->doc->insertStylesAndJS($this->content);
00461 echo $this->content;
00462 }
00463
00473 function linkWrap($code,$table,$pid,$addContentTable=0) {
00474 $params = '&edit['.$table.']['.$pid.']=new'.
00475 ($table=='pages'
00476 && $GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable']
00477 && isset($GLOBALS['TCA'][$GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable']])
00478 && $addContentTable ?
00479 '&edit['.$GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable'].'][prev]=new&returnNewPageId=1' :
00480 ''
00481 );
00482 $onClick = t3lib_BEfunc::editOnClick($params,'',$this->returnUrl);
00483 return '<a href="#" onclick="'.htmlspecialchars($onClick).'">'.$code.'</a>';
00484 }
00485
00493 function isTableAllowedForThisPage($pid_row, $checkTable) {
00494 global $TCA, $PAGES_TYPES;
00495 if (!is_array($pid_row)) {
00496 if ($GLOBALS['BE_USER']->user['admin']) {
00497 return true;
00498 } else {
00499 return false;
00500 }
00501 }
00502
00503 if ($checkTable=='be_users' || $checkTable=='be_groups') {
00504 return false;
00505 }
00506
00507 $doktype = intval($pid_row['doktype']);
00508 if (!$allowedTableList = $PAGES_TYPES[$doktype]['allowedTables']) {
00509 $allowedTableList = $PAGES_TYPES['default']['allowedTables'];
00510 }
00511 if (strstr($allowedTableList,'*') || t3lib_div::inList($allowedTableList,$checkTable)) {
00512 return true;
00513 }
00514 }
00515
00523 function showNewRecLink($table,$allowedNewTables='') {
00524 $allowedNewTables = is_array($allowedNewTables) ? $allowedNewTables : $this->allowedNewTables;
00525 return !count($allowedNewTables) || in_array($table,$allowedNewTables);
00526 }
00527 }
00528
00529
00530 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/db_new.php']) {
00531 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/db_new.php']);
00532 }
00533
00534
00535
00536
00537
00538
00539 $SOBE = t3lib_div::makeInstance('SC_db_new');
00540 $SOBE->init();
00541 $SOBE->main();
00542 $SOBE->printContent();
00543 ?>