/** RTL (right-to-left direction for Arabic, Hebrew, Persian languages). It's good for demo only. You should hard code RTL-specific changes inside your HTML/server-side code. Dynamically switching to RTL using Javascript is not a good idea. Please refer to documentation for more info. */ (function($ , undefined) { //Switching to RTL (right to left) Mode $('#ace-settings-rtl').removeAttr('checked').on('click', function(){ switch_direction(); }); //>>> you should hard code changes inside HTML for RTL direction //you shouldn't use this function to switch direction //this is only for dynamically switching for Ace's demo //take a look at this function to see what changes should be made //also take a look at docs for some tips var switch_direction = function() { if($('#ace-rtl-stylesheet').length == 0) { //let's load RTL stylesheet only when needed! var ace_style = $('head').find('link.ace-main-stylesheet'); if(ace_style.length == 0) { ace_style = $('head').find('link[href*="/ace.min.css"],link[href*="/ace-part2.min.css"]'); if(ace_style.length == 0) { ace_style = $('head').find('link[href*="/ace.css"],link[href*="/ace-part2.css"]'); } } var ace_skins = $('head').find('link#ace-skins-stylesheet'); var stylesheet_url = ace_style.first().attr('href').replace(/(\.min)?\.css$/i , '-rtl$1.css'); $.ajax({ 'url': stylesheet_url }).done(function() { var new_link = jQuery('', {type : 'text/css', rel: 'stylesheet', 'id': 'ace-rtl-stylesheet'}) if(ace_skins.length > 0) { new_link.insertAfter(ace_skins); } else if(ace_style.length > 0){ new_link.insertAfter(ace_style.last()); } else new_link.appendTo('head'); new_link.attr('href', stylesheet_url); //we set "href" after insertion, for IE to work applyChanges(); if(window.Pace && Pace.running) Pace.stop(); }) } else { applyChanges(); } //in ajax when new content is loaded, we dynamically apply RTL changes again //please note that this is only for Ace demo //for info about RTL see Ace's docs $('.page-content-area[data-ajax-content=true]').on('ajaxscriptsloaded.rtl', function() { if( $('body').hasClass('rtl') ) { applyChanges(this); } }); ///////////////////////// function applyChanges(el) { var $body = $(document.body); if(!el) $body.toggleClass('rtl');//el is 'body' el = el || document.body; var $container = $(el); $container //toggle pull-right class on dropdown-menu .find('.dropdown-menu:not(.datepicker-dropdown,.colorpicker)').toggleClass('dropdown-menu-right') .end() //swap pull-left & pull-right .find('.pull-right:not(.dropdown-menu,blockquote,.profile-skills .pull-right)').removeClass('pull-right').addClass('tmp-rtl-pull-right') .end() .find('.pull-left:not(.dropdown-submenu,.profile-skills .pull-left)').removeClass('pull-left').addClass('pull-right') .end() .find('.tmp-rtl-pull-right').removeClass('tmp-rtl-pull-right').addClass('pull-left') .end() .find('.chosen-select').toggleClass('chosen-rtl').next().toggleClass('chosen-rtl'); function swap_classes(class1, class2) { $container .find('.'+class1).removeClass(class1).addClass('tmp-rtl-'+class1) .end() .find('.'+class2).removeClass(class2).addClass(class1) .end() .find('.tmp-rtl-'+class1).removeClass('tmp-rtl-'+class1).addClass(class2) } swap_classes('align-left', 'align-right'); swap_classes('no-padding-left', 'no-padding-right'); swap_classes('arrowed', 'arrowed-right'); swap_classes('arrowed-in', 'arrowed-in-right'); swap_classes('tabs-left', 'tabs-right'); swap_classes('messagebar-item-left', 'messagebar-item-right');//for inbox page $('.modal.aside-vc').ace_aside('flip').ace_aside('insideContainer'); //mirror all icons and attributes that have a "fa-*-right|left" attrobute $container.find('.fa').each(function() { if(this.className.match(/ui-icon/) || $(this).closest('.fc-button').length > 0) return; //skip mirroring icons of plugins that have built in RTL support var l = this.attributes.length; for(var i = 0 ; i < l ; i++) { var val = this.attributes[i].value; if(val.match(/fa\-(?:[\w\-]+)\-left/)) this.attributes[i].value = val.replace(/fa\-([\w\-]+)\-(left)/i , 'fa-$1-right') else if(val.match(/fa\-(?:[\w\-]+)\-right/)) this.attributes[i].value = val.replace(/fa\-([\w\-]+)\-(right)/i , 'fa-$1-left') } }); //browsers are incosistent with horizontal scroll and RTL //so let's make our scrollbars LTR and wrap the content inside RTL var rtl = $body.hasClass('rtl'); if(rtl) { $container.find('.scroll-hz').addClass('make-ltr') .find('.scroll-content') .wrapInner('
'); $('.sidebar[data-sidebar-hover=true]').ace_sidebar_hover('changeDir', 'right'); } else { //remove the wrap $container.find('.scroll-hz').removeClass('make-ltr') .find('.make-rtl').children().unwrap(); $('.sidebar[data-sidebar-hover=true]').ace_sidebar_hover('changeDir', 'left'); } if($.fn.ace_scroll) $container.find('.scroll-hz').ace_scroll('reset') //to reset scrollLeft //redraw the traffic pie chart on homepage with a different parameter try { var placeholder = $('#piechart-placeholder'); if(placeholder.length > 0) { var pos = $body.hasClass('rtl') ? 'nw' : 'ne';//draw on north-west or north-east? placeholder.data('draw').call(placeholder.get(0) , placeholder, placeholder.data('chart'), pos); } }catch(e) {} ace.helper.redraw(el, true); } } })(jQuery);