From 4fcb72d30619cf5f61754d6604635e611fdf43a8 Mon Sep 17 00:00:00 2001 From: Georg Bauer Date: Mon, 12 Jun 2006 14:52:51 +0000 Subject: [PATCH] fixed #2128: updated BiDi support git-svn-id: http://code.djangoproject.com/svn/django/trunk@3121 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/admin/media/css/base_rtl.css | 5 -- django/contrib/admin/media/css/login_rtl.css | 7 --- django/contrib/admin/media/css/rtl.css | 46 +++++++++++++++++++ .../admin/media/js/admin/DateTimeShortcuts.js | 23 +++++++++- django/contrib/admin/media/js/core.js | 19 +++++++- .../contrib/admin/templates/admin/base.html | 5 +- .../contrib/admin/templates/admin/login.html | 2 +- 7 files changed, 89 insertions(+), 18 deletions(-) delete mode 100644 django/contrib/admin/media/css/base_rtl.css delete mode 100644 django/contrib/admin/media/css/login_rtl.css create mode 100644 django/contrib/admin/media/css/rtl.css diff --git a/django/contrib/admin/media/css/base_rtl.css b/django/contrib/admin/media/css/base_rtl.css deleted file mode 100644 index 0227c36ad97..00000000000 --- a/django/contrib/admin/media/css/base_rtl.css +++ /dev/null @@ -1,5 +0,0 @@ -@import url('base.css'); - -body { - direction: rtl; -} diff --git a/django/contrib/admin/media/css/login_rtl.css b/django/contrib/admin/media/css/login_rtl.css deleted file mode 100644 index f8ac9d46037..00000000000 --- a/django/contrib/admin/media/css/login_rtl.css +++ /dev/null @@ -1,7 +0,0 @@ -@import url('login.css'); -@import url('base_rtl.css'); -@import url('layout_rtl.css'); - -.login .form-row { float:right; } -.login .form-row label { float:right; padding-left:0.5em; padding-right:0; text-align:left;} -.login .submit-row { clear:both; padding:1em 9.4em 0 0; } diff --git a/django/contrib/admin/media/css/rtl.css b/django/contrib/admin/media/css/rtl.css new file mode 100644 index 00000000000..c29391cabf3 --- /dev/null +++ b/django/contrib/admin/media/css/rtl.css @@ -0,0 +1,46 @@ +body { direction: rtl; } + +/* login styles */ + +.login .form-row { float:right; } +.login .form-row label { float:right; padding-left:0.5em; padding-right:0; text-align:left;} +.login .submit-row { clear:both; padding:1em 9.4em 0 0; } + + +/* global styles */ +th { text-align: right; } +.module h2, .module caption { text-align: right; } +.addlink, .changelink { padding-left:0px; padding-right:12px; background-position:100% 0.2em; } +.deletelink { padding-left:0px; padding-right:12px; background-position:100% 0.25em; } +.object-tools { float:left; } + + +/* layout styles */ +#user-tools { right:auto; left:0; text-align:left; } +div.breadcrumbs { text-align:right; } +#content-main { float:right;} +#content-related { float:left; margin-left:-19em; margin-right:auto;} +.colMS { margin-left:20em !important; margin-right:10px !important;} + +/* dashboard styles */ +.dashboard .module table td a { padding-left:.6em; padding-right:12px; } + +/* changelists styles */ +.change-list .filtered { background:white url(../img/admin/changelist-bg_rtl.gif) top left repeat-y !important; } +.change-list .filtered table { border-left:1px solid #ddd; border-right:0px none; } +#changelist-filter { right:auto; left:0; border-left:0px none; border-right:1px solid #ddd;} +.change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right:0px !important; margin-left:160px !important; } +#changelist-filter li.selected { border-left:0px none; padding-left:0px; margin-left:0; border-right:5px solid #ccc; padding-right:5px;margin-right:-10px; } + +/* fomrs styles */ +.aligned label { padding:0 0 3px 1em; float:right; } +.submit-row { text-align: left } +.vDateField, .vTimeField { margin-left:2px; } + +/* widget styles */ +.calendarnav-previous { top:0; left:auto; right:0; } +.calendarnav-next { top:0; right:auto; left:0;} +.calendar caption, .calendarbox h2 { text-align:center; } + +.selector { float: right;} +.selector .selector-filter { text-align: right;} diff --git a/django/contrib/admin/media/js/admin/DateTimeShortcuts.js b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js index 28511f76c60..ed99c6103d0 100644 --- a/django/contrib/admin/media/js/admin/DateTimeShortcuts.js +++ b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js @@ -69,7 +69,16 @@ var DateTimeShortcuts = { var clock_box = document.createElement('div'); clock_box.style.display = 'none'; clock_box.style.position = 'absolute'; - clock_box.style.left = findPosX(clock_link) + 17 + 'px'; + if (getStyle(document.body,'direction')!='rtl') { + clock_box.style.left = findPosX(clock_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + // TODO: IE returns wrong value for findPosX when in rtl mode + // (it returns as it was left aligned), needs to be fixed. + clock_box.style.left = findPosX(clock_link) - 110 + 'px'; + } clock_box.style.top = findPosY(clock_link) - 30 + 'px'; clock_box.className = 'clockbox module'; clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num); @@ -140,7 +149,17 @@ var DateTimeShortcuts = { var cal_box = document.createElement('div'); cal_box.style.display = 'none'; cal_box.style.position = 'absolute'; - cal_box.style.left = findPosX(cal_link) + 17 + 'px'; + // is it left-to-right or right-to-left layout ? + if (getStyle(document.body,'direction')!='rtl') { + cal_box.style.left = findPosX(cal_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + // TODO: IE returns wrong value for findPosX when in rtl mode + // (it returns as it was left aligned), needs to be fixed. + cal_box.style.left = findPosX(cal_link) - 180 + 'px'; + } cal_box.style.top = findPosY(cal_link) - 75 + 'px'; cal_box.className = 'calendarbox module'; cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num); diff --git a/django/contrib/admin/media/js/core.js b/django/contrib/admin/media/js/core.js index 1c8f6787734..8eba69c9bba 100644 --- a/django/contrib/admin/media/js/core.js +++ b/django/contrib/admin/media/js/core.js @@ -135,4 +135,21 @@ String.prototype.pad_left = function(pad_length, pad_string) { new_string = pad_string + new_string; } return new_string; -} \ No newline at end of file +} + +// ---------------------------------------------------------------------------- +// Get the computed style for and element +// ---------------------------------------------------------------------------- +function getStyle(oElm, strCssRule){ + var strValue = ""; + if(document.defaultView && document.defaultView.getComputedStyle){ + strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); + } + else if(oElm.currentStyle){ + strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){ + return p1.toUpperCase(); + }); + strValue = oElm.currentStyle[strCssRule]; + } + return strValue; +} diff --git a/django/contrib/admin/templates/admin/base.html b/django/contrib/admin/templates/admin/base.html index 0eec5241658..b1e9d5d1be8 100644 --- a/django/contrib/admin/templates/admin/base.html +++ b/django/contrib/admin/templates/admin/base.html @@ -1,8 +1,9 @@ - + {% block title %}{% endblock %} - + +{% if LANGUAGE_BIDI %}{% endif %} {% block extrastyle %}{% endblock %} {% block extrahead %}{% endblock %} diff --git a/django/contrib/admin/templates/admin/login.html b/django/contrib/admin/templates/admin/login.html index dd39e95f117..5f338f703e9 100644 --- a/django/contrib/admin/templates/admin/login.html +++ b/django/contrib/admin/templates/admin/login.html @@ -1,7 +1,7 @@ {% extends "admin/base_site.html" %} {% load i18n %} -{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/login{% if LANGUAGE_BIDI %}_rtl{% endif %}.css{% endblock %} +{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/login.css{% endblock %} {% block bodyclass %}login{% endblock %} {% block content_title %}{% endblock %} {% block breadcrumbs %}{% endblock %}