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,7 @@
/*
jQuery Masked Input Plugin
Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com)
Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
Version: 1.4.1
*/
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof a?(b="number"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger("unmask")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a<g.placeholder.length?a:0)}function q(a){for(;++a<n&&!j[a];);return a}function r(a){for(;--a>=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(o&&o.length&&o.length>a.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.begin<l&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}else{for(A(!0);b.begin<n&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}h()}function v(){A(),B.val()!=E&&B.change()}function w(a){if(!B.prop("readonly")){var b,c,e,f=a.which||a.keyCode;o=B.val(),8===f||46===f||d&&127===f?(b=B.caret(),c=b.begin,e=b.end,e-c===0&&(c=46!==f?r(c):e=q(c-1),e=46===f?q(e):e),y(c,e),s(c,e-1),a.preventDefault()):13===f?v.call(this,a):27===f&&(B.val(E),B.caret(0,A()),a.preventDefault())}}function x(b){if(!B.prop("readonly")){var c,d,e,g=b.which||b.keyCode,i=B.caret();if(!(b.ctrlKey||b.altKey||b.metaKey||32>g)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++<e.length;)if(c=e.charAt(d-1),j[b].test(c)){C[b]=c,f=b;break}if(d>e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){B.get(0)===document.activeElement&&(z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a))},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})});

View File

@@ -0,0 +1,333 @@
(function($){
"use strict";
if ( !window.bizpanda ) window.bizpanda = {};
window.bizpanda.debugger = window.bizpanda.debugger || {
init: function(){
var self = this;
$.pandalocker.hooks.add( 'opanda-cancel', function( identity, api, sender, sernderName, value ){
self.highlightLockedContent( identity, api, sender, sernderName, value );
});
},
highlightLockedContent: function( identity, api, sender ) {
if ( !identity.content ) return;
var self = this;
identity.content.addClass('bp-content-to-debug');
var $bracket = $("<div class='bp-debugger-bracket'></div>");
$bracket.appendTo( identity.content );
var $label = $("<div class='bp-debugger-label'><strong>Debug:</strong> it\'s the locked content, but now it's revealed. <a href='#' class='bp-why'>Why?</a></div>");
var $bracketTop = $("<div class='bp-debugger-bracket-top'></div>");
var $bracketBottom = $("<div class='bp-debugger-bracket-bottom'></div>");
$label.appendTo(identity.content);
$bracketTop.appendTo(identity.content);
$bracketBottom.appendTo(identity.content);
$label.find(".bp-why").click(function(){
self.explain( identity, api, sender, 'unlocked' );
return false;
});
},
explain: function( identity, api, sender ) {
if ( !identity.content ) return;
if ( identity.content.hasClass('bp-explained') ) {
identity.content.find('.bp-debugger-reason').hide();
identity.content.removeClass('bp-explained');
} else {
identity.content.addClass('bp-explained');
var $phare = $('<div></div>');
var $details = null;
var phare = 'The content is revealed due to ';
if ( 'visibility' === sender ) {
phare = phare + 'the <strong>Visibility Conditions</strong>.';
$details = this.explainVisibilityConditions( identity, api );
} else if ( 'provider' === sender ) {
phare = phare + 'that the user unlocked it <strong>by the standard way</strong>. Clear the cookies/local storage of your browser to see the locker again, or open this page in a private tab.';
$details = this.explainStandartWay( identity, api );
} else if ( 'ie7' === sender ) {
phare = phare + 'that the plugin does not work correctly in <strong>IE7</strong>.';
} else if ( 'mobile' === sender ) {
phare = phare + 'that the locker is <strong>hidden for mobile</strong> devices.';
} else {
phare = phare + ' unknown reasons.';
}
$phare.html(phare);
var $reason = $("<div class='bp-debugger-reason'></div>");
$reason.hide();
$reason.append($phare);
if ( $details ) $reason.append($details);
identity.content.prepend($reason);
$reason.fadeIn(200);
}
},
explainVisibilityConditions: function( identity, api ) {
if ( !api || !api.options || !api.options.locker || !api.options.locker.visibility ) return false;
var visibility = api.options.locker.visibility;
this.visibilityService = new $.pandalocker.services.visibility();
var $wrap = $("<div class='bp-debugger-vc-wrap'></div>");
for ( var i in visibility ) {
var fitler = visibility[i];
if ( !fitler.conditions ) continue;
var $filter = $("<div class='bp-debugger-vc-filter'><div class='bp-filter-type'></div><div class='bp-filter-container'></div></div>");
$filter.appendTo($wrap);
var filterType = null;
if ( fitler.type === 'showif' ) {
filterType = 'Show Locker IF';
} else {
filterType = 'Hide Locker IF';
}
$filter.find('.bp-filter-type').html(filterType);
if ( this.visibilityService.matchFilter(fitler) ) {
$filter.addClass('bp-passed');
} else {
$filter.addClass('bp-notpassed');
}
for ( var n in fitler.conditions ) {
var scope = fitler.conditions[n];
if ( !scope.conditions ) continue;
var $scope = $("<div class='bp-debugger-vc-scope'><div class='bp-vc-and'>and</div><div class='bp-scope-container'></div></div>");
$scope.appendTo($filter.find(".bp-filter-container"));
if ( this.visibilityService.matchScope(scope) ) {
$scope.addClass('bp-passed');
} else {
$scope.addClass('bp-notpassed');
}
for ( var k in scope.conditions ) {
var condition = scope.conditions[k];
var parameter = condition.param;
var type = condition.type || 'text';
var $condition = $("<div class='bp-debugger-vc-condition'><div class='bp-vc-or'>or</div><div class='bp-condition-container'></div></div>");
$condition.appendTo($scope.find(".bp-scope-container"));
var html = null;
var provider = this.visibilityService.getValueProvider( parameter );
if ( !provider ) {
html = '[error]: the value provider "%s" not found.'.replace('%s', parameter);
$condition.html(html);
continue;
}
var currentValue = provider.getValue( condition );
if ( currentValue === null ) {
html = '[error]: the value returned from the provider "%s" equals to null.'.replace('%s', parameter);
$condition.html(html);
continue;
}
currentValue = this.visibilityService.castValue( currentValue, type );
if ( type === 'date' ) currentValue = this.formatDate( currentValue );
var html = '[{param}] {operator} {value} <span class="bp-current">current = <strong>{current}</strong></span>';
html = html.replace('{param}', parameter);
html = html.replace('{operator}', this.getVcOperatorName( condition ) );
html = html.replace('{value}', this.getVcValue( condition ) );
html = html.replace('{current}', currentValue );
$condition.find('.bp-condition-container').append(html);
if ( this.visibilityService.matchCondition(condition) ) {
$condition.addClass('bp-passed');
} else {
$condition.addClass('bp-notpassed');
}
}
}
}
var $description = $("<div class='bp-vc-description'>Below are the conditions applied to this locker.</div>");
$wrap.prepend( $description );
return $wrap;
},
getVcOperatorName: function( condition ) {
var operator = condition.operator;
if ( operator === 'equals' ) return '=';
if ( operator === 'notequal' ) return '<>';
if ( operator === 'greater' ) return '>';
if ( operator === 'less' ) return '<';
if ( operator === 'older' ) return '>';
if ( operator === 'younger' ) return '<';
if ( operator === 'contains' ) return 'contains';
if ( operator === 'notcontain' ) return 'does not contain';
if ( operator === 'between' ) return 'between';
return operator;
},
getVcValue: function( condition ) {
var value = condition.value;
var operator = condition.operator;
var type = condition.type;
var converToRange = (type === 'date' && (operator === 'equals' || operator === 'notequal'));
value = this.visibilityService.castValue( value, type, converToRange ? 'range' : null );
if ( condition.operator === 'between' ) {
if ( condition.type === 'date' ) {
return '<strong>' + this.formatDate( value.start ) + '</strong> and <strong>' + this.formatDate( value.end ) + '</strong>';
} else {
return '<strong>' + value.start + '</strong> and <strong>' + value.end + '</strong>';
}
} else {
if ( condition.type === 'date' ) {
if ( value.range ) {
return '<strong>' + this.formatDate( value.start ) + '</strong> and <strong>' + this.formatDate( value.end ) + '</strong>';
} else {
return '<strong>' + this.formatDate( value ) + '</strong>';
}
} else {
return '<strong>' + value + '</strong>';
}
}
},
formatDate: function( timestamp ) {
var date = new Date(timestamp);
var seconds = date.getSeconds();
var minutes = date.getMinutes();
var hours = date.getHours();
var day = date.getDate();
if ( day < 10 ) day = '0' + day;
var month = date.getMonth();
if ( month < 10 ) month = '0' + month;
var year = date.getFullYear();
return day + '.' + month + '.' + year + ' ' + hours + ':' + minutes + ':' + seconds;
},
explainStandartWay: function( identity, api ) {
if ( !api || !api.options || !api.options.locker ) return false;
var $wrap = $("<div class='bp-debugger-sv-wrap'>Or click here: </div>");
var $button = $("<a href='#' class='bp-debugger-btn'>Reset Locker Data</a>");
$button.appendTo($wrap);
$button.click(function(){
if ( window.localStorage ) {
for( var i=0, len = window.localStorage.length; i < len; i++) {
var key = window.localStorage.key(i);
if (/^(page|opanda)_[a-z0-9]+_hash/.test(key) ) {
window.localStorage.removeItem(key);
}
}
}
window.localStorage.removeItem('scope_global');
var cookies = document.cookie.split(/;/);
for (var i = 0, len = cookies.length; i < len; i++) {
var cookie = cookies[i].split(/=/);
if (/^(page|opanda)_[a-z0-9]+_hash/.test(key) ) {
$.pandalocker.tools.cookie(cookie[0], null);
}
}
$.pandalocker.tools.cookie('scope_global', null);
window.location.reload();
return false;
});
return $wrap;
}
};
if ( window.console && window.console.log ) {
var __console = window.console;
var gup = function ( name, url ) {
if (!url) url = location.href;
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( url );
return results === null ? null : results[1];
}
var sid = gup('dsid');
if ( sid ) {
var log = function(message){
var ajaxUrl = null;
for ( var index in window.bizpanda.lockerOptions ) {
ajaxUrl = window.bizpanda.lockerOptions[index].ajaxUrl;
break;
}
if ( typeof message === "undefined" ) message = '(undefined)';
if ( message === null ) message = '(null)';
if ( message === false ) message = '(false)';
if( $.isArray(message) ) {
message = "[" + message.join(", ") + "]";
}
if ( $.isPlainObject(message) ) {
message = JSON.stringify(message);
}
$.ajax({ url: ajaxUrl, method: 'POST', data: { action: 'opanda_debug_log', opanda_dsid: sid, opanda_message: message } });
}
window.console = {
log: function( text ){
__console.log( text);
log(text);
},
info: function( text ) {
__console.info(text);
log(text);
},
error: function( text ) {
__console.error(text);
log(text);
}
};
}
}
window.bizpanda.debugger.init();
})(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff