This commit is contained in:
mynah
2020-01-22 18:22:31 -06:00
parent f16d579996
commit 174f4b0756
38 changed files with 503 additions and 473 deletions

View File

@@ -68,12 +68,11 @@ sub startup {
# admin ======================================================================= # admin =======================================================================
my $admin = $r->under('/admin')->to('users#is_admin'); my $admin = $r->under('/admin')->to('users#is_admin');
$admin->any('')->to('admin#admin'); $admin->any('')->to('admin#admin');
$admin->any('home')->to('admin#admin'); $admin->any('home')->to('admin#home');
$admin->any('radio')->to('admin#radio'); $admin->any('radio')->to('admin#radio');
$admin->any('eventos')->to('admin#eventos'); $admin->any('eventos')->to('admin#eventos');
$admin->any('eventos/:type'=> [type=>['e','p','c']])->to('admin#eventos'); $admin->any('eventos/:type'=> [type=>['e','p','c']])->to('admin#eventos');
$admin->any('mensajes')->to('admin#mensajes'); $admin->any('mensajes')->to('admin#mensajes');
$admin->any('tienda')->to('admin#tienda');
$admin->any('json/:dreq/:id')->to('admin#json'); $admin->any('json/:dreq/:id')->to('admin#json');
# ============================================================================= # =============================================================================

View File

@@ -5,78 +5,103 @@ use Mojo::Base 'Mojolicious::Controller';
use Dojo::Support qw{ log }; use Dojo::Support qw{ log };
# pagina y mensajes ===========================================================
# Admin =======================================================================
sub admin{ sub admin{
my $c= shift; my $c= shift;
my $n=$c->param("dreq")//""; $c->redirect_to('/admin/home');
my $json = {status => "304"}; }
$json = ($c->dbv->rmsgid ($c->param('id')))[0] if ($n =~m/^mensajes$/);
$json = ($c->dbv->ecourse($c->param('id')))[0] if ($n =~m/^ecourse$/); sub home{
$json = ($c->dbv->qcourse($c->param('id')))[0] if ($n =~m/^qcourse$/); my $c=shift;
$json = ($c->dbv->qplace ($c->param('id')))[0] if ($n =~m/^qplace$/); $c->dbv->umod($c->param('link'),$c->param('update'))
$c->render(json=>$json); if (($c->param("hup") // " " )=~/Cambiar/);
$c->stash(template=>"admin/home");
$c->stash(layout=>"admin");
$c->stash( $c->dbv->mod);
}
sub radio{
my $c=shift;
$c->dbv->umod($c->param('link'),'rmod')
if (($c->param("hup") // " " )=~/Cambiar/);
$c->dbg->ugrulla_pass($c->param('gpass'))
if (($c->param("pup") // " " )=~/Cambiar/);
$c->stash($c->dbv->mod);
$c->stash($c->dbg->grulla_pass);
$c->stash(apend => ["admin/candySwitch"]);
$c->stash(template=>"admin/radio");
$c->stash(layout=>"admin");
}
sub mensajes{
my $c=shift;
$c->stash( h=>$c->dbv->msg_heads);
$c->stash(template=>"admin/mensajes");
$c->stash(layout=>"admin");
} }
# Eventos ===================================================================== # Eventos =====================================================================
sub admin_eventos{ sub eventos{
my $c=shift; my $c=shift;
if ( (my $t=$c->param('type') // "") =~/[ecp]/){ if ( (my $t=$c->param('type') // "") =~/[ecp]/){
my $id=$c->param('id'); my $id=$c->param('id');
my $req=$c->param('req'); my $req=$c->param('req');
if ( $req eq "Eliminar"){ if ( $req eq "Eliminar"){
$c->dbv->event_del($id) if ($t eq 'e'); $c->mproc->event_del($id) if ($t eq 'e');
$c->dbv->course_del($id) if ($t eq 'c'); $c->mproc->course_del($id) if ($t eq 'c');
$c->dbv->place_del($id) if ($t eq 'p'); $c->mproc->place_del($id) if ($t eq 'p');
} }
elsif( $req eq "Aceptar"){ elsif( $req eq "Aceptar"){
if($t eq 'e'){ if($t eq 'e'){
my @list=map{$c->param($_)}qw/eplace yini mini dini yend mend dend cost promo pen ecourse eimg een id/; my @list=map{$c->param($_)}qw/eplace yini mini dini yend mend dend cost promo pen ecourse eimg een id/;
$c->dbv->event_up(@list) if ($id ==0); $c->mproc->event_up(@list) if ($id ==0);
$c->dbv->event_ch(@list) if ($id >0); $c->mproc->event_ch(@list) if ($id >0);
} }
if($t eq 'c'){ if($t eq 'c'){
my @list=map{$c->param($_)}qw/cname csubjects cservices cen id/; my @list=map{$c->param($_)}qw/cname csubjects cservices cen id/;
$c->dbv->course_up(@list) if ($id ==0); $c->mproc->course_up(@list) if ($id ==0);
$c->dbv->course_ch(@list) if ($id >0); $c->mproc->course_ch(@list) if ($id >0);
} }
if($t eq 'p'){ if($t eq 'p'){
my @list=map{$c->param($_)}qw/pname paddr pobs pto pst pco plat plng pen id/; my @list=map{$c->param($_)}qw/pname paddr pobs pto pst pco plat plng pen id/;
$c->dbv->place_up(@list) if ($id ==0); $c->mproc->place_up(@list) if ($id ==0);
$c->dbv->place_ch(@list) if ($id >0); $c->mproc->place_ch(@list) if ($id >0);
} }
} }
$c->redirect_to("/admin/eventos"); $c->redirect_to("/admin/eventos");
} }
$c->stash( $c->stash(
courses=>$c->dbv->courses, courses=>$c->mproc->courses,
places=>$c->dbv->places, places=>$c->mproc->places,
months=>$c->dbv->months, months=>['enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre' ],
events=>$c->dbv->events, events=>$c->mproc->events,
img=>$c->dbv->eimgList, img=>$c->mproc->eimgList,
); );
$c->stash(template=>"home/admin/event"); $c->stash(template=>"admin/event");
$c->stash(layout=>"admin");
}
sub admin_tienda{
my $c=shift;
$c->stash(u=>$c->dbv->user_heads);
$c->stash(s=>$c->dbv->store_heads);
$c->stash(template=>"home/admin/tienda");
$c->stash(layout=>"admin"); $c->stash(layout=>"admin");
} }
# Funciones auxiliares ======================================================== # Funciones auxiliares ========================================================
sub admin_json{ sub json{
my $c=shift; my $c=shift;
my $id = $c->param('id'); my $id = $c->param('id');
my $req = $c->param('dreq'); my $req = $c->param('dreq');
my $json = "304"; my $json = "304";
$json = $c->dbv->astore($id) if $req=~/tienda/; $json = $c->dbv->msg($id) if $req=~/mensaje/;
$json = $c->dbv->course($id) if $req=~/course/; $json = $c->dbv->rmsgid ($id) if $req =~/^mensajes$/;
$json = $c->dbv->place($id) if $req=~/place/;
$json = $c->dbv->eventa($id) if $req=~/event/; $json = $c->mproc->course($id) if $req=~/course/;
$json = $c->mproc->place($id) if $req=~/place/;
$json = $c->mproc->eventa($id) if $req=~/event/;
$json = $c->mproc->ecourse($id) if $req =~/^ecourse$/;
$json = $c->mproc->qcourse($id) if $req =~/^qcourse$/;
$json = $c->mproc->qplace ($id) if $req =~/^qplace$/;
$c->render(json=>$json); $c->render(json=>$json);
} }
1;

View File

@@ -1,7 +1,7 @@
package Dojo::Controller::Home; package Dojo::Controller::Home;
use Mojo::Base 'Mojolicious::Controller'; use Mojo::Base 'Mojolicious::Controller';
use Mojo::Template; use Mojo::Template;
use Dojo::Support qw{ log get_names}; use Dojo::Support qw{send_mail log get_names};
use JSON; use JSON;
use Data::Dumper; use Data::Dumper;
#========================= #=========================
@@ -128,51 +128,4 @@ sub candy{
#============================================================================== #==============================================================================
# Admin =======================================================================
sub admin{
my $c= shift;
$c->redirect_to('/admin/home');
}
sub admin_home{
my $c=shift;
$c->dbv->umod($c->param('link'),$c->param('update'))
if (($c->param("hup") // " " )=~/Cambiar/);
$c->stash(template=>"home/admin/home");
$c->stash(layout=>"admin");
$c->stash( $c->dbv->mod);
}
sub admin_radio{
my $c=shift;
$c->dbv->umod($c->param('link'),'rmod')
if (($c->param("hup") // " " )=~/Cambiar/);
$c->dbg->ugrulla_pass($c->param('gpass'))
if (($c->param("pup") // " " )=~/Cambiar/);
$c->stash($c->dbv->mod);
$c->stash($c->dbg->grulla_pass);
$c->stash(apend => ["home/admin/candySwitch"]);
$c->stash(template=>"home/admin/radio");
$c->stash(layout=>"admin");
}
sub admin_mensajes{
my $c=shift;
$c->stash( h=>$c->dbv->msg_heads);
$c->stash(template=>"home/admin/mensajes");
$c->stash(layout=>"admin");
}
sub admin_json{
my $c=shift;
my $id = $c->param('id');
my $req = $c->param('dreq');
my $json = "304";
$json = $c->dbv->msg($id) if $req=~/mensaje/;
$json = $c->dbv->user($id) if $req=~/usuarios/;
$c->render(json=>$json);
}
#==============================================================================
1; 1;

View File

@@ -1,7 +1,7 @@
package Dojo::Controller::Proc; package Dojo::Controller::Proc;
use Mojo::Base 'Mojolicious::Controller'; use Mojo::Base 'Mojolicious::Controller';
use Mojo::Template; use Mojo::Template;
use Dojo::Support qw{ log get_names}; use Dojo::Support qw{ send_mail log get_names};
use LWP::UserAgent; use LWP::UserAgent;
use HTTP::Request::Common; use HTTP::Request::Common;
@@ -125,6 +125,9 @@ sub intentConfirm{
if ($r->{'status'} ne "succeeded" ){intentError($c,"payment not completed,2"); return;} if ($r->{'status'} ne "succeeded" ){intentError($c,"payment not completed,2"); return;}
$c->mproc->intentConfirm($data,$r); $c->mproc->intentConfirm($data,$r);
map { send_mail(@$_) }$c->mproc->notify($data,$r);
my $rtt = { my $rtt = {
'status'=>$r->{'status'}, 'status'=>$r->{'status'},
'plan' => $r->{'payment_method_options'}{'card'}{'installments'}{'plan'}, 'plan' => $r->{'payment_method_options'}{'card'}{'installments'}{'plan'},

View File

@@ -22,7 +22,6 @@ sub reg{
$self->stash(layout=>"default"); $self->stash(layout=>"default");
} }
sub login { sub login {
my $self = shift; my $self = shift;
#falta si el usuario ya está registrado y llama a login. #falta si el usuario ya está registrado y llama a login.
@@ -57,18 +56,21 @@ sub is_logged {
$self->session(ureq=>1,prev=>$self->url_for); $self->session(ureq=>1,prev=>$self->url_for);
$self->redirect_to('login'); $self->redirect_to('login');
} }
sub is_admin { sub is_admin {
my $self = shift; my $self = shift;
return 1 if ( ($self->session('pmid') //0) == 4); return 1 if ( ($self->session('pmid') //0) == 4);
$self->session(ureq=>4,prev=>$self->url_for); $self->session(ureq=>4,prev=>$self->url_for);
$self->redirect_to('login'); $self->redirect_to('login');
} }
sub is_grulla { sub is_grulla {
my $self = shift; my $self = shift;
return 1 if (($self->session('pmid')//0)>=2); return 1 if (($self->session('pmid')//0)>=2);
$self->session(ureq=>2,tmpreq=>0,prev=>$self->url_for); $self->session(ureq=>2,tmpreq=>0,prev=>$self->url_for);
$self->redirect_to('login'); $self->redirect_to('login');
} }
sub is_grulla_tmp{ sub is_grulla_tmp{
my $self = shift; my $self = shift;
return 1 if (($self->session('pmid')//0)>=2); return 1 if (($self->session('pmid')//0)>=2);

View File

@@ -1,11 +1,15 @@
insert into curso
(nombre,temario,servicios,estado) insert into curso (
values( nombre,
?, # cname subnombre,
?, # csubjects descripcion,
?, # cservices imagena,
case ? when "on" then 1 else 0 end #cen maestro,
); temario,
servicios,
estado
)
values(?,?,?,?,?,?,?,?);

View File

@@ -1,14 +1,20 @@
insert into evento
(lugar_id, fecha_inicio, fecha_fin, precio, promocion, promo_estado, curso_id, imagen_chica, estado) insert into curso_tienda (
values( lugar_id,
?, # eplace fecha_inicio,
concat(?,"-",?,"-",?), # yini - mini - dini fecha_fin,
concat(?,"-",?,"-",?), # yend - mend - dend imagen_chica,
?, # cost , comentario,
?, # promo , precio,
case ? when "on" then 1 else 0 end, # pen promocion,
?, # ecourse , promo_estado,
?, # eimg , playera_estado,
case ? when "on" then 1 else 0 end # een spay,
); store,
meses,
cupo,
curso_id,
estado
)
values( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);

View File

@@ -1,15 +1,15 @@
insert into lugar
(nombre,direccion,observacion,municipio,federativa,pais,lat,lng,estado) insert into curso_lugar (
values( nombre,
?, # pname direccion,
?, # paddr observacion,
?, # pobs municipio,
?, # pto federativa,
?, # pst pais,
?, # pco lat,
?, # plat lng,
?, # plng estado
case ? when "on" then 1 else 0 end #pen )
); values(?,?,?,?,?,?,?,?,?);

View File

@@ -1,6 +1,11 @@
update curso set update curso set
nombre = ?, # cname nombre=?,
temario = ?, # csubjects subnombre=?,
servicios = ?, # cservices descripcion=?,
estado = case ? when "on" then 1 else 0 end # cen imagena=?,
maestro=?,
temario=?,
servicios=?,
estado=?
where id = ? ; # cprev where id = ? ; # cprev

View File

@@ -1,2 +1,2 @@
delete from evento where id = ? ; # eprev delete from curso_tienda where id = ? ; # eprev

View File

@@ -1,12 +1,19 @@
update evento set
lugar_id = ?, # eplace update curso_tienda set
fecha_inicio = concat(?,"-",?,"-",?), # yini - mini - dini lugar_id=?,
fecha_fin = concat(?,"-",?,"-",?), # yend - mend - dend fecha_inicio=?,
precio = ?, # cost fecha_fin=?,
promocion = ?, # promo imagen_chica=?,
promo_estado = case ? when "on" then 1 else 0 end, #pen comentario=?,
curso_id = ?, # ecourse precio=?,
imagen_chica = ?, # eimg promocion=?,
estado = case ? when "on" then 1 else 0 end # een promo_estado=?,
playera_estado=?,
spay=?,
store=?,
meses=?,
cupo=?,
curso_id=?,
estado=?
where id = ?; # eprev where id = ?; # eprev

View File

@@ -1,4 +1,4 @@
delete from lugar where id = ?; # pprev ; delete from curso_lugar where id = ?; # pprev ;

View File

@@ -1,4 +1,5 @@
update lugar set
update curso_lugar set
nombre= ?, # pname nombre= ?, # pname
direccion= ?, # paddr direccion= ?, # paddr
observacion= ?,# pobs observacion= ?,# pobs
@@ -7,6 +8,6 @@
pais= ?, # pco pais= ?, # pco
lat=?, # plat lat=?, # plat
lng=?, # plng lng=?, # plng
estado = case ? when "on" then 1 else 0 end # pen estado = ?
where id = ?; # pprev ; where id = ?; # pprev ;

View File

@@ -1,8 +1,14 @@
select select
id as "cid", id as "cid",
nombre as "cname", nombre as "cname",
subnombre as "csubname",
descripcion as "cdesc",
imagen_a as "cimga",
maestro as "cmas",
temario as "csubjects", temario as "csubjects",
servicios as "cservices" servicios as "cservices",
estado as "cestado"
from curso from curso
where id= ? ; #course ; where id= ? ; #course ;

View File

@@ -1,11 +1,8 @@
select select
"event" as "tag", "event" as "tag",
id, id,
lugar_id as "pid", lugar_id as "pid",
curso_id as "cid",
precio as "cost",
promocion as "promo",
promo_estado as "pen",
day(fecha_inicio) as "dini", day(fecha_inicio) as "dini",
month(fecha_inicio) as "mini", month(fecha_inicio) as "mini",
year(fecha_inicio) as "yini", year(fecha_inicio) as "yini",
@@ -13,9 +10,18 @@ select
month(fecha_fin) as "mend", month(fecha_fin) as "mend",
year(fecha_fin) as "yend", year(fecha_fin) as "yend",
coalesce(imagen_chica,0) as "eimg", coalesce(imagen_chica,0) as "eimg",
comentario as "comment",
precio as "cost",
promocion as "promo",
promo_estado as "pen",
playera_estado as "ten",
spay,
estore,
meses,
cupo,
curso_id as "cid",
estado as "een" estado as "een"
from evento from curso_tienda
where id= ? ; # ecourse ; where id= ? ; # ecourse ;

View File

@@ -9,7 +9,7 @@ select
lat as "plat", lat as "plat",
lng as "plng", lng as "plng",
estado as "pen" estado as "pen"
from lugar from curso_lugar
where id= ? ; # course ; where id= ? ; # course ;

View File

@@ -1,11 +1,4 @@
/* c#host localhost*/
/* c#database #dbdata */
/* c#user #dbdata_user */
/* c#password #dbdata_pass */
select select
"cprev" as "tag", "cprev" as "tag",
nombre as "name", nombre as "name",

View File

@@ -1,10 +1,4 @@
/* c#host localhost*/
/* c#database #dbdata */
/* c#user #dbdata_user */
/* c#password #dbdata_pass */
select select
"ecourse" as "tag", "ecourse" as "tag",
nombre as "name", nombre as "name",

View File

@@ -1,13 +0,0 @@
/* c#host localhost*/
/* c#database #dbdata */
/* c#user #dbdata_user */
/* c#password #dbdata_pass */
select
"emend" as "tag",
nombre as "name",
id
from mes;

View File

@@ -1,14 +0,0 @@
/* c#host localhost*/
/* c#database #dbdata */
/* c#user #dbdata_user */
/* c#password #dbdata_pass */
select
"emini" as "tag",
nombre as "name",
id
from mes;

View File

@@ -1,13 +1,6 @@
/* c#host localhost*/
/* c#database #dbdata */
/* c#user #dbdata_user */
/* c#password #dbdata_pass */
select select
"eplace" as "tag", "eplace" as "tag",
nombre as "name", nombre as "name",
id id
from lugar where estado=1; from curso_lugar where estado=1;

View File

@@ -1,9 +1,9 @@
select
concat(day(e.fecha_inicio)," de ",m.nombre," ",l.nombre) as "name", select
e.id as id concat(month(t.fecha_inicio)," ",day(t.fecha_inicio)," ",l.nombre) as "name",
from evento as e t.id as id
inner join lugar as l on e.lugar_id=l.id from curso_tienda as t
inner join mes as m on month(e.fecha_inicio)=m.id inner join curso_lugar as l on t.lugar_id=l.id
where e.estado=1 where t.estado=1
order by e.fecha_inicio desc; order by t.fecha_inicio desc;

View File

@@ -1,15 +1,8 @@
/* c#host localhost*/
/* c#database #dbdata */
/* c#user #dbdata_user */
/* c#password #dbdata_pass */
select select
"pprev" as "tag", "pprev" as "tag",
nombre as "name", nombre as "name",
id id
from lugar from curso_lugar
order by nombre asc; order by nombre asc;

View File

@@ -1,11 +1,10 @@
select select
e.id as imid, e.id as imid,
concat(day(e.fecha)," de ",m.nombre," ", year(e.fecha)) as imdate, concat(month(e.fecha)," ",day(e.fecha)," ", year(e.fecha)) as imdate,
e.nombre as imname, e.nombre as imname,
e.correo as imail, e.correo as imail,
e.texto as immsg e.texto as immsg
from entrada as e from entrada as e
inner join vuelo.mes as m on m.id=month(e.fecha)
where e.id= ? ; #imid where e.id= ? ; #imid

View File

@@ -1,3 +1,4 @@
select select
id as mid, id as mid,
concat(nombre," ",date(fecha)) as "entry" concat(nombre," ",date(fecha)) as "entry"

View File

@@ -1,4 +0,0 @@
select
a.id,a.nombre,a.existencia,a.imagen,a.precio,a.activo,a.descripcion,date(a.vigencia) as vigencia,b.nombre as entrega
from tienda as a inner join entrega as b where a.entrega_id=b.id
and a.id=?;

View File

@@ -1,4 +0,0 @@
select
correo,telefono as tel, observacion as obs,date(ultima) as ultima
from usuario where id=?;

View File

@@ -1,3 +0,0 @@
select
id,nombre,existencia,precio,activo
from tienda order by id;

View File

@@ -1,4 +0,0 @@
select
id,usuario,nombre
from usuario order by usuario;

View File

@@ -1,9 +1,9 @@
insert into caja_evento insert into curso_caja
( (
cliente_nombre, cliente_nombre,
cliente_correo, cliente_correo,
cliente_comentario, cliente_comentario,
tienda_evento_id, curso_tienda_id,
talla_id, talla_id,
cantidad, cantidad,
monto, monto,

View File

@@ -2,7 +2,7 @@ select
t.precio as precio, t.precio as precio,
c.nombre as nombre c.nombre as nombre
from from
tienda_evento as t curso_tienda as t
inner join inner join
curso as c on t.curso_id=c.id curso as c on t.curso_id=c.id
where where

View File

@@ -0,0 +1,12 @@
select
c.nombre as cnombre,
c.subnombre as csubnobre,
t.mmail as mmail,
t.fecha_inicio,
t.fecha_fin,
t.precio as cantidad
from curso_tienda as t
inner join curso as c on c.id = t.curso_id
where t.id = ? and t.estado =1
;

View File

@@ -84,6 +84,50 @@ sub intentConfirm{
return ; return ;
} }
sub notify{
my ($c,$d,$r) = @_;
my $t =shift @{ _read ($data_path->child("spay/qNotify.q")->slurp,$d->{'tid'})};
my @ra;
my %h=qw/0 na 1 ch 2 m 3 g/;
my $plazo= defined( $d->{'selected_plan'})?
$d->{'selected_plan'}->{'count'} : "0";
my $students = $d->{'students'};
my $basetxta = "$t->{'cnombre'}
clave de pago stripe: $d->{'payment_intent_id'}
plazo: $plazo meses
cantidad: $t->{'cantidad'}
";
my $basetxtu = $t->{'cnombre'}//""."
".$t->{'subnombre'}//""."
";
foreach(1 .. $d->{'mq'}) {
push (@ra, ["
$basetxtu
$$students[$_ -1][0]
$t->{'mmail'}
tu clave de pago es la sigiente. Tenla a la mano para cualquier aclaración
==========================
$d->{'payment_intent_id'}
===========================
", " Inscripción ", $$students[$_ -1][1]]);
$basetxta .= "
Nombre: $$students[$_ -1][0]
Correo: $$students[$_ -1][1]
Telefono:$$students[$_ -1][0]
Playera:$h{$$students[$_ -1][3]}
Comentario:$$students[$_ -1][2]
=====================
";
}
push (@ra, [$basetxta,"Inscripciones",'david@chaos.foundation']);
return @ra;
}
# Check payment user info ============== # Check payment user info ==============
# data: # data:
# =============== # ===============
@@ -135,9 +179,9 @@ sub is_mail{
#============================================================================== #==============================================================================
# admin evets # admin evets
sub event_del { return _write("delete from evento where id = ?;",pop);} sub event_del { return _write("delete from curso_tienda where id = ?;",pop);}
sub course_del{ return _write("delete from curso where id = ?;",pop); } sub course_del{ return _write("delete from curso where id = ?;",pop); }
sub place_del { return _write("delete from lugar where id = ?;",pop); } sub place_del { return _write("delete from curso_lugar where id = ?;",pop); }
sub event_up{ sub event_up{
my ($self,@bind)=@_; my ($self,@bind)=@_;
@@ -165,6 +209,22 @@ sub place_ch{
} }
#============================================================================== #==============================================================================
sub courses{ return _read("select nombre as name, id from curso;")}
sub course { return shift @{_read($data_path->child("/admin/event/json/qCourse.q")->slurp,pop)}}
sub places { return _read("select nombre as name, id from curso_lugar;")}
sub place { return shift @{_read($data_path->child("/admin/event/json/qPlace.q")->slurp,pop)}}
sub events { return _read($data_path->child("/admin/event/qEprev.q")->slurp)}
sub eventa { return shift @{_read($data_path->child("/admin/event/json/qEvent.q")->slurp,pop)}}
sub eimgList{
my $dp = path('public/proc/cal/img')->make_path;
return [ map{ $_->basename} grep{/(jpg|png)$/i}@{$dp->list} ];
}
# lower level read ===================================== # lower level read =====================================

View File

@@ -30,17 +30,6 @@ sub pang_md{
return \%h; return \%h;
} }
sub calendar_monthblock {
return _read ($data_path->child("cal/q1Block.q")->slurp);
}
sub calendar_events {
return _read ($data_path->child("cal/q3Event.q")->slurp);
}
sub event{
my ($c,$id)=@_;
return shift @{ _read ($data_path->child("event/qEvent.q")->slurp,$id)};
}
sub tv_videos{ sub tv_videos{
return _read ($data_path->child("/tv/qSeries.q")->slurp); #group,name return _read ($data_path->child("/tv/qSeries.q")->slurp); #group,name
} }
@@ -81,34 +70,6 @@ sub podcast_infoHash{
return shift @$h; return shift @$h;
} }
sub user_heads{
return _readgrulla($data_path->child("admin/tienda/qUsers.q")->slurp);
}
sub store_heads{
return _readgrulla($data_path->child("admin/tienda/qStore.q")->slurp);
}
sub user {
return shift @{_readgrulla($data_path->child("admin/tienda/json/qUsers.q")->slurp,pop)}}
sub astore {
return shift @{_readgrulla($data_path->child("/admin/tienda/json/qStore.q")->slurp,pop)}}
sub courses{ return _read("select nombre as name, id from curso;")}
sub course { return shift @{_read($data_path->child("/admin/event/json/qCourse.q")->slurp,pop)}}
sub places { return _read("select nombre as name, id from lugar;")}
sub place { return shift @{_read($data_path->child("/admin/event/json/qPlace.q")->slurp,pop)}}
sub months { return _read("select nombre as name, id from mes;")};
sub events { return _read($data_path->child("/admin/event/qEprev.q")->slurp)}
sub eventa { return shift @{_read($data_path->child("/admin/event/json/qEvent.q")->slurp,pop)}}
# sub eimgList{ return [get_names("public/home/cal/img/")] }
sub eimgList{
my $dp = path('public/home/cal/img')->make_path;
return [ map{ $_->basename} grep{/(jpg|png)$/i}@{$dp->list} ];
}
#============================================================================== #==============================================================================
# Write vdg user ============================================================== # Write vdg user ==============================================================
sub contact{ sub contact{
@@ -116,7 +77,7 @@ sub contact{
my $q="insert into entrada (nombre,correo,pagina,texto,fecha) values(?,?,?,?,now() )" ; my $q="insert into entrada (nombre,correo,pagina,texto,fecha) values(?,?,?,?,now() )" ;
my @a=@_; my @a=@_;
#simple method to ignore spam #simple method to ignore spam
return _writemsg($q,@a) unless $a[3]=~m/http|website|\<a|feedback|forms|suscribe|advertise|newsletter|promotion|Madam|Sir/; return _writemsg($q,@a) unless $a[3]=~m/http|website|\<a|feedback|forms|suscribe|investment|funding|site|company|advertise|newsletter|promotion|Madam|Sir/;
return 0; return 0;
} }
#============================================================================== #==============================================================================
@@ -127,35 +88,6 @@ sub umod{
return _write($q,@_); return _write($q,@_);
} }
sub event_del { return _write("delete from evento where id = ?;",pop);}
sub course_del{ return _write("delete from curso where id = ?;",pop); }
sub place_del { return _write("delete from lugar where id = ?;",pop); }
sub event_up{
my ($self,@bind)=@_;
return _write($data_path->child("/admin/event/add/qEup.q")->slurp,@bind);
}
sub course_up{
my ($self,@bind)=@_;
return _write($data_path->child("/admin/event/add/qCup.q")->slurp,@bind);
}
sub place_up{
my ($self,@bind)=@_;
return _write($data_path->child("/admin/event/add/qPup.q")->slurp,@bind);
}
sub event_ch{
my ($self,@bind)=@_;
return _write($data_path->child("/admin/event/change/qEup.q")->slurp,@bind);
}
sub course_ch{
my ($self,@bind)=@_;
return _write($data_path->child("/admin/event/change/qCup.q")->slurp,@bind);
}
sub place_ch{
my ($self,@bind)=@_;
return _write($data_path->child("/admin/event/change/qPup.q")->slurp,@bind);
}
#============================================================================== #==============================================================================
#ayudas ===================================== #ayudas =====================================

View File

@@ -2,7 +2,7 @@ package Dojo::Support;
use strict; use strict;
use warnings; use warnings;
use Exporter 'import'; use Exporter 'import';
our @EXPORT = qw/ mtxt commify month_num2txt log dmph merge_hash load_module get_names /; our @EXPORT = qw/send_mail mtxt commify month_names month_num2txt log dmph merge_hash load_module get_names /;
use Mojo::Base 'Mojolicious'; use Mojo::Base 'Mojolicious';
use File::Basename; use File::Basename;
@@ -18,6 +18,11 @@ sub log{
$log->debug("============ ".shift." ==========="); $log->debug("============ ".shift." ===========");
} }
sub _log{
my $log = Mojo::Log->new;
$log->debug("============ ".shift." ===========");
}
sub get_names{ sub get_names{
my $dir = shift; my $dir = shift;
my @file_name; my @file_name;
@@ -45,6 +50,10 @@ sub month_num2txt{
return ("enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre" =~ m/\w+/g)[shift (@_) -1]; return ("enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre" =~ m/\w+/g)[shift (@_) -1];
} }
sub month_names{
return qw /enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre/;
}
sub mtxt { sub mtxt {
my ($di, $mi, $df, $mf)=@_; # dini,mini,dfin,mfin my ($di, $mi, $df, $mf)=@_; # dini,mini,dfin,mfin
my $txt; my $txt;
@@ -89,5 +98,10 @@ sub dmph{
return $y; return $y;
} }
sub send_mail{ #msg header mail
system( 'echo "'.shift.'" | mutt -s '.shift.' '.shift.' &');
_log("mail sent");
return 0;
}
1; 1;

View File

@@ -76,6 +76,7 @@ div.update{
article.edit input[type=submit]{ article.edit input[type=submit]{
margin:15px; margin:15px;
} }
div#cimg,
div#esimg{ div#esimg{
height:180px; height:180px;
width:180px; width:180px;

View File

@@ -1,6 +1,6 @@
d3.select("li#evento").style("background-color","#cedeef"); d3.select("li#evento").style("background-color","#cedeef");
var li = d3.select("article.label","ul").selectAll("li"); var li = d3.select("article.label","ul").selectAll("li");
var img_path = "/home/cal/img/"; var img_path = "/proc/cal/img/";
var json_path = "/admin/json/"; var json_path = "/admin/json/";
/* menu hide and show edit window*/ /* menu hide and show edit window*/
li.on("click",function(){ li.on("click",function(){
@@ -46,10 +46,21 @@ d3.select("select#cprev").on("change",function(){
d3.json(json_path+"course/"+cprev_id ,function(d){ d3.json(json_path+"course/"+cprev_id ,function(d){
if(d!=undefined){if(d.cid != 0){ if(d!=undefined){if(d.cid != 0){
d3.select("input#cname").attr("value",d.cname); d3.select("input#cname").attr("value",d.cname);
d3.select("input#csubname").attr("value",d.csubname);
d3.select("textarea#cdesc").text(d.cdesc);
d3.select("input#cmas").attr("value",d.mas);
d3.select("textarea#csubjects").text(d.csubjects); d3.select("textarea#csubjects").text(d.csubjects);
d3.select("textarea#cservices").text(d.cservices); d3.select("textarea#cservices").text(d.cservices);
}} }); }); }} }); });
function updateImagea(){
var iname=d3.select("select#cimga").node().value;
if(iname != 0){
d3.select("div#cimg").style("background-image","url("+img_path+iname+")");}
else{ d3.select("div#cimg").style("background-image","none"); }
}
d3.select("select#cimga").on("change",updateImagea);
/*preload form content for place*/ /*preload form content for place*/
d3.select("select#pprev").on("change",function(){ d3.select("select#pprev").on("change",function(){
var pprev_id=d3.select("select#pprev").node().value; var pprev_id=d3.select("select#pprev").node().value;

View File

@@ -1,10 +1,13 @@
% stash css=>["/admin/admin.css","/admin/event/event.css"]; % stash css=>["/admin/admin.css","/admin/event/event.css"];
% stash js=>["//admin/event/event.js"]; % stash js=>["/admin/event/event.js"];
<section class="name" flex> <article class="user"> <section class="name" flex>
<article class="user">
<p class="title">Editar Eventos</p> <p class="title">Editar Eventos</p>
</article> </section> </article>
</section>
<section class="event flex"> <section class="event flex">
<article class="label"> <article class="label">
<ul> <ul>
<li id="evento" value="event">Evento</li> <li id="evento" value="event">Evento</li>
@@ -15,7 +18,8 @@
<article class="edit"> <article class="edit">
<!-- Evento ============================================================== --> <!-- Evento ============================================================== -->
<div class="ehide" id="event"> <form action="/admin/eventos/e" method="POST"> <div class="ehide" id="event">
<form id="fev" action="/admin/eventos/e" method="POST">
<div class="flex field"> <div class="flex field">
<label>Curso</label> <label>Curso</label>
<select id="ecourse" name="ecourse"> <select id="ecourse" name="ecourse">
@@ -36,21 +40,21 @@
<label>Fecha inicio</label> <!-- dropdown --> <label>Fecha inicio</label> <!-- dropdown -->
<input id="dini" type="number" min="1" max="31" name="dini" value="1"/> <input id="dini" type="number" min="1" max="31" name="dini" value="1"/>
<select id="mini" name="mini"> <select id="mini" name="mini">
<% map{ %> <% foreach(1 .. 12){ %>
<option value="<%= $_->{'id'} %>"><%= $_->{'name'} %></option> <option value="<%= $_ %>"><%= ${stash('months')}[$_ -1] %> </option>
<% } %><% (@{stash('months')}) %><% if defined(stash('months')); %> <% } %>
</select> </select>
<input id="yini" type="number" min="2019" max="2050" name="yini" value="2019"/> <input id="yini" type="number" min="2020" max="2050" name="yini" value="2020"/>
</div> </div>
<div class="flex field"> <div class="flex field">
<label>Fecha fin</label> <label>Fecha fin</label>
<input id="dend" type="number" min="1" max="31" name="dend" value="1"/> <input id="dend" type="number" min="1" max="31" name="dend" value="1"/>
<select id="mend" name="mend"> <select id="mend" name="mend">
<% map{ %> <% foreach(1 .. 12){ %>
<option value="<%= $_->{'id'} %>"><%= $_->{'name'} %></option> <option value="<%= $_ %>"><%= ${stash('months')}[$_ -1] %> </option>
<% } %><% (@{stash('months')}) %><% if defined(stash('months')); %> <% } %>
</select> </select>
<input id="yend" type="number" min="2019" max="2050" name="yend" value="2019"/> <input id="yend" type="number" min="2020" max="2050" name="yend" value="2020"/>
</div> </div>
<div class="flex field"> <div class="flex field">
<label>Costo</label> <input id="cost" type="text" name="cost"/> <label>Costo</label> <input id="cost" type="text" name="cost"/>
@@ -69,6 +73,28 @@
</select> </select>
<div id=esimg></div> <div id=esimg></div>
</div> </div>
<div class="flex field">
<label>¿con pago en linea?</label><input type="checkbox" checked="checked" id="spay" name="spay"/>
</div>
<div class="flex field">
<label>¿incluye playera?</label><input type="checkbox" id="ten" name="ten"/>
</div>
<div class="flex field">
<label>¿es público?</label><input type="checkbox" checked="checked" id="estore" name="estore"/>
</div>
<div class="flex field">
<label>Pago a meses max:</label><input id="meses" type="number" min="0" max="18" name="meses" value="0"/>
</div>
<div class="flex field">
<label>Cupo</label><input id="meses" type="number" min="0" max="500" name="meses" value="0"/>
</div>
<div class="flex field">
<label>Comentario</label>
<textarea form="fev" id="comment" name="comment"></textarea>
</div>
<div class="flex field"> <div class="flex field">
<label>Existente</label> <label>Existente</label>
<select id="eprev" name="id"> <select id="eprev" name="id">
@@ -84,12 +110,33 @@
<label>Habilitar</label> <label>Habilitar</label>
<input id="een" type="checkbox" checked="checked" name="een" > <input id="een" type="checkbox" checked="checked" name="een" >
</div> </div>
</form> </div> </form>
</div>
<!-- Curso ================================================================ --> <!-- Curso ================================================================ -->
<div class="ehide" id="course"> <form id="fcourse" action="/admin/eventos/c" method="POST"> <div class="ehide" id="course">
<form id="fcourse" action="/admin/eventos/c" method="POST">
<div class="flex field"> <div class="flex field">
<label>Nombre</label> <label>Nombre</label>
<input id="cname" type="text" name="cname"/> <input id="cname" type="text" name="cname"/>
</div> <div class="flex field">
<label>Subnombre</label>
<input id="csubname" type="text" name="csubname"/>
</div> <div class="flex field">
<label>Descripcion</label>
<textarea form="fcourse" id="cdesc" name="cdesc"></textarea>
</div> <div class="flex field">
<label>Maestro</label>
<input id="cmas" type="text" name="cmas"/>
<div class="flex field">
<label>Imagen</label>
<select id="cimga" name="cimga">
<option value="0" selected> -- Elegir imagen -- </option>
<% map{ %>
<option value="<%= $_ %>"><%= $_ %></option>
<% } %><% (@{stash('img')}) %><% if defined(stash('img')); %>
</select>
<div id=cimg></div>
</div>
</div> <div class="flex field"> </div> <div class="flex field">
<label>Temario</label> <label>Temario</label>
<textarea form="fcourse" id="csubjects" name="csubjects"></textarea> <textarea form="fcourse" id="csubjects" name="csubjects"></textarea>
@@ -110,9 +157,11 @@
<label>Habilitar</label> <label>Habilitar</label>
<input type="checkbox" checked="checked" id="cen" name="cen" > <input type="checkbox" checked="checked" id="cen" name="cen" >
</div> </div>
</form> </div> </form>
</div>
<!-- Lugar ================================================================ --> <!-- Lugar ================================================================ -->
<div class="ehide" id="place"><form action="/admin/eventos/p" method="POST"> <div class="ehide" id="place">
<form action="/admin/eventos/p" method="POST">
<div class="flex field"> <div class="flex field">
<label>Nombre</label><input type="text" id= "pname" name="pname"> <label>Nombre</label><input type="text" id= "pname" name="pname">
</div> <div class="flex field"> </div> <div class="flex field">
@@ -143,6 +192,9 @@
<label>Habilitar</label> <label>Habilitar</label>
<input id="pen" type="checkbox" checked="checked" name="pen" > <input id="pen" type="checkbox" checked="checked" name="pen" >
</div> </div>
</form> <div class="mapa"></div> </form>
<div class="mapa"></div>
</div>
</article> </article>
</section> </section>