Documentation TYPO3 par Ameos |
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 ***************************************************************/ 00055 require_once(PATH_tslib.'class.tslib_pibase.php'); 00056 00057 00058 00067 class tx_cssstyledcontent_pi1 extends tslib_pibase { 00068 00069 // Default plugin variables: 00070 var $prefixId = 'tx_cssstyledcontent_pi1'; // Same as class name 00071 var $scriptRelPath = 'pi1/class.tx_cssstyledcontent_pi1.php'; // Path to this script relative to the extension dir. 00072 var $extKey = 'css_styled_content'; // The extension key. 00073 var $conf = array(); 00074 00075 00076 00077 00078 00079 00080 00081 /*********************************** 00082 * 00083 * Rendering of Content Elements: 00084 * 00085 ***********************************/ 00086 00095 function render_bullets($content,$conf) { 00096 00097 // Look for hook before running default code for function 00098 if ($hookObj = &$this->hookRequest('render_bullets')) { 00099 return $hookObj->render_bullets($content,$conf); 00100 } else { 00101 00102 // Get bodytext field content, returning blank if empty: 00103 $content = trim($this->cObj->data['bodytext']); 00104 if (!strcmp($content,'')) return ''; 00105 00106 // Split into single lines: 00107 $lines = t3lib_div::trimExplode(chr(10),$content); 00108 while(list($k)=each($lines)) { 00109 $lines[$k]=' 00110 <li>'.$this->cObj->stdWrap($lines[$k],$conf['innerStdWrap.']).'</li>'; 00111 } 00112 00113 // Set header type: 00114 $type = intval($this->cObj->data['layout']); 00115 00116 // Compile list: 00117 $out = ' 00118 <ul class="csc-bulletlist csc-bulletlist-'.$type.'">'. 00119 implode('',$lines).' 00120 </ul>'; 00121 00122 // Calling stdWrap: 00123 if ($conf['stdWrap.']) { 00124 $out = $this->cObj->stdWrap($out, $conf['stdWrap.']); 00125 } 00126 00127 // Return value 00128 return $out; 00129 } 00130 } 00131 00140 function render_table($content,$conf) { 00141 00142 // Look for hook before running default code for function 00143 if ($hookObj = &$this->hookRequest('render_table')) { 00144 return $hookObj->render_table($content,$conf); 00145 } else { 00146 00147 // Get bodytext field content 00148 $content = trim($this->cObj->data['bodytext']); 00149 if (!strcmp($content,'')) return ''; 00150 00151 // Split into single lines (will become table-rows): 00152 $rows = t3lib_div::trimExplode(chr(10),$content); 00153 00154 // Find number of columns to render: 00155 $cols = t3lib_div::intInRange($this->cObj->data['cols']?$this->cObj->data['cols']:count(explode('|',current($rows))),0,100); 00156 00157 // Traverse rows (rendering the table here) 00158 $rCount = count($rows); 00159 foreach($rows as $k => $v) { 00160 $cells = explode('|',$v); 00161 $newCells=array(); 00162 for($a=0;$a<$cols;$a++) { 00163 if (!strcmp(trim($cells[$a]),'')) $cells[$a]=' '; 00164 $cellAttribs = ($a>0 && ($cols-1)==$a) ? ' class="td-last"' : ' class="td-'.$a.'"'; 00165 $newCells[$a] = ' 00166 <td'.$cellAttribs.'><p>'.$this->cObj->stdWrap($cells[$a],$conf['innerStdWrap.']).'</p></td>'; 00167 } 00168 00169 $oddEven = $k%2 ? 'tr-odd' : 'tr-even'; 00170 $rowAttribs = ($k>0 && ($rCount-1)==$k) ? ' class="'.$oddEven.' tr-last"' : ' class="'.$oddEven.' tr-'.$k.'"'; 00171 $rows[$k]=' 00172 <tr'.$rowAttribs.'>'.implode('',$newCells).' 00173 </tr>'; 00174 } 00175 00176 // Set header type: 00177 $type = intval($this->cObj->data['layout']); 00178 00179 // Table tag params. 00180 $tableTagParams = $this->getTableAttributes($conf,$type); 00181 $tableTagParams['class'] = 'contenttable contenttable-'.$type; 00182 00183 // Compile table output: 00184 $out = ' 00185 <table '.t3lib_div::implodeAttributes($tableTagParams).'>'. // Omitted xhtmlSafe argument TRUE - none of the values will be needed to be converted anyways, no need to spend processing time on that. 00186 implode('',$rows).' 00187 </table>'; 00188 00189 // Calling stdWrap: 00190 if ($conf['stdWrap.']) { 00191 $out = $this->cObj->stdWrap($out, $conf['stdWrap.']); 00192 } 00193 00194 // Return value 00195 return $out; 00196 } 00197 } 00198 00207 function render_uploads($content,$conf) { 00208 00209 // Look for hook before running default code for function 00210 if ($hookObj = &$this->hookRequest('render_uploads')) { 00211 return $hookObj->render_uploads($content,$conf); 00212 } else { 00213 00214 $out = ''; 00215 00216 // Set layout type: 00217 $type = intval($this->cObj->data['layout']); 00218 00219 // Get the list of files (using stdWrap function since that is easiest) 00220 $lConf=array(); 00221 $lConf['override.']['filelist.']['field'] = 'select_key'; 00222 $fileList = $this->cObj->stdWrap($this->cObj->data['media'],$lConf); 00223 00224 // Explode into an array: 00225 $fileArray = t3lib_div::trimExplode(',',$fileList,1); 00226 00227 // If there were files to list...: 00228 if (count($fileArray)) { 00229 00230 // Get the path from which the images came: 00231 $selectKeyValues = explode('|',$this->cObj->data['select_key']); 00232 $path = trim($selectKeyValues[0]) ? trim($selectKeyValues[0]) : 'uploads/media/'; 00233 00234 // Get the descriptions for the files (if any): 00235 $descriptions = t3lib_div::trimExplode(chr(10),$this->cObj->data['imagecaption']); 00236 00237 // Adding hardcoded TS to linkProc configuration: 00238 $conf['linkProc.']['path.']['current'] = 1; 00239 $conf['linkProc.']['icon'] = 1; // Always render icon - is inserted by PHP if needed. 00240 $conf['linkProc.']['icon.']['wrap'] = ' | //**//'; // Temporary, internal split-token! 00241 $conf['linkProc.']['icon_link'] = 1; // ALways link the icon 00242 $conf['linkProc.']['icon_image_ext_list'] = ($type==2 || $type==3) ? $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] : ''; // If the layout is type 2 or 3 we will render an image based icon if possible. 00243 00244 // Traverse the files found: 00245 $filesData = array(); 00246 foreach($fileArray as $key => $fileName) { 00247 $absPath = t3lib_div::getFileAbsFileName($path.$fileName); 00248 if (@is_file($absPath)) { 00249 $fI = pathinfo($fileName); 00250 $filesData[$key] = array(); 00251 00252 $filesData[$key]['filename'] = $fileName; 00253 $filesData[$key]['path'] = $path; 00254 $filesData[$key]['filesize'] = filesize($absPath); 00255 $filesData[$key]['fileextension'] = strtolower($fI['extension']); 00256 $filesData[$key]['description'] = trim($descriptions[$key]); 00257 00258 $this->cObj->setCurrentVal($path); 00259 $GLOBALS['TSFE']->register['ICON_REL_PATH'] = $path.$fileName; 00260 $filesData[$key]['linkedFilenameParts'] = explode('//**//',$this->cObj->filelink($fileName, $conf['linkProc.'])); 00261 } 00262 } 00263 00264 // Now, lets render the list! 00265 $tRows = array(); 00266 foreach($filesData as $key => $fileD) { 00267 00268 // Setting class of table row for odd/even rows: 00269 $oddEven = $key%2 ? 'tr-odd' : 'tr-even'; 00270 00271 // Render row, based on the "layout" setting 00272 $tRows[]=' 00273 <tr class="'.$oddEven.'">'.($type>0 ? ' 00274 <td class="csc-uploads-icon"> 00275 '.$fileD['linkedFilenameParts'][0].' 00276 </td>' : '').' 00277 <td class="csc-uploads-fileName"> 00278 <p>'.$fileD['linkedFilenameParts'][1].'</p>'. 00279 ($fileD['description'] ? ' 00280 <p class="csc-uploads-description">'.htmlspecialchars($fileD['description']).'</p>' : '').' 00281 </td>'.($this->cObj->data['filelink_size'] ? ' 00282 <td class="csc-uploads-fileSize"> 00283 <p>'.t3lib_div::formatSize($fileD['filesize']).'</p> 00284 </td>' : '').' 00285 </tr>'; 00286 } 00287 00288 // Table tag params. 00289 $tableTagParams = $this->getTableAttributes($conf,$type); 00290 $tableTagParams['class'] = 'csc-uploads csc-uploads-'.$type; 00291 00292 00293 // Compile it all into table tags: 00294 $out = ' 00295 <table '.t3lib_div::implodeAttributes($tableTagParams).'> 00296 '.implode('',$tRows).' 00297 </table>'; 00298 } 00299 00300 // Calling stdWrap: 00301 if ($conf['stdWrap.']) { 00302 $out = $this->cObj->stdWrap($out, $conf['stdWrap.']); 00303 } 00304 00305 // Return value 00306 return $out; 00307 } 00308 } 00309 00310 00311 00312 00313 00314 00315 00316 00317 00318 00319 00320 00321 00322 /************************************ 00323 * 00324 * Helper functions 00325 * 00326 ************************************/ 00327 00335 function getTableAttributes($conf,$type) { 00336 00337 // Initializing: 00338 $tableTagParams_conf = $conf['tableParams_'.$type.'.']; 00339 00340 $conf['color.'][200] = ''; 00341 $conf['color.'][240] = 'black'; 00342 $conf['color.'][241] = 'white'; 00343 $conf['color.'][242] = '#333333'; 00344 $conf['color.'][243] = 'gray'; 00345 $conf['color.'][244] = 'silver'; 00346 00347 // Create table attributes array: 00348 $tableTagParams = array(); 00349 $tableTagParams['border'] = $this->cObj->data['table_border'] ? intval($this->cObj->data['table_border']) : $tableTagParams_conf['border']; 00350 $tableTagParams['cellspacing'] = $this->cObj->data['table_cellspacing'] ? intval($this->cObj->data['table_cellspacing']) : $tableTagParams_conf['cellspacing']; 00351 $tableTagParams['cellpadding'] = $this->cObj->data['table_cellpadding'] ? intval($this->cObj->data['table_cellpadding']) : $tableTagParams_conf['cellpadding']; 00352 $tableTagParams['bgcolor'] = isset($conf['color.'][$this->cObj->data['table_bgColor']]) ? $conf['color.'][$this->cObj->data['table_bgColor']] : $conf['color.']['default']; 00353 00354 // Return result: 00355 return $tableTagParams; 00356 } 00357 00364 function &hookRequest($functionName) { 00365 global $TYPO3_CONF_VARS; 00366 00367 // Hook: menuConfig_preProcessModMenu 00368 if ($TYPO3_CONF_VARS['EXTCONF']['css_styled_content']['pi1_hooks'][$functionName]) { 00369 $hookObj = &t3lib_div::getUserObj($TYPO3_CONF_VARS['EXTCONF']['css_styled_content']['pi1_hooks'][$functionName]); 00370 if (method_exists ($hookObj, $functionName)) { 00371 $hookObj->pObj = &$this; 00372 return $hookObj; 00373 } 00374 } 00375 } 00376 } 00377 00378 00379 00380 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php']) { 00381 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php']); 00382 } 00383 ?>