X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/6c8f14c09105d0afa4c1574215c59b5021040e76..9441756a895fb4fdc4bcf20e0d228cef622663ca:/wp-includes/js/comment-reply.js diff --git a/wp-includes/js/comment-reply.js b/wp-includes/js/comment-reply.js index 20154253..184726d3 100644 --- a/wp-includes/js/comment-reply.js +++ b/wp-includes/js/comment-reply.js @@ -1,48 +1,96 @@ +var addComment = { + moveForm: function( commId, parentId, respondId, postId ) { + var div, element, style, cssHidden, + t = this, + comm = t.I( commId ), + respond = t.I( respondId ), + cancel = t.I( 'cancel-comment-reply-link' ), + parent = t.I( 'comment_parent' ), + post = t.I( 'comment_post_ID' ), + commentForm = respond.getElementsByTagName( 'form' )[0]; -addComment = { - moveForm : function(commId, parentId, respondId, postId) { - var t = this, div, comm = t.I(commId), respond = t.I(respondId), cancel = t.I('cancel-comment-reply-link'), parent = t.I('comment_parent'), post = t.I('comment_post_ID'); - - if ( ! comm || ! respond || ! cancel || ! parent ) + if ( ! comm || ! respond || ! cancel || ! parent || ! commentForm ) { return; + } t.respondId = respondId; postId = postId || false; - if ( ! t.I('wp-temp-form-div') ) { - div = document.createElement('div'); + if ( ! t.I( 'wp-temp-form-div' ) ) { + div = document.createElement( 'div' ); div.id = 'wp-temp-form-div'; div.style.display = 'none'; - respond.parentNode.insertBefore(div, respond); + respond.parentNode.insertBefore( div, respond ); } - comm.parentNode.insertBefore(respond, comm.nextSibling); - if ( post && postId ) + comm.parentNode.insertBefore( respond, comm.nextSibling ); + if ( post && postId ) { post.value = postId; + } parent.value = parentId; cancel.style.display = ''; cancel.onclick = function() { - var t = addComment, temp = t.I('wp-temp-form-div'), respond = t.I(t.respondId); + var t = addComment, + temp = t.I( 'wp-temp-form-div' ), + respond = t.I( t.respondId ); - if ( ! temp || ! respond ) + if ( ! temp || ! respond ) { return; + } - t.I('comment_parent').value = '0'; - temp.parentNode.insertBefore(respond, temp); - temp.parentNode.removeChild(temp); + t.I( 'comment_parent' ).value = '0'; + temp.parentNode.insertBefore( respond, temp ); + temp.parentNode.removeChild( temp ); this.style.display = 'none'; this.onclick = null; return false; - } + }; + + /* + * Set initial focus to the first form focusable element. + * Try/catch used just to avoid errors in IE 7- which return visibility + * 'inherit' when the visibility value is inherited from an ancestor. + */ + try { + for ( var i = 0; i < commentForm.elements.length; i++ ) { + element = commentForm.elements[i]; + cssHidden = false; + + // Modern browsers. + if ( 'getComputedStyle' in window ) { + style = window.getComputedStyle( element ); + // IE 8. + } else if ( document.documentElement.currentStyle ) { + style = element.currentStyle; + } + + /* + * For display none, do the same thing jQuery does. For visibility, + * check the element computed style since browsers are already doing + * the job for us. In fact, the visibility computed style is the actual + * computed value and already takes into account the element ancestors. + */ + if ( ( element.offsetWidth <= 0 && element.offsetHeight <= 0 ) || style.visibility === 'hidden' ) { + cssHidden = true; + } + + // Skip form elements that are hidden or disabled. + if ( 'hidden' === element.type || element.disabled || cssHidden ) { + continue; + } + + element.focus(); + // Stop after the first focusable element. + break; + } - try { t.I('comment').focus(); } - catch(e) {} + } catch( er ) {} return false; }, - I : function(e) { - return document.getElementById(e); + I: function( id ) { + return document.getElementById( id ); } -} +};