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
+