Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../public_h.../wp-inclu.../js/tinymce/plugins/wordpres...
File: plugin.js
bodyClass = ['mceContentBody'], // Back-compat for themes that use this in editor-style.css...
[500] Fix | Delete
doc = editor.getDoc(),
[501] Fix | Delete
dom = editor.dom;
[502] Fix | Delete
[503] Fix | Delete
if ( env.iOS ) {
[504] Fix | Delete
dom.addClass( doc.documentElement, 'ios' );
[505] Fix | Delete
}
[506] Fix | Delete
[507] Fix | Delete
if ( editor.getParam( 'directionality' ) === 'rtl' ) {
[508] Fix | Delete
bodyClass.push('rtl');
[509] Fix | Delete
dom.setAttrib( doc.documentElement, 'dir', 'rtl' );
[510] Fix | Delete
}
[511] Fix | Delete
[512] Fix | Delete
dom.setAttrib( doc.documentElement, 'lang', editor.getParam( 'wp_lang_attr' ) );
[513] Fix | Delete
[514] Fix | Delete
if ( env.ie ) {
[515] Fix | Delete
if ( parseInt( env.ie, 10 ) === 9 ) {
[516] Fix | Delete
bodyClass.push('ie9');
[517] Fix | Delete
} else if ( parseInt( env.ie, 10 ) === 8 ) {
[518] Fix | Delete
bodyClass.push('ie8');
[519] Fix | Delete
} else if ( env.ie < 8 ) {
[520] Fix | Delete
bodyClass.push('ie7');
[521] Fix | Delete
}
[522] Fix | Delete
} else if ( env.webkit ) {
[523] Fix | Delete
bodyClass.push('webkit');
[524] Fix | Delete
}
[525] Fix | Delete
[526] Fix | Delete
bodyClass.push('wp-editor');
[527] Fix | Delete
[528] Fix | Delete
each( bodyClass, function( cls ) {
[529] Fix | Delete
if ( cls ) {
[530] Fix | Delete
dom.addClass( doc.body, cls );
[531] Fix | Delete
}
[532] Fix | Delete
});
[533] Fix | Delete
[534] Fix | Delete
// Remove invalid parent paragraphs when inserting HTML.
[535] Fix | Delete
editor.on( 'BeforeSetContent', function( event ) {
[536] Fix | Delete
if ( event.content ) {
[537] Fix | Delete
event.content = event.content.replace( /<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)( [^>]*)?>/gi, '<$1$2>' )
[538] Fix | Delete
.replace( /<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)>\s*<\/p>/gi, '</$1>' );
[539] Fix | Delete
}
[540] Fix | Delete
});
[541] Fix | Delete
[542] Fix | Delete
if ( $ ) {
[543] Fix | Delete
// Run on DOM ready. Otherwise TinyMCE may initialize earlier and handlers attached
[544] Fix | Delete
// on DOM ready of after the `tinymce.init()` call may not get triggered.
[545] Fix | Delete
$( function() {
[546] Fix | Delete
$( document ).triggerHandler( 'tinymce-editor-init', [editor] );
[547] Fix | Delete
});
[548] Fix | Delete
}
[549] Fix | Delete
[550] Fix | Delete
if ( window.tinyMCEPreInit && window.tinyMCEPreInit.dragDropUpload ) {
[551] Fix | Delete
dom.bind( doc, 'dragstart dragend dragover drop', function( event ) {
[552] Fix | Delete
if ( $ ) {
[553] Fix | Delete
// Trigger the jQuery handlers.
[554] Fix | Delete
$( document ).trigger( new $.Event( event ) );
[555] Fix | Delete
}
[556] Fix | Delete
});
[557] Fix | Delete
}
[558] Fix | Delete
[559] Fix | Delete
if ( editor.getParam( 'wp_paste_filters', true ) ) {
[560] Fix | Delete
editor.on( 'PastePreProcess', function( event ) {
[561] Fix | Delete
// Remove trailing <br> added by WebKit browsers to the clipboard.
[562] Fix | Delete
event.content = event.content.replace( /<br class="?Apple-interchange-newline"?>/gi, '' );
[563] Fix | Delete
[564] Fix | Delete
// In WebKit this is handled by removeWebKitStyles().
[565] Fix | Delete
if ( ! tinymce.Env.webkit ) {
[566] Fix | Delete
// Remove all inline styles.
[567] Fix | Delete
event.content = event.content.replace( /(<[^>]+) style="[^"]*"([^>]*>)/gi, '$1$2' );
[568] Fix | Delete
[569] Fix | Delete
// Put back the internal styles.
[570] Fix | Delete
event.content = event.content.replace(/(<[^>]+) data-mce-style=([^>]+>)/gi, '$1 style=$2' );
[571] Fix | Delete
}
[572] Fix | Delete
});
[573] Fix | Delete
[574] Fix | Delete
editor.on( 'PastePostProcess', function( event ) {
[575] Fix | Delete
// Remove empty paragraphs.
[576] Fix | Delete
editor.$( 'p', event.node ).each( function( i, node ) {
[577] Fix | Delete
if ( dom.isEmpty( node ) ) {
[578] Fix | Delete
dom.remove( node );
[579] Fix | Delete
}
[580] Fix | Delete
});
[581] Fix | Delete
[582] Fix | Delete
if ( tinymce.isIE ) {
[583] Fix | Delete
editor.$( 'a', event.node ).find( 'font, u' ).each( function( i, node ) {
[584] Fix | Delete
dom.remove( node, true );
[585] Fix | Delete
});
[586] Fix | Delete
}
[587] Fix | Delete
});
[588] Fix | Delete
}
[589] Fix | Delete
});
[590] Fix | Delete
[591] Fix | Delete
editor.on( 'SaveContent', function( event ) {
[592] Fix | Delete
// If editor is hidden, we just want the textarea's value to be saved.
[593] Fix | Delete
if ( ! editor.inline && editor.isHidden() ) {
[594] Fix | Delete
event.content = event.element.value;
[595] Fix | Delete
return;
[596] Fix | Delete
}
[597] Fix | Delete
[598] Fix | Delete
// Keep empty paragraphs :(
[599] Fix | Delete
event.content = event.content.replace( /<p>(?:<br ?\/?>|\u00a0|\uFEFF| )*<\/p>/g, '<p>&nbsp;</p>' );
[600] Fix | Delete
[601] Fix | Delete
if ( hasWpautop ) {
[602] Fix | Delete
event.content = wp.editor.removep( event.content );
[603] Fix | Delete
} else {
[604] Fix | Delete
// Restore formatting of block boundaries.
[605] Fix | Delete
event.content = event.content.replace( /-->\s*<!-- wp:/g, '-->\n\n<!-- wp:' );
[606] Fix | Delete
}
[607] Fix | Delete
});
[608] Fix | Delete
[609] Fix | Delete
editor.on( 'preInit', function() {
[610] Fix | Delete
var validElementsSetting = '@[id|accesskey|class|dir|lang|style|tabindex|' +
[611] Fix | Delete
'title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],' + // Global attributes.
[612] Fix | Delete
'i,' + // Don't replace <i> with <em> and <b> with <strong> and don't remove them when empty.
[613] Fix | Delete
'b,' +
[614] Fix | Delete
'script[src|async|defer|type|charset|crossorigin|integrity]'; // Add support for <script>.
[615] Fix | Delete
[616] Fix | Delete
editor.schema.addValidElements( validElementsSetting );
[617] Fix | Delete
[618] Fix | Delete
if ( tinymce.Env.iOS ) {
[619] Fix | Delete
editor.settings.height = 300;
[620] Fix | Delete
}
[621] Fix | Delete
[622] Fix | Delete
each( {
[623] Fix | Delete
c: 'JustifyCenter',
[624] Fix | Delete
r: 'JustifyRight',
[625] Fix | Delete
l: 'JustifyLeft',
[626] Fix | Delete
j: 'JustifyFull',
[627] Fix | Delete
q: 'mceBlockQuote',
[628] Fix | Delete
u: 'InsertUnorderedList',
[629] Fix | Delete
o: 'InsertOrderedList',
[630] Fix | Delete
m: 'WP_Medialib',
[631] Fix | Delete
t: 'WP_More',
[632] Fix | Delete
d: 'Strikethrough',
[633] Fix | Delete
p: 'WP_Page',
[634] Fix | Delete
x: 'WP_Code'
[635] Fix | Delete
}, function( command, key ) {
[636] Fix | Delete
editor.shortcuts.add( 'access+' + key, '', command );
[637] Fix | Delete
} );
[638] Fix | Delete
[639] Fix | Delete
editor.addShortcut( 'meta+s', '', function() {
[640] Fix | Delete
if ( wp && wp.autosave ) {
[641] Fix | Delete
wp.autosave.server.triggerSave();
[642] Fix | Delete
}
[643] Fix | Delete
} );
[644] Fix | Delete
[645] Fix | Delete
// Alt+Shift+Z removes a block in the block editor, don't add it to the Classic block.
[646] Fix | Delete
if ( ! editor.settings.classic_block_editor ) {
[647] Fix | Delete
editor.addShortcut( 'access+z', '', 'WP_Adv' );
[648] Fix | Delete
}
[649] Fix | Delete
[650] Fix | Delete
// Workaround for not triggering the global help modal in the block editor by the Classic block shortcut.
[651] Fix | Delete
editor.on( 'keydown', function( event ) {
[652] Fix | Delete
var match;
[653] Fix | Delete
[654] Fix | Delete
if ( tinymce.Env.mac ) {
[655] Fix | Delete
match = event.ctrlKey && event.altKey && event.code === 'KeyH';
[656] Fix | Delete
} else {
[657] Fix | Delete
match = event.shiftKey && event.altKey && event.code === 'KeyH';
[658] Fix | Delete
}
[659] Fix | Delete
[660] Fix | Delete
if ( match ) {
[661] Fix | Delete
editor.execCommand( 'WP_Help' );
[662] Fix | Delete
event.stopPropagation();
[663] Fix | Delete
event.stopImmediatePropagation();
[664] Fix | Delete
return false;
[665] Fix | Delete
}
[666] Fix | Delete
[667] Fix | Delete
return true;
[668] Fix | Delete
});
[669] Fix | Delete
[670] Fix | Delete
if ( window.getUserSetting( 'editor_plain_text_paste_warning' ) > 1 ) {
[671] Fix | Delete
editor.settings.paste_plaintext_inform = false;
[672] Fix | Delete
}
[673] Fix | Delete
[674] Fix | Delete
// Change the editor iframe title on MacOS, add the correct help shortcut.
[675] Fix | Delete
if ( tinymce.Env.mac ) {
[676] Fix | Delete
tinymce.$( editor.iframeElement ).attr( 'title', __( 'Rich Text Area. Press Control-Option-H for help.' ) );
[677] Fix | Delete
}
[678] Fix | Delete
} );
[679] Fix | Delete
[680] Fix | Delete
editor.on( 'PastePlainTextToggle', function( event ) {
[681] Fix | Delete
// Warn twice, then stop.
[682] Fix | Delete
if ( event.state === true ) {
[683] Fix | Delete
var times = parseInt( window.getUserSetting( 'editor_plain_text_paste_warning' ), 10 ) || 0;
[684] Fix | Delete
[685] Fix | Delete
if ( times < 2 ) {
[686] Fix | Delete
window.setUserSetting( 'editor_plain_text_paste_warning', ++times );
[687] Fix | Delete
}
[688] Fix | Delete
}
[689] Fix | Delete
});
[690] Fix | Delete
[691] Fix | Delete
editor.on( 'beforerenderui', function() {
[692] Fix | Delete
if ( editor.theme.panel ) {
[693] Fix | Delete
each( [ 'button', 'colorbutton', 'splitbutton' ], function( buttonType ) {
[694] Fix | Delete
replaceButtonsTooltips( editor.theme.panel.find( buttonType ) );
[695] Fix | Delete
} );
[696] Fix | Delete
[697] Fix | Delete
addShortcutsToListbox();
[698] Fix | Delete
}
[699] Fix | Delete
} );
[700] Fix | Delete
[701] Fix | Delete
function prepareTooltips() {
[702] Fix | Delete
var access = 'Shift+Alt+';
[703] Fix | Delete
var meta = 'Ctrl+';
[704] Fix | Delete
[705] Fix | Delete
wpTooltips = {};
[706] Fix | Delete
[707] Fix | Delete
// For MacOS: ctrl = \u2303, cmd = \u2318, alt = \u2325.
[708] Fix | Delete
if ( tinymce.Env.mac ) {
[709] Fix | Delete
access = '\u2303\u2325';
[710] Fix | Delete
meta = '\u2318';
[711] Fix | Delete
}
[712] Fix | Delete
[713] Fix | Delete
// Some tooltips are translated, others are not...
[714] Fix | Delete
if ( editor.settings.wp_shortcut_labels ) {
[715] Fix | Delete
each( editor.settings.wp_shortcut_labels, function( value, tooltip ) {
[716] Fix | Delete
var translated = editor.translate( tooltip );
[717] Fix | Delete
[718] Fix | Delete
value = value.replace( 'access', access ).replace( 'meta', meta );
[719] Fix | Delete
wpTooltips[ tooltip ] = value;
[720] Fix | Delete
[721] Fix | Delete
// Add the translated so we can match all of them.
[722] Fix | Delete
if ( tooltip !== translated ) {
[723] Fix | Delete
wpTooltips[ translated ] = value;
[724] Fix | Delete
}
[725] Fix | Delete
} );
[726] Fix | Delete
}
[727] Fix | Delete
}
[728] Fix | Delete
[729] Fix | Delete
function getTooltip( tooltip ) {
[730] Fix | Delete
var translated = editor.translate( tooltip );
[731] Fix | Delete
var label;
[732] Fix | Delete
[733] Fix | Delete
if ( ! wpTooltips ) {
[734] Fix | Delete
prepareTooltips();
[735] Fix | Delete
}
[736] Fix | Delete
[737] Fix | Delete
if ( wpTooltips.hasOwnProperty( translated ) ) {
[738] Fix | Delete
label = wpTooltips[ translated ];
[739] Fix | Delete
} else if ( wpTooltips.hasOwnProperty( tooltip ) ) {
[740] Fix | Delete
label = wpTooltips[ tooltip ];
[741] Fix | Delete
}
[742] Fix | Delete
[743] Fix | Delete
return label ? translated + ' (' + label + ')' : translated;
[744] Fix | Delete
}
[745] Fix | Delete
[746] Fix | Delete
function replaceButtonsTooltips( buttons ) {
[747] Fix | Delete
[748] Fix | Delete
if ( ! buttons ) {
[749] Fix | Delete
return;
[750] Fix | Delete
}
[751] Fix | Delete
[752] Fix | Delete
each( buttons, function( button ) {
[753] Fix | Delete
var tooltip;
[754] Fix | Delete
[755] Fix | Delete
if ( button && button.settings.tooltip ) {
[756] Fix | Delete
tooltip = getTooltip( button.settings.tooltip );
[757] Fix | Delete
button.settings.tooltip = tooltip;
[758] Fix | Delete
[759] Fix | Delete
// Override the aria label with the translated tooltip + shortcut.
[760] Fix | Delete
if ( button._aria && button._aria.label ) {
[761] Fix | Delete
button._aria.label = tooltip;
[762] Fix | Delete
}
[763] Fix | Delete
}
[764] Fix | Delete
} );
[765] Fix | Delete
}
[766] Fix | Delete
[767] Fix | Delete
function addShortcutsToListbox() {
[768] Fix | Delete
// listbox for the "blocks" drop-down.
[769] Fix | Delete
each( editor.theme.panel.find( 'listbox' ), function( listbox ) {
[770] Fix | Delete
if ( listbox && listbox.settings.text === 'Paragraph' ) {
[771] Fix | Delete
each( listbox.settings.values, function( item ) {
[772] Fix | Delete
if ( item.text && wpTooltips.hasOwnProperty( item.text ) ) {
[773] Fix | Delete
item.shortcut = '(' + wpTooltips[ item.text ] + ')';
[774] Fix | Delete
}
[775] Fix | Delete
} );
[776] Fix | Delete
}
[777] Fix | Delete
} );
[778] Fix | Delete
}
[779] Fix | Delete
[780] Fix | Delete
/**
[781] Fix | Delete
* Experimental: create a floating toolbar.
[782] Fix | Delete
* This functionality will change in the next releases. Not recommended for use by plugins.
[783] Fix | Delete
*/
[784] Fix | Delete
editor.on( 'preinit', function() {
[785] Fix | Delete
var Factory = tinymce.ui.Factory,
[786] Fix | Delete
settings = editor.settings,
[787] Fix | Delete
activeToolbar,
[788] Fix | Delete
currentSelection,
[789] Fix | Delete
timeout,
[790] Fix | Delete
container = editor.getContainer(),
[791] Fix | Delete
wpAdminbar = document.getElementById( 'wpadminbar' ),
[792] Fix | Delete
mceIframe = document.getElementById( editor.id + '_ifr' ),
[793] Fix | Delete
mceToolbar,
[794] Fix | Delete
mceStatusbar,
[795] Fix | Delete
wpStatusbar,
[796] Fix | Delete
cachedWinSize;
[797] Fix | Delete
[798] Fix | Delete
if ( container ) {
[799] Fix | Delete
mceToolbar = tinymce.$( '.mce-toolbar-grp', container )[0];
[800] Fix | Delete
mceStatusbar = tinymce.$( '.mce-statusbar', container )[0];
[801] Fix | Delete
}
[802] Fix | Delete
[803] Fix | Delete
if ( editor.id === 'content' ) {
[804] Fix | Delete
wpStatusbar = document.getElementById( 'post-status-info' );
[805] Fix | Delete
}
[806] Fix | Delete
[807] Fix | Delete
function create( buttons, bottom ) {
[808] Fix | Delete
var toolbar,
[809] Fix | Delete
toolbarItems = [],
[810] Fix | Delete
buttonGroup;
[811] Fix | Delete
[812] Fix | Delete
each( buttons, function( item ) {
[813] Fix | Delete
var itemName;
[814] Fix | Delete
var tooltip;
[815] Fix | Delete
[816] Fix | Delete
function bindSelectorChanged() {
[817] Fix | Delete
var selection = editor.selection;
[818] Fix | Delete
[819] Fix | Delete
if ( itemName === 'bullist' ) {
[820] Fix | Delete
selection.selectorChanged( 'ul > li', function( state, args ) {
[821] Fix | Delete
var i = args.parents.length,
[822] Fix | Delete
nodeName;
[823] Fix | Delete
[824] Fix | Delete
while ( i-- ) {
[825] Fix | Delete
nodeName = args.parents[ i ].nodeName;
[826] Fix | Delete
[827] Fix | Delete
if ( nodeName === 'OL' || nodeName == 'UL' ) {
[828] Fix | Delete
break;
[829] Fix | Delete
}
[830] Fix | Delete
}
[831] Fix | Delete
[832] Fix | Delete
item.active( state && nodeName === 'UL' );
[833] Fix | Delete
} );
[834] Fix | Delete
}
[835] Fix | Delete
[836] Fix | Delete
if ( itemName === 'numlist' ) {
[837] Fix | Delete
selection.selectorChanged( 'ol > li', function( state, args ) {
[838] Fix | Delete
var i = args.parents.length,
[839] Fix | Delete
nodeName;
[840] Fix | Delete
[841] Fix | Delete
while ( i-- ) {
[842] Fix | Delete
nodeName = args.parents[ i ].nodeName;
[843] Fix | Delete
[844] Fix | Delete
if ( nodeName === 'OL' || nodeName === 'UL' ) {
[845] Fix | Delete
break;
[846] Fix | Delete
}
[847] Fix | Delete
}
[848] Fix | Delete
[849] Fix | Delete
item.active( state && nodeName === 'OL' );
[850] Fix | Delete
} );
[851] Fix | Delete
}
[852] Fix | Delete
[853] Fix | Delete
if ( item.settings.stateSelector ) {
[854] Fix | Delete
selection.selectorChanged( item.settings.stateSelector, function( state ) {
[855] Fix | Delete
item.active( state );
[856] Fix | Delete
}, true );
[857] Fix | Delete
}
[858] Fix | Delete
[859] Fix | Delete
if ( item.settings.disabledStateSelector ) {
[860] Fix | Delete
selection.selectorChanged( item.settings.disabledStateSelector, function( state ) {
[861] Fix | Delete
item.disabled( state );
[862] Fix | Delete
} );
[863] Fix | Delete
}
[864] Fix | Delete
}
[865] Fix | Delete
[866] Fix | Delete
if ( item === '|' ) {
[867] Fix | Delete
buttonGroup = null;
[868] Fix | Delete
} else {
[869] Fix | Delete
if ( Factory.has( item ) ) {
[870] Fix | Delete
item = {
[871] Fix | Delete
type: item
[872] Fix | Delete
};
[873] Fix | Delete
[874] Fix | Delete
if ( settings.toolbar_items_size ) {
[875] Fix | Delete
item.size = settings.toolbar_items_size;
[876] Fix | Delete
}
[877] Fix | Delete
[878] Fix | Delete
toolbarItems.push( item );
[879] Fix | Delete
[880] Fix | Delete
buttonGroup = null;
[881] Fix | Delete
} else {
[882] Fix | Delete
if ( ! buttonGroup ) {
[883] Fix | Delete
buttonGroup = {
[884] Fix | Delete
type: 'buttongroup',
[885] Fix | Delete
items: []
[886] Fix | Delete
};
[887] Fix | Delete
[888] Fix | Delete
toolbarItems.push( buttonGroup );
[889] Fix | Delete
}
[890] Fix | Delete
[891] Fix | Delete
if ( editor.buttons[ item ] ) {
[892] Fix | Delete
itemName = item;
[893] Fix | Delete
item = editor.buttons[ itemName ];
[894] Fix | Delete
[895] Fix | Delete
if ( typeof item === 'function' ) {
[896] Fix | Delete
item = item();
[897] Fix | Delete
}
[898] Fix | Delete
[899] Fix | Delete
item.type = item.type || 'button';
[900] Fix | Delete
[901] Fix | Delete
if ( settings.toolbar_items_size ) {
[902] Fix | Delete
item.size = settings.toolbar_items_size;
[903] Fix | Delete
}
[904] Fix | Delete
[905] Fix | Delete
tooltip = item.tooltip || item.title;
[906] Fix | Delete
[907] Fix | Delete
if ( tooltip ) {
[908] Fix | Delete
item.tooltip = getTooltip( tooltip );
[909] Fix | Delete
}
[910] Fix | Delete
[911] Fix | Delete
item = Factory.create( item );
[912] Fix | Delete
[913] Fix | Delete
buttonGroup.items.push( item );
[914] Fix | Delete
[915] Fix | Delete
if ( editor.initialized ) {
[916] Fix | Delete
bindSelectorChanged();
[917] Fix | Delete
} else {
[918] Fix | Delete
editor.on( 'init', bindSelectorChanged );
[919] Fix | Delete
}
[920] Fix | Delete
}
[921] Fix | Delete
}
[922] Fix | Delete
}
[923] Fix | Delete
} );
[924] Fix | Delete
[925] Fix | Delete
toolbar = Factory.create( {
[926] Fix | Delete
type: 'panel',
[927] Fix | Delete
layout: 'stack',
[928] Fix | Delete
classes: 'toolbar-grp inline-toolbar-grp',
[929] Fix | Delete
ariaRoot: true,
[930] Fix | Delete
ariaRemember: true,
[931] Fix | Delete
items: [ {
[932] Fix | Delete
type: 'toolbar',
[933] Fix | Delete
layout: 'flow',
[934] Fix | Delete
items: toolbarItems
[935] Fix | Delete
} ]
[936] Fix | Delete
} );
[937] Fix | Delete
[938] Fix | Delete
toolbar.bottom = bottom;
[939] Fix | Delete
[940] Fix | Delete
function reposition() {
[941] Fix | Delete
if ( ! currentSelection ) {
[942] Fix | Delete
return this;
[943] Fix | Delete
}
[944] Fix | Delete
[945] Fix | Delete
var scrollX = window.pageXOffset || document.documentElement.scrollLeft,
[946] Fix | Delete
scrollY = window.pageYOffset || document.documentElement.scrollTop,
[947] Fix | Delete
windowWidth = window.innerWidth,
[948] Fix | Delete
windowHeight = window.innerHeight,
[949] Fix | Delete
iframeRect = mceIframe ? mceIframe.getBoundingClientRect() : {
[950] Fix | Delete
top: 0,
[951] Fix | Delete
right: windowWidth,
[952] Fix | Delete
bottom: windowHeight,
[953] Fix | Delete
left: 0,
[954] Fix | Delete
width: windowWidth,
[955] Fix | Delete
height: windowHeight
[956] Fix | Delete
},
[957] Fix | Delete
toolbar = this.getEl(),
[958] Fix | Delete
toolbarWidth = toolbar.offsetWidth,
[959] Fix | Delete
toolbarHeight = toolbar.clientHeight,
[960] Fix | Delete
selection = currentSelection.getBoundingClientRect(),
[961] Fix | Delete
selectionMiddle = ( selection.left + selection.right ) / 2,
[962] Fix | Delete
buffer = 5,
[963] Fix | Delete
spaceNeeded = toolbarHeight + buffer,
[964] Fix | Delete
wpAdminbarBottom = wpAdminbar ? wpAdminbar.getBoundingClientRect().bottom : 0,
[965] Fix | Delete
mceToolbarBottom = mceToolbar ? mceToolbar.getBoundingClientRect().bottom : 0,
[966] Fix | Delete
mceStatusbarTop = mceStatusbar ? windowHeight - mceStatusbar.getBoundingClientRect().top : 0,
[967] Fix | Delete
wpStatusbarTop = wpStatusbar ? windowHeight - wpStatusbar.getBoundingClientRect().top : 0,
[968] Fix | Delete
blockedTop = Math.max( 0, wpAdminbarBottom, mceToolbarBottom, iframeRect.top ),
[969] Fix | Delete
blockedBottom = Math.max( 0, mceStatusbarTop, wpStatusbarTop, windowHeight - iframeRect.bottom ),
[970] Fix | Delete
spaceTop = selection.top + iframeRect.top - blockedTop,
[971] Fix | Delete
spaceBottom = windowHeight - iframeRect.top - selection.bottom - blockedBottom,
[972] Fix | Delete
editorHeight = windowHeight - blockedTop - blockedBottom,
[973] Fix | Delete
className = '',
[974] Fix | Delete
iosOffsetTop = 0,
[975] Fix | Delete
iosOffsetBottom = 0,
[976] Fix | Delete
top, left;
[977] Fix | Delete
[978] Fix | Delete
if ( spaceTop >= editorHeight || spaceBottom >= editorHeight ) {
[979] Fix | Delete
this.scrolling = true;
[980] Fix | Delete
this.hide();
[981] Fix | Delete
this.scrolling = false;
[982] Fix | Delete
return this;
[983] Fix | Delete
}
[984] Fix | Delete
[985] Fix | Delete
// Add offset in iOS to move the menu over the image, out of the way of the default iOS menu.
[986] Fix | Delete
if ( tinymce.Env.iOS && currentSelection.nodeName === 'IMG' ) {
[987] Fix | Delete
iosOffsetTop = 54;
[988] Fix | Delete
iosOffsetBottom = 46;
[989] Fix | Delete
}
[990] Fix | Delete
[991] Fix | Delete
if ( this.bottom ) {
[992] Fix | Delete
if ( spaceBottom >= spaceNeeded ) {
[993] Fix | Delete
className = ' mce-arrow-up';
[994] Fix | Delete
top = selection.bottom + iframeRect.top + scrollY - iosOffsetBottom;
[995] Fix | Delete
} else if ( spaceTop >= spaceNeeded ) {
[996] Fix | Delete
className = ' mce-arrow-down';
[997] Fix | Delete
top = selection.top + iframeRect.top + scrollY - toolbarHeight + iosOffsetTop;
[998] Fix | Delete
}
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function