Feature: Traducir todas las vistas - parte 1
- admin/recipients.php: tablas, modales, labels - admin/comandos.php: títulos, tablas, descripciones - admin/test_discord_connection.php: formularios, alertas - admin/ia_agent.php: configuración, parámetros - profile.php: información, formulario contraseña - set_webhook.php: alertas, formularios - chat_telegram.php: usuarios, historial - translate_message.php: formulario de traducción
This commit is contained in:
@@ -20,11 +20,11 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
?>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-terminal"></i> Gestión de Comandos</h2>
|
||||
<h2><i class="bi bi-terminal"></i> <?= t('Gestión de Comandos') ?></h2>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<i class="bi bi-info-circle"></i> Los comandos se usan en Discord y Telegram anteponiendo <code>#</code> al nombre del comando.
|
||||
<i class="bi bi-info-circle"></i> <?= t('Los comandos se usan en Discord y Telegram anteponiendo') ?> <code>#</code> <?= t('al nombre del comando') ?>.
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@@ -32,16 +32,16 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<?php if (empty($templates)): ?>
|
||||
<p class="text-muted text-center py-4">No hay plantillas con comandos</p>
|
||||
<p class="text-muted text-center py-4"><?= t('No hay plantillas con comandos') ?></p>
|
||||
<?php else: ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Nombre</th>
|
||||
<th>Comando</th>
|
||||
<th>Uso</th>
|
||||
<th><?= t('Nombre') ?></th>
|
||||
<th><?= t('Comando') ?></th>
|
||||
<th><?= t('Uso') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -53,7 +53,7 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<?php if ($template['telegram_command']): ?>
|
||||
<code>#<?= htmlspecialchars($template['telegram_command']) ?></code>
|
||||
<?php else: ?>
|
||||
<span class="text-muted">Sin comando</span>
|
||||
<span class="text-muted"><?= t('Sin comando') ?></span>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td>
|
||||
@@ -74,37 +74,37 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-discord"></i> Comandos de Discord</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-discord"></i> <?= t('Comandos de Discord') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Comando</th>
|
||||
<th>Descripción</th>
|
||||
<th><?= t('Comando') ?></th>
|
||||
<th><?= t('Descripción') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>#comando</code></td>
|
||||
<td>Envía la plantilla asociada</td>
|
||||
<td><?= t('Envía la plantilla asociada') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/comandos</code></td>
|
||||
<td>Lista de comandos disponibles</td>
|
||||
<td><?= t('Lista de comandos disponibles') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/setlang [código]</code></td>
|
||||
<td>Establece el idioma del usuario</td>
|
||||
<td><?= t('Establece el idioma del usuario') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/bienvenida</code></td>
|
||||
<td>Envía mensaje de bienvenida</td>
|
||||
<td><?= t('Envía mensaje de bienvenida') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/agente</code></td>
|
||||
<td>Cambia a modo IA</td>
|
||||
<td><?= t('Cambia a modo IA') ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -116,41 +116,41 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-telegram"></i> Comandos de Telegram</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-telegram"></i> <?= t('Comandos de Telegram') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Comando</th>
|
||||
<th>Descripción</th>
|
||||
<th><?= t('Comando') ?></th>
|
||||
<th><?= t('Descripción') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>#comando</code></td>
|
||||
<td>Envía la plantilla asociada</td>
|
||||
<td><?= t('Envía la plantilla asociada') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/start</code></td>
|
||||
<td>Inicia el bot</td>
|
||||
<td><?= t('Inicia el bot') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/comandos</code></td>
|
||||
<td>Lista de comandos disponibles</td>
|
||||
<td><?= t('Lista de comandos disponibles') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/setlang [código]</code></td>
|
||||
<td>Establece el idioma del usuario</td>
|
||||
<td><?= t('Establece el idioma del usuario') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/bienvenida</code></td>
|
||||
<td>Envía mensaje de bienvenida</td>
|
||||
<td><?= t('Envía mensaje de bienvenida') ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/agente</code></td>
|
||||
<td>Cambia a modo IA</td>
|
||||
<td><?= t('Cambia a modo IA') ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -88,7 +88,7 @@ $config = $agent->getAllConfig();
|
||||
?>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-robot"></i> Configuración del Agente IA</h2>
|
||||
<h2><i class="bi bi-cpu"></i> <?= t('Configuración del Agente IA') ?></h2>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($message)): ?>
|
||||
@@ -101,37 +101,37 @@ $config = $agent->getAllConfig();
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-database"></i> Conexión a Knowledge Base</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-database"></i> <?= t('Conexión a Knowledge Base') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Host</label>
|
||||
<label class="form-label"><?= t('Host') ?></label>
|
||||
<input type="text" name="kb_host" class="form-control" value="<?= htmlspecialchars($config['kb_db_host'] ?? $_ENV['KB_DB_HOST'] ?? '') ?>">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Puerto</label>
|
||||
<label class="form-label"><?= t('Puerto') ?></label>
|
||||
<input type="text" name="kb_port" class="form-control" value="<?= htmlspecialchars($config['kb_db_port'] ?? $_ENV['KB_DB_PORT'] ?? '') ?>">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Base de Datos</label>
|
||||
<label class="form-label"><?= t('Base de Datos') ?></label>
|
||||
<input type="text" name="kb_dbname" class="form-control" value="<?= htmlspecialchars($config['kb_db_name'] ?? $_ENV['KB_DB_NAME'] ?? '') ?>">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Usuario</label>
|
||||
<label class="form-label"><?= t('Usuario') ?></label>
|
||||
<input type="text" name="kb_user" class="form-control" value="<?= htmlspecialchars($config['kb_db_user'] ?? $_ENV['KB_DB_USER'] ?? '') ?>">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Contraseña</label>
|
||||
<input type="password" name="kb_pass" class="form-control" value="<?= htmlspecialchars($config['kb_db_pass'] ?? '') ?>" placeholder="Dejar vacío para mantener actual">
|
||||
<label class="form-label"><?= t('Contraseña') ?></label>
|
||||
<input type="password" name="kb_pass" class="form-control" value="<?= htmlspecialchars($config['kb_db_pass'] ?? '') ?>" placeholder="<?= t('Dejar vacío para mantener actual') ?>">
|
||||
</div>
|
||||
<div class="d-grid gap-2 d-md-flex">
|
||||
<button type="submit" name="update_kb_config" class="btn btn-primary">
|
||||
<i class="bi bi-save"></i> Guardar
|
||||
<i class="bi bi-save"></i> <?= t('Guardar') ?>
|
||||
</button>
|
||||
<button type="submit" name="test_connection" class="btn btn-outline-primary">
|
||||
<i class="bi bi-plug"></i> Probar Conexión
|
||||
<i class="bi bi-plug"></i> <?= t('Probar Conexión') ?>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
@@ -139,31 +139,31 @@ $config = $agent->getAllConfig();
|
||||
</div>
|
||||
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-cpu"></i> Configuración de IA</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-cpu"></i> <?= t('Configuración de IA') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Habilitar Knowledge Base</label>
|
||||
<label class="form-label"><?= t('Habilitar Knowledge Base') ?></label>
|
||||
<select name="config_value" class="form-select">
|
||||
<option value="1" <?= ($config['kb_enabled'] ?? '1') === '1' ? 'selected' : '' ?>>Habilitado</option>
|
||||
<option value="0" <?= ($config['kb_enabled'] ?? '1') === '0' ? 'selected' : '' ?>>Deshabilitado</option>
|
||||
<option value="1" <?= ($config['kb_enabled'] ?? '1') === '1' ? 'selected' : '' ?>><?= t('Habilitado') ?></option>
|
||||
<option value="0" <?= ($config['kb_enabled'] ?? '1') === '0' ? 'selected' : '' ?>><?= t('Deshabilitado') ?></option>
|
||||
</select>
|
||||
<input type="hidden" name="config_key" value="kb_enabled">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Modelo de IA (Groq)</label>
|
||||
<label class="form-label"><?= t('Modelo de IA') ?> (Groq)</label>
|
||||
<select name="config_value_model" class="form-select">
|
||||
<option value="llama-3.1-8b-instant" <?= ($config['ai_model'] ?? 'llama-3.1-8b-instant') === 'llama-3.1-8b-instant' ? 'selected' : '' ?>>Llama 3.1 8B (Rápido - Recomendado)</option>
|
||||
<option value="llama-3.1-8b-instant" <?= ($config['ai_model'] ?? 'llama-3.1-8b-instant') === 'llama-3.1-8b-instant' ? 'selected' : '' ?>>Llama 3.1 8B (<?= t('Rápido - Recomendado') ?>)</option>
|
||||
<option value="mixtral-8x7b-32768" <?= ($config['ai_model'] ?? '') === 'mixtral-8x7b-32768' ? 'selected' : '' ?>>Mixtral 8x7B</option>
|
||||
<option value="llama3-70b-8192" <?= ($config['ai_model'] ?? '') === 'llama3-70b-8192' ? 'selected' : '' ?>>Llama 3 70B</option>
|
||||
</select>
|
||||
<small class="text-muted">Solo modelos gratuitos. Si se agotan los tokens, cambiará automáticamente al siguiente.</small>
|
||||
<small class="text-muted"><?= t('Solo modelos gratuitos. Si se agotan los tokens, cambiará automáticamente al siguiente.') ?></small>
|
||||
</div>
|
||||
<div class="d-grid gap-2">
|
||||
<button type="submit" name="update_config" class="btn btn-primary">
|
||||
<i class="bi bi-check-circle"></i> Guardar Configuración
|
||||
<i class="bi bi-check-circle"></i> <?= t('Guardar Configuración') ?>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
@@ -173,20 +173,20 @@ $config = $agent->getAllConfig();
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-chat-left-text"></i> Prompt del Sistema</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-chat-left-text"></i> <?= t('Prompt del Sistema') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Instrucciones para el agente</label>
|
||||
<label class="form-label"><?= t('Instrucciones para el agente') ?></label>
|
||||
<textarea name="config_value" class="form-control" rows="6"><?= htmlspecialchars($config['system_prompt'] ?? '') ?></textarea>
|
||||
<small class="text-muted">Instrucciones que seguirá el agente al responder.</small>
|
||||
<small class="text-muted"><?= t('Instrucciones que seguirá el agente al responder.') ?></small>
|
||||
<input type="hidden" name="config_key" value="system_prompt">
|
||||
</div>
|
||||
<div class="d-grid">
|
||||
<button type="submit" name="update_config" class="btn btn-primary">
|
||||
<i class="bi bi-check-circle"></i> Guardar Prompt
|
||||
<i class="bi bi-check-circle"></i> <?= t('Guardar Prompt') ?>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
@@ -194,25 +194,25 @@ $config = $agent->getAllConfig();
|
||||
</div>
|
||||
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-sliders"></i> Parámetros Adicionales</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-sliders"></i> <?= t('Parámetros Adicionales') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Máximo de resultados de KB</label>
|
||||
<label class="form-label"><?= t('Máximo de resultados de KB') ?></label>
|
||||
<input type="number" name="config_value" class="form-control" value="<?= htmlspecialchars($config['kb_max_results'] ?? '5') ?>" min="1" max="20">
|
||||
<small class="text-muted">Cantidad de artículos a buscar en la base de conocimientos.</small>
|
||||
<small class="text-muted"><?= t('Cantidad de artículos a buscar en la base de conocimientos.') ?></small>
|
||||
<input type="hidden" name="config_key" value="kb_max_results">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Máximo de caracteres en respuesta</label>
|
||||
<label class="form-label"><?= t('Máximo de caracteres en respuesta') ?></label>
|
||||
<input type="number" name="config_value2" class="form-control" value="<?= htmlspecialchars($config['response_max_length'] ?? '1500') ?>" min="100" max="4000">
|
||||
<small class="text-muted">Límite de caracteres en las respuestas del agente.</small>
|
||||
<small class="text-muted"><?= t('Límite de caracteres en las respuestas del agente.') ?></small>
|
||||
</div>
|
||||
<div class="d-grid">
|
||||
<button type="submit" name="update_config" class="btn btn-primary">
|
||||
<i class="bi bi-check-circle"></i> Guardar Parámetros
|
||||
<i class="bi bi-check-circle"></i> <?= t('Guardar Parámetros') ?>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
@@ -224,23 +224,23 @@ $config = $agent->getAllConfig();
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-chat-dots"></i> Prueba del Agente</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-chat-dots"></i> <?= t('Prueba del Agente') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST" class="mb-3">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text"><i class="bi bi-question-circle"></i></span>
|
||||
<input type="text" name="test_question" class="form-control" placeholder="Escribe una pregunta para probar el agente..." value="<?= htmlspecialchars($_POST['test_question'] ?? '') ?>">
|
||||
<input type="text" name="test_question" class="form-control" placeholder="<?= t('Escribe una pregunta para probar el agente...') ?>" value="<?= htmlspecialchars($_POST['test_question'] ?? '') ?>">
|
||||
<button type="submit" class="btn btn-success">
|
||||
<i class="bi bi-send"></i> Enviar
|
||||
<i class="bi bi-send"></i> <?= t('Enviar') ?>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<?php if (isset($testResponse)): ?>
|
||||
<div class="mt-3">
|
||||
<label class="form-label text-muted">Respuesta del agente:</label>
|
||||
<label class="form-label text-muted"><?= t('Respuesta del agente') ?>:</label>
|
||||
<div class="p-3 bg-light rounded border">
|
||||
<pre class="mb-0 white-space: pre-wrap;"><?= htmlspecialchars($testResponse) ?></pre>
|
||||
</div>
|
||||
|
||||
@@ -69,9 +69,9 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
?>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-person-check"></i> Gestión de Destinatarios</h2>
|
||||
<h2><i class="bi bi-person-check"></i> <?= t('Gestión de Destinatarios') ?></h2>
|
||||
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addRecipientModal">
|
||||
<i class="bi bi-plus-circle"></i> Nuevo Destinatario
|
||||
<i class="bi bi-plus-circle"></i> <?= t('Nuevo Destinatario') ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -94,19 +94,19 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<div class="card-body">
|
||||
<?php $discordRecipients = array_filter($recipients, fn($r) => $r['platform'] === 'discord'); ?>
|
||||
<?php if (empty($discordRecipients)): ?>
|
||||
<p class="text-muted">No hay destinatarios de Discord</p>
|
||||
<p class="text-muted"><?= t('No hay destinatarios de Discord') ?></p>
|
||||
<?php else: ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th><?= t('ID') ?></th>
|
||||
<th>Platform ID</th>
|
||||
<th>Nombre</th>
|
||||
<th>Tipo</th>
|
||||
<th>Idioma</th>
|
||||
<th>Creado</th>
|
||||
<th>Acciones</th>
|
||||
<th><?= t('Nombre') ?></th>
|
||||
<th><?= t('Tipo') ?></th>
|
||||
<th><?= t('Idioma') ?></th>
|
||||
<th><?= t('Creado') ?></th>
|
||||
<th><?= t('Acciones') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -115,7 +115,7 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<td><?= $recipient['id'] ?></td>
|
||||
<td><code><?= $recipient['platform_id'] ?></code></td>
|
||||
<td><?= htmlspecialchars($recipient['name']) ?></td>
|
||||
<td><?= $recipient['type'] ?></td>
|
||||
<td><?= t($recipient['type'] === 'channel' ? 'Canal' : 'Usuario') ?></td>
|
||||
<td>
|
||||
<form method="POST" class="d-inline">
|
||||
<input type="hidden" name="action" value="update_language">
|
||||
@@ -131,7 +131,7 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
</td>
|
||||
<td><?= date('d/m/Y', strtotime($recipient['created_at'])) ?></td>
|
||||
<td>
|
||||
<form method="POST" onsubmit="return confirm('¿Eliminar?');" class="d-inline">
|
||||
<form method="POST" onsubmit="return confirm('<?= t('¿Eliminar?') ?>');" class="d-inline">
|
||||
<input type="hidden" name="action" value="delete">
|
||||
<input type="hidden" name="recipient_id" value="<?= $recipient['id'] ?>">
|
||||
<button type="submit" class="btn btn-outline-danger btn-sm">
|
||||
@@ -154,19 +154,19 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<div class="card-body">
|
||||
<?php $telegramRecipients = array_filter($recipients, fn($r) => $r['platform'] === 'telegram'); ?>
|
||||
<?php if (empty($telegramRecipients)): ?>
|
||||
<p class="text-muted">No hay destinatarios de Telegram</p>
|
||||
<p class="text-muted"><?= t('No hay destinatarios de Telegram') ?></p>
|
||||
<?php else: ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th><?= t('ID') ?></th>
|
||||
<th>Platform ID</th>
|
||||
<th>Nombre</th>
|
||||
<th>Tipo</th>
|
||||
<th>Idioma</th>
|
||||
<th>Creado</th>
|
||||
<th>Acciones</th>
|
||||
<th><?= t('Nombre') ?></th>
|
||||
<th><?= t('Tipo') ?></th>
|
||||
<th><?= t('Idioma') ?></th>
|
||||
<th><?= t('Creado') ?></th>
|
||||
<th><?= t('Acciones') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -175,7 +175,7 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<td><?= $recipient['id'] ?></td>
|
||||
<td><code><?= $recipient['platform_id'] ?></code></td>
|
||||
<td><?= htmlspecialchars($recipient['name']) ?></td>
|
||||
<td><?= $recipient['type'] ?></td>
|
||||
<td><?= t($recipient['type'] === 'channel' ? 'Canal' : 'Usuario') ?></td>
|
||||
<td>
|
||||
<form method="POST" class="d-inline">
|
||||
<input type="hidden" name="action" value="update_language">
|
||||
@@ -191,7 +191,7 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
</td>
|
||||
<td><?= date('d/m/Y', strtotime($recipient['created_at'])) ?></td>
|
||||
<td>
|
||||
<form method="POST" onsubmit="return confirm('¿Eliminar?');" class="d-inline">
|
||||
<form method="POST" onsubmit="return confirm('<?= t('¿Eliminar?') ?>');" class="d-inline">
|
||||
<input type="hidden" name="action" value="delete">
|
||||
<input type="hidden" name="recipient_id" value="<?= $recipient['id'] ?>">
|
||||
<button type="submit" class="btn btn-outline-danger btn-sm">
|
||||
@@ -218,13 +218,13 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<input type="hidden" name="action" value="add">
|
||||
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Nuevo Destinatario</h5>
|
||||
<h5 class="modal-title"><?= t('Nuevo Destinatario') ?></h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Plataforma</label>
|
||||
<label class="form-label"><?= t('Plataforma') ?></label>
|
||||
<select name="platform" class="form-select" required>
|
||||
<option value="discord">Discord</option>
|
||||
<option value="telegram">Telegram</option>
|
||||
@@ -232,26 +232,26 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">ID en la plataforma</label>
|
||||
<input type="text" name="platform_id" class="form-control" required placeholder="Ej: 123456789">
|
||||
<small class="text-muted">ID del canal/usuario en Discord o Telegram</small>
|
||||
<label class="form-label"><?= t('ID en la plataforma') ?></label>
|
||||
<input type="text" name="platform_id" class="form-control" required placeholder="<?= t('Ej') ?>: 123456789">
|
||||
<small class="text-muted"><?= t('ID del canal/usuario en Discord o Telegram') ?></small>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Nombre</label>
|
||||
<label class="form-label"><?= t('Nombre') ?></label>
|
||||
<input type="text" name="name" class="form-control" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Tipo</label>
|
||||
<label class="form-label"><?= t('Tipo') ?></label>
|
||||
<select name="type" class="form-select" required>
|
||||
<option value="channel">Canal</option>
|
||||
<option value="user">Usuario</option>
|
||||
<option value="channel"><?= t('Canal') ?></option>
|
||||
<option value="user"><?= t('Usuario') ?></option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Idioma</label>
|
||||
<label class="form-label"><?= t('Idioma') ?></label>
|
||||
<select name="language_code" class="form-select">
|
||||
<?php foreach ($languages as $lang): ?>
|
||||
<option value="<?= $lang['language_code'] ?>">
|
||||
@@ -263,8 +263,8 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
|
||||
<button type="submit" class="btn btn-primary">Agregar</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><?= t('Cancelar') ?></button>
|
||||
<button type="submit" class="btn btn-primary"><?= t('Agregar') ?></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -82,7 +82,7 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
?>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-discord"></i> Test de Conexión Discord</h2>
|
||||
<h2><i class="bi bi-discord"></i> <?= t('Test de Conexión Discord') ?></h2>
|
||||
</div>
|
||||
|
||||
<?php if ($error): ?>
|
||||
@@ -92,11 +92,11 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<?php if (!empty($results)): ?>
|
||||
<?php if ($results['http_code'] === 200): ?>
|
||||
<div class="alert alert-success">
|
||||
<i class="bi bi-check-circle"></i> <strong>Conexión exitosa!</strong> El bot está conectado como <strong><?= htmlspecialchars($results['user']['username']) ?></strong>
|
||||
<i class="bi bi-check-circle"></i> <strong><?= t('Conexión exitosa') ?>!</strong> <?= t('El bot está conectado como') ?> <strong><?= htmlspecialchars($results['user']['username']) ?></strong>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="alert alert-danger">
|
||||
<i class="bi bi-x-circle"></i> <strong>Error de conexión:</strong> Código HTTP <?= $results['http_code'] ?>
|
||||
<i class="bi bi-x-circle"></i> <strong><?= t('Error de conexión') ?>:</strong> <?= t('Código HTTP') ?> <?= $results['http_code'] ?>
|
||||
<?php if (isset($results['user']['message'])): ?>
|
||||
<br><?= htmlspecialchars($results['user']['message']) ?>
|
||||
<?php endif; ?>
|
||||
@@ -105,16 +105,16 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
|
||||
<?php if (isset($results['guild'])): ?>
|
||||
<div class="card border-0 shadow-sm mb-3">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Servidor</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Servidor') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<?php if ($results['guild_code'] === 200): ?>
|
||||
<p><strong>Nombre:</strong> <?= htmlspecialchars($results['guild']['name']) ?></p>
|
||||
<p><strong><?= t('Nombre') ?>:</strong> <?= htmlspecialchars($results['guild']['name']) ?></p>
|
||||
<p><strong>ID:</strong> <?= htmlspecialchars($results['guild']['id']) ?></p>
|
||||
<p><strong>Miembros:</strong> <?= $results['guild']['approximate_member_count'] ?? 'N/A' ?></p>
|
||||
<p><strong><?= t('Miembros') ?>:</strong> <?= $results['guild']['approximate_member_count'] ?? 'N/A' ?></p>
|
||||
<?php else: ?>
|
||||
<div class="alert alert-warning">Error al obtener servidor: Código <?= $results['guild_code'] ?></div>
|
||||
<div class="alert alert-warning"><?= t('Error al obtener servidor') ?>: <?= t('Código') ?> <?= $results['guild_code'] ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -122,14 +122,14 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
|
||||
<?php if (isset($results['test_message'])): ?>
|
||||
<div class="card border-0 shadow-sm mb-3">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Prueba de Envío</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Prueba de Envío') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<?php if ($results['test_message_code'] === 200): ?>
|
||||
<div class="alert alert-success"><i class="bi bi-check-circle"></i> Mensaje enviado correctamente</div>
|
||||
<div class="alert alert-success"><i class="bi bi-check-circle"></i> <?= t('Mensaje enviado correctamente') ?></div>
|
||||
<?php else: ?>
|
||||
<div class="alert alert-danger">Error al enviar mensaje: Código <?= $results['test_message_code'] ?></div>
|
||||
<div class="alert alert-danger"><?= t('Error al enviar mensaje') ?>: <?= t('Código') ?> <?= $results['test_message_code'] ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -137,22 +137,22 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Probar Conexión</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Probar Conexión') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
<input type="hidden" name="action" value="test">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="bi bi-plug"></i> Verificar Conexión
|
||||
<i class="bi bi-plug"></i> <?= t('Verificar Conexión') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Enviar Mensaje de Prueba</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Enviar Mensaje de Prueba') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
@@ -160,17 +160,17 @@ require_once __DIR__ . '/../templates/header.php';
|
||||
<input type="hidden" name="test_message" value="1">
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">ID del Canal</label>
|
||||
<label class="form-label"><?= t('ID del Canal') ?></label>
|
||||
<input type="text" name="test_channel_id" class="form-control" placeholder="123456789012345678">
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Mensaje</label>
|
||||
<textarea name="test_message_text" class="form-control" rows="3">✅ Prueba de conexión desde el sistema de mensajería</textarea>
|
||||
<label class="form-label"><?= t('Mensaje') ?></label>
|
||||
<textarea name="test_message_text" class="form-control" rows="3">✅ <?= t('Prueba de conexión desde el sistema de mensajería') ?></textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-success">
|
||||
<i class="bi bi-send"></i> Enviar Mensaje
|
||||
<i class="bi bi-send"></i> <?= t('Enviar Mensaje') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -41,7 +41,7 @@ require_once __DIR__ . '/templates/header.php';
|
||||
?>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-telegram"></i> Chat Telegram</h2>
|
||||
<h2><i class="bi bi-telegram"></i> <?= t('Chat Telegram') ?></h2>
|
||||
</div>
|
||||
|
||||
<?php if (isset($error)): ?>
|
||||
@@ -51,26 +51,26 @@ require_once __DIR__ . '/templates/header.php';
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Usuarios</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Usuarios') ?></h5>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<?php if (empty($interactions)): ?>
|
||||
<p class="text-muted p-3">No hay interacciones</p>
|
||||
<p class="text-muted p-3"><?= t('No hay interacciones') ?></p>
|
||||
<?php else: ?>
|
||||
<div class="list-group list-group-flush">
|
||||
<?php if ($selectedUser): ?>
|
||||
<a href="chat_telegram.php" class="list-group-item list-group-item-action">
|
||||
<i class="bi bi-arrow-left"></i> Volver a lista
|
||||
<i class="bi bi-arrow-left"></i> <?= t('Volver a lista') ?>
|
||||
</a>
|
||||
<?php else: ?>
|
||||
<?php foreach ($interactions as $user): ?>
|
||||
<a href="chat_telegram.php?user_id=<?= $user['user_id'] ?>" class="list-group-item list-group-item-action">
|
||||
<div class="d-flex w-100 justify-content-between">
|
||||
<h6 class="mb-1"><?= htmlspecialchars($user['first_name'] ?? 'Usuario') ?></h6>
|
||||
<h6 class="mb-1"><?= htmlspecialchars($user['first_name'] ?? t('Usuario')) ?></h6>
|
||||
<small><?= $user['total_interactions'] ?></small>
|
||||
</div>
|
||||
<small class="text-muted">@<?= htmlspecialchars($user['username'] ?? 'sin username') ?></small>
|
||||
<small class="text-muted">@<?= htmlspecialchars($user['username'] ?? t('sin username')) ?></small>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
@@ -82,8 +82,8 @@ require_once __DIR__ . '/templates/header.php';
|
||||
|
||||
<div class="col-md-8">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Historial de Mensajes</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Historial de Mensajes') ?></h5>
|
||||
</div>
|
||||
<div class="card-body" style="max-height: 500px; overflow-y: auto;">
|
||||
<?php if ($selectedUser && !empty($interactions)): ?>
|
||||
@@ -91,13 +91,13 @@ require_once __DIR__ . '/templates/header.php';
|
||||
<div class="mb-3 p-2 <?= $msg['interaction_type'] === 'in' ? 'bg-light' : 'bg-white' ?> rounded">
|
||||
<small class="text-muted">
|
||||
<?= date('d/m/Y H:i:s', strtotime($msg['interaction_date'])) ?>
|
||||
- <?= $msg['interaction_type'] === 'in' ? '📥 Usuario' : '📤 Bot' ?>
|
||||
- <?= $msg['interaction_type'] === 'in' ? '📥 ' . t('Usuario') : '📤 Bot' ?>
|
||||
</small>
|
||||
<p class="mb-0 mt-1"><?= htmlspecialchars($msg['interaction_type'] ?? '') ?></p>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<?php else: ?>
|
||||
<p class="text-muted text-center">Selecciona un usuario para ver el historial</p>
|
||||
<p class="text-muted text-center"><?= t('Selecciona un usuario para ver el historial') ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
18
profile.php
18
profile.php
@@ -57,7 +57,7 @@ require_once __DIR__ . '/templates/header.php';
|
||||
?>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-person"></i> Mi Perfil</h2>
|
||||
<h2><i class="bi bi-person"></i> <?= t('Mi Perfil') ?></h2>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@@ -69,11 +69,11 @@ require_once __DIR__ . '/templates/header.php';
|
||||
</div>
|
||||
<h4><?= htmlspecialchars($user['username']) ?></h4>
|
||||
<span class="badge bg-<?= $user['role'] === 'admin' ? 'danger' : 'primary' ?>">
|
||||
<?= strtoupper($user['role']) ?>
|
||||
<?= strtoupper($user['role'] === 'admin' ? t('Administrador') : t('Usuario')) ?>
|
||||
</span>
|
||||
<hr>
|
||||
<p class="text-muted mb-1">ID: <?= $user['id'] ?></p>
|
||||
<p class="text-muted mb-0">Miembro desde: <?= date('d/m/Y', strtotime($user['created_at'])) ?></p>
|
||||
<p class="text-muted mb-0"><?= t('Miembro desde') ?>: <?= date('d/m/Y', strtotime($user['created_at'])) ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -88,30 +88,30 @@ require_once __DIR__ . '/templates/header.php';
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-key"></i> Cambiar Contraseña</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><i class="bi bi-key"></i> <?= t('Cambiar Contraseña') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
<input type="hidden" name="action" value="change_password">
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Contraseña Actual</label>
|
||||
<label class="form-label"><?= t('Contraseña Actual') ?></label>
|
||||
<input type="password" name="current_password" class="form-control" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Nueva Contraseña</label>
|
||||
<label class="form-label"><?= t('Nueva Contraseña') ?></label>
|
||||
<input type="password" name="new_password" class="form-control" required minlength="6">
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Confirmar Nueva Contraseña</label>
|
||||
<label class="form-label"><?= t('Confirmar Nueva Contraseña') ?></label>
|
||||
<input type="password" name="confirm_password" class="form-control" required minlength="6">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="bi bi-check-circle"></i> Actualizar Contraseña
|
||||
<i class="bi bi-check-circle"></i> <?= t('Actualizar Contraseña') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -58,47 +58,47 @@ require_once __DIR__ . '/templates/header.php';
|
||||
?>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-telegram"></i> Configurar Webhook de Telegram</h2>
|
||||
<h2><i class="bi bi-telegram"></i> <?= t('Configurar Webhook de Telegram') ?></h2>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<i class="bi bi-exclamation-triangle"></i> <strong>Importante:</strong> Telegram requiere obligatoriamente HTTPS con un certificado SSL válido.
|
||||
Asegúrate de que tu dominio tenga SSL activado. La URL propuesta usa: <code><?= htmlspecialchars($currentUrl) ?></code>
|
||||
<i class="bi bi-exclamation-triangle"></i> <strong><?= t('Importante') ?>:</strong> <?= t('Telegram requiere obligatoriamente HTTPS con un certificado SSL válido.') ?>
|
||||
<?= t('Asegúrate de que tu dominio tenga SSL activado.') ?> <?= t('La URL propuesta usa') ?>: <code><?= htmlspecialchars($currentUrl) ?></code>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($results)): ?>
|
||||
<?php if (isset($results['set'])): ?>
|
||||
<?php if ($results['set']['ok']): ?>
|
||||
<div class="alert alert-success">
|
||||
<i class="bi bi-check-circle"></i> <strong>Webhook configurado correctamente!</strong>
|
||||
<i class="bi bi-check-circle"></i> <strong><?= t('Webhook configurado correctamente') ?>!</strong>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="alert alert-danger">
|
||||
<i class="bi bi-x-circle"></i> <strong>Error:</strong> <?= htmlspecialchars($results['set']['description'] ?? 'Unknown error') ?>
|
||||
<i class="bi bi-x-circle"></i> <strong><?= t('Error') ?>:</strong> <?= htmlspecialchars($results['set']['description'] ?? 'Unknown error') ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (isset($results['delete'])): ?>
|
||||
<?php if ($results['delete']['ok']): ?>
|
||||
<div class="alert alert-success">Webhook eliminado correctamente</div>
|
||||
<div class="alert alert-success"><?= t('Webhook eliminado correctamente') ?></div>
|
||||
<?php else: ?>
|
||||
<div class="alert alert-danger">Error: <?= htmlspecialchars($results['delete']['description'] ?? 'Unknown error') ?></div>
|
||||
<div class="alert alert-danger"><?= t('Error') ?>: <?= htmlspecialchars($results['delete']['description'] ?? 'Unknown error') ?></div>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (isset($results['info'])): ?>
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Estado Actual del Webhook</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Estado Actual del Webhook') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<?php if ($results['info']['ok'] && !empty($results['info']['result']['url'])): ?>
|
||||
<p><strong>URL:</strong> <?= htmlspecialchars($results['info']['result']['url']) ?></p>
|
||||
<p><strong>Activo:</strong> <?= $results['info']['result']['url'] ? '✅ Sí' : '❌ No' ?></p>
|
||||
<p><strong>Errores:</strong> <?= $results['info']['result']['last_error_message'] ?? 'Ninguno' ?></p>
|
||||
<p><strong><?= t('Activo') ?>:</strong> <?= $results['info']['result']['url'] ? '✅ ' . t('Sí') : '❌ ' . t('No') ?></p>
|
||||
<p><strong><?= t('Errores') ?>:</strong> <?= $results['info']['result']['last_error_message'] ?? t('Ninguno') ?></p>
|
||||
<?php else: ?>
|
||||
<p class="text-muted">No hay webhook configurado</p>
|
||||
<p class="text-muted"><?= t('No hay webhook configurado') ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -106,11 +106,11 @@ require_once __DIR__ . '/templates/header.php';
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">URL del Webhook</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('URL del Webhook') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="text-muted">URL base para el webhook (se añadirá automáticamente el token de autenticación):</p>
|
||||
<p class="text-muted"><?= t('URL base para el webhook (se añadirá automáticamente el token de autenticación)') ?>:</p>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" value="<?= htmlspecialchars($currentUrl) ?>" readonly>
|
||||
<button class="btn btn-outline-secondary" onclick="navigator.clipboard.writeText('<?= htmlspecialchars($currentUrl) ?>')">
|
||||
@@ -123,18 +123,18 @@ require_once __DIR__ . '/templates/header.php';
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Configurar Webhook</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Configurar Webhook') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
<input type="hidden" name="action" value="set">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">URL del webhook</label>
|
||||
<label class="form-label"><?= t('URL del webhook') ?></label>
|
||||
<input type="text" name="webhook_url" class="form-control" value="<?= htmlspecialchars($currentUrl) ?>" required>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="bi bi-plug"></i> Establecer Webhook
|
||||
<i class="bi bi-plug"></i> <?= t('Establecer Webhook') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
@@ -143,21 +143,21 @@ require_once __DIR__ . '/templates/header.php';
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Opciones</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Opciones') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST" class="mb-2">
|
||||
<input type="hidden" name="action" value="check">
|
||||
<button type="submit" class="btn btn-secondary w-100 mb-2">
|
||||
<i class="bi bi-info-circle"></i> Verificar Estado
|
||||
<i class="bi bi-info-circle"></i> <?= t('Verificar Estado') ?>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<form method="POST" onsubmit="return confirm('¿Eliminar el webhook?');">
|
||||
<form method="POST" onsubmit="return confirm('<?= t('¿Eliminar el webhook?') ?>');">
|
||||
<input type="hidden" name="action" value="delete">
|
||||
<button type="submit" class="btn btn-danger w-100">
|
||||
<i class="bi bi-trash"></i> Eliminar Webhook
|
||||
<i class="bi bi-trash"></i> <?= t('Eliminar Webhook') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -25,7 +25,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$translatedText = $translator->translate($sourceText, $sourceLang, $targetLang);
|
||||
|
||||
if (!$translatedText) {
|
||||
$error = 'Error al traducir. Verifica la conexión con LibreTranslate.';
|
||||
$error = t('Error al traducir. Verifica la conexión con LibreTranslate.');
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$error = $e->getMessage();
|
||||
@@ -45,7 +45,7 @@ require_once __DIR__ . '/templates/header.php';
|
||||
?>
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-translate"></i> Traducir Mensaje</h2>
|
||||
<h2><i class="bi bi-translate"></i> <?= t('Traducir Mensaje') ?></h2>
|
||||
</div>
|
||||
|
||||
<?php if ($error): ?>
|
||||
@@ -55,13 +55,13 @@ require_once __DIR__ . '/templates/header.php';
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Texto Original</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Texto Original') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Idioma de origen</label>
|
||||
<label class="form-label"><?= t('Idioma de origen') ?></label>
|
||||
<select name="source_lang" class="form-select">
|
||||
<?php foreach ($languages as $lang): ?>
|
||||
<option value="<?= $lang['language_code'] ?>" <?= $sourceLang === $lang['language_code'] ? 'selected' : '' ?>>
|
||||
@@ -72,12 +72,12 @@ require_once __DIR__ . '/templates/header.php';
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Texto a traducir</label>
|
||||
<label class="form-label"><?= t('Texto a traducir') ?></label>
|
||||
<textarea name="source_text" class="form-control" rows="8" required><?= htmlspecialchars($sourceText) ?></textarea>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Idioma de destino</label>
|
||||
<label class="form-label"><?= t('Idioma de destino') ?></label>
|
||||
<select name="target_lang" class="form-select">
|
||||
<?php foreach ($languages as $lang): ?>
|
||||
<option value="<?= $lang['language_code'] ?>" <?= $targetLang === $lang['language_code'] ? 'selected' : '' ?>>
|
||||
@@ -88,7 +88,7 @@ require_once __DIR__ . '/templates/header.php';
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="bi bi-translate"></i> Traducir
|
||||
<i class="bi bi-translate"></i> <?= t('Traducir') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
@@ -97,17 +97,17 @@ require_once __DIR__ . '/templates/header.php';
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white border-0">
|
||||
<h5 class="mb-0">Traducción</h5>
|
||||
<div class="card-header border-0">
|
||||
<h5 class="mb-0"><?= t('Traducción') ?></h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<?php if ($translatedText): ?>
|
||||
<textarea class="form-control" rows="12" readonly><?= htmlspecialchars($translatedText) ?></textarea>
|
||||
<button class="btn btn-outline-secondary mt-2" onclick="navigator.clipboard.writeText('<?= htmlspecialchars(addslashes($translatedText)) ?>')">
|
||||
<i class="bi bi-clipboard"></i> Copiar
|
||||
<i class="bi bi-clipboard"></i> <?= t('Copiar') ?>
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<p class="text-muted text-center py-5">Traducción aparecerá aquí</p>
|
||||
<p class="text-muted text-center py-5"><?= t('Traducción aparecerá aquí') ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user