// Función de debounce para optimizar el rendimiento
function debounce(func, wait) {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
jQuery(document).ready(function($) {
// Initialize color pickers
$('.color-picker').wpColorPicker({
change: function(event, ui) {
updateStyles();
}
});
// Initialize html2canvas
var script = document.createElement('script');
script.src = 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js';
document.head.appendChild(script);
script.onload = function() {
console.log('html2canvas loaded');
$('.download-jpg').prop('disabled', false);
};
// Optimized zoom handling
const handleZoom = debounce(function(target, value) {
const zoomValue = value/100;
const template = $(target).closest('.preview-box').find('.sunset-template');
template.css('transform', `scale(${zoomValue})`);
}, 16);
// Zoom control event listener
$('.zoom-range').on('input', function() {
const value = $(this).val();
$(this).siblings('.zoom-value').text(value + '%');
handleZoom(this, value);
});
// Toggle excerpt position field visibility
$('#cwpai_show_excerpt').on('change', function() {
$('#excerpt_position').toggle(this.checked);
updateStyles();
});
// Update styles function
function updateStyles() {
const lineColor = $('#cwpai_line_color').val();
const lineWidth = $('#cwpai_line_width').val() + 'px';
const marginTop = $('#cwpai_line_margin_top').val() + 'px';
const marginBottom = $('#cwpai_line_margin_bottom').val() + 'px';
const marginLeft = $('#cwpai_line_margin_left').val() + 'px';
const marginRight = $('#cwpai_line_margin_right').val() + 'px';
const categoryTop = $('#cwpai_category_position_top').val() + 'px';
const websiteTop = $('#cwpai_website_position_top').val() + 'px';
const titleTop = $('#cwpai_title_position_top').val() + 'px';
const excerptTop = $('#cwpai_excerpt_position_top').val() + 'px';
const categoryLeft = $('#cwpai_category_position_left').val() + 'px';
const websiteLeft = $('#cwpai_website_position_left').val() + 'px';
const titleLeft = $('#cwpai_title_position_left').val() + 'px';
const titleSize = $('#cwpai_title_font_size').val() + 'px';
const categorySize = $('#cwpai_category_font_size').val() + 'px';
const websiteSize = $('#cwpai_website_font_size').val() + 'px';
// Update visibility states
const showCategory = $('#cwpai_show_category').prop('checked');
const showWebsite = $('#cwpai_show_website').prop('checked');
const showTitle = $('#cwpai_show_title').prop('checked');
const showExcerpt = $('#cwpai_show_excerpt').prop('checked');
$('.vertical-line').css({
'background-color': lineColor,
'width': lineWidth,
'top': marginTop,
'height': `calc(100% - (${marginTop} + ${marginBottom}))`,
'left': marginLeft,
'margin-right': marginRight
});
$('.category-tag').css({
'display': showCategory ? 'block' : 'none',
'top': categoryTop,
'left': categoryLeft,
'font-size': categorySize
});
$('.website-link').css({
'display': showWebsite ? 'block' : 'none',
'top': websiteTop,
'left': websiteLeft,
'font-size': websiteSize
});
$('.title').css({
'display': showTitle ? 'block' : 'none',
'top': titleTop,
'left': titleLeft,
'font-size': titleSize
});
$('.excerpt-preview').css({
'display': showExcerpt ? 'block' : 'none',
'top': excerptTop,
'left': titleLeft
});
}
// Copy buttons functionality with improved feedback
$('.copy-excerpt, .copy-hashtags').on('click', function() {
const button = $(this);
const content = button.data('content');
const originalText = button.text();
// Create temporary textarea
const textarea = document.createElement('textarea');
textarea.value = content;
textarea.style.position = 'absolute';
textarea.style.left = '-9999px';
document.body.appendChild(textarea);
try {
// Select and copy text
textarea.select();
document.execCommand('copy');
// Visual feedback
button.text('¡Copiado!');
button.css('background-color', '#4CAF50');
// Reset button after delay
setTimeout(() => {
button.text(originalText);
button.css('background-color', '');
}, 2000);
} catch(err) {
console.error('Error al copiar:', err);
button.text('Error al copiar');
button.css('background-color', '#f44336');
setTimeout(() => {
button.text(originalText);
button.css('background-color', '');
}, 2000);
} finally {
document.body.removeChild(textarea);
}
});
// Canvas optimization function
function optimizeCanvas(canvas, format) {
const ctx = canvas.getContext('2d');
// Enable image smoothing
ctx.imageSmoothingEnabled = true;
ctx.imageSmoothingQuality = 'high';
// Set dimensions based on format
switch(format) {
case 'rectangular':
canvas.width = 1200;
canvas.height = 630;
break;
case 'vertical':
canvas.width = 500;
canvas.height = 890;
break;
case 'horizontal':
canvas.width = 864;
canvas.height = 864;
break;
}
return canvas;
}
// Image download functionality with improved error handling
$('.download-jpg').on('click', function() {
const button = $(this);
const format = button.data('format');
const template = button.closest('.preview-box').find('.sunset-template')[0];
// Disable button and show loading state
button.text('Generando...').prop('disabled', true);
const options = {
scale: 2, // Higher quality
useCORS: true,
allowTaint: true,
backgroundColor: '#000000',
logging: false, // Disable logging in production
onclone: function(clonedDoc) {
const clonedElement = clonedDoc.querySelector('.sunset-template');
if (clonedElement) {
// Reset zoom for export
clonedElement.style.transform = 'scale(1)';
// Set dimensions based on format
switch(format) {
case 'rectangular':
clonedElement.style.width = '1200px';
clonedElement.style.height = '630px';
break;
case 'vertical':
clonedElement.style.width = '500px';
clonedElement.style.height = '890px';
break;
case 'horizontal':
clonedElement.style.width = '864px';
clonedElement.style.height = '864px';
break;
}
}
}
};
// Wait for all images to load
Promise.all(Array.from(template.getElementsByTagName('img')).map(img => {
return new Promise((resolve, reject) => {
if (img.complete) {
resolve();
} else {
img.onload = resolve;
img.onerror = reject;
}
});
}))
.then(() => {
return html2canvas(template, options);
})
.then(canvas => {
// Optimize canvas
canvas = optimizeCanvas(canvas, format);
// Convert to blob
return new Promise((resolve, reject) => {
canvas.toBlob(resolve, 'image/jpeg', 0.95);
});
})
.then(blob => {
// Generate filename
const postTitle = template.dataset.title;
const timestamp = new Date().getTime();
const fileName = `${postTitle}-${format}-${timestamp}.jpg`;
// Save file
saveAs(blob, fileName);
// Reset button
button.text('Descargar ' + (
format === 'vertical' ? 'Vertical' :
format === 'horizontal' ? 'Horizontal' :
'Rectangular'
)).prop('disabled', false);
})
.catch(error => {
console.error('Error:', error);
button.text('Error - Intentar de nuevo').prop('disabled', false)
.css('background-color', '#f44336');
setTimeout(() => {
button.css('background-color', '');
button.text('Descargar ' + (
format === 'vertical' ? 'Vertical' :
format === 'horizontal' ? 'Horizontal' :
'Rectangular'
));
}, 3000);
});
});
// Line and position controls
$('#cwpai_line_width, #cwpai_line_margin_top, #cwpai_line_margin_bottom, #cwpai_line_margin_left, #cwpai_line_margin_right, #cwpai_category_position_top, #cwpai_website_position_top, #cwpai_title_position_top, #cwpai_excerpt_position_top, #cwpai_category_position_left, #cwpai_website_position_left, #cwpai_title_position_left, #cwpai_title_font_size, #cwpai_category_font_size, #cwpai_website_font_size')
.on('change input', debounce(updateStyles, 100));
// Visibility controls
$('#cwpai_show_category, #cwpai_show_website, #cwpai_show_title, #cwpai_show_excerpt')
.on('change', updateStyles);
// Global error handler
window.onerror = function(msg, url, lineNo, columnNo, error) {
console.error('Error: ', {
message: msg,
url: url,
lineNumber: lineNo,
columnNumber: columnNo,
error: error
});
return false;
};
// Initial styles update
updateStyles();
});
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/diariocosta.com/httpdocs/wp-content/plugins/social-media-stories/social-media-stories.php:1) in /var/www/vhosts/diariocosta.com/httpdocs/wp-includes/rest-api/class-wp-rest-server.php on line 1893
{"id":9989,"date":"2016-11-17T21:49:10","date_gmt":"2016-11-17T20:49:10","guid":{"rendered":"http:\/\/diariocosta.com\/?p=9989"},"modified":"2016-11-17T21:49:19","modified_gmt":"2016-11-17T20:49:19","slug":"iii-fiesta-del-aceite-y-del-i-concurso-nacional-de-cortadores-de-jamon-ciudad-de-jaen","status":"publish","type":"post","link":"https:\/\/diariocosta.com\/iii-fiesta-del-aceite-y-del-i-concurso-nacional-de-cortadores-de-jamon-ciudad-de-jaen\/","title":{"rendered":"III Fiesta Del Aceite Y Del I Concurso Nacional De Cortadores De Jam\u00f3n ‘Ciudad De Ja\u00e9n’"},"content":{"rendered":"
La concejal de Deportes y Turismo, Charo Morales de Coca, junto con el representante de las almazaras jiennenses Alberto Molinero y el organizador y cortador profesional del Concurso Nacional de Cortadores de Jam\u00f3n ‘Ciudad de Ja\u00e9n’, David Berrios, han presentado la III Fiesta de la Aceituna ‘Ciudad de Ja\u00e9n’, que se celebrar\u00e1 en el Parque de la Concordia los pr\u00f3ximos 26 y 27 de noviembre y que cuenta con la colaboraci\u00f3n de Gastronom\u00eda Ja\u00e9n (Asociaci\u00f3n Gastron\u00f3mica).<\/p>\n
Charo Morales de Coca ha valorado ambas actividades ‘que posicionan Ja\u00e9n como Capital mundial del aceite de oliva’.<\/p>\n
As\u00ed ha explicado que, con motivo de la extracci\u00f3n del primer aceite, las productoras de la ciudad, junto con empresas patrocinadoras, bajo la organizaci\u00f3n de la concejal\u00eda de Promoci\u00f3n Econ\u00f3mica, abren sus puertas a trav\u00e9s de la III Feria del Primera Aceite y de la Aceituna.<\/p>\n
La edil ha destacado que las almazaras jiennenses dar\u00e1n visibilidad a sus nuevos productos, de modo que Virgen de la Capilla ofrecer\u00e1 su ‘Aceite de Cosecha Temprana PuenteSierra’, San Juan, su prestigioso ‘Supremo’ y la Pastira, su afamado ‘Pastira Excelencia’.<\/p>\n
Adem\u00e1s Aceitunera Jiennense participar\u00e1 en esta actividad ‘como empresa pionera en el sector de la aceituna con m\u00e1s de 20 franquicias distribuidas en toda Espa\u00f1a’.<\/p>\n
Cada una de ellas contar\u00e1 con un espacio propio donde ofrecer sus productos e informar sobre su andadura comercial, abriendo as\u00ed nuevas v\u00edas de promoci\u00f3n y venta.<\/p>\n
Por tanto la edil de esta \u00e1rea ha subrayado que, una vez mas, el Ayuntamiento, a trav\u00e9s de la concejal\u00eda de Promoci\u00f3n Econ\u00f3mica, se involucra con el sector empresarial jiennense, ‘siendo un puente entre las v\u00edas de distribuci\u00f3n y producci\u00f3n y la ciudadan\u00eda, especialmente las familias, principales consumidores de este producto de nuestra tierra’.<\/p>\n
Para ello se instalar\u00e1 una carpa en el parque de la Concordia que contar\u00e1 adem\u00e1s con la asistencia el d\u00eda 26 del humorista jiennense Santi Rodr\u00edguez ‘que nos dar\u00e1 la bienvenida a esta III Fiesta de la Aceituna.<\/p>\n
Adem\u00e1s se celebrar\u00e1n muestras de cocina y degustaciones y habr\u00e1 actuaciones musicales, e incluso actividades dirigidas a los m\u00e1s peque\u00f1os.<\/p>\n
La concejal de esta \u00e1rea ha valorado el hecho de que esta tercera edici\u00f3n de la fiesta del aceite ‘se complemente’ con el I Concurso Nacional de Cortadores de Jam\u00f3n que se celebrar\u00e1 en este mismo lugar el d\u00eda 27 de octubre.<\/p>\n
Sobre este concurso Charo ha subrayado la visita de 7 cortadores de jam\u00f3n ‘de reconocido prestigio nacional que llegar\u00e1n de distintos puntos de Espa\u00f1a’.<\/p>\n
Por su parte, Alberto Molinero representante de las almazaras jiennenses ha apostado por este acontecimiento que ser\u00e1 una gran cita para la ciudad pues las tres almazaras de Ja\u00e9n ‘hemos sido capaces de aunar esfuerzos y crear esta actividad de la mano del Ayuntamiento’.<\/p>\n
Para concluir, el organizador del Concurso Nacional de Cortadores de Jam\u00f3n, Daniel Berrios ha agradecido al Ayuntamiento y ha explicado que vendr\u00e1n cortadores de todo el panorama nacional y se puntuar\u00e1 la rectitud en el corte y los platos creativos, entre otros aspectos.<\/p>\n
Adem\u00e1s ha explicado que vendr\u00e1 tambi\u00e9n gente clasificada para el campeonato nacional del pr\u00f3ximo a\u00f1o. ‘Todos tienen muchas ganas de venir ese fin de semana por formar parte de este matrimonio que se va a hacer con el aceite’ ha expuesto.<\/p>\n","protected":false},"excerpt":{"rendered":"
La concejal de Deportes y Turismo, Charo Morales de Coca, junto con el representante de las almazaras jiennenses Alberto Molinero y el organizador y cortador profesional del Concurso Nacional de Cortadores de Jam\u00f3n ‘Ciudad de Ja\u00e9n’, David Berrios, han presentado la III Fiesta de la Aceituna ‘Ciudad de Ja\u00e9n’, que se celebrar\u00e1 en el Parque […]<\/p>\n","protected":false},"author":3,"featured_media":9988,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[47],"tags":[],"class_list":{"0":"post-9989","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-andalucia"},"_links":{"self":[{"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/posts\/9989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/comments?post=9989"}],"version-history":[{"count":0,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/posts\/9989\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/media\/9988"}],"wp:attachment":[{"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/media?parent=9989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/categories?post=9989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/diariocosta.com\/wp-json\/wp\/v2\/tags?post=9989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}