rebrand: AALN → AAL (Noriega salió de la sociedad)
- Todos los strings de branding actualizados: - "AALN" / "AALN Law" → "AAL" - "Arias, Abrego, López & Noriega" → "Arias, Abrego & López" - "M. Noriega" (placeholder en sample card del landing) → "M. Arias" - Website link cambia de aalnlaw.com a aal-law.com en landing y footer del portal - Filenames de exportación a Excel/PDF: *_AALN → *_AAL - Footer del PDF compartido (DonnaExport.toPDF) actualizado - Mensajes de denegación de OAuth callback actualizados - README refleja nuevo nombre y URL del firm OAuth sigue aceptando @aal-law.com y @aalnlaw.com como dominios válidos (configurado en /etc/donna/donna.env) para no romper logins durante la transición de correos.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Donna — Portal interno AALN Law
|
||||
# Donna — Portal interno AAL
|
||||
|
||||
Portal interno de la firma **Arias, Abrego, López & Noriega** (aalnlaw.com) que aloja las herramientas operativas del equipo: control de escrituras y trámites legales, registro de horas, calendario, panel de administración y auditoría.
|
||||
Portal interno de la firma **Arias, Abrego & López** (aal-law.com) que aloja las herramientas operativas del equipo: control de escrituras y trámites legales, registro de horas, calendario, panel de administración y auditoría.
|
||||
|
||||
> Producción: <https://donna.aal-law.com>
|
||||
|
||||
@@ -406,4 +406,4 @@ sha256sum -c <(grep -E '^[a-f0-9]{64}' MANIFEST.txt) # checksums OK?
|
||||
|
||||
## Licencia
|
||||
|
||||
Software interno — sin licencia pública. Propiedad de **Arias, Abrego, López & Noriega**.
|
||||
Software interno — sin licencia pública. Propiedad de **Arias, Abrego & López**.
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
const NAVY = '#1B3A6B';
|
||||
const GOLD = '#C9A84C';
|
||||
const FIRM = 'AALN Law — Arias, Abrego, López & Noriega';
|
||||
const FIRM = 'AAL — Arias, Abrego & López';
|
||||
const ADDR = 'P.H. Midtown, Piso 16, Of. 1605, Calle 74 Este, San Francisco, Ciudad de Panamá';
|
||||
|
||||
function escHtml(s){
|
||||
@@ -109,7 +109,7 @@
|
||||
const fechaStr = new Date().toLocaleDateString('es-PA');
|
||||
const html = `<!DOCTYPE html><html lang="es"><head>
|
||||
<meta charset="UTF-8">
|
||||
<title>${escHtml(title)} — AALN Law</title>
|
||||
<title>${escHtml(title)} — AAL</title>
|
||||
<style>
|
||||
@page { size: A4 ${orientation}; margin: 12mm 10mm; }
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
@@ -23,7 +23,7 @@ a:hover{background:#112446;}
|
||||
</style></head><body>
|
||||
<div class="box">
|
||||
<div class="logo">Donna</div>
|
||||
<div class="tag">AALN · Portal interno</div>
|
||||
<div class="tag">AAL · Portal interno</div>
|
||||
<h2>Acceso denegado</h2>
|
||||
<p>{$safe}</p>
|
||||
<a href="/">Volver al inicio</a>
|
||||
@@ -57,7 +57,7 @@ if ($email === '') {
|
||||
}
|
||||
|
||||
if (!Auth::emailDomainAllowed($email)) {
|
||||
deny('Esta cuenta no está autorizada para Donna. Solo dominios corporativos de AALN.', 403);
|
||||
deny('Esta cuenta no está autorizada para Donna. Solo dominios corporativos de AAL.', 403);
|
||||
}
|
||||
|
||||
if (!Auth::completeLogin($email, $name)) {
|
||||
|
||||
+8
-8
@@ -132,7 +132,7 @@ function icon(string $name): string {
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?= $authed ? 'Donna · AALN Portal' : 'Donna · AALN Law' ?></title>
|
||||
<title><?= $authed ? 'Donna · AAL Portal' : 'Donna · AAL' ?></title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
@@ -266,20 +266,20 @@ a{color:inherit;text-decoration:none;}
|
||||
<div class="brand">
|
||||
<div class="brand-mark">D</div>
|
||||
<div class="brand-text">
|
||||
<span class="brand-firm"><a href="https://www.aalnlaw.com" target="_blank" rel="noopener">AALN · Arias, Abrego, López & Noriega</a></span>
|
||||
<span class="brand-firm"><a href="https://www.aal-law.com" target="_blank" rel="noopener">AAL · Arias, Abrego & López</a></span>
|
||||
<span class="brand-name">Donna</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="landing-foot-link">
|
||||
Portal interno · <a href="https://www.aalnlaw.com" target="_blank" rel="noopener">aalnlaw.com</a>
|
||||
Portal interno · <a href="https://www.aal-law.com" target="_blank" rel="noopener">aal-law.com</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section class="hero">
|
||||
<div class="hero-text">
|
||||
<div class="hero-eyebrow">Plataforma interna AALN</div>
|
||||
<div class="hero-eyebrow">Plataforma interna AAL</div>
|
||||
<h1 class="hero-title">Tu equipo de trabajo, <em>siempre un paso adelante</em>.</h1>
|
||||
<p class="hero-sub">Donna es el portal interno de AALN: control de escrituras, expedientes, agenda y herramientas internas en un solo lugar. Inicia sesión con tu correo corporativo.</p>
|
||||
<p class="hero-sub">Donna es el portal interno de AAL: control de escrituras, expedientes, agenda y herramientas internas en un solo lugar. Inicia sesión con tu correo corporativo.</p>
|
||||
<form method="get" action="/auth/login.php">
|
||||
<button class="btn-login" type="submit">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg>
|
||||
@@ -306,7 +306,7 @@ a{color:inherit;text-decoration:none;}
|
||||
<div class="art-card art-card-3">
|
||||
<div class="art-card-eyebrow">Cliente nuevo</div>
|
||||
<h4>Tech Holdings, S.A.</h4>
|
||||
<p>KYC pendiente · Asignado a M. Noriega</p>
|
||||
<p>KYC pendiente · Asignado a M. Arias</p>
|
||||
<span class="pill">Onboarding</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -319,7 +319,7 @@ a{color:inherit;text-decoration:none;}
|
||||
<div class="brand">
|
||||
<div class="brand-mark">D</div>
|
||||
<div class="brand-text">
|
||||
<span class="brand-firm" style="color:var(--gold);">AALN · Donna</span>
|
||||
<span class="brand-firm" style="color:var(--gold);">AAL · Donna</span>
|
||||
<span class="brand-name" style="font-size:14px;color:rgba(255,255,255,0.7);">Portal interno</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -450,7 +450,7 @@ a{color:inherit;text-decoration:none;}
|
||||
</main>
|
||||
|
||||
<footer class="dash-foot">
|
||||
Donna · AALN Law — <a href="https://www.aalnlaw.com" target="_blank" rel="noopener">aalnlaw.com</a>
|
||||
Donna · AAL — <a href="https://www.aal-law.com" target="_blank" rel="noopener">aal-law.com</a>
|
||||
</footer>
|
||||
<?php endif; ?>
|
||||
</body>
|
||||
|
||||
+6
-6
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Panel de Control — Donna AALN</title>
|
||||
<title>Panel de Control — Donna AAL</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
@@ -183,7 +183,7 @@ tr.is-me td { background:#FFFBEB; font-weight:500; }
|
||||
<div class="logo">
|
||||
<div class="logo-mark">A</div>
|
||||
<div class="logo-text">
|
||||
<span class="logo-firm">AALN Law</span>
|
||||
<span class="logo-firm">AAL</span>
|
||||
<span class="logo-tool">Panel de Control</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -697,7 +697,7 @@ function usersExportRows(){
|
||||
}
|
||||
function usersExportExcel(){
|
||||
DonnaExport.toExcel({
|
||||
filename: 'Usuarios_Donna_AALN', sheetName: 'Usuarios',
|
||||
filename: 'Usuarios_Donna_AAL', sheetName: 'Usuarios',
|
||||
headers: USERS_HEADERS, rows: usersExportRows(),
|
||||
columnWidths: [32,28,12,10,20],
|
||||
onEmpty: () => toast('Sin usuarios para exportar','error'),
|
||||
@@ -705,7 +705,7 @@ function usersExportExcel(){
|
||||
}
|
||||
function usersExportPDF(){
|
||||
DonnaExport.toPDF({
|
||||
filename: 'Usuarios_Donna_AALN',
|
||||
filename: 'Usuarios_Donna_AAL',
|
||||
title: 'Usuarios y permisos',
|
||||
orientation: 'portrait',
|
||||
headers: USERS_HEADERS, rows: usersExportRows(),
|
||||
@@ -731,7 +731,7 @@ function logExportRows(){
|
||||
}
|
||||
function logExportExcel(){
|
||||
DonnaExport.toExcel({
|
||||
filename: 'Registro_Transacciones_AALN', sheetName: 'Auditoría',
|
||||
filename: 'Registro_Transacciones_AAL', sheetName: 'Auditoría',
|
||||
headers: LOG_HEADERS, rows: logExportRows(),
|
||||
columnWidths: [18,22,28,14,18,28,50,14],
|
||||
onEmpty: () => toast('No hay transacciones para exportar — aplica filtros primero','error'),
|
||||
@@ -739,7 +739,7 @@ function logExportExcel(){
|
||||
}
|
||||
function logExportPDF(){
|
||||
DonnaExport.toPDF({
|
||||
filename: 'Registro_Transacciones_AALN',
|
||||
filename: 'Registro_Transacciones_AAL',
|
||||
title: 'Registro de Transacciones',
|
||||
headers: LOG_HEADERS, rows: logExportRows(),
|
||||
pdfCols: [0,1,3,4,5,6], // omite Email e IP para que quepa
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Calendario — AALN Donna</title>
|
||||
<title>Calendario — AAL Donna</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
@@ -296,7 +296,7 @@ footer.legend .pill { display:inline-block; padding:2px 8px; border-radius:20px;
|
||||
<div class="logo">
|
||||
<div class="logo-mark">A</div>
|
||||
<div class="logo-text">
|
||||
<span class="logo-firm">AALN Law</span>
|
||||
<span class="logo-firm">AAL</span>
|
||||
<span class="logo-tool">Calendario</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1119,7 +1119,7 @@ function calRowToArray(e){
|
||||
function calExportRows(){ return visibleEvents().map(calRowToArray); }
|
||||
function calExportExcel(){
|
||||
DonnaExport.toExcel({
|
||||
filename: 'Calendario_AALN', sheetName: 'Eventos',
|
||||
filename: 'Calendario_AAL', sheetName: 'Eventos',
|
||||
headers: CAL_HEADERS, rows: calExportRows(),
|
||||
columnWidths: [12,14,16,18,38,28,22,16,12],
|
||||
onEmpty: () => toast('No hay eventos para exportar','error'),
|
||||
@@ -1127,7 +1127,7 @@ function calExportExcel(){
|
||||
}
|
||||
function calExportPDF(){
|
||||
DonnaExport.toPDF({
|
||||
filename: 'Calendario_AALN',
|
||||
filename: 'Calendario_AAL',
|
||||
title: 'Calendario de Eventos',
|
||||
headers: CAL_HEADERS, rows: calExportRows(),
|
||||
pdfCols: [0,1,2,3,4,5,6,7],
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Control de Escrituras — AALN Law</title>
|
||||
<title>Control de Escrituras — AAL</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
@@ -428,7 +428,7 @@ tr.editing-row td textarea.editable {
|
||||
<div class="logo">
|
||||
<div class="logo-mark">A</div>
|
||||
<div class="logo-text">
|
||||
<span class="logo-firm">AALN Law</span>
|
||||
<span class="logo-firm">AAL</span>
|
||||
<span class="logo-tool">Control de Escrituras Públicas</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -531,7 +531,7 @@ tr.editing-row td textarea.editable {
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
Arias, Abrego, López & Noriega · P.H. Midtown, Piso 16, Of. 1605, Calle 74 Este, San Francisco, Ciudad de Panamá · SPECTER Legal Assistant
|
||||
Arias, Abrego & López · P.H. Midtown, Piso 16, Of. 1605, Calle 74 Este, San Francisco, Ciudad de Panamá · SPECTER Legal Assistant
|
||||
</footer>
|
||||
|
||||
<!-- HISTORIAL MODAL -->
|
||||
@@ -1038,14 +1038,14 @@ function expRows() {
|
||||
|
||||
function exportExcel(){
|
||||
DonnaExport.toExcel({
|
||||
filename: 'Control_Escrituras_AALN', sheetName: 'Escrituras',
|
||||
filename: 'Control_Escrituras_AAL', sheetName: 'Escrituras',
|
||||
headers: EXP_HEADERS, rows: expRows(), columnWidths: EXP_WIDTHS,
|
||||
onEmpty: () => toast('No hay datos para exportar','error'),
|
||||
});
|
||||
}
|
||||
function exportPDF(){
|
||||
DonnaExport.toPDF({
|
||||
filename: 'Control_Escrituras_AALN',
|
||||
filename: 'Control_Escrituras_AAL',
|
||||
title: 'Control de Estatus de Escrituras Públicas',
|
||||
headers: EXP_HEADERS, rows: expRows(),
|
||||
pdfCols: EXP_PDF_COLS, statusColIndex: 9, statusColors: EXP_STATUS_COLORS,
|
||||
|
||||
+4
-4
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Reporte de Horas — AALN Donna</title>
|
||||
<title>Reporte de Horas — AAL Donna</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
@@ -154,7 +154,7 @@ tr a.tramite-link:hover{color:var(--gold-d);text-decoration:underline;}
|
||||
<div class="logo">
|
||||
<div class="logo-mark">A</div>
|
||||
<div class="logo-text">
|
||||
<span class="logo-firm">AALN Law</span>
|
||||
<span class="logo-firm">AAL</span>
|
||||
<span class="logo-tool">Reporte de Horas</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -465,14 +465,14 @@ function horasExportRows(){
|
||||
}
|
||||
function exportExcel(){
|
||||
DonnaExport.toExcel({
|
||||
filename: 'Reporte_Horas_AALN', sheetName: 'Horas',
|
||||
filename: 'Reporte_Horas_AAL', sheetName: 'Horas',
|
||||
headers: HORAS_HEADERS, rows: horasExportRows(), columnWidths: HORAS_WIDTHS,
|
||||
onEmpty: () => toast('No hay entradas para exportar','error'),
|
||||
});
|
||||
}
|
||||
function exportPDF(){
|
||||
DonnaExport.toPDF({
|
||||
filename: 'Reporte_Horas_AALN',
|
||||
filename: 'Reporte_Horas_AAL',
|
||||
title: 'Reporte de Horas',
|
||||
headers: HORAS_HEADERS, rows: horasExportRows(),
|
||||
pdfCols: [0,1,3,4,5,7,8], // Fecha, Abogado, Código, Trámite, Cliente, Horas, Descripción
|
||||
|
||||
+4
-4
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Control de Trámites Legales — AALN</title>
|
||||
<title>Control de Trámites Legales — AAL</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
@@ -153,7 +153,7 @@ tr.expanded>td{background:#fffdf5;}
|
||||
<div class="logo">
|
||||
<div class="logo-mark">A</div>
|
||||
<div class="logo-text">
|
||||
<span class="logo-firm">AALN Law</span>
|
||||
<span class="logo-firm">AAL</span>
|
||||
<span class="logo-tool">Control de Trámites Legales</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -452,7 +452,7 @@ function tramRowToArray(dept, r){
|
||||
function tramExportExcel(dept){
|
||||
const rows = (window.__tramFiltered && window.__tramFiltered[dept]) || data[dept] || [];
|
||||
DonnaExport.toExcel({
|
||||
filename: 'Tramites_'+dept.toUpperCase()+'_AALN',
|
||||
filename: 'Tramites_'+dept.toUpperCase()+'_AAL',
|
||||
sheetName: DEPT_LABELS[dept] || dept,
|
||||
headers: TRAM_HEADERS[dept],
|
||||
rows: rows.map(r => tramRowToArray(dept, r)),
|
||||
@@ -464,7 +464,7 @@ function tramExportPDF(dept){
|
||||
// En PDF excluye Involucrados (lista larga) para que quepa
|
||||
const cols = TRAM_HEADERS[dept].map((_,i) => i).filter(i => TRAM_HEADERS[dept][i] !== 'Involucrados');
|
||||
DonnaExport.toPDF({
|
||||
filename: 'Tramites_'+dept.toUpperCase()+'_AALN',
|
||||
filename: 'Tramites_'+dept.toUpperCase()+'_AAL',
|
||||
title: 'Control de Trámites Legales · ' + (DEPT_LABELS[dept] || dept),
|
||||
headers: TRAM_HEADERS[dept],
|
||||
rows: rows.map(r => tramRowToArray(dept, r)),
|
||||
|
||||
Reference in New Issue
Block a user