Project

General

Profile

Bug #23210 » 15152.diff

Administrator Admin, 2010-07-16 15:37

View differences:

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();
?>
(1-1/2)