From c62263d3b3fad0adc3c7cff06a61180e62c0f196 Mon Sep 17 00:00:00 2001 From: brianr Date: Tue, 9 Apr 2024 09:33:50 +0000 Subject: [PATCH] Initial Upload --- Templates/controller.pm.tem | 130 ++++++++++++++++++++++++++++ Templates/html_controls.html.ep.tem | 10 +++ Templates/html_controls.html.ep.xml | 54 ++++++++++++ Templates/layout.html.ep.tem | 46 ++++++++++ Templates/partial.html.ep.tem | 18 ++++ 5 files changed, 258 insertions(+) create mode 100644 Templates/controller.pm.tem create mode 100644 Templates/html_controls.html.ep.tem create mode 100644 Templates/html_controls.html.ep.xml create mode 100644 Templates/layout.html.ep.tem create mode 100644 Templates/partial.html.ep.tem diff --git a/Templates/controller.pm.tem b/Templates/controller.pm.tem new file mode 100644 index 0000000..d76f8c1 --- /dev/null +++ b/Templates/controller.pm.tem @@ -0,0 +1,130 @@ +package SrvMngr::Controller::${PackageName}; + +#---------------------------------------------------------------------- +# heading : ${MenuHeading} +# description : ${MenuDescription} +# navigation : ${MenuNavigation} +# +# name : ${lcPackageName}, method : get, url : /${lcPackageName}, ctlact : ${lcPackageName}#main +# name : ${lcPackageName}d, method : post, url : /${lcPackageName}d, ctlact : ${lcPackageName}#do_update +# +# routes : end +# +# Documentation: https://wiki.contribs.org/{PackageName} +#---------------------------------------------------------------------- + +use strict; +use warnings; +use Mojo::Base 'Mojolicious::Controller'; + +use constant FALSE => 0; +use constant TRUE => 1; + +use Locale::gettext; +use SrvMngr::I18N; +use SrvMngr qw(theme_list init_session); + +use Data::Dumper; + +use esmith::util; +use esmith::HostsDB; +use esmith::AccountsDB; +use esmith::NetworksDB; +use esmith::HostsDB; +use esmith::DomainsDB; + + +#The most common ones +our $db = esmith::ConfigDB->open() || die("Couldn't open config db"); +our $adb = esmith::AccountsDB->open() || die("Couldn't open Accounts db"); +our $ndb = esmith::NetworksDB->open() || die("Couldn't open Network db"); +our $hdb = esmith::HostsDB->open() || die("Couldn't open Hosts db"); +our $ddb = esmith::DomainsDB->open() || die("Couldn't open Domains db"); + +sub main { + + my $c = shift; + $c->app->log->info( $c->log_req ); + + my %${prefix}_data = (); + my $title = $c->l("${prefix}_${MenuDescription}"); + my $modul = ''; + + $$${prefix}_data{trt} = '${firstPanel}'; + + $c->stash( + title => $title, + modul => $modul, + ${prefix}_data => \%${prefix}_data + ); + $c->render( template => "${PackageName}" ); +} + +sub do_update { + my $c = shift; + $c->app->log->info($c->log_req); + + my %${prefix}_data = (); + my $title = $c->l("${prefix}_${MenuDescription}"); + + # Accessing all POST parameters + my %params = $c->req->params->to_hash; + + # Get number of POST parameters + my $num_params = keys %params; + + #Params are available in the hash "params" + # you may use: + foreach my $key (keys %params) { + my $value = $params{$key}; + $c->app->log->debug("$key: $value"); + } + + # the value of trt will tell you which panel has returned + my $trt = $c->param('trt') || '${firstPanel}' ; #hidden control on every form. + my $ret = 'ok'; + #Validate the parameters accordingly + + if ($trt eq '${condition}'){ + #Validate for panel ${condition} + # set $ret = $c->l(''Error message') if invalid' + } + + if ($ret ne "ok"){ + $c->stash(error => $c->l($ret)) + } else { + $c->stash( success => $c->l('ok message')) + } + if ($ret eq 'ok'){ + #Do whatever + } + # set ${prefix}_data{trt} = ; + $c->stash( + title => $title, + ${prefix}_data => \%${prefix}_data + # Extra data in here - repeat for each stash data entry needed for panels + ); + + $c->render("${PackageName}") +} + +# get routines for the stash contents here. + + +1; + + + + + + + + + + + + + + + + diff --git a/Templates/html_controls.html.ep.tem b/Templates/html_controls.html.ep.tem new file mode 100644 index 0000000..192c70f --- /dev/null +++ b/Templates/html_controls.html.ep.tem @@ -0,0 +1,10 @@ +{ +Text:"\n

\n\n%=l('${Label}'), class => 'label'\n\n%= ${Value}, class => 'data'\n\n

", +Selection:"\n\n

\n%=l('${Label}')\n\n% my @${Name}_options = ${Value};\n% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';\n%= select_field '${Name}' => @${Name}_options, class => 'input'\n

", +Textarea:"\n\n\n%=l('${Label}')\n\n% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';\n%= text_area '${Name}', cols=>50, rows=>15\n
", +Date:"\n\n\n%=$%=l('${Label}')\n\n%=date_field '${Name}' =>$$${Name}\n
", +Textinput:"\n\n

\n%=l('${Label}')\n\n% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';\n%= text_field '${Name}', size => '60', class => 'input'\n

", +SubHeader:"\n

${value}

", +Paragraph:"\n

${value}

", +Submit:"\n\n%= submit_button l('${value}'), class => 'action'\n" +} diff --git a/Templates/html_controls.html.ep.xml b/Templates/html_controls.html.ep.xml new file mode 100644 index 0000000..11ff964 --- /dev/null +++ b/Templates/html_controls.html.ep.xml @@ -0,0 +1,54 @@ + + + %=l('${Label}'), class => 'label' + + %= ${Value}, class => 'data' +

+ ]]>
+ + + %=l('${Label}') + + % my @${Name}_options = ${Value}; + % param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}'; + %= select_field '${Name}' => @${Name}_options, class => 'input' +

+ ]]>
+ + + + + %=$%=l('${Label}') + + %=date_field '${Name}' =>$$${Name} +
+ ]]>
+ + + %=l('${Label}') + + % param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}'; + %= text_field '${Name}', size => '60', class => 'input' +

+ ]]>
+ + ${value}]]> + ${value}

]]>
+ + + %= submit_button l('${value}'), class => 'action' + ]]> + +
diff --git a/Templates/layout.html.ep.tem b/Templates/layout.html.ep.tem new file mode 100644 index 0000000..e358431 --- /dev/null +++ b/Templates/layout.html.ep.tem @@ -0,0 +1,46 @@ +% layout 'default', title => "Sme server 2 - ${MenuDescription}", share_dir => './'; +% content_for 'module' => begin +
+ + % if ($config->{debug} == 1) { +

+ %= dumper $c->current_route +

+ % } + +

<%=$title%>

+ + % if ( stash('modul') ) { + %= $c->render_to_string(inline => stash('modul') ); + % } + + %if ($$${prefix}_data->{first}) { +

+ %=$c->render_to_string(inline =>$c->l($$${prefix}_data->{first})) +

+ + %} elsif ($$${prefix}_data->{success}) { +
+

Operation Status Report

+ %= $c->l($$${prefix}_data->{success}); +

+
+ + %} elsif ($$${prefix}_data->{error}) { +
+

Operation Status Report - error

+ %= $c->l($$${prefix}_data->{error}); +

+
+ %} + + %#Routing to partials according to trt parameter. + + % if ($$${prefix}_data->{trt} eq "${condition}") { + %= include 'partials/_${prefix}_${condition}' + %} + + + +
+%end diff --git a/Templates/partial.html.ep.tem b/Templates/partial.html.ep.tem new file mode 100644 index 0000000..b820303 --- /dev/null +++ b/Templates/partial.html.ep.tem @@ -0,0 +1,18 @@ +
+ +

+ %= l("${prefix} Hello ${route}"); +

+ % my $btn = l('APPLY'); + %= form_for "${PackageName}d" => (method => 'POST') => begin + + % param 'trt' => $$${prefix}_data->{trt} unless param 'trt'; + %= hidden_field 'trt' => $$${prefix}_data->{trt} + %# Inputs etc in here. + %# Probably finally by a submit. + % end +