Ticket #1541: formatblock.diff
| File formatblock.diff, 3.0 kB (added by guest, 2 years ago) |
|---|
-
XinhaCore.js
1750 1750 // == "formatblock" we retrieve config.formatblock (or 1751 1751 // a different way to write it in JS is 1752 1752 // config["formatblock"]. 1753 options = editor.config[txt]; 1753 options = {}; 1754 for (var i in editor.config[txt]) 1755 { 1756 val = editor.config[txt][i]; 1757 if (typeof val == 'object') { 1758 options[i] = val.tag; 1759 } 1760 else 1761 { 1762 options[i] = val; 1763 } 1764 } 1754 1765 cmd = txt; 1755 1766 break; 1756 1767 default: … … 4882 4894 var blocks = []; 4883 4895 for ( var indexBlock in this.config.formatblock ) 4884 4896 { 4885 // prevent iterating over wrong type4886 if ( typeof this.config.formatblock[indexBlock] == 'string')4897 var blockItem = this.config.formatblock[indexBlock]; 4898 if (typeof blockItem == 'object') 4887 4899 { 4888 blocks[blocks.length] = this.config.formatblock[indexBlock];4900 blocks[blocks.length] = blockItem.detect || blockItem.tag; 4889 4901 } 4902 else if (typeof blockItem == 'string') 4903 { 4904 blocks[blocks.length] = blockItem; 4905 } 4890 4906 } 4891 4907 4892 4908 var deepestAncestor = this._getFirstAncestor(this.getSelection(), blocks); … … 4894 4910 { 4895 4911 for ( var x = 0; x < blocks.length; x++ ) 4896 4912 { 4897 if ( blocks[x].toLowerCase() == deepestAncestor.tagName.toLowerCase())4913 if (typeof blocks[x] == 'function') 4898 4914 { 4915 if (blocks[x](this, deepestAncestor)) 4916 { 4917 btn.element.selectedIndex = x; 4918 break; 4919 } 4920 } 4921 else if ( blocks[x].toLowerCase() == deepestAncestor.tagName.toLowerCase() ) 4922 { 4899 4923 btn.element.selectedIndex = x; 4900 4924 } 4901 4925 } … … 5202 5226 this.execCommand(txt, false, value); 5203 5227 break; 5204 5228 case "formatblock": 5205 // Mozilla inserts an empty tag (<>) if no parameter is passed 5229 // Mozilla inserts an empty tag (<>) if no parameter is passed 5206 5230 if ( !value ) 5207 5231 { 5208 5232 this.updateToolbar(); 5209 5233 break; 5210 5234 } 5235 var invoker = null; 5236 for (var i in this.config.formatblock) 5237 { 5238 var val = this.config.formatblock[i]; 5239 if (typeof val == 'object' 5240 && val.tag == value) 5241 { 5242 invoker = val.invoker || null; 5243 break; 5244 } 5245 } 5246 5211 5247 if( !Xinha.is_gecko || value !== 'blockquote' ) 5212 5248 { 5213 5249 value = "<" + value + ">"; 5214 5250 } 5215 this.execCommand(txt, false, value); 5251 if (invoker) 5252 { 5253 invoker(this); 5254 } else { 5255 this.execCommand(txt, false, value); 5256 } 5216 5257 break; 5217 5258 default: 5218 5259 // try to look it up in the registered dropdowns
