sync: actualizar contenido desde staging - botón Login, favicon, estilos
All checks were successful
Deploy Site / deploy (push) Successful in 37s

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Deploy Bot 2026-01-06 11:58:52 +00:00
parent eef3370f76
commit 7d0ba87abb
6 changed files with 218 additions and 10 deletions

View file

@ -49,7 +49,7 @@ footer.page-footer {
width: 100% !important;
height: 70px !important;
background: white !important;
box-shadow: 0 2px 15px rgba(11, 30, 59, 0.1) !important;
box-shadow: none !important;
display: flex !important;
align-items: center !important;
padding: 0 30px !important;
@ -59,8 +59,12 @@ footer.page-footer {
.sidebar-header {
display: flex !important;
align-items: center !important;
justify-content: space-between !important;
width: 100% !important;
height: 100% !important;
border-bottom: none !important;
padding-bottom: 0 !important;
margin-bottom: 0 !important;
}
.sidebar-header .logo-link {
@ -68,6 +72,12 @@ footer.page-footer {
align-items: center !important;
}
/* Ocultar título DO CLOUD del header */
.sidebar-header h1,
.sidebar h1 {
display: none !important;
}
.sidebar-header .logo-link img {
max-height: 45px !important;
width: auto !important;
@ -229,3 +239,99 @@ div[align="center"]:last-of-type a {
[data-theme="dark"] th {
background: var(--primary-gradient) !important;
}
/* ============================================
BOTÓN LOGIN EN HEADER
============================================ */
.header-login-btn {
display: inline-flex !important;
align-items: center;
gap: 10px;
background: var(--primary-gradient) !important;
color: white !important;
padding: 12px 28px !important;
border-radius: 8px;
font-weight: 700;
font-size: 15px;
text-decoration: none !important;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(10, 108, 255, 0.35);
border: none;
cursor: pointer;
letter-spacing: 0.3px;
}
.header-login-btn:hover {
transform: translateY(-3px);
box-shadow: 0 6px 20px rgba(10, 108, 255, 0.5);
filter: brightness(1.1);
color: white !important;
}
.header-login-btn:active {
transform: translateY(-1px);
}
.header-login-btn svg {
width: 18px;
height: 18px;
fill: currentColor;
}
/* ============================================
BOTÓN FEEDBACK ZAMMAD (flotante)
============================================ */
#zammad-feedback-form {
position: fixed;
bottom: 20px;
right: 20px;
background: var(--primary-gradient);
color: white;
border: none;
padding: 12px 24px;
border-radius: 50px;
font-weight: 600;
font-size: 14px;
cursor: pointer;
box-shadow: 0 4px 20px rgba(10, 108, 255, 0.4);
transition: all 0.3s ease;
z-index: 999;
display: inline-flex;
align-items: center;
gap: 8px;
}
#zammad-feedback-form:hover {
transform: translateY(-3px);
box-shadow: 0 6px 25px rgba(10, 108, 255, 0.5);
}
#zammad-feedback-form::before {
content: '💬';
font-size: 16px;
}
/* Estilos para modal de Zammad */
.zammad-form-modal {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
}
.zammad-form-modal .zammad-form-modal-body {
border-radius: 12px !important;
}
.zammad-form-modal input,
.zammad-form-modal textarea,
.zammad-form-modal select {
border-radius: 6px !important;
border: 1px solid var(--light-gray) !important;
padding: 10px 12px !important;
}
.zammad-form-modal button[type="submit"] {
background: var(--primary-gradient) !important;
border: none !important;
border-radius: 6px !important;
padding: 12px 24px !important;
font-weight: 600 !important;
}

97
assets/custom.js Normal file
View file

@ -0,0 +1,97 @@
/**
* DO CLOUD - Custom JavaScript
* - Botón Login en header
* - Integración Zammad Feedback Form (carga diferida)
*/
(function() {
'use strict';
// Esperar a que el DOM esté listo
document.addEventListener('DOMContentLoaded', initCustomFeatures);
function initCustomFeatures() {
fixLogoLink();
addLoginButton();
// Cargar Zammad después de la carga inicial (mejora LCP)
if ('requestIdleCallback' in window) {
requestIdleCallback(loadZammadForm);
} else {
setTimeout(loadZammadForm, 2000);
}
}
/**
* Asegura que el logo siempre enlace al home
*/
function fixLogoLink() {
var logoLink = document.querySelector('.logo-link');
if (logoLink) {
logoLink.href = '/';
}
}
/**
* Añade el botón de Login al header
*/
function addLoginButton() {
var header = document.querySelector('.sidebar-header');
if (!header) return;
var loginBtn = document.createElement('a');
loginBtn.href = 'https://icsmanager.docloud.es/ics1';
loginBtn.className = 'header-login-btn';
loginBtn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>Login';
loginBtn.setAttribute('rel', 'noopener');
loginBtn.setAttribute('title', 'Acceder al panel de cliente');
header.appendChild(loginBtn);
}
/**
* Carga jQuery y Zammad Form
*/
function loadZammadForm() {
// Crear botón de feedback
var feedbackBtn = document.createElement('button');
feedbackBtn.id = 'zammad-feedback-form';
feedbackBtn.textContent = 'Contactar';
document.body.appendChild(feedbackBtn);
// Cargar jQuery si no existe
if (typeof jQuery === 'undefined') {
var jqueryScript = document.createElement('script');
jqueryScript.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
jqueryScript.onload = loadZammadScript;
document.head.appendChild(jqueryScript);
} else {
loadZammadScript();
}
}
/**
* Carga el script de Zammad y inicializa el formulario
*/
function loadZammadScript() {
var zammadScript = document.createElement('script');
zammadScript.id = 'zammad_form_script';
zammadScript.src = 'https://soporte.tecnico.com.es/assets/form/form.js';
zammadScript.onload = initZammadForm;
document.head.appendChild(zammadScript);
}
/**
* Inicializa el formulario de Zammad
*/
function initZammadForm() {
if (typeof jQuery !== 'undefined' && jQuery.fn.ZammadForm) {
jQuery('#zammad-feedback-form').ZammadForm({
messageTitle: 'Contacto con Soporte',
messageSubmit: 'Enviar',
messageThankYou: 'Gracias por su consulta (#%s). Nos pondremos en contacto con usted lo antes posible.',
modal: true
});
}
}
})();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

12
assets/favicon.svg Normal file
View file

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<defs>
<linearGradient id="g" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0A6CFF"/>
<stop offset="100%" stop-color="#1FD1C3"/>
</linearGradient>
</defs>
<path d="M120 320c-66 0-120-44-120-104 0-54 42-98 96-102 20-48 68-82 124-82 76 0 140 58 146 132h10c44 0 80 34 80 78s-36 78-80 78H120z" fill="url(#g)"/>
<rect x="200" y="210" width="30" height="80" fill="#fff"/>
<rect x="240" y="180" width="30" height="110" fill="#fff"/>
<rect x="280" y="150" width="30" height="140" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 610 B

View file

@ -1,15 +1,11 @@
<div align="center">
# DOCLOUD
## Internet Cloud Services
**Tu partner tecnológico en soluciones cloud**
Infraestructura fiable, segura y escalable para impulsar tu negocio.
<a href="https://soporte.tecnico.com.es" style="display:inline-block;background:#0066cc;color:white;padding:12px 30px;text-decoration:none;border-radius:5px;font-weight:bold;margin:10px;">Contactar con Soporte</a>
</div>
---
@ -89,11 +85,6 @@ Equipo experto disponible para resolver cualquier incidencia.
¿Listo para llevar tu infraestructura al siguiente nivel?
<a href="https://soporte.tecnico.com.es" style="display:inline-block;background:#28a745;color:white;padding:15px 40px;text-decoration:none;border-radius:5px;font-weight:bold;font-size:18px;margin:20px;">Solicitar Información</a>
<a href="contacto.html" style="display:inline-block;background:#6c757d;color:white;padding:12px 30px;text-decoration:none;border-radius:5px;margin:10px;">Ver opciones de contacto</a>
</div>
---

View file

@ -51,4 +51,6 @@ server {
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
}