Continue Backup files. Various formatting fixes and show hide passwords

This commit is contained in:
John Crisp 2025-06-11 19:13:32 +02:00
parent eb05438d80
commit f3295483b2
18 changed files with 643 additions and 421 deletions

View File

@ -15,7 +15,7 @@
<div class="text-danger"> <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %> <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
@ -39,9 +39,9 @@
</div> </div>
<div class="col-auto"> <div class="col-auto">
% if ( $bac_datas->{status} eq 'checked' ) { % if ( $bac_datas->{status} eq 'checked' ) {
<input type='checkbox' name='Tapebackup' checked > <input type='checkbox' name='Tapebackup' aria-describedby="enabled" checked >
% } else { % } else {
<input type='checkbox' name='Tapebackup'> <input type='checkbox' name='Tapebackup' aria-describedby="disabled">
% } % }
</div> </div>
</div> </div>
@ -50,13 +50,16 @@
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-2">
<%= l 'bac_TAPE_BACKUP_TIME' %> <label for="inputBackupHour" class="col-form-label"><%= l 'bac_TAPE_BACKUP_TIME' %></label>
<label for="inputBackupMin" class="col-form-label"></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'BackupHour' => $bac_datas->{backupHour} unless param 'BackupHour'; % param 'BackupHour' => $bac_datas->{backupHour} unless param 'BackupHour';
<%= text_field 'BackupHour', size => '2' %> <input type="text" name="BackupHour" id="inputBackupHour" class="form-control" maxlength="2" size="4" aria-describedby="Backup Hour" value="<%= $bac_datas->{backupHour} %>">
</div>
<div class="col-auto">
% param 'BackupMin' => $bac_datas->{backupMin} unless param 'BackupMin'; % param 'BackupMin' => $bac_datas->{backupMin} unless param 'BackupMin';
<%= text_field 'BackupMin', size => '2' %> <input type="text" name="BackupMin" id="inputBackupMin" class="form-control" maxlength="2" size="4" aria-describedby="Backup Minute" value="<%= $bac_datas->{backupMin} %>">
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'BackupAMPM' => $bac_datas->{backupAMPM} unless param 'BackupAMPM'; % param 'BackupAMPM' => $bac_datas->{backupAMPM} unless param 'BackupAMPM';
@ -69,13 +72,16 @@
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-2">
<%= l 'bac_LOAD_TAPE_REMINDER_TIME' %> <label for="inputReminderMin" class="col-form-label"><%= l 'bac_LOAD_TAPE_REMINDER_TIME' %></label>
<label for="inputReminderMin" class="col-form-label"></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'ReminderHour' => $bac_datas->{reminderHour} unless param 'ReminderHour'; % param 'ReminderHour' => $bac_datas->{reminderHour} unless param 'ReminderHour';
<%= text_field 'ReminderHour', size => '2' %> <input type="text" name="ReminderHour" id="inputReminderHour" class="form-control" maxlength="2" size="4" aria-describedby="Reminder Hour" value="<%= $bac_datas->{reminderHour} %>">
</div>
<div class="col-auto">
% param 'ReminderMin' => $bac_datas->{reminderMin} unless param 'ReminderMin'; % param 'ReminderMin' => $bac_datas->{reminderMin} unless param 'ReminderMin';
<%= text_field 'ReminderMin', size => '2' %> <input type="text" name="ReminderMin" id="inputReminderMin" class="form-control" maxlength="2" size="4" aria-describedby="Reminder Minute" value="<%= $bac_datas->{reminderMin} %>">
</div> </div>
<div class="col-auto"> <div class="col-auto">
% param 'ReminderAMPM' => $bac_datas->{reminderAMPM} unless param 'ReminderAMPM'; % param 'ReminderAMPM' => $bac_datas->{reminderAMPM} unless param 'ReminderAMPM';

View File

@ -22,13 +22,15 @@
<br> <br>
<form action="/smanager/backupd" method="POST">
<h2><%=l 'bac_RESTORE_CONF_FROM_TAPE' %></h2> <h2><%=l 'bac_RESTORE_CONF_FROM_TAPE' %></h2>
<br> <br>
<form action="/smanager/backupd" method="POST">
<div>
<%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_TAPE_DESC')) %> <%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_TAPE_DESC')) %>
</div>
<br> <br>

View File

@ -12,25 +12,28 @@
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class="text-danger"> <br>
<div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %> <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<br> <br>
<form action="/smanager/backup" method="POST">
<h2><%= l 'bac_CONFIGURE_WORKSTN_BACKUP' %></h2> <h2><%= l 'bac_CONFIGURE_WORKSTN_BACKUP' %></h2>
<br> <br>
<div>
<%= $c->render_to_string(inline => (l 'bac_WORKSTN_BACKUP_DESC')) %> <%= $c->render_to_string(inline => (l 'bac_WORKSTN_BACKUP_DESC')) %>
</div>
<br> <br>
<form action="/smanager/backup" method="POST">
<div> <div>
<%= l 'bac_WORKSTN_BACKUP_ENABLED' %>: <%= $bac_datas->{status} %> <%= l 'bac_WORKSTN_BACKUP_ENABLED' %>: <%= $bac_datas->{status} %>
</div> </div>

View File

@ -5,39 +5,47 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<h2> <br>
%=l 'bac_CONFIGURE_WORKSTN_BACKUP'
</h2>
%= $c->render_to_string(inline => (l 'bac_CONFIGURE_WORKSTN_BACKUP_DESC')) <h2><%= l 'bac_CONFIGURE_WORKSTN_BACKUP' %></h2>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<p> <div>
<span class=""> <%= $c->render_to_string(inline => (l 'bac_CONFIGURE_WORKSTN_BACKUP_DESC')) %>
%=l 'bac_ENABLE_WORKSTN_BACKUP' <div>
</span>
<span class=""> <br>
<form action="/smanager/backupd" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_ENABLE_WORKSTN_BACKUP' %>
</div>
<div class="col-auto">
% if ( $bac_datas->{status} eq 'checked' ) { % if ( $bac_datas->{status} eq 'checked' ) {
<input type='checkbox' name='Workstnbackup' checked > <input type='checkbox' name='Workstnbackup' aria-describedby="enabled" checked >
%} else { % } else {
%= check_box 'Workstnbackup' <input type='checkbox' name='Workstnbackup' aria-describedby="disabled">
%} % }
</span> </div>
</div>
</p> </p>
<p> <p>
@ -47,127 +55,196 @@
<br> <br>
% if ( $bac_datas->{vfstype} =~ m/cifs|nfs/s ) { % if ( $bac_datas->{vfstype} =~ m/cifs|nfs/s ) {
<span class=""> <div class="row g-3 align-items-center">
%=l 'bac_WORKSTN_NAME' <div class="col-md-2">
</span> <label for="inputBackupWorkStationName" class="col-form-label"><%= l 'bac_WORKSTN_NAME' %></label>
<span class=""> </div>
<div class="col-auto">
% param 'BackupwkStation' => $bac_datas->{station} unless param 'BackupwkStation'; % param 'BackupwkStation' => $bac_datas->{station} unless param 'BackupwkStation';
%= text_field 'BackupwkStation', size => 20, class => "" <input type="text" name="BackupwkStation" id="inputBackupWorkStationName" class="form-control"
</span> size="20" aria-describedby="Workstation Name" value="<%= $bac_datas->{station} %>">
<br> </div>
%} </div>
% if ( $bac_datas->{vfstype} eq 'usb' ) {
<span class="">
%=l 'bac_local removable disk'
</span>
<span class="">
% param 'BackupwkFolder' => $bac_datas->{mount} unless param 'BackupwkFolder';
%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => ""
</span>
<br>
% } elsif ( $bac_datas->{vfstype} eq 'mnt') {
<span class="">
%=l 'bac_Mounted disk'
</span>
<span class="">
% param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder';
%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => ""
</span>
<br>
% } else {
<span class="">
%=l 'bac_SHARED_FOLDER_NAME'
</span><span class="">
% param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder';
%= text_field 'BackupwkFolder', size => 20, class => ""
</span>
<br>
%}
% if ( $bac_datas->{vfstype} eq 'cifs' ) {
<span class="">
%=l 'bac_WORKSTN_LOGIN'
</span><span class="">
% param 'BackupwkLogin' => $bac_datas->{login} unless param 'BackupwkLogin';
%= text_field 'BackupwkLogin', size => 12, class => ""
</span>
<br>
<span class="">
%=l 'bac_PASSWORD'
</span><span class="">
% param 'BackupwkPassword' => $bac_datas->{password} unless param 'BackupwkPassword';
%= password_field 'BackupwkPassword', size => 12, class => ""
</span>
%}
</p><br><h3>
%= l 'bac_WORKSTN_BACKUP_SETTINGS'
</h3><br>
<p> <br>
<span class="">
%=l 'bac_NUMBER_OF_SETS' % }
</span>
<span class=""> % if ( $bac_datas->{vfstype} eq 'usb' ) {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_local removable disk' %>
</div>
<div class="col-auto">
% param 'BackupwkFolder' => $bac_datas->{mount} unless param 'BackupwkFolder';
<%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "form-select" %>
</div>
</div>
<br>
% } elsif ( $bac_datas->{vfstype} eq 'mnt') {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_Mounted disk' %>
</div>
<div class="col-auto">
% param 'BackupwkFolder' => $bac_datas->{folder} unless param 'BackupwkFolder';
<%= select_field 'BackupwkFolder' => $c->get_BackupwkDest_options( $bac_datas->{vfstype}), class => "form-select" %>
</div>
</div>
<br>
% } else {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputBackupSharedFolderName" class="col-form-label"><%= l 'bac_SHARED_FOLDER_NAME' %></label>
</div>
<div class="col-auto">
<input type="text" name="BackupwkFolder" id="inputBackupSharedFolderName" class="form-control"
size="20" aria-describedby="Backup Shared Folder Name" value="<%= $bac_datas->{folder} %>">
</div>
</div>
<br>
% }
% if ( $bac_datas->{vfstype} eq 'cifs' ) {
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputBackupWorkLogin" class="col-form-label"><%= l 'bac_WORKSTN_LOGIN' %></label>
</div>
<div class="col-auto">
% param 'BackupwkLogin' => $bac_datas->{login} unless param 'BackupwkLogin';
<input type="text" name="BackupwkLogin" id="inputBackupWorkLogin" class="form-control"
size="12" aria-describedby="Backup Workstation Login" value="<%= $bac_datas->{login} %>">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="password" class="col-form-label"><%= l 'bac_PASSWORD' %></label>
</div>
<div class="col-auto">
% param 'BackupwkPassword' => $bac_datas->{password} unless param 'BackupwkPassword';
<input type="password" name="BackupwkPassword" id="password" class="form-control" size="12" aria-describedby="Backup Workstation Password" value="<%= $bac_datas->{password} %>">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
% }
<br>
<h3><%= l 'bac_WORKSTN_BACKUP_SETTINGS' %></h3>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_NUMBER_OF_SETS' %>
</div>
<div class="col-auto">
% param 'SetsNumber' => $bac_datas->{setsNumber} unless param 'SetsNumber'; % param 'SetsNumber' => $bac_datas->{setsNumber} unless param 'SetsNumber';
%= text_field 'SetsNumber', size => '3' %= text_field 'SetsNumber', size => '3'
</span> </div>
%=l 'bac_NUMBER_OF_FILES_IN_SET' <div class="col-auto">
<span class=""> <%= l 'bac_NUMBER_OF_FILES_IN_SET' %>
</div>
<div class="col-auto">
% param 'Filesinset' => $bac_datas->{filesinset} unless param 'Filesinset'; % param 'Filesinset' => $bac_datas->{filesinset} unless param 'Filesinset';
%= text_field 'Filesinset', size => '3' %= text_field 'Filesinset', size => '3'
</span></p> </div>
</div>
<p>
<span class=""> <div class="row g-3 align-items-center">
%=l 'bac_WORKSTN_BACKUP_TIME' <div class="col-md-2">
</span> <%= l 'bac_WORKSTN_BACKUP_TIME' %>
<span class=""> </div>
<div class="col-auto">
% param 'BackupwkHour' => $bac_datas->{hour} unless param 'BackupwkHour'; % param 'BackupwkHour' => $bac_datas->{hour} unless param 'BackupwkHour';
%= text_field 'BackupwkHour', size => '2' %= text_field 'BackupwkHour', size => '2'
% param 'BackupwkMin' => $bac_datas->{min} unless param 'BackupwkMin'; % param 'BackupwkMin' => $bac_datas->{min} unless param 'BackupwkMin';
%= text_field 'BackupwkMin', size => '2' %= text_field 'BackupwkMin', size => '2'
</span> </div>
%=l 'AM/PM:' <div class="col-auto">
<span class=""> <%= l 'AM/PM:' %>
</div>
<div class="col-auto">
% param 'BackupwkAMPM' => $bac_datas->{ampm} unless param 'BackupwkAMPM'; % param 'BackupwkAMPM' => $bac_datas->{ampm} unless param 'BackupwkAMPM';
%= select_field 'BackupwkAMPM' => ['AM', 'PM'], class => "" %= select_field 'BackupwkAMPM' => ['AM', 'PM'], class => "form-select"
</span> </div>
</p> </div>
<p><span class=""> <div class="row g-3 align-items-center">
%=l 'bac_WORKSTN_TIMEOUT' <div class="col-md-2">
</span> <%= l 'bac_WORKSTN_TIMEOUT' %>
<span class=""> </div>
<div class="col-auto">
% param 'BackupwkTimeout' => $bac_datas->{timeout} unless param 'BackupwkTimeout'; % param 'BackupwkTimeout' => $bac_datas->{timeout} unless param 'BackupwkTimeout';
%= text_field 'BackupwkTimeout', size => '2' %= text_field 'BackupwkTimeout', size => '2'
</span> </div>
%=l 'bac_INC_ONLY_TIMEOUT' </div>
<span class="">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_INC_ONLY_TIMEOUT' %>
</div>
<div class="col-auto">
% if ( $bac_datas->{incOnlyTimeout} eq 'checked' ) { % if ( $bac_datas->{incOnlyTimeout} eq 'checked' ) {
<input type='checkbox' name='IncOnlyTimeout' checked > <input type='checkbox' name='IncOnlyTimeout' checked >
%} else { % } else {
%= check_box 'IncOnlyTimeout' %= check_box 'IncOnlyTimeout'
%} % }
</span></p> </div>
</div>
<p> <div class="row g-3 align-items-center">
<span class=""> <div class="col-md-2">
%=l 'bac_COMPRESSION_LEVEL' <%= l 'bac_COMPRESSION_LEVEL' %>
</span> </div>
<span class=""> <div class="col-auto">
% param 'Compression' => $bac_datas->{compression} unless param 'Compression'; % param 'Compression' => $bac_datas->{compression} unless param 'Compression';
%= text_field 'Compression', size => '1' %= text_field 'Compression', size => '1'
</span> </div>
%=l 'bac_FULL_ONLY_ON' </div>
<span class="">
% param 'Dof' => $bac_datas->{dof} unless param 'Dof';
%= select_field 'Dof' => $c->get_dow_list(), class => ""
</p>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'bac_FULL_ONLY_ON' %>
</div>
<div class="col-auto">
% param 'Dof' => $bac_datas->{dof} unless param 'Dof';
%= select_field 'Dof' => $c->get_dow_list(), class => "form-select"
</div>
</div>
<br>
%= hidden_field 'Function' => $bac_datas->{function} %= hidden_field 'Function' => $bac_datas->{function}
%= hidden_field 'VFSType' => $bac_datas->{vfstype} %= hidden_field 'VFSType' => $bac_datas->{vfstype}
%= submit_button $c->l('bac_UPDATE_CONF'), class => "" % my $btn = l('bac_UPDATE_CONF');
% end
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary" value="<%=$c->l('NEXT')%>"><%= $btn %></button>
</div>
</div>
<br>
</form>
</div> </div>
% end % end

View File

@ -5,42 +5,64 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<h2> <h2><%= l 'bac_WORKSTN_RESTORE' %></h2>
%=l 'bac_WORKSTN_RESTORE'
</h2> <br>
<form action="/smanager/backupd" method="POST">
% if ($bac_datas->{status} ne 'enabled') {
<div>
<%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) %>
</div>
% } else {
<div>
<%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_WORKSTN_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
</div>
% }
<br><br> <br><br>
% if ($bac_datas->{status} ne 'enabled') {
%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE'))
% } else {
%= $c->render_to_string(inline => (l 'bac_RESTORE_CONF_FROM_WORKSTN_DESC') . ' ' . $c->get_shared_folder_to_verify())
%}
<br><br><span class=""> <div class="row g-3 align-items-center">
%=l 'bac_SELECT_BACKUP_FILE' <div class="col-md-1">
</span> <%= l 'bac_SELECT_BACKUP_FILE' %>
<span class=""> </div>
%= select_field 'Backupset' => $c->get_Backupset_options(), class => "" <div class="col-auto">
</span><br><br> <%= select_field 'Backupset' => $c->get_Backupset_options(), class => "form-select" %>
</div>
</div>
<br><br>
<%= hidden_field 'Function' => $bac_datas->{'function'} %>
% my $btn = l('bac_RESTORE_FROM_WORKSTN');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('bac_RESTORE_FROM_WORKSTN'), class => ""
% end
</div> </div>
% end % end

View File

@ -5,33 +5,49 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<h2><%= l 'bac_WORKSTN_RESTORE' %></h2>
<br>
<form action="/smanager/backupd" method="POST">
<div>
<%= $c->render_to_string(inline => $bac_datas->{restore_log}) %>
</div>
<br>
<div>
<%= l 'bac_YOU_MUST_REBOOT' %>
</div>
<%= hidden_field 'Function' => $bac_datas->{'function'} %>
% my $btn = l('bac_REBOOT');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
<h2>
%=l 'bac_WORKSTN_RESTORE'
</h2>
<p>
%= $c->render_to_string(inline => $bac_datas->{restore_log})
</p><p>
%=l 'bac_YOU_MUST_REBOOT'
</p>
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('bac_REBOOT'), class => ""
% end
</div> </div>
% end % end

View File

@ -5,49 +5,73 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br><div class="text-danger">
%= $c->render_to_string(inline => stash 'error') <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<h2><%=l 'bac_WORKSTN_SEL_RESTORE' %></h2> <h2><%=l 'bac_WORKSTN_SEL_RESTORE' %></h2>
%= $c->render_to_string(inline => (l 'bac_WORKSTN_SEL_REST_DESC') . ' ' . $c->get_shared_folder_to_verify()) <br>
<h3><%=l 'bac_BACKUP_CHOICE' %></h3> <form action="/smanager/backupd" method="POST">
<div>
<%= $c->render_to_string(inline => (l 'bac_WORKSTN_SEL_REST_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
</div>
<br> <br>
<span class="">
%=l 'bac_SELECT_BACKUP_FILE' <h3><%= l 'bac_BACKUP_CHOICE' %></h3>
</span>
<span class="">
%= select_field 'Backupset' => $c->get_Restoreset_options(), class => ""
</span>
<br>
<br>
<span class="">
%=l 'bac_FILTER_EXPRESSION'
</span>
<span class="">
%= text_field 'Filterexp', size => 32, class => ""
</span>
<br>
<br> <br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'bac_SELECT_BACKUP_FILE' %>
</div>
<div class="col-auto">
<%= select_field 'Backupset' => $c->get_Restoreset_options(), class => "form-select" %>
</div>
</div>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputFilterExpression" class="col-form-label"><%=l 'bac_FILTER_EXPRESSION' %></label>
</div>
<div class="col-auto">
<input type="text" name="Filterexp" id="inputFilterExpression" class="form-control" aria-describedby="Input Filter Expression">
</div>
</div>
<br><br>
%= hidden_field 'Function' => $bac_datas->{'function'} %= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('PERFORM'), class => ""
% end % my $btn = l('PERFORM');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>

View File

@ -5,51 +5,71 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br><div class=""> <br>
%= $c->render_to_string(inline => stash 'error') <div class="text-danger">
<%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<br>
<h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2> <h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2>
<br> <br>
%= $c->render_to_string(inline => (l 'bac_READ_COMPLETE')) <div>
<%= $c->render_to_string(inline => (l 'bac_READ_COMPLETE')) %>
</div>
%= form_for '/backupd' => (method => 'POST') => begin <br>
<form action="/smanager/backupd" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%=l 'bac_SELECT_FILES_TO_RESTORE' %>
</div>
<div class="col-auto">
<%= select_field 'Restorefiles' => $c->get_Restorefiles_options($bac_datas->{'filterexp'},$bac_datas->{'backupset'}), class => "form-select", multiple => 1, size => 15 %>
</div>
</div>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputSelectDate" class="col-form-label"><%=l 'bac_SELECT_DATE_BEFORE' %></label>
</div>
<div class="col-auto">
<input type="text" name="Seldatebefore" id="inputSelectDate" class="form-control" aria-describedby="Restore most recent">
</div>
</div>
<br><br>
<br><span class="">
%=l 'bac_SELECT_FILES_TO_RESTORE'
</span>
<span class="">
%= select_field 'Restorefiles' => $c->get_Restorefiles_options($bac_datas->{'filterexp'},$bac_datas->{'backupset'}), class => "", multiple => 1, size => 15
</span>
<br>
<br>
<span class="">
%=l 'bac_SELECT_DATE_BEFORE'
</span>
<span class="">
%= text_field 'Seldatebefore', size => 32, class => ""
</span>
<br>
<br>
%= hidden_field 'Function' => $bac_datas->{'function'} %= hidden_field 'Function' => $bac_datas->{'function'}
%= hidden_field 'Backupset' => $bac_datas->{'backupset'} %= hidden_field 'Backupset' => $bac_datas->{'backupset'}
%= hidden_field 'Filterexp' => $bac_datas->{'filterexp'} %= hidden_field 'Filterexp' => $bac_datas->{'filterexp'}
%= submit_button $c->l('PERFORM'), class => ""
% end % my $btn = l('PERFORM');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary" value="<%=$c->l('bac_RESTORE_FROM_TAPE')%>"><%= $btn %></button>
</div>
</div>
<form>
</div> </div>
% end % end

View File

@ -5,30 +5,44 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br> <br>
<div class=""> <div class="text-danger">
%= $c->render_to_string(inline => stash 'error') <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<br>
<h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2> <h2><%=l 'bac_WORKSTN_SELECTIVE_RESTORE' %></h2>
<br>
%= $c->render_to_string(inline => $bac_datas->{restore_log})
<br> <br>
%= form_for '/backupd' => (method => 'POST') => begin <form action="/smanager/backupd" method="POST">
%= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('NEXT'), class => ""
% end <div>
<%= $c->render_to_string(inline => $bac_datas->{restore_log}) %>
</div>
<%= hidden_field 'Function' => $bac_datas->{'function'} %>
% my $btn = l('NEXT');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>
% end % end

View File

@ -4,50 +4,60 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas <%= dumper $bac_datas %>
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br> <br><div class="text-danger">
<div class=""> <%= $c->render_to_string(inline => stash 'error') %>
%= $c->render_to_string(inline => stash 'error')
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<h2> <br>
%=l 'bac_VERIFY_WORKSTN_BACKUP_FILE'
</h2>
%= form_for '/backup' => (method => 'POST') => begin <h2><%=l 'bac_VERIFY_WORKSTN_BACKUP_FILE' %></h2>
<form action="/smanager/backup" method="POST">
<br>
% if ($bac_datas->{status} ne 'enabled') { % if ($bac_datas->{status} ne 'enabled') {
%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) <div>
<%= $c->render_to_string(inline => (l 'bac_CONFIGURATION_TO_BE_DONE')) %>
</div>
% } else { % } else {
%= $c->render_to_string(inline => (l 'bac_VERIFY_WORKSTN_BACKUP_DESC') . ' ' . $c->get_shared_folder_to_verify()) <div>
%} <%= $c->render_to_string(inline => (l 'bac_VERIFY_WORKSTN_BACKUP_DESC') . ' ' . $c->get_shared_folder_to_verify()) %>
<br> </div>
<br> % }
<span class="">
%=l 'bac_SELECT_BACKUP_FILE' <br><br>
</span>
<span class=""> <div class="row g-3 align-items-center">
%= select_field 'Backupset' => $c->get_Backupset_options(), class => "" <div class="col-md-1">
</span> <%=l 'bac_SELECT_BACKUP_FILE' %>
<br> </div>
<div class="col-auto">
<%= select_field 'Backupset' => $c->get_Backupset_options(), class => "form-select" %>
</div>
</div>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-4">
<%=l 'bac_CHECK_TO_VERIFY_FULL_RESTORE' %>
</div>
<div class="col-auto">
<input type='checkbox' name='Verifyall'>
</div>
</div>
<p>
<span class="">
%=l 'bac_CHECK_TO_VERIFY_FULL_RESTORE'
</span>
<span class="">
%= check_box 'Verifyall'
</span>
</p>
<br> <br>
%=l 'bac_CHECK_INTEGRITY_WARNING' %=l 'bac_CHECK_INTEGRITY_WARNING'
@ -55,8 +65,14 @@
<br> <br>
<br> <br>
%= hidden_field 'Function' => $bac_datas->{'function'} . '1' %= hidden_field 'Function' => $bac_datas->{'function'} . '1'
%= submit_button $c->l('bac_VERIFY'), class => ""
% end % my $btn = l('bac_VERIFY');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
</div> </div>
% end % end

View File

@ -4,34 +4,47 @@
<div class="card-body"> <div class="card-body">
% if (config->{debug} == 1) { % if (config->{debug} == 1) {
<p> <pre>
%= dumper $c->current_route <%= dumper $c->current_route %>
%= dumper $bac_datas->{function} <%= dumper $bac_datas->{function} %>
<!-- dumper $bac_datas->{'files_list'} --> <!-- dumper $bac_datas->{'files_list'} -->
</p> </pre>
% } % }
% if ( stash 'error' ) { % if ( stash 'error' ) {
<br> <br>
<div class=""> <div class="text-danger">
%= $c->render_to_string(inline => stash 'error') <%= $c->render_to_string(inline => stash 'error') %>
</div> </div>
%} % }
<h1><%= $title%></h1> <h1><%= $title%></h1>
<br>
<h2><%= l 'bac_VERIFY_WORKSTN_BACKUP_FILE' %></h2> <h2><%= l 'bac_VERIFY_WORKSTN_BACKUP_FILE' %></h2>
<br> <br>
%= $c->render_to_string(inline => $c->workstnVerify())
<div>
<%= $c->render_to_string(inline => $c->workstnVerify()) %>
</div>
<br> <br>
%= form_for '/backupd' => (method => 'POST') => begin <form action="/smanager/backupd" method="POST">
%= hidden_field 'Function' => $bac_datas->{'function'} %= hidden_field 'Function' => $bac_datas->{'function'}
%= submit_button $c->l('NEXT'), class => "" % my $btn = l('NEXT');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
</form>
% end
</div> </div>
% end % end

View File

@ -19,34 +19,32 @@
<br> <br>
<div> <div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'PASSWORD_NEW' %> <%= l 'PASSWORD_NEW' %>
</div> </div>
<div class="col-auto">
<input name="newPass" id="password" type="password" class="form-control sme-password" placeholder="Password" autocomplete="on">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
<br> <br>
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-1">
<input name="newPass" id="newPass" type="password" class="form-control sme-password" placeholder="Password">
</div>
</div>
<br>
<div>
<%= l 'PASSWORD_VERIFY_NEW' %> <%= l 'PASSWORD_VERIFY_NEW' %>
</div> </div>
<div class="col-auto">
<br> <input name="newPassVerify" id="passVerify" type="password" class="form-control sme-password" placeholder="Password" autocomplete="on">
</div>
<div class="row g-3 align-items-center"> <div class="col-auto">
<div class="col-md-2"> <span id="togglePasswordVerify" class="bi bi-eye"></span>
<input name="newPassVerify" id="newPassVerify" type="password" class="form-control sme-password" placeholder="Password">
</div> </div>
</div> </div>
<br>
<br><br> <br><br>
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">

View File

@ -19,7 +19,9 @@
% if ($numUsers == 0){ % if ($numUsers == 0){
<div>
<%= l 'ACCOUNT_USER_NONE' %> <%= l 'ACCOUNT_USER_NONE' %>
</div>
% } else { % } else {
% my $limit = l('quo_LIMIT_WITH_GRACE_MB'); $limit =~ s#(graceX)#<br>$1#; % my $limit = l('quo_LIMIT_WITH_GRACE_MB'); $limit =~ s#(graceX)#<br>$1#;

View File

@ -43,31 +43,31 @@
<%= l 'usr_RESET_DESC2' %> <%= l 'usr_RESET_DESC2' %>
</div> </div>
<br> <br><br>
<div> <div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'PASSWORD_NEW' %> <%= l 'PASSWORD_NEW' %>
</div> </div>
<div class="col-auto">
<input name="newPass" id="password" type="password" class="form-control sme-password" placeholder="Password" autocomplete="on">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
<br> <br>
<div class="row g-3 align-items-center"> <div class="row g-3 align-items-center">
<div class="col-md-2"> <div class="col-md-1">
<input name="newPass" id="newPass" type="password" class="form-control sme-password" placeholder="Password">
</div>
</div>
<br>
<div>
<%= l 'PASSWORD_VERIFY_NEW' %> <%= l 'PASSWORD_VERIFY_NEW' %>
</div> </div>
<div class="col-auto">
<br> <input name="newPassVerify" id="passVerify" type="password" class="form-control sme-password" placeholder="Password" autocomplete="on">
</div>
<div class="row g-3 align-items-center"> <div class="col-auto">
<div class="col-md-2"> <span id="togglePasswordVerify" class="bi bi-eye"></span>
<input name="newPassVerify" id="newPassVerify" type="password" class="form-control sme-password" placeholder="Password">
</div> </div>
</div> </div>

View File

@ -52,7 +52,7 @@
<%= l 'rma_LABEL_IPSECRW_RESET' %> <%= l 'rma_LABEL_IPSECRW_RESET' %>
</div> </div>
<div> <div>
<%= check_box 'IpsecrwReset',class => "" %> <input type='checkbox' name='IpsecrwReset'>
</div> </div>
<br><br> <br><br>
<!--<hr class="" />--> <!--<hr class="" />-->

View File

@ -5,12 +5,12 @@
<div class="card-body"> <div class="card-body">
%if (config->{debug} == 1) { %if (config->{debug} == 1) {
<div> <pre>
(DBG)route: <%= $c->current_route %><br> route: <%= dumper $c->current_route %>
(DBG)pdc: <%= $wkg_datas->{ServerRole}%><br> pdc: <%= dumper $wkg_datas->{ServerRole}%>
(DBG)roam: <%= $wkg_datas->{RoamingProfiles}%><br> roam: <%= dumper $wkg_datas->{RoamingProfiles}%>
</div> </pre>
%} % }
<h1><%= $title %></h1> <h1><%= $title %></h1>
<br> <br>
@ -29,7 +29,7 @@
<label for="inputWorkgroup" class="col-form-label"><%= l 'wkg_LABEL_WORKGROUP' %></label> <label for="inputWorkgroup" class="col-form-label"><%= l 'wkg_LABEL_WORKGROUP' %></label>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="text" name="Workgroup" id="inputWorkgroup" class="form-control" aria-describedby="inputWorkgroup" maxlength="15" value="<%= $wkg_datas->{Workgroup}%>" > <input type="text" name="Workgroup" id="inputWorkgroup" class="form-control" aria-describedby="inputWorkgroup" maxlength="15" size="15" value="<%= $wkg_datas->{Workgroup}%>" >
</div> </div>
<div class="col-auto"> <div class="col-auto">
<span id="passwordHelpInline" class="form-text"> <span id="passwordHelpInline" class="form-text">

View File

@ -1,6 +1,6 @@
%define name smeserver-manager-AdminLTE %define name smeserver-manager-AdminLTE
%define version 11.0.0 %define version 11.0.0
%define release 33 %define release 34
Summary: AdminLTE is an html framework for admin consoles - this rpm adds it to smeserver manager2 Summary: AdminLTE is an html framework for admin consoles - this rpm adds it to smeserver manager2
Name: %{name} Name: %{name}
Version: %{version} Version: %{version}
@ -29,6 +29,15 @@ AdminLTE is an html framework for admin consoles
wget https://github.com/ColorlibHQ/AdminLTE/archive/master.zip wget https://github.com/ColorlibHQ/AdminLTE/archive/master.zip
%changelog %changelog
* Wed Jun 11 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-34.sme
- Update flag detection JS [SME: 13039]
- Tweak login template
- Update Remoteaccess template
- Various formatting fixes
- User password trying to get the show hide password icon working
- Ibay password trying to get the show hide password icon working
- Continue Backup panels
* Tue Jun 10 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-33.sme * Tue Jun 10 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-33.sme
- Fix out of sync versioning - Fix out of sync versioning