Ticket #3026: 3026.patch
File 3026.patch, 7.9 KB (added by , 15 years ago) |
---|
-
_source/plugins/dialogui/plugin.js
720 720 721 721 htmlList.push( [ theirMatch[1], ' ', myMatch[1] || '', theirMatch[2] ].join( '' ) ); 722 722 }; 723 })() 723 })(), 724 725 /** 726 * An iframe element. 727 * @extends CKEDITOR.ui.dialog.uiElement 728 * @example 729 * @constructor 730 * @param {CKEDITOR.dialog} dialog 731 * Parent dialog object. 732 * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition 733 * The element definition. Accepted fields: 734 * <ul> 735 * <li><strong>src</strong> (Required) The src field of the iframe. </li> 736 * <li><strong>width</strong> (Required) The iframe's width.</li> 737 * <li><strong>height</strong> (Required) The iframe's height.</li> 738 * <li><strong>onContentLoad</strong> (Optional) A function to be executed 739 * after the iframe's contents has finished loading.</li> 740 * </ul> 741 * @param {Array} htmlList 742 * List of HTML code to output to. 743 */ 744 iframe : function( dialog, elementDefinition, htmlList ) 745 { 746 if ( arguments.length < 3 ) 747 return; 748 749 var _ = initPrivateObject.call( this, elementDefinition ), 750 contentLoad = elementDefinition.onContentLoad && CKEDITOR.tools.bind( elementDefinition.onContentLoad, this ), 751 cssWidth = CKEDITOR.tools.cssLength( elementDefinition.width ), 752 cssHeight = CKEDITOR.tools.cssLength( elementDefinition.height ); 753 _.frameId = CKEDITOR.tools.getNextNumber() + '_iframe'; 754 755 // IE BUG: Parent container does not resize to contain the iframe automatically. 756 dialog.on( 'load', function() 757 { 758 var iframe = CKEDITOR.document.getById( _.frameId ), 759 parentContainer = iframe.getParent(); 760 761 parentContainer.setStyles( 762 { 763 width : cssWidth, 764 height : cssHeight 765 } ); 766 } ); 767 768 var attributes = 769 { 770 src : '%2', 771 id : _.frameId, 772 frameborder : 0, 773 allowtransparency : true 774 }; 775 var myHtml = []; 776 777 if ( typeof( elementDefinition.onContentLoad ) == 'function' ) 778 attributes.onload = 'CKEDITOR.tools.callFunction(%1);'; 779 780 CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtml, 'iframe', 781 { 782 width : cssWidth, 783 height : cssHeight 784 }, attributes, '' ); 785 786 // Put a placeholder for the first time. 787 htmlList.push( '<div style="width:' + cssWidth + ';height:' + cssHeight + ';" id="' + this.domId + '"></div>' ); 788 789 // Iframe elements should be refreshed whenever it is shown. 790 myHtml = myHtml.join( '' ); 791 dialog.on( 'show', function() 792 { 793 var iframe = CKEDITOR.document.getById( _.frameId ), 794 parentContainer = iframe.getParent(), 795 callIndex = CKEDITOR.tools.addFunction( contentLoad ), 796 html = myHtml.replace( '%1', callIndex ).replace( '%2', CKEDITOR.tools.htmlEncode( elementDefinition.src ) ); 797 parentContainer.setHtml( html ); 798 } ); 799 } 724 800 }, true ); 725 801 726 CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement;802 CKEDITOR.ui.dialog.html.prototype = CKEDITOR.ui.dialog.iframe.prototype = new CKEDITOR.ui.dialog.uiElement; 727 803 728 804 CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement, 729 805 /** @lends CKEDITOR.ui.dialog.labeledElement.prototype */ … … 1210 1286 CKEDITOR.dialog.addUIElement( 'file', commonBuilder ); 1211 1287 CKEDITOR.dialog.addUIElement( 'fileButton', commonBuilder ); 1212 1288 CKEDITOR.dialog.addUIElement( 'html', commonBuilder ); 1289 CKEDITOR.dialog.addUIElement( 'iframe', commonBuilder ); 1213 1290 })(); -
_source/plugins/dialog/plugin.js
878 878 this._.dialogDefinitions[name] = dialogDefinition; 879 879 }, 880 880 881 addIframe : function( name, title, src, width, height, onContentLoad ) 882 { 883 var element = 884 { 885 type : 'iframe', 886 src : src, 887 width : '100%', 888 height : '100%' 889 } 890 if ( typeof( onContentLoad ) == 'function' ) 891 element.onContentLoad = onContentLoad; 892 893 var definition = 894 { 895 title : title, 896 minWidth : width, 897 minHeight : height, 898 contents : 899 [ 900 { 901 id : 'iframe', 902 label : title, 903 expand : true, 904 elements : [ element ] 905 } 906 ] 907 }; 908 909 return this.add( name, function(){ return definition; } ); 910 }, 911 881 912 exists : function( name ) 882 913 { 883 914 return !!this._.dialogDefinitions[ name ]; … … 1620 1651 1621 1652 (function() 1622 1653 { 1623 var decimalRegex = /^\d+(?:\.\d+)?$/,1624 fixLength = function( length )1625 {1626 return length + ( decimalRegex.test( length ) ? 'px' : '' );1627 };1628 1629 1654 CKEDITOR.ui.dialog = 1630 1655 { 1631 1656 /** … … 1807 1832 if ( widths ) 1808 1833 { 1809 1834 if ( widths[i] ) 1810 styles.push( 'width:' + fixLength( widths[i] ) );1835 styles.push( 'width:' + CKEDITOR.tools.cssLength( widths[i] ) ); 1811 1836 } 1812 1837 else 1813 1838 styles.push( 'width:' + Math.floor( 100 / childHtmlList.length ) + '%' ); 1814 1839 if ( height ) 1815 styles.push( 'height:' + fixLength( height ) );1840 styles.push( 'height:' + CKEDITOR.tools.cssLength( height ) ); 1816 1841 if ( elementDefinition && elementDefinition.padding != undefined ) 1817 styles.push( 'padding:' + fixLength( elementDefinition.padding ) );1842 styles.push( 'padding:' + CKEDITOR.tools.cssLength( elementDefinition.padding ) ); 1818 1843 if ( styles.length > 0 ) 1819 1844 html.push( 'style="' + styles.join('; ') + '" ' ); 1820 1845 html.push( '>', childHtmlList[i], '</td>' ); … … 1873 1898 html.push( 'style="' ); 1874 1899 if ( elementDefinition && elementDefinition.expand ) 1875 1900 html.push( 'height:100%;' ); 1876 html.push( 'width:' + fixLength( width || '100%' ), ';' );1901 html.push( 'width:' + CKEDITOR.tools.cssLength( width || '100%' ), ';' ); 1877 1902 html.push( '"' ); 1878 1903 html.push( 'align="', CKEDITOR.tools.htmlEncode( 1879 1904 ( elementDefinition && elementDefinition.align ) || ( dialog.getParentEditor().lang.dir == 'ltr' ? 'left' : 'right' ) ), '" ' ); … … 1884 1909 var styles = []; 1885 1910 html.push( '<tr><td ' ); 1886 1911 if ( width ) 1887 styles.push( 'width:' + fixLength( width || '100%' ) );1912 styles.push( 'width:' + CKEDITOR.tools.cssLength( width || '100%' ) ); 1888 1913 if ( heights ) 1889 styles.push( 'height:' + fixLength( heights[i] ) );1914 styles.push( 'height:' + CKEDITOR.tools.cssLength( heights[i] ) ); 1890 1915 else if ( elementDefinition && elementDefinition.expand ) 1891 1916 styles.push( 'height:' + Math.floor( 100 / childHtmlList.length ) + '%' ); 1892 1917 if ( elementDefinition && elementDefinition.padding != undefined ) 1893 styles.push( 'padding:' + fixLength( elementDefinition.padding ) );1918 styles.push( 'padding:' + CKEDITOR.tools.cssLength( elementDefinition.padding ) ); 1894 1919 if ( styles.length > 0 ) 1895 1920 html.push( 'style="', styles.join( '; ' ), '" ' ); 1896 1921 html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[i], '</td></tr>' ); -
_source/core/tools.js
451 451 { 452 452 var fn = functions[ index ]; 453 453 return fn.apply( window, Array.prototype.slice.call( arguments, 1 ) ); 454 } 454 }, 455 456 cssLength : (function() 457 { 458 var decimalRegex = /^\d+(?:\.\d+)?$/; 459 return function( length ) 460 { 461 return length + ( decimalRegex.test( length ) ? 'px' : '' ); 462 }; 463 })() 455 464 }; 456 465 })(); 457 466