]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/js/wplink.js
WordPress 4.4-scripts
[autoinstalls/wordpress.git] / wp-includes / js / wplink.js
index 31489f83570e3078e785064b79e3fe348b8337bf..b5a84aecb7f7862bef50dcab28aae7e6f1dfd976 100644 (file)
@@ -68,7 +68,7 @@ var wpLink;
                                inputs.queryNoticeTextHint.addClass( 'screen-reader-text' ).hide();
                        } );
 
-                       inputs.search.keyup( function() {
+                       inputs.search.on( 'keyup input', function() {
                                var self = this;
 
                                window.clearTimeout( searchTimer );
@@ -77,26 +77,28 @@ var wpLink;
                                }, 500 );
                        });
 
-                       function correctURL() {
-                               var url = $.trim( inputs.url.val() );
-
-                               if ( url && correctedURL !== url && ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( url ) ) {
-                                       inputs.url.val( 'http://' + url );
-                                       correctedURL = url;
-                               }
-                       }
-
                        inputs.url.on( 'paste', function() {
-                               setTimeout( correctURL, 0 );
+                               setTimeout( wpLink.correctURL, 0 );
                        } );
 
-                       inputs.url.on( 'blur', correctURL );
+                       inputs.url.on( 'blur', wpLink.correctURL );
+               },
+
+               // If URL wasn't corrected last time and doesn't start with http:, https:, ? # or /, prepend http://
+               correctURL: function () {
+                       var url = $.trim( inputs.url.val() );
+
+                       if ( url && correctedURL !== url && ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( url ) ) {
+                               inputs.url.val( 'http://' + url );
+                               correctedURL = url;
+                       }
                },
 
                open: function( editorId ) {
-                       var ed;
+                       var ed,
+                               $body = $( document.body );
 
-                       $( document.body ).addClass( 'modal-open' );
+                       $body.addClass( 'modal-open' );
 
                        wpLink.range = null;
 
@@ -111,6 +113,10 @@ var wpLink;
                        this.textarea = $( '#' + window.wpActiveEditor ).get( 0 );
 
                        if ( typeof tinymce !== 'undefined' ) {
+                               // Make sure the link wrapper is the last element in the body,
+                               // or the inline editor toolbar may show above the backdrop.
+                               $body.append( inputs.backdrop, inputs.wrap );
+
                                ed = tinymce.get( wpActiveEditor );
 
                                if ( ed && ! ed.isHidden() ) {
@@ -260,12 +266,24 @@ var wpLink;
                },
 
                getAttrs: function() {
+                       wpLink.correctURL();
+
                        return {
                                href: $.trim( inputs.url.val() ),
                                target: inputs.openInNewTab.prop( 'checked' ) ? '_blank' : ''
                        };
                },
 
+               buildHtml: function(attrs) {
+                       var html = '<a href="' + attrs.href + '"';
+
+                       if ( attrs.target ) {
+                               html += ' target="' + attrs.target + '"';
+                       }
+
+                       return html + '>';
+               },
+
                update: function() {
                        if ( wpLink.isMCE() ) {
                                wpLink.mceUpdate();
@@ -290,14 +308,7 @@ var wpLink;
                                return;
                        }
 
-                       // Build HTML
-                       html = '<a href="' + attrs.href + '"';
-
-                       if ( attrs.target ) {
-                               html += ' target="' + attrs.target + '"';
-                       }
-
-                       html += '>';
+                       html = wpLink.buildHtml(attrs);
 
                        // Insert HTML
                        if ( document.selection && wpLink.range ) {
@@ -354,7 +365,10 @@ var wpLink;
                        }
 
                        link = getLink();
-                       text = inputs.text.val();
+
+                       if ( inputs.wrap.hasClass( 'has-text-field' ) ) {
+                               text = inputs.text.val() || attrs.href;
+                       }
 
                        if ( link ) {
                                if ( text ) {
@@ -368,11 +382,13 @@ var wpLink;
                                editor.dom.setAttribs( link, attrs );
                        } else {
                                if ( text ) {
-                                       editor.selection.setNode( editor.dom.create( 'a', attrs, text ) );
+                                       editor.selection.setNode( editor.dom.create( 'a', attrs, editor.dom.encode( text ) ) );
                                } else {
                                        editor.execCommand( 'mceInsertLink', false, attrs );
                                }
                        }
+
+                       editor.nodeChanged();
                },
 
                updateFields: function( e, li ) {
@@ -443,13 +459,14 @@ var wpLink;
                },
 
                keydown: function( event ) {
-                       var fn, id,
-                               key = $.ui.keyCode;
+                       var fn, id;
 
-                       if ( key.ESCAPE === event.keyCode ) {
+                       // Escape key.
+                       if ( 27 === event.keyCode ) {
                                wpLink.close();
                                event.stopImmediatePropagation();
-                       } else if ( key.TAB === event.keyCode ) {
+                       // Tab key.
+                       } else if ( 9 === event.keyCode ) {
                                id = event.target.id;
 
                                // wp-link-submit must always be the last focusable element in the dialog.
@@ -463,7 +480,8 @@ var wpLink;
                                }
                        }
 
-                       if ( event.keyCode !== key.UP && event.keyCode !== key.DOWN ) {
+                       // Up Arrow and Down Arrow keys.
+                       if ( 38 !== event.keyCode && 40 !== event.keyCode ) {
                                return;
                        }
 
@@ -472,7 +490,8 @@ var wpLink;
                                return;
                        }
 
-                       fn = event.keyCode === key.UP ? 'prev' : 'next';
+                       // Up Arrow key.
+                       fn = 38 === event.keyCode ? 'prev' : 'next';
                        clearInterval( wpLink.keyInterval );
                        wpLink[ fn ]();
                        wpLink.keyInterval = setInterval( wpLink[ fn ], wpLink.keySensitivity );
@@ -480,9 +499,8 @@ var wpLink;
                },
 
                keyup: function( event ) {
-                       var key = $.ui.keyCode;
-
-                       if ( event.which === key.UP || event.which === key.DOWN ) {
+                       // Up Arrow and Down Arrow keys.
+                       if ( 38 === event.keyCode || 40 === event.keyCode ) {
                                clearInterval( wpLink.keyInterval );
                                event.preventDefault();
                        }