Feature #8121

Allow overriding direction of part of text

Added by Ebrahim Mohammadi over 7 years ago. Updated 6 months ago.

Status:ClosedStart date:2011-04-10
Priority:NormalDue date:
Assignee:Jean-Philippe Lang% Done:

0%

Category:Text formatting
Target version:3.0.0
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.6 Closed
Duplicated by Redmine - Feature #11784: {direction:rtl} doesn't work in text formatting Closed

Associated revisions

Revision 13951
Added by Jean-Philippe Lang over 3 years ago

Adds rtl and ltr css classes for use in text formatting (#8121).

History

#1 Updated by jayaram nagarkoti over 7 years ago

  • Assignee set to Christian Bradley

#2 Updated by Etienne Massip over 7 years ago

  • Assignee deleted (Christian Bradley)

#3 Updated by Etienne Massip over 7 years ago

  • Tracker changed from Defect to Feature

#4 Updated by Ebrahim Mohammadi about 7 years ago

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

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

#5 Updated by Boaz Rymland about 5 years ago

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

#6 Updated by Ali Nadalizadeh over 3 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.

#7 Updated by Boaz Rymland over 3 years ago

Thanks for sharing, Ali!

#8 Updated by Jean-Philippe Lang over 3 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++% را دوست دارد.

#9 Updated by Hooman Valibeigi 7 months 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.

#10 Updated by Toshi MARUYAMA 6 months ago

Hooman Valibeigi wrote:

Jean-Philippe Lang wrote:
...

FTR: #27884.

#11 Updated by Jean-Philippe Lang 3 months ago

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

Also available in: Atom PDF