rg/cgi-bin/mailman/listinfo/typo3-english >> > >> _______________________________________________ >> TYPO3-english mailing list >> TYPO3-english@lists.typo3.org >> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-english > _______________________________________________ > TYPO3-english mailing list > TYPO3-english@lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-english > From typo3-english-bounces@lists.typo3.org Wed Mar 24 22:50:01 2010 Path: lists.typo3.org!not-for-mail From: "Pero Matic" Newsgroups: typo3.english Date: Wed, 24 Mar 2010 22:46:21 +0100 Organization: TYPO3 Association Lines: 9 Message-ID: NNTP-Posting-Host: 93-141-44-204.adsl.net.t-com.hr X-Trace: lists.typo3.org 1269467369 3549 93.141.44.204 (24 Mar 2010 21:49:29 GMT) X-Complaints-To: usenet@lists.typo3.org NNTP-Posting-Date: Wed, 24 Mar 2010 21:49:29 +0000 (UTC) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-RFC2646: Format=Flowed; Original X-Newsreader: Microsoft Outlook Express 6.00.2900.5843 X-Priority: 3 X-MSMail-Priority: Normal Xref: lists.typo3.org typo3.english:102638 To: typo3-english@lists.typo3.org Subject: [TYPO3-english] Typo3 BE login security X-BeenThere: typo3-english@lists.typo3.org X-Mailman-Version: 2.1.11 Precedence: list Reply-To: TYPO3 English List-Id: TYPO3 English List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Mar 2010 21:50:01 -0000 Hi. I'm interested how do you guys protect access to BE from u/p brute force attacks etc.? There is IP filter in install tool but i don't like blocking IPs. I found nice extension that can disable account after n wrong u/p attempts, send warning mail to the admin, blacklist IPs automatically etc., called Another Backend Login (wrg_anotherbelogin) but there are some problems in 4.3.2 with login form display. It's not updated since 2008 :-(. So anything similar? Thx! From joydeep@infoservices.in Thu Mar 25 03:44:27 2010 Return-Path: Received: from Kolkata.infoservices.in (static.206.87.46.78.clients.your-server.de [78.46.87.206]) by lists.typo3.org (Postfix) with ESMTP id 536791A200A for ; Thu, 25 Mar 2010 03:44:27 +0100 (CET) Received: from [192.168.1.100] (unknown [122.176.30.116]) by Kolkata.infoservices.in (Postfix) with ESMTPSA id DCB979E7BC for ; Thu, 25 Mar 2010 04:12:36 +0100 (CET) Date: Thu, 25 Mar 2010 08:11:21 +0530 From: "J. Bakshi" User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100228 SUSE/3.0.3-3.1 Thunderbird/3.0.3 MIME-Version: 1.0 To: typo3-english@lists.typo3.org References: In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: Re: [TYPO3-english] Any Linux command to manually uncompress .t3x ? X-BeenThere: typo3-english@lists.typo3.org X-Mailman-Version: 2.1.11 Precedence: list Reply-To: TYPO3 English List-Id: TYPO3 English Message-ID: List-Unsubscribe: , ]*>/g, ''); + selection = selection.replace(/ /g, ''); } - if (Ext.isOpera) { - this.cleanUpRegularExpression = /(]*id=.?frmark[^>]*>)([^<>]*)(<\/span>)/gi; - this.cleanUp.defer(200, this); + if (/\S/.test(selection)) { + fieldset.getComponent('pattern').setValue(selection); + fieldset.getComponent('replacement').focus(); + } else { + fieldset.getComponent('pattern').focus(); } - this.dialog = this.openDialog("FindReplace", this.makeUrlFromPopupName("find_replace"), null, param, {width:this.popupWidth, height:this.popupHeight}); + }, + /* + * Handler invoked when the replace all checkbox is checked + */ + requestReplacement: function () { + if (!this.dialog.find('itemId', 'replacement')[0].getValue() && this.dialog.find('itemId', 'replaceAll')[0].getValue()) { + Ext.MessageBox.alert('', this.localize('Inform a replacement word')); + } + this.clearDoc(); + }, + /* + * Handler invoked when the 'Next' button is pressed + */ + onNext: function () { + if (!this.dialog.find('itemId', 'pattern')[0].getValue()) { + Ext.MessageBox.alert('', this.localize('Enter the text you want to find')); + this.dialog.find('itemId', 'pattern')[0].focus(); + return false; + } + var fields = [ + 'pattern', + 'replacement', + 'words', + 'matchCase', + 'replaceAll' + ]; + var params = {}; + Ext.each(fields, function (field) { + params[field] = this.dialog.find('itemId', field)[0].getValue(); + }, this); + this.search(params); return false; }, - /* - * This function cleans up any span tag left by Opera if the window was closed with the close handle in which case the unload event is not fired by Opera + * Search the pattern and insert span tags * + * @param object params: the parameters of the search corresponding to the values of fields: + * pattern + * replacement + * words + * matchCase + * replaceAll + * * @return void */ - cleanUp : function () { - if (this.dialog && (!this.dialog.dialogWindow || (this.dialog.dialogWindow && this.dialog.dialogWindow.closed))) { - this.editor.setHTML(this.editor.getInnerHTML().replace(this.cleanUpRegularExpression,"$2")); - this.dialog.close(); + search: function (params) { + var html = this.editor.getInnerHTML(); + if (this.buffer == null) { + this.buffer = html; + } + if (this.matches == 0) { + var pattern = new RegExp(params.words ? '(?!<[^>]*)(\\b' + params.pattern + '\\b)(?![^<]*>)' : '(?!<[^>]*)(' + params.pattern + ')(?![^<]*>)', 'g' + (params.matchCase? '' : 'i')); + this.editor.setHTML(html.replace(pattern, '' + "$1" + '')); + Ext.each(this.editor.document.body.getElementsByTagName('span'), function (mark) { + if (/^htmlarea-frmark/.test(mark.id)) { + this.spans.push(mark); + } + }, this); + } + this.spanWalker(params.pattern, params.replacement, params.replaceAll); + }, + /* + * Walk the span tags + * + * @param string pattern: the pattern being searched for + * @param string replacement: the replacement string + * @param bolean replaceAll: true if all occurrences should be replaced + * + * @return void + */ + spanWalker: function (pattern, replacement, replaceAll) { + this.clearMarks(); + if (this.spans.length) { + Ext.each(this.spans, function (mark, i) { + if (i >= this.matches && !/[0-9]$/.test(mark.id)) { + this.matches++; + this.disableActions('clear', false); + mark.id = 'htmlarea-frmark_' + this.matches; + mark.style.color = 'white'; + mark.style.backgroundColor = 'highlight'; + mark.style.fontWeight = 'bold'; + mark.scrollIntoView(false); + var self = this; + function replace(button) { + if (button == 'yes') { + mark.firstChild.replaceData(0, mark.firstChild.data.length, replacement); + self.replaces++; + self.disableActions('undo', false); + } + self.endWalk(pattern, i); + } + if (replaceAll) { + replace('yes'); + return true; + } else { + Ext.MessageBox.confirm('', this.localize('Substitute this occurrence?'), replace, this); + return false; + } + } + }, this); } else { - this.cleanUp.defer(200, this); + this.endWalk(pattern, 0); } + }, + /* + * End the replacement walk + * + * @param string pattern: the pattern being searched for + * @param integer index: the index reached in the walk + * + * @return void + */ + endWalk: function (pattern, index) { + if (index >= this.spans.length - 1 || !this.spans.length) { + var message = this.localize('Done') + ':

'; + if (this.matches > 0) { + if (this.matches == 1) { + message += this.matches + ' ' + this.localize('found item'); + } else { + message += this.matches + ' ' + this.localize('found items'); + } + if (this.replaces > 0) { + if (this.replaces == 1) { + message += ',
' + this.replaces + ' ' + this.localize('replaced item'); + } else { + message += ',
' + this.replaces + ' ' + this.localize('replaced items'); + } + } + this.hiliteAll(); + } else { + message += '"' + pattern + '" ' + this.localize('not found'); + this.disableActions('hiliteall,clear', true); + } + Ext.MessageBox.minWidth = 300; + Ext.MessageBox.alert('', message + '.'); + } + }, + /* + * Remove all marks + */ + clearDoc: function () { + this.editor.setHTML(this.editor.getInnerHTML().replace(this.marksCleaningRE, "$2")); + this.initVariables(); + this.disableActions('hiliteall,clear', true); + }, + /* + * De-highlight all marks + */ + clearMarks: function () { + Ext.each(this.editor.document.body.getElementsByTagName('span'), function (mark) { + if (/^htmlarea-frmark/.test(mark.id)) { + mark.style.backgroundColor = ''; + mark.style.color = ''; + mark.style.fontWeight = ''; + } + }, this); + this.disableActions('hiliteall', false); + this.disableActions('clear', true); + }, + /* + * Highlight all marks + */ + hiliteAll: function () { + Ext.each(this.editor.document.body.getElementsByTagName('span'), function (mark) { + if (/^htmlarea-frmark/.test(mark.id)) { + mark.style.backgroundColor = 'highlight'; + mark.style.color = 'white'; + mark.style.fontWeight = 'bold'; + } + }, this); + this.disableActions('clear', false); + this.disableActions('hiliteall', true); + }, + /* + * Undo the replace operation + */ + resetContents: function () { + if (this.buffer != null) { + var transp = this.editor.getInnerHTML(); + this.editor.setHTML(this.buffer); + this.buffer = transp; + this.disableActions('clear', true); + } + }, + /* + * Disable action buttons + * + * @param array actions: array of buttonIds to set disabled/enabled + * @param boolean disabled: true to set disabled + */ + disableActions: function (actions, disabled) { + Ext.each(actions.split(/[,; ]+/), function (action) { + this.dialog.find('itemId', action)[0].setDisabled(disabled); + }, this); + }, + /* + * Initialize find & replace variables + */ + initVariables: function () { + this.matches = 0; + this.replaces = 0; + this.spans = new Array(); + }, + /* + * Clear the document before leaving on 'Done' button + */ + onCancel: function () { + this.clearDoc(); + var plugin = this.getPluginInstance('UndoRedo'); + if (plugin) { + plugin.start(); + } + this.base(); + }, + /* + * Clear the document before leaving on window close handle + */ + onClose: function () { + this.clearDoc(); + var plugin = this.getPluginInstance('UndoRedo'); + if (plugin) { + plugin.start(); + } + this.base(); } }); Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/fr_engine.js =================================================================== --- typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/fr_engine.js (révision 7091) +++ typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/fr_engine.js (copie de travail) @@ -1,154 +0,0 @@ -/*---------------------------------------*\ - Find and Replace Plugin for HTMLArea-3.0 - ----------------------------------------- - author: Cau guanabara - e-mail: caugb@ibest.com.br -\*---------------------------------------*/ - - var tosearch = ''; - var pater = null; - var buffer = null; - var matches = 0; - var replaces = 0; - var fr_spans = new Array(); - - function execSearch (params) { - var ihtml = dialog.plugin.getPluginInstance("EditorMode").getInnerHTML(); - if (buffer == null) { - buffer = ihtml; - } - - if (params.fr_pattern != tosearch) { - if (tosearch != "") { - clearDoc(); - } - tosearch = params.fr_pattern; - } - - if (matches == 0) { - er = params.fr_words ? "/(?!<[^>]*)(\\b"+params.fr_pattern+"\\b)(?![^<]*>)/g" : "/(?!<[^>]*)("+params.fr_pattern+")(?![^<]*>)/g"; - if (!params.fr_matchcase) { - er += "i"; - } - - pater = eval(er); - - var tago = ''; - var tagc = ''; - var newHtml = ihtml.replace(pater,tago+"$1"+tagc); - dialog.plugin.getPluginInstance("EditorMode").setHTML(newHtml); - - var getallspans = editor._doc.body.getElementsByTagName("span"); - for (var i = 0; i < getallspans.length; i++) { - if (/^frmark/.test(getallspans[i].id)) { - fr_spans.push(getallspans[i]); - } - } - } - spanWalker(params['fr_pattern'],params['fr_replacement'],params['fr_replaceall']); - }; - - function spanWalker (pattern,replacement,replaceall) { - var foundtrue = false; - clearMarks(); - - for (var i = matches; i < fr_spans.length; i++) { - var elm = fr_spans[i]; - foundtrue = true; - if (!(/[0-9]$/.test(elm.id))) { - matches++; - disable('fr_clear', false); - elm.id = 'frmark_'+ matches; - elm.style.color = 'white'; - elm.style.backgroundColor = 'highlight'; - elm.style.fontWeight = 'bold'; - elm.scrollIntoView(false); - if (replaceall || confirm(dialog.plugin.localize("Substitute this occurrence?"))) { - elm.firstChild.replaceData(0,elm.firstChild.data.length,replacement); - replaces++; - disable('fr_undo', false); - } - if (replaceall) { - clearMarks(); - continue; - } - break; - } - } - var last = (i >= fr_spans.length - 1); - if (last || !foundtrue) { // EOF - var message = dialog.plugin.localize("Done")+":\n\n"; - if (matches > 0) { - if (matches == 1) { - message += matches+' ' + dialog.plugin.localize("found item"); - } else { - message += matches+' ' + dialog.plugin.localize("found items"); - } - if (replaces > 0) { - if (replaces == 1) { - message += ',\n'+replaces+' ' + dialog.plugin.localize("replaced item"); - } else { - message += ',\n'+replaces+' ' + dialog.plugin.localize("replaced items"); - } - } - hiliteAll(); - disable('fr_hiliteall', false); - } else { - message += '"' + pattern + '" ' + dialog.plugin.localize("not found"); - } - alert(message+'.'); - } - }; - - function clearDoc () { - var er = /(]*id=.?frmark[^>]*>)([^<>]*)(<\/span>)/gi; - dialog.plugin.getPluginInstance("EditorMode").setHTML(dialog.plugin.getPluginInstance("EditorMode").getInnerHTML().replace(er,"$2")); - pater = null; - tosearch = ''; - fr_spans = new Array(); - matches = 0; - replaces = 0; - disable("fr_hiliteall,fr_clear", true); - }; - - function clearMarks () { - var getall = editor._doc.body.getElementsByTagName("span"); - for (var i = 0; i < getall.length; i++) { - var elm = getall[i]; - if (/^frmark/.test(elm.id)) { - var objStyle = editor._doc.getElementById(elm.id).style; - objStyle.backgroundColor = ""; - objStyle.color = ""; - objStyle.fontWeight = ""; - } - } - }; - - function hiliteAll () { - var getall = editor._doc.body.getElementsByTagName("span"); - for (var i = 0; i < getall.length; i++) { - var elm = getall[i]; - if (/^frmark/.test(elm.id)) { - var objStyle = editor._doc.getElementById(elm.id).style; - objStyle.backgroundColor = "highlight"; - objStyle.color = "white"; - objStyle.fontWeight = "bold"; - } - } - }; - - function resetContents () { - if (buffer != null) { - var transp = dialog.plugin.getPluginInstance("EditorMode").getInnerHTML(); - dialog.plugin.getPluginInstance("EditorMode").setHTML(buffer); - buffer = transp; - } - }; - - function disable (elms, toset) { - var names = elms.split(/[,; ]+/); - for (var i = 0; i < names.length; i++) { - document.getElementById(names[i]).disabled = toset; - } - }; - Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/locallang.xml =================================================================== --- typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/locallang.xml (révision 7091) +++ typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/locallang.xml (copie de travail) @@ -15,13 +15,13 @@ - + - + Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/popups/find_replace.html =================================================================== --- typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/popups/find_replace.html (révision 7091) +++ typo3/sysext/rtehtmlarea/htmlarea/plugins/FindReplace/popups/find_replace.html (copie de travail) @@ -1,183 +0,0 @@ - - - - - Find and Replace - - - - - -
-
Find and Replace
-
-
-
-
- -
-
-
- -
-
-
- Options -
- - -
-
- - -
-
- - -
-
-
- Actions -
- -
-
- -
-
- -
-
-
- - -
-
-
- - Index: typo3/sysext/rtehtmlarea/htmlarea/plugins/UndoRedo/undo-redo.js =================================================================== --- typo3/sysext/rtehtmlarea/htmlarea/plugins/UndoRedo/undo-redo.js (révision 7091) +++ typo3/sysext/rtehtmlarea/htmlarea/plugins/UndoRedo/undo-redo.js (copie de travail) @@ -32,16 +32,13 @@ * TYPO3 SVN ID: $Id$ */ UndoRedo = HTMLArea.Plugin.extend({ - - constructor : function (editor, pluginName) { + constructor: function (editor, pluginName) { this.base(editor, pluginName); }, - /* * This function gets called by the class constructor */ - configurePlugin : function (editor) { - + configurePlugin: function (editor) { this.pageTSconfiguration = this.editorConfiguration.buttons.undo; this.customUndo = true; this.undoQueue = new Array(); @@ -50,21 +47,19 @@ this.undoSteps = 25; // The time interval at which undo samples are taken: 1/2 sec. this.undoTimeout = 500; - /* * Registering plugin "About" information */ var pluginInformation = { - version : "1.1", - developer : "Stanislas Rolland", - developerUrl : "http://www.sjbr.ca", - copyrightOwner : "Stanislas Rolland", - sponsor : "SJBR", - sponsorUrl : "http://www.sjbr.ca", - license : "GPL" + version : '2.0', + developer : 'Stanislas Rolland', + developerUrl : 'http://www.sjbr.ca', + copyrightOwner : 'Stanislas Rolland', + sponsor : 'SJBR', + sponsorUrl : 'http://www.sjbr.ca', + license : 'GPL' }; this.registerPluginInformation(pluginInformation); - /* * Registering the buttons */ @@ -75,42 +70,55 @@ var buttonConfiguration = { id : buttonId, tooltip : this.localize(buttonId.toLowerCase()), - action : "onButtonPress", + action : 'onButtonPress', hotKey : (this.editorConfiguration.buttons[buttonId.toLowerCase()]?this.editorConfiguration.buttons[buttonId.toLowerCase()].hotKey:button[2]), noAutoUpdate : true }; this.registerButton(buttonConfiguration); } - return true; }, - /* * The list of buttons added by this plugin */ - buttonList : [ - ["Undo", null, "z"], - ["Redo", null, "y"] + buttonList: [ + ['Undo', null, 'z'], + ['Redo', null, 'y'] ], - /* * This function gets called when the editor is generated */ onGenerate: function () { // Start undo snapshots if (this.customUndo) { - Ext.TaskMgr.start({ + this.task = { run: this.takeSnapshot, scope: this, interval: this.undoTimeout - }); + }; + this.start(); } }, - /* + * Start the undo/redo snapshot task + */ + start: function () { + if (this.customUndo) { + Ext.TaskMgr.start(this.task); + } + }, + /* + * Start the undo/redo snapshot task + */ + stop: function () { + if (this.customUndo) { + Ext.TaskMgr.stop(this.task); + } + }, + /* * Take a snapshot of the current contents for undo */ - takeSnapshot : function () { + takeSnapshot: function () { var currentTime = (new Date()).getTime(); var newSnapshot = false; if (this.undoPosition >= this.undoSteps) { @@ -146,7 +154,6 @@ } } }, - /* * Build the snapshot entry * @@ -155,17 +162,17 @@ * - bookmark (the bookmark), * - bookmarkedText (the content of the RTE including the bookmark) */ - buildSnapshot : function () { + buildSnapshot: function () { var bookmark = null, bookmarkedText = null; // Insert a bookmark - if (this.editor.getMode() == "wysiwyg" && this.editor.isEditable()) { + if (this.editor.getMode() == 'wysiwyg' && this.editor.isEditable()) { var selection = this.editor._getSelection(); - if ((HTMLArea.is_gecko && !HTMLArea.is_opera9) || (HTMLArea.is_ie && selection.type.toLowerCase() != "control")) { + if ((HTMLArea.is_gecko && !HTMLArea.is_opera9) || (HTMLArea.is_ie && selection.type.toLowerCase() != 'control')) { // Catch error in FF when the selection contains no usable range try { // Work around IE8 bug: can't create a range correctly if the selection is empty and the focus is not on the editor window // But we cannot grab focus from an opened window just for the sake of taking this bookmark - if (!HTMLArea.is_ie || !this.editor.hasOpenedWindow() || selection.type.toLowerCase() != "none") { + if (!HTMLArea.is_ie || !this.editor.hasOpenedWindow() || selection.type.toLowerCase() != 'none') { bookmark = this.editor.getBookmark(this.editor._createRange(selection)); } } catch (e) { @@ -189,11 +196,10 @@ bookmarkedText : bookmarkedText }; }, - /* * Execute the undo request */ - undo : function () { + undo: function () { if (this.undoPosition > 0) { // Make sure we would not loose any changes this.takeSnapshot(); @@ -201,11 +207,10 @@ this.updateButtonsState(); } }, - /* * Execute the redo request */ - redo : function () { + redo: function () { if (this.undoPosition < this.undoQueue.length - 1) { // Make sure we would not loose any changes this.takeSnapshot(); @@ -216,11 +221,10 @@ } } }, - /* * Set content using undo queue position */ - setContent : function (undoPosition) { + setContent: function (undoPosition) { var bookmark = this.undoQueue[undoPosition].bookmark; if (bookmark) { this.editor.setHTML(this.undoQueue[undoPosition].bookmarkedText); @@ -231,7 +235,6 @@ this.editor.setHTML(this.undoQueue[undoPosition].text); } }, - /* * This function gets called when the toolbar is updated */ @@ -257,7 +260,6 @@ button.setDisabled(!button.textMode); } }, - /* * Update the state of the undo/redo buttons */ @@ -278,7 +280,6 @@ this.onUpdateToolbar(button, mode, selectionEmpty, ancestors) } }, - /* * This function gets called when the button was pressed. * @@ -287,7 +288,7 @@ * * @return boolean false if action is completed */ - onButtonPress : function (editor, id) { + onButtonPress: function (editor, id) { // Could be a button or its hotkey var buttonId = this.translateHotKey(id); buttonId = buttonId ? buttonId : id; Index: typo3/sysext/rtehtmlarea/htmlarea/skins/default/htmlarea.css =================================================================== --- typo3/sysext/rtehtmlarea/htmlarea/skins/default/htmlarea.css (révision 7091) +++ typo3/sysext/rtehtmlarea/htmlarea/skins/default/htmlarea.css (copie de travail) @@ -240,15 +240,14 @@ } .htmlarea-window .x-form-item-label { text-align: right; - vertical-align: middle; - padding: 4px 5px 0 5px; + padding: 3px 5px 0 5px; } .htmlarea-window .x-btn-text { font-weight: normal; color: #000000; } -.htmlarea-window .x-form-check-wrap input { - vertical-align: middle; +.htmlarea-window .x-form-check-wrap { + padding-top: 3px; } .htmlarea-window .show-color { margin-top: 10px; @@ -463,11 +462,6 @@ height: 20px; vertical-align: middle; } -/* Selectors for the FindReplace dialogue */ -.htmlarea-find-replace .long-label { - text-align:left; - width:30em; -} /* Selectors for the CharacterMap dialogue */ .htmlarea-window .character-map .character { display: block; Index: typo3/sysext/t3skin/rtehtmlarea/htmlarea.css =================================================================== --- typo3/sysext/t3skin/rtehtmlarea/htmlarea.css (révision 7091) +++ typo3/sysext/t3skin/rtehtmlarea/htmlarea.css (copie de travail) @@ -246,15 +246,14 @@ } .htmlarea-window .x-form-item-label { text-align: right; - vertical-align: middle; - padding: 4px 5px 0 5px; + padding: 3px 5px 0 5px; } .htmlarea-window .x-btn-text { font-weight: normal; color: #000000; } -.htmlarea-window .x-form-check-wrap input { - vertical-align: middle; +.htmlarea-window .x-form-check-wrap { + padding-top: 3px; } .htmlarea-window .show-color { margin-top: 10px; @@ -470,11 +469,6 @@ height: 20px; vertical-align: middle; } -/* Selectors for the FindReplace dialogue */ -.htmlarea-find-replace .long-label { - text-align:left; - width:30em; -} /* Selectors for the CharacterMap dialogue */ .htmlarea-window .character-map .character { display: block;