* Fixed bug #7396: hardcoded fieldset and legend around radio buttons
* Fixed bug #7817: Transparent PNGs do not work in IE6
* Fixed bug #7873: Wrong condition for IE6, credits Steffen Kamper
+ * Code cleanup: replaced CVS with SVN
2008-03-15 Ingo Renner <ingo@typo3.org>
/***************************************************************
* Copyright notice
*
-* (c) 1999-2003 Kasper Skaarhoj (kasperYYYY@typo3.com)
+* (c) 1999-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
/***************************************************************
* Copyright notice
*
-* (c) 1999-2006 Kasper Skaarhoj (kasperYYYY@typo3.com)
+* (c) 1999-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
/***************************************************************
* Copyright notice
*
-* (c) 1999-2006 Kasper Skaarhoj (kasperYYYY@typo3.com)
+* (c) 1999-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
/***************************************************************
* Copyright notice
*
-* (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
+* (c) 1999-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
if ($GLOBALS['BE_USER']->uc['recursiveDelete']) {
$this->deleteTree = 1;
}
-
+
if ($GLOBALS['TYPO3_CONF_VARS']['BE']['explicitConfirmationOfTranslation'] && $this->updateModeL10NdiffData===TRUE) {
$this->updateModeL10NdiffData = FALSE;
}
/*
* Hook: processDatamap_afterAllOperations
- *
+ *
* Note: When this hook gets called, all operations on the submitted data have been finished.
*/
foreach($hookObjectsArr as $hookObj) {
foreach($dataValues[$key]['el'] as $ik => $el) {
if (is_array($el)) {
if (!is_array($dataValues_current[$key]['el'])) $dataValues_current[$key]['el']=array();
-
+
$theKey = key($el);
if (is_array($dataValues[$key]['el'][$ik][$theKey]['el'])) {
$callBackFunc,
$structurePath.$key.'/el/'.$ik.'/'.$theKey.'/el/'
);
-
+
// If element is added dynamically in the flexform of TCEforms, we map the ID-string to the next numerical index we can have in that particular section of elements:
// The fact that the order changes is not important since order is controlled by a separately submitted index.
}
}
}
- // IRRE with a pointer field (database normalization):
+ // IRRE with a pointer field (database normalization):
if ($tcaFieldConf['foreign_field']) {
// if the record was imported, sorting was also imported, so skip this
$skipSorting = ($this->callFromImpExp ? true : false);
}
}
#debug($this->cmdmap);
-
+
$this->accumulateForNotifEmail = array(); // Reset notification array
// Traverse command map:
$this->findPageElementsForVersionStageChange($idList, $workspaceId, $elementList);
}
}
-
+
foreach ($elementList as $tbl => $elementIdList) {
foreach($elementIdList as $id) {
$this->version_setStage($tbl,$id,$value['stageId'],$value['comment']?$value['comment']:$this->generalComment, TRUE);
}
$this->accumulateForNotifEmail = array(); // Reset notification array
-
+
# die("REMOVE ME");
}
* @return void
*/
protected function inlineLocalizeSynchronize($table, $id, $command) {
- // <field>, (localize | synchronize | <uid>):
+ // <field>, (localize | synchronize | <uid>):
$parts = t3lib_div::trimExplode(',', $command);
$field = $parts[0];
$type = $parts[1];
}
}
}
- // Perform synchronization/localization: Possibly add unlocalized records for original language:
+ // Perform synchronization/localization: Possibly add unlocalized records for original language:
if (t3lib_div::testInt($type) && isset($elementsOriginal[$type])) {
$item = $elementsOriginal[$type];
$item['id'] = $this->localize($item['table'], $item['id'], $language);
- $dbAnalysisCurrent->itemArray[] = $item;
+ $dbAnalysisCurrent->itemArray[] = $item;
} elseif (t3lib_div::inList('localize,synchronize', $type)) {
foreach ($elementsOriginal as $originalId => $item) {
$item['id'] = $this->localize($item['table'], $item['id'], $language);
- $dbAnalysisCurrent->itemArray[] = $item;
+ $dbAnalysisCurrent->itemArray[] = $item;
}
}
// Store the new values, we will set up the uids for the subtype later on (exception keep localization from original record):
unlink($lockFileName);
}
}
-
+
if (!count($sqlErrors)) {
-
+
// If a moving operation took place...:
if ($movePlhID) {
if (!$swapIntoWS) { // Remove, if normal publishing:
$swapVersion[$field] = $tempValue;
}
}
-
+
/**
* Swaps MM-relations for current/swap record, see version_swap()
*
*/
function version_remapMMForVersionSwap($table,$id,$swapWith) {
global $TCA;
-
+
// Actually, selecting the records fully is only need if flexforms are found inside... This could be optimized ...
$currentRec = t3lib_BEfunc::getRecord($table,$id);
$swapRec = t3lib_BEfunc::getRecord($table,$swapWith);
-
+
$this->version_remapMMForVersionSwap_reg = array();
-
+
foreach($TCA[$table]['columns'] as $field => $fConf) {
$conf = $fConf['config'];
-
+
if ($this->isReferenceField($conf)) {
$allowedTables = $conf['type']=='group' ? $conf['allowed'] : $conf['foreign_table'].','.$conf['neg_foreign_table'];
$prependName = $conf['type']=='group' ? $conf['prepend_tname'] : $conf['neg_foreign_table'];
if ($conf['MM']) {
-
+
$dbAnalysis = t3lib_div::makeInstance('t3lib_loadDBGroup');
/* @var $dbAnalysis t3lib_loadDBGroup */
$dbAnalysis->start('', $allowedTables, $conf['MM'], $id, $table, $conf);
- if (count($dbAnalysis->getValueArray($prependName))) {
+ if (count($dbAnalysis->getValueArray($prependName))) {
$this->version_remapMMForVersionSwap_reg[$id][$field] = array($dbAnalysis, $conf['MM'], $prependName);
}
-
+
$dbAnalysis = t3lib_div::makeInstance('t3lib_loadDBGroup');
/* @var $dbAnalysis t3lib_loadDBGroup */
$dbAnalysis->start('', $allowedTables, $conf['MM'], $swapWith, $table, $conf);
- if (count($dbAnalysis->getValueArray($prependName))) {
+ if (count($dbAnalysis->getValueArray($prependName))) {
$this->version_remapMMForVersionSwap_reg[$swapWith][$field] = array($dbAnalysis, $conf['MM'], $prependName);
}
}
}
}
}
-
+
// Execute:
$this->version_remapMMForVersionSwap_execSwap($table,$id,$swapWith);
}
if ($dsConf['MM']) {
$dbAnalysis = t3lib_div::makeInstance('t3lib_loadDBGroup');
/* @var $dbAnalysis t3lib_loadDBGroup */
- $dbAnalysis->start('', $allowedTables, $dsConf['MM'], $uid, $table, $dsConf);
+ $dbAnalysis->start('', $allowedTables, $dsConf['MM'], $uid, $table, $dsConf);
$this->version_remapMMForVersionSwap_reg[$uid][$field.'/'.$path] = array($dbAnalysis, $dsConf['MM'], $prependName);
}
}
* @see version_remapMMForVersionSwap()
*/
function version_remapMMForVersionSwap_execSwap($table,$id,$swapWith) {
-
+
if (is_array($this->version_remapMMForVersionSwap_reg[$id])) {
foreach($this->version_remapMMForVersionSwap_reg[$id] as $field => $str) {
$str[0]->remapMM($str[1],$id,-$id,$str[2]);
}
return $res;
}
-
+
/**
* Checks if a table is allowed on a certain page id according to allowed tables set for the page "doktype" and its [ctrl][rootLevel]-settings if any.
*
break;
}
$emails = array_unique($emails);
-
+
// Path to record is found:
list($eTable,$eUid) = explode(':',$elementName);
$eUid = intval($eUid);
$rr = t3lib_BEfunc::getRecord($eTable,$eUid);
- $recTitle = t3lib_BEfunc::getRecordTitle($eTable,$rr);
+ $recTitle = t3lib_BEfunc::getRecordTitle($eTable,$rr);
if ($eTable!='pages') {
t3lib_BEfunc::fixVersioningPid($eTable,$rr);
$eUid=$rr['pid'];
}
$path = t3lib_BEfunc::getRecordPath($eUid,'',20);
-
+
// ALternative messages:
$TSConfig = $this->getTCEMAIN_TSconfig($eUid);
$body = trim($TSConfig['notificationEmail_body']) ? trim($TSConfig['notificationEmail_body']) : '
State was change by %s (username: %s)
';
$subject = trim($TSConfig['notificationEmail_subject']) ? trim($TSConfig['notificationEmail_subject']) : 'TYPO3 Workspace Note: Stage Change for %s';
-
+
// Send email:
if (count($emails)) {
$message = sprintf($body,
/***************************************************************
* Copyright notice
*
-* (c) 2007 Ingo Renner <ingo@typo3.org>
+* (c) 2007-2008 Ingo Renner <ingo@typo3.org>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
/***************************************************************
* Copyright notice
*
-* (c) 2007 Ingo Renner <ingo@typo3.org>
+* (c) 2007-2008 Ingo Renner <ingo@typo3.org>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
#
#
<head>
<!-- Close script, used in particular by the alt_doc.php script to close the current edit window -->
- <!-- TYPO3 CVS ID: $Id$ -->
+ <!-- TYPO3 SVN ID: $Id$ -->
<!-- TYPO3 Script ID: typo3/close.html -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
* @copyright 2005 Michal Migurski
- * @version CVS: $Id$
+ * @version $Id$
* @license http://www.opensource.org/licenses/bsd-license.php
* @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
*/
// element in an associative array,
// for now
$parts = array();
-
+
if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// "name":value pair
$key = $this->decode($parts[1]);
}
}
-
+
?>
<!-- Default script designed to just redirect to login screen -->
-<!-- TYPO3 CVS ID: $Id$ -->
+<!-- TYPO3 SVN ID: $Id$ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<!-- Default script designed to just redirect to login screen -->
-<!-- TYPO3 CVS ID: $Id$ -->
+<!-- TYPO3 SVN ID: $Id$ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<!-- Default script designed to just redirect to login screen -->
-<!-- TYPO3 CVS ID: $Id$ -->
+<!-- TYPO3 SVN ID: $Id$ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<!-- Default script designed to just redirect to login screen -->
-<!-- TYPO3 CVS ID: $Id$ -->
+<!-- TYPO3 SVN ID: $Id$ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
- kasper
(5/12 2001, reviewed 2003/2)
-TYPO3 CVS ID: $Id$
\ No newline at end of file
+TYPO3 SVN ID: $Id$
\ No newline at end of file
System extensions cannot (by default at least) be updated like global and local extensions; They are meant to always be distributed with the core (while global extensions
in ext/ are not) and to the user they will probably be understood more like a part of the core since they come along with the core. But technically they are extensions for various reasons.
-System Extensions are in the TYPO3core CVS module.
+System Extensions are in the TYPO3core SVN module.
System Extensions should be hidden in TER (last check of this was oct. 2005 by kasper)
System extensions with manuals are currently (oct 2005):
----------------------
-TYPO3 CVS ID: $Id$
+TYPO3 SVN ID: $Id$
<?php
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
if (!defined ('TYPO3_MODE')) die ('Access denied.');
$TYPO3_CONF_VARS['SYS']['contentTable'] = 'tt_content';
'<b>Setup</b> section of your Page TypoScript template:</p>' .
'<p style="margin-top: 5px; white-space: nowrap;"><code>config.simulateStaticDocuments_replacementChar = _</code></p></li>'.
'<li><p>CSS Stylesheets and JavaScript are put into an external file by default.</p>'.
- '<p>Technically, that means that the default value of "config.inlineStyle2TempFile" is now set to "1" and that of "config.removeDefaultJS" to "external"</p></li>'.
+ '<p>Technically, that means that the default value of "config.inlineStyle2TempFile" is now set to "1" and that of "config.removeDefaultJS" to "external"</p></li>'.
'</ul>',
);
<?php
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
if (!defined ('TYPO3_MODE')) die ('Access denied.');
if (TYPO3_MODE=='BE') {
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
#
/* Default stylesheet use in the static template record "cSet stylesheet" */
-/* TYPO3 CVS ID: $Id$ */
+/* TYPO3 SVN ID: $Id$ */
A:link {
background-color : transparent;
}
-SELECT {
+SELECT {
font-family: Verdana, Arial, Helvetica;
- font-size: 10px
+ font-size: 10px
}
-TEXTAREA {
- font-family: Verdana, Arial, Helvetica;
+TEXTAREA {
+ font-family: Verdana, Arial, Helvetica;
+ font-size: 10px
+}
+INPUT {
+ font-family: Verdana, Arial, Helvetica;
font-size: 10px
-}
-INPUT {
- font-family: Verdana, Arial, Helvetica;
- font-size: 10px
}
font-family : Verdana, sans-serif;
font-size : 10px;
color : #333399;
- margin-left : 40px;
+ margin-left : 40px;
}
.sitemap4 {
font-family : Verdana, sans-serif;
// All output must go to $content.
// This line will make sure that the page is NOT cached!! You may NOT set the value to false as some other code may have set it to true on purpose and this must be respected.
// $GLOBALS['TSFE']->set_no_cache();
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
if (!is_object($this)) die ('Error: No parent object present.');
<?php
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
if (!is_object($TSFE)) die ('Error: No parent object present.');
<?php
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
if (!is_object($this)) die ('Error: No parent object present.');
-/* TYPO3 CVS id: $id$ */
+/* TYPO3 SVN id: $id$ */
/* Template stylesheet which can be used for new sites */
/* Make a copy of this stylesheet to some other location, modify it and use it from there! */
/*
DIV.csc-frame-frame1 H1, DIV.csc-frame-frame1 H2, DIV.csc-frame-frame1 H3, DIV.csc-frame-frame1 H4, DIV.csc-frame-frame1 H5 { margin-top: 2px; }
DIV.csc-frame-frame2 H1, DIV.csc-frame-frame2 H2, DIV.csc-frame-frame2 H3, DIV.csc-frame-frame2 H4, DIV.csc-frame-frame2 H5 { margin-top: 2px; }
-
+
/******************/
/* Headers, plain */
/******************/
TABLE.contenttable-1 P { color: #186900; }
TABLE.contenttable-1 TR.tr-0 TD P { font-weight: bold; }
TABLE.contenttable-1 TR.tr-0 TD { background-color: #D1D2E4;}
-
+
TABLE.contenttable-2 P { color: #10007B; }
TABLE.contenttable-2 TR TD.td-0 { background-color: #F5FFAA;}
TABLE.contenttable-2 TR TD.td-0 P { font-weight: bold; }
TABLE.csc-uploads-3 TR TD { vertical-align: middle; }
TABLE.csc-uploads-3 TR.tr-even TD.csc-uploads-icon IMG { border: 2px solid #333333; }
TABLE.csc-uploads-3 TR.tr-odd TD.csc-uploads-icon IMG { border: 2px solid #333333; }
-
+
/*****************/
/****************************************/
/* Frontend editing / TYPO3 Admin Panel */
/****************************************/
-IMG.frontEndEditIcons { vertical-align: middle; margin: 0px 2px 0px 2px; }
+IMG.frontEndEditIcons { vertical-align: middle; margin: 0px 2px 0px 2px; }
/* Default styles for the Admin Panel */
TABLE.typo3-adminPanel { border: 1px solid black; background-color: #F6F2E6; }
TABLE.typo3-adminPanel TR.typo3-adminPanel-itemHRow TD { background-color: #ABBBB4; }
TABLE.typo3-adminPanel TABLE, TABLE.typo3-adminPanel TD { border: 0px; }
TABLE.typo3-adminPanel TD FONT { font-family: verdana; font-size: 10px; color: black; }
-TABLE.typo3-adminPanel TD A FONT { font-family: verdana; font-size: 10px; color: black; }
+TABLE.typo3-adminPanel TD A FONT { font-family: verdana; font-size: 10px; color: black; }
TABLE.typo3-editPanel { border: 1px solid black; background-color: #F6F2E6; }
TABLE.typo3-editPanel TD { border: 0px; }
-/* TYPO3 CVS id: $id$ */
+/* TYPO3 SVN id: $id$ */
/* Experimental stylesheet which highlights/outlines all elements */
FORM { margin: 0px 0px 0px 0px;}
P, PRE { margin: 0px 0px 0px 0px; }
-
+
/********************************/
/* Frames, spacing, link-to-top */
DIV.csc-frame-indent6633 { padding-right: 33%; }
DIV.csc-frame-frame1 { background-color: red; }
DIV.csc-frame-frame2 { background-color: green; }
-
+
/******************/
/* Headers, plain */
/******************/
TABLE.contenttable-1 P { color: blue; }
TABLE.contenttable-1 TR.tr-0 TD { background-color: #ff9900;}
TABLE.contenttable-1 TR.tr-0 TD P { font-weight: bold; }
-
+
TABLE.contenttable-2 P { color: red; }
TABLE.contenttable-2 TR TD.td-0 { background-color: #ff9900;}
TABLE.contenttable-2 TR TD.td-0 P { font-weight: bold; }
TABLE.csc-uploads-3 TR TD { vertical-align: middle; }
TABLE.csc-uploads-3 TR.tr-even TD.csc-uploads-icon IMG { border: 3px solid black; }
TABLE.csc-uploads-3 TR.tr-odd TD.csc-uploads-icon IMG { border: 3px solid red; }
-
+
/*****************/
DIV.csc-menu P A { color: green; }
/* Menu / Sitemap, "Menu of these pages" */
-DIV.csc-menu-def P A { color: red; }
+DIV.csc-menu-def P A { color: red; }
/* Menu / Sitemap, "Menu of subpages to these pages" */
DIV.csc-menu-1 { border-color: navy; }
/****************************************/
/* Frontend editing / TYPO3 Admin Panel */
/****************************************/
-IMG.frontEndEditIcons { vertical-align: middle; margin: 0px 2px 0px 2px; }
+IMG.frontEndEditIcons { vertical-align: middle; margin: 0px 2px 0px 2px; }
TABLE.typo3-adminPanel { border: 2px solid yellow; background-color: #ff6699; }
TABLE.typo3-adminPanel TR.typo3-adminPanel-hRow TD { background-color: #22aabb; }
PAGE_TARGET = page
[compatVersion = 4.2.0]
-
- # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: set to "" (empty). If you have frames in the template set to "page"
+
+ # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: set to "" (empty). If you have frames in the template set to "page"
PAGE_TARGET =
content.pageFrameObj >
[END]
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
visited.selector = + :visited
visited.attribs = LINKS
}
-
+
content = < tt_content.CSS_editor
}
caption.attribs = TEXT
caption.selector = + .csc-caption
caption.example = <P class="csc-caption">Caption text<BR>Dixit autem Deus fiant luminaria in firmamento caeli ut dividant diem ac noctem et sint...</P>
-
+
menu_sitemap = Menu/Sitemap item
menu_sitemap.attribs = TEXT
menu_sitemap.selector = + .csc-menu
menu_sitemap.example = <P class="csc-menu">Menu/Sitemap items</P><P class="csc-menu">Item number 2</P><P class="csc-menu">The third item here</P>
-
+
section = Menu/Sitemap item: Section-title
section.attribs = TEXT
section.selector = + .csc-section
section.example = <P class="csc-section">Menu/Sitemap item: Section-title</P>
-
+
header_date = Header date
header_date.attribs = TEXT
header_date.selector = + .csc-header-date
header_date.example = <P class="csc-header-date">Header date: 01/02 2002:</P>
-
+
P = Page content
P.selector = +.bodytext
P.attribs = BODYTEXT
firstline.selector = +:first-line
firstline.attribs = TEXT,TEXT+
firstline.example = <P class="bodytext">In principio creavit Deus caelum et terram terra autem erat inanis et vacua et tenebrae super faciem abyssi et spiritus...</P>
-
+
firstletter = First letter
firstletter.selector = +:first-letter
firstletter.attribs = TEXT,TEXT+
firstletter.example = <P class="bodytext">In principio creavit Deus caelum et terram terra autem erat inanis et vacua et tenebrae super faciem abyssi et spiritus...</P>
-
+
P_plus = Page content, next paragraph
P_plus.selector = ++ P
P_plus.attribs = BODYTEXT,TEXT+
)
links = < CSS_editor.ch.A
- links.example = <P class="bodytext">This is bodytext <A href="#">with a link</A> in it.</P>
+ links.example = <P class="bodytext">This is bodytext <A href="#">with a link</A> in it.</P>
}
links = < CSS_editor.ch.A
links.example = <P>This is text <A href="#">with a link</A> in it.</P>
}
-
+
H1 = Header 1
H1.selector = H1
H1.attribs = HEADER
H1.example = <H1>Header 1 example <A href="#"> with link</A></H1><P>Bodytext, Et praeessent diei ac nocti et dividerent lucem ac tenebras et vidit Deus quod esset bonum et factum est...</P>
H1.exampleStop=1
H1.ch.links = < CSS_editor.ch.A
- H1.ch.links.example =
-
+ H1.ch.links.example =
+
H2 = Header 2
H2.selector = H2
H2.attribs = HEADER
H2.example = <H2>Header 2 example <A href="#"> with link</A></H2><P>Bodytext, Et praeessent diei ac nocti et dividerent lucem ac tenebras et vidit Deus quod esset bonum et factum est...</P>
H2.exampleStop=1
H2.ch.links = < CSS_editor.ch.A
- H2.ch.links.example =
-
+ H2.ch.links.example =
+
H3 = Header 3
H3.selector = H3
H3.attribs = HEADER
H3.example = <H3>Header 3 example <A href="#"> with link</A></H3><P>Bodytext, Et praeessent diei ac nocti et dividerent lucem ac tenebras et vidit Deus quod esset bonum et factum est...</P>
H3.exampleStop=1
H3.ch.links = < CSS_editor.ch.A
- H3.ch.links.example =
-
+ H3.ch.links.example =
+
H4 = Header 4
H4.selector = H4
H4.attribs = HEADER
H4.example = <H4>Header 4 example <A href="#"> with link</A></H4><P>Bodytext, Et praeessent diei ac nocti et dividerent lucem ac tenebras et vidit Deus quod esset bonum et factum est...</P>
H4.exampleStop=1
H4.ch.links = < CSS_editor.ch.A
- H4.ch.links.example =
-
+ H4.ch.links.example =
+
H5 = Header 5
H5.selector = H5
H5.attribs = HEADER
H5.example = <H5>Header 5 example <A href="#"> with link</A></H5><P>Bodytext, Et praeessent diei ac nocti et dividerent lucem ac tenebras et vidit Deus quod esset bonum et factum est...</P>
H5.exampleStop=1
H5.ch.links = < CSS_editor.ch.A
- H5.ch.links.example =
-
+ H5.ch.links.example =
+
H6 = Header 6
H6.selector = H6
H6.attribs = HEADER
H6.example = <H6>Header 6 example <A href="#"> with link</A></H6><P>Bodytext, Et praeessent diei ac nocti et dividerent lucem ac tenebras et vidit Deus quod esset bonum et factum est...</P>
H6.exampleStop=1
H6.ch.links = < CSS_editor.ch.A
- H6.ch.links.example =
-
+ H6.ch.links.example =
+
PRE = Preformatted code
PRE.selector = PRE
PRE.attribs = TEXT,margin-top,margin-bottom
Normal line again. </PRE>
<PRE>Yet a <PRE> section here!</PRE>
)
-
+
OL = Ordered bullet lists (numbers)
OL.selector = OL
OL.attribs = TEXT,BULLETS
OL.example = <P>Ordered bulletlist:</P><OL><LI>Bullet number 1</LI><LI>Bullet number 2, Dixitque Deus ecce dedi vobis omnem herbam adferentem semen super...</LI><LI>Bullet number 3, Et praeessent diei ac nocti et dividerent lucem ac tenebras et vidit Deus quod esset bonum et factum est...</LI></OL>
-
+
UL = Unordered bullet lists
UL.selector = UL
UL.attribs = TEXT,BULLETS
UL.example = <P>Un-Ordered bulletlist:</P><UL><LI>Bullet number 1</LI><LI>Bullet number 2, Dixitque Deus ecce dedi vobis omnem herbam adferentem semen super...</LI><LI>Bullet number 3, Et praeessent diei ac nocti et dividerent lucem ac tenebras et vidit Deus quod esset bonum et factum est...</LI></UL>
-
+
TABLE = Tables in content
TABLE.selector = TABLE.contenttable
TABLE.attribs = TABLE
- TABLE.example (
+ TABLE.example (
<table class="contenttable">
<tr>
<td><P>Column/Row 1</P></td>
BLOCKQUOTE.selector = BLOCKQUOTE
BLOCKQUOTE.attribs = margin-left, margin-right
BLOCKQUOTE.example = <BLOCKQUOTE><P>This is bodytext in a block-quote.</P></BLOCKQUOTE>
-
+
# tx_myextension = < plugin.tx_myextension.CSS_editor
}
}
// Commented out since it needs update - or a vision... ?
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
[END]
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
*
* @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*
*/
protected $thisConfig; // Reference to RTE PageTSConfig
protected $toolbar; // Reference to RTE toolbar array
protected $LOCAL_LANG; // Frontend language array
-
+
protected $pluginButtons = 'formattext, bidioverride, big, bold, citation, code, definition, deletedtext, emphasis, insertedtext, italic, keyboard, quotation, sample, small, span, strikethrough, strong, subscript, superscript, underline, variable';
-
+
protected $convertToolbarForHtmlAreaArray = array (
'formattext' => 'FormatText',
'bidioverride' => 'BiDiOverride',
'underline' => 'Underline',
'variable' => 'Variable',
);
-
+
private $defaultInlineElements = array(
'none' => 'No markup',
'b' => 'Bold',
'u' => 'Underline',
'var' => 'Variable',
);
-
+
private $defaultInlineElementsOrder = 'none, bidioverride, big, bold, citation, code, definition, deletedtext, emphasis, insertedtext, italic, keyboard,
monospaced, quotation, sample, small, span, strikethrough, strong, subscript, superscript, underline, variable';
-
+
private $buttonToInlineElement = array(
'none' => 'none',
'bidioverride' => 'bdo',
'underline' => 'u',
'variable' => 'var',
);
-
+
/**
* Return JS configuration of the htmlArea plugins registered by the extension
*
*/
public function buildJavascriptConfiguration($RTEcounter) {
global $TSFE, $LANG;
-
+
$registerRTEinJavascriptString = '';
if (in_array('formattext', $this->toolbar)) {
if (!is_array( $this->thisConfig['buttons.']) || !is_array( $this->thisConfig['buttons.']['formattext.'])) {
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.formattext = new Object();';
}
-
+
// Default inline elements
$hideItems = array();
$restrictTo = array('*');
$inlineElementsOrder = $this->defaultInlineElementsOrder;
$prefixLabelWithTag = false;
$postfixLabelWithTag = false;
-
+
// Processing PageTSConfig
if (is_array($this->thisConfig['buttons.']) && is_array($this->thisConfig['buttons.']['formattext.'])) {
// Removing elements
$prefixLabelWithTag = ($this->thisConfig['buttons.']['formattext.']['prefixLabelWithTag'])?true:$prefixLabelWithTag;
$postfixLabelWithTag = ($this->thisConfig['buttons.']['formattext.']['postfixLabelWithTag'])?true:$postfixLabelWithTag;
}
-
+
$inlineElementsOrder = array_diff(t3lib_div::trimExplode(',', $this->htmlAreaRTE->cleanList($inlineElementsOrder), 1), $hideItems);
if (!in_array('*', $restrictTo)) {
$inlineElementsOrder = array_intersect($inlineElementsOrder, $restrictTo);
}
-
+
// Localizing the options
$inlineElementsOptions = array();
foreach ($inlineElementsOrder as $item) {
}
$inlineElementsOptions[$this->buttonToInlineElement[$item]] = (($prefixLabelWithTag && $item != 'none')?($this->buttonToInlineElement[$item].' - '):'') . $inlineElementsOptions[$this->buttonToInlineElement[$item]] . (($postfixLabelWithTag && $item != 'none')?(' - '.$this->buttonToInlineElement[$item]):'');
}
-
+
$first = array_shift($inlineElementsOptions);
// Sorting the options
if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.']['formattext.']) || !$this->thisConfig['buttons.']['formattext.']['orderItems']) {
"' . $label . '" : "' . $item . '"';
}
$JSInlineElements .= '};';
-
+
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.formattext.dropDownOptions = '. $JSInlineElements;
}
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
/***************************************************
startId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'S',
endId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'E'
};
-
+
var startSpan;
var endSpan;
var rangeClone = range.cloneRange();
-
+
// For collapsed ranges, add just the start marker.
if (!range.collapsed ) {
endSpan = this._doc.createElement("span");
rangeClone.collapse(false);
rangeClone.insertNode(endSpan);
}
-
+
startSpan = this._doc.createElement("span");
startSpan.style.display = "none";
startSpan.id = bookmark.startId;
HTMLArea.prototype.moveToBookmark = function (bookmark) {
var startSpan = this.getBookmarkNode(bookmark, true);
var endSpan = this.getBookmarkNode(bookmark, false);
-
+
var range = this._createRange();
range.setStartBefore(startSpan);
HTMLArea.removeFromParent(startSpan);
this.selectNodeContents(toBeSelected, false);
};
-/*
+/*
* Insert HTML source code at the current position.
* Delete the current selection, if any.
*/
// Check if all affected nested elements are displayed (style.display!='none'):
if (HTMLArea.allElementsAreDisplayed(editor.nested.sorted)) {
window.setTimeout(function() {
- try {
+ try {
editor._doc.designMode = "on";
if (editor.config.sizeIncludesToolbar && editor._initialToolbarOffsetHeight != editor._toolbar.offsetHeight) {
editor.sizeIframe(-2);
} else {
alert(HTMLArea.I18N.msg["Mozilla-Org-Install-Not-Enabled"]);
HTMLArea._appendToLog("WARNING [HTMLArea::execCommand]: Mozilla install was not enabled.");
- return;
+ return;
}
}
} else if (confirm(HTMLArea.I18N.msg["Moz-Clipboard"])) {
if (returnCode == 0) {
if (HTMLArea._mozillaXpi["TYPO3 htmlArea RTE Preferences"]) alert(HTMLArea.I18N.msg["Moz-Extension-Success"]);
else alert(HTMLArea.I18N.msg["Allow-Clipboard-Helper-Extension-Success"]);
- return;
+ return;
} else {
alert(HTMLArea.I18N.msg["Moz-Extension-Failure"]);
HTMLArea._appendToLog("WARNING [HTMLArea::execCommand]: Mozilla install return code was: " + returnCode + ".");
- return;
+ return;
}
};
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
/***************************************************
range.pasteHTML(toBeInserted.outerHTML);
};
-/*
+/*
* Insert HTML source code at the current position.
* Delete the current selection, if any.
*/
HTMLArea.prototype._checkBackspace = function() {
var sel = this._getSelection();
var range = this._createRange(sel);
- if(sel.type == "Control"){
- var el = this.getParentElement();
- var p = el.parentNode;
- p.removeChild(el);
- return true;
+ if(sel.type == "Control"){
+ var el = this.getParentElement();
+ var p = el.parentNode;
+ p.removeChild(el);
+ return true;
} else {
var r2 = range.duplicate();
r2.moveStart("character", -1);
/*
* Main script of TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
/***************************************************
* Build array of scripts to be loaded
*/
HTMLArea.is_loaded = false;
-HTMLArea.onload = function(){
- HTMLArea.is_loaded = true;
+HTMLArea.onload = function(){
+ HTMLArea.is_loaded = true;
HTMLArea._appendToLog("All scripts successfully loaded.");
};
HTMLArea.loadTimer;
return (function() {
var url = HTMLArea._scripts[i];
if (HTMLArea._request[i].readyState != 4) return;
- if (HTMLArea._request[i].status == 200) {
+ if (HTMLArea._request[i].status == 200) {
try {
eval(HTMLArea._request[i].responseText);
HTMLArea._scriptLoaded[i] = true;
HTMLArea.init = function() {
HTMLArea._eventCache = HTMLArea._eventCacheConstructor();
if (window.XMLHttpRequest || window.ActiveXObject) {
- try {
+ try {
var success = true;
for (var i = 0, n = HTMLArea._scripts.length; i < n && success; i++) {
success = success && HTMLArea._getScript(i);
// URL-s
this.imgURL = "images/";
this.popupURL = "popups/";
-
+
this.btnList = {
InsertHorizontalRule: ["Horizontal Rule", "ed_hr.gif",false, function(editor) {editor.execCommand("InsertHorizontalRule");}],
HtmlMode: ["Toggle HTML Source", "ed_html.gif", true, function(editor) {editor.execCommand("HtmlMode");}],
}
break;
case "active":
- if (newval) {
+ if (newval) {
HTMLArea._addClass(el, "buttonPressed");
HTMLArea._addClass(el.parentNode, "buttonPressed");
} else {
first : first_cell_on_line,
labelUsed : false
};
-
+
cmd = txt;
var dropdown = this.config.customSelects[cmd];
if (typeof(dropdown) != "undefined") {
newObj["labelUsed"] = true;
}
HTMLArea._addEvent(newObj["el"], "change", HTMLArea.toolBarButtonHandler);
-
+
for (var i in options) {
if (options.hasOwnProperty(i)) {
var op = document.createElement("option");
newObj["el"].appendChild(op);
}
}
-
+
newObj["created"] = true;
}
HTMLArea._removeClass(target.parentNode, "buttonHover");
HTMLArea._removeClass(target, "buttonActive");
HTMLArea._removeClass(target.parentNode, "buttonActive");
- if (obj.active) {
+ if (obj.active) {
HTMLArea._addClass(target, "buttonPressed");
HTMLArea._addClass(target.parentNode, "buttonPressed");
}
var dimensions = this.accessParentElements(parentElements, 'this.getDimensions()');
if(height.indexOf("%") == -1) {
- height = parseInt(height) - diff;
+ height = parseInt(height) - diff;
if (this.config.sizeIncludesToolbar) {
this._initialToolbarOffsetHeight = dimensions.toolbar.height;
height -= dimensions.toolbar.height;
}
} else {
- result = eval(callbackFunc);
+ result = eval(callbackFunc);
}
if (!this.config.fullPage) {
doc.body.style.borderWidth = "0px";
doc.body.className = "htmlarea-content-body";
- try {
+ try {
doc.body.innerHTML = this._textArea.value;
- } catch(e) {
+ } catch(e) {
HTMLArea._appendToLog("[HTMLArea::initIframe]: The HTML document is not well-formed.");
alert(HTMLArea.I18N.msg["HTML-document-not-well-formed"]);
docWellFormed = false;
editor._textArea.form._editorNumber = null;
}
HTMLArea.onload = null;
-
+
// cleaning plugin handlers
for (var plugin in editor.plugins) {
if (editor.plugins.hasOwnProperty(plugin)) {
editor._toolbarObjects[txt] = null;
}
}
-
+
// cleaning the statusbar elements
if (editor._statusBarTree.hasChildNodes()) {
for (var i = editor._statusBarTree.firstChild; i; i = i.nextSibling) {
}
// Get the html text
var txt = this.getInnerHTML();
-
+
if (newSnapshot) {
// If previous slot contains the same text, a new one should not be used
if (this._undoPos == 0 || this._undoQueue[this._undoPos - 1].text != txt) {
}
}
}
-
+
if (cmd == "CreateLink") {
btn.state("enabled", (!text || btn.text) && (inContext || selection));
} else {
}
}
}
-
+
if (this._customUndo) {
this._undoTakeSnapshot();
}
HTMLArea.prototype._getFirstAncestor = function(sel,types) {
var prnt = this._activeElement(sel);
if (prnt == null) {
- try {
+ try {
prnt = (HTMLArea.is_ie ? this._createRange(sel).parentElement() : this._createRange(sel).commonAncestorContainer);
} catch(e) {
return null;
while (prnt) {
if (prnt.nodeType == 1) {
if (types == null) return prnt;
- for (var i = 0; i < types.length; i++) {
+ for (var i = 0; i < types.length; i++) {
if(prnt.tagName.toLowerCase() == types[i]) return prnt;
}
if(prnt.tagName.toLowerCase() == 'body') break;
if (HTMLArea.is_gecko) editor._detectURL(ev);
switch (ev.keyCode) {
case 13 : // KEY enter
- if (HTMLArea.is_gecko) {
+ if (HTMLArea.is_gecko) {
if (!ev.shiftKey && !editor.config.disableEnterParagraphs) {
if (editor._checkInsertP()) {
HTMLArea._stopEvent(ev);
*/
HTMLArea.getHTML = function(root, outputRoot, editor){
try {
- return HTMLArea.getHTMLWrapper(root,outputRoot,editor);
+ return HTMLArea.getHTMLWrapper(root,outputRoot,editor);
} catch(e) {
HTMLArea._appendToLog("The HTML document is not well-formed.");
if(!HTMLArea._debugMode) alert(HTMLArea.I18N.msg["HTML-document-not-well-formed"]);
content += (content.length ? '&' : '') + 'charset=' + charset;
if (typeof(addParams) != "undefined") content += addParams;
if (url.substring(0,1) == '/') {
- var postUrl = _typo3_host_url + url;
+ var postUrl = _typo3_host_url + url;
} else {
var postUrl = _typo3_host_url + _editor_url + url;
}
* Set the size of textarea with the RTE. It's called, if we are in fullscreen-mode.
*/
var setRTEsizeByJS = function(divId, height, width) {
- if (HTMLArea.is_gecko) height = height - 25;
+ if (HTMLArea.is_gecko) height = height - 25;
else height = height - 60;
if (height > 0) document.getElementById(divId).style.height = height + "px";
- if (HTMLArea.is_gecko) width = "99%";
+ if (HTMLArea.is_gecko) width = "99%";
else width = "97%";
document.getElementById(divId).style.width = width;
};
HTMLArea.initTimer[editorNumber] = window.setTimeout( "HTMLArea.initEditor(" + editorNumber + ");", 150);
} else {
var RTE = RTEarea[editorNumber];
-
+
// Get the configuration properties
var config = new HTMLArea.Config();
for (var property in RTE) {
// Create an editor for the textarea
var editor = new HTMLArea(RTE.id, config);
RTE.editor = editor;
-
+
// Save the editornumber in the object
editor._typo3EditerNumber = editorNumber;
editor._editorNumber = editorNumber;
-
+
// Override these settings if they were ever modified
editor.config.width = "auto";
editor.config.height = "auto";
editor.config.sizeIncludesToolbar = true;
editor.config.fullPage = false;
-
+
// Register the plugins included in the configuration
for (var plugin in editor.config.plugin) {
if (editor.config.plugin.hasOwnProperty(plugin) && editor.config.plugin[plugin]) {
editor.registerPlugin(plugin);
}
}
-
+
editor.onGenerate = HTMLArea.onGenerateHandler(editorNumber);
-
+
editor.generate();
return false;
- }
+ }
} else {
document.getElementById('pleasewait' + editorNumber).style.display = 'none';
document.getElementById('editorWrap' + editorNumber).style.visibility = 'visible';
*
*/
HTMLArea.Plugin = HTMLArea.Base.extend({
-
+
/**
* HTMLArea.plugin constructor
*
}
return this.configurePlugin(editor);
},
-
+
/**
* Configures the plugin
* This function is invoked by the class constructor.
configurePlugin : function(editor) {
return false;
},
-
+
/**
* Registers the plugin "About" information
*
return true;
}
},
-
+
/**
* Returns the plugin information
*
getPluginInformation : function() {
return this.pluginInformation;
},
-
+
/**
* Returns true if the button is enabled in the toolbar configuration
*
}
return false;
},
-
+
/**
* Registors a button for inclusion in the toolbar
*
}
return false;
},
-
+
/**
* Registors a drop-down list for inclusion in the toolbar
*
}
return false;
},
-
+
/**
* Returns the drop-down configuration
*
getDropDownConfiguration : function(dropDownId) {
return this.editorConfiguration.customSelects[dropDownId];
},
-
+
/**
* Registors a hotkey
*
return false;
}
},
-
+
/**
* Returns the buttonId corresponding to the hotkey, if any
*
}
return "";
},
-
+
/**
* Returns the hotkey configuration
*
return null;
}
},
-
+
/**
* The toolbar refresh handler of the plugin
* This function may be defined by the plugin subclass.
* @return boolean
*/
onUpdateToolbar : null,
-
+
/**
* The keyPress event handler
* This function may be defined by the plugin subclass.
* @return boolean
*/
onKeyPress : null,
-
+
/**
* The hotKey event handler
* This function may be defined by the plugin subclass.
* @return boolean
*/
onHotKey : null,
-
+
/**
* The onMode event handler
* This function may be redefined by the plugin subclass.
this.dialog.close();
}
},
-
+
/**
* The onGenerate event handler
* This function may be defined by the plugin subclass.
* @return boolean
*/
onGenerate : null,
-
+
/**
* Make function reference in order to avoid memory leakage in IE
*
return (function(arg1, arg2) {
self[functionName](arg1, arg2);});
},
-
+
/**
* Localize a string
*
localize : function (label) {
return this.I18N[label] || HTMLArea.I18N.dialogs[label] || HTMLArea.I18N.tooltips[label];
},
-
+
/**
* Load a Javascript file synchronously
*
return false;
}
},
-
+
/**
* Post data to the server
*
postData : function (url, data, handler) {
HTMLArea._postback(url, data, handler, this.editorConfiguration.RTEtsConfigParams, (this.editorConfiguration.typo3ContentCharset ? this.editorConfiguration.typo3ContentCharset : "utf-8"));
},
-
+
/**
* Open a dialog window or bring focus to it if is already opened
*
);
}
},
-
+
/**
* Make url from the name of a popup of the plugin
*
makeUrlFromPopupName : function(popupName) {
return this.editor.popupURL("plugin://" + this.name + "/" + popupName);
},
-
+
/**
* Make url from module path
*
makeUrlFromModulePath : function(modulePath, parameters) {
return this.editor.popupURL(modulePath + "?" + this.editorConfiguration.RTEtsConfigParams + "&editorNo=" + this.editorNumber + "&sys_language_content=" + this.editorConfiguration.sys_language_content + "&contentTypo3Language=" + this.editorConfiguration.typo3ContentLanguage + "&contentTypo3Charset=" + encodeURIComponent(this.editorConfiguration.typo3ContentCharset) + (parameters?parameters:''));
},
-
+
/**
* Append an entry at the end of the troubleshooting log
*
*
*/
HTMLArea.Dialog = HTMLArea.Base.extend({
-
+
/**
* HTMLArea.Dialog constructor
*
this.arguments = arguments;
}
this.plugin.dialog = this;
-
+
if (HTMLArea.Dialog[this.plugin.name] && HTMLArea.Dialog[this.plugin.name].hasOpenedWindow() && HTMLArea.Dialog[this.plugin.name].plugin != this.plugin) {
HTMLArea.Dialog[this.plugin.name].close();
}
HTMLArea.Dialog[this.plugin.name] = this;
this.dialogWindow = window.open(url, this.plugin.name + "Dialog", "toolbar=no,location=no,directories=no,menubar=no,resizable=yes,top=100,left=100,dependent=yes,dialog=yes,chrome=no,width=" + dimensions.width + ",height=" + dimensions.height + ",scrollbars=" + showScrollbars);
-
+
if (!this.dialogWindow) {
this.plugin.appendToLog("openDialog", "Dialog window could not be opened with url " + url);
return false;
}
-
+
if (typeof(dialogOpener) !== "undefined") {
this.dialogWindow.opener = dialogOpener;
this.dialogWindow.opener.openedDialog = this;
if (!this.dialogWindow.opener) {
this.dialogWindow.opener = this.window;
}
-
+
if (!url) this.createForm();
return true;
},
-
+
/**
* Creates the document and the dialogue form of the dialogue window
*
* @return void
*/
createForm : function () {
-
+
this.document = this.dialogWindow.document;
this.editor = this.plugin.editor;
-
+
if (HTMLArea.is_ie) {
this.document.open();
var html = "<html><head></head><body></body></html>\n";
this.focus();
}
},
-
+
/**
* Adds OK and Cancel buttons to the dialogue window
*
}
}
},
-
+
/**
* Call the form input handler
*
this.action(this, params);
return false;
},
-
+
/**
* Cheks if the dialogue has an open dialogue window
*
hasOpenedWindow : function () {
return this.dialogWindow && !this.dialogWindow.closed;
},
-
+
/**
* Initialize the dialog window: load the stylesheets, localize labels, resize if required, etc.
* This function MUST be invoked from the dialog window in the onLoad event handler
// Resize the dialog window to its contents
if (!noResize) this.resize(noResize);
},
-
+
/**
* Load the stylesheets in the dialog window
*
if (link.href.indexOf("http") == -1 && HTMLArea.is_gecko) link.href = _typo3_host_url + link.href;
head.appendChild(link);
},
-
+
/**
* Localize the labels contained in the dialog window
*
label = this.plugin.localize(this.dialogWindow.document.title);
if (label) this.dialogWindow.document.title = label;
},
-
+
/**
* Resize the dialog window to its contents
*
innerX = body.clientWidth;
innerY = body.clientHeight;
}
-
+
var pageY = Math.max(body.scrollHeight, body.offsetHeight);
if (innerY == pageY) {
dialogWindow.resizeTo(body.scrollWidth, body.scrollHeight+75);
} else {
dialogWindow.resizeBy(Math.max(body.scrollWidth, body.offsetWidth) - innerX, pageY - innerY);
}
-
+
// center on parent if allowed
var W = body.offsetWidth;
var H = body.offsetHeight;
dialogWindow.moveTo(x, y);
}
},
-
+
/**
* Resize the Opera dialog window to its contents, based on size of content div
*
var docElement = doc.documentElement;
var body = doc.body;
var width = 0, height = 0;
-
+
var contentWidth = content.offsetWidth;
var contentHeight = content.offsetHeight;
dialogWindow.resizeTo( contentWidth + 200, contentHeight + 200 );
-
+
if (dialogWindow.innerWidth) {
width = dialogWindow.innerWidth;
height = dialogWindow.innerHeight;
}
dialogWindow.resizeTo( contentWidth + ( ( contentWidth + 200 ) - width ), contentHeight + ( (contentHeight + 200 ) - (height - 16) ) );
},
-
+
/**
* Perform the action function when the dialog end
*
this.action(val);
}
},
-
+
/**
* Bring the focus on the dialog window
*
focus : function () {
this.dialogWindow.focus();
},
-
+
/**
* Recover focus from the parent window
*
}
return false;
},
-
+
/**
* Close the dialog window
*
}
return false;
},
-
+
/**
* Make function reference in order to avoid memory leakage in IE
*
return (function(arg1, arg2) {
self[functionName](arg1, arg2);});
},
-
+
/**
* Escape event handler
*
}
return true;
},
-
+
/**
* Capture unload, escape and focus events
*
this.captureFocus(this.dialogWindow.opener);
}
},
-
+
/**
* Capture focus events
*
this.captureFocus(w.frames[i]);
}
},
-
+
/**
* Release all event handlers that were set when the dialogue window was opened
*
HTMLArea._removeEvent(this.plugin.editor._iframe.contentWindow, "unload", this.unloadFunctionReference);
}
},
-
+
/**
* Release focus capturing events that were set when the dialogue window was opened
*
/*
* About window for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
-->
<head>
<!--
var HTMLArea = window.opener.HTMLArea;
var dialog = HTMLArea.Dialog.AboutEditor;
-
+
function Init() {
initDocument();
dialog.initialize();
}
-
+
var TABS = [];
var CURRENT_TAB = 0;
var CONTENT_HEIGHT_DIFF = 0;
var CONTENT_WIDTH_DIFF = 0;
-
+
function selectTab(idx) {
var ct = TABS[CURRENT_TAB];
HTMLArea._removeClass(ct, "tab-current");
document.body.style.visibility = "visible";
document.cookie = "HTMLAREA-ABOUT-TAB=" + idx;
}
-
+
function initDocument() {
var editor = dialog.plugin.editor;
var version = document.getElementById("version");
"</tr></thead><tbody>";
for (i in editor.plugins) {
info = editor.plugins[i];
- html += "<tr><td>" + info.name + " v" + info.version + "</td>" +
+ html += "<tr><td>" + info.name + " v" + info.version + "</td>" +
"<td><a href='" + info.developer_url + "' target='_blank' >" +
info.developer + "</a></td>" +
"<td><a href='" + info.sponsor_url + "' target='_blank' >" +
"</tr>";
++j;
}
-
+
if (j) {
html += "</tbody></table>";
plugins.innerHTML = "<p><span>The following plugins have been loaded.</span></p>" + html;
} else {
plugins.innerHTML = "<p><span>No plugins have been loaded.</span></p>";
}
-
+
plugins.innerHTML += "<p><span>User agent reports:</span><br/>" + navigator.userAgent + "</p>";
-
+
var content = document.getElementById("tab-areas-content");
if (window.innerHeight) {
CONTENT_HEIGHT_DIFF = window.innerHeight - 250;
CONTENT_WIDTH_DIFF = document.body.offsetWidth - 400;
}
window.onresize();
-
+
var bar = document.getElementById("tabbar");
j = 0;
for (i = bar.firstChild; i; i = i.nextSibling) {
dialog.close();
return false;
}
-
+
window.onresize = function() {
var content = document.getElementById("tab-areas-content");
if (window.innerHeight) {
/*
* Character Map Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
-->
<head>
View(null, character);
return false;
};
-
+
var oldView = null;
function View(td, character) {
if (oldView) {
oldView.className += " character-hilite";
}
};
-
+
function Set(string) {
var character = string;
dialog.performAction(character);
return false;
};
-
+
function onCancel() {
dialog.close();
return false;
/*
* Context Menu Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
ContextMenu = function(editor) {
var menu = [], opcode;
var tbo = this.editor.plugins["TableOperations"];
if (tbo) tbo = "TableOperations";
-
+
var selection = editor.hasSelectedText();
if(selection) {
if (toolbarObjects['Cut'] && toolbarObjects['Cut'].enabled) {
opcode = "Paste";
menu.push([i18n[opcode], ContextMenu.execCommandHandler(editor, opcode), null, btnList[opcode][1], opcode]);
}
-
+
var currentTarget = target,
tmp, tag, link = false,
table = null, tr = null, td = null, img = null, list = null, div = null;
-
+
for(; target; target = target.parentNode) {
tag = target.nodeName;
if(!tag) continue;
break;
}
}
-
+
if (selection && !link) {
if (menu.length) menu.push(null);
menu.push([i18n["Make link"],
i18n["Create a link"],
btnList["CreateLink"][1],"CreateLink"]);
}
-
+
if (!/^(html|body)$/i.test(currentTarget.nodeName)) {
if (/^(table|thead|tbody|tr|td|th|tfoot)$/i.test(currentTarget.nodeName)) {
tmp = table;
}
var el = (ev.target) ? ev.target : ev.srcElement;
for (; el != null && el != instance.currentMenu; el = el.parentNode);
- if (el == null) {
+ if (el == null) {
instance.closeMenu();
instance.editor.updateToolbar();
}
list = doc.createElement("ul");
list.className = "htmlarea-context-menu";
doc.body.appendChild(list);
-
+
var options = this.getContextMenu(target);
var n = options.length;
for (var i=0; i < n; ++i) {
/*
* Insert Image window for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id:$
+ * TYPO3 SVN ID: $Id$
*/
-->
<html class="popupwin">
document.getElementById("f_url").focus();
return false;
};
-
+
function onOK() {
var required = { "f_url": "image_url_required" };
for (var i in required) {
dialog.performAction(param);
return false;
};
-
+
function onCancel() {
dialog.close();
return false;
};
-
+
function onPreview() {
var f_url = document.getElementById("f_url");
var url = f_url.value;
<input type="text" name="border" id="f_border" size="5" title="Leave empty for no border" />
</li>
<li id="float">
- <label for="f_float" class="fl">Float:</label>
- <select class="float" size="1" name="style" id="f_float" title="Where the image should float">
+ <label for="f_float" class="fl">Float:</label>
+ <select class="float" size="1" name="style" id="f_float" title="Where the image should float">
<option value="none">Non-floating</option>
<option value="left">Left</option>
<option value="right">Right</option>
# Defines a few class selectors that can be simply taken as examples by anyone who needs to configure the RTE.
# This css file is referenced by property RTE.default.contentCSS in the default configuration of htmlArea RTE
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************/
/* Left, center and right alignment of text in paragraphs and cells.*/
/*
* Dynamic CSS Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
DynamicCSS = HTMLArea.Plugin.extend({
-
+
constructor : function(editor, pluginName) {
this.base(editor, pluginName);
},
-
+
/*
* This function gets called by the class constructor
*/
configurePlugin : function(editor) {
var editorNumber = editor._editorNumber;
-
+
/* Registering plugin "About" information */
var pluginInformation = {
version : "1.9",
license : "GPL"
};
this.registerPluginInformation(pluginInformation);
-
+
/* Registering the dropdown list */
var buttonId = "DynamicCSS-class";
var dropDownConfiguration = {
classesTag : RTEarea[editorNumber]["classesTag"]
};
this.registerDropDown(dropDownConfiguration);
-
+
return true;
},
-
+
onSelect : function(editor, buttonId) {
var obj = this.editorConfiguration.customSelects[buttonId];
var tbobj = editor._toolbarObjects[buttonId];
var index = document.getElementById(tbobj.elementId).selectedIndex;
var className = document.getElementById(tbobj.elementId).value;
-
+
editor.focusEditor();
var blocks = this.getSelectedBlocks(editor);
for (var k = 0; k < blocks.length; ++k) {
}
}
},
-
+
getSelectedBlocks : function(editor) {
var block, range, i = 0, blocks = [];
if (HTMLArea.is_gecko && !HTMLArea.is_safari && !HTMLArea.is_opera) {
}
return blocks;
},
-
+
onGenerate : function() {
var editor = this.editor;
var obj = editor.config.customSelects["DynamicCSS-class"];
if(HTMLArea.is_gecko) this.generate(editor);
},
-
+
onUpdateToolbar : function() {
var editor = this.editor;
var obj = editor.config.customSelects["DynamicCSS-class"];
if (HTMLArea.is_gecko && editor.getMode() === "wysiwyg" && editor.isEditable()) {
- if(obj.loaded) {
+ if(obj.loaded) {
this.updateValue(editor,obj);
} else {
if(obj.timeout) {
select.className = "buttonDisabled";
}
},
-
+
generate : function(editor) {
var obj = editor.config.customSelects["DynamicCSS-class"];
var classesUrl = obj["classesUrl"];
if(obj.loaded) this.updateValue(editor,obj);
else this.getCSSArray(editor);
},
-
+
getCSSArray : function(editor) {
var obj = editor.config.customSelects["DynamicCSS-class"];
obj.cssArray = this.parseStyleSheet(editor);
this.updateValue(editor,obj);
}
},
-
+
onMode : function(mode) {
var editor = this.editor;
if (mode == 'wysiwyg' && editor.isEditable()) {
var obj = editor.config.customSelects["DynamicCSS-class"];
- if (obj.loaded) {
+ if (obj.loaded) {
this.updateValue(editor,obj);
} else {
if(obj.timeout) {
}
}
},
-
+
updateValue : function(editor,obj) {
var cssClass, i;
if(!obj.loaded) {
if (select.disabled) HTMLArea._addClass(select, "buttonDisabled");
}
},
-
+
parseStyleSheet : function(editor) {
var obj = editor.config.customSelects["DynamicCSS-class"];
var iframe = editor._iframe.contentWindow ? editor._iframe.contentWindow.document : editor._iframe.contentDocument;
}
return newCssArray;
},
-
+
applyCSSRule : function(editor, cssRules, cssArray){
var cssElements = new Array(),
cssElement = new Array(),
tagName, className, rule, k,
obj = editor.config.customSelects["DynamicCSS-class"];
newCssArray = cssArray;
-
+
for (rule = 0; rule < cssRules.length; rule++) {
// StyleRule
if (cssRules[rule].selectorText) {
}
return newCssArray;
},
-
+
applyCSSIEImport : function(editor,cssIEImport,cssArray){
var newCssArray = new Object();
newCssArray = cssArray;
/*
* Find and Replace Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
FindReplace = HTMLArea.Plugin.extend({
-
+
constructor : function(editor, pluginName) {
this.base(editor, pluginName);
},
-
+
/*
* This function gets called by the class constructor
*/
configurePlugin : function(editor) {
-
+
/*
* Registering plugin "About" information
*/
license : "GPL"
};
this.registerPluginInformation(pluginInformation);
-
+
/*
* Registering the button
*/
dialog : true
};
this.registerButton(buttonConfiguration);
-
+
this.popupWidth = 300;
this.popupHeight = 400;
-
+
return true;
},
-
+
/*
* This function gets called when the button was pressed.
*
// Could be a button or its hotkey
var buttonId = this.translateHotKey(id);
buttonId = buttonId ? buttonId : id;
-
+
var sel = this.editor.getSelectedHTML(), param = null;
if (/\w/.test(sel)) {
sel = sel.replace(/<[^>]*>/g,"");
if (/\w/.test(sel)) {
param = { fr_pattern: sel };
}
-
+
this.dialog = this.openDialog("FindReplace", this.makeUrlFromPopupName("find_replace"), null, param, {width:this.popupWidth, height:this.popupHeight});
return false;
}
/*
* Find and Replace Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
-->
<head>
'fr_matchcase' : true,
'fr_replaceall' : true
};
-
+
function Init() {
editor = dialog.plugin.editor;
disable("fr_undo,fr_clear,fr_hiliteall", true);
-
+
var params = dialog.arguments;
if (params) {
document.getElementById('fr_pattern').value = params.fr_pattern;
return false;
}
}
-
+
var param = {};
for (var i in accepted) {
var el = document.getElementById(i);
<input id="fr_replaceall" type="checkbox" onClick="requestReplacement();">
<label for="fr_replaceall" class="long-label">Substitute all occurrences</label>
</li>
- </ul>
+ </ul>
</fieldset>
<fieldset>
<legend>Actions</legend>
<html class="popupwin">
-<!--
+<!--
/***************************************************************
* Copyright notice
*
/*
* Insert Smiley Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
-->
<head>
<!--
var dialog = window.opener.HTMLArea.Dialog.InsertSmiley;
var param;
-
+
function Init() {
var totalsmileys = 20;
dialog.initialize();
-
+
param = dialog.arguments;
var tbody = document.getElementById("smileytable");
var inum;
trow.insertCell((i - 1) % 4).innerHTML = "<a href=\"javascript:onOK('" + inum + "')\"><img style=\"border: 0px;\" alt=\"Smiley " + + i + "\" src=\""+ param.editor_url +"plugins/InsertSmiley/smileys/" + inum + ".gif\" />";
}
};
-
+
function onOK(smileynum) {
var params = {};
params.imgURL = param.editor_url +"plugins/InsertSmiley/smileys/" + smileynum + ".gif";
dialog.close();
return false;
};
-
+
function onCancel() {
dialog.close();
return false;
/*
* Quick Tag Editor Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
QuickTag = HTMLArea.Plugin.extend({
-
+
constructor : function(editor, pluginName) {
this.base(editor, pluginName);
},
-
+
/*
* This function gets called by the class constructor
*/
configurePlugin : function(editor) {
-
+
this.pageTSConfiguration = this.editorConfiguration.buttons.inserttag;
this.tags = (this.pageTSConfiguration && this.pageTSConfiguration.tags) ? this.pageTSConfiguration.tags : null;
this.denyTags = (this.pageTSConfiguration && this.pageTSConfiguration.denyTags) ? this.pageTSConfiguration.denyTags : null;
this.allowedAttribs = (this.pageTSConfiguration && this.pageTSConfiguration.allowedAttribs) ? this.pageTSConfiguration.allowedAttribs : null;
-
+
/*
* Registering plugin "About" information
*/
license : "GPL"
};
this.registerPluginInformation(pluginInformation);
-
+
/*
* Registering the button
*/
dialog : true
};
this.registerButton(buttonConfiguration);
-
+
return true;
},
-
+
/*
* This function gets called when the button was pressed.
*
onButtonPress : function(editor, id, target) {
this.dialog = this.openDialog("InsertTag", this.makeUrlFromPopupName("quicktag"), "setTag", null, {width:450, height:108});
},
-
+
/*
* Insert the tag
*
/*
* Remove Format Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
-->
<head>
/*<![CDATA[*/
<!--
var dialog = window.opener.HTMLArea.Dialog.RemoveFormat;
-
+
function Init() {
dialog.initialize();
var editor = dialog.plugin.editor;
if (!editor._selectionEmpty(editor._getSelection())) document.getElementById('clean_selection').checked = true;
}
-
+
function onOK() {
var param = {};
if (document.getElementById('clean_selection').checked) {
} else {
param["cleaning_area"] = "all";
}
-
+
var fields = ["formatting", "ms_formatting", "images", "html_all"];
oneChecked = false;
for (var i=0; i<fields.length; i++) {
/*
* Color Select Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
SelectColor = function(editor) {
var id = "CO-" + btn[0];
this.editor.eventHandlers[id] = SelectColor.actionHandler(this);
cfg.registerButton(
- id,
+ id,
SelectColor_langArray[id],
editor.imgURL(id + ".gif", "SelectColor"),
false,
/*
* Spell Checker Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
-->
<head>
/*
* Spell Checker Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
-->
<head>
</td>
</tr>
</table>
-</div>
+</div>
</body>
</html>
/**
* TYPO3 Image & Link Browsers Plugin for TYPO3 htmlArea RTE
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
TYPO3Browsers = function(editor,args) {
range = this._createRange(sel);
this.cleanAllLinks(node, range, true);
}
-
+
this._doc.execCommand("CreateLink", false, theLink);
-
+
sel = this._getSelection();
range = this._createRange(sel);
node = this.getParentElement();
// We may have created multiple links in as many blocks
this.setLinkAttributes(node, range, cur_target, cur_class, cur_title, imageNode);
}
-
+
Dialog._modal.close();
this.updateToolbar();
};
else node.removeAttribute("target");
if (cur_class.trim()) {
node.className = cur_class.trim();
- } else {
+ } else {
if (HTMLArea.is_gecko) node.removeAttribute('class');
else node.removeAttribute('className');
}
this.cleanAllLinks(node, range, true);
this._doc.execCommand("Unlink", false, "");
}
-
+
} else {
this._doc.execCommand("Unlink", false, "");
}
/*
* TYPO3Image plugin for htmlArea RTE
*
- * TYPO3 CVS ID: $Id:$
+ * TYPO3 SVN ID: $Id:$
*/
TYPO3Image = HTMLArea.Plugin.extend({
-
+
constructor : function(editor, pluginName) {
this.base(editor, pluginName);
},
-
+
/*
* This function gets called by the class constructor
*/
configurePlugin : function(editor) {
-
+
this.pageTSConfiguration = this.editorConfiguration.buttons.image;
this.imageModulePath = this.pageTSConfiguration.pathImageModule;
-
+
/*
* Registering plugin "About" information
*/
license : "GPL"
};
this.registerPluginInformation(pluginInformation);
-
+
/*
* Registering the button
*/
dialog : true
};
this.registerButton(buttonConfiguration);
-
+
return true;
},
-
+
/*
* This function gets called when the button was pressed
*
// Could be a button or its hotkey
var buttonId = this.translateHotKey(id);
buttonId = buttonId ? buttonId : id;
-
+
var additionalParameter;
if (typeof(target) !== "undefined") {
this.image = target;
if (this.image) {
additionalParameter = "&act=image";
}
-
+
this.dialog = this.openDialog("InsertImage", this.makeUrlFromModulePath(this.imageModulePath, additionalParameter), null, null, {width:550, height:350}, "yes");
return false;
},
-
+
/*
* Insert the image
* This function is called from the typo3-image-popup
*
* @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*
*/
require_once(PATH_tslib.'class.tslib_pibase.php');
var $userUid;
var $personalDictsArg = '';
var $xmlCharacterData = '';
-
+
/**
* Main class of Spell Checker plugin for Typo3 CMS
*
if( doubleval($AspellVersion) < doubleval('0.5') && (!$this->pspell_is_available || $this->forceCommandMode)) echo('Configuration problem: Aspell version ' . $AspellVersion . ' too old. Spell checking cannot be performed in command mode');
$this->defaultAspellEncoding = trim(shell_exec($this->AspellDirectory.' config encoding'));
}
-
+
// Setting the list of dictionaries
if(!$safe_mode_is_enabled && (!$this->pspell_is_available || $this->forceCommandMode)) {
$dictionaryList = shell_exec( $this->AspellDirectory.' dump dicts');
$this->dictionary = $defaultDictionary;
}
$dictionaries = substr_replace($dictionaryList, '@'.$this->dictionary, strpos($dictionaryList, $this->dictionary), strlen($this->dictionary));
-
+
// Setting the pspell suggestion mode
$this->pspellMode = t3lib_div::_POST('pspell_mode')?t3lib_div::_POST('pspell_mode'): $this->pspellMode;
// Now sanitize $this->pspellMode
$pspellModeFlag = PSPELL_NORMAL;
break;
}
-
+
// Setting the charset
if (t3lib_div::_POST('pspell_charset')) {
$this->charset = trim(t3lib_div::_POST('pspell_charset'));
}
$internal_encoding = mb_internal_encoding(strtoupper($this->parserCharset));
//$regex_encoding = mb_regex_encoding(strtoupper($this->parserCharset));
-
+
// In some configurations, Aspell uses 'iso8859-1' instead of 'iso-8859-1'
$this->aspellEncoding = $this->parserCharset;
if ($this->parserCharset == 'iso-8859-1' && strstr($this->defaultAspellEncoding, '8859-1')) {
$this->aspellEncoding = $this->defaultAspellEncoding;
}
-
+
// However, we are going to work only in the parser charset
if($this->pspell_is_available && !$this->forceCommandMode) {
$this->pspell_link = pspell_new($this->dictionary, '', '', $this->parserCharset, $pspellModeFlag);
$this->spellCheckHandler($xml_parser, $this->xmlCharacterData);
$this->xmlCharacterData = '';
}
-
+
switch($tag) {
case 'spellchecker':
break;
unset($incurrent);
return;
}
-
+
function collectDataHandler($xml_parser, $string) {
$this->xmlCharacterData .= $string;
}
# Default Page TSconfig for enabling the use of accessibility icons on links
#
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
## Anchor classes configuration for use by the anchor accessibility feature (htmlArea RTE only)
#
# @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
RTE.default {
-
+
## Toolbar options applicable to all RTE's
## The TCA configuration may add buttons to the toolbar
showButtons = bold,italic,undo,redo,about
-
+
}
## front end RTE configuration for the general public (htmlArea RTE only)
#
# @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
## Enable the RTE by default for all users
# Defines a few class selectors that can be simply taken as examples by anyone who needs to configure the RTE.
# This css file is referenced by property RTE.default.contentCSS in the default configuration of htmlArea RTE
#
-# TYPO3 CVS ID: $Id: dynamiccss.css 2663 2007-11-05 09:22:23Z ingmars $
+# TYPO3 SVN ID: $Id: dynamiccss.css 2663 2007-11-05 09:22:23Z ingmars $
# ***************************************************************************************/
/* Left, center, right and justify alignment of text in block elements*/
#
# Sets default Page TSConfig with maximal features for users who want to explore the features of the RTE.
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
## Define labels and styles to be applied to class selectors in the interface of the RTE
removeComments = 1
removeTags = center, o:p, sdfield
removeTagsAndContents = style,script
-
+
## Allow img tags
proc.entryHTMLparser_db.tags.img >
-
+
## Allow style attribute
proc.entryHTMLparser_db.tags {
p.allowedAttribs := addToList(style)
span.fixAttrib.style.unset >
}
-
+
## Toolbar options
showButtons = *
-
+
## More toolbar options (htmlArea RTE only)
keepButtonGroupTogether = 1
-
+
## Enable status bar (htmlArea RTE only)
showStatusBar = 1
-
+
## Add default example styles
## Left, center and right alignment of text in paragraphs and cells.
inlineStyle.text-alignment (
span.name-of-person { color: #10007B; }
span.detail { color: #186900; }
)
-
+
## Use stylesheet file rather than the above mainStyleOverride and inlineStyle properties to style the contents (htmlArea RTE only)
ignoreMainStyleOverride = 1
-
+
## For this demo, do not remove font, strike and u tags
proc.entryHTMLparser_db.removeTags := removeFromList(font,strike,u)
-
+
## List all class selectors that are allowed on the way to the database
proc.allowedClasses (
external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail,
important, name-of-person, detail,
indent
)
-
+
## classesParagraph, classesTable, classesTD, classesLinks, classesCharacter
## Classic RTE: Specify the list of class selectors that should be presented in the RTE interface:
## htmlArea RTE: Restrict the list of class selectors presented by the RTE to the following:
classesParagraph (
- align-left, align-center, align-right,
+ align-left, align-center, align-right,
csc-frame-frame1, csc-frame-frame2
)
classesTable = csc-frame-frame1, csc-frame-frame2
classesTD = align-left, align-center, align-right
classesLinks = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
classesCharacter = important, name-of-person, detail
-
+
## Configuration of the anchor accessibility feature (htmlArea RTE only)
## These classes should also be in the list of allowedClasses.
classesAnchor = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
file = download
mail = mail
}
-
+
## Show all applicable class selectors available in the style sheet file (htmlArea RTE only)
showTagFreeClasses = 1
-
+
## Configuration specific to the table button or TableOperations feature (htmlArea RTE only)
## Use the context menu instead of the toolbar for table operations, but keep toggleborders button in toolbar
hideTableOperationsInToolbar = 1
buttons.toggleborders.keepInToolbar = 1
-
+
## Configuration specific to the inserttag button or QuickTag feature (htmlArea RTE only)
## Do not allow insertion of the following tags
buttons.inserttag.denyTags = font, underline, strike, table
-
+
## Configuration specific to the bold and italic buttons (htmlArea RTE only)
## Add hotkeys associated with bold, italic, strikethrough and underline buttons
buttons.bold.hotKey = b
buttons.italic.hotKey = i
buttons.strikethrough.hotKey = s
buttons.underline.hotkey = u
-
+
## Configuration specific to the spellcheck button or SpellCheck feature (htmlArea RTE only)
## Enable the use of personal dictionaries
enablePersonalDicts = 1
#
# Sets default User TSConfig with maximal features for users who want to explore the features of the RTE.
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
## Enable the RTE by default for all users
# Note that all these settings are already included in the "Demo" default configuration
# However, this will update the "Minimal" and "Typical" default configurations
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
## Default RTE configuration
RTE.default {
-
+
## Enable the image button
showButtons := addToList(image)
-
+
## Tags allowed outside p & div
## Adding img tag to the default list
proc.allowTagsOutside := addToList(img)
-
+
## Do not remove img tags
proc.entryHTMLparser_db.tags.img >
}
#
# @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
## Default RTE processing rules
RTE.default.proc {
-
+
## TRANSFORMATION METHOD
## We assume that CSS Styled Content is used.
overruleMode = ts_css
-
+
## DO NOT CONVERT BR TAGS INTO LINEBREAKS
## br tags in the content are assumed to be intentional.
dontConvBRtoParagraph = 1
-
+
## PRESERVE DIV SECTIONS - DO NOT REMAP TO P
preserveDIVSections = 1
-
+
## TAGS ALLOWED OUTSIDE P & DIV
allowTagsOutside = hr, address
-
+
## TAGS ALLOWED
## Added to the default internal list: b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span
## But, for the sake of clarity, we use a complete list in alphabetic order.
h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, ol, p, pre, q, samp, sdfield, small,
span, strike, strong, sub, sup, table, thead, tbody, tfoot, td, th, tr, tt, u, ul, var
)
-
+
## TAGS DENIED
## Make sure we can set rules on any tag listed in allowTags.
denyTags >
-
+
## ALLOWED P & DIV ATTRIBUTES
## Attributes class and align are always preserved
## Align attribute will be unset on entry (see below)
## This is a list of additional attributes to keep
keepPDIVattribs = id, title, dir, lang, xml:lang
-
+
## REMAP BOLD AND ITALIC TO STRONG AND EMPHASIS AND VICE VERSA
transformBoldAndItalicTags = 1
-
+
## ALLOW TO WRITE ABOUT HTML
dontUndoHSC_db = 1
dontHSC_rte = 1
-
+
## CONTENT TO DATABASE
entryHTMLparser_db = 1
entryHTMLparser_db {
-
+
## TAGS ALLOWED
## Always use the same list of allowed tags.
allowTags < RTE.default.proc.allowTags
-
+
## TAGS DENIED
## Make sure we can set rules on any tag listed in allowTags.
denyTags >
-
+
## AVOID CONTENT BEING HSC'ed TWICE
htmlSpecialChars = 0
-
+
tags {
-
+
## REMOVE IMG TAGS
img.allowedAttribs = 0
img.rmTagIfNoAttrib = 1
-
+
## CLEAN ATTRIBUTES ON THE FOLLOWING TAGS
span.fixAttrib.style.unset = 1
p {
u.allowedAttribs = id, title, dir, lang, xml:lang, class
var.allowedAttribs = id, title, dir, lang, xml:lang, class
}
-
+
## REMOVE OPEN OFFICE META DATA TAGS, WORD 2003 TAGS AND DEPRECATED HTML TAGS
## We use this rule instead of the denyTags rule so that we can protect custom tags without protecting these unwanted tags.
removeTags = center, font, o:p, sdfield, strike, u
-
+
## PROTECT CUSTOM TAGS
keepNonMatchedTags = protect
}
-
+
HTMLparser_db {
## STRIP ALL ATTRIBUTES FROM THESE TAGS
## If this list of tags is not set, it will default to: b,i,u,br,center,hr,sub,sup,strong,em,li,ul,ol,blockquote,strike.
## However, we want to keep xml:lang attribute on most tags and tags from the default list where cleaned on entry.
noAttrib = br
-
+
## XHTML COMPLIANCE
## Note that applying xhtml_cleaning on exit would break non-standard attributes of typolink tags
xhtml_cleaning = 1
}
-
+
exitHTMLparser_db = 1
exitHTMLparser_db {
## KEEP ALL TAGS
## Unwanted tags were removed on entry.
## Without this rule, the parser will remove all tags! Presumably, this rule will be more efficient than repeating the allowTags rule
keepNonMatchedTags = 1
-
+
## AVOID CONTENT BEING HSC'ed TWICE
htmlSpecialChars = 0
}
#
# @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
## Define labels and styles to be applied to class selectors in the interface of the RTE
removeComments = 1
removeTags = center, font, o:p, sdfield, strike,u
removeTagsAndContents = style,script
-
+
## Toolbar options
## The TCA configuration may add buttons to the toolbar
## The following buttons are specific to Classic RTE: class
- ## The following buttons are specific to htmlArea RTE: blockstylelabel, blockstyle, textstylelabel, textstyle,
- ## insertcharacter, findreplace, removeformat, toggleborders, tableproperties,
- ## rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit,
- ## columninsertbefore, columninsertafter, columndelete, columnsplit,
+ ## The following buttons are specific to htmlArea RTE: blockstylelabel, blockstyle, textstylelabel, textstyle,
+ ## insertcharacter, findreplace, removeformat, toggleborders, tableproperties,
+ ## rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit,
+ ## columninsertbefore, columninsertafter, columndelete, columnsplit,
## cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge
- showButtons (
+ showButtons (
class, blockstylelabel, blockstyle, textstylelabel, textstyle,
formatblock, bold, italic, subscript, superscript,
orderedlist, unorderedlist, outdent, indent, textindicator,
columninsertbefore, columninsertafter, columndelete, columnsplit,
cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge
)
-
+
## More toolbar options (htmlArea RTE only)
keepButtonGroupTogether = 1
-
+
## Enable status bar (htmlArea RTE only)
showStatusBar = 1
-
+
## Hide infrequently used paragraph types in the paragraph type selector (formatblock button)
hidePStyleItems = pre,address
-
+
## Add default example styles
## The example styles included here make partial re-use of color scheme and frame scheme from CSS Styled Content extension
## Left, center and right alignment of text in paragraphs and cells.
span.name-of-person { color: #10007B; }
span.detail { color: #186900; }
)
-
+
## Use stylesheet file rather than the above mainStyleOverride and inlineStyle properties to style the contents (htmlArea RTE only)
ignoreMainStyleOverride = 1
-
+
## List all class selectors that are allowed on the way to the database
proc.allowedClasses (
external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail,
important, name-of-person, detail,
indent
)
-
+
## classesParagraph, classesTable, classesTD, classesLinks, classesCharacter
## Classic RTE: Specify the list of class selectors that should be presented in the RTE interface:
## htmlArea RTE: Restrict the list of class selectors presented by the RTE to the following:
classesParagraph (
- align-left, align-center, align-right,
+ align-left, align-center, align-right,
csc-frame-frame1, csc-frame-frame2
)
classesTable = csc-frame-frame1, csc-frame-frame2
classesTD = align-left, align-center, align-right
classesLinks = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
classesCharacter = important, name-of-person, detail
-
+
## Configuration of the anchor accessibility feature (htmlArea RTE only)
## These classes should also be in the list of allowedClasses.
classesAnchor = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
file = download
mail = mail
}
-
+
## Configuration specific to the TableOperations feature (htmlArea RTE only)
## Remove the following fieldsets from the table operations dialogs
disableAlignmentFieldsetInTableOperations = 1
disableColorFieldsetInTableOperations = 1
disableLayoutFieldsetInTableOperations = 1
disableBordersFieldsetInTableOperations = 1
-
+
## Configuration specific to the bold and italic buttons (htmlArea RTE only)
## Add hotkeys associated with bold and italic buttons
buttons.bold.hotKey = b
#
# @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
#
-# TYPO3 CVS ID: $Id$
+# TYPO3 SVN ID: $Id$
# ***************************************************************************************
## Default User TSConfig for the Usual default RTE configuration
*
* License: GNU General Public License
*
- * TYPO3 CVS ID: $Id$
+ * TYPO3 SVN ID: $Id$
*/
function checkBrowser() {