From b41fc49c269c6b680453d7090a1d33b9d37c25ae Mon Sep 17 00:00:00 2001 From: Nadav Kavalerchik Date: Thu, 14 Apr 2011 15:56:10 +0800 Subject: [PATCH] CSS MDL-26013 Fixed several display bugs when using right to left languages --- blocks/messages/styles.css | 10 ++- blocks/navigation/styles.css | 16 ++-- blocks/online_users/styles.css | 8 +- blocks/recent_activity/styles.css | 4 +- blocks/settings/styles.css | 5 +- .../assets/skins/sam/enrolmentmanager.css | 4 + mod/assignment/styles.css | 6 ++ mod/chat/gui_ajax/theme/bubble/chat.css | 82 +++++++++--------- mod/chat/gui_ajax/theme/compact/chat.css | 5 +- mod/data/lib.php | 60 ++++++------- mod/data/styles.css | 16 +++- mod/wiki/styles.css | 4 + theme/base/pix/yui2-treeview-sprite-rtl.gif | Bin 0 -> 4344 bytes theme/base/style/admin.css | 20 +++-- theme/base/style/blocks.css | 3 +- theme/base/style/core.css | 75 +++++++++++++++- theme/base/style/pagelayout.css | 2 +- theme/base/style/question.css | 6 ++ theme/base/style/user.css | 5 +- theme/standard/style/admin.css | 12 +++ theme/standard/style/blocks.css | 1 + theme/standard/style/modules.css | 5 ++ 22 files changed, 244 insertions(+), 105 deletions(-) create mode 100644 theme/base/pix/yui2-treeview-sprite-rtl.gif diff --git a/blocks/messages/styles.css b/blocks/messages/styles.css index bbdc1f5ca64..aaa2baa57c0 100644 --- a/blocks/messages/styles.css +++ b/blocks/messages/styles.css @@ -1,5 +1,9 @@ .block_messages .content {text-align:left;padding-top:5px;} .block_messages .content .list li.listentry {clear:both;} -.block_messages .content .list li.listentry div.user {float:left;position:relative;} -.block_messages .content .list li.listentry div.message {float:right;} -.block_messages .content .footer {clear:both;} \ No newline at end of file +.block_messages .content .list li.listentry .user {float:left;position:relative;} +.block_messages .content .list li.listentry .message {float:right;} +.block_messages .content .info {text-align:center;} +.block_messages .content .footer {clear:both;} + +.dir-rtl .block_messages .content .list li.listentry .user {float:right;} +.dir-rtl .block_messages .content .list li.listentry .message {float:left;} \ No newline at end of file diff --git a/blocks/navigation/styles.css b/blocks/navigation/styles.css index 63763ebf89f..6da90532f8b 100644 --- a/blocks/navigation/styles.css +++ b/blocks/navigation/styles.css @@ -35,16 +35,18 @@ .ie6 .block_navigation .block_tree .tree_item {width:100%;} /** Overide for RTL layout **/ -.dir-rtl .block_navigation .block_tree {padding-right:0px;} -.dir-rtl .block_navigation .block_tree li.item_with_icon > p img {right:0;} - -.dir-rtl .block_navigation .block_tree li ul {padding-right:0;} -.dir-rtl .block_navigation .block_tree li.depth_2 ul {padding-right:16px;} +.dir-rtl .block_navigation .block_tree li.depth_2 ul {padding-left:0;padding-right: 7px;} .dir-rtl .block_navigation .block_tree .tree_item {padding-right: 18px;text-align:right;} .dir-rtl .block_navigation .block_tree .tree_item.branch {background-position: center right;} -.dir-rtl .block_navigation .block_tree .navigation_node.tree_item.branch {padding-right:0;} -.dir-rtl .block_navigation .block_tree .root_node.leaf {padding-right:0px;} + +.dir-rtl .block_navigation .block_tree, +.dir-rtl .block_navigation .block_tree li ul, +.dir-rtl .block_navigation .block_tree .navigation_node.tree_item.branch, +.dir-rtl .block_navigation .block_tree .root_node.leaf {padding-right:0;} + +.dir-rtl .block_navigation .block_tree li.item_with_icon > p img, +.dir-rtl .block_navigation .block_tree .type_activity > .tree_item.branch img {right:0;left:auto;} .jsenabled.dir-rtl .block_navigation .block_tree .tree_item.emptybranch {background-image: url([[pix:t/collapsed_empty_rtl]]);background-position: center right;} .jsenabled.dir-rtl .block_navigation .block_tree .collapsed .tree_item.branch {background-image: url([[pix:t/collapsed_rtl]]);} diff --git a/blocks/online_users/styles.css b/blocks/online_users/styles.css index 4a6763b1bdb..baa80f3c431 100644 --- a/blocks/online_users/styles.css +++ b/blocks/online_users/styles.css @@ -1,3 +1,7 @@ .block_online_users .content .list li.listentry {clear:both;} -.block_online_users .content .list li.listentry div.user {float:left;position:relative;} -.block_online_users .content .list li.listentry div.message {float:right;} \ No newline at end of file +.block_online_users .content .list li.listentry .user {float:left;position:relative;} +.block_online_users .content .list li.listentry .message {float:right;} +.block_online_users .content .info {text-align:center;} + +.dir-rtl .block_online_users .content .list li.listentry .user {float:right;} +.dir-rtl .block_online_users .content .list li.listentry .message {float:left;} \ No newline at end of file diff --git a/blocks/recent_activity/styles.css b/blocks/recent_activity/styles.css index aa415d1bb68..8ac042598e2 100644 --- a/blocks/recent_activity/styles.css +++ b/blocks/recent_activity/styles.css @@ -1,4 +1,6 @@ .block_recent_activity .activitydate, .block_recent_activity .activityhead {text-align:center;} .block_recent_activity .unlist li {margin-bottom:1em;} -.block_recent_activity li .head .date {float:right;} \ No newline at end of file +.block_recent_activity li .head .date {float:right;} + +.dir-rtl .block_recent_activity .content h3 {text-align: right;} \ No newline at end of file diff --git a/blocks/settings/styles.css b/blocks/settings/styles.css index abe00c53aea..959309a985d 100644 --- a/blocks/settings/styles.css +++ b/blocks/settings/styles.css @@ -26,8 +26,9 @@ /** Overide for RTL layout **/ .dir-rtl .block_settings .block_tree {padding-right:0px;} -.dir-rtl .block_settings .block_tree li ul {padding-right:16px;} -.dir-rtl .block_settings .block_tree li.item_with_icon > p img {right:0;} +.dir-rtl .block_settings .block_tree li ul {padding-left:0;padding-right: 7px;} +.dir-rtl .block_settings .block_tree li.item_with_icon > p img, +.dir-rtl .block_navigation .block_tree .type_activity > .tree_item.branch img {left:auto;right:0;} .dir-rtl .block_settings .block_tree .tree_item {padding-right: 18px;text-align:right;} .dir-rtl .block_settings .block_tree .tree_item.branch {background-position: center right;} .dir-rtl .block_settings .block_tree .root_node.leaf {padding-right:0px;} diff --git a/enrol/yui/enrolmentmanager/assets/skins/sam/enrolmentmanager.css b/enrol/yui/enrolmentmanager/assets/skins/sam/enrolmentmanager.css index 72be3ff785e..29d09bc2b75 100644 --- a/enrol/yui/enrolmentmanager/assets/skins/sam/enrolmentmanager.css +++ b/enrol/yui/enrolmentmanager/assets/skins/sam/enrolmentmanager.css @@ -70,3 +70,7 @@ Structure of the user enroller panel .user-enroller-panel .collapsiblearea {border:1px solid #bbb;background-color:#f6f6f6;} .user-enroller-panel .collapsiblearea.hidden {display:none;} .user-enroller-panel .collapsiblearea .uep-enrolment-option {margin:5px 1em;} + +.dir-rtl .user-enroller-panel .uep-header .close {right: auto;left:1em;} +.dir-rtl .user-enroller-panel .uep-search-results .user { text-align: right;} +.dir-rtl .user-enroller-panel .uep-content .uep-controls { text-align: right;} \ No newline at end of file diff --git a/mod/assignment/styles.css b/mod/assignment/styles.css index 3d948982062..62a660e5183 100644 --- a/mod/assignment/styles.css +++ b/mod/assignment/styles.css @@ -37,3 +37,9 @@ #page-mod-assignment-submissions .optionspref {width: 50%;} #page-mod-assignment-submissions .fastgbutton {text-align: center;} + +#page-mod-assignment-submissions.dir-rtl .fullname, +#page-mod-assignment-submissions.dir-rtl .timemodified, +#page-mod-assignment-submissions.dir-rtl .timemarked {text-align:right;} +#page-mod-assignment-submissions.dir-rtl .mform.optionspref .fitem .fitemtitle {text-align:left;} +#page-mod-assignment-type-uploadsingle-upload.dir-rtl .mdl-left {text-align:right;} \ No newline at end of file diff --git a/mod/chat/gui_ajax/theme/bubble/chat.css b/mod/chat/gui_ajax/theme/bubble/chat.css index 11b098273d5..163cbcb1c29 100644 --- a/mod/chat/gui_ajax/theme/bubble/chat.css +++ b/mod/chat/gui_ajax/theme/bubble/chat.css @@ -1,5 +1,5 @@ .yui-skin-sam .yui-layout .yui-layout-hd { border:0; } -.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd-nohd { border:0; } +.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd-nohd { border:0; } .yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd { border:0; } .yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-unit-right { background: white; } .yui-skin-sam .yui-layout-unit-bottom { background: #F2F2F2; } @@ -8,44 +8,46 @@ .yui-skin-sam .yui-layout-unit-top { background: #FFE39D; } .yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd { background: transparent; } -#input-message { - background:#FFFFFF url(input.png) repeat-x scroll 0 0; - padding:0 9px; - border: 1px solid #999; - border-radius: 9px; - -moz-border-radius: 9px; -} -.mdl-chat-entry, .mdl-chat-my-entry { - clear:both; -} -.chat-message td { - padding: 0; -} +#input-message {background:#FFFFFF url(input.png) repeat-x scroll 0 0;padding:0 9px;border: 1px solid #999;border-radius: 9px;-moz-border-radius: 9px;} +.mdl-chat-entry, +.mdl-chat-my-entry {clear:both;} +.chat-message td {padding: 0;} -.mdl-chat-entry .topleft { background:transparent url(bubbles.png) no-repeat scroll left top; height:9px; width:18px; } -.mdl-chat-entry .top { background:transparent url(horizontal.png) repeat-x scroll center top; font-size:1px; height:9px; } -.mdl-chat-entry .topright { background:transparent url(bubbles.png) no-repeat scroll -18px top; height:9px; width:11px; } -.mdl-chat-entry .left { background:transparent url(vertical.png) repeat-y scroll left center; width:18px; } -.mdl-chat-entry .conmts { background:#DCDCDC none repeat scroll 0 0; color:#000000; text-shadow:0 1px 0 #EEEEEE; } -.mdl-chat-entry .right { background:transparent url(vertical.png) repeat-y scroll -18px 0; width:11px; } -.mdl-chat-entry .bottomleft { background:transparent url(bubbles.png) no-repeat scroll left -9px; height:12px; width:18px; } -.mdl-chat-entry .bottomright { background:transparent url(bubbles.png) no-repeat scroll right -9px; height:12px; width:11px; } -.mdl-chat-entry .bottom { background:transparent url(horizontal.png) repeat-x scroll 0 -9px; height:12px; } +.mdl-chat-entry .topleft {background:transparent url(bubbles.png) no-repeat scroll left top; height:9px; width:18px;} +.mdl-chat-entry .top {background:transparent url(horizontal.png) repeat-x scroll center top; font-size:1px; height:9px;} +.mdl-chat-entry .topright {background:transparent url(bubbles.png) no-repeat scroll -18px top; height:9px; width:11px;} +.mdl-chat-entry .left {background:transparent url(vertical.png) repeat-y scroll left center; width:18px;} +.mdl-chat-entry .conmts {background:#DCDCDC none repeat scroll 0 0; color:#000000; text-shadow:0 1px 0 #EEEEEE;} +.mdl-chat-entry .right {background:transparent url(vertical.png) repeat-y scroll -18px 0; width:11px;} +.mdl-chat-entry .bottomleft {background:transparent url(bubbles.png) no-repeat scroll left -9px; height:12px; width:18px;} +.mdl-chat-entry .bottomright {background:transparent url(bubbles.png) no-repeat scroll right -9px; height:12px; width:11px;} +.mdl-chat-entry .bottom {background:transparent url(horizontal.png) repeat-x scroll 0 -9px; height:12px;} -.mdl-chat-my-entry .topleft{background:url(bubbles.png) no-repeat 0 -21px;height:9px;width:11px;} -.mdl-chat-my-entry .topright{background:url(bubbles.png) no-repeat -11px -21px;height:9px;width:18px;} -.mdl-chat-my-entry .bottomleft{background:url(bubbles.png) no-repeat 0 bottom;width:11px;height:12px;} -.mdl-chat-my-entry .bottomright{background:url(bubbles.png) no-repeat right bottom;width:18px;height:12px;} -.mdl-chat-my-entry .top{background:url(horizontal.png) repeat-x 0 -21px;font-size:1px;height:9px;} -.mdl-chat-my-entry .bottom{background:url(horizontal.png) repeat-x bottom;height:12px;} -.mdl-chat-my-entry .left{background:url(vertical.png) repeat-y -29px 0;width:11px;} -.mdl-chat-my-entry .right{background:url(vertical.png) repeat-y right;width:18px;} -.mdl-chat-my-entry .conmts{background:#C0E668;color:#000;} -#chat-input-area ,#chat-input-area table.generaltable, #chat-input-area table.generaltable td.cell { - background: #92B3E8; - border: 0; -} -#chat-userlist { - background: #E3E8F0; - height: 100%; -} +.mdl-chat-my-entry .topleft {background:url(bubbles.png) no-repeat 0 -21px;height:9px;width:11px;} +.mdl-chat-my-entry .topright {background:url(bubbles.png) no-repeat -11px -21px;height:9px;width:18px;} +.mdl-chat-my-entry .bottomleft {background:url(bubbles.png) no-repeat 0 bottom;width:11px;height:12px;} +.mdl-chat-my-entry .bottomright {background:url(bubbles.png) no-repeat right bottom;width:18px;height:12px;} +.mdl-chat-my-entry .top {background:url(horizontal.png) repeat-x 0 -21px;font-size:1px;height:9px;} +.mdl-chat-my-entry .bottom {background:url(horizontal.png) repeat-x bottom;height:12px;} +.mdl-chat-my-entry .left {background:url(vertical.png) repeat-y -29px 0;width:11px;} +.mdl-chat-my-entry .right {background:url(vertical.png) repeat-y right;width:18px;} +.mdl-chat-my-entry .conmts {background:#C0E668;color:#000;} + +#chat-input-area, +#chat-input-area table.generaltable, +#chat-input-area table.generaltable td.cell {background: #92B3E8;border: 0;} +#chat-userlist {background: #E3E8F0;height: 100%;} + +.dir-rtl .mdl-chat-entry .topleft {background-position: -18px 0;width:11px;} +.dir-rtl .mdl-chat-entry .topright {background-position: 0 0;width:18px;} +.dir-rtl .mdl-chat-entry .bottomleft {background-position: -18px -9px;width:11px;} +.dir-rtl .mdl-chat-entry .bottomright {background-position: 0 -9px;width:18px;} +.dir-rtl .mdl-chat-entry .right {background-position: 0 0;width:18px;} +.dir-rtl .mdl-chat-entry .left {background-position: -18px 0;width:11px;} + +.dir-rtl .mdl-chat-my-entry .topleft {background-position: -13px -21px;width:18px;} +.dir-rtl .mdl-chat-my-entry .topright {background-position: 0 -21px;width:11px;} +.dir-rtl .mdl-chat-my-entry .bottomleft {background-position: -13px -30px;width:18px;} +.dir-rtl .mdl-chat-my-entry .bottomright {background-position: 0 -30px;width:11px;} +.dir-rtl .mdl-chat-my-entry .right {background-position: -29px 0;width:11px;} +.dir-rtl .mdl-chat-my-entry .left {background-position: -42px 0;width:18px;} \ No newline at end of file diff --git a/mod/chat/gui_ajax/theme/compact/chat.css b/mod/chat/gui_ajax/theme/compact/chat.css index e2518297900..1f431bf29f3 100644 --- a/mod/chat/gui_ajax/theme/compact/chat.css +++ b/mod/chat/gui_ajax/theme/compact/chat.css @@ -1,5 +1,5 @@ .yui-skin-sam .yui-layout .yui-layout-hd { border:0; } -.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd-nohd { border:0; } +.yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd-nohd { border:0; } .yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-bd { border:0; } .yui-skin-sam .yui-layout .yui-layout-unit div.yui-layout-unit-right { background: white; } .yui-skin-sam .yui-layout-unit-bottom { background: #F2F2F2; } @@ -59,3 +59,6 @@ background: #E3E8F0; height: 100%; } + +.dir-rtl .chat-message {text-align:right;} +.dir-rtl .mdl-chat-my-entry .chat-message .text {text-align:right;} \ No newline at end of file diff --git a/mod/data/lib.php b/mod/data/lib.php index 8351cebe419..ec767b76945 100644 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -500,50 +500,46 @@ function data_generate_default_template(&$data, $template, $recordid=0, $form=fa // get all the fields for that database if ($fields = $DB->get_records('data_fields', array('dataid'=>$data->id), 'id')) { - $str = '
'; - $str .= ''; - + $table = new html_table(); + $table->attributes['class'] = 'mod-data-default-template'; + $table->colclasses = array('template-field', 'template-token'); + $table->data = array(); foreach ($fields as $field) { - - $str .= ''; - - $str .=''; - + $table->data[] = array( + $field->name.': ', + $token + ); } if ($template == 'listtemplate') { - $str .= ''; + $cell = new html_table_cell('##edit## ##more## ##delete## ##approve## ##export##'); + $cell->colspan = 2; + $cell->attributes['class'] = 'controls'; + $table->data[] = new html_table_row(array($cell)); } else if ($template == 'singletemplate') { - $str .= ''; + $cell = new html_table_cell('##edit## ##delete## ##approve## ##export##'); + $cell->colspan = 2; + $cell->attributes['class'] = 'controls'; + $table->data[] = new html_table_row(array($cell)); } else if ($template == 'asearchtemplate') { - $str .= ''; - $str .= ''; + $row = new html_table_row(get_string('authorfirstname', 'data').': ', '##firstname##'); + $row->attributes['class'] = 'searchcontrols'; + $table->data[] = $row; + $row = new html_table_row(get_string('authorlastname', 'data').': ', '##lastname##'); + $row->attributes['class'] = 'searchcontrols'; + $table->data[] = $row; } - $str .= '
'; - // Yu: commenting this out, the id was wrong and will fix later - //if ($template == 'addtemplate') { - //$str .= 'type, array('picture', 'checkbox', 'date', 'latlong', 'radiobutton'))) { - // $str .= ' for="[['.$field->name.'#id]]"'; - //} - //$str .= '>'.$field->name.''; - - //} else { - $str .= $field->name.': '; - //} - $str .= ''; if ($form) { // Print forms instead of data $fieldobj = data_get_field($field, $data); - $str .= $fieldobj->display_add_field($recordid); - + $token = $fieldobj->display_add_field($recordid); } else { // Just print the tag - $str .= '[['.$field->name.']]'; + $token = '[['.$field->name.']]'; } - $str .= '
##edit## ##more## ##delete## ##approve## ##export##
##edit## ##delete## ##approve## ##export##
'.get_string('authorfirstname', 'data').': ##firstname##
'.get_string('authorlastname', 'data').': ##lastname##
'; - $str .= '
'; - + $str = html_writer::start_tag('div', array('class' => 'defaulttemplate')); + $str .= html_writer::table($table); + $str .= html_writer::end_tag('div'); if ($template == 'listtemplate'){ - $str .= '
'; + $str .= html_writer::empty_tag('hr'); } if ($update) { diff --git a/mod/data/styles.css b/mod/data/styles.css index 33c672065d5..4f6846540c8 100644 --- a/mod/data/styles.css +++ b/mod/data/styles.css @@ -19,4 +19,18 @@ .path-mod-data-field .fieldadd select, .path-mod-data-field .sortdefault select {margin-left: 1em;} .path-mod-data-field .fieldname, -.path-mod-data-field .fielddescription {width:300px;} \ No newline at end of file +.path-mod-data-field .fielddescription {width:300px;} + +/** UI Usability Hacks **/ +#page-mod-data-export #notice span {padding:0 10px;} +#page-mod-data-edit input[id*="url"] {text-align:left;direction:ltr;} + +.mod-data-default-template td {vertical-align:top;} +.mod-data-default-template .template-field {text-align:right;} +.mod-data-default-template .template-token {text-align:left;} +.mod-data-default-template .controls {text-align:center;} +.mod-data-default-template searchcontrols {text-align:right;} + +.dir-rtl .mod-data-default-template .template-field {text-align:left;} +.dir-rtl .mod-data-default-template .template-token {text-align:right;} +.dir-rtl .mod-data-default-template searchcontrols {text-align:left;} \ No newline at end of file diff --git a/mod/wiki/styles.css b/mod/wiki/styles.css index 497c3299e51..badfdb37933 100644 --- a/mod/wiki/styles.css +++ b/mod/wiki/styles.css @@ -314,6 +314,10 @@ a.wiki_edit_section { text-align: left; } +.dir-rtl #wiki_printable_content { + text-align: right; +} + #wiki_printable_content a { color: black; } diff --git a/theme/base/pix/yui2-treeview-sprite-rtl.gif b/theme/base/pix/yui2-treeview-sprite-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..5198c1b8664fa3d9a67d2fdb95eb30f33052d412 GIT binary patch literal 4344 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 m0sH_1ti#MJ2nEc;2aLcDpuY?J2o3DO3;@9uY{A