From ed8f03b39ef0f4b7e1649bb8e7831bfc3c1dcbfa Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Fri, 3 Oct 2014 09:48:28 -0500 Subject: [PATCH] i18n: rtl: Use linebreaks mode with Redactor and support rtl --- css/redactor.css | 9 ++++++--- js/osticket.js | 4 ++-- js/redactor-fonts.js | 32 ++++++++++++++++++++++++++++---- js/redactor-osticket.js | 2 +- scp/css/scp.css | 2 +- scp/js/ticket.js | 4 ++-- 6 files changed, 40 insertions(+), 13 deletions(-) diff --git a/css/redactor.css b/css/redactor.css index cd8475520..e6123e23e 100644 --- a/css/redactor.css +++ b/css/redactor.css @@ -187,7 +187,6 @@ body .redactor_box_fullscreen { .redactor_editor img { height: auto; } -.redactor_editor div, .redactor_editor p, .redactor_editor ul, .redactor_editor ol, @@ -207,10 +206,14 @@ body .redactor_box_fullscreen { margin-bottom: 15px !important; } .redactor_editor blockquote { - margin-left: 1.5em !important; - padding-left: 0 !important; color: #777; + padding: 10px 20px; font-style: italic !important; + border-left: 5px solid #eeeeee; +} +[dir="rtl"] .redactor_editor blockquote { + border-left: none; + border-right: 5px solid #eeeeee; } .redactor_editor ul, .redactor_editor ol { diff --git a/js/osticket.js b/js/osticket.js index 133c225c7..f4aeebd1a 100644 --- a/js/osticket.js +++ b/js/osticket.js @@ -132,7 +132,7 @@ $(document).ready(function(){ if (!extra) return; if (!imgs.length) return; extra.append($('<a>') - .addClass("action-button show-images") + .addClass("action-button show-images pull-right") .css({'font-weight':'normal'}) .text(' ' + __('Show Images')) .click(function(ev) { @@ -194,7 +194,7 @@ showImagesInline = function(urls, thread_id) { } ).append($('<div class="caption">') .append('<span class="filename">'+info.filename+'</span>') - .append('<a href="'+info.download_url+'" class="action-button"><i class="icon-download-alt"></i> ' + __('Download') + '</a>') + .append('<a href="'+info.download_url+'" class="action-button pull-right"><i class="icon-download-alt"></i> ' + __('Download') + '</a>') ); e.data('wrapped', true); } diff --git a/js/redactor-fonts.js b/js/redactor-fonts.js index bbf2e9936..021ca561d 100644 --- a/js/redactor-fonts.js +++ b/js/redactor-fonts.js @@ -146,18 +146,42 @@ RedactorPlugins.textdirection = { var button = this.buttonAdd('textdirection', __('Change Text Direction'), false, dropdown); - if (this.opts.direction) + if (this.opts.direction == 'rtl') this.setRtl(); }, setRtl: function() { + var c = this.getCurrent(), s = this.getSelection(); this.bufferSet(); - this.blockSetAttr('dir', 'rtl'); - + if (s.type == 'Range' && s.focusNode.nodeName != 'div') { + this.linebreakHack(s); + } + else if (!c) { + var repl = '<div dir="rtl">' + this.get() + '</div>'; + this.set(repl, false); + } + $(this.getCurrent()).attr('dir', 'rtl'); + this.sync(); }, setLtr: function() { + var c = this.getCurrent(), s = this.getSelection(); this.bufferSet(); - this.blockSetAttr('dir', 'ltr'); + if (s.type == 'Range' && s.focusNode.nodeName != 'div') { + this.linebreakHack(s); + } + else if (!c) { + var repl = '<div dir="ltr">' + this.get() + '</div>'; + this.set(repl, false); + } + $(this.getCurrent()).attr('dir', 'ltr'); + this.sync(); + }, + linebreakHack: function(sel) { + var range = sel.getRangeAt(0); + var wrapper = document.createElement('div'); + wrapper.appendChild(range.extractContents()); + range.insertNode(wrapper); + this.selectionElement(wrapper); } }; diff --git a/js/redactor-osticket.js b/js/redactor-osticket.js index 8c19159b3..cded2e1f3 100644 --- a/js/redactor-osticket.js +++ b/js/redactor-osticket.js @@ -233,7 +233,7 @@ $(function() { 'plugins': [], 'imageGetJson': 'ajax.php/draft/images/browse', 'syncBeforeCallback': captureImageSizes, - 'linebreaks': !$('html').hasClass('rtl'), + 'linebreaks': true, 'tabFocus': false, 'toolbarFixedBox': true, 'focusCallback': function() { this.$box.addClass('no-pjax'); }, diff --git a/scp/css/scp.css b/scp/css/scp.css index 3fe5aae23..2fe63818d 100644 --- a/scp/css/scp.css +++ b/scp/css/scp.css @@ -893,7 +893,7 @@ ul.tabs { padding:4px 0 0 20px; margin:0; margin-bottom: 5px; - text-align:center; + text-align:left; height:29px; border-bottom:1px solid #aaa; background:#eef3f8; diff --git a/scp/js/ticket.js b/scp/js/ticket.js index ca5f3957e..2c9398a5a 100644 --- a/scp/js/ticket.js +++ b/scp/js/ticket.js @@ -306,7 +306,7 @@ $.showImagesInline = function(urls, thread_id) { } ).append($('<div class="caption">') .append('<span class="filename">'+info.filename+'</span>') - .append('<a href="'+info.download_url+'" class="action-button no-pjax"><i class="icon-download-alt"></i> '+__('Download')+'</a>') + .append('<a href="'+info.download_url+'" class="action-button pull-right no-pjax"><i class="icon-download-alt"></i> '+__('Download')+'</a>') ); e.data('wrapped', true); } @@ -419,7 +419,7 @@ var ticket_onload = function($) { if (!extra) return; if (!imgs.length) return; extra.append($('<a>') - .addClass("action-button show-images") + .addClass("action-button pull-right show-images") .css({'font-weight':'normal'}) .text(' ' + __('Show Images')) .click(function(ev) { -- GitLab