Commit inicial - WordPress Análisis de Precios Unitarios

- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-11-03 21:04:30 -06:00
commit a22573bf0b
24068 changed files with 4993111 additions and 0 deletions

View File

@@ -0,0 +1,260 @@
/**
* Get the button text based on the status of the tool.
*
* @param {string} status The status of the tool.
* @returns {string} The button text.
*/
function getButtonText( status ) {
let content;
switch ( status ) {
case "Activated":
content = getGetStartedButtonText();
break;
case "Installed":
content = getActivateButtonText();
break;
case "Not installed":
content = getInstallNowButtonText();
break;
default:
content = getLearnMoreButtonText();
}
return content;
}
function getLearnMoreButtonText() {
return '<span>Learn More</span>';
}
function getInstallNowButtonText() {
return '<span>Install Now</span>';
}
function getActivateButtonText() {
return '<span>Activate</span>';
}
function getGetStartedButtonText() {
return '<span>Get Started</span>';
}
/**
* Get the action class for the button based on the status of the tool.
*
* @param {string} status The status of the tool.
* @returns {string} The action class for the button.
*/
function getActionClass( status ) {
let className;
switch ( status ) {
case "Activated":
className = 'tve-action-btn-get-started';
break;
case "Installed":
className = 'tve-action-btn-activate';
break;
case "Not installed":
className = 'tve-action-btn-install-now';
break;
default:
className = 'tve-action-btn-learn-more';
}
return className;
}
/**
* Get the button class based on the status of the tool.
*
* @param {string} status The status of the tool.
* @returns {string} The button class.
*/
function getButtonClass( status ) {
let className;
switch ( status ) {
case "Activated":
//Get Started
className = 'tve-btn-get-started';
break;
case "Installed":
//Activate
className = 'tve-btn-action-activate';
break;
case "Not installed":
//Activate
className = 'tve-btn-install-now';
break;
default:
//install Now or Learn More
className = 'tve-btn-learn-more';
}
return className;
}
/**
* Get the button URI based on the status of the tool.
*
* @param {string} status The status of the tool.
* @param {object} tool The tool object.
* @returns {string} The encoded URI for the button.
*/
function getButtonUri( status, tool ) {
let url;
switch ( status ) {
case "Learn More":
url = tool.get( 'landing_url' );
break;
default:
url = tool.get( 'dashboard_uri' );
}
return encodeURIComponent( url );
}
/**
* Get the HTML for the button based on the tool object.
*
* @param {object} tool The tool object.
* @returns {string} The HTML for the button.
*/
function getButtonHtml( tool ) {
let status = tool.get( 'status' );
let pluginSlug = tool.get( 'plugin_slug' );
const uriData = getButtonUri( status, tool )
return '<div class="growth-tool-action"><button class="tve-btn ' + getButtonClass( status ) + ' ' + getActionClass( status ) + '" data-url="' + uriData + '" data-plugin-slug="' + pluginSlug + '">' + getButtonText( status ) + '</button></div>';
}
/**
* Redirect to the URI specified in the event target's dataset.
*
* @param {Event} event The click event.
* @param {string} target The target window or tab to open the URI.
*/
function redirectToUri( event, target = '_self' ) {
const { target: eventTarget } = event || {};
let element = eventTarget;
while ( element ) {
const { dataset } = element;
if ( dataset && dataset.url ) {
const path = decodeURIComponent( dataset.url );
window.open( path, target );
return;
}
// Move up to the parent element
element = element.parentElement;
}
return false;
}
function updateButtonClassWhileInstalling ( button ) {
// Remove previous classes
if ( button.hasClass('tve-action-btn-install-now') ) {
button.removeClass('tve-action-btn-install-now');
}
// Remove install now design
if ( button.hasClass('tve-btn-info') ) {
button.removeClass('tve-btn-info');
}
// Add new class
if ( !button.hasClass('tve-btn-action-installing') ) {
button.addClass('tve-btn-action-installing');
}
}
function updateButtonClassIfInstallationFailed( button ) {
// Remove previous classes
if ( button.hasClass('tve-btn-action-installing') ) {
button.removeClass('tve-btn-action-installing');
}
// Add new class
if ( !button.hasClass('tve-btn-info') ) {
button.addClass('tve-btn-info');
}
if ( !button.hasClass('tve-action-btn-install-now') ) {
button.addClass('tve-action-btn-install-now');
}
}
/**
* Update the button class after installation.
*
* @param {jQuery} button The button element.
*/
function updateButtonClassAfterInstallation( button ) {
// Remove previous classes
if ( button.hasClass( 'tve-action-btn-install-now' ) ) {
button.removeClass( 'tve-action-btn-install-now' );
}
if ( button.hasClass( 'tve-btn-action-installing' ) ) {
button.removeClass( 'tve-btn-action-installing' );
}
// Add new class
if ( !button.hasClass('tve-btn-action-activating') ) {
button.addClass( 'tve-btn-action-activating' );
}
if ( !button.hasClass( 'tve-btn-action-activating' ) ) {
button.addClass( 'tve-btn-action-activating' );
}
}
/**
* Update the button class after activation.
*
* @param {jQuery} button The button element.
*/
function updateButtonClassAfterActivated( button ) {
// Remove previous classes
if ( button.hasClass( 'tve-btn-info' ) ) {
button.removeClass( 'tve-btn-info' );
}
if ( button.hasClass( 'tve-action-btn-activate' ) ) {
button.removeClass( 'tve-action-btn-activate' );
}
// Add new classes
if ( !button.hasClass( 'tve-btn-get-started' ) ) {
button.addClass( 'tve-btn-get-started' );
}
if ( !button.hasClass( 'tve-action-btn-get-started' ) ) {
button.addClass( 'tve-action-btn-get-started' );
}
}
/**
* Handles errors returned from a fetch response.
* Parses JSON response and rejects promise with error message.
*
* @param {Response} response The fetch response object.
* @returns {Promise} A promise rejected with the error message.
*/
function handleError( response ) {
return response.json().then( errorData => {
return Promise.reject( new Error( errorData.message ) );
});
}
// Export the functions to make them accessible from other files
export {
getButtonText,
getActionClass,
getButtonClass,
getButtonHtml,
redirectToUri,
updateButtonClassWhileInstalling,
updateButtonClassIfInstallationFailed,
updateButtonClassAfterInstallation,
updateButtonClassAfterActivated,
handleError,
getGetStartedButtonText,
getActivateButtonText,
getLearnMoreButtonText,
getInstallNowButtonText
};