1. #21
    Sencha User
    Join Date
    Oct 2007
    Location
    Iran
    Posts
    162
    Vote Rating
    0
    vahid4134 is on a distinguished road

      0  

    Default


    change
    Code:
    .x-form-item label { float:right; }
    .x-form-label-left label { text-align: right }
    to

    Code:
    .x-form-item label.x-form-item-label  { float:right; }
    .x-form-label-left label.x-form-item-label { text-align: right }
    and add
    Code:
    .x-form-element{padding-left:0;padding-right:105px;}
    I dont know why Ext team no plan RTL for extjs?
    No honor is like knowledge

  2. #22
    Ext JS Premium Member
    Join Date
    Feb 2008
    Posts
    51
    Vote Rating
    0
    noamway is on a distinguished road

      0  

    Default Vote here for RTL support


  3. #23
    Sencha User
    Join Date
    Feb 2009
    Posts
    18
    Vote Rating
    0
    mksoft is on a distinguished road

      0  

    Default


    Hi, missed me ?

    I'm back at helm, as another project of ours needs Ext and RTL. Latest commits @github:


    Form label fixes for ext 3.1
    Adjust messagebox content margin
    Fix comobobox in a toolbar
    icon position in panel title
    Fix RTL images for tree nodes with lines

    If you have modification/fixes and want them added to the repo, send me the patches or generate pull requests if your repo is @github.

  4. #24
    Sencha User elnove's Avatar
    Join Date
    Nov 2007
    Location
    Canada
    Posts
    110
    Vote Rating
    0
    elnove is on a distinguished road

      0  

    Thumbs up


    Thanks MK,
    As always, you did a GREAT WORK.
    Live Long And Prosper \\//

    el

  5. #25
    Sencha User
    Join Date
    Oct 2007
    Location
    Iran
    Posts
    162
    Vote Rating
    0
    vahid4134 is on a distinguished road

      0  

    Default


    Hi mksoft
    very very very very Thx.
    I can help
    No honor is like knowledge

  6. #26
    Sencha User
    Join Date
    Oct 2007
    Location
    Iran
    Posts
    162
    Vote Rating
    0
    vahid4134 is on a distinguished road

      0  

    Default scroll tab in adobe air

    scroll tab in adobe air


    Hi mksoft
    in adobe air in Tab when scrolling problem. I dont now khow ro fix this. please help
    No honor is like knowledge

  7. #27
    Sencha User
    Join Date
    Oct 2007
    Location
    Iran
    Posts
    162
    Vote Rating
    0
    vahid4134 is on a distinguished road

      0  

    Default


    I fix this problem ( I dont know this is best way)
    PHP Code:
    Ext.override(Ext.TabPanel, {
        
    delegateUpdates : function(){
            if(
    this.suspendUpdates){
                return;
            }
            if(
    this.resizeTabs && this.rendered){
                
    this.autoSizeTabs();
            }
            if(
    this.enableTabScroll && this.rendered){
                
    this.autoScrollTabs();
                if(
    Ext.isAir || Ext.isWebKit){
                    
    this.on("resize",function(){
                        
    this.onScrollRight();
                    },
    this);
                    
    this.on("resize",function(){
                        
    this.onScrollLeft();
                    },
    this,{scope:this,delay:500});
                }
            }
        },
        
    autoScrollTabs : function(){        
            
    this.pos this.tabPosition=='bottom' this.footer this.header;
            var 
    count this.items.length;
            var 
    ow this.pos.dom.offsetWidth;
            var 
    tw this.pos.dom.clientWidth;

            var 
    wrap this.stripWrap;
            var 
    wd wrap.dom;
            var 
    cw wd.offsetWidth;
            var 
    pos this.getScrollPos();
            var 
    =  cw -(this.edge.getOffsetsTo(this.stripWrap)[0] + pos);
            if(
    Ext.isAir || Ext.isWebKitl*=-1;
            if(!
    this.enableTabScroll || count || cw 20){ // 20 to prevent display:none issues
                
    return;
            }
            if(
    <= tw){
                
    wrap.setWidth(tw);
                if(
    this.scrolling){
                    
    this.scrolling false;
                    
    this.pos.removeClass('x-tab-scrolling');
                    
    this.scrollLeft.hide();
                    
    this.scrollRight.hide();
                    
    // See here: http://extjs.com/forum/showthread.php?t=49308&highlight=isSafari
                    
    if(Ext.isAir || Ext.isWebKit){
                        
    wd.style.marginLeft '';
                        
    wd.style.marginRight '';
                    }
                }
                
    wd.scrollLeft 0;
            }else{
                if(!
    this.scrolling){
                    
    this.pos.addClass('x-tab-scrolling');
                    
    // See here: http://extjs.com/forum/showthread.php?t=49308&highlight=isSafari
                    
    if(Ext.isAir || Ext.isWebKit){
                        
    wd.style.marginLeft '18px';
                        
    wd.style.marginRight '18px';
                    }
                }
                
    tw -= wrap.getMargins('lr');
                
    wrap.setWidth(tw 20 tw 20);
                if(!
    this.scrolling){
                    if(!
    this.scrollLeft){
                        
    this.createScrollers();
                    }else{
                        
    this.scrollLeft.show();
                        
    this.scrollRight.show();
                    }
                }
                
    this.scrolling true;
                if(
    pos > (l-tw)){ // ensure it stays within bounds
                    
    wd.scrollLeft l-tw;
                }else{ 
    // otherwise, make sure the active tab is still visible
                    
    this.scrollToTab(this.activeTabfalse);
                }
                
    this.updateScrollButtons();
            }
        },
        
    onScrollRight : function(){
            var 
    pos this.getScrollPos();
            var 
    Math.max(this.getScrollWidth(), pos this.getScrollIncrement());
            if(
    != pos){
                
    this.scrollTo(sthis.animScroll);
            }
        },
        
    onScrollLeft : function(){
            var 
    pos this.getScrollPos();
            if(
    Ext.isAir || Ext.isWebKit)
                var 
    Math.max(0pos this.getScrollIncrement());
            else
                var 
    Math.min(0pos this.getScrollIncrement());
            if(
    != pos){
                
    this.scrollTo(sthis.animScroll);
            }
        },

        
    // private
        
    updateScrollButtons : function(){
            var 
    pos this.getScrollPos();
            if(
    Ext.isAir || Ext.isWebKit)
                
    this.scrollLeft[pos this.getScrollWidth() ? 'addClass' 'removeClass']('x-tab-scroller-left-disabled');
            else
                
    this.scrollLeft[pos == 'addClass' 'removeClass']('x-tab-scroller-left-disabled');
            
    this.scrollRight[pos <= this.getScrollWidth() ? 'addClass' 'removeClass']('x-tab-scroller-right-disabled');
        }
    }); 
    No honor is like knowledge

  8. #28
    Sencha User
    Join Date
    Oct 2007
    Location
    Iran
    Posts
    162
    Vote Rating
    0
    vahid4134 is on a distinguished road

      0  

    Default


    some fix
    Code:
    .x-form-check-group-label {
    	padding-left: 0 !important;
    	padding-right: 3px !important;
    }
    
    .x-form-clear-left {
        clear:right;
    }
    
    .x-form-cb-label {
    	margin-left:0;
    	margin-right:4px;
    }
    
    .x-form-column {
        float:right;
    }
    
    
    .x-fieldset legend .x-tool-toggle {
        margin-left:3px;
        margin-right:0;
        float:right !important;
    }
    .x-fieldset legend input {
    	margin-left:3px;
    	margin-right:0;
    	float:right !important;
    }
    
    fieldset.x-panel-collapsed .x-fieldset-bwrap {
    	right:-1000px;
    	left:auto;
    }
    
    .x-fieldset-noborder legend {
    	margin-left:0px;
    	margin-right:-3px;
    }
    
    /* IE legend positioing bug */
    .ext-ie .x-fieldset-noborder legend span {
    	left:auto;
    	right:16px;
    }
    .x-hide-label .x-form-element {
         padding-right: 0 !important;
    }
    No honor is like knowledge

  9. #29
    Sencha User
    Join Date
    Oct 2007
    Location
    Iran
    Posts
    162
    Vote Rating
    0
    vahid4134 is on a distinguished road

      0  

    Default fix Hbox and Vbox for Ext 3.1.1

    fix Hbox and Vbox for Ext 3.1.1


    Code:
    Ext.override(Ext.layout.HBoxLayout,{
    	 onLayout : function(ct, target){
    		    Ext.layout.HBoxLayout.superclass.onLayout.call(this, ct, target);
    		
    		    var cs = this.getRenderedItems(ct), csLen = cs.length,
    		        c, i, cm, cw, ch, diff, availWidth,
    		        size = this.getLayoutTargetSize(),
    		        w = size.width - this.scrollOffset,
    		        h = size.height,
    		        l = this.padding.left,
    		        t = this.padding.top,
    		        isStart = this.pack == 'start',
    		        isRestore = ['stretch', 'stretchmax'].indexOf(this.align) == -1,
    		        extraWidth = 0,
    		        maxHeight = 0,
    		        totalFlex = 0,
    		        usedWidth = 0;
    		
    		    for (i = 0 ; i < csLen; i++) {
    		        c = cs[i];
    		        // Total of all the flex values
    		        totalFlex += c.flex || 0;
    		        // Don't run width calculations on flexed items
    		        if (!c.flex) {
    		            // Render and layout sub-containers without a flex or width, once
    		            if (!c.width && !c.hasLayout && c.doLayout) {
    		                c.doLayout();
    		            }
    		            cw = c.getWidth();
    		        } else {
    		            cw = 0;
    		        }
    		        cm = c.margins;
    		        // Determine how much width is available to flex
    		        extraWidth += cw + cm.left + cm.right;
    		        // Max height for align
    		        maxHeight = Math.max(maxHeight, c.getHeight() + cm.top + cm.bottom);
    		    }
    		    // Final avail width calc
    		    availWidth = Math.max(0, (w - extraWidth - this.padding.left - this.padding.right));
    		
    		    var innerCtHeight = maxHeight + this.padding.top + this.padding.bottom;
    		    switch(this.align){
    		        case 'stretch':
    		            this.innerCt.setSize(w, h);
    		            break;
    		        case 'stretchmax':
    		        case 'top':
    		            this.innerCt.setSize(w, innerCtHeight);
    		            break;
    		        case 'middle':
    		            this.innerCt.setSize(w, h = Math.max(h, innerCtHeight));
    		            break;
    		    }
    		
    		    var leftOver = availWidth,
    		        widths = [],
    		        restore = [],
    		        idx = 0,
    		        availableHeight = Math.max(0, h - this.padding.top - this.padding.bottom);
    		
    		    for (i = 0 ; i < csLen; i++) {
    		        c = cs[i];
    		        if(isStart && c.flex){
    		            cw = Math.floor(availWidth * (c.flex / totalFlex));
    		            leftOver -= cw;
    		            widths.push(cw);
    		        }
    		    }
    		
    		    if(this.pack == 'center'){
    		        l += availWidth ? availWidth / 2 : 0;
    		    }else if(this.pack == 'end'){
    		        l += availWidth;
    		    }
    		    for (i = 0 ; i < csLen; i++) {
    		        c = cs[i];
    		        cm = c.margins;
    		        l += cm.right;
    		        c.setPosition(l, t + cm.top);
    		        if(isStart && c.flex){
    		            cw = Math.max(0, widths[idx++] + (leftOver-- > 0 ? 1 : 0));
    		            if(isRestore){
    		                restore.push(c.getHeight());
    		            }
    		            c.setSize(cw, availableHeight);
    		        }else{
    		            cw = c.getWidth();
    		        }
    		        l += cw + cm.left;
    		    }
    		
    		    idx = 0;
    		    for (i = 0 ; i < csLen; i++) {
    		        c = cs[i];
    		        cm = c.margins;
    		        ch = c.getHeight();
    		        if(isStart && c.flex){
    		            ch = restore[idx++];
    		        }
    		        if(this.align == 'stretch'){
    		            c.setHeight(((h - (this.padding.top + this.padding.bottom)) - (cm.top + cm.bottom)).constrain(
    		                c.minHeight || 0, c.maxHeight || 1000000));
    		        }else if(this.align == 'stretchmax'){
    		            c.setHeight((maxHeight - (cm.top + cm.bottom)).constrain(
    		                c.minHeight || 0, c.maxHeight || 1000000));
    		        }else{
    		            if(this.align == 'middle'){
    		                diff = availableHeight - (ch + cm.top + cm.bottom);
    		                ch = t + cm.top + (diff/2);
    		                if(diff > 0){
    		                    c.setPosition(c.x, ch);
    		                }
    		            }
    		            if(isStart && c.flex){
    		                c.setHeight(ch);
    		            }
    		        }
    		    }
    		    // Putting a box layout into an overflowed container is NOT correct and will make a second layout pass necessary.
    		    if (i = target.getStyle('overflow') && i != 'hidden' && !this.adjustmentPass) {
    		        var ts = this.getLayoutTargetSize();
    		        if (ts.width != size.width || ts.height != size.height){
    		            this.adjustmentPass = true;
    		            this.onLayout(ct, target);
    		        }
    		    }
    		    delete this.adjustmentPass;
    		}
    });
    
    Ext.override(Ext.layout.VBoxLayout, {
    	onLayout : function(ct, target){
    	    Ext.layout.VBoxLayout.superclass.onLayout.call(this, ct, target);
    	
    	    var cs = this.getRenderedItems(ct), csLen = cs.length,
    	        c, i, cm, ch, margin, cl, diff, aw, availHeight,
    	        size = this.getLayoutTargetSize(),
    	        w = size.width,
    	        h = size.height - this.scrollOffset,
    	        l = this.padding.left,
    	        t = this.padding.top,
    	        isStart = this.pack == 'start',
    	        extraHeight = 0,
    	        maxWidth = 0,
    	        totalFlex = 0,
    	        usedHeight = 0,
    	        idx = 0,
    	        heights = [],
    	        restore = [];
    	
    	    // Do only width calculations and apply those first, as they can affect height
    	    for (i = 0 ; i < csLen; i++) {
    	        c = cs[i];
    	        cm = c.margins;
    	        margin = cm.top + cm.bottom;
    	        // Max height for align
    	        maxWidth = Math.max(maxWidth, c.getWidth() + cm.left + cm.right);
    	    }
    	
    	    var innerCtWidth = maxWidth + this.padding.left + this.padding.right;
    	    switch(this.align){
    	        case 'stretch':
    	            this.innerCt.setSize(w, h);
    	            break;
    	        case 'stretchmax':
    	        case 'left':
    	            this.innerCt.setSize(innerCtWidth, h);
    	            break;
    	        case 'center':
    	            this.innerCt.setSize(w = Math.max(w, innerCtWidth), h);
    	            break;
    	    }
    	
    	    var availableWidth = Math.max(0, w - this.padding.left - this.padding.right);
    	    // Apply widths
    	    for (i = 0 ; i < csLen; i++) {
    	        c = cs[i];
    	        cm = c.margins;
    	        if(this.align == 'stretch'){
    	            c.setWidth(((w - (this.padding.left + this.padding.right)) - (cm.left + cm.right)).constrain(
    	                c.minWidth || 0, c.maxWidth || 1000000));
    	        }else if(this.align == 'stretchmax'){
    	            c.setWidth((maxWidth - (cm.left + cm.right)).constrain(
    	                c.minWidth || 0, c.maxWidth || 1000000));
    	        }else if(isStart && c.flex){
    	            c.setWidth();
    	        }
    	
    	    }
    	
    	    // Height calculations
    	    for (i = 0 ; i < csLen; i++) {
    	        c = cs[i];
    	        // Total of all the flex values
    	        totalFlex += c.flex || 0;
    	        // Don't run height calculations on flexed items
    	        if (!c.flex) {
    	            // Render and layout sub-containers without a flex or height, once
    	            if (!c.height && !c.hasLayout && c.doLayout) {
    	                c.doLayout();
    	            }
    	            ch = c.getHeight();
    	        } else {
    	            ch = 0;
    	        }
    	
    	        cm = c.margins;
    	        // Determine how much height is available to flex
    	        extraHeight += ch + cm.top + cm.bottom;
    	    }
    	    // Final avail height calc
    	    availHeight = Math.max(0, (h - extraHeight - this.padding.top - this.padding.bottom));
    	
    	    var leftOver = availHeight;
    	    for (i = 0 ; i < csLen; i++) {
    	        c = cs[i];
    	        if(isStart && c.flex){
    	            ch = Math.floor(availHeight * (c.flex / totalFlex));
    	            leftOver -= ch;
    	            heights.push(ch);
    	        }
    	    }
    	    if(this.pack == 'center'){
    	        t += availHeight ? availHeight / 2 : 0;
    	    }else if(this.pack == 'end'){
    	        t += availHeight;
    	    }
    	    idx = 0;
    	    // Apply heights
    	    for (i = 0 ; i < csLen; i++) {
    	        c = cs[i];
    	        cm = c.margins;
    	        t += cm.top;
    	        aw = availableWidth;
    	        cl = l + cm.right // default left pos
    	
    	        // Adjust left pos for centering
    	        if(this.align == 'center'){
    	            if((diff = availableWidth - (c.getWidth() + cm.left + cm.right)) > 0){
    	                cl += (diff/2);
    	                aw -= diff;
    	            }
    	        }
    	
    	        c.setPosition(cl, t);
    	        if(isStart && c.flex){
    	            ch = Math.max(0, heights[idx++] + (leftOver-- > 0 ? 1 : 0));
    	            c.setSize(aw, ch);
    	        }else{
    	            ch = c.getHeight();
    	        }
    	        t += ch + cm.bottom;
    	    }
    	    // Putting a box layout into an overflowed container is NOT correct and will make a second layout pass necessary.
    	    if (i = target.getStyle('overflow') && i != 'hidden' && !this.adjustmentPass) {
    	        var ts = this.getLayoutTargetSize();
    	        if (ts.width != size.width || ts.height != size.height){
    	            this.adjustmentPass = true;
    	            this.onLayout(ct, target);
    	        }
    	    }
    	    delete this.adjustmentPass;
    	}
    });
    No honor is like knowledge

  10. #30
    Ext User
    Join Date
    Apr 2010
    Posts
    1
    Vote Rating
    0
    whitefawn is on a distinguished road

      0  

    Thumbs up RTL support.

    RTL support.


    mksoft, vahid1434 - you're doing good job!
    There's a need for RTL support, without it there will be no enterprise adoption of Extjs in Middle Eastern countries.