File Editor
Directories:
.. (Back)
Files:
accordion.js
accordion.min.js
bookmarklet.js
bookmarklet.min.js
color-picker.js
color-picker.min.js
comment.js
comment.min.js
common.js
common.min.js
custom-background.js
custom-background.min.js
custom-header.js
customize-controls.js
customize-controls.min.js
customize-nav-menus.js
customize-nav-menus.min.js
customize-widgets.js
customize-widgets.min.js
dashboard.js
dashboard.min.js
edit-comments.js
edit-comments.min.js
editor-expand.js
editor-expand.min.js
editor.js
editor.min.js
farbtastic.js
gallery.js
gallery.min.js
image-edit.js
image-edit.min.js
inline-edit-post.js
inline-edit-post.min.js
inline-edit-tax.js
inline-edit-tax.min.js
iris.min.js
language-chooser.js
language-chooser.min.js
link.js
link.min.js
media-gallery.js
media-gallery.min.js
media-upload.js
media-upload.min.js
media.js
media.min.js
nav-menu.js
nav-menu.min.js
password-strength-meter.js
password-strength-meter.min.js
plugin-install.js
plugin-install.min.js
post.js
post.min.js
postbox.js
postbox.min.js
press-this.js
press-this.min.js
revisions.js
revisions.min.js
set-post-thumbnail.js
set-post-thumbnail.min.js
svg-painter.js
svg-painter.min.js
tags-box.js
tags-box.min.js
tags.js
tags.min.js
theme.js
theme.min.js
updates.js
updates.min.js
user-profile.js
user-profile.min.js
user-suggest.js
user-suggest.min.js
widgets.js
widgets.min.js
word-count.js
word-count.min.js
wp-fullscreen-stub.js
wp-fullscreen-stub.min.js
xfn.js
xfn.min.js
Create New File
Create
Edit File: press-this.js
/** * PressThis App * */ ( function( $, window ) { var PressThis = function() { var editor, $mediaList, $mediaThumbWrap, $window = $( window ), $document = $( document ), saveAlert = false, textarea = document.createElement( 'textarea' ), sidebarIsOpen = false, settings = window.wpPressThisConfig || {}, data = window.wpPressThisData || {}, smallestWidth = 128, hasSetFocus = false, catsCache = [], isOffScreen = 'is-off-screen', isHidden = 'is-hidden', offscreenHidden = isOffScreen + ' ' + isHidden, iOS = /iPad|iPod|iPhone/.test( window.navigator.userAgent ), $textEditor = $( '#pressthis' ), textEditor = $textEditor[0], textEditorMinHeight = 600, textLength = 0, transitionEndEvent = ( function() { var style = document.documentElement.style; if ( typeof style.transition !== 'undefined' ) { return 'transitionend'; } if ( typeof style.WebkitTransition !== 'undefined' ) { return 'webkitTransitionEnd'; } return false; }() ); /* *************************************************************** * HELPER FUNCTIONS *************************************************************** */ /** * Emulates our PHP __() gettext function, powered by the strings exported in pressThisL10n. * * @param key string Key of the string to be translated, as found in pressThisL10n. * @returns string Original or translated string, or empty string if no key. */ function __( key ) { if ( key && window.pressThisL10n ) { return window.pressThisL10n[key] || key; } return key || ''; } /** * Strips HTML tags * * @param string string Text to have the HTML tags striped out of. * @returns string Stripped text. */ function stripTags( string ) { string = string || ''; return string .replace( /<!--[\s\S]*?(-->|$)/g, '' ) .replace( /<(script|style)[^>]*>[\s\S]*?(<\/\1>|$)/ig, '' ) .replace( /<\/?[a-z][\s\S]*?(>|$)/ig, '' ); } /** * Strip HTML tags and convert HTML entities. * * @param text string Text. * @returns string Sanitized text. */ function sanitizeText( text ) { var _text = stripTags( text ); try { textarea.innerHTML = _text; _text = stripTags( textarea.value ); } catch ( er ) {} return _text; } /** * Allow only HTTP or protocol relative URLs. * * @param url string The URL. * @returns string Processed URL. */ function checkUrl( url ) { url = $.trim( url || '' ); if ( /^(?:https?:)?\/\//.test( url ) ) { url = stripTags( url ); return url.replace( /["\\]+/g, '' ); } return ''; } /** * Show UX spinner */ function showSpinner() { $( '.spinner' ).addClass( 'is-active' ); $( '.post-actions button' ).attr( 'disabled', 'disabled' ); } /** * Hide UX spinner */ function hideSpinner() { $( '.spinner' ).removeClass( 'is-active' ); $( '.post-actions button' ).removeAttr( 'disabled' ); } function textEditorResize( reset ) { var pageYOffset, height; if ( editor && ! editor.isHidden() ) { return; } reset = ( reset === 'reset' ) || ( textLength && textLength > textEditor.value.length ); height = textEditor.style.height; if ( reset ) { pageYOffset = window.pageYOffset; textEditor.style.height = 'auto'; textEditor.style.height = Math.max( textEditor.scrollHeight, textEditorMinHeight ) + 'px'; window.scrollTo( window.pageXOffset, pageYOffset ); } else if ( parseInt( textEditor.style.height, 10 ) < textEditor.scrollHeight ) { textEditor.style.height = textEditor.scrollHeight + 'px'; } textLength = textEditor.value.length; } function mceGetCursorOffset() { if ( ! editor ) { return false; } var node = editor.selection.getNode(), range, view, offset; if ( editor.wp && editor.wp.getView && ( view = editor.wp.getView( node ) ) ) { offset = view.getBoundingClientRect(); } else { range = editor.selection.getRng(); try { offset = range.getClientRects()[0]; } catch( er ) {} if ( ! offset ) { offset = node.getBoundingClientRect(); } } return offset.height ? offset : false; } // Make sure the caret is always visible. function mceKeyup( event ) { var VK = window.tinymce.util.VK, key = event.keyCode; // Bail on special keys. if ( key <= 47 && ! ( key === VK.SPACEBAR || key === VK.ENTER || key === VK.DELETE || key === VK.BACKSPACE || key === VK.UP || key === VK.LEFT || key === VK.DOWN || key === VK.UP ) ) { return; // OS keys, function keys, num lock, scroll lock } else if ( ( key >= 91 && key <= 93 ) || ( key >= 112 && key <= 123 ) || key === 144 || key === 145 ) { return; } mceScroll( key ); } function mceScroll( key ) { var cursorTop, cursorBottom, editorBottom, offset = mceGetCursorOffset(), bufferTop = 50, bufferBottom = 65, VK = window.tinymce.util.VK; if ( ! offset ) { return; } cursorTop = offset.top + editor.iframeElement.getBoundingClientRect().top; cursorBottom = cursorTop + offset.height; cursorTop = cursorTop - bufferTop; cursorBottom = cursorBottom + bufferBottom; editorBottom = $window.height(); // Don't scroll if the node is taller than the visible part of the editor if ( editorBottom < offset.height ) { return; } if ( cursorTop < 0 && ( key === VK.UP || key === VK.LEFT || key === VK.BACKSPACE ) ) { window.scrollTo( window.pageXOffset, cursorTop + window.pageYOffset ); } else if ( cursorBottom > editorBottom ) { window.scrollTo( window.pageXOffset, cursorBottom + window.pageYOffset - editorBottom ); } } /** * Replace emoji images with chars and sanitize the text content. */ function getTitleText() { var $element = $( '#title-container' ); $element.find( 'img.emoji' ).each( function() { var $image = $( this ); $image.replaceWith( $( '<span>' ).text( $image.attr( 'alt' ) ) ); }); return sanitizeText( $element.text() ); } /** * Prepare the form data for saving. */ function prepareFormData() { var $form = $( '#pressthis-form' ), $input = $( '<input type="hidden" name="post_category[]" value="">' ); editor && editor.save(); $( '#post_title' ).val( getTitleText() ); // Make sure to flush out the tags with tagBox before saving if ( window.tagBox ) { $( 'div.tagsdiv' ).each( function() { window.tagBox.flushTags( this, false, 1 ); } ); } // Get selected categories $( '.categories-select .category' ).each( function( i, element ) { var $cat = $( element ); if ( $cat.hasClass( 'selected' ) ) { // Have to append a node as we submit the actual form on preview $form.append( $input.clone().val( $cat.attr( 'data-term-id' ) || '' ) ); } }); } /** * Submit the post form via AJAX, and redirect to the proper screen if published vs saved as a draft. * * @param action string publish|draft */ function submitPost( action ) { var data; saveAlert = false; showSpinner(); if ( 'publish' === action ) { $( '#post_status' ).val( 'publish' ); } prepareFormData(); data = $( '#pressthis-form' ).serialize(); $.ajax( { type: 'post', url: window.ajaxurl, data: data }).always( function() { hideSpinner(); clearNotices(); $( '.publish-button' ).removeClass( 'is-saving' ); }).done( function( response ) { if ( ! response.success ) { renderError( response.data.errorMessage ); } else if ( response.data.redirect ) { if ( window.opener && ( settings.redirInParent || response.data.force ) ) { try { window.opener.location.href = response.data.redirect; window.setTimeout( function() { window.self.close(); }, 200 ); } catch( er ) { window.location.href = response.data.redirect; } } else { window.location.href = response.data.redirect; } } }).fail( function() { renderError( __( 'serverError' ) ); }); } /** * Inserts the media a user has selected from the presented list inside the editor, as an image or embed, based on type * * @param type string img|embed * @param src string Source URL * @param link string Optional destination link, for images (defaults to src) */ function insertSelectedMedia( $element ) { var src, link, newContent = ''; src = checkUrl( $element.attr( 'data-wp-src' ) || '' ); link = checkUrl( data.u ); if ( $element.hasClass( 'is-image' ) ) { if ( ! link ) { link = src; } newContent = '<a href="' + link + '"><img class="alignnone size-full" src="' + src + '" alt="" /></a>'; } else { newContent = '[embed]' + src + '[/embed]'; } if ( editor && ! editor.isHidden() ) { if ( ! hasSetFocus ) { editor.setContent( '<p>' + newContent + '</p>' + editor.getContent() ); } else { editor.execCommand( 'mceInsertContent', false, newContent ); } } else if ( window.QTags ) { window.QTags.insertContent( newContent ); } } /** * Save a new user-generated category via AJAX */ function saveNewCategory() { var data, name = $( '#new-category' ).val(); if ( ! name ) { return; } data = { action: 'press-this-add-category', post_id: $( '#post_ID' ).val() || 0, name: name, new_cat_nonce: $( '#_ajax_nonce-add-category' ).val() || '', parent: $( '#new-category-parent' ).val() || 0 }; $.post( window.ajaxurl, data, function( response ) { if ( ! response.success ) { renderError( response.data.errorMessage ); } else { var $parent, $ul, $wrap = $( 'ul.categories-select' ); $.each( response.data, function( i, newCat ) { var $node = $( '<li>' ).append( $( '<div class="category selected" tabindex="0" role="checkbox" aria-checked="true">' ) .attr( 'data-term-id', newCat.term_id ) .text( newCat.name ) ); if ( newCat.parent ) { if ( ! $ul || ! $ul.length ) { $parent = $wrap.find( 'div[data-term-id="' + newCat.parent + '"]' ).parent(); $ul = $parent.find( 'ul.children:first' ); if ( ! $ul.length ) { $ul = $( '<ul class="children">' ).appendTo( $parent ); } } $ul.prepend( $node ); } else { $wrap.prepend( $node ); } $node.focus(); } ); refreshCatsCache(); } } ); } /* *************************************************************** * RENDERING FUNCTIONS *************************************************************** */ /** * Hide the form letting users enter a URL to be scanned, if a URL was already passed. */ function renderToolsVisibility() { if ( data.hasData ) { $( '#scanbar' ).hide(); } } /** * Render error notice * * @param msg string Notice/error message * @param error string error|notice CSS class for display */ function renderNotice( msg, error ) { var $alerts = $( '.editor-wrapper div.alerts' ), className = error ? 'is-error' : 'is-notice'; $alerts.append( $( '<p class="alert ' + className + '">' ).text( msg ) ); } /** * Render error notice * * @param msg string Error message */ function renderError( msg ) { renderNotice( msg, true ); } function clearNotices() { $( 'div.alerts' ).empty(); } /** * Render notices on page load, if any already */ function renderStartupNotices() { // Render errors sent in the data, if any if ( data.errors ) { $.each( data.errors, function( i, msg ) { renderError( msg ); } ); } } /** * Add an image to the list of found images. */ function addImg( src, displaySrc, i ) { var $element = $mediaThumbWrap.clone().addClass( 'is-image' ); $element.attr( 'data-wp-src', src ).css( 'background-image', 'url(' + displaySrc + ')' ) .find( 'span' ).text( __( 'suggestedImgAlt' ).replace( '%d', i + 1 ) ); $mediaList.append( $element ); } /** * Render the detected images and embed for selection, if any */ function renderDetectedMedia() { var found = 0; $mediaList = $( 'ul.media-list' ); $mediaThumbWrap = $( '<li class="suggested-media-thumbnail" tabindex="0"><span class="screen-reader-text"></span></li>' ); if ( data._embeds ) { $.each( data._embeds, function ( i, src ) { var displaySrc = '', cssClass = '', $element = $mediaThumbWrap.clone().addClass( 'is-embed' ); src = checkUrl( src ); if ( src.indexOf( 'youtube.com/' ) > -1 ) { displaySrc = 'https://i.ytimg.com/vi/' + src.replace( /.+v=([^&]+).*/, '$1' ) + '/hqdefault.jpg'; cssClass += ' is-video'; } else if ( src.indexOf( 'youtu.be/' ) > -1 ) { displaySrc = 'https://i.ytimg.com/vi/' + src.replace( /\/([^\/])$/, '$1' ) + '/hqdefault.jpg'; cssClass += ' is-video'; } else if ( src.indexOf( 'dailymotion.com' ) > -1 ) { displaySrc = src.replace( '/video/', '/thumbnail/video/' ); cssClass += ' is-video'; } else if ( src.indexOf( 'soundcloud.com' ) > -1 ) { cssClass += ' is-audio'; } else if ( src.indexOf( 'twitter.com' ) > -1 ) { cssClass += ' is-tweet'; } else { cssClass += ' is-video'; } $element.attr( 'data-wp-src', src ).find( 'span' ).text( __( 'suggestedEmbedAlt' ).replace( '%d', i + 1 ) ); if ( displaySrc ) { $element.css( 'background-image', 'url(' + displaySrc + ')' ); } $mediaList.append( $element ); found++; } ); } if ( data._images ) { $.each( data._images, function( i, src ) { var displaySrc, img = new Image(); src = checkUrl( src ); displaySrc = src.replace( /^(http[^\?]+)(\?.*)?$/, '$1' ); if ( src.indexOf( 'files.wordpress.com/' ) > -1 ) { displaySrc = displaySrc.replace( /\?.*$/, '' ) + '?w=' + smallestWidth; } else if ( src.indexOf( 'gravatar.com/' ) > -1 ) { displaySrc = displaySrc.replace( /\?.*$/, '' ) + '?s=' + smallestWidth; } else { displaySrc = src; } img.onload = function() { if ( ( img.width && img.width < 256 ) || ( img.height && img.height < 128 ) ) { return; } addImg( src, displaySrc, i ); }; img.src = src; found++; } ); } if ( found ) { $( '.media-list-container' ).addClass( 'has-media' ); } } /* *************************************************************** * MONITORING FUNCTIONS *************************************************************** */ /** * Interactive navigation behavior for the options modal (post format, tags, categories) */ function monitorOptionsModal() { var $postOptions = $( '.post-options' ), $postOption = $( '.post-option' ), $settingModal = $( '.setting-modal' ), $modalClose = $( '.modal-close' ); $postOption.on( 'click', function() { var index = $( this ).index(), $targetSettingModal = $settingModal.eq( index ); $postOptions.addClass( isOffScreen ) .one( transitionEndEvent, function() { $( this ).addClass( isHidden ); } ); $targetSettingModal.removeClass( offscreenHidden ) .one( transitionEndEvent, function() { $( this ).find( '.modal-close' ).focus(); } ); } ); $modalClose.on( 'click', function() { var $targetSettingModal = $( this ).parent(), index = $targetSettingModal.index(); $postOptions.removeClass( offscreenHidden ); $targetSettingModal.addClass( isOffScreen ); if ( transitionEndEvent ) { $targetSettingModal.one( transitionEndEvent, function() { $( this ).addClass( isHidden ); $postOption.eq( index - 1 ).focus(); } ); } else { setTimeout( function() { $targetSettingModal.addClass( isHidden ); $postOption.eq( index - 1 ).focus(); }, 350 ); } } ); } /** * Interactive behavior for the sidebar toggle, to show the options modals */ function openSidebar() { sidebarIsOpen = true; $( '.options' ).removeClass( 'closed' ).addClass( 'open' ); $( '.press-this-actions, #scanbar' ).addClass( isHidden ); $( '.options-panel-back' ).removeClass( isHidden ); $( '.options-panel' ).removeClass( offscreenHidden ) .one( transitionEndEvent, function() { $( '.post-option:first' ).focus(); } ); } function closeSidebar() { sidebarIsOpen = false; $( '.options' ).removeClass( 'open' ).addClass( 'closed' ); $( '.options-panel-back' ).addClass( isHidden ); $( '.press-this-actions, #scanbar' ).removeClass( isHidden ); $( '.options-panel' ).addClass( isOffScreen ) .one( transitionEndEvent, function() { $( this ).addClass( isHidden ); // Reset to options list $( '.post-options' ).removeClass( offscreenHidden ); $( '.setting-modal').addClass( offscreenHidden ); }); } /** * Interactive behavior for the post title's field placeholder */ function monitorPlaceholder() { var $titleField = $( '#title-container' ), $placeholder = $( '.post-title-placeholder' ); $titleField.on( 'focus', function() { $placeholder.addClass( 'is-hidden' ); }).on( 'blur', function() { if ( ! $titleField.text() && ! $titleField.html() ) { $placeholder.removeClass( 'is-hidden' ); } }).on( 'keyup', function() { saveAlert = true; }).on( 'paste', function( event ) { var text, range, clipboard = event.originalEvent.clipboardData || window.clipboardData; if ( clipboard ) { try{ text = clipboard.getData( 'Text' ) || clipboard.getData( 'text/plain' ); if ( text ) { text = $.trim( text.replace( /\s+/g, ' ' ) ); if ( window.getSelection ) { range = window.getSelection().getRangeAt(0); if ( range ) { if ( ! range.collapsed ) { range.deleteContents(); } range.insertNode( document.createTextNode( text ) ); } } else if ( document.selection ) { range = document.selection.createRange(); if ( range ) { range.text = text; } } } } catch ( er ) {} event.preventDefault(); } saveAlert = true; setTimeout( function() { $titleField.text( getTitleText() ); }, 50 ); }); if ( $titleField.text() || $titleField.html() ) { $placeholder.addClass('is-hidden'); } } function toggleCatItem( $element ) { if ( $element.hasClass( 'selected' ) ) { $element.removeClass( 'selected' ).attr( 'aria-checked', 'false' ); } else { $element.addClass( 'selected' ).attr( 'aria-checked', 'true' ); } } function monitorCatList() { $( '.categories-select' ).on( 'click.press-this keydown.press-this', function( event ) { var $element = $( event.target ); if ( $element.is( 'div.category' ) ) { if ( event.type === 'keydown' && event.keyCode !== 32 ) { return; } toggleCatItem( $element ); event.preventDefault(); } }); } function splitButtonClose() { $( '.split-button' ).removeClass( 'is-open' ); $( '.split-button-toggle' ).attr( 'aria-expanded', 'false' ); } /* *************************************************************** * PROCESSING FUNCTIONS *************************************************************** */ /** * Calls all the rendring related functions to happen on page load */ function render(){ // We're on! renderToolsVisibility(); renderDetectedMedia(); renderStartupNotices(); if ( window.tagBox ) { window.tagBox.init(); } // iOS doesn't fire click events on "standard" elements without this... if ( iOS ) { $( document.body ).css( 'cursor', 'pointer' ); } } /** * Set app events and other state monitoring related code. */ function monitor() { var $splitButton = $( '.split-button' ); $document.on( 'tinymce-editor-init', function( event, ed ) { editor = ed; editor.on( 'nodechange', function() { hasSetFocus = true; }); editor.on( 'focus', function() { splitButtonClose(); }); editor.on( 'show', function() { setTimeout( function() { editor.execCommand( 'wpAutoResize' ); }, 300 ); }); editor.on( 'hide', function() { setTimeout( function() { textEditorResize( 'reset' ); }, 100 ); }); editor.on( 'keyup', mceKeyup ); editor.on( 'undo redo', mceScroll ); }).on( 'click.press-this keypress.press-this', '.suggested-media-thumbnail', function( event ) { if ( event.type === 'click' || event.keyCode === 13 ) { insertSelectedMedia( $( this ) ); } }).on( 'click.press-this', function( event ) { if ( ! $( event.target ).closest( 'button' ).hasClass( 'split-button-toggle' ) ) { splitButtonClose(); } }); // Publish, Draft and Preview buttons $( '.post-actions' ).on( 'click.press-this', function( event ) { var location, $target = $( event.target ), $button = $target.closest( 'button' ); if ( $button.length ) { if ( $button.hasClass( 'draft-button' ) ) { $( '.publish-button' ).addClass( 'is-saving' ); submitPost( 'draft' ); } else if ( $button.hasClass( 'publish-button' ) ) { $button.addClass( 'is-saving' ); if ( window.history.replaceState ) { location = window.location.href; location += ( location.indexOf( '?' ) !== -1 ) ? '&' : '?'; location += 'wp-press-this-reload=true'; window.history.replaceState( null, null, location ); } submitPost( 'publish' ); } else if ( $button.hasClass( 'preview-button' ) ) { prepareFormData(); window.opener && window.opener.focus(); $( '#wp-preview' ).val( 'dopreview' ); $( '#pressthis-form' ).attr( 'target', '_blank' ).submit().attr( 'target', '' ); $( '#wp-preview' ).val( '' ); } else if ( $button.hasClass( 'standard-editor-button' ) ) { $( '.publish-button' ).addClass( 'is-saving' ); $( '#pt-force-redirect' ).val( 'true' ); submitPost( 'draft' ); } else if ( $button.hasClass( 'split-button-toggle' ) ) { if ( $splitButton.hasClass( 'is-open' ) ) { $splitButton.removeClass( 'is-open' ); $button.attr( 'aria-expanded', 'false' ); } else { $splitButton.addClass( 'is-open' ); $button.attr( 'aria-expanded', 'true' ); } } } }); monitorOptionsModal(); monitorPlaceholder(); monitorCatList(); $( '.options' ).on( 'click.press-this', function() { if ( $( this ).hasClass( 'open' ) ) { closeSidebar(); } else { openSidebar(); } }); // Close the sidebar when focus moves outside of it. $( '.options-panel, .options-panel-back' ).on( 'focusout.press-this', function() { setTimeout( function() { var node = document.activeElement, $node = $( node ); if ( sidebarIsOpen && node && ! $node.hasClass( 'options-panel-back' ) && ( node.nodeName === 'BODY' || ( ! $node.closest( '.options-panel' ).length && ! $node.closest( '.options' ).length ) ) ) { closeSidebar(); } }, 50 ); }); $( '#post-formats-select input' ).on( 'change', function() { var $this = $( this ); if ( $this.is( ':checked' ) ) { $( '#post-option-post-format' ).text( $( 'label[for="' + $this.attr( 'id' ) + '"]' ).text() || '' ); } } ); $window.on( 'beforeunload.press-this', function() { if ( saveAlert || ( editor && editor.isDirty() ) ) { return __( 'saveAlert' ); } } ).on( 'resize.press-this', function() { if ( ! editor || editor.isHidden() ) { textEditorResize( 'reset' ); } }); $( 'button.add-cat-toggle' ).on( 'click.press-this', function() { var $this = $( this ); $this.toggleClass( 'is-toggled' ); $this.attr( 'aria-expanded', 'false' === $this.attr( 'aria-expanded' ) ? 'true' : 'false' ); $( '.setting-modal .add-category, .categories-search-wrapper' ).toggleClass( 'is-hidden' ); } ); $( 'button.add-cat-submit' ).on( 'click.press-this', saveNewCategory ); $( '.categories-search' ).on( 'keyup.press-this', function() { var search = $( this ).val().toLowerCase() || ''; // Don't search when less thasn 3 extended ASCII chars if ( /[\x20-\xFF]+/.test( search ) && search.length < 2 ) { return; } $.each( catsCache, function( i, cat ) { cat.node.removeClass( 'is-hidden searched-parent' ); } ); if ( search ) { $.each( catsCache, function( i, cat ) { if ( cat.text.indexOf( search ) === -1 ) { cat.node.addClass( 'is-hidden' ); } else { cat.parents.addClass( 'searched-parent' ); } } ); } } ); $textEditor.on( 'focus.press-this input.press-this propertychange.press-this', textEditorResize ); return true; } function refreshCatsCache() { $( '.categories-select' ).find( 'li' ).each( function() { var $this = $( this ); catsCache.push( { node: $this, parents: $this.parents( 'li' ), text: $this.children( '.category' ).text().toLowerCase() } ); } ); } // Let's go! $document.ready( function() { render(); monitor(); refreshCatsCache(); }); // Expose public methods? return { renderNotice: renderNotice, renderError: renderError }; }; window.wp = window.wp || {}; window.wp.pressThis = new PressThis(); }( jQuery, window ));
Save Changes
Rename File
Rename