Merge branch 'develop'
9
.gitignore
vendored
@ -1,3 +1,12 @@
|
||||
# Composer
|
||||
/vendor/
|
||||
composer.lock
|
||||
|
||||
# Blade
|
||||
/resources/cache/
|
||||
|
||||
# Uploads
|
||||
/public/uploads/
|
||||
|
||||
# ENV
|
||||
.ENV
|
||||
|
||||
11
TODO.md
Normal file
@ -0,0 +1,11 @@
|
||||
# TODO
|
||||
|
||||
1. Edición de Equipos
|
||||
5. Titulo Web
|
||||
- Notaría Patricio Raby Benavente
|
||||
6. Diseño respuestas
|
||||
- formulario
|
||||
- admin
|
||||
- activacion
|
||||
- subir archivo
|
||||
- aviso
|
||||
48
bootstrap/app.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
use DI\Bridge\Slim\Bridge;
|
||||
|
||||
include_once 'composer.php';
|
||||
|
||||
$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));
|
||||
$dotenv->load();
|
||||
|
||||
$container_builder = new DI\ContainerBuilder();
|
||||
|
||||
$folders = [
|
||||
'common'
|
||||
];
|
||||
if (isset($__environment)) {
|
||||
$folders []= $__environment;
|
||||
}
|
||||
|
||||
$file = 'config.php';
|
||||
foreach ($folders as $folder) {
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [__DIR__, $folder, $file]);
|
||||
if (file_exists($filename)) {
|
||||
$container_builder->addDefinitions($filename);
|
||||
}
|
||||
}
|
||||
|
||||
$file = 'setup.php';
|
||||
foreach ($folders as $folder) {
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [__DIR__, $folder, $file]);
|
||||
if (file_exists($filename)) {
|
||||
$container_builder->addDefinitions($filename);
|
||||
}
|
||||
}
|
||||
|
||||
$container = $container_builder->build();
|
||||
$app = Bridge::create($container);
|
||||
$app->setBasePath($container->get('urls.base'));
|
||||
$app->addRoutingMiddleware();
|
||||
$app->addErrorMiddleware(true, true, true);
|
||||
|
||||
$file = 'middleware.php';
|
||||
foreach ($folders as $folder) {
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [__DIR__, $folder, $file]);
|
||||
if (file_exists($filename)) {
|
||||
include_once $filename;
|
||||
}
|
||||
}
|
||||
|
||||
include_once implode(DIRECTORY_SEPARATOR, [$app->getContainer()->get('folders.routes'), 'router.php']);
|
||||
14
bootstrap/common/config.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
return [
|
||||
'folders.base' => dirname(__DIR__, 2),
|
||||
'folders.resources' => DI\string(implode(DIRECTORY_SEPARATOR, [
|
||||
'{folders.base}',
|
||||
'resources'
|
||||
])),
|
||||
'folders.routes' => DI\string(implode(DIRECTORY_SEPARATOR, [
|
||||
'{folders.resources}',
|
||||
'routes'
|
||||
])),
|
||||
'base_url' => getenv('BASE_URL'),
|
||||
'urls.base' => getenv('URLS_BASE')
|
||||
];
|
||||
8
bootstrap/common/setup.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
|
||||
return [
|
||||
Symfony\Component\Filesystem\Filesystem::class => function(Container $c) {
|
||||
return new Symfony\Component\Filesystem\Filesystem();
|
||||
}
|
||||
];
|
||||
6
bootstrap/composer.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
require_once implode(DIRECTORY_SEPARATOR, [
|
||||
dirname(__DIR__),
|
||||
'vendor',
|
||||
'autoload.php'
|
||||
]);
|
||||
3
bootstrap/web.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
$__environment = 'web';
|
||||
include_once 'app.php';
|
||||
100
bootstrap/web/config.php
Normal file
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
return [
|
||||
'folders.templates' => DI\string(implode(DIRECTORY_SEPARATOR, [
|
||||
'{folders.resources}',
|
||||
'views'
|
||||
])),
|
||||
'folders.cache' => DI\string(implode(DIRECTORY_SEPARATOR, [
|
||||
'{folders.resources}',
|
||||
'cache'
|
||||
])),
|
||||
'folders.public' => DI\string(implode(DIRECTORY_SEPARATOR, [
|
||||
'{folders.base}',
|
||||
'public'
|
||||
])),
|
||||
'folders.upload' => DI\string(implode(DIRECTORY_SEPARATOR, [
|
||||
'{folders.public}',
|
||||
'uploads'
|
||||
])),
|
||||
'folders.data' => DI\string(implode(DIRECTORY_SEPARATOR, [
|
||||
'{folders.resources}',
|
||||
'data'
|
||||
])),
|
||||
'blade_template_path' => DI\get('folders.templates'),
|
||||
'blade_cache_path' => DI\get('folders.cache'),
|
||||
'urls.assets' => DI\string(implode('/', [
|
||||
'{urls.base}',
|
||||
'assets'
|
||||
])),
|
||||
'urls.images' => DI\string(implode('/', [
|
||||
'{urls.assets}',
|
||||
'images'
|
||||
])),
|
||||
'urls.styles' => DI\string(implode('/', [
|
||||
'{urls.assets}',
|
||||
'styles'
|
||||
])),
|
||||
'urls.scripts' => DI\string(implode('/', [
|
||||
'{urls.assets}',
|
||||
'scripts'
|
||||
])),
|
||||
'urls.fonts' => DI\string(implode('/', [
|
||||
'{urls.assets}',
|
||||
'fonts'
|
||||
])),
|
||||
'urls.uploads' => DI\string(implode('/', [
|
||||
'{urls.base}',
|
||||
'uploads'
|
||||
])),
|
||||
'urls.metro.logo' => 'https://img.freepik.com/free-icon/santiago-metro-logo_318-66588.jpg?size=338&ext=jpg',
|
||||
'urls.notaria.turno' => 'https://www.notariosyconservadores.cl/notarias-de-turno/',
|
||||
'urls.fojas' => 'http://fojas.cl/?motv=vista_descarga_web&cons_sel=not_patricrabybenavent',
|
||||
'urls.atencion' => 'https://zeroq.cl/#/local/notaria-patricio-raby/48',
|
||||
'urls.atencion.logo' => 'https://zeroq.cl/img/logo-small.png',
|
||||
'urls.map' => 'https://maps.google.com/maps?hl=es&q=Notaria%20Patricio%20Raby+(Notaria%20Patricio%20Raby)&ie=UTF8&z=16&iwloc=B&output=embed',
|
||||
'urls.map2' => 'https://www.google.com/maps/embed/v1/place?q=notaria+patricio+raby&key=AIzaSyBFw0Qbyq9zTFTd-tUY6dZWTgaQzuU17R8',
|
||||
'urls.direccion' => 'https://goo.gl/maps/xcxs1SQ9BPAbUDi69',
|
||||
'styles' => [
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.4/semantic.min.css',
|
||||
DI\string(implode('/', ['{urls.styles}', 'iconmoon.css'])),
|
||||
'https://fonts.googleapis.com/css?family=Roboto&subset=latin&display=swap'
|
||||
],
|
||||
'fonts' => [
|
||||
'application/octet-stream' => [
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.4/themes/default/assets/fonts/brand-icons.ttf',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.4/themes/default/assets/fonts/icons.ttf',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.4/themes/default/assets/fonts/outline-icons.ttf',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.4/themes/default/assets/fonts/brand-icons.woff2',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.4/themes/default/assets/fonts/icons.woff2',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.4/themes/default/assets/fonts/outline-icons.woff2'
|
||||
],
|
||||
'application/x-font-ttf' => [
|
||||
DI\string(implode('/', ['{urls.fonts}', 'iconmoon.ttf'])),
|
||||
DI\string(implode('/', ['{urls.fonts}', 'iconmoon.woff'])),
|
||||
DI\string(implode('/', ['{urls.fonts}', 'iconmoon.eof']))
|
||||
]
|
||||
],
|
||||
'email.recepcion' => 'recepcion@notariaraby.cl',
|
||||
'email.administrativo' => 'vwielandt@notariaraby.cl',
|
||||
'email' => [
|
||||
'host' => 'mail.notariaraby.cl',
|
||||
'username' => 'contacto@notariaraby.cl',
|
||||
'password' => 'ntrco2020'
|
||||
],
|
||||
'scripts' => [
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.4/semantic.min.js',
|
||||
'https://friconix.com/cdn/friconix.js'
|
||||
],
|
||||
'app.cookie.name' => 'login',
|
||||
'app.cookie.time' => 20 * 60 * 60, // 20 min
|
||||
'files.login' => 'login.yml',
|
||||
'urls.admin' => DI\string(implode('/', [
|
||||
'{urls.base}',
|
||||
'admin'
|
||||
])),
|
||||
'urls.login' => DI\string(implode('/', [
|
||||
'{urls.admin}',
|
||||
'login'
|
||||
]))
|
||||
];
|
||||
2
bootstrap/web/middleware.php
Normal file
@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$app->add(new ProVM\NotariaRaby\Common\Middleware\Blade($app->getContainer()));
|
||||
71
bootstrap/web/setup.php
Normal file
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
|
||||
return [
|
||||
Slim\Views\Blade::class => function(Container $container) {
|
||||
$manager = $container->get(ProVM\Common\Service\Filemanager::class);
|
||||
$horario = $manager->folder('data')->load('horario.yml');
|
||||
return new Slim\Views\Blade(
|
||||
$container->get('blade_template_path'),
|
||||
$container->get('blade_cache_path'),
|
||||
null,
|
||||
[
|
||||
'urls' => (object) [
|
||||
'base' => $container->get('base_url'),
|
||||
'assets' => (object) [
|
||||
'images' => $container->get('urls.images'),
|
||||
'styles' => $container->get('urls.styles'),
|
||||
'scripts' => $container->get('urls.scripts'),
|
||||
'fonts' => $container->get('urls.fonts')
|
||||
],
|
||||
'fojas' => $container->get('urls.fojas'),
|
||||
'notaria_turno' => $container->get('urls.notaria.turno'),
|
||||
'atencion' => (object) [
|
||||
'url' => $container->get('urls.atencion'),
|
||||
'logo' => $container->get('urls.atencion.logo')
|
||||
],
|
||||
'uploads' => $container->get('urls.uploads'),
|
||||
'direccion' => $container->get('urls.direccion'),
|
||||
'admin' => $container->get('urls.admin')
|
||||
],
|
||||
'horario' => $horario,
|
||||
'styles' => $container->get('styles'),
|
||||
'fonts' => $container->get('fonts'),
|
||||
'scripts' => $container->get('scripts')
|
||||
]
|
||||
);
|
||||
},
|
||||
ProVM\Common\Service\Filemanager::class => function(Container $c) {
|
||||
$manager = new ProVM\Common\Service\Filemanager($c->get(Symfony\Component\Filesystem\Filesystem::class), $c->get('folders.upload'));
|
||||
$manager->addFolder('data', $c->get('folders.data'));
|
||||
return $manager;
|
||||
},
|
||||
ProVM\NotariaRaby\Common\Service\Login::class => function(Container $c) {
|
||||
return new ProVM\NotariaRaby\Common\Service\Login(
|
||||
$c->get('app.cookie.name'),
|
||||
$c->get('app.cookie.time'),
|
||||
$c->get('urls.admin'),
|
||||
getenv('ADMIN_PASSWORD'),
|
||||
$c->get('files.login'),
|
||||
$c->get(ProVM\Common\Service\Filemanager::class)
|
||||
);
|
||||
},
|
||||
ProVM\NotariaRaby\Common\Middleware\Auth::class => function(Container $c) {
|
||||
return new ProVM\NotariaRaby\Common\Middleware\Auth(
|
||||
['admin'],
|
||||
$c->get('urls.login'),
|
||||
$c->get(ProVM\NotariaRaby\Common\Service\Login::class)
|
||||
);
|
||||
},
|
||||
Nette\Mail\SendmailMailer::class => DI\create(),
|
||||
Nette\Mail\SmtpMailer::class => function(Container $c) {
|
||||
return new Nette\Mail\SmtpMailer($c->get('email'));
|
||||
},
|
||||
Nette\Mail\FallbackMailer::class => function(Container $c) {
|
||||
return new Nette\Mail\FallbackMailer([
|
||||
$c->get(Nette\Mail\SmtpMailer::class),
|
||||
$c->get(Nette\Mail\SendmailMailer::class)
|
||||
]);
|
||||
},
|
||||
Nette\Mail\Message::class => DI\create()
|
||||
];
|
||||
30
common/Controller/Web/Admin/Admin.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Controller\Web\Admin;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Slim\Views\Blade as View;
|
||||
use Carbon\Carbon;
|
||||
use ProVM\Common\Service\Filemanager;
|
||||
|
||||
class Admin {
|
||||
public function __invoke(Request $request, Response $response, Filemanager $filemanager, View $view): Response {
|
||||
$filename = 'aviso.yml';
|
||||
$aviso = $filemanager->folder('data')->load($filename);
|
||||
if (!$aviso) {
|
||||
$aviso = (object) [
|
||||
'titulo' => '',
|
||||
'contenido' => '',
|
||||
'activo' => false
|
||||
];
|
||||
}
|
||||
$months = (object) ['full' => [], 'short' => []];
|
||||
$m = Carbon::createFromDate(0, 1, 1);
|
||||
for ($i = 0; $i < 12; $i ++) {
|
||||
$months->full []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMMM'));
|
||||
$months->short []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMM'));
|
||||
}
|
||||
$transparencia = $filemanager->folder('data')->load('transparencia.yml')->activo;
|
||||
return $view->render($response, 'admin.admin', compact('aviso', 'transparencia', 'months'));
|
||||
}
|
||||
}
|
||||
41
common/Controller/Web/Admin/Clave.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
namespace ProVm\NotariaRaby\Common\Controller\Web\Admin;
|
||||
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Slim\Views\Blade as View;
|
||||
use ProVM\Common\Service\Filemanager;
|
||||
use ProVM\NotariaRaby\Common\Service\Login;
|
||||
|
||||
class Clave {
|
||||
public function __invoke(Request $request, Response $response, View $view): Response {
|
||||
return $view->render($response, 'admin.clave');
|
||||
}
|
||||
public function do_edit(Request $request, Response $response, Container $container, Filemanager $filemanager, Login $service): Response {
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
dirname(__DIR__, 4),
|
||||
'.env'
|
||||
]);
|
||||
$vars = [];
|
||||
if (file_exists($filename)) {
|
||||
$vars = explode(PHP_EOL, trim(file_get_contents($filename)));
|
||||
}
|
||||
$i = 0;
|
||||
foreach ($vars as $i => $var) {
|
||||
if (strpos($var, 'ADMIN_PASSWORD=') !== false) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
$post = $request->getParsedBody();
|
||||
$enc = password_hash($post['clave'], \PASSWORD_DEFAULT);
|
||||
$vars[$i] = implode('=', [
|
||||
'ADMIN_PASSWORD',
|
||||
'"' . $enc . '"'
|
||||
]);
|
||||
file_put_contents($filename, implode(PHP_EOL, $vars));
|
||||
return $response
|
||||
->withHeader('Location', $container->get('urls.admin'))
|
||||
->withStatus(301);
|
||||
}
|
||||
}
|
||||
36
common/Controller/Web/Admin/Documentos.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Controller\Web\Admin;
|
||||
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use ProVM\Common\Service\Filemanager;
|
||||
|
||||
class Documentos {
|
||||
public function upload(Request $request, Response $response, Filemanager $filemanager, Container $container): Response {
|
||||
$post = $request->getParsedBody();
|
||||
$files = $request->getUploadedFiles();
|
||||
$file = $files['archivo'];
|
||||
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.upload'),
|
||||
$post['filename']
|
||||
]);
|
||||
if (isset($post['month'])) {
|
||||
$filename .= '_' . implode('_', array_reverse(explode(' ', $post['month'])));
|
||||
}
|
||||
$filename .= '.pdf';
|
||||
$file->moveTo($filename);
|
||||
$status = (file_exists($filename) and filemtime($filename) == time());
|
||||
|
||||
$output = [
|
||||
'informacion' => $post,
|
||||
'estado' => $status,
|
||||
'archivo' => $filename
|
||||
];
|
||||
$response->getBody()->write(json_encode($output));
|
||||
return $response
|
||||
->withHeader('Content-Type', 'application/json')
|
||||
->withStatus(201);
|
||||
}
|
||||
}
|
||||
26
common/Controller/Web/Admin/Login.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Controller\Web\Admin;
|
||||
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Slim\Views\Blade as View;
|
||||
use ProVM\NotariaRaby\Common\Service\Login as Service;
|
||||
|
||||
class Login {
|
||||
public function __invoke(Request $request, Response $response, View $view): Response {
|
||||
return $view->render($response, 'admin.login');
|
||||
}
|
||||
public function do_login(Request $request, Response $response, Service $login, Container $container): Response {
|
||||
$login->login($request);
|
||||
return $response
|
||||
->withHeader('Location', $container->get('urls.admin'))
|
||||
->withStatus(302);
|
||||
}
|
||||
public function logout(Request $request, Response $response, Service $login, Container $container): Response {
|
||||
$login->logout();
|
||||
return $response
|
||||
->withHeader('Location', $container->get('urls.base'))
|
||||
->withStatus(302);
|
||||
}
|
||||
}
|
||||
39
common/Controller/Web/Admin/Notificacion.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Controller\Web\Admin;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use ProVM\Common\Service\Filemanager;
|
||||
|
||||
class Notificacion {
|
||||
public function do_edit(Request $request, Response $response, Filemanager $filemanager): Response {
|
||||
$post = $request->getParsedBody();
|
||||
$filename = 'aviso.yml';
|
||||
$notificacion = $filemanager->folder('data')->load($filename);
|
||||
if (!$notificacion) {
|
||||
$notificacion = (object) [
|
||||
'titulo' => '',
|
||||
'contenido' => '',
|
||||
'activo' => false
|
||||
];
|
||||
}
|
||||
if (isset($post['titulo'])) {
|
||||
$notificacion->titulo = trim($post['titulo']);
|
||||
$notificacion->contenido = trim($post['contenido']);
|
||||
}
|
||||
if (isset($post['activo'])) {
|
||||
$notificacion->activo = json_decode($post['activo']);
|
||||
}
|
||||
$status = $filemanager->folder('data')->save($filename, $notificacion);
|
||||
|
||||
$output = [
|
||||
'informacion' => $post,
|
||||
'editado' => $notificacion,
|
||||
'estado' => ($status !== false) ? 'ok' : 'error'
|
||||
];
|
||||
$response->getBody()->write(json_encode($output));
|
||||
return $response
|
||||
->withHeader('Content-Type', 'application/json')
|
||||
->withStatus(201);
|
||||
}
|
||||
}
|
||||
35
common/Controller/Web/Admin/Transparencia.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Controller\Web\Admin;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use ProVM\Common\Service\Filemanager;
|
||||
|
||||
class Transparencia {
|
||||
public function do_edit(Request $request, Response $response, Filemanager $filemanager): Response {
|
||||
$post = $request->getParsedBody();
|
||||
$filename = 'transparencia.yml';
|
||||
$transparencia = $filemanager->folder('data')->load($filename);
|
||||
if (!$transparencia) {
|
||||
$transparencia = (object) [
|
||||
'descripcion' => '',
|
||||
'funciones' => '',
|
||||
'activo' => false
|
||||
];
|
||||
}
|
||||
if (isset($post['activo'])) {
|
||||
$transparencia->activo = json_decode($post['activo']);
|
||||
}
|
||||
$status = $filemanager->folder('data')->save($filename, $transparencia);
|
||||
|
||||
$output = [
|
||||
'informacion' => $post,
|
||||
'editado' => $transparencia,
|
||||
'estado' => ($status !== false) ? 'ok' : 'error'
|
||||
];
|
||||
$response->getBody()->write(json_encode($output));
|
||||
return $response
|
||||
->withHeader('Content-Type', 'application/json')
|
||||
->withStatus(201);
|
||||
}
|
||||
}
|
||||
64
common/Controller/Web/Contacto.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Controller\Web;
|
||||
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Slim\Views\Blade as View;
|
||||
use Nette\Mail\FallbackMailer as Mailer;
|
||||
use Nette\Mail\Message;
|
||||
|
||||
class Contacto {
|
||||
public function __invoke(Request $request, Response $response, View $view, Container $container): Response {
|
||||
$url = $container->get('urls.map');
|
||||
return $view->render($response, 'contacto', compact('url'));
|
||||
}
|
||||
public function formulario(Request $request, Response $response, Mailer $mailer, Container $container): Response {
|
||||
$post = $request->getParsedBody();
|
||||
|
||||
$body = [];
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.templates'),
|
||||
'contacto',
|
||||
'email.php'
|
||||
]);
|
||||
$html = file_get_contents($filename);
|
||||
foreach ($post as $key => $val) {
|
||||
$body []= ucwords($key) . ': ' . $val;
|
||||
$html = str_replace('{{$' . $key . '}}', $val, $html);
|
||||
}
|
||||
$body = implode(PHP_EOL, $body);
|
||||
|
||||
$subject = 'Contacto Web - ' . $post['nombre'];
|
||||
|
||||
$message = $container->make(Message::class)
|
||||
->setFrom($container->get('email')['username'])
|
||||
->addTo($container->get('email.recepcion'))
|
||||
->addCc($container->get('email.administrativo'))
|
||||
->setSubject($subject)
|
||||
->setBody($body)
|
||||
->setHTMLBody($html);
|
||||
$mailer->send($message);
|
||||
$message = $container->make(Message::class)
|
||||
->setFrom($container->get('email')['username'])
|
||||
->addTo($post['email'], $post['nombre'])
|
||||
->setSubject($subject)
|
||||
->setBody('Su correo a Notaría Patricio Raby Benavente ha sido recibido.');
|
||||
$mailer->send($message);
|
||||
|
||||
$output = [
|
||||
'informacion' => $post,
|
||||
'mail' => [
|
||||
'from' => $post['email'],
|
||||
'to' => $container->get('email.recepcion'),
|
||||
'cc' => $container->get('email.administrativo'),
|
||||
'asunto' => $subject,
|
||||
'mensaje' => $body
|
||||
]
|
||||
];
|
||||
$response->getBody()->write(json_encode($output));
|
||||
return $response
|
||||
->withHeader('Content-Type', 'application/json')
|
||||
->withStatus(201);
|
||||
}
|
||||
}
|
||||
68
common/Controller/Web/Home.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Controller\Web;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
use Slim\Views\Blade as View;
|
||||
use Carbon\Carbon;
|
||||
use ProVM\Common\Service\Filemanager;
|
||||
|
||||
class Home {
|
||||
public function __invoke(Request $request, Response $response, View $view, Filemanager $manager, Container $container): Response {
|
||||
$banner = (object) [
|
||||
'titulo' => "5° NOTARÍA DE SANTIAGO",
|
||||
'contenido' => '<a href="' . $container->get('urls.direccion') . '">Gertrudis Echenique 30, of. 32, El Golf' . "\n" . '<i class="large icon icon-metro"></i> Metro Alcantara</a>'
|
||||
];
|
||||
|
||||
$links = $manager->folder('data')->load('documentos.yml');
|
||||
array_walk($links->documentos, function(&$item) use ($container) {
|
||||
$item = new Documento($container, $item->texto, $item->uri, $item->icono);
|
||||
});
|
||||
array_walk($links->consulta, function(&$item) {
|
||||
$item = new Link($item->texto, $item->uri);
|
||||
});
|
||||
$aviso = $manager->folder('data')->load('aviso.yml');
|
||||
$transparencia = $manager->folder('data')->load('transparencia.yml')->activo;
|
||||
$months = (object) ['full' => [], 'short' => []];
|
||||
$m = Carbon::createFromDate(0, 1, 1);
|
||||
for ($i = 0; $i < 12; $i ++) {
|
||||
$months->full []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMMM'));
|
||||
$months->short []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMM'));
|
||||
}
|
||||
return $view->render($response, 'home', compact('banner', 'aviso', 'links', 'transparencia', 'months'));
|
||||
}
|
||||
}
|
||||
|
||||
class Documento {
|
||||
protected $icono;
|
||||
protected $texto;
|
||||
protected $uri;
|
||||
|
||||
public function __construct(Container $container, string $nombre, string $uri = '', string $icono = '') {
|
||||
$this->icono = $icono;
|
||||
if ($icono == '') {
|
||||
$this->icono = implode('/', [$container->get('urls.images'), $nombre . '.png']);
|
||||
}
|
||||
$this->texto = $nombre;
|
||||
$this->uri = $uri;
|
||||
if ($uri == '') {
|
||||
$this->uri = implode('/', [$container->get('urls.base'), 'documentos', strtolower($nombre)]);
|
||||
}
|
||||
}
|
||||
public function show(): string {
|
||||
return '<a href="' . $this->uri . '"><i class="large ' . $this->icono . ' icon"></i> ' . $this->texto . '</a>';
|
||||
}
|
||||
}
|
||||
class Link {
|
||||
protected $uri;
|
||||
protected $texto;
|
||||
|
||||
public function __construct(string $texto, string $uri) {
|
||||
$this->texto = $texto;
|
||||
$this->uri = $uri;
|
||||
}
|
||||
public function show(): string {
|
||||
return '<a href="' . $this->uri . '">' . $this->texto . '</a>';
|
||||
}
|
||||
}
|
||||
24
common/Controller/Web/Notaria.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Controller\Web;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Slim\Views\Blade as View;
|
||||
use Carbon\Carbon;
|
||||
use ProVM\Common\Service\Filemanager;
|
||||
|
||||
class Notaria {
|
||||
public function __invoke(Request $request, Response $response, View $view, Filemanager $filemanager): Response {
|
||||
$filename = 'equipos.yml';
|
||||
$equipos = $filemanager->folder('data')->load($filename);
|
||||
$filename = 'transparencia.yml';
|
||||
$transparencia = $filemanager->folder('data')->load($filename);
|
||||
$months = (object) ['full' => [], 'short' => []];
|
||||
$m = Carbon::createFromDate(0, 1, 1);
|
||||
for ($i = 0; $i < 12; $i ++) {
|
||||
$months->full []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMMM'));
|
||||
$months->short []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMM'));
|
||||
}
|
||||
return $view->render($response, 'notaria', compact('equipos', 'transparencia', 'months'));
|
||||
}
|
||||
}
|
||||
28
common/Middleware/Auth.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Middleware;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Server\RequestHandlerInterface as Handler;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
use ProVM\NotariaRaby\Common\Service\Login;
|
||||
|
||||
class Auth {
|
||||
protected $users;
|
||||
public function __construct(array $users, string $login_url, Login $service) {
|
||||
$this->users = $users;
|
||||
$this->login_url = $login_url;
|
||||
$this->login = $service;
|
||||
}
|
||||
public function __invoke(Request $request, Handler $handler): Response {
|
||||
$response = $handler->handle($request);
|
||||
|
||||
$is_logged_in = $this->login->checkAuth($request);
|
||||
if (!$is_logged_in and $request->getRequestTarget() != $this->login_url and $request->getRequestTarget() != implode('/', [dirname($this->login_url), 'logout'])) {
|
||||
return $response
|
||||
->withHeader('Location', $this->login_url)
|
||||
->withStatus(301);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
21
common/Middleware/Blade.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Middleware;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Server\RequestHandlerInterface as Handler;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Container\ContainerInterface as Container;
|
||||
|
||||
class Blade {
|
||||
protected $container;
|
||||
public function __construct(Container $container) {
|
||||
$this->container = $container;
|
||||
}
|
||||
public function __invoke(Request $request, Handler $handler): Response {
|
||||
$folder = $this->container->get('folders.cache');
|
||||
if (!file_exists($folder)) {
|
||||
mkdir($folder);
|
||||
}
|
||||
return $handler->handle($request);
|
||||
}
|
||||
}
|
||||
122
common/Service/Login.php
Normal file
@ -0,0 +1,122 @@
|
||||
<?php
|
||||
namespace ProVM\NotariaRaby\Common\Service;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Carbon\Carbon;
|
||||
use ProVM\Common\Service\Filemanager;
|
||||
|
||||
class Login {
|
||||
protected $cookie_name;
|
||||
protected $time_limit;
|
||||
protected $password;
|
||||
protected $filename;
|
||||
protected $manager;
|
||||
public function __construct(string $cookie_name, int $time_limit, string $base_url, string $encrypted_password, string $login_file, Filemanager $filemanager) {
|
||||
$this->cookie_name = $cookie_name;
|
||||
$this->base_url = $base_url;
|
||||
$this->time_limit = $time_limit;
|
||||
$this->password = $encrypted_password;
|
||||
$this->filename = $login_file;
|
||||
$this->manager = $filemanager;
|
||||
}
|
||||
|
||||
protected $selector;
|
||||
protected $token;
|
||||
public function loadCookie() {
|
||||
if (isset($_COOKIE[$this->cookie_name])) {
|
||||
list($s, $t) = \explode(':', $_COOKIE[$this->cookie_name]);
|
||||
$this->selector = $s;
|
||||
$this->token = $t;
|
||||
}
|
||||
}
|
||||
public function saveCookie() {
|
||||
$now = Carbon::now();
|
||||
$exp = $now->addSeconds($this->time_limit);
|
||||
\setcookie($this->cookie_name, implode(':', [$this->selector, $this->token]), $exp->timestamp, $this->base_url);
|
||||
}
|
||||
public function removeCookie() {
|
||||
\setcookie($this->cookie_name, '', Carbon::now()->timestamp, '/');
|
||||
}
|
||||
protected function generateToken() {
|
||||
$this->selector = bin2hex(\random_bytes(12));
|
||||
$this->token = bin2hex(\random_bytes(20));
|
||||
}
|
||||
protected $data;
|
||||
public function getData() {
|
||||
if ($this->data === null) {
|
||||
$this->data = (object) [
|
||||
'ip' => 0,
|
||||
'token' => '',
|
||||
'time' => 0
|
||||
];
|
||||
if ($this->manager->folder('data')->exists($this->filename)) {
|
||||
$this->data = $this->manager->folder('data')->load($this->filename);
|
||||
$this->data->time = Carbon::parse($this->data->time);
|
||||
}
|
||||
}
|
||||
}
|
||||
protected $ip;
|
||||
public function getIp(Request $request) {
|
||||
if ($this->ip === null) {
|
||||
$this->ip = $request->getHeader('host')[0];
|
||||
}
|
||||
return $this->ip;
|
||||
}
|
||||
|
||||
protected $is_logged_in;
|
||||
public function checkAuth(Request $request): bool {
|
||||
if ($this->is_logged_in === null) {
|
||||
$this->loadCookie();
|
||||
if ($this->selector === null) {
|
||||
$this->is_logged_in = false;
|
||||
return false;
|
||||
}
|
||||
$this->getIp($request);
|
||||
$this->getData();
|
||||
|
||||
if ($this->data->ip != $this->ip) {
|
||||
$this->is_logged_in = false;
|
||||
return false;
|
||||
}
|
||||
if ($this->data->token != implode(':', [$this->selector, $this->token])) {
|
||||
$this->is_logged_in = false;
|
||||
return false;
|
||||
}
|
||||
$now = Carbon::now();
|
||||
if ($this->data->time->copy()->addSeconds($this->time_limit)->diffInSeconds($now->copy()) < 0) {
|
||||
$this->is_logged_in = false;
|
||||
}
|
||||
$this->is_logged_in = true;
|
||||
}
|
||||
return $this->is_logged_in;
|
||||
}
|
||||
public function login(Request $request): bool {
|
||||
$post = $request->getParsedBody();
|
||||
if (!password_verify($post['clave'], $this->password)) {
|
||||
return false;
|
||||
}
|
||||
$this->generateToken();
|
||||
$this->getIp($request);
|
||||
$time = Carbon::now();
|
||||
$data = [
|
||||
'ip' => $this->ip,
|
||||
'token' => implode(':', [$this->selector, $this->token]),
|
||||
'time' => $time->format('Y-m-d H:i')
|
||||
];
|
||||
$this->manager->folder('data')->save($this->filename, $data);
|
||||
$this->saveCookie();
|
||||
$this->is_logged_in = true;
|
||||
return true;
|
||||
}
|
||||
public function logout(): bool {
|
||||
$this->removeCookie();
|
||||
$data = [
|
||||
'ip' => 0,
|
||||
'token' => ':',
|
||||
'time' => 0
|
||||
];
|
||||
$this->manager->folder('data')->save($this->filename, $data);
|
||||
$this->is_logged_in = false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
38
composer.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"name": "provm/notaria_raby",
|
||||
"description": "Pagina web de Notaria Raby",
|
||||
"type": "project",
|
||||
"require": {
|
||||
"slim/slim": "^4.4",
|
||||
"nyholm/psr7": "^1.2",
|
||||
"nyholm/psr7-server": "^0.4.1",
|
||||
"rubellum/slim-blade-view": "^0.1.1",
|
||||
"php-di/slim-bridge": "^3.0",
|
||||
"zeuxisoo/slim-whoops": "^0.7.2",
|
||||
"whoops/soap": "^1.0",
|
||||
"symfony/var-dumper": "^5.0",
|
||||
"symfony/filesystem": "^5.0",
|
||||
"tuupola/slim-basic-auth": "^3.2",
|
||||
"mustangostang/spyc": "^0.6.3",
|
||||
"nette/mail": "^3.1",
|
||||
"nesbot/carbon": "^2.32",
|
||||
"vlucas/phpdotenv": "^4.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5",
|
||||
"kint-php/kint": "^3.3"
|
||||
},
|
||||
"license": "UNLICENSED",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Aldarien",
|
||||
"email": "aldarien85@gmail.com"
|
||||
}
|
||||
],
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ProVM\\NotariaRaby\\Common\\": "common",
|
||||
"ProVM\\Common\\": "provm/common"
|
||||
}
|
||||
}
|
||||
}
|
||||
19
provm/common/Basic/Controller.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
namespace ProVM\Common\Basic;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use ProVM\Common\Definition\Controller as ControllerInterface;
|
||||
|
||||
abstract class Controller implements ControllerInterface {
|
||||
public function withJSON(Response $response, string $data): Response {
|
||||
$response->getBody()->write(json_encode($data));
|
||||
return $response
|
||||
->withHeader('Content-Type', 'application/json')
|
||||
->withStatus(201);
|
||||
}
|
||||
public function withRedirect(Response $response, string $uri): Response {
|
||||
return $response
|
||||
->withHeader('Location', $uri)
|
||||
->withStatus(303);
|
||||
}
|
||||
}
|
||||
9
provm/common/Definition/Controller.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace ProVM\Common\Definition;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
|
||||
interface Controller {
|
||||
public function withJSON(Response $response, string $data): Response;
|
||||
public function withRedirect(string $uri): Response;
|
||||
}
|
||||
83
provm/common/Service/Filemanager.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
namespace ProVM\Common\Service;
|
||||
|
||||
use Spyc as Yaml;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
|
||||
class Filemanager {
|
||||
protected $filesystem;
|
||||
protected $base_folder;
|
||||
public function __construct(Filesystem $filesystem, string $base_folder) {
|
||||
$this->filesystem = $filesystem;
|
||||
$this->base_folder = $base_folder;
|
||||
}
|
||||
protected function fullPath(string $filename): string {
|
||||
if ($this->filesystem->exists($filename)) {
|
||||
return $filename;
|
||||
}
|
||||
return implode(DIRECTORY_SEPARATOR, [
|
||||
$this->base_folder,
|
||||
$filename
|
||||
]);
|
||||
}
|
||||
protected $folders;
|
||||
public function addFolder(string $name, string $folder) {
|
||||
if ($this->folders === null) {
|
||||
$this->folders = [];
|
||||
}
|
||||
$this->folders[$name] = $folder;
|
||||
}
|
||||
public function folder(string $name) {
|
||||
return new Filemanager($this->filesystem, $this->folders[$name]);
|
||||
}
|
||||
public function exists(string $filename) {
|
||||
return $this->filesystem->exists($this->fullPath($filename));
|
||||
}
|
||||
public function load(string $filename) {
|
||||
$filename = $this->fullPath($filename);
|
||||
if (!$this->exists($filename)) {
|
||||
return false;
|
||||
}
|
||||
$file = new \SplFileInfo($filename);
|
||||
$method = 'load' . ucfirst($file->getExtension());
|
||||
return $this->parseData($this->{$method}($filename));
|
||||
}
|
||||
protected function loadYml(string $filename) {
|
||||
return Yaml::YAMLLoad($filename);
|
||||
}
|
||||
protected function loadYaml(string $filename) {
|
||||
return $this->loadYml($filename);
|
||||
}
|
||||
protected function loadJson(string $filename) {
|
||||
return json_decode(trim(file_get_contents($filename)));
|
||||
}
|
||||
protected function loadPhp(string $filename) {
|
||||
return include $filename;
|
||||
}
|
||||
protected function parseData($data) {
|
||||
$temp = $data;
|
||||
if (is_array($temp)) {
|
||||
$is_object = false;
|
||||
foreach ($data as $i => $sub) {
|
||||
if (!is_numeric($i)) {
|
||||
$is_object = true;
|
||||
}
|
||||
$temp[$i] = $this->parseData($sub);
|
||||
}
|
||||
if ($is_object) {
|
||||
$temp = (object) $temp;
|
||||
}
|
||||
}
|
||||
return $temp;
|
||||
}
|
||||
public function save(string $filename, $data): bool {
|
||||
if (is_object($data)) {
|
||||
$data = (array) $data;
|
||||
}
|
||||
if (is_array($data)) {
|
||||
$data = Yaml::YAMLDump($data, false, false, true);
|
||||
}
|
||||
$filename = $this->fullPath($filename);
|
||||
return file_put_contents($filename, $data);
|
||||
}
|
||||
}
|
||||
4
public/.htaccess
Normal file
@ -0,0 +1,4 @@
|
||||
RewriteEngine On
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^ index.php [QSA,L]
|
||||
BIN
public/assets/fonts/icomoon.eot
Normal file
23
public/assets/fonts/icomoon.svg
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="icomoon" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="autorizaciones" horiz-adv-x="1084" d="M549.043 833.429c-222.268 0-402.47-180.178-402.47-402.462 0-222.357 180.202-402.543 402.47-402.543 222.276 0 402.494 180.186 402.494 402.543 0 222.276-180.218 402.462-402.494 402.462zM702.139 420.639c0 0 27.947-93.968-44.054-93.968 0 0-2.95-61.754-58.78-61.754s-145.417 0-145.417 0l-92.538-58.739c0 0-35.253-13.173-48.483 14.693-13.206 27.947-76.366 132.228-76.366 132.228s-17.643 23.324 13.206 38.809c30.849 15.541 77.861 49.316 77.861 49.316s-1.479 58.755 2.942 73.448c4.397 14.644 60.21 55.83 91.067 66.094v-133.715c0 0 10.28-60.194 70.49-60.194 60.226 0 69.052 55.822 69.052 55.822l5.892 71.993h154.219c0 0 13.19-7.355 13.19-39.674 0.008-32.311-1.422-54.359-32.279-54.359zM766.761 466.196c0 67.557-41.121 77.829-41.121 77.829h-195.364v-77.829c0 0 0-45.558-41.129-45.558s-39.682 45.558-39.682 45.558 0 60.202 0 114.577c0 54.31 71.977 58.747 71.977 58.747l116.040 1.455c0 0 57.284 38.211 96.95 61.721 39.69 23.51 64.663-58.747 85.248-89.604 20.536-30.857 41.080-51.385 41.080-83.761 0-32.336-94-63.136-94-63.136z" />
|
||||
<glyph unicode="" glyph-name="contacto" horiz-adv-x="1084" d="M422.974 833.429c7.694-8.357 29.636-21.845 35.496-40.385 14.467-46.034 28.569-94.211 29.079-141.724 0.251-29.685-17.675-66.554-39.415-87.947-35.593-35.035-46.188-68.801-20.876-110.197 33.305-54.399 65.229-110.673 106.075-159.1 39.569-46.899 76.544-44.661 128.276-11.614 12.939 8.252 37.734 17.36 45.323 11.298 45.63-36.304 93.136-72.616 129.399-117.527 27.551-34.13 6.773-73.537-24.852-100.579-50.415-43.076-106.94-50.867-169.631-27.753-142.888 52.654-241.681 154.445-308.696 286.139-52.807 103.699-90.137 214-80.924 334.025 6.013 78.435 86.21 163.375 170.746 165.364z" />
|
||||
<glyph unicode="" glyph-name="contratos-y-otros" horiz-adv-x="1084" d="M549.989 833.429c-222.276 0-402.486-180.242-402.486-402.527 0-222.301 180.202-402.486 402.486-402.486s402.494 180.186 402.494 402.486c0 222.284-180.218 402.527-402.494 402.527zM709.873 242.708c0-27.341-22.112-49.526-49.461-49.526h-348.701c-27.317 0-49.445 22.185-49.445 49.526v343.602c0 27.325 22.128 49.502 49.445 49.502h309.957l-59.968-63.305h-230.431v-316.034h309.585v110.043l69.019 72.769v-196.576zM521.533 291.353l-95.867 2.19-5.035 98.72-0.21 0.234 232.419 232.371 101.145-101.145-232.451-232.371zM827.424 597.236l-46.471-46.536-100.692 100.66 46.527 46.471c9.019 9.068 23.607 9.068 32.594 0l68.041-67.977c9.036-8.979 9.036-23.631 0-32.619z" />
|
||||
<glyph unicode="" glyph-name="declaracin" horiz-adv-x="1084" d="M549.989 833.429c-222.276 0-402.486-180.242-402.486-402.543 0-222.276 180.202-402.462 402.486-402.462s402.494 180.186 402.494 402.462c0 222.301-180.218 402.543-402.494 402.543zM589.291 699.715l128.914-128.542h-128.914v128.542zM718.020 223.974c0-15.251-12.39-27.632-27.64-27.632h-324.852c-15.267 0-27.616 12.381-27.616 27.632v450.598c0 15.242 12.349 27.575 27.616 27.575h190.579v-155.399h161.921v-54.197l-123.427-119.612v-75.566c-14.491 3.087-26.274 22.532-42.171 22.532-16.932 0-23.737-15.8-32.336-27.341-0.202 0.622-0.388 1.107-0.614 1.827-2.020 6.134-3.144 12.575-4.421 18.96-2.344 11.719-3.103 24.068-7.233 35.302-4.825 13.173-24.165 22.532-34.962 9.238-15.8-19.445-27.147-67.379-55.28-67.144-27.002 0.251-26.961-41.549 0-41.783 33.855-0.307 47.756 17.74 60.323 39.666 4.267-18.532 11.646-35.124 31.681-42.462 17.95-6.635 37.637 11.355 47.158 25.264 4.817-3.823 9.375-7.411 14.822-10.943 7.072-4.599 15.032-6.134 23.025-5.997v-0.194h120.946l2.465 0.428v-30.752zM687.122 283.998l-68.163 1.633-3.548 70.175-0.186 0.113 165.186 165.186 71.864-71.913-165.153-165.194zM871.479 468.378l-71.565 71.501 33.079 33.112c6.401 6.385 16.762 6.385 23.171 0l48.354-48.354c6.401-6.385 6.401-16.77 0-23.211l-33.039-33.047z" />
|
||||
<glyph unicode="" glyph-name="extranjeros" horiz-adv-x="1084" d="M549.981 833.429c-222.292 0-402.511-180.202-402.511-402.494 0-222.309 180.218-402.511 402.511-402.511s402.527 180.202 402.527 402.511c0 222.292-180.226 402.494-402.527 402.494zM549.981 183.831c-135.622 0-245.552 109.906-245.552 245.568 0 135.622 109.938 245.584 245.552 245.584 135.59 0 245.568-109.962 245.568-245.584 0-135.655-109.97-245.568-245.568-245.568zM723.37 515.068c16.455-11.897 19.494-37.783 22.29-56.614 1.309-8.631 2.804-17.74 3.225-26.492 0.428-6.983 1.641-18.047-1.73-24.124-3.621-6.676-16.374-3.879-22.387-1.519-8.599 3.459-15.525 7.104-21.36 14.095-5.835 6.87-14.798 10.636-19.591 18.047-5.536 8.437-9.359 17.619-6.32 27.697 1.851 6.070 5.463 10.999 8.357 16.592 2.877 5.528 5.916 10.321 9.747 15.057 6.74 8.381 18.168 18.588 29.652 17.255zM631.050 378.977c-4.89 7.468-10.353 13.004-17.74 17.368-8.47 4.987-16.374 4.558-26.581 4.558-18.895 0-37.718-0.97-56.614-0.97-1.746 2.796-3.766 5.108-5.496 6.506-7.169 5.762-14.297 11.177-22.298 15.428-8.025 4.251-14.143 7.605-23.187 9.238-4.857 0.97-10.345 2.19-14.329 4.93-3.952 2.732-5.294 6.562-7.54 9.957-2.158 3.281-5.358 5.415-4.065 10.030 1.026 3.71 5.084 6.506 8.284 8.017 8.591 3.879 19.477 5.956 28.666 7.468 9.626 1.568 14.192-1.649 21.554-7.047 3.168-2.311 7.169-4.987 11.072-5.108 2.659-0.057 9.157 0.857 11.016 2.909 4.267 4.679-2.78 19.736-6.029 23.446-3.031 3.419-6.28 4.93-7.241 9.86-0.695 3.693-0.17 8.874 0.372 12.503 1.35 9.181 9.246 12.284 16.738 15.8 6.126 2.926 17.974 1.527 21.255 9.294 3.176 7.468-4.857 12.826-4.073 20.415 1.010 10.094 10.797 9.359 17.214 15.259 5.407 4.987 2.239 17.134-1.034 22.896-4.3 7.355-10.919 14.030-15.832 21.215-2.012 2.974-4.316 7.767-7.169 10.013-3.249 2.489-7.815 1.705-11.767 1.705-3.79 0-7.831 0.364-11.598 0-6.086-0.622-5.989-2.683-6.045-8.389-0.016-3.766-0.978-7.355-1.293-10.749-0.323-3.71 0.841-7.67-1.608-10.579-5.35-6.385-16.253-4.502-20.754 1.026-5.011 6.070-12.584 13.974-21.369 13.804-7.904-0.121-13.917-7.783-19.372-12.632-6.562-5.779-14.062-9.666-20.932-15.315-8.47-6.991-17.408-13.61-24.723-22.064-6.571-7.532-11.703-15.234-19.97-21.732-3.855-2.99-8.809-5.9-11.589-10.094-2.845-4.251-2.505-9.472-2.384-14.515 2.126-3.047 3.305-6.506 4.235-9.973 1.406-5.164 2.093-5.706 6.029-8.922 7.338-6.021 9.027-16.463 14.483-23.987 5.213-7.185 9.933-16.342 16.148-22.783 7.548-7.783 15.703-13.173 24.27-19.445 7.387-5.399 13.917-10.692 21.627-15.493 7.67-4.817 16.317-9.238 24.399-13.004 9.601-4.445 16.552-9.666 23.842-17.142 2.627-2.732 1.835-2.368 5.698-2.732 0.97-0.057 2.045-0.057 3.12-0.121-0.59-5.221-0.477-10.87-0.776-16.592-0.638-12.204-3.435-28.182 0.348-39.9 2.643-8.211 10.393-11.064 15.8-16.964 6.070-6.562 8.033-15.428 10.781-23.446 5.286-15.428-1.94-33.968 7.912-48.362 2.901-4.251 5.649-3.217 10.644-2.683 4.146 0.428 8.518 0.97 12.559 1.398 9.876 0.97 15.469 1.827 18.928 11.606 5.706 15.978 6.829 32.934 12.794 48.621 3.314 8.737 7.201 16.026 14.119 22.047 6.385 5.471 12.462 9.181 16.471 16.77 8.559 16.034 2.546 32.142-6.967 46.657zM532.055 399.456c-0.477-0.113-0.776-0.428-1.212-0.598-0.234 0.291-0.428 0.663-0.622 1.026l1.835-0.428zM374.644 511.382c0 0.663-0.032 1.317-0.057 2.053-0.17 0.17-0.242 0.485-0.404 0.735l0.461-2.788z" />
|
||||
<glyph unicode="" glyph-name="horario" horiz-adv-x="1084" d="M952.693 430.103c-0.057-221.056-182.263-402.3-403.618-401.678-219.642 0.735-401.622 182.206-401.783 400.66-0.17 224.968 180.622 404.628 406.875 404.345 218.922-0.283 398.639-182.15 398.526-403.327zM549.981 748.206c-173.777 0.339-317.416-144.771-317.077-320.374 0.283-169.986 146.412-314.475 317.586-314.022 172.039 0.453 316.463 143.971 316.867 314.757 0.396 175.434-142.508 319.299-317.376 319.639zM678.879 252.414c-7.92 0-15.776 3.055-21.659 9.221l-143.316 148.836v186.409c0 16.624 13.464 30.024 30.089 30.024 16.584 0 30.040-13.4 30.040-30.024v-162.131l126.449-131.436c11.533-11.929 11.137-30.986-0.792-42.527-5.827-5.544-13.351-8.373-20.811-8.373z" />
|
||||
<glyph unicode="" glyph-name="laboral" horiz-adv-x="1084" d="M549.981 833.429c-222.292 0-402.511-180.202-402.511-402.511 0-222.292 180.218-402.494 402.511-402.494s402.527 180.202 402.527 402.494c0 222.309-180.226 402.511-402.527 402.511zM767.78 222.107c0-15.259-12.325-27.64-27.608-27.64h-324.876c-15.251 0-27.624 12.381-27.624 27.64v161.921h64.017l43.804-80.698 64.461 119.822 23.26-41.63h88.093c9.238 0 16.77 7.476 16.77 16.713 0 9.294-7.532 16.77-16.77 16.77h-68.413l-43.505 77.821-64.017-119.062-23.753 43.747h-67.443v-0.251h-74.741v25.094h58.238v230.382c0 15.234 12.373 27.575 27.624 27.575h190.579v-155.415h161.905v-322.791zM635.398 575.698v124.615l132.381-124.615h-132.381z" />
|
||||
<glyph unicode="" glyph-name="metro" horiz-adv-x="1084" d="M952.693 404.063c-4.203-18.338-7.096-37.12-12.858-54.973-32.57-101.315-102.131-170.391-197.829-210.469-165.461-69.351-324.852-56.468-470.617 52.476-68.276 51.013-111.061 120.097-121.333 206.759-0.242 2.15-1.81 4.154-2.764 6.207 0 17.926 0 35.811 0 53.704 4.211 18.354 7.104 37.136 12.858 54.989 32.57 101.315 102.131 170.382 197.829 210.485 165.461 69.351 324.844 56.444 470.633-52.492 68.276-51.005 111.045-120.097 121.333-206.751 0.234-2.158 1.818-4.154 2.756-6.231-0.008-17.893-0.008-35.779-0.008-53.704zM917.505 424.688c-0.905 85.426-33.112 151.713-90.533 206.016-60.735 57.422-133.86 89.588-216.377 100.24-128.518 16.6-243.895-13.246-339.973-102.575-109.962-102.276-117.842-260.762-19.647-373.836 62.457-71.961 143.284-110.092 236.678-123.297 114.876-16.261 220.458 7.282 313.254 77.796 72.446 55.054 114.052 127.977 116.597 215.657zM758.3 255.752c-34.413 59.386-67.411 116.387-101.896 175.983-34.485-59.499-67.759-116.856-101.921-175.846-34.178 59.014-67.161 115.999-101.783 175.749-34.324-59.176-67.508-116.387-101.921-175.773-33.475 57.939-65.625 113.292-97.241 168.96-2.069 3.613-1.624 10.628 0.55 14.434 31.414 55.256 63.322 110.229 96.692 167.982 34.405-59.37 67.629-116.686 101.921-175.854 34.219 59.079 67.225 116.096 101.759 175.765 34.324-59.2 67.548-116.517 101.945-175.83 34.211 59.095 67.201 116.024 101.832 175.83 16.73-28.901 32.295-55.862 47.901-82.815 16.075-27.786 32.433-55.442 47.998-83.502 2.425-4.308 3.734-11.856 1.56-15.655-31.592-55.886-63.863-111.377-97.395-169.429z" />
|
||||
<glyph unicode="" glyph-name="poder" horiz-adv-x="1084" d="M422.691 634.082h92.497v-30.186h-92.497v30.186zM422.691 571.819h92.497v-28.311h-92.497v28.311zM574 380.254c-14.297 3.823-47.352 8.559-48.314 25.094-1.325 23.268 45.808 8.575 51.967 8.502 20.277-0.242 20.245 31.115 0 31.35-5.77 0.057-12.398 0.671-19.275 1.099v29.216h-24.634v-29.345c-10.531-1.212-20.229-4.55-27.163-12.503-14.612-16.891-18.774-44.345-0.566-61.253 18.184-16.883 38.793-16.948 61.673-23.017 16.342-4.332 8.033-24.496-0.8-29.652-17.352-10.264-37.233-1.883-49.922 11.008-14.216 14.402-36.409-7.783-22.193-22.185 11.953-12.147 24.803-19.138 38.963-22.047v-32.085h24.634v31.172c3.176 0.307 6.369 0.776 9.626 1.398 22.161 4.502 40.385 23.809 41.646 46.6 1.455 25.401-11.743 40.264-35.641 46.649zM549.051 833.429c-222.292 0-402.511-180.194-402.511-402.502 0-222.292 180.218-402.511 402.511-402.511s402.535 180.218 402.535 402.511c-0.008 222.301-180.25 402.502-402.535 402.502zM737.497 218.228c0-15.315-12.398-27.64-27.64-27.64h-324.86c-15.267 0-27.608 12.325-27.608 27.64v450.614c0 15.242 12.341 27.583 27.608 27.583h190.587v-155.407h161.913v-322.791zM605.116 571.819v124.607l132.381-124.607h-132.381z" />
|
||||
<glyph unicode="" glyph-name="poderes-bancarios" horiz-adv-x="1084" d="M549.051 833.429c-222.292 0-402.519-180.202-402.519-402.502s180.218-402.502 402.519-402.502 402.527 180.202 402.527 402.502-180.234 402.502-402.527 402.502zM316.236 586.697c28.262 10.151 216.36 82.201 225.315 82.201 0.558 0 6.959 0 7.5 0 9.011 0 197.085-72.050 225.339-82.201 28.238-10.135 10.442-33.532 10.442-33.532h-33.322v-24.359h-412.411v24.359h-33.305c0 0-17.804 23.397 10.442 33.532zM514.703 330.186v184.518h62.004v-184.518h66.045v184.518h59.992v-184.518c0 0 21.813 0 35.552 0s13.222-8.615 13.222-8.615v-23.874h-411.619v23.874c0 0-0.517 8.615 13.198 8.615 13.731 0 35.576 0 35.576 0v184.518h59.968v-184.518h66.061zM780.953 229.389h-463.771c0 0-31.859 30.453 13.012 52.128h211.624l7.233-1.633 7.241 1.633h211.649c44.838-21.684 13.012-52.128 13.012-52.128z" />
|
||||
<glyph unicode="" glyph-name="renovacin-de-poder" horiz-adv-x="1084" d="M549.989 833.429c-222.292 0-402.519-180.202-402.519-402.502 0-222.284 180.218-402.502 402.519-402.502s402.527 180.218 402.527 402.502c0 222.301-180.234 402.502-402.527 402.502zM370.765 195.324c-29.547 0-53.47 23.947-53.47 53.47 0 149.887 111.991 164.167 111.991 164.167l284.555-217.637h-343.076zM836.015 186.83c-4.445-5.593-12.575-6.562-18.168-2.134-0.21 0.194-0.364 0.307-0.558 0.541v-0.113l-580.312 457.16c-5.617 4.445-6.611 12.519-2.182 18.176l13.311 16.883c4.453 5.585 12.592 6.562 18.209 2.182l146.993-115.797c-0.081 1.94-0.291 3.831-0.291 5.77 0 71.323 57.777 129.1 129.044 129.1 71.29 0 129.052-57.777 129.052-129.1 0-62.821-44.911-115.135-104.41-126.619l279.892-220.587c0.17-0.121 0.428-0.234 0.606-0.372 5.585-4.445 6.562-12.575 2.117-18.168l-13.303-16.923z" />
|
||||
<glyph unicode="" glyph-name="ubicacin" horiz-adv-x="1084" d="M743.76 774.957c-111.005 84.229-271.98 76.689-376.075-17.683-108.613-98.373-131.856-263.817-48.508-386.072 77.578-113.761 160.927-223.577 247.338-342.793 78.976 108.507 153.693 210.986 228.047 313.682 12.43 17.158 24.803 34.574 34.728 53.187 69.149 130.159 32.909 289.833-85.531 379.679zM566.67 390.348c-84.908 0-153.742 68.85-153.742 153.758s68.842 153.742 153.742 153.742 153.742-68.842 153.742-153.742-68.833-153.758-153.742-153.758z" />
|
||||
<glyph unicode="" glyph-name="vehiculos" horiz-adv-x="1084" d="M415.078 497.053h251.201c0 0-24.957 80.738-61.673 80.738-36.732 0-127.799 0-127.799 0s-42.616-2.909-61.729-80.738zM393.063 388.368c22.015 0 39.658 7.29 39.658 20.544 0 13.238-26.436 40.094-55.83 40.094-29.362 0-24.933-23.922-24.933-34.211-0.008-15.841 26.84-26.428 41.105-26.428zM687.308 388.368c-22.064 0-39.682 7.29-39.682 20.544 0 13.238 26.436 40.094 55.83 40.094 29.378 0 24.973-23.922 24.973-34.211 0.008-15.841-26.872-26.428-41.121-26.428zM549.051 833.429c-222.276 0-402.478-180.186-402.478-402.47 0-222.333 180.202-402.543 402.478-402.543s402.494 180.202 402.494 402.543c0 222.284-180.226 402.47-402.494 402.47zM757.839 482.78c0 0 19.873-24.052 19.873-64.089 0-40.11-18.669-71.824-18.669-71.824l-0.178-58.602c0 0 5.221-25.094-42.883-25.094-48.112 0-49.696 27.147-49.696 27.147v36.635h-251.209v-36.635c0 0-1.568-27.147-49.687-27.147s-42.874 25.094-42.874 25.094l-0.145 58.602c0 0-18.693 31.705-18.693 71.824 0 40.038 19.881 64.089 19.881 64.089s-36.587-3.095-36.587 33.475c0 17.796 9.407 14.644 29.265 14.644 19.881 0 43.949 0.242 43.949 0.242s27.179 108.556 108.75 108.556c55.102 0 68.51 0 71.395 0-0.032 0 0.073 0 0.388 0 0.065 0 0.194 0 0.356 0 2.893 0 16.269 0 71.363 0 81.562 0 108.774-108.556 108.774-108.556s24.060-0.242 43.933-0.242c19.865 0 29.265 3.152 29.265-14.644-0.016-36.571-36.571-33.475-36.571-33.475z" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
BIN
public/assets/fonts/icomoon.ttf
Normal file
BIN
public/assets/fonts/icomoon.woff
Normal file
BIN
public/assets/fonts/metro.eot
Normal file
11
public/assets/fonts/metro.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="icomoon" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="metro" d="M771.482 668.57l-126.976-219.648-126.874 219.648-126.874-219.648-126.874 219.648-127.078-219.75 127.078-219.853 126.874 219.648 126.874-219.648 126.874 219.75 126.976-219.75 126.976 219.853zM512 864.154c-277.094 0-501.76-186.266-501.76-416.154 0-229.786 224.666-416.154 501.76-416.154s501.76 186.368 501.76 416.154c0 229.888-224.666 416.154-501.76 416.154zM512 68.506c-252.621 0-457.523 169.984-457.523 379.494s204.8 379.494 457.523 379.494c252.621 0 457.523-169.882 457.523-379.494 0-209.51-204.902-379.494-457.523-379.494z" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 1012 B |
BIN
public/assets/fonts/metro.ttf
Normal file
BIN
public/assets/fonts/metro.woff
Normal file
BIN
public/assets/images/Autorizaciones.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
public/assets/images/Banner.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
public/assets/images/Contacto.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
public/assets/images/Contratos y Otros.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
public/assets/images/Declaraciones.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
public/assets/images/Google play.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
public/assets/images/Horarios.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
public/assets/images/Indice.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
public/assets/images/Notario Suplente.jpg
Normal file
|
After Width: | Height: | Size: 978 KiB |
BIN
public/assets/images/Otros.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
public/assets/images/Poderes.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
public/assets/images/Saca Número.jpg
Normal file
|
After Width: | Height: | Size: 923 KiB |
153
public/assets/images/Santiago_Metro_logo.svg
Normal file
@ -0,0 +1,153 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="180"
|
||||
height="150"
|
||||
id="svg2"
|
||||
sodipodi:docname="Santiago_Metro_logo.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
id="namedview23"
|
||||
showgrid="false"
|
||||
inkscape:zoom="3.1466667"
|
||||
inkscape:cx="99.382911"
|
||||
inkscape:cy="65.915259"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:pagecheckerboard="true" />
|
||||
<metadata
|
||||
id="metadata8">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs6">
|
||||
<linearGradient
|
||||
id="linearGradient7630">
|
||||
<stop
|
||||
id="stop7632"
|
||||
style="stop-color:#8c2224;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop7634"
|
||||
style="stop-color:#ca2224;stop-opacity:1"
|
||||
offset="0.44237775" />
|
||||
<stop
|
||||
id="stop7636"
|
||||
style="stop-color:#ca2224;stop-opacity:0.30714285"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3800">
|
||||
<stop
|
||||
id="stop3802"
|
||||
style="stop-color:#3e4142;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop3804"
|
||||
style="stop-color:#3e4142;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
x1="-12"
|
||||
y1="107.5"
|
||||
x2="221.5"
|
||||
y2="20"
|
||||
id="linearGradient3806"
|
||||
xlink:href="#linearGradient3800"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="225.5"
|
||||
y1="137"
|
||||
x2="10.5"
|
||||
y2="130"
|
||||
id="linearGradient3810"
|
||||
xlink:href="#linearGradient3800"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="145.02977"
|
||||
y1="101.45641"
|
||||
x2="104.54718"
|
||||
y2="42.224365"
|
||||
id="linearGradient7640"
|
||||
xlink:href="#linearGradient7630"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="145.02977"
|
||||
y1="101.45641"
|
||||
x2="104.54718"
|
||||
y2="42.224365"
|
||||
id="linearGradient3011"
|
||||
xlink:href="#linearGradient7630"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<path
|
||||
d="m 90,4.4 c 46.99944,0 85.1,31.609813 85.1,70.600003 C 175.1,113.99019 136.99944,145.6 90,145.6 43.000567,145.6 4.9,113.99019 4.9,75.000003 4.9,36.009813 43.000567,4.4 90,4.4 Z"
|
||||
id="path3790"
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 90,4.5 C 43.055796,4.5 5,36.063925 5,75 c 0,38.93607 38.055796,70.5 85,70.5 46.9442,0 85,-31.56393 85,-70.5 C 175,36.063925 136.9442,4.5 90,4.5 z m 0,6.21875 c 42.80207,0 77.5,28.780711 77.5,64.28125 0,35.50054 -34.69793,64.28125 -77.5,64.28125 C 47.197932,139.28125 12.5,110.50054 12.5,75 12.5,39.499461 47.197932,10.71875 90,10.71875 z"
|
||||
id="path3005"
|
||||
style="fill:url(#linearGradient3806);fill-opacity:1;fill-rule:evenodd;stroke:none" />
|
||||
<g
|
||||
transform="matrix(1.0756106,0,0,1.0756106,-6.8776172,-5.6607586)"
|
||||
id="g3004">
|
||||
<path
|
||||
d="m 110.9375,74.867187 20,34.617193 20,-34.617193 -20,-34.617187 z"
|
||||
id="path2991"
|
||||
style="fill:#000000;fill-opacity:1" />
|
||||
<use
|
||||
transform="translate(-39.984375)"
|
||||
id="use3796"
|
||||
x="0"
|
||||
y="0"
|
||||
width="180"
|
||||
height="150"
|
||||
xlink:href="#path2991"
|
||||
style="fill:#000000;fill-opacity:1" />
|
||||
<use
|
||||
transform="translate(-39.96875)"
|
||||
id="use3798"
|
||||
x="0"
|
||||
y="0"
|
||||
width="180"
|
||||
height="150"
|
||||
xlink:href="#use3796"
|
||||
style="fill:#000000;fill-opacity:1" />
|
||||
</g>
|
||||
<path
|
||||
d="M 90,4.5 C 43.055796,4.5 5,36.063925 5,75 c 0,38.93607 38.055796,70.5 85,70.5 46.9442,0 85,-31.56393 85,-70.5 C 175,36.063925 136.9442,4.5 90,4.5 Z m 0,6.21875 c 42.80207,0 77.5,28.780711 77.5,64.28125 0,35.50054 -34.69793,64.28125 -77.5,64.28125 C 47.197932,139.28125 12.5,110.50054 12.5,75 12.5,39.499461 47.197932,10.71875 90,10.71875 Z"
|
||||
id="path3808"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.1 KiB |
BIN
public/assets/images/Seguimiento.jpg
Normal file
|
After Width: | Height: | Size: 904 KiB |
BIN
public/assets/images/Ubicación.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
public/assets/images/banner2.webp
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
public/assets/images/documentos.jpg
Normal file
|
After Width: | Height: | Size: 283 KiB |
BIN
public/assets/images/escrituras.jpg
Normal file
|
After Width: | Height: | Size: 368 KiB |
BIN
public/assets/images/numero.jpg
Normal file
|
After Width: | Height: | Size: 373 KiB |
BIN
public/assets/images/turno.jpg
Normal file
|
After Width: | Height: | Size: 9.8 MiB |
3
public/assets/scripts/main.js
Normal file
@ -0,0 +1,3 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
})
|
||||
7
public/assets/styles/contacto.css
Normal file
@ -0,0 +1,7 @@
|
||||
#contacto {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
#contacto #map {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
146
public/assets/styles/home.css
Normal file
@ -0,0 +1,146 @@
|
||||
#banner {
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 1900px auto;
|
||||
background-blend-mode: multiply;
|
||||
color: white;
|
||||
}
|
||||
@media screen and (max-width: 991px) {
|
||||
#banner {
|
||||
background-position: 75% !important;
|
||||
}
|
||||
}
|
||||
#banner a {
|
||||
color: inherit;
|
||||
}
|
||||
#banner .segment {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
#banner .content {
|
||||
padding-top: 3rem;
|
||||
padding-bottom: 3rem;
|
||||
}
|
||||
#banner .content .header {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
#banner .content .description {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
#suplente {
|
||||
min-height: 20rem;
|
||||
padding-top: 3rem !important;
|
||||
padding-bottom: 3rem !important;
|
||||
}
|
||||
#suplente .grid {
|
||||
margin: 0 !important;
|
||||
}
|
||||
#suplente .row {
|
||||
padding: 0 !important;
|
||||
}
|
||||
#suplente .horario {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
#suplente .horario .header {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
#suplente .mensaje {
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 100% auto;
|
||||
height: 14rem;
|
||||
display: table;
|
||||
}
|
||||
#suplente .mensaje .middle {
|
||||
display: table-cell;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
#suplente .mensaje .button {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
#numero {
|
||||
background-position: center;
|
||||
background-attachment: fixed;
|
||||
min-height: 15rem;
|
||||
margin: 0 !important;
|
||||
display: block;
|
||||
}
|
||||
#numero::before {
|
||||
clear: both;
|
||||
}
|
||||
#numero .grid {
|
||||
margin: 0 !important;
|
||||
}
|
||||
#numero .column {
|
||||
display: table;
|
||||
height: 13rem;
|
||||
}
|
||||
#numero a {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
#numero a .button {
|
||||
font-family: Roboto !important;
|
||||
font-size: 1.3rem !important;
|
||||
font-weight: 900 !important;
|
||||
background-color: rgba(0, 30, 70, 0.8) !important;
|
||||
}
|
||||
|
||||
#servicios {
|
||||
background-color: rgba(0, 0, 0, .05);
|
||||
padding-top: 3rem;
|
||||
padding-bottom: 3rem;
|
||||
min-height: 25rem;
|
||||
font-family: Roboto;
|
||||
}
|
||||
#servicios .list img {
|
||||
height: 1.2rem;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
#servicios i.icon {
|
||||
color: grey;
|
||||
}
|
||||
#servicios .list a {
|
||||
color: inherit;
|
||||
}
|
||||
#servicios .titulo {
|
||||
font-weight: bold;
|
||||
font-size: 16pt;
|
||||
}
|
||||
#servicios .seguimiento {
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
min-height: 10rem !important;
|
||||
}
|
||||
|
||||
#indice .grid {
|
||||
margin: 0 !important;
|
||||
}
|
||||
#indice .row {
|
||||
padding: 0 !important;
|
||||
}
|
||||
#indice .img {
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
#indice .img,
|
||||
#indice .img img {
|
||||
max-height: 20rem !important;
|
||||
min-height: 10rem !important;
|
||||
}
|
||||
#indice .contenido {
|
||||
padding-top: 5rem !important;
|
||||
padding-bottom: 5rem !important;
|
||||
color: rgba(0, 0, 0, 0.9) !important;
|
||||
}
|
||||
#indice .contenido .titulo {
|
||||
font-size: 20pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
#indice .contenido .list .item {
|
||||
font-size: 14pt !important;
|
||||
color: inherit;
|
||||
}
|
||||
66
public/assets/styles/iconmoon.css
Normal file
@ -0,0 +1,66 @@
|
||||
@font-face {
|
||||
font-family: 'icomoon';
|
||||
src: url('../fonts/icomoon.eot?krhhew');
|
||||
src: url('../fonts/icomoon.eot?krhhew#iefix') format('embedded-opentype'),
|
||||
url('../fonts/icomoon.ttf?krhhew') format('truetype'),
|
||||
url('../fonts/icomoon.woff?krhhew') format('woff'),
|
||||
url('../fonts/icomoon.svg?krhhew#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
|
||||
[class^="icon-"], [class*=" icon-"] {
|
||||
/* use !important to prevent issues with browser extensions that change fonts */
|
||||
font-family: 'icomoon' !important;
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-autorizaciones:before {
|
||||
content: "\e900";
|
||||
}
|
||||
.icon-contacto:before {
|
||||
content: "\e901";
|
||||
}
|
||||
.icon-contratos-y-otros:before {
|
||||
content: "\e902";
|
||||
}
|
||||
.icon-declaracion:before {
|
||||
content: "\e903";
|
||||
}
|
||||
.icon-extranjeros:before {
|
||||
content: "\e904";
|
||||
}
|
||||
.icon-horario:before {
|
||||
content: "\e905";
|
||||
}
|
||||
.icon-laboral:before {
|
||||
content: "\e906";
|
||||
}
|
||||
.icon-metro:before {
|
||||
content: "\e907";
|
||||
}
|
||||
.icon-poder:before {
|
||||
content: "\e908";
|
||||
}
|
||||
.icon-poderes-bancarios:before {
|
||||
content: "\e909";
|
||||
}
|
||||
.icon-renovacion-de-poderes:before {
|
||||
content: "\e90a";
|
||||
}
|
||||
.icon-ubicacion:before {
|
||||
content: "\e90b";
|
||||
}
|
||||
.icon-vehiculos:before {
|
||||
content: "\e90c";
|
||||
}
|
||||
63
public/assets/styles/main.css
Normal file
@ -0,0 +1,63 @@
|
||||
html {
|
||||
font-family: Roboto, Arial !important;
|
||||
}
|
||||
.inverted.dark-blue {
|
||||
background-color: #003662 !important;
|
||||
}
|
||||
.inverted.dark-blue.button {
|
||||
border: 0;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
#page_menu .brand {
|
||||
font-family: Helvetica, Arial !important;
|
||||
font-weight: 600 !important;
|
||||
font-size: 2rem;
|
||||
}
|
||||
#page_menu .side {
|
||||
font-size: 1rem;
|
||||
}
|
||||
#page_menu .item:first-child {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
#page_container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
}
|
||||
.content {
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
|
||||
footer {
|
||||
flex: none;
|
||||
color: white;
|
||||
height: 260px;
|
||||
font-family: Roboto;
|
||||
}
|
||||
footer .grid {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
footer .main {
|
||||
min-height: 16rem !important;
|
||||
padding-top: 30px !important;
|
||||
}
|
||||
footer a {
|
||||
color: inherit;
|
||||
}
|
||||
footer .small {
|
||||
font-size: 0.8rem !important;
|
||||
}
|
||||
footer .grey {
|
||||
background-color: rgba(0, 0, 0, 0.1) !important;
|
||||
color: rgba(0, 0, 0, 0.7) !important;
|
||||
min-height: 3rem !important;
|
||||
}
|
||||
footer nav.menu {
|
||||
font-size: 10pt !important;
|
||||
border: 0 !important;
|
||||
}
|
||||
footer nav.menu .item:first-child {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
30
public/assets/styles/metro.css
Normal file
@ -0,0 +1,30 @@
|
||||
@font-face {
|
||||
font-family: 'metro';
|
||||
src: url('../fonts/metro.eot?9g6aek');
|
||||
src: url('../fonts/metro.eot?9g6aek#iefix') format('embedded-opentype'),
|
||||
url('../fonts/metro.ttf?9g6aek') format('truetype'),
|
||||
url('../fonts/metro.woff?9g6aek') format('woff'),
|
||||
url('../fonts/metro.svg?9g6aek#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
|
||||
[class^="icon-"], [class*=" icon-"] {
|
||||
/* use !important to prevent issues with browser extensions that change fonts */
|
||||
font-family: 'metro' !important;
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-metro:before {
|
||||
content: "\e900";
|
||||
}
|
||||
13
public/assets/styles/notaria.css
Normal file
@ -0,0 +1,13 @@
|
||||
#equipos {
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
#transparencia {
|
||||
background-color: rgba(0, 0, 0, .05);
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
font-family: Roboto;
|
||||
}
|
||||
#transparencia .accordion .title, #transparencia .accordion .title a {
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
10
public/index.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
include_once implode(DIRECTORY_SEPARATOR, [
|
||||
dirname(__DIR__),
|
||||
'bootstrap',
|
||||
'web.php'
|
||||
]);
|
||||
|
||||
$app->run();
|
||||
5
resources/data/aviso.yml
Normal file
@ -0,0 +1,5 @@
|
||||
activo: false
|
||||
titulo: Notaría de Turno
|
||||
contenido: |
|
||||
Semana del 30 de marzo al 03 de abril de 2020
|
||||
Horario regular
|
||||
47
resources/data/documentos.yml
Normal file
@ -0,0 +1,47 @@
|
||||
documentos:
|
||||
- texto: Autorizaciones
|
||||
uri: https://www.notarial.cl/autorizacion-viajes.php
|
||||
icono: icon-autorizaciones
|
||||
- texto: Vehículos
|
||||
uri: https://www.notarial.cl/vehiculos.php
|
||||
icono: icon-vehiculos
|
||||
- texto: Poderes bancarios
|
||||
uri: https://www.notarial.cl/notarial_ingreso_sbif2.php
|
||||
icono: icon-poderes-bancarios
|
||||
- texto: Poder
|
||||
uri: https://www.notarial.cl/poder.php
|
||||
icono: icon-poder
|
||||
- texto: Renovación de Poderes
|
||||
uri: https://www.notarial.cl/revocacion-de-poder.php
|
||||
icono: icon-renovacion-de-poderes
|
||||
- texto: Declaraciones
|
||||
uri: https://www.notarial.cl/declaracion.php
|
||||
icono: icon-declaracion
|
||||
- texto: Contratos y Otros
|
||||
uri: https://www.notarial.cl/contratos-otros.php
|
||||
icono: icon-contratos-y-otros
|
||||
- texto: Laboral
|
||||
uri: https://www.notarial.cl/laboral.php
|
||||
icono: icon-laboral
|
||||
- texto: Extranjeros
|
||||
uri: https://www.notarial.cl/inv-extranjero.php
|
||||
icono: icon-extranjeros
|
||||
consulta:
|
||||
- texto: Servicio de Impuestos Internos
|
||||
uri: http://www.sii.cl
|
||||
- texto: Registro Civil
|
||||
uri: http://www.registrocivil.cl
|
||||
- uri: http://www.conservador.cl
|
||||
texto: Conservador
|
||||
- uri: http://www.diarioficial.cl
|
||||
texto: Diario Oficial
|
||||
- uri: http://www.tesoreria.cl
|
||||
texto: Tesorería
|
||||
- uri: http://www.notariosyconservadores.cl
|
||||
texto: Notarios y Conservadores
|
||||
- uri: http://www.poderjudicial.cl
|
||||
texto: Poder Judicial
|
||||
- uri: http://www.bcn.cl
|
||||
texto: Biblioteca del Congreso Nacional
|
||||
- uri: http://www.fojas.cl
|
||||
texto: Fojas
|
||||
30
resources/data/equipos.yml
Normal file
@ -0,0 +1,30 @@
|
||||
- titulo: ESCRITURAS PÚBLICAS
|
||||
miembros:
|
||||
- nombre: Paola Díaz de Lartundo
|
||||
email: pdiaz@notariaraby.cl
|
||||
- nombre: Roxana Muñoz Donoso
|
||||
email: rmunozd@notariaraby.cl
|
||||
- nombre: Alejandro González Villalobos
|
||||
email: agonzalez@notariaraby.cl
|
||||
- nombre: Elizabeth Ancamil Munizaga
|
||||
email: eancamil@notariaraby.cl
|
||||
- titulo: INSTRUMENTOS PRIVADOS
|
||||
miembros:
|
||||
- nombre: Massiel Guzmán Villalobos
|
||||
email: mguzman@notariaraby.cl
|
||||
- titulo: ADMINISTRACIÓN CUENTAS-TRANSFERENCIAS
|
||||
miembros:
|
||||
- nombre: Juan Corrales Carrasco
|
||||
email: jcorrales@notariaraby.cl
|
||||
- titulo: REPERTORIO-INDICES
|
||||
miembros:
|
||||
- nombre: María Andreina Rojas Morales
|
||||
email: repertorio@notariaraby.cl
|
||||
- titulo: ABOGADO
|
||||
miembros:
|
||||
- nombre: María Virginia Wielandt Covarrubias
|
||||
email: vwielandt@notariaraby.cl
|
||||
- titulo: RECEPCIÓN CORDINACIÓN EMPRESAS EN UN DÍA
|
||||
miembros:
|
||||
- telefono: (56) (2) 2599 2453
|
||||
email: recepcion@notariaraby.cl
|
||||
6
resources/data/horario.yml
Normal file
@ -0,0 +1,6 @@
|
||||
titulo:
|
||||
- Horario lunes a jueves
|
||||
- 9:30-13:30 | 15:30-18:00
|
||||
- Viernes
|
||||
- 9:30-13:30 | 15:30-17:00
|
||||
texto: "La atención dentro del horario, puede verse afectada circunstancialmente y sin previo aviso, por encontrarse el notario cumpliendo funciones fuera de la Notaría."
|
||||
4
resources/data/login.yml
Normal file
@ -0,0 +1,4 @@
|
||||
ip: localhost
|
||||
token: >
|
||||
6386affcb3431a356ef46974:c16ce52735ec95255d450d57945cd35992d1b21f
|
||||
time: 2020-04-22 22:42
|
||||
44
resources/data/transparencia.yml
Normal file
@ -0,0 +1,44 @@
|
||||
activo: true
|
||||
descripcion: "La función del notario Público se encuentra regida por las normas establecidas en el Título XI párrafo 7 artículo 399 al 445 del Código Orgánico de tribunales.\n Son funciones del Notario, entre otras, las contenidas en el artículo 401 del código señalado y que se expresan a continuación:"
|
||||
funciones:
|
||||
- >
|
||||
Extender los instrumentos públicos con
|
||||
arreglo a las instrucciones que, de
|
||||
palabra o por escrito, les dieren las
|
||||
partes otorgantes.
|
||||
- Levantar inventarios solemnes.
|
||||
- >
|
||||
Efectuar protestos de letras de cambio y
|
||||
demás documentos mercantiles.
|
||||
- >
|
||||
Notificar los traspasos de acciones,
|
||||
constituciones y notificaciones de
|
||||
prendas que se les solicitaren.
|
||||
- >
|
||||
Asistir a las juntas generales de
|
||||
accionistas de sociedades anónimas,
|
||||
para los efectos que la ley o reglamento
|
||||
de ellas lo exigieren.
|
||||
- >
|
||||
En general dar fe de los hechos para que
|
||||
fueren requeridos y que no estuvieren
|
||||
encomendados a otros funcionarios.
|
||||
- >
|
||||
Guardar y conservar en riguroso orden
|
||||
cronológico los documentos que ante
|
||||
ellos se otorguen, en forma de precaver
|
||||
todo extravío y hacer fácil y expedito
|
||||
su examen.
|
||||
- >
|
||||
Otorgar certificados o testimonios de
|
||||
los actos celebrados ante ellos o
|
||||
protocolizados en sus registros.
|
||||
- >
|
||||
Facilitar a cualquiera persona que lo
|
||||
solicite el examen de los instrumentos
|
||||
públicos que ante ellos se otorguen y
|
||||
documentos que se protocolicen.
|
||||
- >
|
||||
Autorizar las firmas que se estampen en
|
||||
documentos privados, sea en su presencia
|
||||
o cuya autenticidad les conste.
|
||||
7
resources/routes/router.php
Normal file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$folder = implode(DIRECTORY_SEPARATOR, [
|
||||
__DIR__,
|
||||
$__environment
|
||||
]);
|
||||
$filename = $__environment . '.php';
|
||||
include_once $filename;
|
||||
18
resources/routes/web.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Home;
|
||||
|
||||
$folder = implode(DIRECTORY_SEPARATOR, [
|
||||
__DIR__,
|
||||
'web'
|
||||
]);
|
||||
if (file_exists($folder)) {
|
||||
$files = new DirectoryIterator($folder);
|
||||
foreach ($files as $file) {
|
||||
if ($file->isDir()) {
|
||||
continue;
|
||||
}
|
||||
include_once $file->getRealPath();
|
||||
}
|
||||
}
|
||||
|
||||
$app->get('/', Home::class);
|
||||
20
resources/routes/web/admin.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Admin\Admin;
|
||||
|
||||
$app->group('/admin', function($app) {
|
||||
$folder = implode(DIRECTORY_SEPARATOR, [
|
||||
__DIR__,
|
||||
'admin'
|
||||
]);
|
||||
if (file_exists($folder)) {
|
||||
$files = new DirectoryIterator($folder);
|
||||
foreach ($files as $file) {
|
||||
if ($file->isDir()) {
|
||||
continue;
|
||||
}
|
||||
include_once $file->getRealPath();
|
||||
}
|
||||
}
|
||||
|
||||
$app->get('[/]', Admin::class);
|
||||
})->add($app->getContainer()->get(ProVM\NotariaRaby\Common\Middleware\Auth::class));
|
||||
7
resources/routes/web/admin/clave.php
Normal file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Admin\Clave;
|
||||
|
||||
$app->group('/clave', function($app) {
|
||||
$app->get('[/]', Clave::class);
|
||||
$app->post('[/]', [Clave::class, 'do_edit']);
|
||||
});
|
||||
6
resources/routes/web/admin/documentos.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Admin\Documentos;
|
||||
|
||||
$app->group('/documentos', function($app) {
|
||||
$app->post('[/]', [Documentos::class, 'upload']);
|
||||
});
|
||||
8
resources/routes/web/admin/login.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Admin\Login;
|
||||
|
||||
$app->group('/login', function($app) {
|
||||
$app->get('[/]', Login::class);
|
||||
$app->post('[/]', [Login::class, 'do_login']);
|
||||
});
|
||||
$app->get('/logout', [Login::class, 'logout']);
|
||||
6
resources/routes/web/admin/notificacion.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Admin\Notificacion;
|
||||
|
||||
$app->group('/notificacion', function($app) {
|
||||
$app->post('[/]', [Notificacion::class, 'do_edit']);
|
||||
});
|
||||
6
resources/routes/web/admin/transparencia.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Admin\Transparencia;
|
||||
|
||||
$app->group('/transparencia', function($app) {
|
||||
$app->post('[/]', [Transparencia::class, 'do_edit']);
|
||||
});
|
||||
7
resources/routes/web/contacto.php
Normal file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Contacto;
|
||||
|
||||
$app->group('/contacto', function($app) {
|
||||
$app->post('[/]', [Contacto::class, 'formulario']);
|
||||
$app->get('[/]', Contacto::class);
|
||||
});
|
||||
6
resources/routes/web/notaria.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
use ProVM\NotariaRaby\Common\Controller\Web\Notaria;
|
||||
|
||||
$app->group('/notaria', function($app) {
|
||||
$app->get('[/]', Notaria::class);
|
||||
});
|
||||
17
resources/views/admin/admin.blade.php
Normal file
@ -0,0 +1,17 @@
|
||||
@extends('admin.layout.base')
|
||||
|
||||
@section('page_content')
|
||||
<div id="admin">
|
||||
<div class="ui container">
|
||||
<div class="ui stackable two columns grid">
|
||||
<div class="column">
|
||||
@include('admin.formulario')
|
||||
</div>
|
||||
<div class="column">
|
||||
@include('admin.documentos')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
@endsection
|
||||
88
resources/views/admin/clave.blade.php
Normal file
@ -0,0 +1,88 @@
|
||||
@extends('admin.layout.base')
|
||||
|
||||
@section('page_content')
|
||||
<div class="ui container">
|
||||
<h2>Cambiar Clave</h2>
|
||||
<form class="ui form" method="post" action="{{$urls->base}}/admin/clave" id="clave_form">
|
||||
<div class="field">
|
||||
<label>Clave</label>
|
||||
<input type="password" name="clave" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>Repetir Clave</label>
|
||||
<input type="password" name="clave2" />
|
||||
</div>
|
||||
<button class="ui button">Cambiar</button>
|
||||
<div class="ui warning message" id="warnings">
|
||||
<ul class="ui list"></ul>
|
||||
</div>
|
||||
<div class="ui error message" id="errors">
|
||||
<ul class="ui list"></ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
function clearErrors() {
|
||||
$('#warnings').find('ul.list').html('')
|
||||
$('#warnings').hide()
|
||||
$('#errors').find('ul.list').html('')
|
||||
$('#errors').hide()
|
||||
}
|
||||
function addError(msg) {
|
||||
$('#errors').find('ul.list').append(
|
||||
$('<li></li>').html(msg)
|
||||
)
|
||||
$('#errors').show()
|
||||
}
|
||||
function addWarning(msg) {
|
||||
$('#warnings').find('ul.list').append(
|
||||
$('<li></li>').html(msg)
|
||||
)
|
||||
$('#warnings').show()
|
||||
}
|
||||
function checkClaves() {
|
||||
var c1 = $("input[name='clave']").val()
|
||||
if (!validateClave(c1)) {
|
||||
return false
|
||||
}
|
||||
var c2 = $("input[name='clave2']").val()
|
||||
if (c1 != c2) {
|
||||
addError('Las dos claves no coinciden.')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
function validateClave(clave) {//NotariaR4b¿?
|
||||
console.debug(clave)
|
||||
var strong = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})")
|
||||
var medium = new RegExp("^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})")
|
||||
if (!medium.test(clave)) {
|
||||
addError('La clave no cumple con el mínimo de fuerza.')
|
||||
return false
|
||||
}
|
||||
if (!strong.test(clave)) {
|
||||
addWarning('Se recomienda una clave mas fuerte.')
|
||||
}
|
||||
return true
|
||||
}
|
||||
$(document).ready(function() {
|
||||
clearErrors()
|
||||
$("input[name='clave']").change(function() {
|
||||
clearErrors()
|
||||
validateClave($(this).val())
|
||||
})
|
||||
$('#clave_form').submit(function(e) {
|
||||
clearErrors()
|
||||
if (checkClaves()) {
|
||||
$(this).submit()
|
||||
return true
|
||||
}
|
||||
e.preventDefault()
|
||||
return false
|
||||
})
|
||||
})
|
||||
</script>
|
||||
@endpush
|
||||
16
resources/views/admin/documento.blade.php
Normal file
@ -0,0 +1,16 @@
|
||||
<div class="item">
|
||||
<div class="ui grid">
|
||||
<div class="eight wide column">
|
||||
{{$descripcion}}
|
||||
</div>
|
||||
<div class="column">
|
||||
<a href="#" data-link="{{$link}}" data-title="{{$descripcion}}"
|
||||
@if (isset($mod))
|
||||
data-mod="{{$mod}}"
|
||||
@endif
|
||||
class="form_link">
|
||||
@include('admin.uicon')
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
149
resources/views/admin/documentos.blade.php
Normal file
@ -0,0 +1,149 @@
|
||||
<h4>
|
||||
Carga de documentos
|
||||
</h4>
|
||||
<div class="ui list">
|
||||
@include('admin.documento', ['descripcion' => 'Índices', 'link' => 'indices', 'mod' => 'fecha'])
|
||||
</div>
|
||||
<h4>
|
||||
Transparencia
|
||||
</h4>
|
||||
<div class="ui list">
|
||||
@include('admin.documento', ['descripcion' => 'Balances Anuales', 'link' => 'balances_anuales', 'mod' => 'fecha'])
|
||||
@include('admin.documento', ['descripcion' => 'Interés y Patrimonio', 'link' => 'intereses_y_patrimonio', 'mod' => 'fecha'])
|
||||
@include('admin.documento', ['descripcion' => 'Informes Fiscalía', 'link' => 'informes_fiscalia', 'mod' => 'fecha'])
|
||||
@include('admin.documento', ['descripcion' => 'Valores', 'link' => 'valores'])
|
||||
</div>
|
||||
<div class="ui toggle checkbox" id="transparencia">
|
||||
<label>Activar</label>
|
||||
<input type="checkbox" name="transparencia"
|
||||
@if ($transparencia)
|
||||
checked="checked"
|
||||
@endif
|
||||
/>
|
||||
</div>
|
||||
<div id="transparencia_message" class="ui message transition hidden"></div>
|
||||
<div class="ui basic modal" id="doc_form">
|
||||
<i class="close icon"></i>
|
||||
<div class="inverted dark-blue header">
|
||||
</div>
|
||||
<div class="inverted dark-blue content">
|
||||
<form class="ui form" method="post" action="#">
|
||||
<input type="hidden" name="filename" />
|
||||
<div class="field">
|
||||
<input type="file" name="archivo" placeholder="Archivo" />
|
||||
</div>
|
||||
<div id="mod" class="field"></div>
|
||||
<button class="ui button">Subir</button>
|
||||
<div id="documento_message"></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
function formulario(link, title, mod) {
|
||||
$('#doc_form').find('.header').html(title)
|
||||
$('#doc_form').find('form').find("[name='filename']").val(link)
|
||||
if (mod == 'fecha') {
|
||||
fecha()
|
||||
}
|
||||
$('#doc_form').modal('show')
|
||||
$('#doc_form').find('form').submit(function(e) {
|
||||
e.preventDefault()
|
||||
var form_data = new FormData(this)
|
||||
$.ajax({
|
||||
url: '{{$urls->base}}/admin/documentos',
|
||||
type: 'post',
|
||||
data: form_data,
|
||||
contentType: false,
|
||||
cache: false,
|
||||
processData: false,
|
||||
success: function(data) {
|
||||
if (data.estado == true) {
|
||||
$('#doc_form').find('.header').html('')
|
||||
$('#doc_form').find('form').find("[name='filename']").val('')
|
||||
$('#doc_form').modal('hide')
|
||||
$('#documento_message').html('')
|
||||
$('#documento_message').hide()
|
||||
} else {
|
||||
$('#documento_message').html('Error al subir el archivo.')
|
||||
$('#documento_message').show()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return false
|
||||
})
|
||||
}
|
||||
function fecha() {
|
||||
var fecha = $('<div></div>').attr('class', 'ui calendar').append(
|
||||
$('<div></div>').attr('class', 'ui input left icon').append(
|
||||
$('<i></i>').attr('class', 'calendar icon')
|
||||
).append(
|
||||
$('<input />').attr('type', 'text').attr('name', 'month').attr('placeholder', 'Mex / Año')
|
||||
)
|
||||
)
|
||||
$('#mod').append(fecha)
|
||||
$('#mod').find('.ui.calendar').calendar({
|
||||
type: 'month',
|
||||
text: {
|
||||
months: [
|
||||
'{!!implode("', '", $months->full)!!}'
|
||||
],
|
||||
monthsShort: [
|
||||
'{!!implode("', '", $months->short)!!}'
|
||||
]
|
||||
}
|
||||
})
|
||||
}
|
||||
$(document).ready(function() {
|
||||
$('#transparencia_message').hide()
|
||||
$('#transparencia').checkbox()
|
||||
$('#transparencia').click(function() {
|
||||
var status = $(this).checkbox('is checked')
|
||||
$.post('{{$urls->base}}/admin/transparencia', {'activo': status}, function(data) {
|
||||
var msg = ['<i class="close icon"></i>']
|
||||
if (data.estado == 'ok') {
|
||||
if (data.informacion.activo == 'true') {
|
||||
msg.push('Activado')
|
||||
} else {
|
||||
msg.push('Desactivado')
|
||||
}
|
||||
$('#transparencia_message').addClass('success')
|
||||
} else {
|
||||
msg.push('No se ha podido')
|
||||
if (data.informacion.activo == 'true') {
|
||||
msg.push('activar')
|
||||
} else {
|
||||
msg.push('desactivar')
|
||||
}
|
||||
$('#transparencia_message').addClass('error')
|
||||
}
|
||||
msg.push('correctamente.')
|
||||
$('#transparencia_message').html(msg.join(' '))
|
||||
$('#transparencia_message').removeClass('hidden')
|
||||
$('#transparencia_message').show()
|
||||
$('#transparencia_message').find('.close').click(function() {
|
||||
$('#transparencia_message').html('')
|
||||
$('#transparencia_message').addClass('hidden')
|
||||
$('#transparencia_message').removeClass('success error')
|
||||
$('#transparencia_message').hide()
|
||||
})
|
||||
}, 'json')
|
||||
})
|
||||
|
||||
$('#doc_form').modal({
|
||||
onHidden: function() {
|
||||
$('#mod').html('')
|
||||
}
|
||||
})
|
||||
$('#documento_message').hide()
|
||||
$('.form_link').click(function() {
|
||||
var link = $(this).attr('data-link')
|
||||
var title = $(this).attr('data-title')
|
||||
var mod = $(this).attr('data-mod')
|
||||
formulario(link, title, mod)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
@endpush
|
||||
95
resources/views/admin/formulario.blade.php
Normal file
@ -0,0 +1,95 @@
|
||||
<form class="ui form" id="formulario" method="post" action="#">
|
||||
<div class="field">
|
||||
<h4>
|
||||
Aviso
|
||||
</h4>
|
||||
</div>
|
||||
<div class="field">
|
||||
<input type="text" name="titulo" placeholder="Título" value="{{$aviso->titulo}}" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<textarea name="contenido" placeholder="Mensaje">{{$aviso->contenido}}</textarea>
|
||||
</div>
|
||||
<div class="field">
|
||||
<button class="ui inverted dark-blue button">Editar</button>
|
||||
</div>
|
||||
<div class="field">
|
||||
<div class="ui toggle checkbox" id="activar">
|
||||
<label>Activar</label>
|
||||
<input type="checkbox" name="active"
|
||||
@if ($aviso->activo)
|
||||
checked="checked"
|
||||
@endif
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div id="formulario_messages" class="ui message transition hidden">
|
||||
<i class="close icon"></i>
|
||||
<span class="list"></span>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
function addMessage(msg) {
|
||||
$('#formulario_messages').find('.list').append(
|
||||
$('<li></li>').html(msg)
|
||||
)
|
||||
$('#formulario_messages').show()
|
||||
$('#formulario_messages').removeClass('hidden')
|
||||
$('#formulario_messages').find('.close').click(function() {
|
||||
$('#formulario_messages').find('.list').html('')
|
||||
$('#formulario_messages').removeClass('success error')
|
||||
$('#formulario_messages').hide()
|
||||
$('#formulario_messages').addClass('hidden')
|
||||
})
|
||||
}
|
||||
$(document).ready(function() {
|
||||
$('#formulario_messages').hide()
|
||||
$('#formulario').submit(function(e) {
|
||||
e.preventDefault()
|
||||
|
||||
var titulo = $(this).find("[name='titulo']").val()
|
||||
var contenido = $(this).find("[name='contenido']").val()
|
||||
$.post('{{$urls->base}}/admin/notificacion', {titulo: titulo, contenido: contenido}, function(data) {
|
||||
var msg = ''
|
||||
if (data.estado == 'ok') {
|
||||
msg = 'Editado correctamente.'
|
||||
$('#formulario_messages').addClass('success')
|
||||
} else {
|
||||
msg = 'Error al editar.'
|
||||
$('#formulario_messages').addClass('error')
|
||||
}
|
||||
addMessage(msg)
|
||||
}, 'json')
|
||||
|
||||
return false
|
||||
})
|
||||
$('#activar').checkbox()
|
||||
$('#activar').click(function() {
|
||||
var status = $(this).checkbox('is checked')
|
||||
$.post('{{$urls->base}}/admin/notificacion', {'activo': status}, function(data) {
|
||||
msg = []
|
||||
if (data.estado == 'ok') {
|
||||
if (data.editado.activo) {
|
||||
msg.push('Activado')
|
||||
} else {
|
||||
msg.push('Desactivado')
|
||||
}
|
||||
$('#formulario_messages').addClass('success')
|
||||
} else {
|
||||
msg.push('No se ha podido')
|
||||
if (data.editado.activo) {
|
||||
msg.push('activar')
|
||||
} else {
|
||||
msg.push('desactivar')
|
||||
}
|
||||
$('#formulario_messages').addClass('error')
|
||||
}
|
||||
msg.push('correctamente.')
|
||||
addMessage(msg.join(' '))
|
||||
}, 'json')
|
||||
})
|
||||
})
|
||||
</script>
|
||||
@endpush
|
||||
9
resources/views/admin/layout/base.blade.php
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
@include('layout.head')
|
||||
@include('admin.layout.body')
|
||||
</html>
|
||||
|
||||
@section('page_title')
|
||||
- Admin
|
||||
@endsection
|
||||
10
resources/views/admin/layout/body.blade.php
Normal file
@ -0,0 +1,10 @@
|
||||
<body>
|
||||
<div id="page_container" class="ui fluid container">
|
||||
@include('admin.layout.header')
|
||||
<div class="content">
|
||||
<br />
|
||||
@yield('page_content')
|
||||
</div>
|
||||
@include('admin.layout.footer')
|
||||
</div>
|
||||
</body>
|
||||
12
resources/views/admin/layout/footer.blade.php
Normal file
@ -0,0 +1,12 @@
|
||||
<footer class="ui fixed">
|
||||
<div class="inverted dark-blue">
|
||||
<div class="main"></div>
|
||||
</div>
|
||||
<div class="grey">
|
||||
<nav class="ui container attached text stackable menu">
|
||||
<a class="item" href="{{$urls->admin}}/clave">Cambiar Clave</a>
|
||||
<a class="item" href="{{$urls->admin}}/logout">Salir</a>
|
||||
</nav>
|
||||
</div>
|
||||
</footer>
|
||||
@include('layout.scripts')
|
||||
5
resources/views/admin/layout/header.blade.php
Normal file
@ -0,0 +1,5 @@
|
||||
<header class="ui dark-blue inverted">
|
||||
<div class="ui container">
|
||||
@include('admin.layout.menu')
|
||||
</div>
|
||||
</header>
|
||||
7
resources/views/admin/layout/menu.blade.php
Normal file
@ -0,0 +1,7 @@
|
||||
<nav class="ui inverted attached massive text stackable menu" id="page_menu">
|
||||
<a class="left aligned item brand" href="{{$urls->admin}}">
|
||||
NOTARÍA PATRICIO RABY BENAVENTE
|
||||
</a>
|
||||
<a class="item" href="{{$urls->admin}}/clave">Cambiar Clave</a>
|
||||
<a class="item" href="{{$urls->admin}}/logout">Salir</a>
|
||||
</nav>
|
||||
18
resources/views/admin/login.blade.php
Normal file
@ -0,0 +1,18 @@
|
||||
@extends('admin.layout.base')
|
||||
|
||||
@section('page_content')
|
||||
<div class="ui container">
|
||||
<form class="ui form" method="post" action="{{$urls->base}}/admin/login">
|
||||
<div class="ui center aligned grid">
|
||||
<div class="left aligned five wide column">
|
||||
<h3>Ingresar</h3>
|
||||
<div class="inline field">
|
||||
<label>Clave</label>
|
||||
<input type="password" name="clave" />
|
||||
</div>
|
||||
<button class="ui inverted dark-blue button">Entrar</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
4
resources/views/admin/uicon.blade.php
Normal file
@ -0,0 +1,4 @@
|
||||
<i class="icons">
|
||||
<i class="large square outline icon"></i>
|
||||
<i class="small up chevron icon"></i>
|
||||
</i>
|
||||
77
resources/views/contacto.blade.php
Normal file
@ -0,0 +1,77 @@
|
||||
@extends('layout.base')
|
||||
|
||||
@section('page_content')
|
||||
<div class="ui container" id="contacto">
|
||||
<div class="ui stackable two columns grid">
|
||||
<div class="column">
|
||||
<form class="ui form" id="formulario" method="post" action="{{$urls->base}}/contacto">
|
||||
<div class="field">
|
||||
<div class="ui stackable grid">
|
||||
<div class="three wide column">
|
||||
<h3>
|
||||
CONTACTO
|
||||
</h3>
|
||||
</div>
|
||||
<div class="thirteen wide column">
|
||||
Canal de consultas, reclamos y sugerencias
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<input type="text" name="nombre" placeholder="Nombre" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<input type="text" name="telefono" placeholder="Teléfono" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<input type="text" name="email" placeholder="Email" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<textarea name="mensaje" placeholder="Mensaje"></textarea>
|
||||
</div>
|
||||
<div class="field">
|
||||
<button class="ui inverted dark-blue button">Enviar</button>
|
||||
</div>
|
||||
<div class="ui message transition hidden" id="mensaje_contacto">
|
||||
<i class="close icon"></i>
|
||||
<span id="msg"></span>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="ui embed" id="map" data-source="Google Maps" data-url="{{$url}}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('styles')
|
||||
<link rel="stylesheet" type="text/css" href="{{$urls->assets->styles}}/contacto.css" />
|
||||
@endpush
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#formulario').submit(function(e) {
|
||||
e.preventDefault()
|
||||
|
||||
var nombre = $(this).find("[name='nombre']").val()
|
||||
var telefono = $(this).find("[name='telefono']").val()
|
||||
var email = $(this).find("[name='email']").val()
|
||||
var mensaje = $(this).find("[name='mensaje']").val()
|
||||
|
||||
$.post('{{$urls->base}}/contacto', {nombre: nombre, telefono: telefono, email: email, mensaje: mensaje}, function(data) {
|
||||
$('#mensaje_contacto').find('#msg').html('Mensaje enviado.')
|
||||
$('#mensaje_contacto').addClass('success').removeClass('hidden').show()
|
||||
$('#mensaje_contacto').find('.close').click(function() {
|
||||
$('#mensaje_contacto').find('#msg').html('')
|
||||
$('#mensaje_contacto').addClass('hidden').removeClass('success error')
|
||||
})
|
||||
}, 'json')
|
||||
|
||||
return false
|
||||
})
|
||||
$('#map').embed()
|
||||
})
|
||||
</script>
|
||||
@endpush
|
||||
47
resources/views/contacto/email.php
Normal file
@ -0,0 +1,47 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Contacto Web - {{$nombre}}</title>
|
||||
<!--[if !mso]><!-- -->
|
||||
|
||||
<link href='http://fonts.googleapis.com/css2?family=Roboto' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!--<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<table style="font-family: Roboto, sans-serif; font-size: 12pt; color: rgb(109, 110, 112);">
|
||||
<tr>
|
||||
<td style="font-weight: 700; text-align: right;">
|
||||
Nombre
|
||||
</td>
|
||||
<td colspan="6">
|
||||
{{$nombre}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: 700; text-align: right;">
|
||||
Teléfono
|
||||
</td>
|
||||
<td colspan="6">
|
||||
{{$telefono}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: 700; text-align: right;">
|
||||
Email
|
||||
</td>
|
||||
<td colspan="6">
|
||||
{{$email}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: 700; text-align: right; vertical-align: top;">
|
||||
Mensaje
|
||||
</td>
|
||||
<td colspan="6">
|
||||
{{$mensaje}}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
16
resources/views/home.blade.php
Normal file
@ -0,0 +1,16 @@
|
||||
@extends('layout.base')
|
||||
|
||||
@section('page_content')
|
||||
@include('home.banner')
|
||||
@include('home.suplente')
|
||||
@include('home.numero')
|
||||
@include('home.links')
|
||||
@if ($transparencia)
|
||||
@include('home.indice')
|
||||
@endif
|
||||
@include('home.aviso')
|
||||
@endsection
|
||||
|
||||
@push('styles')
|
||||
<link rel="stylesheet" type="text/css" href="{{$urls->assets->styles}}/home.css" />
|
||||
@endpush
|
||||
20
resources/views/home/aviso.blade.php
Normal file
@ -0,0 +1,20 @@
|
||||
<div class="ui mini basic modal" id="aviso">
|
||||
<i class="close icon"></i>
|
||||
<div class="inverted dark-blue header">
|
||||
{{$aviso->titulo}}
|
||||
</div>
|
||||
<div class="inverted dark-blue content">
|
||||
{!!nl2br($aviso->contenido)!!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#aviso').modal()
|
||||
@if ($aviso->activo)
|
||||
$('#aviso').modal('show')
|
||||
@endif
|
||||
})
|
||||
</script>
|
||||
@endpush
|
||||
15
resources/views/home/banner.blade.php
Normal file
@ -0,0 +1,15 @@
|
||||
<div id="banner">
|
||||
<div class="ui container">
|
||||
<div class="ui basic segment">
|
||||
@include('home.banner.pastilla')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('styles')
|
||||
<style type="text/css">
|
||||
#banner {
|
||||
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0)), url('{{$urls->assets->images}}/banner2.webp');
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
15
resources/views/home/banner/pastilla.blade.php
Normal file
@ -0,0 +1,15 @@
|
||||
<div class="ui stackable grid">
|
||||
<div class="mensaje eight wide large column">
|
||||
<div class="content">
|
||||
<div class="header">
|
||||
<strong>
|
||||
{!!nl2br($banner->titulo)!!}
|
||||
</strong>
|
||||
</div>
|
||||
<br />
|
||||
<div class="description">
|
||||
{!!nl2br($banner->contenido)!!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
64
resources/views/home/indice.blade.php
Normal file
@ -0,0 +1,64 @@
|
||||
<div class="ui container" id="indice">
|
||||
<div class="ui stackable grid">
|
||||
<div class="row">
|
||||
<div class="ten wide column img"></div>
|
||||
<div class="six wide column contenido">
|
||||
<div class="titulo">
|
||||
ÍNDICES EN LÍNEA
|
||||
</div>
|
||||
<br />
|
||||
<form class="ui form" method="post" action="#" id="form_indices">
|
||||
<div class="field">
|
||||
<div class="ui calendar" id="indices_calendar">
|
||||
<div class="ui input left icon">
|
||||
<i class="calendar icon"></i>
|
||||
<input type="text" name="calendar" placeholder="Mes / Año" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="#" id="indices_descarga">
|
||||
<button class="ui right floated inverted dark-blue button">DESCARGA</button>
|
||||
</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('styles')
|
||||
<style type="text/css">
|
||||
#indice .img {
|
||||
background-image: url("{{$urls->assets->images}}/escrituras.jpg")
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#indices_calendar').calendar({
|
||||
type: 'month',
|
||||
text: {
|
||||
months: [
|
||||
'{!!implode("', '", $months->full)!!}'
|
||||
],
|
||||
monthsShort: [
|
||||
'{!!implode("', '", $months->short)!!}'
|
||||
]
|
||||
},
|
||||
onChange: function() {
|
||||
var months = [
|
||||
'{!!implode("', '", $months->full)!!}'
|
||||
]
|
||||
var date = arguments[0]
|
||||
var url = '{{$urls->uploads}}/indices_' + date.getFullYear() + '_' + months[date.getMonth()] + '.pdf'
|
||||
$('#indices_descarga').attr('href', url)
|
||||
}
|
||||
})
|
||||
$('#form_indices').submit(function(e) {
|
||||
e.preventDefault()
|
||||
return false
|
||||
})
|
||||
})
|
||||
</script>
|
||||
@endpush
|
||||
18
resources/views/home/links.blade.php
Normal file
@ -0,0 +1,18 @@
|
||||
<div id="servicios">
|
||||
<div class="ui container">
|
||||
<div class="ui stackable grid">
|
||||
<div class="row" id="consultas">
|
||||
<div class="four wide column">
|
||||
@include('home.links.documentos', ['title' => 'DOCUMENTOS ONLINE', 'items' => $links->documentos])
|
||||
</div>
|
||||
<div class="column"></div>
|
||||
<div class="four wide column">
|
||||
@include('home.links.consultas', ['title' => 'LINKS DE CONSULTA', 'items' => $links->consulta])
|
||||
</div>
|
||||
<div class="column"></div>
|
||||
<div class="center aligned six wide column seguimiento" style="background-image: url('{{$urls->assets->images}}/documentos.jpg')">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||