Compare commits

..

3 Commits

Author SHA1 Message Date
John Crisp
0811200222 Update AdminLTE to 4.0.0-rc4 2025-07-23 17:26:22 +02:00
John Crisp
8e17b87a2f Update AdminLTE to 4.0.0-rc4 2025-07-23 16:16:54 +02:00
John Crisp
64de86dcf7 Work on multi password fix 2025-07-08 11:07:29 +02:00
16 changed files with 2099 additions and 1125 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -5,9 +5,78 @@ $(document).ready(function () {
let pass = togglePassword;
if (pass) {
togglePassword.addEventListener("click", function () {
// toggle the type attribute
togglePassword.addEventListener("click", function () {
// toggle the type attribute
const type = password.getAttribute("type") === "password" ? "text" : "password";
password.setAttribute("type", type);
// toggle the eye icon
if (type === "text") {
$(this).removeClass("bi-eye");
$(this).addClass("bi-eye-slash");
} else {
$(this).removeClass("bi-eye-slash");
$(this).addClass("bi-eye");
}
});
}
});
$(document).ready(function () {
// Get the fields
const toggle = document.querySelector("#togglePasswords");
const passwords = document.querySelectorAll('[type="password"]');
// listen for click events on the toggle
toggle.addEventListener("click", function () {
// loop through each password field
for (let password of passwords) {
// if toggle is checked, change type to "text"
// otherwise, change it back to "password"
if (toggle.checked) {
password.type = "text";
} else {
password.type = "password";
}
}
});
});
$(document).ready(function () {
// For each password input
$('.sme-password').each(function () {
// Create a new container
//alert("sme-password");
//var $inputContainer = $('<div class="input-container"></div>');
// Move the input into the new container
//$(this).wrap($inputContainer);
// Create the toggle image
//var $togglePassword = $('<img src="images/visible.png" alt="Show Password" class="toggle-password" />');
// Append the toggle image to the container
//$(this).after($togglePassword);
});
$('.toggle-password').on('click', function () {
alert("toggle-password");
// Find the associated password field
var input = $(this).siblings('.sme-password');
// Toggle the type attribute between password and text
//var inputType = input.attr('type') === 'password' ? 'text' : 'password';
//input.attr('type', inputType);
// Toggle the icon source based on the input type
//var iconSrc = inputType === 'password' ? 'images/visible.png' : 'images/visible-slash.png';
//$(this).attr('src', iconSrc);
const type = password.getAttribute("type") === "password" ? "text" : "password";
password.setAttribute("type", type);
// toggle the eye icon
if (type === "text") {
@@ -17,6 +86,9 @@ $(document).ready(function () {
$(this).removeClass("bi-eye-slash");
$(this).addClass("bi-eye");
}
});
}
});

View File

@@ -206,7 +206,7 @@
<div id="adminlte-version"></div>
%# Specific panel js code
%# Specific panel general js code
% $controller = stash('controller');
% if ($controller) {
% my $js_path = "js/$controller.js";
@@ -216,6 +216,17 @@
% }
% }
%# Specific panel general js code
% $controller = stash('controller');
% if ($controller) {
% my $js_path = "smanager/koozali/$controller.js";
%# Use the url_for helper to generate the correct static file URL
% if (app->static->file($js_path)) {
<script src="<%= url_for("smanager/koozali/$js_path") %>"></script>
% }
% }
</body>
</html>

View File

@@ -4,117 +4,115 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $pwd_datas
</p>
% if (config->{debug} == 0) {
<pre>
<%= dumper $c->current_route %>
<%= dumper $pwd_datas %>
</pre>
% }
<h2><%= l 'pwd_ACCOUNT_PASSWORD_CHANGE' %></h2>
% if ( stash 'error' ) {
<br>
<div>
%= $c->render_to_string(inline => stash 'error')
<div CLASS="text-danvgr">
<%= $c->render_to_string(inline => stash 'error') %>
</div>
%}
% }
% my $btn = l('pwd_PASSWORD_CHANGE');
% my $url = '/userpassword';
% my $btn = l('pwd_PASSWORD_CHANGE');
% my $url = '/userpassword';
<div>
%= $c->render_to_string( inline => l('pwd_DESCRIPTION'));
<%= $c->render_to_string( inline => l('pwd_DESCRIPTION')); %>
</div>
% if ( $pwd_datas->{trt} eq 'RESET' ) {
% my $btn = l('pwd_PASSWORD_RESET');
% my $url = '/userpasswordr';
%= $c->render_to_string( inline => l('pwd_DESCRIPTION_RESET'));
% my $btn = l('pwd_PASSWORD_RESET');
% my $url = '/userpasswordr';
<%= $c->render_to_string( inline => l('pwd_DESCRIPTION_RESET')); %>
% }
<br>
<!-- Start of Form -->
%= form_for $url => (method => 'POST') => begin
<table class="table table-bordered user-table-max-wdith">
<thead>
<tr>
<th class="col-sm">
%= l 'pwd_YOUR_ACCOUNT'
</th>
<th class="col-sm">
%=l 'USER_NAME'
</th>
</tr>
</thead>
<tbody>
<tr>
<td><%= $pwd_datas->{Account} %></td>
<td><%= $pwd_datas->{name} %>Not in pwd_datas-> name ? :-( </td>
</tr>
</tbody>
</table>
<form action="smanager/userpassword" method="POST">
<br>
% if ( $pwd_datas->{trt} ne 'RESET' ) {
<div>
<%= l 'pwd_PASSWORD_OLD' %>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="YourAccount" class="col-form-label"><%= l 'pwd_YOUR_ACCOUNT' %></label>
</div>
<div class="col-auto">
<input type="text" name="Account" id="YourAccount" class="form-control-plaintext" value="<%= $pwd_datas->{Account} %>" readonly>
</div>
</div>
<br>
% if ( $pwd_datas->{trt} ne 'RESET' ) {
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="OldPass" class="col-form-label"><%= l 'pwd_PASSWORD_OLD' %></label>
</div>
<div class="col-auto">
<input name="OldPass" type="password" id="OldPass" class="form-control" placeholder="Old Password">
</div>
<div class="col-auto">
<span id="togglePasswordVerify" class="bi bi-eye"></span>
</div>
</div>
<br>
% }
<div class="row g-3 align-items-center">
<div class="col-md-2">
<input name="OldPass" id="OldPass" type="password" class="form-control sme-password" placeholder="Password">
<div class="col-md-1">
<label for="Pass" class="col-form-label"><%= l 'pwd_PASSWORD_NEW' %></label>
</div>
<div class="col-auto">
<input name="Pass" type="password" id="Pass" class="form-control" placeholder="New Password">
</div>
<div class="col-auto">
<span id="togglePasswordVerify" class="bi bi-eye"></span>
</div>
</div>
% }
<br>
<br>
<div>
<%= l 'pwd_PASSWORD_NEW' %>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<input name="Pass" id="Pass" type="password" class="form-control sme-password" placeholder="Password">
<div class="row g-3 align-items-center sme-password">
<div class="col-md-1">
<label for="PassVerify" class="col-form-label"><%=l 'pwd_PASSWORD_VERIFY_NEW' %></label>
</div>
<div class="col-auto">
<input name="Passverify" type="password" id="PassVerify" class="form-control" placeholder="Verify Password">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
</div>
<br>
<br>
<div>
%=l 'pwd_PASSWORD_VERIFY_NEW'
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<input name="Passverify" id="PassVerify" type="password" class="form-control sme-password" placeholder="Password">
<div>
Show All Passwords Test
<span id="togglePasswords" class="bi bi-eye"></span>
</div>
</div>
<br>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
<%= hidden_field 'User' => $pwd_datas->{Account} %>
<%= hidden_field 'Trt' => $pwd_datas->{trt} %>
<%= hidden_field 'jwt' => $pwd_datas->{jwt} %>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</div>
%= hidden_field 'User' => $pwd_datas->{Account}
%= hidden_field 'Trt' => $pwd_datas->{trt}
%= hidden_field 'jwt' => $pwd_datas->{jwt}
% end
</form>
<!-- End of Form -->
</div>

View File

@@ -1,6 +1,6 @@
%define name smeserver-manager-AdminLTE
%define version 11.0.0
%define release 46
%define release 48
Summary: AdminLTE is an html framework for admin consoles - this rpm adds it to smeserver manager2
Name: %{name}
@@ -17,7 +17,7 @@ BuildArchitectures: noarch
BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
BuildRequires: smeserver-devtools
Requires: smeserver-release >= 11.0
Requires: smeserver-manager >= 11.0.0-101
Requires: smeserver-manager >= 11.0.0-104
Requires: smeserver-lib >= 11.0.0-13
Requires: e-smith-manager >= 2.4.0-22
@@ -29,6 +29,12 @@ AdminLTE is an html framework for admin consoles
wget https://github.com/ColorlibHQ/AdminLTE/archive/master.zip
%changelog
* Wed Jul 23 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-48.sme
- Update to AdminLTE 4.0.0-rc4
* Tue Jul 08 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-47.sme
- Working on multipassword show/hide
* Mon Jul 07 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-46.sme
- Too fast on the build button and missed some files