Project

General

Profile

Actions

Feature #8121

closed

Allow overriding direction of part of text

Added by Ebrahim Mohammadi almost 13 years ago. Updated about 6 years ago.

Status:
Closed
Priority:
Normal
Category:
Text formatting
Target version:
Start date:
2011-04-10
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed

Description

There should be a way to override direction of part of text. Maybe using <span dir="rtl"> and <p dir="rtl"> (needs permitting use of "dir" HTML attribute and/or "direction" CSS attribute) or even better some nicer shorter Textile-ful syntax.

Upstream Textile supports <span dir="rtl">. It also supports another trick using CSS, but just for a complete paragraph (not some part of it):

p{direction: rtl}.

This one doesn't work in Redmine too.

An example (paste it in some RTL context and view there):

ابراهیم C++ را دوست دارد.

In this example "C++" is shown as "++C" in an RTL context, while it should be shown like result of the following HTML snippet:

<p dir="rtl">ابراهیم <div dir="ltr">C++</div> را دوست دارد.</p>

(The "C++" example is a simple one to show the problem. I'm aware of workaround of writing it as "++C", but that's just a workaround. And even if someone prefers to go the workaround way, working around more complex examples can be very more difficult.)


Related issues

Related to Redmine - Defect #27884: RTL wiki class broken in Redmine 3.2.6ClosedJean-Philippe Lang

Actions
Has duplicate Redmine - Feature #11784: {direction:rtl} doesn't work in text formattingClosed

Actions
Actions #1

Updated by jayaram nagarkoti almost 13 years ago

  • Assignee set to Anonymous
Actions #2

Updated by Etienne Massip almost 13 years ago

  • Assignee deleted (Anonymous)
Actions #3

Updated by Etienne Massip almost 13 years ago

  • Tracker changed from Defect to Feature
Actions #4

Updated by Ebrahim Mohammadi almost 13 years ago

Actually I should have used a span tag instead of div:

<p dir="rtl">ابراهیم <span dir="ltr">C++</span> را دوست دارد.</p>
Actions #5

Updated by Boaz Rymland almost 11 years ago

I'd be happy to see this one implemented. TIA!

Actions #6

Updated by Ali Nadalizadeh about 9 years ago

Temporary fix for persian users which converts the whole wiki paragraph to RTL (once detects persian/arabic content):

<script>
$(document).ready(function() {

$.each($(".wiki, .wiki-edit"), function(i,v){
    var txt = $(v).text();
    for(ci in txt) {
        if (txt.charCodeAt(ci) > 0x600 && txt.charCodeAt(ci) < 0x700) {
            $(v).css("direction", "rtl");
            break;
        }
    }
});

$.each($(".issue .subject a"), function(i,v){
    var txt = $(v).text();
    console.log(txt);
    for(ci in txt) {
        if (txt.charCodeAt(ci) > 0x600 && txt.charCodeAt(ci) < 0x700) {
            $(v).parent().css("direction", "rtl");
            $(v).parent().css("text-align", "right");
            break;
        }
    }
});

});
</script>

Append the code above to the main layout file (app/views/layouts/base.html.erb) or any other javascript file which is included in all pages.

Actions #7

Updated by Boaz Rymland about 9 years ago

Thanks for sharing, Ali!

Actions #8

Updated by Jean-Philippe Lang about 9 years ago

  • Status changed from New to Closed
  • Assignee set to Jean-Philippe Lang
  • Target version set to 3.0.0
  • Resolution set to Fixed

2 builtin css classes (rtl and ltr) are added in r13951.
You can use them with textile formatting by using parenthesis, here on a paragraph and a span:

p(rtl). ابراهیم %(ltr)C++% را دوست دارد.
Actions #9

Updated by Hooman Valibeigi about 6 years ago

Jean-Philippe Lang wrote:

2 builtin css classes (rtl and ltr) are added in r13951.
You can use them with textile formatting by using parenthesis, here on a paragraph and a span:

[...]

This fix is broken.

My environment: Redmine 3.4.2, Google Chrome 63

Take this example:

Textile:

p(rtl). این یک test است

Generated html:
<p class="wiki-class-rtl">این یک test است</p>

First of all there is no such class as "wiki-class-rtl" in application.css.
Second, "unicode-bidi:bidi-override" makes the LTR parts of an RTL paragraph printed in reverse. e.g. 'tset' instead of 'test'. Simply having direction:rtl would make everything work just fine.

Actions #10

Updated by Toshi MARUYAMA about 6 years ago

Hooman Valibeigi wrote:

Jean-Philippe Lang wrote:
...

FTR: #27884.

Actions #11

Updated by Jean-Philippe Lang almost 6 years ago

  • Related to Defect #27884: RTL wiki class broken in Redmine 3.2.6 added
Actions

Also available in: Atom PDF