Add in chameleon templates for AdminLTE mojo templates

This commit is contained in:
2025-08-30 14:05:36 +01:00
parent 2f468205bd
commit 80140ff5ec
3 changed files with 380 additions and 0 deletions

View File

@@ -0,0 +1,298 @@
<root>
<!-- Todo - add password visibility to password type - DONE
This is a version for the AdminLTE theme.
-->
<Select><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${prefix}_${Label}')
</div><div class="col-auto">
% my @${Name}_options = ${structure:OptionsInPerl};
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%= select_field '${Name}' => @${Name}_options, class => 'input', id => '${Name}_select'
</div>
</div><br>]]></Select>
<MultiSelect><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${prefix}_${Label}')
</div><div class="col-auto">
% my @${Name}_options = ${structure:OptionsInPerl};
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%= select_field '${Name}' => @${Name}_options, class => 'input', id => '${Name}_select', multiple => 'multiple'
</div>
</div><br>]]></MultiSelect>
<Textarea><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${prefix}_${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%= text_area '${Name}', cols=>${cols | 40}, rows=>${rows | 10}, Readonly=>'${Readonly | false}'
</div>
</div><br>]]></Textarea>
<Date><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${prefix}_${Label}')
</div><div class="col-auto">
%=date_field '${Name}' =>$$${Name}, pattern=>${regexp | .*}, title =>'Pattern regex mismatch'
</div>
</div><br>]]></Date>
<Time><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${prefix}_${Label}')
</div><div class="col-auto">
%=time_field '${Name}' =>$$${Name}, pattern=>${regexp | .*}, title =>'Pattern regex mismatch'
</div>
</div><br>]]></Time>
<Text><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${prefix}_${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%= text_field '${Name}', size => '${size | 50}', class => 'textinput ${Name}' , pattern=>'${regexp | ".*"}' , placeholder=>'${placeholder | Name}', title =>'Pattern regex mismatch', id => '${Name}_text'
</div>
</div><br>]]></Text>
<ReadonlyText><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${prefix}_${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%= text_field '${Name}', size => '${size | 50}', class => 'textinput ${Name}' , pattern=>'${regexp | ".*"}' , placeholder=>'${placeholder | Name}', Readonly=>'true' , title =>'Pattern regex mismatch'
</div>
</div><br>]]></ReadonlyText>
<SubHeader><![CDATA[<div class="row g-3 align-items-center">
<h2 class='subh${type_serial}'><%=l('${Value}')%></h2></div><br>]]>
</SubHeader>
<Header><![CDATA[<div class="row g-3 align-items-center">
<h1 class='head${type_serial}'><%=l('${Value}')%></h1></div><br>]]>
</Header>
<Paragraph><![CDATA[<div class="row g-3 align-items-center">
<p class='paragraph para${type_serial}'>
%=l('${Value}')
</div><br>]]></Paragraph>
<Submit><![CDATA[<div class="row g-3 align-items-center">
<div class="col-auto">
%= submit_button l('${Value}'), class => 'action subm${type_serial}'
</div></div><br>]]>
</Submit>
<Search><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${prefix}_${Label}')
</div><div class="col-auto">
%=Search field
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=search_field '${Name}' , class => 'searc${type_serial}'
</div>
</div><br>]]>
</Search>
<Url><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=URL_field '${Name}' , class => 'url${type_serial}'
</div>
</div><br>]]>
</Url>
<Tel><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=tel_field '${Name}', class => 'tel${type_serial}'
</div>
</div><br>]]>
</Tel>
<Email><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=email_field '${Name}', class => 'emai${type_serial}'
</div>
</div><br>]]>
</Email>
<Password><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=password_field '${Name}', class => 'pass${type_serial} sme-password', autocomplete => 'off'
</div>
</div><br>]]>
</Password>
<Timedate><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=timedate_field '${Name}', class => 'time${type_serial}'
</div>
</div><br>]]>
</Timedate>
<Week><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=week_field '${Name}', class => 'week${type_serial}'
</div>
</div><br>]]>
</Week>
<Month><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=month_field '${Name}', class => 'mont${type_serial}'
</div>
</div><br>]]>
</Month>
<Range><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=range_field '${Name}', class => 'rang${type_serial}'
</div>
</div><br>]]>
</Range>
<Radio><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=radio_field '${Name}', class => 'radi${type_serial}'
</div>
</div><br>]]>
</Radio>
<Number><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=number_field '${Name}', class => 'numb${type_serial}'
</div>
</div><br>]]>
</Number>
<File><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=file_field '${Name}', class => 'file${type_serial}'
</div>
</div><br>]]>
</File>
<Color><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=color_field '${Name}', class => 'colo${type_serial}'
</div>
</div><br>]]>
</Color>
<Checkbox><![CDATA[<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('${Label}')
</div><div class="col-auto">
% param '${Name}' => $$${prefix}_data->{${Name}} unless param '${Name}';
%=checkbox_field '${Name}', class => 'chec${type_serial}'
</div>
</div><br>]]>
</Checkbox>
<Table><![CDATA[<div class="row g-3 align-items-center">
<br /><table class="sme-border TableSort sme-table ${classname} ">
<thead class='${classname}'>
<tr table-head-row><tal:block tal:repeat="ColHead TopHeadings">
<th class='sme-border table-head-col table-head-col-${ColHead} '><%=l('${ColHead}')%></th></tal:block>
</tr>
</thead>
<tbody class='${classname}'>
% my $control_data = $c->stash('${TableControl}');
% foreach my $row (@$control_data) {
<tr class='table-row'><tal:block tal:repeat="ColContent Columns">
<td class='sme-border table-col table-col-${ColContent}'><%=$c->render_to_string(inline=>$row->{'${ColContent}'})%></td></tal:block>
</tr>
%}
</tbody>
</table>
</div><br>]]>
</Table>
<Preformatted><![CDATA[<div class="row g-3 align-items-center">
<pre class='preformatted pref${type_serial}'>
${Value}
</pre>
</div><br>]]>
</Preformatted>
<Link><![CDATA[<div class="row g-3 align-items-center">
<a href='${structure:href}' class='link link${type_serial}'>
%= l('${title}')
</a>
%#= link_to l('${title}'), '${structure:href}' , class=>'link link${type_serial}'
</div><br>]]>
</Link>
<ButtonLink><![CDATA[<div class="row g-3 align-items-center">
<button type='button' href='${structure:href}' class='buttonlink buttonlink${type_serial}'>
%= l('${title}')
</button>
%#= button_to l('${title}'), '${structure:href}' , class=>'buttonlink buttonlink${type_serial}'
</div><br>]]>
</ButtonLink>
<Back><![CDATA[<div class="row g-3 align-items-center">
<div class="col-auto">
%= submit_button l('${Value}'), class => 'action back', onclick =>'history.back()'
</div>
</div><br>]]>
</Back>
<Group><![CDATA[<div class="row g-3 align-items-center">
<div ${Value}>
</div><br>]]>
</Group>
<Endgroup><![CDATA[<div class="row g-3 align-items-center">
</div>
</div><br>]]>
</Endgroup>
<object><![CDATA[<div class="row g-3 align-items-center">
<object data="<%='${url}' %>" title="<%= $c->stash('title') %>" type="text/html" ><%= $c->stash('title') %> not found</object>, id => '${Name}_object
</div><br>]]>
</object>
</root>

View File

@@ -0,0 +1,53 @@
%#
%# Generated by ${version}
%#
%# AdminLTE specific layout
%#
% layout 'default', title => "Sme server 2 - ${MenuDescription}", share_dir => './';
%# css specific to this panel:
% content_for 'module' => begin
%= stylesheet '/css/${lcPackageName}.css'
%= javascript '/js/${lcPackageName}.js'
<div id="module" class="card-body module ${PackageName}-panel">
% if (config->{debug} == 1) {
<pre>
%= dumper $c->current_route
%= dumper $$${prefix}_data->{trt}
</pre>
% }
<h1><%=$title%></h1>
% if ( stash('modul')) {
%= $c->render_to_string(inline => stash('modul') );
% }
%if ($c->stash('first')) {
<br><div>
%=$c->render_to_string(inline =>$c->l($c->stash('first')))
</div>
%} elsif ($c->stash('success')) {
<div class='text-success'>
%= $c->l($c->stash('success'));
</div>
%} elsif ($c->stash('error')) {
<div class='text-danger'>
%= $c->l($c->stash('error'));
</div>
%}
%#Routing to partials according to trt parameter.
%#This ought to be cascading if/then/elsif, but is easier to just stack the if/then's rather like a case statement'
<tal:block tal:repeat="condition conditions">
<br>
% if ($$${prefix}_data->{trt} eq "${condition}") {
%= include 'partials/_${prefix}_${condition}'
%}
</tal:block>
<br>
</div>
%end

View File

@@ -0,0 +1,29 @@
%#
%# Generated by ${version}
%#
%# Specific for AdminLTE theme
%#
<div id="${PackageName}-${route}" class="partial ${PackageName}-${route}">
%# <script>
%# window.onload = function() {
%# SelectInput();
%# };
%# </script>
% if (config->{debug} == 1) {
<pre>
%= dumper $$${prefix}_data
</pre>
% }
% my $btn = l('SAVE');
% $c->param(Selected => undef); #This may need deleting for a params panel - only needed for a table
%= form_for "${lcPackageName}u" => (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.
%= submit_button $btn, class => 'action'
%end
<br>
</div>