Feature #18308 ┬╗ rtehtmlarea_feature_7667.patch

Administrator Admin, 2008-02-26 06:13

View differences:

typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php (working copy)
539 539
			bar, textcolor, bgcolor, textindicator,
540 540
			bar, emoticon, insertcharacter, line, link, unlink, image, table,' . (($this->thisConfig['hideTableOperationsInToolbar'] && is_array($this->thisConfig['buttons.']) && is_array($this->thisConfig['buttons.']['toggleborders.']) && $this->thisConfig['buttons.']['toggleborders.']['keepInToolbar']) ? ' toggleborders,': '') . ' user, acronym, bar, findreplace, spellcheck,
541 541
			bar, chMode, inserttag, removeformat, bar, copy, cut, paste, bar, undo, redo, bar, showhelp, about, linebreak, 
542
			' . ($this->thisConfig['hideTableOperationsInToolbar'] ? '': 'bar, toggleborders,') . ' bar, tableproperties, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
543
			columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
542
			' . ($this->thisConfig['hideTableOperationsInToolbar'] ? '': 'bar, toggleborders,') . ' bar, tableproperties, tablerestyle, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
543
			columnproperties, columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
544 544
			cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge';
545 545
		
546 546
			// Special toolbar for Mozilla Wamcom on Mac OS 9
......
551 551
				bar, orderedlist, unorderedlist, outdent, indent, bar, textcolor, bgcolor, textindicator, bar, emoticon,
552 552
				insertcharacter, line, link, unlink, image, table, user, acronym, bar, findreplace, spellcheck, bar, chMode, inserttag,
553 553
				removeformat, bar, copy, cut, paste, bar, undo, redo, bar, showhelp, about, linebreak,
554
				bar, toggleborders, bar, tableproperties, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
555
				columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
554
				bar, toggleborders, bar, tableproperties, tablerestyle, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
555
				columnproperties, columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
556 556
				cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge'
557 557
				: 'bar, blockstylelabel, blockstyle, space, textstylelabel, textstyle, linebreak,
558 558
				bar, fontstyle, space, fontsize, space, formatblock, insertparagraphbefore, insertparagraphafter, blockquote, bar, bold, italic, underline, strikethrough,
......
560 560
				orderedlist, unorderedlist, outdent, indent, bar, textcolor, bgcolor, textindicator, bar, emoticon,
561 561
				insertcharacter, line, link, unlink, image, table, user, acronym, linebreak, bar, findreplace, spellcheck, bar, chMode, inserttag,
562 562
				removeformat, bar, copy, cut, paste, bar, undo, redo, bar, showhelp, about, linebreak,
563
				bar, toggleborders, bar, tableproperties, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
564
				columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
563
				bar, toggleborders, bar, tableproperties, tablerestyle, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
564
				columnproperties, columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
565 565
				cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge';
566 566
		}
567 567
		
......
737 737
			};
738 738
			RTEarea = new Array();
739 739
			RTEarea[0] = new Object();
740
			RTEarea[0]["version"] = "' . $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['version'] . '";
741
			RTEarea[0]["popupwin"] = "' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/popupwin.js', "popupwin") . '";'
740
			RTEarea[0]["version"] = "' . $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['version'] . '";'
742 741
			. (($this->client['BROWSER'] == 'msie') ? ('
743 742
			RTEarea[0]["htmlarea-ie"] = "' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/htmlarea-ie.js', "htmlarea-ie") . '";')
744 743
			: ('
......
810 809
			RTEarea['.$RTEcounter.'].id = "RTEarea'.$RTEcounter.'";
811 810
			RTEarea['.$RTEcounter.'].enableWordClean = ' . (trim($this->thisConfig['enableWordClean'])?'true':'false') . ';
812 811
			RTEarea['.$RTEcounter.']["htmlRemoveComments"] = ' . (trim($this->thisConfig['removeComments'])?'true':'false') . ';
813
			RTEarea['.$RTEcounter.']["disableEnterParagraphs"] = ' . (trim($this->thisConfig['disableEnterParagraphs'])?'true':'false') . ';
812
			RTEarea['.$RTEcounter.'].disableEnterParagraphs = ' . (trim($this->thisConfig['disableEnterParagraphs'])?'true':'false') . ';
813
			RTEarea['.$RTEcounter.'].disableObjectResizing = ' . (trim($this->thisConfig['disableObjectResizing'])?'true':'false') . ';
814 814
			RTEarea['.$RTEcounter.']["removeTrailingBR"] = ' . (trim($this->thisConfig['removeTrailingBR'])?'true':'false') . ';
815 815
			RTEarea['.$RTEcounter.']["useCSS"] = ' . (trim($this->thisConfig['useCSS'])?'true':'false') . ';
816 816
			RTEarea['.$RTEcounter.']["keepButtonGroupTogether"] = ' . (trim($this->thisConfig['keepButtonGroupTogether'])?'true':'false') . ';
......
845 845
			foreach ($this->thisConfig['buttons.'] as $buttonIndex => $conf) {
846 846
				$button = substr($buttonIndex, 0, -1);
847 847
				if (in_array($button,$this->toolbar)) {
848
					$indexButton = 0;
849 848
					$configureRTEInJavascriptString .= '
850
			RTEarea['.$RTEcounter.'].buttons.'.$button.' = {';
851
					if (is_array($conf)) {
852
						foreach ($conf as $propertyName => $conf1) {
853
							$property = $propertyName;
854
							if ($indexButton) {
855
								$configureRTEInJavascriptString .= ', ';
856
							}
857
							if (is_array($conf1)) {
858
								$property = substr($property, 0, -1);
859
								$indexProperty = 0;
860
								$configureRTEInJavascriptString .= '"'.$property.'" : {';
861
								foreach ($conf1 as $property1Name => $conf2) {
862
									$property1 = $property1Name;
863
									if ($indexProperty) {
864
										$configureRTEInJavascriptString .= ', ';
865
									}
866
									if (is_array($conf2)) {
867
										$property1 = substr($property1, 0, -1);
868
										$indexProperty1 = 0;
869
										$configureRTEInJavascriptString .= '"'.$property1.'" : {';
870
										foreach ($conf2 as $property2Name => $conf3) {
871
											$property2 = $property2Name;
872
											if ($indexProperty1) {
873
												$configureRTEInJavascriptString .= ', ';
874
											}
875
											if (is_array($conf3)) {
876
												$property2 = substr($property2, 0, -1);
877
												$indexProperty2 = 0;
878
												$configureRTEInJavascriptString .= '"'.$property2.'" : {';
879
												foreach($conf3 as $property3Name => $conf4) {
880
													$property3 = $property3Name;
881
													if ($indexProperty2) {
882
														$configureRTEInJavascriptString .= ', ';
883
													}
884
													if (!is_array($conf4)) {
885
														$configureRTEInJavascriptString .= '"'.$property3.'" : '.($conf4?'"'.$conf4.'"':'false');
886
													}
887
													$indexProperty2++;
888
												}
889
												$configureRTEInJavascriptString .= '}';
890
											} else {
891
												$configureRTEInJavascriptString .= '"'.$property2.'" : '.($conf3?'"'.$conf3.'"':'false');												
892
											}
893
											$indexProperty1++;
894
										}
895
										$configureRTEInJavascriptString .= '}';
896
									} else {
897
										$configureRTEInJavascriptString .= '"'.$property1.'" : '.($conf2?'"'.$conf2.'"':'false');
898
									}
899
									$indexProperty++;
900
								}
901
								$configureRTEInJavascriptString .= '}';
902
							} else {
903
								$configureRTEInJavascriptString .= '"'.$property.'" : '.($conf1?'"'.$conf1.'"':'false');
904
							}
905
							$indexButton++;
906
						}
907
					}
908
					$configureRTEInJavascriptString .= '};';
849
			RTEarea['.$RTEcounter.'].buttons.'.$button.' = ' . $this->buildNestedJSArray($conf) . ';';
909 850
				}
910 851
			}
911 852
		}
......
1058 999
		
1059 1000
		$linebreak = $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts'] ? '' : chr(10);
1060 1001
		$index = 0;
1002
		$indexNoShow = 0;
1003
		$indexAlternating = 0;
1061 1004
		$JSClassesLabelsArray = 'HTMLArea.classesLabels = { ' . $linebreak;
1062 1005
		$JSClassesValuesArray = 'HTMLArea.classesValues = { ' . $linebreak;
1063 1006
		$JSClassesNoShowArray = 'HTMLArea.classesNoShow = { ' . $linebreak;
1007
		$JSClassesAlternatingArray = 'HTMLArea.classesAlternating = { ' . $linebreak;
1064 1008
		$JSClassesXORArray = 'HTMLArea.classesXOR = { ' . $linebreak;
1065 1009
		
1066 1010
			// Scanning the list of classes if specified in the RTE config
......
1069 1013
			foreach ($RTEProperties['classes.'] as $className => $conf) {
1070 1014
				$className = substr($className,0,-1);
1071 1015
				$classLabel = $this->getPageConfigLabel($conf['name']);
1072
				$JSClassesLabelsArray .= (($index)?',':'') . '"' . $className . '": ' . $classLabel . $linebreak;
1073
				$JSClassesValuesArray .= (($index)?',':'') . '"' . $className . '":"' . str_replace('"', '\"', str_replace('\\\'', '\'', $conf['value'])) . '"' . $linebreak;
1074
				$JSClassesNoShowArray .= (($index)?',':'') . '"' . $className . '":' . ($conf['noShow']?'true':'false') . $linebreak;
1016
				$JSClassesLabelsArray .= ($index?',':'') . '"' . $className . '": ' . $classLabel . $linebreak;
1017
				$JSClassesValuesArray .= ($index?',':'') . '"' . $className . '":"' . str_replace('"', '\"', str_replace('\\\'', '\'', $conf['value'])) . '"' . $linebreak;
1018
				if ($conf['noShow']) {
1019
					$JSClassesNoShowArray .= ($indexNoShow?',':'') . '"' . $className . '":' . ($conf['noShow']?'true':'false') . $linebreak;
1020
					$indexNoShow++;
1021
				}
1022
				if (is_array($conf['alternating.'])) {
1023
					$JSClassesAlternatingArray .= ($indexAlternating?',':'') . '"' . $className . '":' . (is_array($conf['alternating.']) ? $this->buildNestedJSArray($conf['alternating.']) : ' "false"') . $linebreak;
1024
					$indexAlternating++;
1025
				}
1075 1026
				if (is_array($RTEProperties['mutuallyExclusiveClasses.']))  {
1076 1027
					foreach ($RTEProperties['mutuallyExclusiveClasses.'] as $listName => $conf) {
1077 1028
						if (t3lib_div::inList($conf, $className)) {
1078
							$JSClassesXORArray .= (($index)?',':'') . '"' . $className . '": /^(' . implode('|', t3lib_div::trimExplode(',', t3lib_div::rmFromList($className, $conf), 1)) . ')$/i' . $linebreak;
1029
							$JSClassesXORArray .= ($index?',':'') . '"' . $className . '": /^(' . implode('|', t3lib_div::trimExplode(',', t3lib_div::rmFromList($className, $conf), 1)) . ')$/i' . $linebreak;
1079 1030
							break;
1080 1031
						}
1081 1032
					}
......
1086 1037
		$JSClassesLabelsArray .= '};' . $linebreak;
1087 1038
		$JSClassesValuesArray .= '};' . $linebreak;
1088 1039
		$JSClassesNoShowArray .= '};' . $linebreak;
1040
		$JSClassesAlternatingArray .= '};' . $linebreak;
1089 1041
		$JSClassesXORArray .= '};' . $linebreak;
1090 1042
		
1091
		return $JSClassesLabelsArray . $JSClassesValuesArray . $JSClassesNoShowArray . $JSClassesXORArray;
1043
		return $JSClassesLabelsArray . $JSClassesValuesArray . $JSClassesNoShowArray . $JSClassesAlternatingArray . $JSClassesXORArray;
1092 1044
	}
1093 1045
	
1094 1046
	/**
1047
	 * Translate Page TS Config array in JS nested array definition
1048
	 *
1049
	 * @param	array		$conf: Page TSConfig configuration array
1050
	 *
1051
	 * @return 	string		nested JS array definition
1052
	 */
1053
	function buildNestedJSArray($conf) {
1054
		$configureRTEInJavascriptString = '{';
1055
		$index = 0;
1056
		if (is_array($conf)) {
1057
			foreach ($conf as $propertyName => $conf1) {
1058
				$property = $propertyName;
1059
				if ($index) {
1060
					$configureRTEInJavascriptString .= ', ';
1061
				}
1062
				if (is_array($conf1)) {
1063
					$property = substr($property, 0, -1);
1064
					$indexProperty = 0;
1065
					$configureRTEInJavascriptString .= '"'.$property.'" : {';
1066
					foreach ($conf1 as $property1Name => $conf2) {
1067
						$property1 = $property1Name;
1068
						if ($indexProperty) {
1069
							$configureRTEInJavascriptString .= ', ';
1070
						}
1071
						if (is_array($conf2)) {
1072
							$property1 = substr($property1, 0, -1);
1073
							$indexProperty1 = 0;
1074
							$configureRTEInJavascriptString .= '"'.$property1.'" : {';
1075
							foreach ($conf2 as $property2Name => $conf3) {
1076
								$property2 = $property2Name;
1077
								if ($indexProperty1) {
1078
									$configureRTEInJavascriptString .= ', ';
1079
								}
1080
								if (is_array($conf3)) {
1081
									$property2 = substr($property2, 0, -1);
1082
									$indexProperty2 = 0;
1083
									$configureRTEInJavascriptString .= '"'.$property2.'" : {';
1084
									foreach($conf3 as $property3Name => $conf4) {
1085
										$property3 = $property3Name;
1086
										if ($indexProperty2) {
1087
											$configureRTEInJavascriptString .= ', ';
1088
										}
1089
										if (!is_array($conf4)) {
1090
											$configureRTEInJavascriptString .= '"'.$property3.'" : '.($conf4?'"'.$conf4.'"':'false');
1091
										}
1092
										$indexProperty2++;
1093
									}
1094
									$configureRTEInJavascriptString .= '}';
1095
								} else {
1096
									$configureRTEInJavascriptString .= '"'.$property2.'" : '.($conf3?'"'.$conf3.'"':'false');												
1097
								}
1098
								$indexProperty1++;
1099
							}
1100
							$configureRTEInJavascriptString .= '}';
1101
						} else {
1102
							$configureRTEInJavascriptString .= '"'.$property1.'" : '.($conf2?'"'.$conf2.'"':'false');
1103
						}
1104
						$indexProperty++;
1105
					}
1106
					$configureRTEInJavascriptString .= '}';
1107
				} else {
1108
					$configureRTEInJavascriptString .= '"'.$property.'" : '.($conf1?'"'.$conf1.'"':'false');
1109
				}
1110
				$index++;
1111
			}
1112
		}
1113
		$configureRTEInJavascriptString .= '}';
1114
		return $configureRTEInJavascriptString;
1115
	}
1116
	
1117
	/**
1095 1118
	 * Return a Javascript localization array for htmlArea RTE
1096 1119
	 *
1097 1120
	 * @return	string		Javascript localization array
typo3/sysext/rtehtmlarea/ext_emconf.php (working copy)
3 3
########################################################################
4 4
# Extension Manager/Repository config file for ext: "rtehtmlarea"
5 5
#
6
# Auto generated 19-02-2008 22:51
6
# Auto generated 25-02-2008 22:22
7 7
#
8 8
# Manual updates:
9 9
# Only the data in the array - anything else is removed by next write.
......
32 32
	'author_company' => 'Fructifor Inc.',
33 33
	'CGLcompliance' => '',
34 34
	'CGLcompliance_note' => '',
35
	'version' => '1.7.1',
36
	'_md5_values_when_last_written' => 'a:414:{s:9:"ChangeLog";s:4:"4dd9";s:29:"class.tx_rtehtmlarea_base.php";s:4:"00c6";s:27:"class.tx_rtehtmlareaapi.php";s:4:"4476";s:21:"ext_conf_template.txt";s:4:"c214";s:12:"ext_icon.gif";s:4:"2f41";s:17:"ext_localconf.php";s:4:"e28b";s:14:"ext_tables.php";s:4:"4f9c";s:14:"ext_tables.sql";s:4:"2d74";s:13:"locallang.xml";s:4:"3cca";s:16:"locallang_db.xml";s:4:"a2a2";s:7:"tca.php";s:4:"3756";s:32:"pi1/class.tx_rtehtmlarea_pi1.php";s:4:"c05e";s:17:"pi1/locallang.xml";s:4:"2e58";s:16:"mod2/acronym.php";s:4:"7e21";s:37:"mod2/class.tx_rtehtmlarea_acronym.php";s:4:"a955";s:41:"mod2/class.tx_rtehtmlarea_acronym_mod.php";s:4:"1e3f";s:14:"mod2/clear.gif";s:4:"cc11";s:13:"mod2/conf.php";s:4:"f442";s:18:"mod2/locallang.xml";s:4:"7dee";s:29:"htmlarea/HTMLAREA_LICENSE.txt";s:4:"a10f";s:26:"htmlarea/htmlarea-gecko.js";s:4:"b61d";s:23:"htmlarea/htmlarea-ie.js";s:4:"ca96";s:20:"htmlarea/htmlarea.js";s:4:"6c9d";s:30:"htmlarea/locallang_dialogs.xml";s:4:"eba4";s:26:"htmlarea/locallang_msg.xml";s:4:"7b6f";s:31:"htmlarea/locallang_tooltips.xml";s:4:"ce8c";s:20:"htmlarea/popupwin.js";s:4:"d0c9";s:50:"htmlarea/skins/default/htmlarea-edited-content.css";s:4:"1cd4";s:35:"htmlarea/skins/default/htmlarea.css";s:4:"7cea";s:42:"htmlarea/skins/default/images/ed_about.gif";s:4:"2763";s:42:"htmlarea/skins/default/images/ed_blank.gif";s:4:"0208";s:45:"htmlarea/skins/default/images/ed_color_bg.gif";s:4:"c6e2";s:45:"htmlarea/skins/default/images/ed_color_fg.gif";s:4:"5d7f";s:41:"htmlarea/skins/default/images/ed_copy.gif";s:4:"4f55";s:43:"htmlarea/skins/default/images/ed_custom.gif";s:4:"e7b2";s:40:"htmlarea/skins/default/images/ed_cut.gif";s:4:"1b00";s:43:"htmlarea/skins/default/images/ed_delete.gif";s:4:"926b";s:41:"htmlarea/skins/default/images/ed_help.gif";s:4:"e7fc";s:39:"htmlarea/skins/default/images/ed_hr.gif";s:4:"f384";s:41:"htmlarea/skins/default/images/ed_html.gif";s:4:"fa6e";s:42:"htmlarea/skins/default/images/ed_image.gif";s:4:"c0f0";s:50:"htmlarea/skins/default/images/ed_left_to_right.gif";s:4:"1a1f";s:41:"htmlarea/skins/default/images/ed_link.gif";s:4:"db9a";s:48:"htmlarea/skins/default/images/ed_list_bullet.gif";s:4:"5620";s:45:"htmlarea/skins/default/images/ed_list_num.gif";s:4:"eb1c";s:42:"htmlarea/skins/default/images/ed_paste.gif";s:4:"fbd2";s:41:"htmlarea/skins/default/images/ed_redo.gif";s:4:"e9e8";s:50:"htmlarea/skins/default/images/ed_right_to_left.gif";s:4:"2a38";s:41:"htmlarea/skins/default/images/ed_save.gif";s:4:"07ad";s:47:"htmlarea/skins/default/images/ed_splitblock.gif";s:4:"503e";s:45:"htmlarea/skins/default/images/ed_splitcel.gif";s:4:"2c04";s:41:"htmlarea/skins/default/images/ed_undo.gif";s:4:"b9ba";s:43:"htmlarea/skins/default/images/ed_unlink.gif";s:4:"86c4";s:53:"htmlarea/skins/default/images/fullscreen_maximize.gif";s:4:"2118";s:53:"htmlarea/skins/default/images/fullscreen_minimize.gif";s:4:"91d6";s:46:"htmlarea/skins/default/images/insert_table.gif";s:4:"c01b";s:58:"htmlarea/skins/default/images/BlockElements/blockquote.gif";s:4:"34dc";s:54:"htmlarea/skins/default/images/BlockElements/indent.gif";s:4:"57df";s:68:"htmlarea/skins/default/images/BlockElements/insertParagraphAfter.gif";s:4:"e335";s:69:"htmlarea/skins/default/images/BlockElements/insertParagraphBefore.gif";s:4:"9c42";s:61:"htmlarea/skins/default/images/BlockElements/justifyCenter.gif";s:4:"420d";s:59:"htmlarea/skins/default/images/BlockElements/justifyFull.gif";s:4:"b129";s:59:"htmlarea/skins/default/images/BlockElements/justifyLeft.gif";s:4:"3799";s:60:"htmlarea/skins/default/images/BlockElements/justifyRight.gif";s:4:"0662";s:55:"htmlarea/skins/default/images/BlockElements/outdent.gif";s:4:"4786";s:52:"htmlarea/skins/default/images/Acronym/ed_acronym.gif";s:4:"1eaa";s:57:"htmlarea/skins/default/images/CharacterMap/ed_charmap.gif";s:4:"af19";s:54:"htmlarea/skins/default/images/UserElements/ed_user.gif";s:4:"bbb4";s:54:"htmlarea/skins/default/images/QuickTag/ed_quicktag.gif";s:4:"a463";s:58:"htmlarea/skins/default/images/SelectColor/CO-forecolor.gif";s:4:"dbc8";s:60:"htmlarea/skins/default/images/SelectColor/CO-hilitecolor.gif";s:4:"d97c";s:55:"htmlarea/skins/default/images/RemoveFormat/ed_clean.gif";s:4:"2a0f";s:53:"htmlarea/skins/default/images/FindReplace/ed_find.gif";s:4:"827f";s:61:"htmlarea/skins/default/images/TableOperations/cell-delete.gif";s:4:"f371";s:67:"htmlarea/skins/default/images/TableOperations/cell-insert-after.gif";s:4:"2dd2";s:60:"htmlarea/skins/default/images/TableOperations/cell-merge.gif";s:4:"a2d2";s:59:"htmlarea/skins/default/images/TableOperations/cell-prop.gif";s:4:"ca41";s:60:"htmlarea/skins/default/images/TableOperations/cell-split.gif";s:4:"d87c";s:60:"htmlarea/skins/default/images/TableOperations/col-delete.gif";s:4:"da78";s:66:"htmlarea/skins/default/images/TableOperations/col-insert-after.gif";s:4:"80d8";s:67:"htmlarea/skins/default/images/TableOperations/col-insert-before.gif";s:4:"d47d";s:59:"htmlarea/skins/default/images/TableOperations/col-split.gif";s:4:"eacc";s:62:"htmlarea/skins/default/images/TableOperations/insert_table.gif";s:4:"c1db";s:60:"htmlarea/skins/default/images/TableOperations/row-delete.gif";s:4:"a289";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-above.gif";s:4:"1ef1";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-after.gif";s:4:"5e98";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-under.gif";s:4:"9ad6";s:58:"htmlarea/skins/default/images/TableOperations/row-prop.gif";s:4:"5344";s:59:"htmlarea/skins/default/images/TableOperations/row-split.gif";s:4:"a712";s:60:"htmlarea/skins/default/images/TableOperations/table-prop.gif";s:4:"0a5c";s:64:"htmlarea/skins/default/images/TableOperations/toggle-borders.gif";s:4:"50cb";s:59:"htmlarea/skins/default/images/TYPO3ViewHelp/module_help.gif";s:4:"a500";s:56:"htmlarea/skins/default/images/InsertSmiley/ed_smiley.gif";s:4:"c331";s:56:"htmlarea/skins/default/images/TYPO3Browsers/ed_image.gif";s:4:"c0f0";s:55:"htmlarea/skins/default/images/TYPO3Browsers/ed_link.gif";s:4:"db9a";s:57:"htmlarea/skins/default/images/TYPO3Browsers/ed_unlink.gif";s:4:"86c4";s:58:"htmlarea/skins/default/images/SpellChecker/spell-check.gif";s:4:"6e0a";s:61:"htmlarea/skins/default/images/InlineElements/bidioverride.gif";s:4:"f38b";s:52:"htmlarea/skins/default/images/InlineElements/big.gif";s:4:"779b";s:53:"htmlarea/skins/default/images/InlineElements/bold.gif";s:4:"06ac";s:57:"htmlarea/skins/default/images/InlineElements/citation.gif";s:4:"b6eb";s:53:"htmlarea/skins/default/images/InlineElements/code.gif";s:4:"6057";s:59:"htmlarea/skins/default/images/InlineElements/definition.gif";s:4:"692d";s:60:"htmlarea/skins/default/images/InlineElements/deletedtext.gif";s:4:"4eec";s:57:"htmlarea/skins/default/images/InlineElements/emphasis.gif";s:4:"04c9";s:61:"htmlarea/skins/default/images/InlineElements/insertedtext.gif";s:4:"a624";s:55:"htmlarea/skins/default/images/InlineElements/italic.gif";s:4:"be83";s:57:"htmlarea/skins/default/images/InlineElements/keyboard.gif";s:4:"53ac";s:59:"htmlarea/skins/default/images/InlineElements/monospaced.gif";s:4:"78c0";s:58:"htmlarea/skins/default/images/InlineElements/quotation.gif";s:4:"7c62";s:55:"htmlarea/skins/default/images/InlineElements/sample.gif";s:4:"667c";s:54:"htmlarea/skins/default/images/InlineElements/small.gif";s:4:"e013";s:53:"htmlarea/skins/default/images/InlineElements/span.gif";s:4:"0dfa";s:62:"htmlarea/skins/default/images/InlineElements/strikethrough.gif";s:4:"73b1";s:55:"htmlarea/skins/default/images/InlineElements/strong.gif";s:4:"7f50";s:58:"htmlarea/skins/default/images/InlineElements/subscript.gif";s:4:"36c0";s:60:"htmlarea/skins/default/images/InlineElements/superscript.gif";s:4:"40c4";s:58:"htmlarea/skins/default/images/InlineElements/underline.gif";s:4:"dfac";s:57:"htmlarea/skins/default/images/InlineElements/variable.gif";s:4:"da61";s:48:"htmlarea/plugins/BlockElements/block-elements.js";s:4:"e016";s:44:"htmlarea/plugins/BlockElements/locallang.xml";s:4:"2f2c";s:35:"htmlarea/plugins/Acronym/acronym.js";s:4:"9895";s:38:"htmlarea/plugins/Acronym/locallang.xml";s:4:"fead";s:46:"htmlarea/plugins/CharacterMap/character-map.js";s:4:"c653";s:43:"htmlarea/plugins/CharacterMap/locallang.xml";s:4:"1feb";s:58:"htmlarea/plugins/CharacterMap/popups/select_character.html";s:4:"a909";s:44:"htmlarea/plugins/DefaultFont/default-font.js";s:4:"8f2d";s:42:"htmlarea/plugins/DefaultFont/locallang.xml";s:4:"a7f8";s:43:"htmlarea/plugins/UserElements/locallang.xml";s:4:"33f9";s:46:"htmlarea/plugins/UserElements/user-elements.js";s:4:"91ca";s:39:"htmlarea/plugins/QuickTag/locallang.xml";s:4:"2f53";s:38:"htmlarea/plugins/QuickTag/quick-tag.js";s:4:"f93b";s:36:"htmlarea/plugins/QuickTag/tag-lib.js";s:4:"ba71";s:46:"htmlarea/plugins/QuickTag/popups/quicktag.html";s:4:"34c7";s:39:"htmlarea/plugins/InlineCSS/inlinecss.js";s:4:"460b";s:40:"htmlarea/plugins/InlineCSS/locallang.xml";s:4:"5dec";s:46:"htmlarea/plugins/TYPO3HtmlParser/locallang.xml";s:4:"8010";s:52:"htmlarea/plugins/TYPO3HtmlParser/typo3html-parser.js";s:4:"af6a";s:42:"htmlarea/plugins/SelectColor/locallang.xml";s:4:"9f9e";s:44:"htmlarea/plugins/SelectColor/select-color.js";s:4:"749b";s:48:"htmlarea/plugins/DefaultInline/default-inline.js";s:4:"9875";s:44:"htmlarea/plugins/DefaultInline/locallang.xml";s:4:"7b16";s:46:"htmlarea/plugins/DefaultImage/default-image.js";s:4:"4f07";s:43:"htmlarea/plugins/DefaultImage/locallang.xml";s:4:"1fdd";s:54:"htmlarea/plugins/DefaultImage/popups/insert_image.html";s:4:"7b8b";s:40:"htmlarea/plugins/TextStyle/locallang.xml";s:4:"ff67";s:40:"htmlarea/plugins/TextStyle/text-style.js";s:4:"2f3f";s:43:"htmlarea/plugins/RemoveFormat/locallang.xml";s:4:"aa85";s:46:"htmlarea/plugins/RemoveFormat/remove-format.js";s:4:"0c90";s:54:"htmlarea/plugins/RemoveFormat/popups/removeformat.html";s:4:"a3b1";s:44:"htmlarea/plugins/FindReplace/find-replace.js";s:4:"ab77";s:41:"htmlarea/plugins/FindReplace/fr_engine.js";s:4:"095f";s:42:"htmlarea/plugins/FindReplace/locallang.xml";s:4:"f836";s:53:"htmlarea/plugins/FindReplace/popups/find_replace.html";s:4:"8d1e";s:41:"htmlarea/plugins/TYPO3Image/locallang.xml";s:4:"ab27";s:41:"htmlarea/plugins/TYPO3Image/typo3image.js";s:4:"3bf5";s:46:"htmlarea/plugins/TableOperations/locallang.xml";s:4:"8377";s:52:"htmlarea/plugins/TableOperations/table-operations.js";s:4:"f6ed";s:57:"htmlarea/plugins/TableOperations/popups/insert_table.html";s:4:"9c35";s:42:"htmlarea/plugins/BlockStyle/block-style.js";s:4:"93c1";s:41:"htmlarea/plugins/BlockStyle/locallang.xml";s:4:"32ed";s:40:"htmlarea/plugins/TYPO3Link/locallang.xml";s:4:"c39b";s:39:"htmlarea/plugins/TYPO3Link/typo3link.js";s:4:"f1ac";s:46:"htmlarea/plugins/InsertSmiley/insert-smiley.js";s:4:"abba";s:43:"htmlarea/plugins/InsertSmiley/locallang.xml";s:4:"ed64";s:46:"htmlarea/plugins/InsertSmiley/smileys/0001.gif";s:4:"4aff";s:46:"htmlarea/plugins/InsertSmiley/smileys/0002.gif";s:4:"02c4";s:46:"htmlarea/plugins/InsertSmiley/smileys/0003.gif";s:4:"834f";s:46:"htmlarea/plugins/InsertSmiley/smileys/0004.gif";s:4:"fb6a";s:46:"htmlarea/plugins/InsertSmiley/smileys/0005.gif";s:4:"2a48";s:46:"htmlarea/plugins/InsertSmiley/smileys/0006.gif";s:4:"f970";s:46:"htmlarea/plugins/InsertSmiley/smileys/0007.gif";s:4:"97ee";s:46:"htmlarea/plugins/InsertSmiley/smileys/0008.gif";s:4:"10a6";s:46:"htmlarea/plugins/InsertSmiley/smileys/0009.gif";s:4:"1907";s:46:"htmlarea/plugins/InsertSmiley/smileys/0010.gif";s:4:"9ee6";s:46:"htmlarea/plugins/InsertSmiley/smileys/0011.gif";s:4:"ae73";s:46:"htmlarea/plugins/InsertSmiley/smileys/0012.gif";s:4:"f058";s:46:"htmlarea/plugins/InsertSmiley/smileys/0013.gif";s:4:"3ed8";s:46:"htmlarea/plugins/InsertSmiley/smileys/0014.gif";s:4:"a948";s:46:"htmlarea/plugins/InsertSmiley/smileys/0015.gif";s:4:"218d";s:46:"htmlarea/plugins/InsertSmiley/smileys/0016.gif";s:4:"3539";s:46:"htmlarea/plugins/InsertSmiley/smileys/0017.gif";s:4:"ee2e";s:46:"htmlarea/plugins/InsertSmiley/smileys/0018.gif";s:4:"8c66";s:46:"htmlarea/plugins/InsertSmiley/smileys/0019.gif";s:4:"ac36";s:46:"htmlarea/plugins/InsertSmiley/smileys/0020.gif";s:4:"71ef";s:54:"htmlarea/plugins/InsertSmiley/popups/insertsmiley.html";s:4:"27dd";s:46:"htmlarea/plugins/DefaultClean/default-clean.js";s:4:"a2d4";s:43:"htmlarea/plugins/DefaultClean/locallang.xml";s:4:"9e62";s:44:"htmlarea/plugins/TYPO3Browsers/locallang.xml";s:4:"89b8";s:47:"htmlarea/plugins/TYPO3Browsers/typo3browsers.js";s:4:"3afe";s:47:"htmlarea/plugins/TYPO3Browsers/img/download.gif";s:4:"f6d9";s:52:"htmlarea/plugins/TYPO3Browsers/img/external_link.gif";s:4:"9e48";s:63:"htmlarea/plugins/TYPO3Browsers/img/external_link_new_window.gif";s:4:"6e8d";s:52:"htmlarea/plugins/TYPO3Browsers/img/internal_link.gif";s:4:"12b9";s:63:"htmlarea/plugins/TYPO3Browsers/img/internal_link_new_window.gif";s:4:"402a";s:43:"htmlarea/plugins/TYPO3Browsers/img/mail.gif";s:4:"d5a2";s:44:"htmlarea/plugins/AboutEditor/about-editor.js";s:4:"34be";s:42:"htmlarea/plugins/AboutEditor/locallang.xml";s:4:"6dab";s:46:"htmlarea/plugins/AboutEditor/popups/about.html";s:4:"0800";s:43:"htmlarea/plugins/SpellChecker/locallang.xml";s:4:"20d8";s:51:"htmlarea/plugins/SpellChecker/spell-check-logic.php";s:4:"b9ad";s:51:"htmlarea/plugins/SpellChecker/spell-check-style.css";s:4:"82bd";s:47:"htmlarea/plugins/SpellChecker/spell-check-ui.js";s:4:"8b56";s:46:"htmlarea/plugins/SpellChecker/spell-checker.js";s:4:"f0c8";s:67:"htmlarea/plugins/SpellChecker/popups/spell-check-ui-iso-8859-1.html";s:4:"8f86";s:56:"htmlarea/plugins/SpellChecker/popups/spell-check-ui.html";s:4:"96d3";s:37:"htmlarea/plugins/Language/language.js";s:4:"d2ac";s:39:"htmlarea/plugins/Language/locallang.xml";s:4:"9ca8";s:50:"htmlarea/plugins/InlineElements/inline-elements.js";s:4:"f48b";s:45:"htmlarea/plugins/InlineElements/locallang.xml";s:4:"6f8c";s:42:"htmlarea/plugins/DynamicCSS/dynamiccss.css";s:4:"8e7b";s:41:"htmlarea/plugins/DynamicCSS/dynamiccss.js";s:4:"1861";s:41:"htmlarea/plugins/DynamicCSS/locallang.xml";s:4:"b6bf";s:52:"htmlarea/plugins/DynamicCSS/img/red_arrow_bullet.gif";s:4:"82d6";s:44:"htmlarea/plugins/DefaultLink/default-link.js";s:4:"09c2";s:42:"htmlarea/plugins/DefaultLink/locallang.xml";s:4:"e233";s:45:"htmlarea/plugins/DefaultLink/popups/link.html";s:4:"21eb";s:44:"htmlarea/plugins/ContextMenu/context-menu.js";s:4:"afce";s:42:"htmlarea/plugins/ContextMenu/locallang.xml";s:4:"59f5";s:46:"htmlarea/plugins/DefaultColor/default-color.js";s:4:"8621";s:43:"htmlarea/plugins/DefaultColor/locallang.xml";s:4:"c8d1";s:54:"htmlarea/plugins/DefaultColor/popups/select_color.html";s:4:"6c3c";s:41:"htmlarea/plugins/TYPO3Color/locallang.xml";s:4:"3d3c";s:41:"htmlarea/plugins/TYPO3Color/typo3color.js";s:4:"43ee";s:26:"htmlarea/popups/about.html";s:4:"48fe";s:26:"htmlarea/popups/blank.html";s:4:"e697";s:32:"htmlarea/popups/editor_help.html";s:4:"398a";s:33:"htmlarea/popups/insert_image.html";s:4:"bfc1";s:33:"htmlarea/popups/insert_table.html";s:4:"983d";s:25:"htmlarea/popups/link.html";s:4:"c122";s:24:"htmlarea/popups/popup.js";s:4:"4861";s:33:"htmlarea/popups/select_color.html";s:4:"ceba";s:46:"mod4/class.tx_rtehtmlarea_dam_browse_media.php";s:4:"6e41";s:42:"mod4/class.tx_rtehtmlarea_select_image.php";s:4:"80dc";s:14:"mod4/clear.gif";s:4:"cc11";s:13:"mod4/conf.php";s:4:"0c60";s:18:"mod4/locallang.xml";s:4:"8995";s:21:"mod4/select_image.php";s:4:"a36c";s:32:"pi2/class.tx_rtehtmlarea_pi2.php";s:4:"c650";s:17:"pi2/locallang.xml";s:4:"a0a7";s:63:"extensions/BlockElements/class.tx_rtehtmlarea_blockelements.php";s:4:"c85a";s:38:"extensions/BlockElements/locallang.xml";s:4:"45f6";s:42:"extensions/BlockElements/skin/htmlarea.css";s:4:"83ce";s:51:"extensions/BlockElements/skin/images/blockquote.gif";s:4:"34dc";s:47:"extensions/BlockElements/skin/images/indent.gif";s:4:"57df";s:58:"extensions/BlockElements/skin/images/insertOrderedList.gif";s:4:"eb1c";s:61:"extensions/BlockElements/skin/images/insertParagraphAfter.gif";s:4:"e335";s:62:"extensions/BlockElements/skin/images/insertParagraphBefore.gif";s:4:"9c42";s:60:"extensions/BlockElements/skin/images/insertUnorderedList.gif";s:4:"5620";s:54:"extensions/BlockElements/skin/images/justifyCenter.gif";s:4:"420d";s:52:"extensions/BlockElements/skin/images/justifyFull.gif";s:4:"b129";s:52:"extensions/BlockElements/skin/images/justifyLeft.gif";s:4:"3799";s:53:"extensions/BlockElements/skin/images/justifyRight.gif";s:4:"0662";s:48:"extensions/BlockElements/skin/images/outdent.gif";s:4:"4786";s:51:"extensions/Acronym/class.tx_rtehtmlarea_acronym.php";s:4:"8021";s:36:"extensions/Acronym/skin/htmlarea.css";s:4:"6cf9";s:42:"extensions/Acronym/skin/images/acronym.gif";s:4:"1eaa";s:61:"extensions/CharacterMap/class.tx_rtehtmlarea_charactermap.php";s:4:"d2a0";s:37:"extensions/CharacterMap/locallang.xml";s:4:"c9d1";s:41:"extensions/CharacterMap/skin/htmlarea.css";s:4:"04d1";s:55:"extensions/CharacterMap/skin/images/insertCharacter.gif";s:4:"af19";s:59:"extensions/DefaultFont/class.tx_rtehtmlarea_defaultfont.php";s:4:"a026";s:36:"extensions/DefaultFont/locallang.xml";s:4:"8c90";s:61:"extensions/UserElements/class.tx_rtehtmlarea_userelements.php";s:4:"82ed";s:41:"extensions/UserElements/skin/htmlarea.css";s:4:"d015";s:44:"extensions/UserElements/skin/images/user.gif";s:4:"bbb4";s:53:"extensions/QuickTag/class.tx_rtehtmlarea_quicktag.php";s:4:"b5f7";s:37:"extensions/QuickTag/skin/htmlarea.css";s:4:"fc28";s:45:"extensions/QuickTag/skin/images/inserttag.gif";s:4:"a463";s:55:"extensions/InlineCSS/class.tx_rtehtmlarea_inlinecss.php";s:4:"710a";s:34:"extensions/InlineCSS/locallang.xml";s:4:"82ed";s:67:"extensions/TYPO3HtmlParser/class.tx_rtehtmlarea_typo3htmlparser.php";s:4:"fe15";s:63:"extensions/DefaultInline/class.tx_rtehtmlarea_defaultinline.php";s:4:"f271";s:38:"extensions/DefaultInline/locallang.xml";s:4:"e592";s:42:"extensions/DefaultInline/skin/htmlarea.css";s:4:"5b38";s:45:"extensions/DefaultInline/skin/images/bold.gif";s:4:"94f2";s:47:"extensions/DefaultInline/skin/images/italic.gif";s:4:"f60c";s:54:"extensions/DefaultInline/skin/images/strikethrough.gif";s:4:"3fd0";s:50:"extensions/DefaultInline/skin/images/subscript.gif";s:4:"cedd";s:52:"extensions/DefaultInline/skin/images/superscript.gif";s:4:"8aea";s:50:"extensions/DefaultInline/skin/images/underline.gif";s:4:"81e6";s:61:"extensions/DefaultImage/class.tx_rtehtmlarea_defaultimage.php";s:4:"32d8";s:41:"extensions/DefaultImage/skin/htmlarea.css";s:4:"eb4c";s:45:"extensions/DefaultImage/skin/images/image.gif";s:4:"c0f0";s:55:"extensions/TextStyle/class.tx_rtehtmlarea_textstyle.php";s:4:"cc5d";s:34:"extensions/TextStyle/locallang.xml";s:4:"23dd";s:61:"extensions/RemoveFormat/class.tx_rtehtmlarea_removeformat.php";s:4:"497d";s:41:"extensions/RemoveFormat/skin/htmlarea.css";s:4:"be33";s:45:"extensions/RemoveFormat/skin/images/clean.gif";s:4:"2a0f";s:59:"extensions/FindReplace/class.tx_rtehtmlarea_findreplace.php";s:4:"8d67";s:40:"extensions/FindReplace/skin/htmlarea.css";s:4:"43cc";s:43:"extensions/FindReplace/skin/images/find.gif";s:4:"827f";s:57:"extensions/TYPO3Image/class.tx_rtehtmlarea_typo3image.php";s:4:"711d";s:39:"extensions/TYPO3Image/skin/htmlarea.css";s:4:"fa33";s:43:"extensions/TYPO3Image/skin/images/image.gif";s:4:"c0f0";s:67:"extensions/TableOperations/class.tx_rtehtmlarea_tableoperations.php";s:4:"8b5c";s:44:"extensions/TableOperations/skin/htmlarea.css";s:4:"9e65";s:54:"extensions/TableOperations/skin/images/cell-delete.gif";s:4:"f371";s:60:"extensions/TableOperations/skin/images/cell-insert-after.gif";s:4:"2dd2";s:61:"extensions/TableOperations/skin/images/cell-insert-before.gif";s:4:"5d13";s:53:"extensions/TableOperations/skin/images/cell-merge.gif";s:4:"cb52";s:52:"extensions/TableOperations/skin/images/cell-prop.gif";s:4:"ca41";s:53:"extensions/TableOperations/skin/images/cell-split.gif";s:4:"0095";s:53:"extensions/TableOperations/skin/images/col-delete.gif";s:4:"da78";s:59:"extensions/TableOperations/skin/images/col-insert-after.gif";s:4:"80d8";s:60:"extensions/TableOperations/skin/images/col-insert-before.gif";s:4:"d47d";s:51:"extensions/TableOperations/skin/images/col-prop.gif";s:4:"5344";s:52:"extensions/TableOperations/skin/images/col-split.gif";s:4:"c168";s:55:"extensions/TableOperations/skin/images/insert_table.gif";s:4:"c01b";s:53:"extensions/TableOperations/skin/images/row-delete.gif";s:4:"a289";s:59:"extensions/TableOperations/skin/images/row-insert-above.gif";s:4:"1ef1";s:59:"extensions/TableOperations/skin/images/row-insert-under.gif";s:4:"9ad6";s:51:"extensions/TableOperations/skin/images/row-prop.gif";s:4:"5344";s:52:"extensions/TableOperations/skin/images/row-split.gif";s:4:"ebfd";s:53:"extensions/TableOperations/skin/images/table-prop.gif";s:4:"0a5c";s:57:"extensions/TableOperations/skin/images/toggle-borders.gif";s:4:"50cb";s:57:"extensions/BlockStyle/class.tx_rtehtmlarea_blockstyle.php";s:4:"a516";s:35:"extensions/BlockStyle/locallang.xml";s:4:"26b8";s:55:"extensions/TYPO3Link/class.tx_rtehtmlarea_typo3link.php";s:4:"6c51";s:38:"extensions/TYPO3Link/skin/htmlarea.css";s:4:"2a46";s:41:"extensions/TYPO3Link/skin/images/link.gif";s:4:"db9a";s:43:"extensions/TYPO3Link/skin/images/unlink.gif";s:4:"86c4";s:61:"extensions/InsertSmiley/class.tx_rtehtmlarea_insertsmiley.php";s:4:"5ad3";s:41:"extensions/InsertSmiley/skin/htmlarea.css";s:4:"fb52";s:46:"extensions/InsertSmiley/skin/images/smiley.gif";s:4:"c331";s:61:"extensions/DefaultClean/class.tx_rtehtmlarea_defaultclean.php";s:4:"59a6";s:59:"extensions/AboutEditor/class.tx_rtehtmlarea_abouteditor.php";s:4:"ec48";s:40:"extensions/AboutEditor/skin/htmlarea.css";s:4:"eb62";s:44:"extensions/AboutEditor/skin/images/about.gif";s:4:"1690";s:61:"extensions/SpellChecker/class.tx_rtehtmlarea_spellchecker.php";s:4:"c300";s:41:"extensions/SpellChecker/skin/htmlarea.css";s:4:"cedf";s:51:"extensions/SpellChecker/skin/images/spell-check.gif";s:4:"6e0a";s:53:"extensions/Language/class.tx_rtehtmlarea_language.php";s:4:"7325";s:37:"extensions/Language/skin/htmlarea.css";s:4:"f6b2";s:49:"extensions/Language/skin/images/left_to_right.gif";s:4:"1a1f";s:49:"extensions/Language/skin/images/right_to_left.gif";s:4:"2a38";s:65:"extensions/InlineElements/class.tx_rtehtmlarea_inlineelements.php";s:4:"4d23";s:39:"extensions/InlineElements/locallang.xml";s:4:"07c6";s:43:"extensions/InlineElements/skin/htmlarea.css";s:4:"978b";s:54:"extensions/InlineElements/skin/images/bidioverride.gif";s:4:"f38b";s:45:"extensions/InlineElements/skin/images/big.gif";s:4:"779b";s:46:"extensions/InlineElements/skin/images/bold.gif";s:4:"06ac";s:50:"extensions/InlineElements/skin/images/citation.gif";s:4:"b6eb";s:46:"extensions/InlineElements/skin/images/code.gif";s:4:"6057";s:52:"extensions/InlineElements/skin/images/definition.gif";s:4:"692d";s:53:"extensions/InlineElements/skin/images/deletedtext.gif";s:4:"4eec";s:50:"extensions/InlineElements/skin/images/emphasis.gif";s:4:"04c9";s:54:"extensions/InlineElements/skin/images/insertedtext.gif";s:4:"a624";s:48:"extensions/InlineElements/skin/images/italic.gif";s:4:"be83";s:50:"extensions/InlineElements/skin/images/keyboard.gif";s:4:"53ac";s:52:"extensions/InlineElements/skin/images/monospaced.gif";s:4:"78c0";s:51:"extensions/InlineElements/skin/images/quotation.gif";s:4:"7c62";s:48:"extensions/InlineElements/skin/images/sample.gif";s:4:"667c";s:47:"extensions/InlineElements/skin/images/small.gif";s:4:"e013";s:46:"extensions/InlineElements/skin/images/span.gif";s:4:"0dfa";s:55:"extensions/InlineElements/skin/images/strikethrough.gif";s:4:"73b1";s:48:"extensions/InlineElements/skin/images/strong.gif";s:4:"7f50";s:51:"extensions/InlineElements/skin/images/subscript.gif";s:4:"36c0";s:53:"extensions/InlineElements/skin/images/superscript.gif";s:4:"40c4";s:51:"extensions/InlineElements/skin/images/underline.gif";s:4:"dfac";s:50:"extensions/InlineElements/skin/images/variable.gif";s:4:"da61";s:57:"extensions/DynamicCSS/class.tx_rtehtmlarea_dynamiccss.php";s:4:"6226";s:35:"extensions/DynamicCSS/locallang.xml";s:4:"26b8";s:59:"extensions/DefaultLink/class.tx_rtehtmlarea_defaultlink.php";s:4:"1c36";s:40:"extensions/DefaultLink/skin/htmlarea.css";s:4:"883b";s:43:"extensions/DefaultLink/skin/images/link.gif";s:4:"db9a";s:45:"extensions/DefaultLink/skin/images/unlink.gif";s:4:"86c4";s:61:"extensions/DefaultColor/class.tx_rtehtmlarea_defaultcolor.php";s:4:"b4ef";s:37:"extensions/DefaultColor/locallang.xml";s:4:"3fb4";s:41:"extensions/DefaultColor/skin/htmlarea.css";s:4:"4759";s:49:"extensions/DefaultColor/skin/images/forecolor.gif";s:4:"dbc8";s:51:"extensions/DefaultColor/skin/images/hilitecolor.gif";s:4:"d97c";s:57:"extensions/TYPO3Color/class.tx_rtehtmlarea_typo3color.php";s:4:"149e";s:35:"extensions/TYPO3Color/locallang.xml";s:4:"377f";s:39:"extensions/TYPO3Color/skin/htmlarea.css";s:4:"fec1";s:47:"extensions/TYPO3Color/skin/images/forecolor.gif";s:4:"dbc8";s:49:"extensions/TYPO3Color/skin/images/hilitecolor.gif";s:4:"d97c";s:21:"mod3/browse_links.php";s:4:"5a04";s:42:"mod3/class.tx_rtehtmlarea_browse_links.php";s:4:"10d0";s:46:"mod3/class.tx_rtehtmlarea_dam_browse_links.php";s:4:"ee35";s:14:"mod3/clear.gif";s:4:"cc11";s:13:"mod3/conf.php";s:4:"2f07";s:18:"mod3/locallang.xml";s:4:"040a";s:34:"mod5/class.tx_rtehtmlarea_user.php";s:4:"7629";s:14:"mod5/clear.gif";s:4:"cc11";s:13:"mod5/conf.php";s:4:"b639";s:18:"mod5/locallang.xml";s:4:"7a78";s:13:"mod5/user.php";s:4:"f39d";s:32:"pi3/class.tx_rtehtmlarea_pi3.php";s:4:"8662";s:14:"doc/manual.sxw";s:4:"4e64";s:40:"mod6/class.tx_rtehtmlarea_parse_html.php";s:4:"4af1";s:13:"mod6/conf.php";s:4:"2b05";s:19:"mod6/parse_html.php";s:4:"1fd0";s:29:"static/clickenlarge/setup.txt";s:4:"5681";s:26:"res/contentcss/default.css";s:4:"7446";s:28:"res/contentcss/locallang.xml";s:4:"ec0e";s:39:"res/contentcss/img/red_arrow_bullet.gif";s:4:"82d6";s:25:"res/demo/pageTSConfig.txt";s:4:"9fc9";s:25:"res/demo/userTSConfig.txt";s:4:"cfd5";s:33:"res/clickenlarge/pageTSConfig.txt";s:4:"90c2";s:28:"res/typical/pageTSConfig.txt";s:4:"5d6c";s:28:"res/typical/userTSConfig.txt";s:4:"1ce2";s:26:"res/image/pageTSConfig.txt";s:4:"ca94";s:25:"res/proc/pageTSConfig.txt";s:4:"44eb";s:29:"res/advanced/pageTSConfig.txt";s:4:"1ab3";s:29:"res/advanced/userTSConfig.txt";s:4:"36b6";s:36:"res/accessibilityicons/locallang.xml";s:4:"8211";s:39:"res/accessibilityicons/pageTSConfig.txt";s:4:"9bcb";s:39:"res/accessibilityicons/img/download.gif";s:4:"f6d9";s:44:"res/accessibilityicons/img/external_link.gif";s:4:"9e48";s:55:"res/accessibilityicons/img/external_link_new_window.gif";s:4:"6e8d";s:44:"res/accessibilityicons/img/internal_link.gif";s:4:"12b9";s:55:"res/accessibilityicons/img/internal_link_new_window.gif";s:4:"402a";s:35:"res/accessibilityicons/img/mail.gif";s:4:"d5a2";}',
35
	'version' => '1.7.2',
36
	'_md5_values_when_last_written' => 'a:420:{s:9:"ChangeLog";s:4:"1a70";s:29:"class.tx_rtehtmlarea_base.php";s:4:"bf6d";s:27:"class.tx_rtehtmlareaapi.php";s:4:"4476";s:21:"ext_conf_template.txt";s:4:"1a57";s:12:"ext_icon.gif";s:4:"2f41";s:17:"ext_localconf.php";s:4:"da9b";s:14:"ext_tables.php";s:4:"4f9c";s:14:"ext_tables.sql";s:4:"2d74";s:13:"locallang.xml";s:4:"3cca";s:16:"locallang_db.xml";s:4:"a2a2";s:7:"tca.php";s:4:"3756";s:32:"pi2/class.tx_rtehtmlarea_pi2.php";s:4:"c650";s:17:"pi2/locallang.xml";s:4:"a0a7";s:14:"doc/manual.sxw";s:4:"3cee";s:21:"mod3/browse_links.php";s:4:"5a04";s:42:"mod3/class.tx_rtehtmlarea_browse_links.php";s:4:"10d0";s:46:"mod3/class.tx_rtehtmlarea_dam_browse_links.php";s:4:"ee35";s:14:"mod3/clear.gif";s:4:"cc11";s:13:"mod3/conf.php";s:4:"9f3d";s:18:"mod3/locallang.xml";s:4:"040a";s:29:"htmlarea/HTMLAREA_LICENSE.txt";s:4:"a10f";s:26:"htmlarea/htmlarea-gecko.js";s:4:"b665";s:23:"htmlarea/htmlarea-ie.js";s:4:"2703";s:20:"htmlarea/htmlarea.js";s:4:"a9d2";s:30:"htmlarea/locallang_dialogs.xml";s:4:"eba4";s:26:"htmlarea/locallang_msg.xml";s:4:"7b6f";s:31:"htmlarea/locallang_tooltips.xml";s:4:"8b17";s:20:"htmlarea/popupwin.js";s:4:"d0c9";s:50:"htmlarea/skins/default/htmlarea-edited-content.css";s:4:"8f6d";s:35:"htmlarea/skins/default/htmlarea.css";s:4:"f53c";s:42:"htmlarea/skins/default/images/ed_about.gif";s:4:"2763";s:42:"htmlarea/skins/default/images/ed_blank.gif";s:4:"0208";s:45:"htmlarea/skins/default/images/ed_color_bg.gif";s:4:"c6e2";s:45:"htmlarea/skins/default/images/ed_color_fg.gif";s:4:"5d7f";s:41:"htmlarea/skins/default/images/ed_copy.gif";s:4:"4f55";s:43:"htmlarea/skins/default/images/ed_custom.gif";s:4:"e7b2";s:40:"htmlarea/skins/default/images/ed_cut.gif";s:4:"1b00";s:43:"htmlarea/skins/default/images/ed_delete.gif";s:4:"926b";s:41:"htmlarea/skins/default/images/ed_help.gif";s:4:"e7fc";s:39:"htmlarea/skins/default/images/ed_hr.gif";s:4:"f384";s:41:"htmlarea/skins/default/images/ed_html.gif";s:4:"fa6e";s:42:"htmlarea/skins/default/images/ed_image.gif";s:4:"c0f0";s:50:"htmlarea/skins/default/images/ed_left_to_right.gif";s:4:"1a1f";s:41:"htmlarea/skins/default/images/ed_link.gif";s:4:"db9a";s:48:"htmlarea/skins/default/images/ed_list_bullet.gif";s:4:"5620";s:45:"htmlarea/skins/default/images/ed_list_num.gif";s:4:"eb1c";s:42:"htmlarea/skins/default/images/ed_paste.gif";s:4:"fbd2";s:41:"htmlarea/skins/default/images/ed_redo.gif";s:4:"e9e8";s:50:"htmlarea/skins/default/images/ed_right_to_left.gif";s:4:"2a38";s:41:"htmlarea/skins/default/images/ed_save.gif";s:4:"07ad";s:47:"htmlarea/skins/default/images/ed_splitblock.gif";s:4:"503e";s:45:"htmlarea/skins/default/images/ed_splitcel.gif";s:4:"2c04";s:41:"htmlarea/skins/default/images/ed_undo.gif";s:4:"b9ba";s:43:"htmlarea/skins/default/images/ed_unlink.gif";s:4:"86c4";s:53:"htmlarea/skins/default/images/fullscreen_maximize.gif";s:4:"2118";s:53:"htmlarea/skins/default/images/fullscreen_minimize.gif";s:4:"91d6";s:46:"htmlarea/skins/default/images/insert_table.gif";s:4:"c01b";s:59:"htmlarea/skins/default/images/TYPO3ViewHelp/module_help.gif";s:4:"a500";s:61:"htmlarea/skins/default/images/InlineElements/bidioverride.gif";s:4:"f38b";s:52:"htmlarea/skins/default/images/InlineElements/big.gif";s:4:"779b";s:53:"htmlarea/skins/default/images/InlineElements/bold.gif";s:4:"06ac";s:57:"htmlarea/skins/default/images/InlineElements/citation.gif";s:4:"b6eb";s:53:"htmlarea/skins/default/images/InlineElements/code.gif";s:4:"6057";s:59:"htmlarea/skins/default/images/InlineElements/definition.gif";s:4:"692d";s:60:"htmlarea/skins/default/images/InlineElements/deletedtext.gif";s:4:"4eec";s:57:"htmlarea/skins/default/images/InlineElements/emphasis.gif";s:4:"04c9";s:61:"htmlarea/skins/default/images/InlineElements/insertedtext.gif";s:4:"a624";s:55:"htmlarea/skins/default/images/InlineElements/italic.gif";s:4:"be83";s:57:"htmlarea/skins/default/images/InlineElements/keyboard.gif";s:4:"53ac";s:59:"htmlarea/skins/default/images/InlineElements/monospaced.gif";s:4:"78c0";s:58:"htmlarea/skins/default/images/InlineElements/quotation.gif";s:4:"7c62";s:55:"htmlarea/skins/default/images/InlineElements/sample.gif";s:4:"667c";s:54:"htmlarea/skins/default/images/InlineElements/small.gif";s:4:"e013";s:53:"htmlarea/skins/default/images/InlineElements/span.gif";s:4:"0dfa";s:62:"htmlarea/skins/default/images/InlineElements/strikethrough.gif";s:4:"73b1";s:55:"htmlarea/skins/default/images/InlineElements/strong.gif";s:4:"7f50";s:58:"htmlarea/skins/default/images/InlineElements/subscript.gif";s:4:"36c0";s:60:"htmlarea/skins/default/images/InlineElements/superscript.gif";s:4:"40c4";s:58:"htmlarea/skins/default/images/InlineElements/underline.gif";s:4:"dfac";s:57:"htmlarea/skins/default/images/InlineElements/variable.gif";s:4:"da61";s:54:"htmlarea/skins/default/images/QuickTag/ed_quicktag.gif";s:4:"a463";s:58:"htmlarea/skins/default/images/SpellChecker/spell-check.gif";s:4:"6e0a";s:58:"htmlarea/skins/default/images/BlockElements/blockquote.gif";s:4:"34dc";s:54:"htmlarea/skins/default/images/BlockElements/indent.gif";s:4:"57df";s:68:"htmlarea/skins/default/images/BlockElements/insertParagraphAfter.gif";s:4:"e335";s:69:"htmlarea/skins/default/images/BlockElements/insertParagraphBefore.gif";s:4:"9c42";s:61:"htmlarea/skins/default/images/BlockElements/justifyCenter.gif";s:4:"420d";s:59:"htmlarea/skins/default/images/BlockElements/justifyFull.gif";s:4:"b129";s:59:"htmlarea/skins/default/images/BlockElements/justifyLeft.gif";s:4:"3799";s:60:"htmlarea/skins/default/images/BlockElements/justifyRight.gif";s:4:"0662";s:55:"htmlarea/skins/default/images/BlockElements/outdent.gif";s:4:"4786";s:56:"htmlarea/skins/default/images/TYPO3Browsers/ed_image.gif";s:4:"c0f0";s:55:"htmlarea/skins/default/images/TYPO3Browsers/ed_link.gif";s:4:"db9a";s:57:"htmlarea/skins/default/images/TYPO3Browsers/ed_unlink.gif";s:4:"86c4";s:54:"htmlarea/skins/default/images/UserElements/ed_user.gif";s:4:"bbb4";s:58:"htmlarea/skins/default/images/SelectColor/CO-forecolor.gif";s:4:"dbc8";s:60:"htmlarea/skins/default/images/SelectColor/CO-hilitecolor.gif";s:4:"d97c";s:56:"htmlarea/skins/default/images/InsertSmiley/ed_smiley.gif";s:4:"c331";s:52:"htmlarea/skins/default/images/Acronym/ed_acronym.gif";s:4:"1eaa";s:55:"htmlarea/skins/default/images/RemoveFormat/ed_clean.gif";s:4:"2a0f";s:53:"htmlarea/skins/default/images/FindReplace/ed_find.gif";s:4:"827f";s:61:"htmlarea/skins/default/images/TableOperations/cell-delete.gif";s:4:"f371";s:67:"htmlarea/skins/default/images/TableOperations/cell-insert-after.gif";s:4:"2dd2";s:68:"htmlarea/skins/default/images/TableOperations/cell-insert-before.gif";s:4:"5d13";s:60:"htmlarea/skins/default/images/TableOperations/cell-merge.gif";s:4:"a2d2";s:59:"htmlarea/skins/default/images/TableOperations/cell-prop.gif";s:4:"ca41";s:60:"htmlarea/skins/default/images/TableOperations/cell-split.gif";s:4:"d87c";s:60:"htmlarea/skins/default/images/TableOperations/col-delete.gif";s:4:"da78";s:66:"htmlarea/skins/default/images/TableOperations/col-insert-after.gif";s:4:"80d8";s:67:"htmlarea/skins/default/images/TableOperations/col-insert-before.gif";s:4:"d47d";s:58:"htmlarea/skins/default/images/TableOperations/col-prop.gif";s:4:"b178";s:59:"htmlarea/skins/default/images/TableOperations/col-split.gif";s:4:"eacc";s:62:"htmlarea/skins/default/images/TableOperations/insert_table.gif";s:4:"c1db";s:60:"htmlarea/skins/default/images/TableOperations/row-delete.gif";s:4:"a289";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-above.gif";s:4:"1ef1";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-after.gif";s:4:"5e98";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-under.gif";s:4:"9ad6";s:58:"htmlarea/skins/default/images/TableOperations/row-prop.gif";s:4:"5344";s:59:"htmlarea/skins/default/images/TableOperations/row-split.gif";s:4:"a712";s:60:"htmlarea/skins/default/images/TableOperations/table-prop.gif";s:4:"0a5c";s:63:"htmlarea/skins/default/images/TableOperations/table-restyle.gif";s:4:"9284";s:64:"htmlarea/skins/default/images/TableOperations/toggle-borders.gif";s:4:"50cb";s:57:"htmlarea/skins/default/images/CharacterMap/ed_charmap.gif";s:4:"af19";s:50:"htmlarea/plugins/InlineElements/inline-elements.js";s:4:"f48b";s:45:"htmlarea/plugins/InlineElements/locallang.xml";s:4:"6f8c";s:39:"htmlarea/plugins/QuickTag/locallang.xml";s:4:"2f53";s:38:"htmlarea/plugins/QuickTag/quick-tag.js";s:4:"f93b";s:36:"htmlarea/plugins/QuickTag/tag-lib.js";s:4:"ba71";s:46:"htmlarea/plugins/QuickTag/popups/quicktag.html";s:4:"34c7";s:43:"htmlarea/plugins/SpellChecker/locallang.xml";s:4:"20d8";s:51:"htmlarea/plugins/SpellChecker/spell-check-logic.php";s:4:"b9ad";s:51:"htmlarea/plugins/SpellChecker/spell-check-style.css";s:4:"82bd";s:47:"htmlarea/plugins/SpellChecker/spell-check-ui.js";s:4:"8b56";s:46:"htmlarea/plugins/SpellChecker/spell-checker.js";s:4:"f0c8";s:67:"htmlarea/plugins/SpellChecker/popups/spell-check-ui-iso-8859-1.html";s:4:"8f86";s:56:"htmlarea/plugins/SpellChecker/popups/spell-check-ui.html";s:4:"96d3";s:41:"htmlarea/plugins/TYPO3Color/locallang.xml";s:4:"3d3c";s:41:"htmlarea/plugins/TYPO3Color/typo3color.js";s:4:"43ee";s:44:"htmlarea/plugins/AboutEditor/about-editor.js";s:4:"34be";s:42:"htmlarea/plugins/AboutEditor/locallang.xml";s:4:"6dab";s:46:"htmlarea/plugins/AboutEditor/popups/about.html";s:4:"0800";s:46:"htmlarea/plugins/DefaultImage/default-image.js";s:4:"4f07";s:43:"htmlarea/plugins/DefaultImage/locallang.xml";s:4:"1fdd";s:54:"htmlarea/plugins/DefaultImage/popups/insert_image.html";s:4:"7b8b";s:40:"htmlarea/plugins/TextStyle/locallang.xml";s:4:"ff67";s:40:"htmlarea/plugins/TextStyle/text-style.js";s:4:"2f3f";s:46:"htmlarea/plugins/TYPO3HtmlParser/locallang.xml";s:4:"8010";s:52:"htmlarea/plugins/TYPO3HtmlParser/typo3html-parser.js";s:4:"2ac1";s:39:"htmlarea/plugins/InlineCSS/inlinecss.js";s:4:"460b";s:40:"htmlarea/plugins/InlineCSS/locallang.xml";s:4:"5dec";s:48:"htmlarea/plugins/BlockElements/block-elements.js";s:4:"06ca";s:44:"htmlarea/plugins/BlockElements/locallang.xml";s:4:"2f2c";s:42:"htmlarea/plugins/BlockStyle/block-style.js";s:4:"8ce4";s:41:"htmlarea/plugins/BlockStyle/locallang.xml";s:4:"32ed";s:44:"htmlarea/plugins/TYPO3Browsers/locallang.xml";s:4:"89b8";s:47:"htmlarea/plugins/TYPO3Browsers/typo3browsers.js";s:4:"3afe";s:47:"htmlarea/plugins/TYPO3Browsers/img/download.gif";s:4:"f6d9";s:52:"htmlarea/plugins/TYPO3Browsers/img/external_link.gif";s:4:"9e48";s:63:"htmlarea/plugins/TYPO3Browsers/img/external_link_new_window.gif";s:4:"6e8d";s:52:"htmlarea/plugins/TYPO3Browsers/img/internal_link.gif";s:4:"12b9";s:63:"htmlarea/plugins/TYPO3Browsers/img/internal_link_new_window.gif";s:4:"402a";s:43:"htmlarea/plugins/TYPO3Browsers/img/mail.gif";s:4:"d5a2";s:43:"htmlarea/plugins/UserElements/locallang.xml";s:4:"33f9";s:46:"htmlarea/plugins/UserElements/user-elements.js";s:4:"91ca";s:42:"htmlarea/plugins/DynamicCSS/dynamiccss.css";s:4:"8e7b";s:41:"htmlarea/plugins/DynamicCSS/dynamiccss.js";s:4:"1861";s:41:"htmlarea/plugins/DynamicCSS/locallang.xml";s:4:"b6bf";s:52:"htmlarea/plugins/DynamicCSS/img/red_arrow_bullet.gif";s:4:"82d6";s:42:"htmlarea/plugins/SelectColor/locallang.xml";s:4:"9f9e";s:44:"htmlarea/plugins/SelectColor/select-color.js";s:4:"749b";s:44:"htmlarea/plugins/DefaultFont/default-font.js";s:4:"8f2d";s:42:"htmlarea/plugins/DefaultFont/locallang.xml";s:4:"a7f8";s:46:"htmlarea/plugins/InsertSmiley/insert-smiley.js";s:4:"abba";s:43:"htmlarea/plugins/InsertSmiley/locallang.xml";s:4:"ed64";s:54:"htmlarea/plugins/InsertSmiley/popups/insertsmiley.html";s:4:"27dd";s:46:"htmlarea/plugins/InsertSmiley/smileys/0001.gif";s:4:"4aff";s:46:"htmlarea/plugins/InsertSmiley/smileys/0002.gif";s:4:"02c4";s:46:"htmlarea/plugins/InsertSmiley/smileys/0003.gif";s:4:"834f";s:46:"htmlarea/plugins/InsertSmiley/smileys/0004.gif";s:4:"fb6a";s:46:"htmlarea/plugins/InsertSmiley/smileys/0005.gif";s:4:"2a48";s:46:"htmlarea/plugins/InsertSmiley/smileys/0006.gif";s:4:"f970";s:46:"htmlarea/plugins/InsertSmiley/smileys/0007.gif";s:4:"97ee";s:46:"htmlarea/plugins/InsertSmiley/smileys/0008.gif";s:4:"10a6";s:46:"htmlarea/plugins/InsertSmiley/smileys/0009.gif";s:4:"1907";s:46:"htmlarea/plugins/InsertSmiley/smileys/0010.gif";s:4:"9ee6";s:46:"htmlarea/plugins/InsertSmiley/smileys/0011.gif";s:4:"ae73";s:46:"htmlarea/plugins/InsertSmiley/smileys/0012.gif";s:4:"f058";s:46:"htmlarea/plugins/InsertSmiley/smileys/0013.gif";s:4:"3ed8";s:46:"htmlarea/plugins/InsertSmiley/smileys/0014.gif";s:4:"a948";s:46:"htmlarea/plugins/InsertSmiley/smileys/0015.gif";s:4:"218d";s:46:"htmlarea/plugins/InsertSmiley/smileys/0016.gif";s:4:"3539";s:46:"htmlarea/plugins/InsertSmiley/smileys/0017.gif";s:4:"ee2e";s:46:"htmlarea/plugins/InsertSmiley/smileys/0018.gif";s:4:"8c66";s:46:"htmlarea/plugins/InsertSmiley/smileys/0019.gif";s:4:"ac36";s:46:"htmlarea/plugins/InsertSmiley/smileys/0020.gif";s:4:"71ef";s:44:"htmlarea/plugins/ContextMenu/context-menu.js";s:4:"77ce";s:42:"htmlarea/plugins/ContextMenu/locallang.xml";s:4:"3ead";s:41:"htmlarea/plugins/TYPO3Image/locallang.xml";s:4:"ab27";s:41:"htmlarea/plugins/TYPO3Image/typo3image.js";s:4:"3bf5";s:46:"htmlarea/plugins/DefaultColor/default-color.js";s:4:"8621";s:43:"htmlarea/plugins/DefaultColor/locallang.xml";s:4:"c8d1";s:54:"htmlarea/plugins/DefaultColor/popups/select_color.html";s:4:"6c3c";s:35:"htmlarea/plugins/Acronym/acronym.js";s:4:"9895";s:38:"htmlarea/plugins/Acronym/locallang.xml";s:4:"fead";s:46:"htmlarea/plugins/DefaultClean/default-clean.js";s:4:"a2d4";s:43:"htmlarea/plugins/DefaultClean/locallang.xml";s:4:"9e62";s:43:"htmlarea/plugins/RemoveFormat/locallang.xml";s:4:"aa85";s:46:"htmlarea/plugins/RemoveFormat/remove-format.js";s:4:"0c90";s:54:"htmlarea/plugins/RemoveFormat/popups/removeformat.html";s:4:"a3b1";s:44:"htmlarea/plugins/DefaultLink/default-link.js";s:4:"09c2";s:42:"htmlarea/plugins/DefaultLink/locallang.xml";s:4:"e233";s:45:"htmlarea/plugins/DefaultLink/popups/link.html";s:4:"21eb";s:37:"htmlarea/plugins/Language/language.js";s:4:"d2ac";s:39:"htmlarea/plugins/Language/locallang.xml";s:4:"9ca8";s:44:"htmlarea/plugins/FindReplace/find-replace.js";s:4:"ab77";s:41:"htmlarea/plugins/FindReplace/fr_engine.js";s:4:"095f";s:42:"htmlarea/plugins/FindReplace/locallang.xml";s:4:"f836";s:53:"htmlarea/plugins/FindReplace/popups/find_replace.html";s:4:"8d1e";s:48:"htmlarea/plugins/DefaultInline/default-inline.js";s:4:"9875";s:44:"htmlarea/plugins/DefaultInline/locallang.xml";s:4:"7b16";s:40:"htmlarea/plugins/TYPO3Link/locallang.xml";s:4:"c39b";s:39:"htmlarea/plugins/TYPO3Link/typo3link.js";s:4:"f1ac";s:46:"htmlarea/plugins/TableOperations/locallang.xml";s:4:"e7ed";s:52:"htmlarea/plugins/TableOperations/table-operations.js";s:4:"0e5f";s:57:"htmlarea/plugins/TableOperations/popups/insert_table.html";s:4:"9c35";s:46:"htmlarea/plugins/CharacterMap/character-map.js";s:4:"c653";s:43:"htmlarea/plugins/CharacterMap/locallang.xml";s:4:"1feb";s:58:"htmlarea/plugins/CharacterMap/popups/select_character.html";s:4:"a909";s:26:"htmlarea/popups/about.html";s:4:"48fe";s:26:"htmlarea/popups/blank.html";s:4:"e697";s:32:"htmlarea/popups/editor_help.html";s:4:"398a";s:33:"htmlarea/popups/insert_image.html";s:4:"bfc1";s:33:"htmlarea/popups/insert_table.html";s:4:"983d";s:25:"htmlarea/popups/link.html";s:4:"c122";s:24:"htmlarea/popups/popup.js";s:4:"4861";s:33:"htmlarea/popups/select_color.html";s:4:"ceba";s:34:"mod5/class.tx_rtehtmlarea_user.php";s:4:"7629";s:14:"mod5/clear.gif";s:4:"cc11";s:13:"mod5/conf.php";s:4:"9162";s:18:"mod5/locallang.xml";s:4:"7a78";s:13:"mod5/user.php";s:4:"f39d";s:32:"pi1/class.tx_rtehtmlarea_pi1.php";s:4:"c05e";s:17:"pi1/locallang.xml";s:4:"2e58";s:46:"mod4/class.tx_rtehtmlarea_dam_browse_media.php";s:4:"6e41";s:42:"mod4/class.tx_rtehtmlarea_select_image.php";s:4:"80dc";s:14:"mod4/clear.gif";s:4:"cc11";s:13:"mod4/conf.php";s:4:"3903";s:18:"mod4/locallang.xml";s:4:"8995";s:21:"mod4/select_image.php";s:4:"a36c";s:32:"pi3/class.tx_rtehtmlarea_pi3.php";s:4:"8662";s:16:"mod2/acronym.php";s:4:"7e21";s:37:"mod2/class.tx_rtehtmlarea_acronym.php";s:4:"a955";s:41:"mod2/class.tx_rtehtmlarea_acronym_mod.php";s:4:"1e3f";s:14:"mod2/clear.gif";s:4:"cc11";s:13:"mod2/conf.php";s:4:"0231";s:18:"mod2/locallang.xml";s:4:"7dee";s:33:"res/clickenlarge/pageTSConfig.txt";s:4:"90c2";s:26:"res/image/pageTSConfig.txt";s:4:"ca94";s:25:"res/demo/pageTSConfig.txt";s:4:"9fc9";s:25:"res/demo/userTSConfig.txt";s:4:"cfd5";s:26:"res/contentcss/default.css";s:4:"7446";s:28:"res/contentcss/locallang.xml";s:4:"ec0e";s:39:"res/contentcss/img/red_arrow_bullet.gif";s:4:"82d6";s:29:"res/advanced/pageTSConfig.txt";s:4:"1ab3";s:29:"res/advanced/userTSConfig.txt";s:4:"36b6";s:32:"res/indentalign/pageTSConfig.txt";s:4:"14d5";s:25:"res/proc/pageTSConfig.txt";s:4:"0693";s:36:"res/accessibilityicons/locallang.xml";s:4:"8211";s:39:"res/accessibilityicons/pageTSConfig.txt";s:4:"9bcb";s:39:"res/accessibilityicons/img/download.gif";s:4:"f6d9";s:44:"res/accessibilityicons/img/external_link.gif";s:4:"9e48";s:55:"res/accessibilityicons/img/external_link_new_window.gif";s:4:"6e8d";s:44:"res/accessibilityicons/img/internal_link.gif";s:4:"12b9";s:55:"res/accessibilityicons/img/internal_link_new_window.gif";s:4:"402a";s:35:"res/accessibilityicons/img/mail.gif";s:4:"d5a2";s:28:"res/typical/pageTSConfig.txt";s:4:"5d6c";s:28:"res/typical/userTSConfig.txt";s:4:"1ce2";s:40:"mod6/class.tx_rtehtmlarea_parse_html.php";s:4:"4af1";s:13:"mod6/conf.php";s:4:"e430";s:19:"mod6/parse_html.php";s:4:"1fd0";s:29:"static/clickenlarge/setup.txt";s:4:"5681";s:65:"extensions/InlineElements/class.tx_rtehtmlarea_inlineelements.php";s:4:"4d23";s:39:"extensions/InlineElements/locallang.xml";s:4:"07c6";s:43:"extensions/InlineElements/skin/htmlarea.css";s:4:"978b";s:54:"extensions/InlineElements/skin/images/bidioverride.gif";s:4:"f38b";s:45:"extensions/InlineElements/skin/images/big.gif";s:4:"779b";s:46:"extensions/InlineElements/skin/images/bold.gif";s:4:"06ac";s:50:"extensions/InlineElements/skin/images/citation.gif";s:4:"b6eb";s:46:"extensions/InlineElements/skin/images/code.gif";s:4:"6057";s:52:"extensions/InlineElements/skin/images/definition.gif";s:4:"692d";s:53:"extensions/InlineElements/skin/images/deletedtext.gif";s:4:"4eec";s:50:"extensions/InlineElements/skin/images/emphasis.gif";s:4:"04c9";s:54:"extensions/InlineElements/skin/images/insertedtext.gif";s:4:"a624";s:48:"extensions/InlineElements/skin/images/italic.gif";s:4:"be83";s:50:"extensions/InlineElements/skin/images/keyboard.gif";s:4:"53ac";s:52:"extensions/InlineElements/skin/images/monospaced.gif";s:4:"78c0";s:51:"extensions/InlineElements/skin/images/quotation.gif";s:4:"7c62";s:48:"extensions/InlineElements/skin/images/sample.gif";s:4:"667c";s:47:"extensions/InlineElements/skin/images/small.gif";s:4:"e013";s:46:"extensions/InlineElements/skin/images/span.gif";s:4:"0dfa";s:55:"extensions/InlineElements/skin/images/strikethrough.gif";s:4:"73b1";s:48:"extensions/InlineElements/skin/images/strong.gif";s:4:"7f50";s:51:"extensions/InlineElements/skin/images/subscript.gif";s:4:"36c0";s:53:"extensions/InlineElements/skin/images/superscript.gif";s:4:"40c4";s:51:"extensions/InlineElements/skin/images/underline.gif";s:4:"dfac";s:50:"extensions/InlineElements/skin/images/variable.gif";s:4:"da61";s:46:"extensions/InlineElements/res/pageTSConfig.txt";s:4:"8267";s:53:"extensions/QuickTag/class.tx_rtehtmlarea_quicktag.php";s:4:"b5f7";s:37:"extensions/QuickTag/skin/htmlarea.css";s:4:"fc28";s:45:"extensions/QuickTag/skin/images/inserttag.gif";s:4:"a463";s:61:"extensions/SpellChecker/class.tx_rtehtmlarea_spellchecker.php";s:4:"c300";s:41:"extensions/SpellChecker/skin/htmlarea.css";s:4:"cedf";s:51:"extensions/SpellChecker/skin/images/spell-check.gif";s:4:"6e0a";s:57:"extensions/TYPO3Color/class.tx_rtehtmlarea_typo3color.php";s:4:"3388";s:35:"extensions/TYPO3Color/locallang.xml";s:4:"377f";s:39:"extensions/TYPO3Color/skin/htmlarea.css";s:4:"fec1";s:47:"extensions/TYPO3Color/skin/images/forecolor.gif";s:4:"dbc8";s:49:"extensions/TYPO3Color/skin/images/hilitecolor.gif";s:4:"d97c";s:59:"extensions/AboutEditor/class.tx_rtehtmlarea_abouteditor.php";s:4:"ec48";s:40:"extensions/AboutEditor/skin/htmlarea.css";s:4:"eb62";s:44:"extensions/AboutEditor/skin/images/about.gif";s:4:"1690";s:61:"extensions/DefaultImage/class.tx_rtehtmlarea_defaultimage.php";s:4:"32d8";s:41:"extensions/DefaultImage/skin/htmlarea.css";s:4:"eb4c";s:45:"extensions/DefaultImage/skin/images/image.gif";s:4:"c0f0";s:55:"extensions/TextStyle/class.tx_rtehtmlarea_textstyle.php";s:4:"cc5d";s:34:"extensions/TextStyle/locallang.xml";s:4:"23dd";s:67:"extensions/TYPO3HtmlParser/class.tx_rtehtmlarea_typo3htmlparser.php";s:4:"7958";s:55:"extensions/InlineCSS/class.tx_rtehtmlarea_inlinecss.php";s:4:"710a";s:34:"extensions/InlineCSS/locallang.xml";s:4:"82ed";s:63:"extensions/BlockElements/class.tx_rtehtmlarea_blockelements.php";s:4:"eca9";s:38:"extensions/BlockElements/locallang.xml";s:4:"8a29";s:42:"extensions/BlockElements/skin/htmlarea.css";s:4:"83ce";s:51:"extensions/BlockElements/skin/images/blockquote.gif";s:4:"34dc";s:47:"extensions/BlockElements/skin/images/indent.gif";s:4:"57df";s:58:"extensions/BlockElements/skin/images/insertOrderedList.gif";s:4:"eb1c";s:61:"extensions/BlockElements/skin/images/insertParagraphAfter.gif";s:4:"e335";s:62:"extensions/BlockElements/skin/images/insertParagraphBefore.gif";s:4:"9c42";s:60:"extensions/BlockElements/skin/images/insertUnorderedList.gif";s:4:"5620";s:54:"extensions/BlockElements/skin/images/justifyCenter.gif";s:4:"420d";s:52:"extensions/BlockElements/skin/images/justifyFull.gif";s:4:"b129";s:52:"extensions/BlockElements/skin/images/justifyLeft.gif";s:4:"3799";s:53:"extensions/BlockElements/skin/images/justifyRight.gif";s:4:"0662";s:48:"extensions/BlockElements/skin/images/outdent.gif";s:4:"4786";s:57:"extensions/BlockStyle/class.tx_rtehtmlarea_blockstyle.php";s:4:"a516";s:35:"extensions/BlockStyle/locallang.xml";s:4:"26b8";s:61:"extensions/UserElements/class.tx_rtehtmlarea_userelements.php";s:4:"82ed";s:41:"extensions/UserElements/skin/htmlarea.css";s:4:"d015";s:44:"extensions/UserElements/skin/images/user.gif";s:4:"bbb4";s:57:"extensions/DynamicCSS/class.tx_rtehtmlarea_dynamiccss.php";s:4:"6226";s:35:"extensions/DynamicCSS/locallang.xml";s:4:"26b8";s:59:"extensions/DefaultFont/class.tx_rtehtmlarea_defaultfont.php";s:4:"a026";s:36:"extensions/DefaultFont/locallang.xml";s:4:"8c90";s:61:"extensions/InsertSmiley/class.tx_rtehtmlarea_insertsmiley.php";s:4:"5ad3";s:41:"extensions/InsertSmiley/skin/htmlarea.css";s:4:"fb52";s:46:"extensions/InsertSmiley/skin/images/smiley.gif";s:4:"c331";s:57:"extensions/TYPO3Image/class.tx_rtehtmlarea_typo3image.php";s:4:"711d";s:39:"extensions/TYPO3Image/skin/htmlarea.css";s:4:"fa33";s:43:"extensions/TYPO3Image/skin/images/image.gif";s:4:"c0f0";s:61:"extensions/DefaultColor/class.tx_rtehtmlarea_defaultcolor.php";s:4:"b4ef";s:37:"extensions/DefaultColor/locallang.xml";s:4:"3fb4";s:41:"extensions/DefaultColor/skin/htmlarea.css";s:4:"4759";s:49:"extensions/DefaultColor/skin/images/forecolor.gif";s:4:"dbc8";s:51:"extensions/DefaultColor/skin/images/hilitecolor.gif";s:4:"d97c";s:51:"extensions/Acronym/class.tx_rtehtmlarea_acronym.php";s:4:"8021";s:36:"extensions/Acronym/skin/htmlarea.css";s:4:"6cf9";s:42:"extensions/Acronym/skin/images/acronym.gif";s:4:"1eaa";s:61:"extensions/DefaultClean/class.tx_rtehtmlarea_defaultclean.php";s:4:"59a6";s:61:"extensions/RemoveFormat/class.tx_rtehtmlarea_removeformat.php";s:4:"497d";s:41:"extensions/RemoveFormat/skin/htmlarea.css";s:4:"be33";s:45:"extensions/RemoveFormat/skin/images/clean.gif";s:4:"2a0f";s:59:"extensions/DefaultLink/class.tx_rtehtmlarea_defaultlink.php";s:4:"1c36";s:40:"extensions/DefaultLink/skin/htmlarea.css";s:4:"883b";s:43:"extensions/DefaultLink/skin/images/link.gif";s:4:"db9a";s:45:"extensions/DefaultLink/skin/images/unlink.gif";s:4:"86c4";s:53:"extensions/Language/class.tx_rtehtmlarea_language.php";s:4:"7325";s:37:"extensions/Language/skin/htmlarea.css";s:4:"f6b2";s:49:"extensions/Language/skin/images/left_to_right.gif";s:4:"1a1f";s:49:"extensions/Language/skin/images/right_to_left.gif";s:4:"2a38";s:59:"extensions/FindReplace/class.tx_rtehtmlarea_findreplace.php";s:4:"8d67";s:40:"extensions/FindReplace/skin/htmlarea.css";s:4:"43cc";s:43:"extensions/FindReplace/skin/images/find.gif";s:4:"827f";s:63:"extensions/DefaultInline/class.tx_rtehtmlarea_defaultinline.php";s:4:"f271";s:38:"extensions/DefaultInline/locallang.xml";s:4:"e592";s:42:"extensions/DefaultInline/skin/htmlarea.css";s:4:"5b38";s:45:"extensions/DefaultInline/skin/images/bold.gif";s:4:"94f2";s:47:"extensions/DefaultInline/skin/images/italic.gif";s:4:"f60c";s:54:"extensions/DefaultInline/skin/images/strikethrough.gif";s:4:"3fd0";s:50:"extensions/DefaultInline/skin/images/subscript.gif";s:4:"cedd";s:52:"extensions/DefaultInline/skin/images/superscript.gif";s:4:"8aea";s:50:"extensions/DefaultInline/skin/images/underline.gif";s:4:"81e6";s:55:"extensions/TYPO3Link/class.tx_rtehtmlarea_typo3link.php";s:4:"6c51";s:38:"extensions/TYPO3Link/skin/htmlarea.css";s:4:"2a46";s:41:"extensions/TYPO3Link/skin/images/link.gif";s:4:"db9a";s:43:"extensions/TYPO3Link/skin/images/unlink.gif";s:4:"86c4";s:67:"extensions/TableOperations/class.tx_rtehtmlarea_tableoperations.php";s:4:"d724";s:44:"extensions/TableOperations/skin/htmlarea.css";s:4:"7022";s:54:"extensions/TableOperations/skin/images/cell-delete.gif";s:4:"f371";s:60:"extensions/TableOperations/skin/images/cell-insert-after.gif";s:4:"2dd2";s:61:"extensions/TableOperations/skin/images/cell-insert-before.gif";s:4:"5d13";s:53:"extensions/TableOperations/skin/images/cell-merge.gif";s:4:"cb52";s:52:"extensions/TableOperations/skin/images/cell-prop.gif";s:4:"ca41";s:53:"extensions/TableOperations/skin/images/cell-split.gif";s:4:"0095";s:53:"extensions/TableOperations/skin/images/col-delete.gif";s:4:"da78";s:59:"extensions/TableOperations/skin/images/col-insert-after.gif";s:4:"80d8";s:60:"extensions/TableOperations/skin/images/col-insert-before.gif";s:4:"d47d";s:51:"extensions/TableOperations/skin/images/col-prop.gif";s:4:"b178";s:52:"extensions/TableOperations/skin/images/col-split.gif";s:4:"c168";s:55:"extensions/TableOperations/skin/images/insert_table.gif";s:4:"c01b";s:53:"extensions/TableOperations/skin/images/row-delete.gif";s:4:"a289";s:59:"extensions/TableOperations/skin/images/row-insert-above.gif";s:4:"1ef1";s:59:"extensions/TableOperations/skin/images/row-insert-under.gif";s:4:"9ad6";s:51:"extensions/TableOperations/skin/images/row-prop.gif";s:4:"5344";s:52:"extensions/TableOperations/skin/images/row-split.gif";s:4:"ebfd";s:53:"extensions/TableOperations/skin/images/table-prop.gif";s:4:"0a5c";s:56:"extensions/TableOperations/skin/images/table-restyle.gif";s:4:"9284";s:57:"extensions/TableOperations/skin/images/toggle-borders.gif";s:4:"50cb";s:61:"extensions/CharacterMap/class.tx_rtehtmlarea_charactermap.php";s:4:"d2a0";s:37:"extensions/CharacterMap/locallang.xml";s:4:"c9d1";s:41:"extensions/CharacterMap/skin/htmlarea.css";s:4:"04d1";s:55:"extensions/CharacterMap/skin/images/insertCharacter.gif";s:4:"af19";}',
37 37
	'constraints' => array(
38 38
		'depends' => array(
39 39
			'cms' => '',
40
			'php' => '5.2.0-0.0.0',
40
			'php' => '5.2-0.0.0',
41 41
			'typo3' => '4.2-0.0.0',
42 42
		),
43 43
		'conflicts' => array(
typo3/sysext/rtehtmlarea/extensions/TableOperations/class.tx_rtehtmlarea_tableoperations.php (working copy)
42 42
	protected $thisConfig;					// Reference to RTE PageTSConfig
43 43
	protected $toolbar;					// Reference to RTE toolbar array
44 44
	protected $LOCAL_LANG; 					// Frontend language array
45
	protected $requiresClassesConfiguration = true;		// True if the registered plugin requires the PageTSConfig Classes configuration
45 46
	
46
	protected $pluginButtons = 'table, toggleborders, tableproperties, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit,
47
						columninsertbefore, columninsertafter, columndelete, columnsplit,
47
	protected $pluginButtons = 'table, toggleborders, tableproperties, tablerestyle, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit,
48
						columnproperties, columninsertbefore, columninsertafter, columndelete, columnsplit,
48 49
						cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge';
49 50
	protected $convertToolbarForHtmlAreaArray = array (
50 51
		'table'			=> 'InsertTable',
51 52
		'toggleborders'		=> 'TO-toggle-borders',
52 53
		'tableproperties'	=> 'TO-table-prop',
54
		'tablerestyle'		=> 'TO-table-restyle',
53 55
		'rowproperties'		=> 'TO-row-prop',
54 56
		'rowinsertabove'	=> 'TO-row-insert-above',
55 57
		'rowinsertunder'	=> 'TO-row-insert-under',
56 58
		'rowdelete'		=> 'TO-row-delete',
57 59
		'rowsplit'		=> 'TO-row-split',
60
		'columnproperties'	=> 'TO-col-prop',
58 61
		'columninsertbefore'	=> 'TO-col-insert-before',
59 62
		'columninsertafter'	=> 'TO-col-insert-after',
60 63
		'columndelete'		=> 'TO-col-delete',
......
96 99
		$registerRTEinJavascriptString = '';
97 100
		if (in_array('table', $this->toolbar)) {
98 101
			
102
				// Combining fieldset disablers as a list
103
			$disabledFieldsets = array('Alignment', 'Borders', 'Color', 'Description', 'Layout', 'RowGroup', 'Spacing', 'Style');
104
			foreach ($disabledFieldsets as $index => $fieldset) {
105
				if (!trim($this->thisConfig['disable'.$fieldset.'FieldsetInTableOperations'])) {
106
					unset($disabledFieldsets[$index]);
107
				}
108
			}
109
			$disabledFieldsets = strtolower(implode(',', $disabledFieldsets));
110
			
111
				// Dialogue fieldsets removal configuration
112
			$dialogues = array('table', 'tableproperties', 'rowproperties', 'columnproperties', 'cellproperties');
113
			foreach ($dialogues as $dialogue) {
114
				if (!is_array( $this->thisConfig['buttons.']) || !is_array( $this->thisConfig['buttons.'][$dialogue.'.'])) {
115
					$registerRTEinJavascriptString .= '
116
			RTEarea['.$RTEcounter.'].buttons.'.$dialogue.' = new Object();
117
			RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets = "' . $disabledFieldsets . '";';
118
				} else if ($this->thisConfig['buttons.'][$dialogue.'.']['removeFieldsets']) {
119
					$registerRTEinJavascriptString .= '
120
			RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets += ",' . $disabledFieldsets . '";';
121
				} else {
122
					$registerRTEinJavascriptString .= '
123
			RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets = ",' . $disabledFieldsets . '";';
124
				}
125
			}
126
			
99 127
			$registerRTEinJavascriptString .= '
100
			RTEarea['.$RTEcounter.'].hideTableOperationsInToolbar = ' . (trim($this->thisConfig['hideTableOperationsInToolbar']) ? 'true' : 'false') . ';
101
			RTEarea['.$RTEcounter.'].disableLayoutFieldsetInTableOperations = ' . (trim($this->thisConfig['disableLayoutFieldsetInTableOperations'])?'true':'false') . ';
102
			RTEarea['.$RTEcounter.'].disableAlignmentFieldsetInTableOperations = ' . (trim($this->thisConfig['disableAlignmentFieldsetInTableOperations'])?'true':'false') . ';
103
			RTEarea['.$RTEcounter.'].disableSpacingFieldsetInTableOperations = ' . (trim($this->thisConfig['disableSpacingFieldsetInTableOperations'])?'true':'false') . ';
104
			RTEarea['.$RTEcounter.'].disableBordersFieldsetInTableOperations = ' . (trim($this->thisConfig['disableBordersFieldsetInTableOperations'])?'true':'false') . ';
105
			RTEarea['.$RTEcounter.'].disableColorFieldsetInTableOperations = ' . (trim($this->thisConfig['disableColorFieldsetInTableOperations'])?'true':'false') . ';';
128
			RTEarea['.$RTEcounter.'].hideTableOperationsInToolbar = ' . (trim($this->thisConfig['hideTableOperationsInToolbar']) ? 'true' : 'false') . ';';
106 129
			
107 130
				// Deprecated toggleborders button configuration
108 131
			if (in_array('toggleborders',$this->toolbar) && $this->thisConfig['keepToggleBordersInToolbar']) {
typo3/sysext/rtehtmlarea/extensions/TableOperations/skin/htmlarea.css (working copy)
1 1
/* Selectors for the Table Operations extension of htmlArea RTE */
2
/* TYPO3 SVN ID: $Id $ */
2
/* TYPO3 SVN ID: $Id: htmlarea.css $ */
3 3
.htmlarea .toolbar .InsertTable {background-image:url("images/insert_table.gif");}
4
.htmlarea .toolbar .TO-toggle-borders, .htmlarea-context-menu .TO-toggle-borders {background-image:url("images/TableOperations/toggle-borders.gif");}
5
.htmlarea .toolbar .TO-table-prop, .htmlarea-context-menu .TO-table-prop  {background-image:url("images/TableOperations/table-prop.gif");}
6
.htmlarea .toolbar .TO-row-prop, .htmlarea-context-menu .TO-row-prop {background-image:url("images/TableOperations/row-prop.gif");}
7
.htmlarea .toolbar .TO-row-insert-above, .htmlarea-context-menu .TO-row-insert-above {background-image:url("images/TableOperations/row-insert-above.gif");}
8
.htmlarea .toolbar .TO-row-insert-under, .htmlarea-context-menu .TO-row-insert-under {background-image:url("images/TableOperations/row-insert-under.gif");}
9
.htmlarea .toolbar .TO-row-delete, .htmlarea-context-menu .TO-row-delete {background-image:url("images/TableOperations/row-delete.gif");}
10
.htmlarea .toolbar .TO-row-split, .htmlarea-context-menu .TO-row-split {background-image:url("images/TableOperations/row-split.gif");}
11
.htmlarea .toolbar .TO-col-insert-before, .htmlarea-context-menu .TO-col-insert-before {background-image:url("images/TableOperations/col-insert-before.gif");}
12
.htmlarea .toolbar .TO-col-insert-after, .htmlarea-context-menu .TO-col-insert-after {background-image:url("images/TableOperations/col-insert-after.gif");}
13
.htmlarea .toolbar .TO-col-delete, .htmlarea-context-menu .TO-col-delete {background-image:url("images/TableOperations/col-delete.gif");}
14
.htmlarea .toolbar .TO-col-split, .htmlarea-context-menu .TO-col-split {background-image:url("images/TableOperations/col-split.gif");}
15
.htmlarea .toolbar .TO-cell-prop, .htmlarea-context-menu .TO-cell-prop {background-image:url("images/TableOperations/cell-prop.gif");}
16
.htmlarea .toolbar .TO-cell-insert-before, .htmlarea-context-menu .TO-cell-insert-before {background-image:url("images/TableOperations/cell-insert-before.gif");}
17
.htmlarea .toolbar .TO-cell-insert-after, .htmlarea-context-menu .TO-cell-insert-after {background-image:url("images/TableOperations/cell-insert-after.gif");}
18
.htmlarea .toolbar .TO-cell-delete, .htmlarea-context-menu .TO-cell-delete {background-image:url("images/TableOperations/cell-delete.gif");}
19
.htmlarea .toolbar .TO-cell-split, .htmlarea-context-menu .TO-cell-split {background-image:url("images/TableOperations/cell-split.gif");}
20
.htmlarea .toolbar .TO-cell-merge, .htmlarea-context-menu .TO-cell-merge {background-image:url("images/TableOperations/cell-merge.gif");}
4
.htmlarea .toolbar .TO-toggle-borders, .htmlarea-context-menu .TO-toggle-borders {background-image:url("images/toggle-borders.gif");}
5
.htmlarea .toolbar .TO-table-prop, .htmlarea-context-menu .TO-table-prop {background-image:url("images/table-prop.gif");}
6
.htmlarea .toolbar .TO-table-restyle, .htmlarea-context-menu .TO-table-restyle {background-image:url("images/table-restyle.gif");}
7
.htmlarea .toolbar .TO-row-prop, .htmlarea-context-menu .TO-row-prop {background-image:url("images/row-prop.gif");}
8
.htmlarea .toolbar .TO-row-insert-above, .htmlarea-context-menu .TO-row-insert-above {background-image:url("images/row-insert-above.gif");}
9
.htmlarea .toolbar .TO-row-insert-under, .htmlarea-context-menu .TO-row-insert-under {background-image:url("images/row-insert-under.gif");}
10
.htmlarea .toolbar .TO-row-delete, .htmlarea-context-menu .TO-row-delete {background-image:url("images/row-delete.gif");}
11
.htmlarea .toolbar .TO-row-split, .htmlarea-context-menu .TO-row-split {background-image:url("images/row-split.gif");}
12
.htmlarea .toolbar .TO-col-prop, .htmlarea-context-menu .TO-col-prop {background-image:url("images/col-prop.gif");}
13
.htmlarea .toolbar .TO-col-insert-before, .htmlarea-context-menu .TO-col-insert-before {background-image:url("images/col-insert-before.gif");}
14
.htmlarea .toolbar .TO-col-insert-after, .htmlarea-context-menu .TO-col-insert-after {background-image:url("images/col-insert-after.gif");}
15
.htmlarea .toolbar .TO-col-delete, .htmlarea-context-menu .TO-col-delete {background-image:url("images/col-delete.gif");}
16
.htmlarea .toolbar .TO-col-split, .htmlarea-context-menu .TO-col-split {background-image:url("images/col-split.gif");}
17
.htmlarea .toolbar .TO-cell-prop, .htmlarea-context-menu .TO-cell-prop {background-image:url("images/cell-prop.gif");}
18
.htmlarea .toolbar .TO-cell-insert-before, .htmlarea-context-menu .TO-cell-insert-before {background-image:url("images/cell-insert-before.gif");}
19
.htmlarea .toolbar .TO-cell-insert-after, .htmlarea-context-menu .TO-cell-insert-after {background-image:url("images/cell-insert-after.gif");}
20
.htmlarea .toolbar .TO-cell-delete, .htmlarea-context-menu .TO-cell-delete {background-image:url("images/cell-delete.gif");}
21
.htmlarea .toolbar .TO-cell-split, .htmlarea-context-menu .TO-cell-split {background-image:url("images/cell-split.gif");}
22
.htmlarea .toolbar .TO-cell-merge, .htmlarea-context-menu .TO-cell-merge {background-image:url("images/cell-merge.gif");}
typo3/sysext/rtehtmlarea/extensions/TYPO3Color/class.tx_rtehtmlarea_typo3color.php (working copy)
50 50
		);
51 51
	
52 52
	public function main($parentObject) {
53
		return parent::main($parentObject) && !$this->thisConfig['disableSelectColor'];
53
		return parent::main($parentObject) && (!$this->thisConfig['disableSelectColor'] || $this->htmlAreaRTE->client['BROWSER'] == 'gecko');
54 54
	}
55 55
	
56 56
	/**
typo3/sysext/rtehtmlarea/htmlarea/htmlarea-gecko.js (working copy)
57 57
		try {
58 58
			this._doc.designMode = "on";
59 59
			if (this._doc.queryCommandEnabled("insertbronreturn")) this._doc.execCommand("insertbronreturn", false, this.config.disableEnterParagraphs);
60
			if (this._doc.queryCommandEnabled("enableObjectResizing")) this._doc.execCommand("enableObjectResizing", false, !this.config.disableObjectResizing);
60 61
			if (this._doc.queryCommandEnabled("enableInlineTableEditing")) this._doc.execCommand("enableInlineTableEditing", false, (this.config.buttons.table && this.config.buttons.table.enableHandles) ? true : false);
61 62
			if (this._doc.queryCommandEnabled("styleWithCSS")) this._doc.execCommand("styleWithCSS", false, this.config.useCSS);
62 63
				else if (this._doc.queryCommandEnabled("useCSS")) this._doc.execCommand("useCSS", false, !this.config.useCSS);
......
464 465
							editor.sizeIframe(-2);
465 466
						}
466 467
						if (editor._doc.queryCommandEnabled("insertbronreturn")) editor._doc.execCommand("insertbronreturn", false, editor.config.disableEnterParagraphs);
468
						if (editor._doc.queryCommandEnabled("enableObjectResizing")) editor._doc.execCommand("enableObjectResizing", false, !editor.config.disableObjectResizing);
467 469
						if (editor._doc.queryCommandEnabled("enableInlineTableEditing")) editor._doc.execCommand("enableInlineTableEditing", false, (editor.config.buttons.table && editor.config.buttons.table.enableHandles) ? true : false);
468 470
						if (editor._doc.queryCommandEnabled("styleWithCSS")) editor._doc.execCommand("styleWithCSS", false, editor.config.useCSS);
469 471
							else if (editor._doc.queryCommandEnabled("useCSS")) editor._doc.execCommand("useCSS", false, !editor.config.useCSS);
typo3/sysext/rtehtmlarea/htmlarea/htmlarea.js (working copy)
132 132
	if (HTMLArea._compressedScripts && url.indexOf("compressed") == -1) url = url.replace(/\.js$/gi, "_compressed.js");
133 133
	HTMLArea._scripts.push(url);
134 134
};
135
HTMLArea.loadScript(RTEarea[0]["popupwin"] ? RTEarea[0]["popupwin"] : _editor_url + "popupwin.js");
136 135
if(HTMLArea.is_gecko) HTMLArea.loadScript(RTEarea[0]["htmlarea-gecko"] ? RTEarea[0]["htmlarea-gecko"] : _editor_url + "htmlarea-gecko.js");
137 136
if(HTMLArea.is_ie) HTMLArea.loadScript(RTEarea[0]["htmlarea-ie"] ? RTEarea[0]["htmlarea-ie"] : _editor_url + "htmlarea-ie.js");
138 137

  
......
271 270
	this.useCSS = false;
272 271
	this.enableMozillaExtension = true;
273 272
	this.disableEnterParagraphs = false;
273
	this.disableObjectResizing = false;
274 274
	this.removeTrailingBR = false;
275 275
		// style included in the iframe document
276 276
	this.editedContentStyle = _editor_edited_content_CSS;
......
1163 1163
		editor.onGenerate = null;
1164 1164
	}
1165 1165
	HTMLArea._appendToLog("[HTMLArea::initIframe]: All plugins successfully generated.");
1166
	editor.focusEditor();
1166 1167
	editor.updateToolbar();
1167 1168
};
1168 1169

  
......
1246 1247
			if (HTMLArea.is_gecko) {
1247 1248
				try {
1248 1249
					if (this._doc.queryCommandEnabled("insertbronreturn")) this._doc.execCommand("insertbronreturn", false, this.config.disableEnterParagraphs);
1250
					if (this._doc.queryCommandEnabled("enableObjectResizing")) this._doc.execCommand("enableObjectResizing", false, !this.config.disableObjectResizing);
1249 1251
					if (this._doc.queryCommandEnabled("enableInlineTableEditing")) this._doc.execCommand("enableInlineTableEditing", false, (this.config.buttons.table && this.config.buttons.table.enableHandles) ? true : false);
1250 1252
					if (this._doc.queryCommandEnabled("styleWithCSS")) this._doc.execCommand("styleWithCSS", false, this.config.useCSS);
1251 1253
						else if (this._doc.queryCommandEnabled("useCSS")) this._doc.execCommand("useCSS", false, !this.config.useCSS);
......
2210 2212

  
2211 2213
HTMLArea.RE_blockTags = /^(body|p|h1|h2|h3|h4|h5|h6|ul|ol|pre|dl|dt|dd|div|noscript|blockquote|form|hr|table|caption|fieldset|address|td|tr|th|li|tbody|thead|tfoot|iframe)$/;
2212 2214
HTMLArea.isBlockElement = function(el) { return el && el.nodeType == 1 && HTMLArea.RE_blockTags.test(el.nodeName.toLowerCase()); };
2213
HTMLArea.RE_closingTags = /^(p|blockquote|a|li|ol|ul|dl|dt|td|th|tr|tbody|thead|tfoot|caption|colgroup|table|div|b|bdo|big|cite|code|del|dfn|em|i|ins|kbd|label|q|samp|small|span|strike|strong|sub|sup|tt|u|var|abbr|acronym|font|center|object|embed|style|script|title|head|clickenlarge)$/;
2215
HTMLArea.RE_closingTags = /^(p|blockquote|a|li|ol|ul|dl|dt|td|th|tr|tbody|thead|tfoot|caption|colgroup|table|div|b|bdo|big|cite|code|del|dfn|em|i|ins|kbd|label|q|samp|small|span|strike|strong|sub|sup|tt|u|var|abbr|acronym|font|center|object|embed|style|script|title|head)$/;
2214 2216
HTMLArea.RE_noClosingTag = /^(img|br|hr|col|input|area|base|link|meta|param)$/;
2215 2217
HTMLArea.needsClosingTag = function(el) { return el && el.nodeType == 1 && !HTMLArea.RE_noClosingTag.test(el.tagName.toLowerCase()); };
2216 2218

  
......
2266 2268
		}
2267 2269
		if (config.htmlRemoveTagsAndContents && config.htmlRemoveTagsAndContents.test(root_tag)) break;
2268 2270
		var custom_tag = (config.customTags && config.customTags.test(root_tag));
2269
		var empty_root = (root_tag == "clickenlarge" && !(root.firstChild && root.firstChild.nodeName.toLowerCase() == "img"));
2270
		if (outputRoot) outputRoot = !(config.htmlRemoveTags && config.htmlRemoveTags.test(root_tag)) && !empty_root;
2271
		if (outputRoot) outputRoot = !(config.htmlRemoveTags && config.htmlRemoveTags.test(root_tag));
2271 2272
		if ((HTMLArea.is_ie || HTMLArea.is_safari) && root_tag == "head") {
2272 2273
			if(outputRoot) html += "<head>";
2273 2274
			var save_multiline = RegExp.multiline;
......
2982 2983
	 * @return	boolean
2983 2984
	 */
2984 2985
	onMode : function(mode) {
2985
		if (this.dialog && mode === "textmode" && !(this.dialog.buttonId && this.editorConfiguration.btnList[this.dialog.buttonId] && this.editorConfiguration.btnList[this.dialog.buttonId].textMode)) {
2986
		if (mode === "textmode" && this.dialog && HTMLArea.Dialog[this.name] == this.dialog && !(this.dialog.buttonId && this.editorConfiguration.btnList[this.dialog.buttonId] && this.editorConfiguration.btnList[this.dialog.buttonId].textMode)) {
2986 2987
			this.dialog.close();
2987 2988
		}
2988 2989
	},
......
3017 3018
	 * @return	string		the localization of the label
3018 3019
	 */
3019 3020
	localize : function (label) {
3020
		return HTMLArea.I18N.dialogs[label] || HTMLArea.I18N.tooltips[label] || this.I18N[label];
3021
		return this.I18N[label] || HTMLArea.I18N.dialogs[label] || HTMLArea.I18N.tooltips[label];
3021 3022
	},
3022 3023
	
3023 3024
	/**
......
3068 3069
	 * @param	object		arguments: object of variable type to be passed to the dialog
3069 3070
	 * @param	object		dimensions: object giving the width and height of the dialog window
3070 3071
	 * @param	string		showScrollbars: specifies by "yes" or "no" whether or not the dialog window should have scrollbars
3072
	 * @param	object		dialogOpener: reference to the opener window
3071 3073
	 *
3072
	 * @return	object		the dialog window
3074
	 * @return	object		the dialogue object
3073 3075
	 */
3074
	openDialog : function (buttonId, url, action, arguments, dimensions, showScrollbars) {
3076
	openDialog : function (buttonId, url, action, arguments, dimensions, showScrollbars, dialogOpener) {
3075 3077
		if (this.dialog && this.dialog.hasOpenedWindow() && this.dialog.buttonId === buttonId) {
3076 3078
			this.dialog.focus();
3077 3079
			return this.dialog;
......
3091 3093
					actionFunctionReference,
3092 3094
					arguments,
3093 3095
					{width: ((dimensions && dimensions.width)?dimensions.width:100), height: ((dimensions && dimensions.height)?dimensions.height:100)},
3094
					(showScrollbars?showScrollbars:"no")
3096
					(showScrollbars?showScrollbars:"no"),
3097
					dialogOpener
3095 3098
				);
3096 3099
		}
3097 3100
	},
......
3150 3153
	 * @param	object		arguments: object of variable type to be passed to the dialog
3151 3154
	 * @param	object		dimensions: object giving the width and height of the dialog window
3152 3155
	 * @param	string		showScrollbars: specifies by "yes" or "no" whether or not the dialog window should have scrollbars
3156
	 * @param	object		dialogOpener: reference to the opener window
3153 3157
	 *
3154 3158
	 * @return	boolean		true if the dialog window was opened
3155 3159
	 */
3156
	constructor : function (plugin, buttonId, url, action, arguments, dimensions, showScrollbars) {
3160
	constructor : function (plugin, buttonId, url, action, arguments, dimensions, showScrollbars, dialogOpener) {
3157 3161
		this.window = window.window ? window.window : window.self;
3158 3162
		this.plugin = plugin;
3159 3163
		this.buttonId = buttonId;
......
3167 3171
			HTMLArea.Dialog[this.plugin.name].close();
3168 3172
		}
3169 3173
		HTMLArea.Dialog[this.plugin.name] = this;
3174
		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);
3170 3175
		
3171
		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);
3172 3176
		if (!this.dialogWindow) {
3173 3177
			this.plugin.appendToLog("openDialog", "Dialog window could not be opened with url " + url);
3174 3178
			return false;
3175 3179
		}
3180
		
3181
		if (typeof(dialogOpener) !== "undefined") {
3182
			this.dialogWindow.opener = dialogOpener;
3183
			this.dialogWindow.opener.openedDialog = this;
3184
		}
3176 3185
		if (!this.dialogWindow.opener) {
3177 3186
			this.dialogWindow.opener = this.window;
3178 3187
		}
3188
		
3189
		if (!url) this.createForm();
3179 3190
		return true;
3180 3191
	},
3181 3192
	
3193
	/**
3194
	 * Creates the document and the dialogue form of the dialogue window
3195
	 *
3196
	 * @return	void
3197
	 */
3198
	createForm : function () {
3199
		
3200
		this.document = this.dialogWindow.document;
3201
		this.editor = this.plugin.editor;
3202
		
3203
		if (HTMLArea.is_ie) {
3204
			this.document.open();
3205
			var html = "<html><head></head><body></body></html>\n";
3206
			this.document.write(html);
3207
			this.document.close();
3208
			this.loadStyle();
3209
		}
3210
		var html = this.document.documentElement;
3211
		html.className = "popupwin";
3212
		var head = this.document.getElementsByTagName("head")[0];
3213
		if (!head) {
3214
			var head = this.document.createElement("head");
3215
			html.appendChild(head);
3216
		}
3217
		var title = this.document.getElementsByTagName("title")[0];
3218
		if (!title) {
3219
			var title = this.document.createElement("title");
3220
			head.appendChild(title);
3221
		}
3222
		this.document.title = this.arguments.title;
3223
		var body = this.document.body;
3224
		if (!body) {
3225
			var body = this.document.createElement("body");
3226
		}
3227
		body.className = "popupwin dialog";
3228
		body.id = "--HA-body";
3229
		var content = this.document.createElement("div");
3230
		content.className = "content";
3231
		content.id = "content";
3232
		this.content = content;
3233
		body.appendChild(content);
3234
		if (HTMLArea.is_gecko) {
3235
			html.appendChild(body);
3236
		}
3237
			// Create the form
3238
			// Localize, resize and initiate capture of events
3239
			// Catch errors for IE loosing control in case the window is closed while being initialized
3240
		if (HTMLArea.is_ie) {
3241
			try {
3242
				this.arguments.initialize(this);
3243
				this.initialize(false, false, HTMLArea.is_ie);
3244
				this.focus();
3245
			} catch(e) { }
3246
		} else {
3247
			this.arguments.initialize(this);
3248
			this.initialize(false, false, HTMLArea.is_ie);
3249
			this.focus();
3250
		}
3251
	},
3252
	
3253
	/**
3254
	 * Adds OK and Cancel buttons to the dialogue window
3255
	 *
3256
	 * @return	void
3257
	 */
3258
	addButtons : function() {
3259
		var self = this;
3260
		var div = this.document.createElement("div");
3261
		this.content.appendChild(div);
3262
		div.className = "buttons";
3263
		for (var i = 0; i < arguments.length; ++i) {
3264
			var btn = arguments[i];
3265
			var button = this.document.createElement("button");
3266
			div.appendChild(button);
3267
			switch (btn) {
3268
				case "ok":
3269
					button.innerHTML = this.plugin.localize("OK");
3270
					button.onclick = function() {
3271
						try {
3272
							self.callFormInputHandler();
3273
						} catch(e) { };
3274
						return false;
3275
					};
3276
					break;
3277
				case "cancel":
3278
					button.innerHTML = this.plugin.localize("Cancel");
3279
					button.onclick = function() {
3280
						self.close();
3281
						return false;
3282
					};
3283
					break;
3284
			}
3285
		}
3286
	},
3287
	
3288
	/**
3289
	 * Call the form input handler
3290
	 *
3291
	 * @return	boolean		false
3292
	 */
3293
	callFormInputHandler : function() {
3294
		var tags = ["input", "textarea", "select"];
3295
		var params = new Object();
3296
		for (var ti = tags.length; --ti >= 0;) {
3297
			var tag = tags[ti];
3298
			var els = this.content.getElementsByTagName(tag);
3299
			for (var j = 0; j < els.length; ++j) {
3300
				var el = els[j];
3301
				var val = el.value;
3302
				if (el.nodeName.toLowerCase() == "input") {
3303
					if (el.type == "checkbox") {
3304
						val = el.checked;
3305
					}
3306
				}
3307
				params[el.name] = val;
3308
			}
3309
		}
3310
		this.action(this, params);
3311
		return false;
3312
	},
3313
	
3314
	/**
3315
	 * Cheks if the dialogue has an open dialogue window
3316
	 *
3317
	 * @return	boolean		true if the dialogue has an open window
3318
	 */
3182 3319
	hasOpenedWindow : function () {
3183 3320
		return this.dialogWindow && !this.dialogWindow.closed;
3184 3321
	},
......
3191 3328
	 *
3192 3329
	 * @return	void
3193 3330
	 */
3194
	initialize : function (noLocalize, noResize) {
3331
	initialize : function (noLocalize, noResize, noStyle) {
3195 3332
		this.dialogWindow.HTMLArea = HTMLArea;
3196 3333
		this.dialogWindow.dialog = this;
3334
			// Capture unload and escape events
3335
		this.captureEvents();
3197 3336
			// Get stylesheets for the dialog window
3198
		this.loadStyle();
3337
		if (!noStyle) this.loadStyle();
3199 3338
			// Localize the labels of the popup window
3200 3339
		if (!noLocalize) this.localize();
3201 3340
			// Resize the dialog window to its contents
3202 3341
		if (!noResize) this.resize(noResize);
3203
			// Capture unload and escape events
3204
		this.captureEvents();
3205 3342
	},
3206 3343
	
3207 3344
	/**
......
3215 3352
		link.rel = "stylesheet";
3216 3353
		link.type = "text/css";
3217 3354
		link.href = HTMLArea.editorCSS;
3355
		if (link.href.indexOf("http") == -1 && HTMLArea.is_gecko) link.href = _typo3_host_url + link.href;
3218 3356
		head.appendChild(link);
3219 3357
	},
3220 3358
	
......
3235 3373
					if (label) element.firstChild.data = label;
3236 3374
				}
3237 3375
				if (element.title) {
3238
					element.title = this.plugin.localize(element.title);
3376
					label = this.plugin.localize(element.title);
3377
					if (label) element.title = label;
3239 3378
				}
3240 3379
					// resetting the selected option for Mozilla
3241 3380
				if (types[type] == "option" && element.selected ) {
......
3244 3383
				}
3245 3384
			}
3246 3385
		}
3247
		this.dialogWindow.document.title = this.plugin.localize(this.dialogWindow.document.title);
3386
		label = this.plugin.localize(this.dialogWindow.document.title);
3387
		if (label) this.dialogWindow.document.title = label;
3248 3388
	},
3249 3389
	
3250 3390
	/**
......
3257 3397
	resize : function (noResize) {
3258 3398
			// resize if allowed
3259 3399
		var dialogWindow = this.dialogWindow;
3260
		var content = dialogWindow.document.getElementById("content");
3400
		var doc = dialogWindow.document;
3401
		var content = doc.getElementById("content");
3261 3402
		if ((HTMLArea.is_gecko && !HTMLArea.is_opera && !HTMLArea.is_safari) || (HTMLArea.is_opera && content)) {
3262 3403
			var self = this;
3263 3404
			setTimeout( function() {
......
3276 3417
				} catch(e) { }
3277 3418
			}, 25);
3278 3419
		} else {
3420
			var body = doc.body;
3279 3421
			var innerX, innerY;
3280 3422
			if (dialogWindow.innerHeight) {
3281 3423
					// all except Explorer
3282 3424
				innerX = dialogWindow.innerWidth;
3283 3425
				innerY = dialogWindow.innerHeight;
3284
			} else if (dialogWindow.document.documentElement && dialogWindow.document.documentElement.clientHeight) {
3426
			} else if (doc.documentElement && doc.documentElement.clientHeight) {
3285 3427
					// Explorer 6 Strict Mode
3286
				innerX = dialogWindow.document.documentElement.clientWidth;
3287
				innerY = dialogWindow.document.documentElement.clientHeight;
3288
			} else if (document.body) {
3428
				innerX = doc.documentElement.clientWidth;
3429
				innerY = doc.documentElement.clientHeight;
3430
			} else {
3289 3431
					// other Explorers
3290
				innerX = dialogWindow.document.body.clientWidth;
3291
				innerY = dialogWindow.document.body.clientHeight;
3432
				innerX = body.clientWidth;
3433
				innerY = body.clientHeight;
3292 3434
			}
3293 3435
			
3294
			var pageX, pageY;
3295
			var test1 = dialogWindow.document.body.scrollHeight;
3296
			var test2 = dialogWindow.document.body.offsetHeight
3297
			if (test1 > test2) {
3298
					// all but Explorer Mac
3299
				pageX = dialogWindow.document.body.scrollWidth;
3300
				pageY = dialogWindow.document.body.scrollHeight;
3436
			var pageY = Math.max(body.scrollHeight, body.offsetHeight);
3437
			if (innerY == pageY) {
3438
				dialogWindow.resizeTo(body.scrollWidth, body.scrollHeight+75);
3301 3439
			} else {
3302
					// Explorer Mac;
3303
					//would also work in Explorer 6 Strict, Mozilla and Safari
3304
				pageX = dialogWindow.document.body.offsetWidth;
3305
				pageY = dialogWindow.document.body.offsetHeight;
3440
				dialogWindow.resizeBy(Math.max(body.scrollWidth, body.offsetWidth) - innerX, pageY - innerY);
3306 3441
			}
3307
			dialogWindow.resizeBy(pageX - innerX, pageY - innerY);
3308 3442
			
3309 3443
				// center on parent if allowed
3310
			var W = dialogWindow.document.body.offsetWidth;
3311
			var H = dialogWindow.document.body.offsetHeight;
3444
			var W = body.offsetWidth;
3445
			var H = body.offsetHeight;
3312 3446
			var x = (screen.availWidth - W) / 2;
3313 3447
			var y = (screen.availHeight - H) / 2;
3314 3448
			dialogWindow.moveTo(x, y);
......
3367 3501
	},
3368 3502
	
3369 3503
	/**
3504
	 * Recover focus from the parent window
3505
	 *
3506
	 * @return	void
3507
	 */
3508
	recoverFocus : function(ev) {
3509
		if (this.dialogWindow && !this.dialogWindow.closed) {
3510
			if (!ev) var ev = window.event;
3511
			HTMLArea._stopEvent(ev);
3512
			this.focus();
3513
		}
3514
		return false;
3515
	},
3516
	
3517
	/**
3370 3518
	 * Close the dialog window
3371 3519
	 *
3372 3520
	 * @return	void
3373 3521
	 */
3374 3522
	close : function () {
3375
		if (this.hasOpenedWindow()) {
3376
			if (this.dialogWindow.opener && !this.dialogWindow.opener.closed) {
3377
				this.releaseEvents();
3523
		if (this.dialogWindow) {
3524
			if (this.dialogWindow.openedDialog) {
3525
				this.dialogWindow.openedDialog.close();
3378 3526
			}
3379
			this.releaseEvents(this.dialogWindow);
3527
			this.releaseEvents();
3380 3528
			HTMLArea.Dialog[this.plugin.name] = null;
3381
			if (HTMLArea.is_safari) {
3382
				this.dialogWindow.blur();
3529
			if (!this.dialogWindow.closed) {
3530
				this.dialogWindow.dialog = null;
3531
				if (HTMLArea.is_safari || HTMLArea.is_ie) {
3532
					this.dialogWindow.blur();
3533
				}
3534
				this.dialogWindow.close();
3383 3535
			}
3384
			this.dialogWindow.close();
3385
			this.dialogWindow.dialog = null;
3386 3536
			this.plugin.editor.updateToolbar();
3387 3537
		}
3388 3538
		return false;
......
3425 3575
	},
3426 3576
	
3427 3577
	/**
3428
	 *Capture unload and escape events
3578
	 * Capture unload, escape and focus events
3429 3579
	 *
3430 3580
	 * @return	void
3431
	 */	
3581
	 */
3432 3582
	captureEvents : function (skipUnload) {
3583
			// Capture unload events on the dialogue window, the opener window and the editor frame
3433 3584
		this.unloadFunctionReference = this.makeFunctionReference("close");
3434 3585
		HTMLArea._addEvent(this.dialogWindow.opener, "unload", this.unloadFunctionReference);
3435 3586
		if (HTMLArea.is_gecko && this.plugin.editor._iframe.contentWindow) {
3436 3587
			HTMLArea._addEvent(this.plugin.editor._iframe.contentWindow, "unload", this.unloadFunctionReference);
3437 3588
		}
3438 3589
		if (!skipUnload) HTMLArea._addEvent(this.dialogWindow, "unload", this.unloadFunctionReference);
3590
			// Capture escape key on the dialogue window
3439 3591
		this.escapeFunctionReference = this.makeFunctionReference("closeOnEscape");
3440 3592
		HTMLArea._addEvent(this.dialogWindow.document, "keypress", this.escapeFunctionReference);
3593
			// Capture focus events on the opener window and its frames
3594
		if (HTMLArea.is_gecko) {
3595
			this.recoverFocusFunctionReference = this.makeFunctionReference("recoverFocus");
3596
			this.captureFocus(this.dialogWindow.opener);
3597
		}
3441 3598
	 },
3599
	 
3600
	/**
3601
	 * Capture focus events
3602
	 *
3603
	 * @return	void
3604
	 */
3605
	captureFocus : function (w) {
3606
		if (HTMLArea.is_gecko) {
3607
			w.addEventListener("focus", this.recoverFocusFunctionReference, true);
3608
		} else {
3609
			HTMLArea._addEvent(w, "focus", this.recoverFocusFunctionReference);
3610
		}
3611
		for (var i = w.frames.length; --i >= 0;) {
3612
			this.captureFocus(w.frames[i]);
3613
		}
3614
	},
3442 3615
	
3443 3616
	/**
3444
	 * Release all event handlers that were set when the dialog window was opened
3617
	 * Release all event handlers that were set when the dialogue window was opened
3445 3618
	 *
3446 3619
	 * @return	void
3447 3620
	 */
3448 3621
	releaseEvents : function() {
3449
		var opener = this.dialogWindow.opener;
3450
		if (opener && !opener.closed) {
3451
				// release the capturing of events
3452
			HTMLArea._removeEvent(opener, "unload", this.unloadFunctionReference);
3622
		if (this.dialogWindow) {
3453 3623
			HTMLArea._removeEvent(this.dialogWindow, "unload", this.unloadFunctionReference);
3454
			if (HTMLArea.is_gecko && this.plugin.editor._iframe.contentWindow) {
3455
				HTMLArea._removeEvent(this.plugin.editor._iframe.contentWindow, "unload", this.unloadFunctionReference);
3624
			if (this.dialogWindow.document) {
3625
				HTMLArea._removeEvent(this.dialogWindow.document, "keypress", this.escapeFunctionReference);
3456 3626
			}
3457
			HTMLArea._removeEvent(this.dialogWindow.document, "keypress", this.escapeFunctionReference);
3627
			if (this.dialogWindow.opener && !this.dialogWindow.opener.closed) {
3628
				HTMLArea._removeEvent(this.dialogWindow.opener, "unload", this.unloadFunctionReference);
3629
				if (HTMLArea.is_gecko) {
3630
					this.releaseFocus(this.dialogWindow.opener);
3631
				}
3632
			}
3458 3633
		}
3634
		if (HTMLArea.is_gecko && this.plugin.editor._iframe.contentWindow) {
3635
			HTMLArea._removeEvent(this.plugin.editor._iframe.contentWindow, "unload", this.unloadFunctionReference);
3636
		}
3637
	},
3638
	
3639
	/**
3640
	 * Release focus capturing events that were set when the dialogue window was opened
3641
	 *
3642
	 * @return	void
3643
	 */
3644
	releaseFocus : function(w) {
3645
		HTMLArea._removeEvent(w, "focus", this.recoverFocusFunctionReference);
3646
		for (var i = w.frames.length; --i >= 0;) {
3647
			this.releaseFocus(w.frames[i]);
3648
		}
3459 3649
	}
3460 3650
});
3461 3651

  
typo3/sysext/rtehtmlarea/htmlarea/plugins/BlockElements/block-elements.js (working copy)
268 268
						this.indentSelectedListElements(parentElement, range);
269 269
					}
270 270
				} else if (tableCell) {
271
					var nextCell = tableCell.nextSibling ? tableCell.nextSibling : (tableCell.parentNode.nextSibling ? tableCell.parentNode.nextSibling.firstChild : null);
271
					var tablePart = tableCell.parentNode.parentNode;
272
						// Get next cell in same table part
273
					var nextCell = tableCell.nextSibling ? tableCell.nextSibling : (tableCell.parentNode.nextSibling ? tableCell.parentNode.nextSibling.cells[0] : null);
274
						// Next cell is in other table part
272 275
					if (!nextCell) {
276
						switch (tablePart.nodeName.toLowerCase()) {
277
						    case "thead":
278
							nextCell = tablePart.parentNode.tBodies[0].rows[0].cells[0];
279
							break;
280
						    case "tbody":
281
							nextCell = tablePart.nextSibling ? tablePart.nextSibling.rows[0].cells[0] : null;
282
							break;
283
						    case "tfoot":
284
							this.editor.selectNodeContents(tablePart.parentNode.lastChild.lastChild.lastChild, true);
285
						}
286
	
287
					}
288
					if (!nextCell) {
273 289
						if (this.editor.plugins.TableOperations) {
274 290
							this.editor.plugins.TableOperations.instance.onButtonPress(this.editor, "TO-row-insert-under");
275 291
						} else {
276
							nextCell = tableCell.parentNode.parentNode.firstChild.firstChild;
292
							nextCell = tablePart.parentNode.rows[0].cells[0];
277 293
						}
278 294
					}
279 295
					if (nextCell) {
typo3/sysext/rtehtmlarea/htmlarea/plugins/BlockStyle/block-style.js (working copy)
82 82
		this.prefixLabelWithClassName = this.pageTSconfiguration.prefixLabelWithClassName;
83 83
		this.postfixLabelWithClassName = this.pageTSconfiguration.postfixLabelWithClassName;
84 84
		
85
			/* Registering plugin "About" information */
85
		/*
86
		 * Registering plugin "About" information
87
		 */
86 88
		var pluginInformation = {
87
			version		: "1.1",
89
			version		: "1.2",
88 90
			developer	: "Stanislas Rolland",
89 91
			developerUrl	: "http://www.fructifor.ca/",
90 92
			copyrightOwner	: "Stanislas Rolland",
......
94 96
		};
95 97
		this.registerPluginInformation(pluginInformation);
96 98
		
97
			/* Registering the dropdown list */
99
		/*
100
		 * Registeringthe drop-down list
101
		 */
98 102
		var dropDownId = "BlockStyle";
99 103
		var dropDownConfiguration = {
100 104
			id		: dropDownId,
......
142 146
			for (var i = classNames.length; --i >= 0;) {
143 147
				if (!HTMLArea.reservedClassNames.test(classNames[i])) {
144 148
					HTMLArea._removeClass(node, classNames[i]);
149
					if (node.nodeName.toLowerCase() === "table" && this.editor.plugins.TableOperations) {
150
						this.editor.plugins.TableOperations.instance.removeAlternatingClasses(node, classNames[i]);
151
					}
145 152
					break;
146 153
				}
147 154
			}
148 155
		} else {
149
			HTMLArea._addClass(node, className);
156
			var nodeName = node.nodeName.toLowerCase();
157
			if (this.tags && this.tags[nodeName]) {
158
				var allowedClasses = this.tags[nodeName].allowedClasses;
159
				if (allowedClasses && allowedClasses.indexOf(className) !== -1) {
160
					HTMLArea._addClass(node, className);
161
				}
162
			} else if (this.tags && this.tags.all) {
163
				var allowedClasses = this.tags.all.allowedClasses;
164
				if (allowedClasses && allowedClasses.indexOf(className) !== -1) {
165
					HTMLArea._addClass(node, className);
166
				}
167
			} else {
168
				HTMLArea._addClass(node, className);
169
			}
170
			if (nodeName === "table" && this.editor.plugins.TableOperations) {
171
				this.editor.plugins.TableOperations.instance.reStyleTable(node);
172
			}
150 173
		}
151 174
	},
152 175
	
typo3/sysext/rtehtmlarea/htmlarea/plugins/ContextMenu/context-menu.js (working copy)
290 290
		    case "table":
291 291
			table = target;
292 292
			if(!tbo) break;
293
			this.pushOperations(["TO-toggle-borders", "TO-table-prop", "TO-col-split", "TO-col-delete", "TO-col-insert-after", "TO-col-insert-before"], menu, tbo);
293
			this.pushOperations(["TO-col-split", "TO-col-delete", "TO-col-insert-after", "TO-col-insert-before", "TO-col-prop"], menu, tbo);
294
			this.pushOperations(["TO-toggle-borders", "TO-table-restyle", "TO-table-prop"], menu, tbo);
294 295
			break;
295 296
		    case "ol":
296 297
		    case "ul":
typo3/sysext/rtehtmlarea/htmlarea/plugins/ContextMenu/locallang.xml (working copy)
9 9
			<label index="Cut">Cut</label>
10 10
			<label index="Copy">Copy</label>
11 11
			<label index="Paste">Paste</label>
12
			<label index="Image Properties">_Image Properties...</label>
13
			<label index="Modify Link">_Modify Link...</label>
14
			<label index="Check Link">Chec_k Link...</label>
15
			<label index="Remove Link">_Remove Link...</label>
12
			<label index="Image Properties">_Image Properties</label>
13
			<label index="Modify Link">_Modify Link</label>
14
			<label index="Check Link">Chec_k Link</label>
15
			<label index="Remove Link">_Remove Link</label>
16 16
			<label index="TO-toggle-borders-title">Toggle borders</label>
17
			<label index="TO-cell-prop-title">C_ell Properties...</label>
17
			<label index="TO-cell-prop-title">C_ell Properties</label>
18 18
			<label index="TO-cell-insert-before-title">Insert cell before</label>
19 19
			<label index="TO-cell-insert-after-title">Insert cell after</label>
20 20
			<label index="TO-cell-delete-title">Delete Cell</label>
21 21
			<label index="TO-cell-split-title">Split Cell</label>
22 22
			<label index="TO-cell-merge-title">Merge Cells</label>
23
			<label index="TO-row-prop-title">Ro_w Properties...</label>
23
			<label index="TO-row-prop-title">Ro_w Properties</label>
24 24
			<label index="TO-row-insert-above-title">I_nsert Row Before</label>
25 25
			<label index="TO-row-insert-under-title">In_sert Row After</label>
26 26
			<label index="TO-row-delete-title">_Delete Row</label>
27 27
			<label index="TO-row-split-title">Split Row</label>
28
			<label index="TO-table-prop-title">_Table Properties...</label>
28
			<label index="TO-table-prop-title">_Table Properties</label>
29
			<label index="TO-table-restyle-title">Re-apply table styles</label>
30
			<label index="TO-col-prop-title">Column Cells Properties</label>
29 31
			<label index="TO-col-insert-before-title">Insert _Column Before</label>
30 32
			<label index="TO-col-insert-after-title">Insert C_olumn After</label>
31 33
			<label index="TO-col-delete-title">De_lete Column</label>
......
38 40
			<label index="JustifyCenter-tooltip">Centers the text</label>
39 41
			<label index="JustifyRight-tooltip">Aligns text to the right</label>
40 42
			<label index="JustifyFull-tooltip">Aligns text both to the left and the right</label>
41
			<label index="Make link">Make lin_k...</label>
43
			<label index="Make link">Make lin_k</label>
42 44
			<label index="Remove the">Remove the</label>
43
			<label index="Element">Element...</label>
45
			<label index="Element">Element</label>
44 46
			<label index="Please confirm remove">Please confirm that you want to remove this element:</label>
45 47
			<label index="Remove this node from the document">Remove this node from the document</label>
46 48
			<label index="How did you get here? (Please report!)">How did you get here? (Please report!)</label>
......
52 54
			<label index="Link points to:">Link points to:</label>
53 55
			<label index="Unlink the current element">Unlink the current element</label>
54 56
			<label index="TO-toggle-borders-tooltip">Toggle borders</label>
55
			<label index="TO-cell-prop-tooltip">Shows the Table Cell Properties dialog</label>
57
			<label index="TO-cell-prop-tooltip">Shows the Table Cell Properties dialogue</label>
56 58
			<label index="TO-cell-insert-before-tooltip">Inserts a new cell before the current one</label>
57 59
			<label index="TO-cell-insert-after-tooltip">Inserts a new cell after the current one</label>
58 60
			<label index="TO-cell-delete-tooltip">Deletes the current cell</label>
59 61
			<label index="TO-cell-split-tooltip">Splits the current cell</label>
60 62
			<label index="TO-cell-merge-tooltip">Merges the selected cells</label>
61
			<label index="TO-row-prop-tooltip">Shows the Table Row Properties dialog</label>
63
			<label index="TO-row-prop-tooltip">Shows the Table Row Properties dialogue</label>
62 64
			<label index="TO-row-insert-above-tooltip">Inserts a new row before the current one</label>
63 65
			<label index="TO-row-insert-under-tooltip">Inserts a new row after the current one</label>
64 66
			<label index="TO-row-delete-tooltip">Deletes the current row</label>
65 67
			<label index="TO-row-split-tooltip">Splits the current row</label>
66
			<label index="TO-table-prop-tooltip">Shows the Table Properties dialog</label>
68
			<label index="TO-table-prop-tooltip">Shows the Table Properties dialogue</label>
69
			<label index="TO-table-restyle-tooltip">Re-applies the odd-even styles on the table</label>
70
			<label index="TO-col-prop-tooltip">Shows the Column Cells Properties dialogue</label>
67 71
			<label index="TO-col-insert-before-tooltip">Inserts a new column before the current one</label>
68 72
			<label index="TO-col-insert-after-tooltip">Inserts a new column after the current one</label>
69 73
			<label index="TO-col-delete-tooltip">Deletes the current column</label>
typo3/sysext/rtehtmlarea/htmlarea/plugins/TableOperations/locallang.xml (working copy)
8 8
		<languageKey index="default" type="array">
9 9
			<label index="Not set">Not set</label>
10 10
			<label index="None">None</label>
11
			<label index="CSS Style">CSS Style</label>
12
			<label index="Class:">Class:</label>
13
			<label index="Class selector">CSS class selector</label>
14
			<label index="Table class:">Table:</label>
15
			<label index="Table class selector">Class of the table</label>
11
			<label index="Size and Headers">Size and Headers</label>
12
			<label index="Headers">Headers</label>
13
			<label index="CSS Style">Style</label>
14
			<label index="Class:">Classes:</label>
15
			<label index="Class selector">Classes</label>
16
			<label index="Table class:">Table classes:</label>
17
			<label index="Table class selector">Classes of the table</label>
16 18
			<label index="Table body class:">Body:</label>
17
			<label index="Table body class selector">Class of the table body</label>
19
			<label index="Table body class selector">Classes of the table body</label>
18 20
			<label index="Table header class:">Header:</label>
19
			<label index="Table header class selector">Class of the table header</label>
21
			<label index="Table header class selector">Classes of the table header</label>
20 22
			<label index="Table footer class:">Footer:</label>
21
			<label index="Table footer class selector">Class of the table footer</label>
23
			<label index="Table footer class selector">Classes of the table footer</label>
22 24
			<label index="Default">Default</label>
23 25
			<label index="Undefined">Undefined</label>
24 26
			<label index="Alignment">Alignment</label>
......
53 55
			<label index="Cell Properties">Cell Properties</label>
54 56
			<label index="Cell Type and Scope">Cell Type and Scope</label>
55 57
			<label index="Type of cell">Type of cell:</label>
56
			<label index="Normal">Normal cell</label>
58
			<label index="Normal">Data cell</label>
57 59
			<label index="Header">Header cell</label>
58 60
			<label index="Specifies the type of cell">Specifies the type of cell</label>
59 61
			<label index="Scope">Scope:</label>
......
105 107
			<label index="Space between adjacent cells">Space between adjacent cells</label>
106 108
			<label index="Summary:">Summary:</label>
107 109
			<label index="Summary of the table purpose and structure">Summary of the table's purpose and structure</label>
110
			<label index="captionOrSummary-required">Please enter at least one of caption or summary</label>
111
			<label index="caption-required">Please enter a caption</label>
112
			<label index="summary-required">Please enter a summary</label>
108 113
			<label index="TO-cell-delete">Delete cell</label>
109 114
			<label index="TO-cell-insert-after">Insert cell after</label>
110 115
			<label index="TO-cell-insert-before">Insert cell before</label>
111 116
			<label index="TO-cell-merge">Merge cells</label>
112 117
			<label index="TO-cell-prop">Cell properties</label>
113 118
			<label index="TO-cell-split">Split cell</label>
119
			<label index="TO-col-prop">Column properties</label>
114 120
			<label index="TO-col-delete">Delete column</label>
115 121
			<label index="TO-col-insert-after">Insert column after</label>
116 122
			<label index="TO-col-insert-before">Insert column before</label>
......
121 127
			<label index="TO-row-prop">Row properties</label>
122 128
			<label index="TO-row-split">Split row</label>
123 129
			<label index="TO-table-prop">Table properties</label>
130
			<label index="TO-table-restyle">Re-apply table styles</label>
124 131
			<label index="TO-toggle-borders">Toggle borders</label>
125 132
			<label index="Table Properties">Table Properties</label>
126 133
			<label index="Text alignment:">Text alignment:</label>
......
146 153
			<label index="percent">percent</label>
147 154
			<label index="pixels">pixels</label>
148 155
			<label index="em">em</label>
156
			<label index="Headers:">Headers:</label>
157
			<label index="Table headers">Table headers</label>
158
			<label index="No header cells">No header cells</label>
159
			<label index="Header cells on top">Header cells on top</label>
160
			<label index="Header cells on left">Header cells on left</label>
161
			<label index="Header cells on top and left">Header cells on top and left</label>
162
			<label index="Make cells header cells">Make all row cells header cells</label>
163
			<label index="Make cells data cells">Make all row cells data cells</label>
164
			<label index="Header for column">Header cell for column</label>
165
			<label index="Header for row">Header cell for row</label>
166
			<label index="Header for row group">Header cell for row group</label>
167
			<label index="Column Properties">Column Cells Properties</label>
168
			<label index="Type of cells">Type of cells</label>
169
			<label index="Type of cells of the column">Type of cells of the column:</label>
170
			<label index="Specifies the type of cells">Specifies the type of cells of the column</label>
171
			<label index="Data cells">Data cells</label>
172
			<label index="Headers for rows">Headers for rows</label>
173
			<label index="Headers for row groups">Headers for row groups</label>
174
			<label index="Technische Universitat Ilmenau">Technische Universit├Ąt Ilmenau</label>
149 175
		</languageKey>
150 176
	</data>
151 177
	<orig_hash type="array">
typo3/sysext/rtehtmlarea/htmlarea/plugins/TableOperations/table-operations.js (working copy)
44 44
	 */
45 45
	configurePlugin : function (editor) {
46 46
		
47
		this.classesUrl = this.editorConfiguration.classesUrl;
47 48
		this.buttonsConfiguration = this.editorConfiguration.buttons;
49
		this.floatLeft = "float-left";
50
		this.floatRight = "float-right";
51
		this.floatDefault = "not set";
52
		this.useHeaderClass = "thead";
53
		if (this.buttonsConfiguration.table && this.buttonsConfiguration.table.properties) {
54
			if (this.buttonsConfiguration.table.properties.float) {
55
				var floatConfiguration = this.buttonsConfiguration.table.properties.float;
56
				this.floatLeft = (floatConfiguration.left && floatConfiguration.left.useClass) ? floatConfiguration.left.useClass : "float-left";
57
				this.floatRight = (floatConfiguration.right && floatConfiguration.right.useClass) ? floatConfiguration.right.useClass : "float-right";
58
				this.floatDefault = (floatConfiguration.defaultValue) ?  floatConfiguration.defaultValue : "not set";
59
			}
60
			if (this.buttonsConfiguration.table.properties.headers && this.buttonsConfiguration.table.properties.headers.both 
61
					&& this.buttonsConfiguration.table.properties.headers.both.useHeaderClass) {
62
				this.useHeaderClass = this.buttonsConfiguration.table.properties.headers.both.useHeaderClass;
63
			}
64
		}
48 65
		
66
		if (this.buttonsConfiguration.blockstyle) {
67
			this.tags = this.editorConfiguration.buttons.blockstyle.tags;
68
		}
69
		
70
		this.tableParts = ["tfoot", "thead", "tbody"];
71
		this.convertAlignment = { "not set" : "none", "left" : "JustifyLeft", "center" : "JustifyCenter", "right" : "JustifyRight", "justify" : "JustifyFull" };
72
		
49 73
		/*
50 74
		 * Registering plugin "About" information
51 75
		 */
52 76
		var pluginInformation = {
53
			version		: "3.7",
77
			version		: "4.0",
54 78
			developer	: "Mihai Bazon & Stanislas Rolland",
55 79
			developerUrl	: "http://www.fructifor.ca/",
56 80
			copyrightOwner	: "Mihai Bazon & Stanislas Rolland",
57
			sponsor		: "Zapatec Inc. & Fructifor Inc.",
58
			sponsorUrl	: "http://www.fructifor.ca/",
81
			sponsor		: this.localize("Technische Universitat Ilmenau") + " & Zapatec Inc.",
82
			sponsorUrl	: "http://www.tu-ilmenau.de/",
59 83
			license		: "GPL"
60 84
		};
61 85
		this.registerPluginInformation(pluginInformation);
......
89 113
		["InsertTable",		null,				"table"],
90 114
		["toggle-borders",	null, 				"toggleborders"],
91 115
		["table-prop",		"table",			"tableproperties"],
116
		["table-restyle",	"table",			"tablerestyle"],
92 117
		["row-prop",		"tr",				"rowproperties"],
93 118
		["row-insert-above",	"tr",				"rowinsertabove"],
94 119
		["row-insert-under",	"tr",				"rowinsertunder"],
95 120
		["row-delete",		"tr",				"rowdelete"],
96 121
		["row-split",		"td,th[rowSpan!=1]",		"rowsplit"],
122
		["col-prop",		"td,th",			"columnproperties"],
97 123
		["col-insert-before",	"td,th",			"columninsertbefore"],
98 124
		["col-insert-after",	"td,th",			"columninsertafter"],
99 125
		["col-delete",		"td,th",			"columndelete"],
......
106 132
		["cell-split",		"td,th[colSpan!=1,rowSpan!=1]",	"cellsplit"]
107 133
	],
108 134
	
109
	/************************
110
	 * UTILITIES
111
	 ************************/
112 135
	/*
113
	 * Retrieve the closest element having the specified tagName in the list of
136
	 * Retrieve the closest element having the specified nodeName in the list of
114 137
	 * ancestors of the current selection/caret.
115 138
	 */
116
	getClosest : function (tagName) {
139
	getClosest : function (nodeName) {
117 140
		var editor = this.editor;
118 141
		var ancestors = editor.getAllAncestors();
119 142
		var ret = null;
120
		tagName = ("" + tagName).toLowerCase();
143
		nodeName = ("" + nodeName).toLowerCase();
121 144
		for (var i=0; i < ancestors.length; ++i) {
122 145
			var el = ancestors[i];
123
			if (el.tagName.toLowerCase() == tagName) {
146
			if (el.nodeName.toLowerCase() == nodeName) {
124 147
				ret = el;
125 148
				break;
126 149
			}
......
129 152
	},
130 153
	
131 154
	/*
132
	 * Open the table properties dialog.
155
	 * Open the table properties dialogue
133 156
	 */
134
	dialogTableProperties : function () {
135
			// retrieve existing values
136
		var table = this.getClosest("table");
137
		var tablePropertiesInitFunctRef = TableOperations.tablePropertiesInit(table);
138
		var tablePropertiesUpdateFunctRef = TableOperations.tablePropertiesUpdate(table);
139
		var dialog = new PopupWin(this.editor, this.localize("Table Properties"), tablePropertiesUpdateFunctRef, tablePropertiesInitFunctRef, 570, 600);
157
	dialogTableProperties : function (buttonId) {
158
		var tablePropertiesInitFunctRef = this.makeFunctionReference("tablePropertiesInit");
159
		var insert = (buttonId === "InsertTable");
160
		var arguments = {
161
			title 		: (insert ? "Insert Table" : "Table Properties"),
162
			initialize	: tablePropertiesInitFunctRef,
163
			element		: (insert ? null : this.getClosest("table"))
164
		};
165
		var dimensions = {
166
			width	: 820,
167
			height	: insert ? 600 : 630
168
		};
169
		this.dialog = this.openDialog((insert ? "InsertTable" : "table-prop"), "", "tablePropertiesUpdate", arguments, dimensions);
140 170
	},
141 171
	
142 172
	/*
143
	 * Open the row/cell properties dialog.
144
	 * This function requires the file PopupWin to be loaded.
173
	 * Initialize the table insertion or table properties dialog
145 174
	 */
146
	dialogRowCellProperties : function (cell) {
175
	tablePropertiesInit : function(dialog) {
176
		var doc = dialog.document;
177
		var content = dialog.content;
178
		var table = dialog.arguments.element;
179
		this.removedFieldsets = this.buttonsConfiguration[table?"tableproperties":"table"].removeFieldsets ? this.buttonsConfiguration[table?"tableproperties":"table"].removeFieldsets : "";
180
		this.properties = this.buttonsConfiguration.table.properties;
181
		this.removedProperties = (this.properties && this.properties.removed) ? this.properties.removed : "";
182
		TableOperations.buildTitle(doc, content, dialog.arguments.title);
183
		TableOperations.insertSpace(doc, content);
184
		if (this.removedFieldsets.indexOf("description") == -1) {
185
			TableOperations.buildDescriptionFieldset(doc, table, content, "floating");
186
		}
187
		if (this.removedFieldsets.indexOf("spacing") == -1) TableOperations.buildSpacingFieldset(doc, table, content);
188
		TableOperations.insertSpace(doc, content);
189
		this.buildSizeAndHeadersFieldset(doc, table, content, "floating");
190
		if (this.removedFieldsets.indexOf("style") == -1 && dialog.editor.config.customSelects.BlockStyle) {
191
			var blockStyle = dialog.editor.plugins.BlockStyle.instance;
192
			if (blockStyle && blockStyle.cssLoaded) {
193
				TableOperations.buildStylingFieldset(doc, this.editor, table, content);
194
				TableOperations.insertSpace(doc, content);
195
			}
196
		}
197
		if (this.removedFieldsets.indexOf("layout") == -1) this.buildLayoutFieldset(doc, table, content, "floating");
198
		if (this.removedFieldsets.indexOf("alignment") == -1) this.buildAlignmentFieldset(doc, table, content);
199
		TableOperations.insertSpace(doc, content);
200
		if (this.removedFieldsets.indexOf("borders") == -1) this.buildBordersFieldset(dialog.dialogWindow, doc, dialog.editor, table, content);
201
		if (this.removedFieldsets.indexOf("color") == -1) TableOperations.buildColorsFieldset(dialog.dialogWindow, doc, dialog.editor, table, content);
202
		dialog.addButtons("ok", "cancel");
203
	},
204
	
205
	/*
206
	 * Insert the table or update the table properties and close the dialogue
207
	 */
208
	tablePropertiesUpdate : function(dialog, params) {
209
		if (this.buttonsConfiguration.table.properties && this.buttonsConfiguration.table.properties.required) {
210
			if (this.buttonsConfiguration.table.properties.required.indexOf("captionOrSummary") != -1) {
211
				if (!/\S/.test(params.f_caption) && !/\S/.test(params.f_summary)) {
212
					dialog.dialogWindow.alert(this.localize("captionOrSummary" + "-required"));
213
					var el = dialog.document.getElementById("f_caption");
214
					el.focus();
215
					return false;
216
				}
217
			} else {
218
				var required = { "f_caption": "caption", "f_summary": "summary" };
219
				for (var i in required) {
220
					if (required.hasOwnProperty(i)) {
221
						var el = dialog.document.getElementById(i);
222
						if (!el.value && this.buttonsConfiguration.table.properties.required.indexOf(required[i]) != -1) {
223
							dialog.dialogWindow.alert(this.localize(required[i] + "-required"));
224
							el.focus();
225
							return false;
226
						}
227
					}
228
				}
229
			}
230
		}
231
		var doc = dialog.editor._doc;
232
		if (dialog.buttonId === "InsertTable") {
233
			var required = { "f_rows": "You must enter a number of rows", "f_cols": "You must enter a number of columns" };
234
			for (var i in required) {
235
				if (required.hasOwnProperty(i)) {
236
					var el = dialog.document.getElementById(i);
237
					if (!el.value) {
238
						dialog.dialogWindow.alert(this.localize(required[i]));
239
						el.focus();
240
						return false;
241
					}
242
				}
243
			}
244
			var table = doc.createElement("table");
245
			var tbody = doc.createElement("tbody");
246
			table.appendChild(tbody);
247
			for (var i = params.f_rows; --i >= 0;) {
248
				var tr = doc.createElement("tr");
249
				tbody.appendChild(tr);
250
				for (var j = params.f_cols; --j >= 0;) {
251
					var td = doc.createElement("td");
252
					tr.appendChild(td);
253
				}
254
			}
255
		} else {
256
			var table = dialog.arguments.element;
257
		}
258
		table = this.setHeaders(table, params);
259
		table = this.processStyle(table, params);
260
		table.removeAttribute("border");
261
		for (var i in params) {
262
			if (params.hasOwnProperty(i)) {
263
				var val = params[i];
264
				switch (i) {
265
				    case "f_caption":
266
					if (/\S/.test(val)) {
267
						// contains non white-space characters
268
						var caption = table.getElementsByTagName("caption");
269
						if (caption) {
270
							caption = caption[0];
271
						}
272
						if (!caption) {
273
							var caption = doc.createElement("caption");
274
							table.appendChild(caption);
275
						}
276
						caption.innerHTML = val;
277
					} else {
278
						// delete the caption if found
279
						if (table.caption) table.deleteCaption();
280
					}
281
					break;
282
				    case "f_summary":
283
					table.summary = val;
284
					break;
285
				    case "f_width":
286
					table.style.width = ("" + val) + params.f_unit;
287
					break;
288
				    case "f_align":
289
					table.align = val;
290
					break;
291
				    case "f_spacing":
292
					table.cellSpacing = val;
293
					break;
294
				    case "f_padding":
295
					table.cellPadding = val;
296
					break;
297
				    case "f_frames":
298
					table.frame = (val != "not set") ? val : "";
299
					break;
300
				    case "f_rules":
301
					if (val != "not set") table.rules = val;
302
						else table.removeAttribute("rules");
303
					break;
304
				    case "f_st_float":
305
					switch (val) {
306
					    case "not set":
307
						HTMLArea._removeClass(table, this.floatRight);
308
						HTMLArea._removeClass(table, this.floatLeft);
309
						break;
310
					    case "right":
311
						HTMLArea._removeClass(table, this.floatLeft);
312
						HTMLArea._addClass(table, this.floatRight);
313
						break;
314
					    case "left":
315
						HTMLArea._removeClass(table, this.floatRight);
316
						HTMLArea._addClass(table, this.floatLeft);
317
						break;
318
					}
319
					break;
... This diff was truncated because it exceeds the maximum size that can be displayed.
    (1-1/1)