mirror of
https://github.com/WordPress/WordPress.git
synced 2024-11-09 20:30:43 +01:00
10177e7fbb
Props andizer, ireneyoast. Fixes #41548. Built from https://develop.svn.wordpress.org/trunk@41314 git-svn-id: http://core.svn.wordpress.org/trunk@41145 1a063a9b-81f0-0310-95a4-ce76da25c4cd
128 lines
3.4 KiB
JavaScript
128 lines
3.4 KiB
JavaScript
/**
|
|
* @summary Handles the addition of the comment form.
|
|
*
|
|
* @since 2.7.0
|
|
*
|
|
* @type {Object}
|
|
*/
|
|
var addComment = {
|
|
/**
|
|
* @summary Retrieves the elements corresponding to the given IDs.
|
|
*
|
|
* @since 2.7.0
|
|
*
|
|
* @param {string} commId The comment ID.
|
|
* @param {string} parentId The parent ID.
|
|
* @param {string} respondId The respond ID.
|
|
* @param {string} postId The post ID.
|
|
* @returns {boolean} Always returns false.
|
|
*/
|
|
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];
|
|
|
|
if ( ! comm || ! respond || ! cancel || ! parent || ! commentForm ) {
|
|
return;
|
|
}
|
|
|
|
t.respondId = respondId;
|
|
postId = postId || false;
|
|
|
|
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 );
|
|
}
|
|
|
|
comm.parentNode.insertBefore( respond, comm.nextSibling );
|
|
if ( post && postId ) {
|
|
post.value = postId;
|
|
}
|
|
parent.value = parentId;
|
|
cancel.style.display = '';
|
|
|
|
/**
|
|
* @summary Puts back the comment, hides the cancel button and removes the onclick event.
|
|
*
|
|
* @returns {boolean} Always returns false.
|
|
*/
|
|
cancel.onclick = function() {
|
|
var t = addComment,
|
|
temp = t.I( 'wp-temp-form-div' ),
|
|
respond = t.I( t.respondId );
|
|
|
|
if ( ! temp || ! respond ) {
|
|
return;
|
|
}
|
|
|
|
t.I( 'comment_parent' ).value = '0';
|
|
temp.parentNode.insertBefore( respond, temp );
|
|
temp.parentNode.removeChild( temp );
|
|
this.style.display = 'none';
|
|
this.onclick = null;
|
|
return false;
|
|
};
|
|
|
|
/*
|
|
* Sets initial focus to the first form focusable element.
|
|
* Uses try/catch 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;
|
|
}
|
|
|
|
} catch( er ) {}
|
|
|
|
return false;
|
|
},
|
|
|
|
/**
|
|
* @summary Returns the object corresponding to the given ID.
|
|
*
|
|
* @since 2.7.0
|
|
*
|
|
* @param {string} id The ID.
|
|
* @returns {Element} The element belonging to the ID.
|
|
*/
|
|
I: function( id ) {
|
|
return document.getElementById( id );
|
|
}
|
|
};
|