Bug #23210 » 15152.diff
typo3/sysext/list/ext_emconf.php (revision 0) | ||
---|---|---|
<?php
|
||
########################################################################
|
||
# Extension Manager/Repository config file for ext "list".
|
||
#
|
||
# Auto generated 16-07-2010 15:35
|
||
#
|
||
# Manual updates:
|
||
# Only the data in the array - everything else is removed by next
|
||
# writing. "version" and "dependencies" must not be touched!
|
||
########################################################################
|
||
$EM_CONF[$_EXTKEY] = array(
|
||
'title' => 'Web>List',
|
||
'description' => 'List of database-records',
|
||
'category' => 'module',
|
||
'shy' => 1,
|
||
'dependencies' => 'cms',
|
||
'conflicts' => '',
|
||
'priority' => '',
|
||
'loadOrder' => '',
|
||
'module' => 'view',
|
||
'doNotLoadInFE' => 1,
|
||
'state' => 'stable',
|
||
'internal' => 0,
|
||
'uploadfolder' => 0,
|
||
'createDirs' => '',
|
||
'modify_tables' => '',
|
||
'clearCacheOnLoad' => 0,
|
||
'lockType' => '',
|
||
'author' => 'Kasper Skaarhoj',
|
||
'author_email' => 'kasperYYYY@typo3.com',
|
||
'author_company' => '',
|
||
'CGLcompliance' => '',
|
||
'CGLcompliance_note' => '',
|
||
'version' => '1.0.0',
|
||
'_md5_values_when_last_written' => 'a:6:{s:12:"ext_icon.gif";s:4:"adc5";s:14:"ext_tables.php";s:4:"1fca";s:14:"mod1/clear.gif";s:4:"cc11";s:13:"mod1/conf.php";s:4:"cf1d";s:16:"mod1/db_list.php";s:4:"f2f6";s:13:"mod1/list.gif";s:4:"adc5";}',
|
||
'constraints' => array(
|
||
'depends' => array(
|
||
'cms' => '',
|
||
'php' => '5.1.0-0.0.0',
|
||
'typo3' => '4.5.0-0.0.0',
|
||
),
|
||
'conflicts' => array(
|
||
),
|
||
'suggests' => array(
|
||
),
|
||
),
|
||
'suggests' => array(
|
||
),
|
||
);
|
||
?>
|
typo3/sysext/list/ext_tables.php (revision 0) | ||
---|---|---|
<?php
|
||
if (!defined ('TYPO3_MODE')) {
|
||
die ('Access denied.');
|
||
}
|
||
if (TYPO3_MODE === 'BE') {
|
||
t3lib_extMgm::addModule('web', 'list', 'after:layout', t3lib_extMgm::extPath($_EXTKEY) . 'mod1/');
|
||
}
|
||
?>
|
typo3/sysext/list/mod1/conf.php (revision 0) | ||
---|---|---|
<?php
|
||
define('TYPO3_MOD_PATH', 'sysext/list/mod1/');
|
||
$BACK_PATH='../../../';
|
||
$MLANG['default']['tabs_images']['tab'] = 'list.gif';
|
||
$MLANG['default']['ll_ref']='LLL:EXT:lang/locallang_mod_web_list.php';
|
||
$MCONF['script']='db_list.php';
|
||
$MCONF['access']='user,group';
|
||
$MCONF['name']='web_list';
|
||
?>
|
typo3/sysext/list/mod1/db_list.php (revision 0) | ||
---|---|---|
<?php
|
||
/***************************************************************
|
||
* Copyright notice
|
||
*
|
||
* (c) 1999-2010 Kasper Skaarhoj (kasperYYYY@typo3.com)
|
||
* All rights reserved
|
||
*
|
||
* This script is part of the TYPO3 project. The TYPO3 project 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 2 of the License, or
|
||
* (at your option) any later version.
|
||
*
|
||
* The GNU General Public License can be found at
|
||
* http://www.gnu.org/copyleft/gpl.html.
|
||
* A copy is found in the textfile GPL.txt and important notices to the license
|
||
* from the author is found in LICENSE.txt distributed with these scripts.
|
||
*
|
||
*
|
||
* This script 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.
|
||
*
|
||
* This copyright notice MUST APPEAR in all copies of the script!
|
||
***************************************************************/
|
||
/**
|
||
* Module: Web>List
|
||
*
|
||
* Listing database records from the tables configured in $TCA as they are related to the current page or root.
|
||
*
|
||
* Notice: This module and Web>Page (db_layout.php) module has a special status since they
|
||
* are NOT located in their actual module directories (fx. mod/web/list/) but in the
|
||
* backend root directory. This has some historical and practical causes.
|
||
*
|
||
* $Id: db_list.php 7905 2010-06-13 14:42:33Z ohader $
|
||
* Revised for TYPO3 3.6 November/2003 by Kasper Skaarhoj
|
||
* XHTML compliant
|
||
*
|
||
* @author Kasper Skaarhoj <kasperYYYY@typo3.com>
|
||
*/
|
||
/**
|
||
* [CLASS/FUNCTION INDEX of SCRIPT]
|
||
*
|
||
*
|
||
*
|
||
* 89: class SC_db_list
|
||
* 125: function init()
|
||
* 160: function menuConfig()
|
||
* 181: function clearCache()
|
||
* 195: function main()
|
||
* 451: function printContent()
|
||
*
|
||
* TOTAL FUNCTIONS: 5
|
||
* (This index is automatically created/updated by the extension "extdeveval")
|
||
*
|
||
*/
|
||
unset($MCONF);
|
||
require ('conf.php');
|
||
require ($BACK_PATH.'init.php');
|
||
require ($BACK_PATH.'template.php');
|
||
$LANG->includeLLFile('EXT:lang/locallang_mod_web_list.xml');
|
||
require_once ($BACK_PATH.'class.db_list.inc');
|
||
require_once ($BACK_PATH.'class.db_list_extra.inc');
|
||
$BE_USER->modAccess($MCONF,1);
|
||
t3lib_BEfunc::lockRecords();
|
||
/**
|
||
* Script Class for the Web > List module; rendering the listing of records on a page
|
||
*
|
||
* @author Kasper Skaarhoj <kasperYYYY@typo3.com>
|
||
* @package TYPO3
|
||
* @subpackage core
|
||
*/
|
||
class SC_db_list {
|
||
// Internal, GPvars:
|
||
var $id; // Page Id for which to make the listing
|
||
var $pointer; // Pointer - for browsing list of records.
|
||
var $imagemode; // Thumbnails or not
|
||
var $table; // Which table to make extended listing for
|
||
var $search_field; // Search-fields
|
||
var $search_levels; // Search-levels
|
||
var $showLimit; // Show-limit
|
||
var $returnUrl; // Return URL
|
||
var $clear_cache; // Clear-cache flag - if set, clears page cache for current id.
|
||
var $cmd; // Command: Eg. "delete" or "setCB" (for TCEmain / clipboard operations)
|
||
var $cmd_table; // Table on which the cmd-action is performed.
|
||
// Internal, static:
|
||
var $perms_clause; // Page select perms clause
|
||
var $modTSconfig; // Module TSconfig
|
||
var $pageinfo; // Current ids page record
|
||
/**
|
||
* Document template object
|
||
*
|
||
* @var template
|
||
*/
|
||
var $doc;
|
||
var $MCONF=array(); // Module configuration
|
||
var $MOD_MENU=array(); // Menu configuration
|
||
var $MOD_SETTINGS=array(); // Module settings (session variable)
|
||
var $include_once=array(); // Array, where files to include is accumulated in the init() function
|
||
// Internal, dynamic:
|
||
var $content; // Module output accumulation
|
||
/**
|
||
* Initializing the module
|
||
*
|
||
* @return void
|
||
*/
|
||
function init() {
|
||
global $BE_USER;
|
||
// Setting module configuration / page select clause
|
||
$this->MCONF = $GLOBALS['MCONF'];
|
||
$this->perms_clause = $BE_USER->getPagePermsClause(1);
|
||
// GPvars:
|
||
$this->id = t3lib_div::_GP('id');
|
||
$this->pointer = t3lib_div::_GP('pointer');
|
||
$this->imagemode = t3lib_div::_GP('imagemode');
|
||
$this->table = t3lib_div::_GP('table');
|
||
$this->search_field = t3lib_div::_GP('search_field');
|
||
$this->search_levels = t3lib_div::_GP('search_levels');
|
||
$this->showLimit = t3lib_div::_GP('showLimit');
|
||
$this->returnUrl = t3lib_div::_GP('returnUrl');
|
||
$this->clear_cache = t3lib_div::_GP('clear_cache');
|
||
$this->cmd = t3lib_div::_GP('cmd');
|
||
$this->cmd_table = t3lib_div::_GP('cmd_table');
|
||
// Initialize menu
|
||
$this->menuConfig();
|
||
// Inclusions?
|
||
if ($this->clear_cache || $this->cmd=='delete') {
|
||
$this->include_once[]=PATH_t3lib.'class.t3lib_tcemain.php';
|
||
}
|
||
}
|
||
/**
|
||
* Initialize function menu array
|
||
*
|
||
* @return void
|
||
*/
|
||
function menuConfig() {
|
||
// MENU-ITEMS:
|
||
$this->MOD_MENU = array(
|
||
'bigControlPanel' => '',
|
||
'clipBoard' => '',
|
||
'localization' => ''
|
||
);
|
||
// Loading module configuration:
|
||
$this->modTSconfig = t3lib_BEfunc::getModTSconfig($this->id,'mod.'.$this->MCONF['name']);
|
||
// Clean up settings:
|
||
$this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, t3lib_div::_GP('SET'), $this->MCONF['name']);
|
||
}
|
||
/**
|
||
* Clears page cache for the current id, $this->id
|
||
*
|
||
* @return void
|
||
*/
|
||
function clearCache() {
|
||
if ($this->clear_cache) {
|
||
$tce = t3lib_div::makeInstance('t3lib_TCEmain');
|
||
$tce->stripslashes_values=0;
|
||
$tce->start(Array(),Array());
|
||
$tce->clear_cacheCmd($this->id);
|
||
}
|
||
}
|
||
/**
|
||
* Main function, starting the rendering of the list.
|
||
*
|
||
* @return void
|
||
*/
|
||
function main() {
|
||
global $BE_USER,$LANG,$BACK_PATH,$CLIENT;
|
||
// Start document template object:
|
||
$this->doc = t3lib_div::makeInstance('template');
|
||
$this->doc->backPath = $BACK_PATH;
|
||
$this->doc->setModuleTemplate('templates/db_list.html');
|
||
// Loading current page record and checking access:
|
||
$this->pageinfo = t3lib_BEfunc::readPageAccess($this->id,$this->perms_clause);
|
||
$access = is_array($this->pageinfo) ? 1 : 0;
|
||
// Initialize the dblist object:
|
||
$dblist = t3lib_div::makeInstance('localRecordList');
|
||
$dblist->backPath = $BACK_PATH;
|
||
$dblist->calcPerms = $BE_USER->calcPerms($this->pageinfo);
|
||
$dblist->thumbs = $BE_USER->uc['thumbnailsByDefault'];
|
||
$dblist->returnUrl=$this->returnUrl;
|
||
$dblist->allFields = ($this->MOD_SETTINGS['bigControlPanel'] || $this->table) ? 1 : 0;
|
||
$dblist->localizationView = $this->MOD_SETTINGS['localization'];
|
||
$dblist->showClipboard = 1;
|
||
$dblist->disableSingleTableView = $this->modTSconfig['properties']['disableSingleTableView'];
|
||
$dblist->listOnlyInSingleTableMode = $this->modTSconfig['properties']['listOnlyInSingleTableView'];
|
||
$dblist->hideTables = $this->modTSconfig['properties']['hideTables'];
|
||
$dblist->tableTSconfigOverTCA = $this->modTSconfig['properties']['table.'];
|
||
$dblist->clickTitleMode = $this->modTSconfig['properties']['clickTitleMode'];
|
||
$dblist->alternateBgColors=$this->modTSconfig['properties']['alternateBgColors']?1:0;
|
||
$dblist->allowedNewTables = t3lib_div::trimExplode(',', $this->modTSconfig['properties']['allowedNewTables'], 1);
|
||
$dblist->deniedNewTables = t3lib_div::trimExplode(',', $this->modTSconfig['properties']['deniedNewTables'], 1);
|
||
$dblist->newWizards=$this->modTSconfig['properties']['newWizards']?1:0;
|
||
$dblist->pageRow = $this->pageinfo;
|
||
$dblist->counter++;
|
||
$dblist->MOD_MENU = array('bigControlPanel' => '', 'clipBoard' => '', 'localization' => '');
|
||
$dblist->modTSconfig = $this->modTSconfig;
|
||
// Clipboard is initialized:
|
||
$dblist->clipObj = t3lib_div::makeInstance('t3lib_clipboard'); // Start clipboard
|
||
$dblist->clipObj->initializeClipboard(); // Initialize - reads the clipboard content from the user session
|
||
// Clipboard actions are handled:
|
||
$CB = t3lib_div::_GET('CB'); // CB is the clipboard command array
|
||
if ($this->cmd=='setCB') {
|
||
// CBH is all the fields selected for the clipboard, CBC is the checkbox fields which were checked. By merging we get a full array of checked/unchecked elements
|
||
// This is set to the 'el' array of the CB after being parsed so only the table in question is registered.
|
||
$CB['el'] = $dblist->clipObj->cleanUpCBC(array_merge((array)t3lib_div::_POST('CBH'),(array)t3lib_div::_POST('CBC')),$this->cmd_table);
|
||
}
|
||
if (!$this->MOD_SETTINGS['clipBoard']) $CB['setP']='normal'; // If the clipboard is NOT shown, set the pad to 'normal'.
|
||
$dblist->clipObj->setCmd($CB); // Execute commands.
|
||
$dblist->clipObj->cleanCurrent(); // Clean up pad
|
||
$dblist->clipObj->endClipboard(); // Save the clipboard content
|
||
// This flag will prevent the clipboard panel in being shown.
|
||
// It is set, if the clickmenu-layer is active AND the extended view is not enabled.
|
||
$dblist->dontShowClipControlPanels = $CLIENT['FORMSTYLE'] && !$this->MOD_SETTINGS['bigControlPanel'] && $dblist->clipObj->current=='normal' && !$BE_USER->uc['disableCMlayers'] && !$this->modTSconfig['properties']['showClipControlPanelsDespiteOfCMlayers'];
|
||
// If there is access to the page, then render the list contents and set up the document template object:
|
||
if ($access) {
|
||
// Deleting records...:
|
||
// Has not to do with the clipboard but is simply the delete action. The clipboard object is used to clean up the submitted entries to only the selected table.
|
||
if ($this->cmd=='delete') {
|
||
$items = $dblist->clipObj->cleanUpCBC(t3lib_div::_POST('CBC'),$this->cmd_table,1);
|
||
if (count($items)) {
|
||
$cmd=array();
|
||
foreach ($items as $iK => $value) {
|
||
$iKParts = explode('|',$iK);
|
||
$cmd[$iKParts[0]][$iKParts[1]]['delete']=1;
|
||
}
|
||
$tce = t3lib_div::makeInstance('t3lib_TCEmain');
|
||
$tce->stripslashes_values=0;
|
||
$tce->start(array(),$cmd);
|
||
$tce->process_cmdmap();
|
||
if (isset($cmd['pages'])) {
|
||
t3lib_BEfunc::setUpdateSignal('updatePageTree');
|
||
}
|
||
$tce->printLogErrorMessages(t3lib_div::getIndpEnv('REQUEST_URI'));
|
||
}
|
||
}
|
||
// Initialize the listing object, dblist, for rendering the list:
|
||
$this->pointer = t3lib_div::intInRange($this->pointer,0,100000);
|
||
$dblist->start($this->id,$this->table,$this->pointer,$this->search_field,$this->search_levels,$this->showLimit);
|
||
$dblist->setDispFields();
|
||
// Render versioning selector:
|
||
if (t3lib_extMgm::isLoaded('version')) {
|
||
$dblist->HTMLcode .= $this->doc->getVersionSelector($this->id);
|
||
}
|
||
// Render the list of tables:
|
||
$dblist->generateList();
|
||
// Write the bottom of the page:
|
||
$dblist->writeBottom();
|
||
// Add JavaScript functions to the page:
|
||
$this->doc->JScode=$this->doc->wrapScriptTags('
|
||
function jumpToUrl(URL) { //
|
||
window.location.href = URL;
|
||
return false;
|
||
}
|
||
function jumpExt(URL,anchor) { //
|
||
var anc = anchor?anchor:"";
|
||
window.location.href = URL+(T3_THIS_LOCATION?"&returnUrl="+T3_THIS_LOCATION:"")+anc;
|
||
return false;
|
||
}
|
||
function jumpSelf(URL) { //
|
||
window.location.href = URL+(T3_RETURN_URL?"&returnUrl="+T3_RETURN_URL:"");
|
||
return false;
|
||
}
|
||
function setHighlight(id) { //
|
||
top.fsMod.recentIds["web"]=id;
|
||
top.fsMod.navFrameHighlightedID["web"]="pages"+id+"_"+top.fsMod.currentBank; // For highlighting
|
||
if (top.content && top.content.nav_frame && top.content.nav_frame.refresh_nav) {
|
||
top.content.nav_frame.refresh_nav();
|
||
}
|
||
}
|
||
'.$this->doc->redirectUrls($dblist->listURL()).'
|
||
'.$dblist->CBfunctions().'
|
||
function editRecords(table,idList,addParams,CBflag) { //
|
||
window.location.href="'.$BACK_PATH.'alt_doc.php?returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI')).
|
||
'&edit["+table+"]["+idList+"]=edit"+addParams;
|
||
}
|
||
function editList(table,idList) { //
|
||
var list="";
|
||
// Checking how many is checked, how many is not
|
||
var pointer=0;
|
||
var pos = idList.indexOf(",");
|
||
while (pos!=-1) {
|
||
if (cbValue(table+"|"+idList.substr(pointer,pos-pointer))) {
|
||
list+=idList.substr(pointer,pos-pointer)+",";
|
||
}
|
||
pointer=pos+1;
|
||
pos = idList.indexOf(",",pointer);
|
||
}
|
||
if (cbValue(table+"|"+idList.substr(pointer))) {
|
||
list+=idList.substr(pointer)+",";
|
||
}
|
||
return list ? list : idList;
|
||
}
|
||
if (top.fsMod) top.fsMod.recentIds["web"] = '.intval($this->id).';
|
||
');
|
||
// Setting up the context sensitive menu:
|
||
$this->doc->getContextMenuCode();
|
||
} // access
|
||
// Begin to compile the whole page, starting out with page header:
|
||
$this->body='';
|
||
$this->body.= '<form action="'.htmlspecialchars($dblist->listURL()).'" method="post" name="dblistForm">';
|
||
$this->body.= $dblist->HTMLcode;
|
||
$this->body.= '<input type="hidden" name="cmd_table" /><input type="hidden" name="cmd" /></form>';
|
||
// If a listing was produced, create the page footer with search form etc:
|
||
if ($dblist->HTMLcode) {
|
||
// Making field select box (when extended view for a single table is enabled):
|
||
if ($dblist->table) {
|
||
$this->body.=$dblist->fieldSelectBox($dblist->table);
|
||
}
|
||
// Adding checkbox options for extended listing and clipboard display:
|
||
$this->body.='
|
||
<!--
|
||
Listing options for clipboard and thumbnails
|
||
-->
|
||
<div id="typo3-listOptions">
|
||
<form action="" method="post">';
|
||
$this->body.=t3lib_BEfunc::getFuncCheck($this->id,'SET[bigControlPanel]',$this->MOD_SETTINGS['bigControlPanel'],'db_list.php',($this->table?'&table='.$this->table:''),'id="checkLargeControl"').' <label for="checkLargeControl">'.$LANG->getLL('largeControl',1).'</label><br />';
|
||
if ($dblist->showClipboard) {
|
||
$this->body.=t3lib_BEfunc::getFuncCheck($this->id,'SET[clipBoard]',$this->MOD_SETTINGS['clipBoard'],'db_list.php',($this->table?'&table='.$this->table:''),'id="checkShowClipBoard"').' <label for="checkShowClipBoard">'.$LANG->getLL('showClipBoard',1).'</label><br />';
|
||
}
|
||
$this->body.=t3lib_BEfunc::getFuncCheck($this->id,'SET[localization]',$this->MOD_SETTINGS['localization'],'db_list.php',($this->table?'&table='.$this->table:''),'id="checkLocalization"').' <label for="checkLocalization">'.$LANG->getLL('localization',1).'</label><br />';
|
||
$this->body.='
|
||
</form>
|
||
</div>';
|
||
$this->body.= t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'list_options', $GLOBALS['BACK_PATH']);
|
||
// Printing clipboard if enabled:
|
||
if ($this->MOD_SETTINGS['clipBoard'] && $dblist->showClipboard) {
|
||
$this->body.= $dblist->clipObj->printClipboard();
|
||
$this->body.= t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'list_clipboard', $GLOBALS['BACK_PATH']);
|
||
}
|
||
// Search box:
|
||
$this->body.=$dblist->getSearchBox();
|
||
// Display sys-notes, if any are found:
|
||
$this->body.=$dblist->showSysNotesForPage();
|
||
}
|
||
// Setting up the buttons and markers for docheader
|
||
$docHeaderButtons = $dblist->getButtons();
|
||
$markers = array(
|
||
'CSH' => $docHeaderButtons['csh'],
|
||
'CONTENT' => $this->body
|
||
);
|
||
// Build the <body> for the module
|
||
$this->content = $this->doc->startPage('DB list');
|
||
$this->content.= $this->doc->moduleBody($this->pageinfo, $docHeaderButtons, $markers);
|
||
$this->content.= $this->doc->endPage();
|
||
$this->content = $this->doc->insertStylesAndJS($this->content);
|
||
}
|
||
/**
|
||
* Outputting the accumulated content to screen
|
||
*
|
||
* @return void
|
||
*/
|
||
function printContent() {
|
||
echo $this->content;
|
||
}
|
||
}
|
||
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/db_list.php']) {
|
||
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/db_list.php']);
|
||
}
|
||
// Make instance:
|
||
$SOBE = t3lib_div::makeInstance('SC_db_list');
|
||
$SOBE->init();
|
||
// Include files?
|
||
foreach($SOBE->include_once as $INC_FILE) include_once($INC_FILE);
|
||
$SOBE->clearCache();
|
||
$SOBE->main();
|
||
$SOBE->printContent();
|
||
?>
|