Compare commits

..

3 Commits

Author SHA1 Message Date
c3ce84143f Logger para ver Nosotros 2020-06-10 22:50:04 -04:00
6e3418402c FIX: testo multilinea en faq 2020-06-10 21:01:09 -04:00
e378054972 Desacople e implementacion de email 2020-06-09 18:06:36 -04:00
25 changed files with 509 additions and 33 deletions

View File

@ -1,3 +0,0 @@
<?php
// Global visit counter
//$app->add(new ProVM\KI\Common\Middleware\Visits($app->getContainer()->get('file.visits'), $app->getContainer()->get('visits.time')));

View File

@ -60,8 +60,24 @@ return [
$segmentos = json_decode(trim(file_get_contents($filename))); $segmentos = json_decode(trim(file_get_contents($filename)));
return $segmentos; return $segmentos;
}, },
Slim\Views\Blade::class => function(Container $c) { 'email' => function(Container $c) {
return new Slim\Views\Blade( $filename = implode(DIRECTORY_SEPARATOR, [
$c->get('folders.data'),
'emails.json'
]);
$emails = json_decode(trim(file_get_contents($filename)));
return $emails->settings;
},
'emails' => function(Container $c) {
$filename = implode(DIRECTORY_SEPARATOR, [
$c->get('folders.data'),
'emails.json'
]);
$emails = json_decode(trim(file_get_contents($filename)));
return $emails->emails;
},
ProVM\KI\Common\Alias\View::class => function(Container $c) {
return new ProVM\KI\Common\Implementation\View(
$c->get('folders.templates'), $c->get('folders.templates'),
$c->get('folders.cache'), $c->get('folders.cache'),
null, null,
@ -91,5 +107,18 @@ return [
$c->get('folders.data'), $c->get('folders.data'),
$c->get('folders.public') $c->get('folders.public')
); );
},
ProVM\KI\Common\Alias\Message::class => function(Container $c) {
return new ProVM\KI\Common\Implementation\Message();
},
ProVM\KI\Common\Alias\Mailer::class => function(Container $c) {
return new ProVM\KI\Common\Implementation\Mailer([
'host' => $c->get('email')->host->name,
'username' => $c->get('email')->user->name,
'password' => $c->get('email')->user->password
]);
},
Psr\Log\LoggerInterface::class => function(Container $c) {
return new ProVM\Common\Implementation\Logger(implode(DIRECTORY_SEPARATOR, [$c->get('folders.base'), 'admin.log']));
} }
]; ];

6
common/Alias/Mailer.php Normal file
View File

@ -0,0 +1,6 @@
<?php
namespace ProVM\KI\Common\Alias;
interface Mailer {
public function send(Message $message): bool;
}

4
common/Alias/Message.php Normal file
View File

@ -0,0 +1,4 @@
<?php
namespace ProVM\KI\Common\Alias;
interface Message {}

9
common/Alias/View.php Normal file
View File

@ -0,0 +1,9 @@
<?php
namespace ProVM\KI\Common\Alias;
use Psr\Http\Message\ResponseInterface as Response;
interface View {
public function render(Response $response, $template, array $data = []);
public function fetch($template, array $data = []);
}

View File

@ -4,7 +4,7 @@ namespace ProVM\KI\Common\Controller\Web\Admin;
use Psr\Container\ContainerInterface as Container; use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use ProVM\KI\Common\Alias\View;
class Faq { class Faq {
public function __invoke(Request $request, Response $response, View $view, Container $container) { public function __invoke(Request $request, Response $response, View $view, Container $container) {

View File

@ -4,7 +4,7 @@ namespace ProVM\KI\Common\Controller\Web\Admin;
use Psr\Container\ContainerInterface as Container; use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use ProVM\KI\Common\Alias\View;
class Home { class Home {
public function __invoke(Request $request, Response $response, View $view, Container $container): Response { public function __invoke(Request $request, Response $response, View $view, Container $container): Response {

View File

@ -4,7 +4,8 @@ namespace ProVM\KI\Common\Controller\Web\Admin;
use Psr\Container\ContainerInterface as Container; use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use Psr\Log\LoggerInterface as Logger;
use ProVM\KI\Common\Alias\View;
class Nosotros { class Nosotros {
public function __invoke(Request $request, Response $response, View $view, Container $container) { public function __invoke(Request $request, Response $response, View $view, Container $container) {
@ -15,19 +16,30 @@ class Nosotros {
$nosotros = trim(json_decode(trim(file_get_contents($filename)))); $nosotros = trim(json_decode(trim(file_get_contents($filename))));
return $view->render($response, 'admin.nosotros', compact('nosotros')); return $view->render($response, 'admin.nosotros', compact('nosotros'));
} }
public function guardar(Request $request, Response $response, Container $container) { public function guardar(Request $request, Response $response, Container $container, Logger $logger) {
$logger->info('Llamado a guardar en Nosotros.');
$post = $request->getParsedBody(); $post = $request->getParsedBody();
$logger->info('Información en post:', compact('post'));
$filename = implode(DIRECTORY_SEPARATOR, [ $filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.data'), $container->get('folders.data'),
'nosotros.json' 'nosotros.json'
]); ]);
$nosotros = trim(json_decode(trim(file_get_contents($filename)))); $nosotros = trim(json_decode(trim(file_get_contents($filename))));
$logger->info('Contenido de nosotros.json', compact('nosotros'));
$data = trim(json_decode(json_encode($post['nosotros']))); $data = trim(json_decode(json_encode($post['nosotros'])));
$status = false; $status = false;
if ($nosotros != $data) { if ($nosotros != $data) {
$status = (file_put_contents($filename, json_encode($post['nosotros'])) !== false); $status = (file_put_contents($filename, json_encode($post['nosotros'])) !== false);
if ($status) {
$logger->info('Guardados los cambios en nosotros.json');
} else {
$logger->notice('No se pudo guardar los cambios en nosotros.json');
}
} else {
$logger->info('No se han hecho cambios en nosotros.');
} }
$code = 301; $code = 301;
if ($status) { if ($status) {
$code = 302; $code = 302;

View File

@ -4,7 +4,7 @@ namespace ProVM\KI\Common\Controller\Web\Admin;
use Psr\Container\ContainerInterface as Container; use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use ProVM\KI\Common\Alias\View;
use Carbon\Carbon; use Carbon\Carbon;
use ProVM\Common\Factory\Model as ModelFactory; use ProVM\Common\Factory\Model as ModelFactory;
use ProVM\KI\Producto; use ProVM\KI\Producto;

View File

@ -4,8 +4,8 @@ namespace ProVM\KI\Common\Controller\Web;
use Psr\Container\ContainerInterface as Container; use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View;
use Carbon\Carbon; use Carbon\Carbon;
use ProVM\KI\Common\Alias\View;
class Base { class Base {
public function __invoke(Request $request, Response $response, View $view, Container $container) { public function __invoke(Request $request, Response $response, View $view, Container $container) {

View File

@ -1,12 +1,63 @@
<?php <?php
namespace ProVM\KI\Common\Controller\Web; namespace ProVM\KI\Common\Controller\Web;
use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use ProVM\KI\Common\Alias\Message;
use ProVM\KI\Common\Alias\Mailer;
use ProVM\KI\Common\Alias\View;
class Contacto { class Contacto {
public function __invoke(Request $request, Response $response, View $view) { public function __invoke(Request $request, Response $response, View $view): Response {
return $view->render($response, 'contacto'); return $view->render($response, 'contacto');
} }
public function enviar(Request $request, Response $response, Container $container, Mailer $mailer): 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('emails')[0])
->addTo($container->get('emails')[0])
->addCc($container->get('emails')[1])
->setSubject($subject)
->setBody($body)
->setHTMLBody($html);
$status = $mailer->send($message);
$message = $container->make(Message::class)
->setFrom($container->get('emails')[0])
->addTo($post['mail'], $post['nombre'])
->setSubject($subject)
->setBody('Su correo a CapitalInvestments ha sido recibido.');
$mailer->send($message);
$output = [
'informacion' => $post,
'estado' => $status,
'mail' => [
'from' => $post['mail'],
'to' => $container->get('emails')[0],
'cc' => $container->get('emails')[1],
'asunto' => $subject,
'mensaje' => $body,
'html' => $html
]
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
} }

View File

@ -4,7 +4,7 @@ namespace ProVM\KI\Common\Controller\Web;
use Psr\Container\ContainerInterface as Container; use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use ProVM\KI\Common\Alias\View;
class Faq { class Faq {
public function __invoke(Request $request, Response $response, View $view, Container $container) { public function __invoke(Request $request, Response $response, View $view, Container $container) {

View File

@ -4,7 +4,7 @@ namespace ProVM\KI\Common\Controller\Web;
use Psr\Container\ContainerInterface as Container; use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use ProVM\KI\Common\Alias\View;
class Nosotros { class Nosotros {
public function __invoke(Request $request, Response $response, View $view, Container $container) { public function __invoke(Request $request, Response $response, View $view, Container $container) {
@ -17,11 +17,11 @@ class Nosotros {
$max_phrase = 50; $max_phrase = 50;
if (strlen($nosotros) > $min) { if (strlen($nosotros) > $min) {
$half = strlen($nosotros) / 2; $half = strlen($nosotros) / 2;
$pos = strpos($nosotros, '.', $half); $pos = mb_strpos($nosotros, '.', $half); // Siguiente punto despues de la mitad
if ($pos > $half + $max_phrase) { if ($pos > $half + $max_phrase) { // Si está muy lejos de la mitad busca otra posicion
$pos = strrpos($nosotros, '.', -$half); $pos = mb_strrpos($nosotros, '.', -$half) + 1; // Punto antes de la mitad
} }
$nosotros = $this->str_split_unicode($nosotros, $pos, '-'); $nosotros = $this->str_split_unicode($nosotros, $pos);
if (count($nosotros) > 2) { if (count($nosotros) > 2) {
$s1 = array_shift($nosotros); $s1 = array_shift($nosotros);
$nosotros = [$s1, implode('', $nosotros)]; $nosotros = [$s1, implode('', $nosotros)];

View File

@ -4,7 +4,7 @@ namespace ProVM\KI\Common\Controller\Web;
use Psr\Container\ContainerInterface as Container; use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use ProVM\KI\Common\Alias\View;
use ProVM\Common\Factory\Model as ModelFactory; use ProVM\Common\Factory\Model as ModelFactory;
use ProVM\KI\Producto; use ProVM\KI\Producto;

View File

@ -0,0 +1,102 @@
<?php
namespace ProVM\KI\Common\Implementation;
use PHPMailer\PHPMailer\PHPMailer as BaseMailer;
use PHPMailer\PHPMailer\SMTP;
use ProVM\KI\Common\Alias\Mailer as MailerInterface;
use ProVM\KI\Common\Alias\Message;
class Mailer implements MailerInterface {
protected $host;
protected $port;
protected $user;
protected $is_secure = false;
public function __construct(array $settings) {
if (!isset($settings['host'])) {
throw new \Exception('Host is missing in ' . get_called_class());
}
$this->host = $settings['host'];
if (!isset($settings['username'])) {
throw new \Exception('User name is missing in ' . get_called_class());
}
$this->user = (object) ['name' => null, 'password' => null];
$this->user->name = $settings['username'];
if (!isset($settings['password'])) {
throw new \Exception('User password is missing in ' . get_called_class());
}
$this->user->password = $settings['password'];
$this->port = 25;
if (isset($settings['secure']) and $settings['secure'] == 'ssl') {
$this->is_secure = true;
$this->port = 465;
}
if (isset($settings['port'])) {
$this->port = $settings['port'];
}
}
public function isSecure(): bool {
return $this->is_secure;
}
public function send(Message $message): bool {
$mailer = new BaseMailer();
$mailer->isSMTP();
//$mailer->SMTPDebug = SMTP::DEBUG_SERVER;
$mailer->Host = $this->host;
$mailer->SMTPAuth = true;
$mailer->Username = $this->user->name;
$mailer->Password = $this->user->password;
$mailer->Port = $this->port;
if ($this->isSecure()) {
$mailer->SMTPSecure = BaseMailer::ENCRYPTION_STARTTLS;
}
try {
$from = $message->getFrom();
if ($from->name !== null) {
$mailer->setFrom($from->email, $from->name);
} else {
$mailer->setFrom($from->email);
}
foreach ($message->getTo() as $to) {
if ($to->name !== null) {
$mailer->addAddress($to->email, $to->name);
} else {
$mailer->addAddress($to->email);
}
}
$ccs = $message->getCc();
if (!empty($ccs)) {
foreach ($ccs as $cc) {
if ($cc->name !== null) {
$mailer->addCC($cc->email, $cc->name);
} else {
$mailer->addCC($cc->email);
}
}
}
$bccs = $message->getBcc();
if (!empty($bccs)) {
foreach ($bccs as $bcc) {
if ($bcc->name !== null) {
$mailer->addBCC($bcc->email, $bcc->name);
} else {
$mailer->addBCC($bcc->email);
}
}
}
$mailer->Subject = $message->getSubject();
if ($message->isHtml()) {
$mailer->Body = $message->getHtmlBody();
$mailer->isHTML();
$mailer->AltBody = $message->getBody();
} else {
$mailer->Body = $message->getBody();
}
$mailer->send();
return true;
} catch (\Exception $e) {
return false;
}
}
}

View File

@ -0,0 +1,100 @@
<?php
namespace ProVM\KI\Common\Implementation;
use ProVM\KI\Common\Alias\Message as MessageInterface;
class Message implements MessageInterface {
protected $from;
public function setFrom(string $email, string $name = null): Message {
$this->from = $this->formatEmail($email, $name);
return $this;
}
public function getFrom() {
return $this->from;
}
protected $reply_to;
public function addReplyTo(string $email, string $name = null): Message {
if ($this->reply_to === null) {
$this->reply_to = [];
}
$this->reply_to []= $this->formatEmail($email, $name);
return $this;
}
public function getReplyTo() {
return $this->reply_to;
}
protected $subject;
public function setSubject(string $subject): Message {
$this->subject = $subject;
return $this;
}
public function getSubject(): string {
return $this->subject;
}
protected $to;
public function addTo(string $email, string $name = null): Message {
if ($this->to === null) {
$this->to = [];
}
$this->to []= $this->formatEmail($email, $name);
return $this;
}
public function getTo(): array {
return $this->to;
}
protected $cc;
public function addCc(string $email, string $name = null): Message {
if ($this->cc === null) {
$this->cc = [];
}
$this->cc []= $this->formatEmail($email, $name);
return $this;
}
public function getCc() {
return $this->cc;
}
protected $bcc;
public function addBcc(string $email, string $name = null): Message {
if ($this->bcc === null) {
$this->bcc = [];
}
$this->bcc []= $this->formatEmail($email, $name);
return $this;
}
public function getBcc() {
return $this->bcc;
}
protected $body;
public function setBody(string $body): Message {
$this->body = $body;
return $this;
}
public function getBody(): string {
return $this->body;
}
protected $html;
protected $is_html = false;
public function setHtmlBody(string $body): Message {
$this->html = $body;
$this->is_html = true;
return $this;
}
public function getHtmlBody(): string {
return $this->html;
}
public function isHtml(): bool {
return $this->is_html;
}
protected function formatEmail(string $email, string $name = null) {
if (!$name && preg_match('#^(.+) +<(.*)>$#D', $email, $matches)) {
[, $name, $email] = $matches;
$name = stripslashes($name);
$tmp = substr($name, 1, -1);
if ($name === '"' . $tmp . '"') {
$name = $tmp;
}
}
return (object) ['name' => $name, 'email' => $email];
}
}

View File

@ -0,0 +1,7 @@
<?php
namespace ProVM\KI\Common\Implementation;
use Slim\Views\Blade as BaseView;
use ProVM\KI\Common\Alias\View as ViewInterface;
class View extends BaseView implements ViewInterface {}

View File

@ -9,12 +9,12 @@
"nyholm/psr7": "^1.2", "nyholm/psr7": "^1.2",
"nyholm/psr7-server": "^0.4.1", "nyholm/psr7-server": "^0.4.1",
"nesbot/carbon": "^2.32", "nesbot/carbon": "^2.32",
"guzzlehttp/guzzle": "^6.5" "guzzlehttp/guzzle": "^6.5",
"phpmailer/phpmailer": "^6.1"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^8.5", "phpunit/phpunit": "^8.5",
"kint-php/kint": "^3.3", "kint-php/kint": "^3.3",
"zeuxisoo/slim-whoops": "^0.7.2",
"joshtronic/php-loremipsum": "^1.0" "joshtronic/php-loremipsum": "^1.0"
}, },
"license": "UNLICENSED", "license": "UNLICENSED",

View File

@ -0,0 +1,67 @@
<?php
namespace ProVM\Common\Implementation;
use Psr\Log\LoggerInterface;
use Psr\Log\LogLevel;
use Carbon\Carbon;
class Logger implements LoggerInterface {
protected $output_file;
public function __construct(string $filename) {
if (!file_exists($filename)) {
$f = fopen($filename, 'c');
fclose($f);
}
if (!file_exists($filename)) {
throw new \Exception('Can not create log file.');
}
$this->output_file = $filename;
}
public function emergency($message, array $context = []) {
return $this->log(LogLevel::EMERGENCY, $message, $context);
}
public function alert($message, array $context = []) {
return $this->log(LogLevel::ALERT, $message, $context);
}
public function critical($message, array $context = []) {
return $this->log(LogLevel::CRITICAL, $message, $context);
}
public function error($message, array $context = []) {
return $this->log(LogLevel::ERROR, $message, $context);
}
public function warning($message, array $context = []) {
return $this->log(LogLevel::WARNING, $message, $context);
}
public function notice($message, array $context = []) {
return $this->log(LogLevel::NOTICE, $message, $context);
}
public function info($message, array $context = []) {
return $this->log(LogLevel::INFO, $message, $context);
}
public function debug($message, array $context = []) {
return $this->log(LogLevel::DEBUG, $message, $context);
}
public function log($level, $message, array $context = []) {
$refl = new \ReflectionClass(LogLevel::class);
$levels = $refl->getConstants();
if (array_search($level, array_values($levels)) === false) {
throw new \InvalidArgumentException('Invalid log level.');
}
$f = Carbon::now('America/Santiago');
$output = [
'time' => $f->format('Y-m-d H:i:s,v'),
'message' => $message
];
if (count($context) > 0) {
$output['context'] = $context;
}
$data = json_decode(trim(file_get_contents($this->output_file)));
if ($data === null) {
$data = [];
}
$data []= $output;
file_put_contents($this->output_file, json_encode($data, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE));
}
}

View File

@ -2,3 +2,4 @@
use ProVM\KI\Common\Controller\Web\Contacto; use ProVM\KI\Common\Controller\Web\Contacto;
$app->get('/contacto', Contacto::class); $app->get('/contacto', Contacto::class);
$app->post('/contacto', [Contacto::class, 'enviar']);

View File

@ -47,7 +47,7 @@
@foreach ($faqs as $faq) @foreach ($faqs as $faq)
{ {
titulo: '{{$faq->titulo}}', titulo: '{{$faq->titulo}}',
contenido: '{{$faq->contenido}}' contenido: "{{implode("\\n", explode(PHP_EOL, $faq->contenido))}}"
}, },
@endforeach @endforeach
], ],
@ -82,7 +82,7 @@
titulo: $("input[name='titulo']").val(), titulo: $("input[name='titulo']").val(),
contenido: $("textarea[name='contenido']").val() contenido: $("textarea[name='contenido']").val()
} }
if (edit) { if (faq.edit) {
input['id'] = $("input[name='id']").val() input['id'] = $("input[name='id']").val()
} }
var url = '{{$urls->admin}}/faqs/add' var url = '{{$urls->admin}}/faqs/add'

View File

@ -0,0 +1,39 @@
<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;">
Email
</td>
<td colspan="6">
{{$mail}}
</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>

View File

@ -14,7 +14,7 @@
</div> </div>
<div class="content"> <div class="content">
<p> <p>
{{$faq->contenido}} {!!nl2br($faq->contenido)!!}
</p> </p>
</div> </div>
@endforeach @endforeach

View File

@ -27,6 +27,10 @@
Enviar Enviar
</button> </button>
</div> </div>
<div class="ui message transition hidden" id="mensaje_contacto">
<i class="close icon"></i>
<span id="msg"></span>
</div>
</div> </div>
</form> </form>
</div> </div>
@ -65,3 +69,59 @@
</div> </div>
</div> </div>
</div> </div>
@push('scripts')
<script type="text/javascript">
var contacto = {
id: "contacto_form",
data: {
nombre: '',
mail: '',
mensaje: ''
},
output: {
id: 'mensaje_contacto',
success: 'Mensaje enviado.',
},
url: '{{$urls->base}}/contacto',
getData: () => {
var form = $(contacto.id)
contacto.data.nombre = form.find("[name='nombre']").val()
contacto.data.mail = form.find("[name='mail']").val()
contacto.data.mensaje = form.find("[name='mensaje']").val()
},
send: () => {
$.post(contacto.url, contacto.data, (data) => {
$(contacto.output.id).find('#msg').html(contacto.output.success)
$(contacto.output.id).addClass('success').removeClass('hidden').show()
$(contacto.output.id).find('.close').click(function() {
$(contacto.output.id).find('#msg').html('')
$(contacto.output.id).addClass('hidden').removeClass('success error')
})
}, 'json')
},
checkIds: () => {
if (contacto.id.indexOf('#') < 0) {
contacto.id = '#' + contacto.id
}
if (contacto.output.id.indexOf('#') < 0) {
contacto.output.id = '#' + contacto.output.id
}
},
setup: () => {
contacto.checkIds()
$(contacto.id).submit((e) => {
e.preventDefault()
contacto.getData()
contacto.send()
return false
})
}
}
$(document).ready(() => {
contacto.setup()
})
</script>
@endpush

View File

@ -26,14 +26,6 @@
&thinsp; &thinsp;
{{$header->hora}} {{$header->hora}}
</div> </div>
<div class="right menu">
<div class="item">
<div class="ui icon input">
<input type="text" placeholder="Buscar" name="search" id="search" />
<i class="search link icon"></i>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>