Compare commits

...

13 Commits

Author SHA1 Message Date
John Crisp
64de86dcf7 Work on multi password fix 2025-07-08 11:07:29 +02:00
John Crisp
6fc7fd819f Add missing files 2025-07-07 17:26:28 +02:00
John Crisp
f571879414 Tidy Nut UPS more and general formatting 2025-07-07 17:24:24 +02:00
John Crisp
5b7e0a4d94 More tweaks to NUT panels 2025-07-06 17:52:41 +02:00
John Crisp
142c05fbd7 11.0.0-44.sme Tidy up Nut Panels 2025-07-06 17:25:17 +02:00
John Crisp
305e7b75d2 Update email templates, mai_data, button sizes, numerous tweaks 2025-07-06 13:37:49 +02:00
John Crisp
b5b7645ebc add email setting partials 2025-07-06 13:35:27 +02:00
John Crisp
cd31fcfc5b 11.0.0-42 Finish Software updater 2025-06-26 16:08:15 +02:00
John Crisp
4204273b79 11.0.0-42.sme Update Nut Letsenc Datetime 2025-06-19 17:58:31 +02:00
John Crisp
4d47e099a6 11.0.0-40.sme 2025-06-18 15:44:15 +02:00
John Crisp
9e05c8df28 Update Letsencrypt templates 2025-06-18 15:42:51 +02:00
John Crisp
625855f87e Fix typo in css file 2025-06-18 15:42:19 +02:00
John Crisp
37361c8c3f Fix typo in _usr files 2025-06-18 15:40:41 +02:00
106 changed files with 1783 additions and 1828 deletions

View File

@@ -110,7 +110,11 @@ html {
} */
.user-table-max-wdith {
.user-table-max-width {
max-width: 50%;
}
.nutTable tr td:nth-child(1){
width:30%;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
function spinner() {
const spinnerDisplayer = document.querySelector('.spinner-displayer');
const btn = document.getElementById('btn');
btn.addEventListener('click', () => {
spinnerDisplayer.classList.add('loading');
})
}
spinner();
// <div class='spinner-displayer'></div>

View File

@@ -1,302 +0,0 @@
document.addEventListener('DOMContentLoaded', () => {
const flagContainer = document.getElementById('flag-container');
// Mapping of language codes to country codes and their names
const languageToCountryMap = {
"af": { code: "NA", name: "Namibia" },
"agq": { code: "CM", name: "Cameroon" },
"ak": { code: "GH", name: "Ghana" },
"am": { code: "ET", name: "Ethiopia" },
"ar": { code: "SA", name: "Saudi Arabia" },
"as": { code: "IN", name: "India" },
"asa": { code: "TZ", name: "Tanzania" },
"ast": { code: "ES", name: "Spain" },
"az": { code: "AZ", name: "Azerbaijan" },
"bas": { code: "CM", name: "Cameroon" },
"be": { code: "BY", name: "Belarus" },
"bem": { code: "ZM", name: "Zambia" },
"bez": { code: "TZ", name: "Tanzania" },
"bg": { code: "BG", name: "Bulgaria" },
"bm": { code: "ML", name: "Mali" },
"bn": { code: "BD", name: "Bangladesh" },
"bo": { code: "CN", name: "China" },
"br": { code: "FR", name: "France" },
"brx": { code: "IN", name: "India" },
"bs": { code: "BA", name: "Bosnia and Herzegovina" },
"ca": { code: "AD", name: "Andorra" },
"ccp": { code: "BD", name: "Bangladesh" },
"ce": { code: "RU", name: "Russia" },
"cgg": { code: "UG", name: "Uganda" },
"chr": { code: "US", name: "United States" },
"ckb": { code: "IQ", name: "Iraq" },
"cs": { code: "CZ", name: "Czech Republic" },
"cy": { code: "GB", name: "United Kingdom" },
"da": { code: "DK", name: "Denmark" },
"dav": { code: "KE", name: "Kenya" },
"de": { code: "DE", name: "Germany" },
"dje": { code: "NE", name: "Niger" },
"dsb": { code: "DE", name: "Germany" },
"dua": { code: "CM", name: "Cameroon" },
"dyo": { code: "SN", name: "Senegal" },
"dz": { code: "BT", name: "Bhutan" },
"ebu": { code: "KE", name: "Kenya" },
"ee": { code: "GH", name: "Ghana" },
"el": { code: "CY", name: "Cyprus" },
"en": { code: "US", name: "United States" }, // Assume US for English if unspecified
"es": { code: "ES", name: "Spain" },
"et": { code: "EE", name: "Estonia" },
"eu": { code: "ES", name: "Spain" },
"ewo": { code: "CM", name: "Cameroon" },
"fa": { code: "AF", name: "Afghanistan" },
"ff": { code: "CM", name: "Cameroon" },
"fi": { code: "FI", name: "Finland" },
"fil": { code: "PH", name: "Philippines" },
"fo": { code: "FO", name: "Faroe Islands" },
"fr": { code: "FR", name: "France" },
"fur": { code: "IT", name: "Italy" },
"fy": { code: "NL", name: "Netherlands" },
"ga": { code: "IE", name: "Ireland" },
"gd": { code: "GB", name: "United Kingdom" },
"gl": { code: "ES", name: "Spain" },
"gsw": { code: "CH", name: "Switzerland" },
"gu": { code: "IN", name: "India" },
"guz": { code: "KE", name: "Kenya" },
"gv": { code: "IM", name: "Isle of Man" },
"ha": { code: "GH", name: "Ghana" },
"haw": { code: "US", name: "United States" },
"he": { code: "IL", name: "Israel" },
"hi": { code: "IN", name: "India" },
"hr": { code: "HR", name: "Croatia" },
"hsb": { code: "DE", name: "Germany" },
"hu": { code: "HU", name: "Hungary" },
"hy": { code: "AM", name: "Armenia" },
"id": { code: "ID", name: "Indonesia" },
"ig": { code: "NG", name: "Nigeria" },
"ii": { code: "CN", name: "China" },
"is": { code: "IS", name: "Iceland" },
"it": { code: "IT", name: "Italy" },
"ja": { code: "JP", name: "Japan" },
"jgo": { code: "CM", name: "Cameroon" },
"jmc": { code: "TZ", name: "Tanzania" },
"ka": { code: "GE", name: "Georgia" },
"kab": { code: "DZ", name: "Algeria" },
"kam": { code: "KE", name: "Kenya" },
"kde": { code: "TZ", name: "Tanzania" },
"kea": { code: "CV", name: "Cabo Verde" },
"khq": { code: "ML", name: "Mali" },
"ki": { code: "KE", name: "Kenya" },
"kk": { code: "KZ", name: "Kazakhstan" },
"kkj": { code: "CM", name: "Cameroon" },
"kl": { code: "GL", name: "Greenland" },
"kln": { code: "KE", name: "Kenya" },
"km": { code: "KH", name: "Cambodia" },
"kn": { code: "IN", name: "India" },
"ko": { code: "KP", name: "North Korea" },
"kok": { code: "IN", name: "India" },
"ks": { code: "IN", name: "India" },
"ksb": { code: "TZ", name: "Tanzania" },
"ksf": { code: "CM", name: "Cameroon" },
"ksh": { code: "DE", name: "Germany" },
"kw": { code: "GB", name: "United Kingdom" },
"ky": { code: "KG", name: "Kyrgyzstan" },
"lag": { code: "TZ", name: "Tanzania" },
"lb": { code: "LU", name: "Luxembourg" },
"lg": { code: "UG", name: "Uganda" },
"lkt": { code: "US", name: "United States" },
"ln": { code: "AO", name: "Angola" },
"lo": { code: "LA", name: "Laos" },
"lrc": { code: "IQ", name: "Iraq" },
"lt": { code: "LT", name: "Lithuania" },
"lu": { code: "CD", name: "Democratic Republic of the Congo" },
"luo": { code: "KE", name: "Kenya" },
"Luo": { code: "KE", name: "Kenya" },
"luy": { code: "KE", name: "Kenya" },
"lv": { code: "LV", name: "Latvia" },
"mas": { code: "KE", name: "Kenya" },
"mer": { code: "KE", name: "Kenya" },
"mfe": { code: "MU", name: "Mauritius" },
"mg": { code: "MG", name: "Madagascar" },
"mgh": { code: "MZ", name: "Mozambique" },
"mgo": { code: "CM", name: "Cameroon" },
"mk": { code: "MK", name: "North Macedonia" },
"ml": { code: "IN", name: "India" },
"mn": { code: "MN", name: "Mongolia" },
"mr": { code: "IN", name: "India" },
"ms": { code: "BN", name: "Brunei" },
"mt": { code: "MT", name: "Malta" },
"mua": { code: "CM", name: "Cameroon" },
"my": { code: "MM", name: "Myanmar" },
"mzn": { code: "IR", name: "Iran" },
"naq": { code: "NA", name: "Namibia" },
"nb": { code: "NO", name: "Norway" },
"nd": { code: "ZW", name: "Zimbabwe" },
"nds": { code: "DE", name: "Germany" },
"ne": { code: "IN", name: "India" },
"nl": { code: "NL", name: "Netherlands" },
"nmg": { code: "CM", name: "Cameroon" },
"nn": { code: "NO", name: "Norway" },
"nnh": { code: "CM", name: "Cameroon" },
"nus": { code: "SS", name: "South Sudan" },
"nyn": { code: "UG", name: "Uganda" },
"om": { code: "ET", name: "Ethiopia" },
"or": { code: "IN", name: "India" },
"os": { code: "GE", name: "Georgia" },
"pa": { code: "PK", name: "Pakistan" },
"pl": { code: "PL", name: "Poland" },
"ps": { code: "AF", name: "Afghanistan" },
"pt": { code: "PT", name: "Portugal" },
"qu": { code: "BO", name: "Bolivia" },
"rm": { code: "CH", name: "Switzerland" },
"rn": { code: "BI", name: "Burundi" },
"ro": { code: "RO", name: "Romania" },
"rof": { code: "TZ", name: "Tanzania" },
"ru": { code: "RU", name: "Russia" },
"rw": { code: "RW", name: "Rwanda" },
"rwk": { code: "TZ", name: "Tanzania" },
"sah": { code: "RU", name: "Russia" },
"saq": { code: "KE", name: "Kenya" },
"sbp": { code: "TZ", name: "Tanzania" },
"se": { code: "SE", name: "Sweden" },
"seh": { code: "MZ", name: "Mozambique" },
"ses": { code: "ML", name: "Mali" },
"sg": { code: "CF", name: "Central African Republic" },
"shi": { code: "TN", name: "Tunisia" },
"si": { code: "LK", name: "Sri Lanka" },
"sk": { code: "SK", name: "Slovakia" },
"sl": { code: "SI", name: "Slovenia" },
"smn": { code: "FI", name: "Finland" },
"sn": { code: "ZW", name: "Zimbabwe" },
"so": { code: "SO", name: "Somalia" },
"sq": { code: "AL", name: "Albania" },
"sr": { code: "RS", name: "Serbia" },
"sv": { code: "SE", name: "Sweden" },
"sw": { code: "CD", name: "Democratic Republic of the Congo" },
"ta": { code: "IN", name: "India" },
"te": { code: "IN", name: "India" },
"teo": { code: "KE", name: "Kenya" },
"tg": { code: "TJ", name: "Tajikistan" },
"th": { code: "TH", name: "Thailand" },
"ti": { code: "ER", name: "Eritrea" },
"to": { code: "TO", name: "Tonga" },
"tr": { code: "TR", name: "Turkey" },
"tt": { code: "RU", name: "Russia" },
"twq": { code: "NE", name: "Niger" },
"tzm": { code: "MA", name: "Morocco" },
"ug": { code: "CN", name: "China" },
"uk": { code: "UA", name: "Ukraine" },
"ur": { code: "IN", name: "India" },
"uz": { code: "UZ", name: "Uzbekistan" },
"vai": { code: "TN", name: "Tunisia" },
"Vai": { code: "TN", name: "Tunisia" },
"vi": { code: "VN", name: "Vietnam" },
"vun": { code: "TZ", name: "Tanzania" },
"wae": { code: "CH", name: "Switzerland" },
"wo": { code: "SN", name: "Senegal" },
"xog": { code: "UG", name: "Uganda" },
"yav": { code: "CM", name: "Cameroon" },
"yi": { code: "01", name: "Unknown" }, // Placeholder for unspecified region
"yo": { code: "BJ", name: "Benin" },
"yue": { code: "CN", name: "China" },
"zgh": { code: "MA", name: "Morocco" },
"zh": { code: "CN", name: "China" },
"zu": { code: "ZA", name: "South Africa" },
};
//async function getCountryName(countryCode) {
//try {
//const response = await fetch(`https://restcountries.com/v3.1/alpha/${countryCode}`);
//if (!response.ok) throw new Error('Country not found');
//const data = await response.json();
//// Return the name in the native language
//return data[0].name.common;
//} catch (error) {
//console.error(error);
//return 'Unknown Country';
//}
//}
function getCountryNameFromLanguage(language) {
return languageToCountryMap[language] ? languageToCountryMap[language].name : null;
}
function getCountryCodeFromLanguage(language) {
return languageToCountryMap[language] ? languageToCountryMap[language].code : null;
}
function getCountryNameFromCountryCode(countryCode) {
//alert(`Country code: ${countryCode}`);
for (const language in languageToCountryMap) {
if (languageToCountryMap.hasOwnProperty(language)) {
if (languageToCountryMap[language].code === countryCode) {
return languageToCountryMap[language].name;
}
}
}
return null; // Return null if country code not found
}
function getFlagEmoji(locale) {
// Split the locale to get the language and country code
const parts = locale.split('-');
let countryCode;
// Handle single subtag (language only) or double subtag (language-country)
if (parts.length === 1) {
countryCode = getCountryCodeFromLanguage(parts[0]);
} else if (parts.length === 2) {
countryCode = parts[1].toLowerCase(); // Use the country code
}
// If country code is not found, set a fallback output
if (!countryCode) {
const fallback = `? ${locale.toUpperCase()}`; // Just a question mark and the full locale
return { flag: fallback, isUnknown: true, countryName: 'Unknown Country' };
}
// Convert the country code to a flag emoji
return {
flag: String.fromCodePoint(...[...countryCode.toUpperCase()].map(char => 0x1F1E6 + char.charCodeAt(0) - 'A'.charCodeAt(0))),
isUnknown: false,
countryCode: countryCode
};
}
function displayLocaleAndFlag() {
// Get the browser locale
const userLocale = navigator.languages && navigator.languages.length
? navigator.languages[0]
: navigator.language;
//alert(`User Locale: ${userLocale}`); // Alert the detected locale
//console.log(navigator.languages); // Log language to console
const { flag, isUnknown, countryCode } = getFlagEmoji(userLocale);
//alert(`Country Code: ${countryCode}, Is Unknown: ${isUnknown}`); // Debug country code and unknown flag status
// Display the locale and the corresponding flag (or fallback)
//document.getElementById('locale').textContent = `Your Locale: ${userLocale}`;
if (isUnknown) {
const fallbackDiv = document.createElement('div');
fallbackDiv.className = 'fallback-box';
fallbackDiv.textContent = `? ${userLocale.toUpperCase()}`; // Show ? and locale code inside the box
document.getElementById('flag-container').appendChild(fallbackDiv);
// Tooltip for fallback
fallbackDiv.title = "Unknown Country"; // Tooltip for fallback
//alert('Fallback triggered: Unknown Country'); // Debug fallback
} else {
const countryName = getCountryNameFromCountryCode(countryCode.toUpperCase());
//alert(`Country Name from Country Code: ${countryName}`); // Alert the country name
const flagSpan = document.createElement('span');
flagSpan.textContent = flag; // Use flag emoji
flagSpan.title = countryName; // Tooltip for the flag in country language
document.getElementById('flag-container').appendChild(flagSpan);
//alert(`Flag Emoji: ${flag}`); // Debug flag emoji display
}
}
displayLocaleAndFlag();
});

View File

@@ -1,28 +0,0 @@
$(document).ready(function() {
function toggleUPSClasses() {
var selectedOption = $('#Nutmode_select').val();
$('.masterups').toggle(selectedOption === 'netserver' || selectedOption === 'standalone'); // Show/Hide masterups based on Net Server or Standalone
$('.slaveups').toggle(selectedOption === 'netclient'); // Show/Hide slaveups based on Net Client
// Enable/Disable inputs based on the selected option
$('.masterups input').prop('disabled', !(selectedOption === 'netserver' || selectedOption === 'standalone'));
$('.slaveups input').prop('disabled', selectedOption !== 'netclient');
}
function toggleGenerics() {
var upsModelValue = $('#UPS_Model_select').val().toLowerCase(); // Get the current value from UPS_Model
var isGenericUps = upsModelValue === 'genericups'; // Check if it's 'genericups'
// Show/Hide generics section and enable/disable inputs
$('.generics').toggle(isGenericUps);
$('.generics input').prop('disabled', !isGenericUps); // Enable/Disable inputs based on the value
}
// Event listener for the selections
$('#Nutmode_select').change(toggleUPSClasses);
$('#UPS_Model_select').change(toggleGenerics); // Listen for changes in the UPS_Model dropdown
// Set the initial state based on current selections
toggleGenerics();
toggleUPSClasses();
});

View File

@@ -1,25 +0,0 @@
document.addEventListener('DOMContentLoaded', function() {
const analysisType = document.getElementById('analysis_type');
const messageIdGroup = document.getElementById('message_id_group');
const emailAddressGroup = document.getElementById('email_address_group');
// Initially hide both controls
messageIdGroup.style.display = 'none';
emailAddressGroup.style.display = 'none';
analysisType.addEventListener('change', function() {
// Hide both controls first
messageIdGroup.style.display = 'none';
emailAddressGroup.style.display = 'none';
// Show the relevant control based on the selected option
switch(this.value) {
case 'trace_message':
messageIdGroup.style.display = 'block';
break;
case 'user_activity':
emailAddressGroup.style.display = 'block';
break;
}
});
});

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

@@ -96,7 +96,7 @@
% my $btn = l('bac_UPDATE_CONF');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary" value="<%=$c->l('bac_UPDATE_CONF')%>"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm" value="<%=$c->l('bac_UPDATE_CONF')%>"><%= $btn %></button>
</div>
</div>

View File

@@ -40,7 +40,7 @@
<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>
<button type="submit" class="btn btn-primary btn-sm" value="<%=$c->l('bac_RESTORE_FROM_TAPE')%>"><%= $btn %></button>
</div>
</div>

View File

@@ -65,7 +65,7 @@
<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>
<button type="submit" class="btn btn-primary btn-sm" value="<%=$c->l('NEXT')%>"><%= $btn %></button>
</div>
</div>

View File

@@ -259,7 +259,7 @@
<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>
<button type="submit" class="btn btn-primary btn-sm" value="<%=$c->l('NEXT')%>"><%= $btn %></button>
</div>
</div>

View File

@@ -58,7 +58,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -44,7 +44,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>

View File

@@ -67,7 +67,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -65,7 +65,7 @@
<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>
<button type="submit" class="btn btn-primary btn-sm" value="<%=$c->l('bac_RESTORE_FROM_TAPE')%>"><%= $btn %></button>
</div>
</div>

View File

@@ -38,7 +38,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -70,7 +70,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>

View File

@@ -40,7 +40,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -93,7 +93,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -81,7 +81,7 @@
<form action="/smanager/bugreport" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
<%= hidden_field 'trt' => $bugr_datas->{trt} %>

View File

@@ -20,7 +20,7 @@
<form action="/smanager/bugreportD" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
<%= hidden_field 'trt' => $bugr_datas->{trt} %>

View File

@@ -59,7 +59,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -1,9 +1,16 @@
<!-- common_css.html.ep -->
%= stylesheet 'koozali/css/adminlte.koozali.css'
%= stylesheet 'koozali/css/flag-icon.min.css'
%#= stylesheet 'css/sme-jquery-overrides.css'
<!-- Generic to AdminLTE -->
%= stylesheet 'dist/css/adminlte.min.css'
%= stylesheet 'dist/font/bootstrap-icons.min.css'
<!-- Specific to Koozali from smanager/default -->
%= stylesheet 'css/flag-icon.min.css'
<!-- Specific Koozali AdminLTE overrides -->
%= stylesheet 'koozali/css/adminlte.koozali.css'
%#= stylesheet 'dist/css/overlayscrollbars.min.css'
%#= stylesheet 'css/sme-jquery-overrides.css'

View File

@@ -1,9 +1,16 @@
<!-- common_js.html.ep -->
%= javascript 'dist/js/jquery.min.js'
%= javascript 'dist/js/bootstrap.min.js'
%= javascript 'dist/js/popper.min.js'
%= javascript 'dist/js/adminlte.min.js'
%= javascript 'koozali/js/flag-by-locale.js'
<!-- Specific to AdminLTE -->
%= javascript 'dist/js/adminlte.min.js'
%= javascript 'dist/js/bootstrap.min.js'
<!-- Generic JS -->
%= javascript 'dist/js/jquery.min.js'
%= javascript 'dist/js/popper.min.js'
<!-- Specific to Koozali from smanager/default -->
%= javascript 'js/flag-by-locale.js'
<!-- Specific to Koozali AdminLTE -->
%= javascript 'koozali/js/sme-password.js'

View File

@@ -4,205 +4,229 @@
<div class="card-body">
% if (config->{debug} == 0) {
% if (config->{debug} == 1) {
<pre>
<%= dumper $c->current_route %>
<%= dumper $dat_datas %>
<%= dumper $dat_data %>
</pre>
% }
% if ( stash 'error' ) {
<br>
<div class="text-danger">
%= $c->render_to_string(inline => stash 'error')
% if ($c->stash('first')) {
<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>
% }
<h1><%= $title %></h1>
<br>
%= $modul
<% my $btn = l('SAVE'); %>
<%= $modul %>
<form action="/smanager/datetime" method="POST">
<br><br>
<br>
% param 'Ntpstatus' => $dat_datas->{ntpstatus} unless param 'Ntpstatus';
% param 'Ntpserver' => 'smeserver.pool.ntp.org' unless param 'Ntpserver';
<br>
% if ($dat_datas->{ntpstatus} eq 'disabled') {
<div>
You can manually set your server time here (static string for testing)<br><br>
</div>
<br>
<div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'dat_CURRENT_SETTING' %>
</div>
<div class="col-auto">
<b><%= $dat_datas->{now_string} %></b>
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'dat_NEW_M/D/Y' %>
</div>
<div class="col-auto">
% param 'Month' => $dat_datas->{month} unless param 'Month';
%= select_field 'Month' => $c->getMonth_list(), class => "form-select"
</div>
<div class="col-auto">
% param 'Day' => $dat_datas->{day} unless param 'Day';
%= text_field 'Day', size => '2', class => ""
</div>
<div class="col-auto">
% param 'Year' => $dat_datas->{year} unless param 'Year';
%= text_field 'Year', size => '4', class => ""
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'dat_NEW_H/M/S' %>
</div>
<div class="col-auto">
% param 'Hour' => $dat_datas->{hour} unless param 'Hour';
%= text_field 'Hour', size => '2', class => ""
</div>
<div class="col-auto">
% param 'Minute' => $dat_datas->{minute} unless param 'Minute';
%= text_field 'Minute', size => '2', class => ""
</div>
<div class="col-auto">
% param 'Second' => $dat_datas->{second} unless param 'Second';
%= text_field 'Second', size => '2', class => ""
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'dat_AM/PM_AND_TZ' %>
</div>
<div class="col-auto">
% param 'Ampm' => $dat_datas->{ampm} unless param 'Ampm';
%= select_field 'Ampm' => ['AM', 'PM'], class => "form-select"
</div>
<div class="col-auto">
% param 'Timezone' => $c->getTimezone() unless param 'Timezone';
%= select_field 'Timezone' => $c->getZone_list(), class => "form-select"
</div>
</div>
<br>
<div class="form-check">
<label class="form-check-label" for="radioDefault1">
<%=l 'dat_NTP_CONFIGURE_TITLE' %>
</label>
<input class="form-check-input" type="radio" name="Ntpstatus" id="radioDefault1" value="enabled">
</div>
</div>
<%#= hidden_field 'Old_ntpstatus' => $dat_datas->{ntpstatus}; %>
<%= hidden_field 'Old_ntpstatus' => 'disabled' %>
% } else {
<!-- # % if ($dat_datas->{ntpstatus} eq 'enabled') { -->
<div>
<%= l 'dat_NTP_ENABLE_DESC' %>
</div>
<div>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'dat_CURRENT_SETTING' %>
</div>
<div class="col-auto">
<b><%= $dat_datas->{now_string} %></b>
</div>
</div>
<br>
<div class="form-check">
<label class="form-check-label" for="radioDefault1">
<%=l 'dat_NTP_CONFIGURE_TITLE' %>
</label>
<input class="form-check-input" type="radio" name="Ntpstatus" id="radioDefault1" value="enabled">
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputNTPServer" class="col-form-label"><%= l 'dat_NTP_SERVER' %></label>
</div>
<div class="col-auto">
<input type="text" name="Ntpserver" id="inputNTPServer" class="form-control" aria-describedby="NTP Server" value="<%= $dat_datas->{ntpserver} %>">
</div>
</div>
</div>
<br>
<div>
<%= l 'dat_NTP_DISABLE_DESC' %>
</div>
<br>
<div class="form-check">
<label class="form-check-label" for="radioDefault2">
<%= l 'dat_NTP_DISABLE_TITLE' %>
</label>
<input class="form-check-input" type="radio" name="Ntpstatus" id="radioDefault2" value="disabled">
</div>
<%= hidden_field 'Old_ntpstatus' => $dat_datas->{ntpstatus}; %>
<%#= hidden_field 'Old_ntpstatus' => 'disabled' %>
% }
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
<div div class="row g-3 align-items-center">
<div class="col-md-2">
<%= $c->l('dat_The_time_is_currently') %>
</div>
<br>
<div>
<%= text_field 'clock', id => 'real-time-clock', readonly => 'readonly', class => 'col-md-2' , value => $dat_data->{currentdatetime} %>
</div>
</div>
<br>
% if ($dat_data->{ntpstatus} eq 'disabled') {
<div class='datetime-set-ntp'>
<%= l 'dat_NTP_ENABLE_DESC' %>
</div>
% } else {
% my $current_year = $dat_data->{year};
% my $year_options = [ map { [ $_, $_ ] } ($current_year..($current_year+30)) ];
% my $month_options = [ map { [ sprintf('%02d', $_), sprintf('%02d', $_) ] } (1..12) ];
% my $hour_options = [ map { [ sprintf('%02d', $_), sprintf('%02d', $_) ] } (0..23) ];
% my $minute_options = [ map { [ sprintf('%02d', $_), sprintf('%02d', $_) ] } (0..60) ];
% my $second_options = [ map { [ sprintf('%02d', $_), sprintf('%02d', $_) ] } (0..60) ];
% my $mode_options = [
% [ $c->l('dat_ntp_server'), 'dat_ntp_server' ],
% [ $c->l('dat_manually_set'), 'dat_manually_set' ]
% ];
<br>
<h2><%= $c->l('Time Configuration') %></h2>
</form>
<form action="/smanager/datetimeu" method="POST">
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= label_for time_mode => $c->l('Time Setting Mode:') %>
</div>
<div class="col-auto">
% param 'time_mode' => $dat_data->{time_mode} unless param 'time_mode';
<%= select_field time_mode => ($mode_options, id => 'time_mode_select'), class => "form-select" %>
</div>
</div>
<br><br>
<div id='ntp_section'>
<div>
<%= $c->l('dat_NTP_CONFIGURE_DESC') %>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputNTPServerURL" class="col-form-label"><%=$c->l('dat_NTP_Server_URL') %></label>
</div>
<div class="col-auto">
% my $server_check = '^([a-zA-Z0-9][a-zA-Z0-9\.\-]{0,253}[a-zA-Z0-9]|(\d{1,3}\.){3}\d{1,3})$';
% param 'ntpserver' => $dat_data->{ntpserver} unless param 'ntpserver';
<input type="text" name="ntpserver" id="inputNTPServerURL" class="form-control" aria-describedby="NTP Server URL" pattern="<%= $server_check %>" value="<%= $dat_data->{ntpserver} %>">
</div>
<div class="col-auto">
<button type="button" id="test-ntp-btn" class="btn btn-primary btn-sm ml-2">Test Server</button>
<span id="ntp-test-result" class="ntp-test-result ml-2"></span>
</div>
</div>
</div>
<br>
<div id='manual_section'>
<div>
<%= $c->l('dat_NTP_DISABLE_DESC') %>
</div>
<br>
<div>
<h3><%= $c->l('dat_set_manually') %></h3>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<legend><%= $c->l('Date') %><legend>
</div>
<div class="col-auto">
<%= $c->l('Year:') %>
</div>
<div class="col-auto">
% param 'year' => ($dat_data->{year}) unless param 'year';
<%= select_field year => ($year_options, id => 'year'), required => 'required', class=> "form-select" %>
</div>
<div class="col-auto">
<%= $c->l('Month:') %>
</div>
<div class="col-auto">
% param 'month' => ($dat_data->{month}) unless param 'month';
<%= select_field month => ($month_options, id => 'month'), required => 'required', class=> "form-select" %>
</div>
<div class="col-auto">
<label for="inputDay" class="col-form-label"><%= $c->l('Day:') %></label>
</div>
<div class="col-auto">
% param 'day' => ($dat_data->{day}) unless param 'day';
<input type="text" name="day" id="inputDay" class="form-control" aria-describedby="Day" placeholder="<%= $dat_data->{day} %>" pattern="^(0[1-9]|[12][0-9]|3[01])$" size="2" maxlength="2" required="required" inputmode = "numeric" autcomplete="off">
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<legend><%= $c->l('Time') %></legend>
</div>
<div class="col-auto">
<%= $c->l('Hour:') %>
</div>
<div class="col-auto">
% param 'hour' => ($dat_data->{hour}) unless param 'hour';
<%= select_field hour => ($hour_options, id => 'hour'), required => 'required', class=> "form-select" %>
</div>
<div class="col-auto">
%= label_for minute => $c->l('Minute:')
</div>
<div class="col-auto">
% param 'minute' => ($dat_data->{minute}) unless param 'minute';
<%= select_field minute => ($minute_options, id => 'minute'), required => 'required', class=> "form-select", inputmode => 'numeric' %>
%#= text_field minute => id => 'minute', size => 2, maxlength => 2, placeholder => 'MM', pattern => '^[0-5][0-9]$', title => 'Minute (00-59)', required => 'required', inputmode => 'numeric', autocomplete => 'off'
</div>
<div class="col-auto">
%= label_for second => $c->l('Second:')
</div>
<div class="col-auto">
% param 'second' => ($dat_data->{second}) unless param 'second';
<%= select_field minute => ($second_options, id => 'minute'), required => 'required', class=> "form-select" , inputmode => 'numeric' %>
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'dat_TZ' %>
</div>
<div class="col-auto">
% param 'Timezone' => $c->getTimezone() unless param 'Timezone';
<%= select_field 'Timezone' => $c->getZone_list(), class => "form-select" %>
</div>
</div>
</div>
<br>
<%= hidden_field 'Old_ntpstatus' => $dat_data->{ntpstatus}; %>
<%= hidden_field 'trt' => $dat_data->{trt}; %>
<% my $btn = l('SAVE'); %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>
% }
</div>
%end
% end
1;

View File

@@ -1,172 +0,0 @@
% layout 'AdminLTE', title => "Sme server 2 - datetime";
% content_for 'module' => begin
<div class="card-body">
% if (config->{debug} == 1) {
<pre>
<%= dumper $c->current_route %>
<%= dumper $dat_datas %>
</pre>
% }
% if ( stash 'error' ) {
<br>
<div class="text-danger">
%= $c->render_to_string(inline => stash 'error')
</div>
%}
<h1><%= $title %></h1>
<br>
%= $modul
<% my $btn = l('SAVE'); %>
<form action="/smanager/datetime" method="POST">
<br>
% param 'Ntpstatus' => $dat_datas->{ntpstatus} unless param 'Ntpstatus';
<div class="form-check">
<label class="form-check-label" for="radioDefault1">
<%=l 'dat_NTP_CONFIGURE_TITLE' %>
</label>
<input class="form-check-input" type="radio" name="Ntpstatus" id="radioDefault1">
</div>
<br>
<%= radio_button Ntpstatus => 'enabled' %>
<%=l 'dat_NTP_CONFIGURE_TITLE' %>
<br>
% if ($dat_datas->{ntpstatus} eq 'disabled') {
<div>
Status disabled
<%= l 'dat_NTP_ENABLE_DESC' %>
<br>
</div>
% } else {
<div>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'dat_CURRENT_SETTING' %>
</div>
<div class="col-auto">
<b><%= $dat_datas->{now_string} %></b>
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputNTPServer" class="col-form-label"><%= l 'dat_NTP_SERVER' %></label>
</div>
<div class="col-auto">
<input type="text" name="Ntpserver" id="inputNTPServer" class="form-control" aria-describedby="NTP Server" value="<%= $dat_datas->{ntpserver} %>">
</div>
</div>
</div>
% }
<%= radio_button Ntpstatus => 'disabled' %>
<%= l 'dat_NTP_DISABLE_TITLE' %>
<div class="form-check">
<label class="form-check-label" for="radioDefault2">
<%= l 'dat_NTP_DISABLE_TITLE' %>
</label>
<input class="form-check-input" type="radio" name="Ntpstatus" id="radioDefault2" value="disabled">
</div>
% if ($dat_datas->{ntpstatus} eq 'enabled') {
<br><br>
<div>
<%= l 'dat_NTP_DISABLE_DESC' %>
</div>
% } else {
<div>
<br>
<%= l 'dat_CURRENT_SETTING' %>
<b><%= $dat_datas->{now_string} %></b>
<br>
<span class="">
<%= l 'dat_NEW_M/D/Y' %>
</span>
<span class="">
% param 'Month' => $dat_datas->{month} unless param 'Month';
%= select_field 'Month' => $c->getMonth_list(), class => ""
</span>
<span class="">
% param 'Day' => $dat_datas->{day} unless param 'Day';
%= text_field 'Day', size => '2', class => ""
</span>
<span class="">
% param 'Year' => $dat_datas->{year} unless param 'Year';
%= text_field 'Year', size => '4', class => ""
</span>
<br>
<span class="">
<%= l 'dat_NEW_H/M/S' %>
</span>
<span class="">
% param 'Hour' => $dat_datas->{hour} unless param 'Hour';
%= text_field 'Hour', size => '2', class => ""
</span>
<span class="">
% param 'Minute' => $dat_datas->{minute} unless param 'Minute';
%= text_field 'Minute', size => '2', class => ""
</span>
<span class="">
% param 'Second' => $dat_datas->{second} unless param 'Second';
%= text_field 'Second', size => '2', class => ""
</span>
<br>
<span class="">
<%= l 'dat_AM/PM_AND_TZ' %>
</span>
<span class="">
% param 'Ampm' => $dat_datas->{ampm} unless param 'Ampm';
%= select_field 'Ampm' => ['AM', 'PM'], class => ""
</span>
<span class="">
% param 'Timezone' => $c->getTimezone() unless param 'Timezone';
%= select_field 'Timezone' => $c->getZone_list(), class => ""
</span>
</p>
</div>
% }
<br>
<%= hidden_field 'Old_ntpstatus' => $dat_datas->{ntpstatus}; %>
<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>
%end

View File

@@ -123,7 +123,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -1,4 +1,4 @@
% layout 'AdminLTE', title => "Sme server 2 - emailsettings";
% layout 'AdminLTE', title => "Sme server 2 - E-Mail";
% content_for 'module' => begin
@@ -12,7 +12,7 @@
% if (config->{debug} == 1) {
<pre>
<%= dumper $c->current_route %>
<= dumper $mai_datas %>
<%= dumper $mai_data->{trt} %>
</pre>
% }
@@ -27,202 +27,31 @@
<br>
<form action="/smanager/emailsettings" method="POST">
%#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'
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_POP_ACCESS_CONTROL' %>
</div>
<div class="col-auto">
<%= $c->get_current_pop3_access( TRUE ) %>
</div>
</div>
% if ($mai_data->{trt} eq "FRONT") {
<%= include 'partials/_mai_FRONT' %>
% }
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_IMAP_ACCESS_CONTROL' %>
</div>
<div class="col-auto">
<%= $c->get_current_imap_access( TRUE ) %>
</div>
</div>
% if ($mai_data->{trt} eq "ACC") {
<%= include 'partials/_mai_ACC' %>
% }
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_WEBMAIL' %>
</div>
<div class="col-auto">
<%= $c->get_current_webmail_status( TRUE ) %>
</div>
</div>
% if ($mai_data->{trt} eq "FIL") {
<%= include 'partials/_mai_FIL' %>
% }
<br>
% if ($mai_data->{trt} eq "REC") {
<%= include 'partials/_mai_REC' %>
% }
% my $btn = l('mai_DESC_STATE_ACCESS_BUTTON');
<%= hidden_field 'trt' => 'ACC' %>
<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>
<br><br>
<!--<hr class="" />-->
<form action="/smanager/emailsettings" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_VIRUS_SCAN' %>
</div>
<div class="col-auto">
<%= $c->get_virus_status(TRUE) %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_SPAM_SCAN' %>
</div>
<div class="col-auto">
<%= $c->get_spam_status(TRUE) %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_BLOCK_EXECUTABLE_CONTENT' %>
</div>
<div class="col-auto">
<%= $c->get_patterns_status(TRUE) %>
</div>
</div>
<br>
% my $btn = l('mai_DESC_STATE_FILTERING_BUTTON');
<%= hidden_field 'trt' => 'FIL' %>
<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>
<br><br>
<!--<hr class="" />-->
<form action="/smanager/emailsettings" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_MODE' %>
</div>
<div class="col-auto">
<%= $mai_datas->{fetchmailmethod} %>
</div>
</div>
% my $smtp_mesg;
% $smtp_mesg=l('SMTP port %u allow client to authenticate:');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= sprintf($smtp_mesg,$c->get_db_prop('qpsmtpd','TCPPort',25)); %>
</div>
<div class="col-auto">
<%= $c->get_current_smtp_auth( TRUE ) %>
</div>
</div>
% $smtp_mesg=l('SMTPS SSL/TLS auth: port %u status:');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= sprintf($smtp_mesg,$c->get_db_prop('sqpsmtpd','TCPPort',465)); %>
</div>
<div class="col-auto">
<%= $c->get_current_smtp_ssl_auth( TRUE, 's', FALSE ) %>
</div>
</div>
% $smtp_mesg=l 'Submission port %u status:';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= sprintf($smtp_mesg,$c->get_db_prop('uqpsmtpd','TCPPort',587)); %>
</div>
<div class="col-auto">
<%= $c->get_current_smtp_ssl_auth( TRUE,'u', FALSE ) %>
</div>
</div>
<br>
% my $btn = l('mai_DESC_STATE_RECEPTION_BUTTON');
<%= hidden_field 'trt' => 'REC' %>
<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>
<br><br>
<!--<hr class="" />-->
<form action="/smanager/emailsettings" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_UNKNOWN' %>
</div>
<div class="col-auto">
<%= $c->get_emailunknownuser_status( TRUE ) %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_DELEGATE' %>
</div>
<div class="col-auto">
<%= $c->get_value('DelegateMailServer') %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_SMARTHOST' %>
</div>
<div class="col-auto">
<%= $c->get_value('SMTPSmartHost') %>
</div>
</div>
<br>
% if ($mai_data->{trt} eq "DEL") {
<%= include 'partials/_mai_DEL' %>
% }
% my $btn = l('mai_DESC_STATE_DELIVERY_BUTTON');
<%= hidden_field 'trt' => 'DEL' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
</div>
</div>
<br>
</form>
</div>
%end

View File

@@ -17,10 +17,12 @@
%}
<h1> Embedded - <%=$title %></h1>
<br>
<p>If the legacy panel does not appear, then you may not be logged into the original Server manager.<br />You can log in by clicking <a href="/server-manager" target='_blank'>here</a>. Or by clicking on the "Legacy SM" button at the top of the window.</p>
<div>If the legacy panel does not appear, then you may not be logged into the original Server manager.<br />You can log in by clicking <a href="/server-manager" target='_blank'>here</a>. Or by clicking on the "Legacy SM" button at the top of the window.</div>
% my $height = $c->stash('height') | '600px';
% if ($height !~ /px$/) { $height = $height.'px';}
<object id="" class="" data="<%=$c->stash('modul') %>" style="width:99%;height:<%= $height %>;" title="<%= $c->stash('title') %>" type="text/html" ><%= $c->stash('title') %> not found</object>
<object class="" data="<%=$c->stash('modul') %>" style="width:99%;height:<%= $height %>;" title="<%= $c->stash('title') %>" type="text/html" ><%= $c->stash('title') %> not found</object>
</div>
%end

View File

@@ -19,20 +19,18 @@
%= content_for 'head_contrib'
%= content_for 'refresh'
<!-- Specific for AdminLTE -->
%= include 'common_js'
%= include 'common_css'
<!-- Custom overrides js/css? -->
<!-- This needs refining - do contribs add in their own stuff?? -->
<!-- This needs refining -->
% if (config 'hasJquery') {
%= include 'partials/_js_imports'
% }
% if ($c->current_route eq 'nutups') {
%= include 'partials/_nutups_overrides'
%# panel specific css file
% my $controller = stash('controller');
% if ($controller) {
% my $css_path = "css/$controller.css";
%# Use the url_for helper to generate the correct static file URL
% if (app->static->file($css_path)) {
<link rel="stylesheet" href="<%= url_for("/$css_path") %>">
% }
% }
</head>
@@ -208,6 +206,16 @@
<div id="adminlte-version"></div>
%# Specific panel js code
% $controller = stash('controller');
% if ($controller) {
% my $js_path = "js/$controller.js";
%# Use the url_for helper to generate the correct static file URL
% if (app->static->file($js_path)) {
<script src="<%= url_for("/$js_path") %>"></script>
% }
% }
</body>
</html>

View File

@@ -89,7 +89,7 @@
<!-- /.col -->
<div class="col-4">
<div class="d-grid gap-2">
<button type="submit" class="btn btn-primary">Login</button>
<button type="submit" class="btn btn-primary btn-sm">Login</button>
</div>
</div>
<!-- /.col -->

View File

@@ -9,52 +9,58 @@
<div class="card-body">
% if (config->{debug} == 1) {
<pre>
%= dumper $c->current_route
%= dumper $nut_data->{trt}
</pre>
<pre>
<%= dumper $c->current_route %>
<%= dumper $nut_data->{trt} %>
</pre>
% }
<h1><%=$title%></h1>
% if ( stash('modul')) {
%= $c->render_to_string(inline => stash('modul') );
<%= $c->render_to_string(inline => stash('modul') ); %>
% }
%if ($c->stash('first')) {
<br><p>
%=$c->render_to_string(inline =>$c->l($c->stash('first')))
</p>
%} elsif ($c->stash('success')) {
<div class="">
<h2><%=$c->l('nut_Status_Report') %></h2><p>
%= $c->l($c->stash('success'));
</p>
<br>
<div>
<%=$c->render_to_string(inline =>$c->l($c->stash('first'))) %>
</div>
<br />
%} elsif ($c->stash('error')) {
<div class="">
<h2><%=$c->l('nut_Error_Status_Report') %></h2><p>
%= $c->l($c->stash('error'));
</p>
% } elsif ($c->stash('success')) {
<div class="text-success">
<h2><%=$c->l('nut_Status_Report') %></h2>
<div>
<%= $c->l($c->stash('success')); %>
</div>
</div>
<br />
%}
% } elsif ($c->stash('error')) {
<div class="text-danger">
<h2><%=$c->l('nut_Error_Status_Report') %></h2>
<div>
<%= $c->l($c->stash('error')); %>
</div>
</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'
<br>
% if ($nut_data->{trt} eq "STATUS") {
%= include 'partials/_nut_STATUS'
%}
<%= include 'partials/_nut_STATUS' %>
% }
<br>
% if ($nut_data->{trt} eq "CONFIG") {
%= include 'partials/_nut_CONFIG'
%}
<%= include 'partials/_nut_CONFIG' %>
% }
<br>
</div>
%end

View File

@@ -26,7 +26,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-danger"><%= $btn %></button>
<button type="submit" class="btn btn-danger btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -7,7 +7,7 @@
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %> </button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %> </button>
</div>
</div>
<%= hidden_field 'trt' => 'ADD' %>
@@ -47,7 +47,7 @@
% my $domain_name = $domain->{Domain}; # Domain name extracted from the data structure
% my $actionModify = qq{
% <a href="domains2?CsrfDef=$csrf_token&trt=UPD&Domain=$domain_name">
% <button type='button' class="btn btn-primary" title='$modify_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$modify_text' >
% $modify_text
% </button>
% </a>
@@ -60,7 +60,7 @@
% my $domain_name = $domain->{Domain}; # Domain name extracted from the data structure
% $actionRemove = qq{
% <a href="domains2?CsrfDef=$csrf_token&trt=DEL&Domain=$domain_name">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
% </a>
@@ -112,7 +112,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-auto">
<button type="submit" class="btn btn-primary"><%= $btn2 %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn2 %></button>
</div>
</div>

View File

@@ -36,7 +36,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
<%= hidden_field 'trt' => $dom_datas->{trt} %>

View File

@@ -78,7 +78,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
<%= hidden_field 'trt' => $dom_datas->{trt} %>

View File

@@ -70,7 +70,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -59,7 +59,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-danger"><%= $btn %></button>
<button type="submit" class="btn btn-danger btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -6,7 +6,7 @@
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %> </button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %> </button>
</div>
</div>
<%= hidden_field 'trt' => 'ADD' %>
@@ -39,7 +39,7 @@
% my $modify_text = l('MODIFY'); # Localized text
% my $actionModify = qq{
% <a href="groups2?CsrfDef=$csrf_token&trt=UPD&group=$group_name">
% <button type='button' class="btn btn-primary" title='$modify_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$modify_text' >
% $modify_text
% </button>
% </a>
@@ -48,7 +48,7 @@
% my $remove_text = l('REMOVE'); # Localized text
% my $actionRemove = qq{
% <a href="groups2?CsrfDef=$csrf_token&trt=DEL&group=$group_name">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
% </a>

View File

@@ -79,7 +79,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -22,7 +22,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-danger"><%= $btn %></button>
<button type="submit" class="btn btn-danger btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -5,7 +5,7 @@
<form action="/smanager/hostentriesd" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
<%= hidden_field 'trt' => $hos_datas->{trt} %>
@@ -47,7 +47,7 @@
%my $hostentries_name = $_->{'HostName'}; # hostentries name extracted from the data structure
%$actionModify = qq{
% <a href="hostentriesd?CsrfDef=$csrf_token&trt=UPD&Hostname=$hostentries_name">
% <button type='button' class="btn btn-primary" title='$modify_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$modify_text' >
% $modify_text
% </button>
% </a>
@@ -57,7 +57,7 @@
%#my $hostentries_name = $_->{'HostName'}; # hostentries name extracted from the data structure
%$actionRemove = qq{
% <a href="hostentriesd?CsrfDef=$csrf_token&trt=DEL&Hostname=$hostentries_name">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
% </a>

View File

@@ -53,7 +53,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -77,7 +77,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -21,7 +21,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -20,7 +20,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-danger"><%= $btn %></button>
<button type="submit" class="btn btn-danger btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -7,7 +7,7 @@
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %> </button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %> </button>
</div>
</div>
<%= hidden_field 'trt' => 'ADD'; %>
@@ -60,7 +60,7 @@
%my $ibays_entry_name = $ibay->key; # ibays_entry name extracted from the data structure
%$actionModify = qq{
% <a href="ibaysd?CsrfDef=$csrf_token&trt=UPD&ibay=$ibays_entry_name">
% <button type='button' class="btn btn-primary" title='$modify_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$modify_text' >
% $modify_text
% </button>
% </a>
@@ -74,7 +74,7 @@
%if ($ibay->prop('PasswordSet') ne 'yes' && $needPassword) {
%$actionResetPw = qq{
% <a href="ibaysd?CsrfDef=$csrf_token&trt=PWD&ibay=$ibays_entry_name">
% <button type='button' class="btn btn-danger" title="$password_text - currently unset" >
% <button type='button' class="btn btn-danger btn-sm" title="$password_text - currently unset" >
% $password_text
% </button>
% </a>
@@ -82,7 +82,7 @@
% } else {
%$actionResetPw = qq{
% <a href="ibaysd?CsrfDef=$csrf_token&trt=PWD&ibay=$ibays_entry_name">
% <button type='button' class="btn btn-primary" title='$password_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$password_text' >
% $password_text
% </button>
% </a>
@@ -97,7 +97,7 @@
%my $ibays_entry_name = $ibay->key; # ibays_entry name extracted from the data structure
%$actionRemove = qq{
% <a href="ibaysd?CsrfDef=$csrf_token&trt=DEL&ibay=$ibays_entry_name">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
% </a>

View File

@@ -49,7 +49,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -107,7 +107,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -1,25 +1,42 @@
<% use POSIX qw(strftime); %>
<div id="">
<% if (! $c->session->{PwdSet} ) { %>
<div class=""><h5>
Warning: you have not yet changed the default system password.</h5></div>
<% } %>
<% if ( $c->is_unsafe ) { %>
<div class=""><h5>
Warning: a reconfigure and reboot is required before proceeding! Failure to do so now
may leave your system in an unknown state!</h5></div>
<% } %>
<% if ( $c->session->{Access} eq 'public' && ((config->{debug} ne '0') || (config->{mode} ne 'production')) ) { %>
<div class=""><h5>
Warning: Development or debug mode enabled AND public access is offered !
</h5></div>
<% } %>
% use POSIX qw(strftime);
<div>
% if (! $c->session->{PwdSet} ) {
<div>
<h5 class="text-danger">
Warning: you have not yet changed the default system password.
</h5>
</div>
% }
% if ( $c->is_unsafe ) {
<div>
<h5 class="text-danger">
Warning: a reconfigure and reboot is required before proceeding!<br>
Failure to do so now may leave your system in an unknown state!
</h5>
</div>
% }
% if ( $c->session->{Access} eq 'public' && ((config->{debug} ne '0') || (config->{mode} ne 'production')) ) {
<div>
<h5 class="text-danger">
Warning: Development or debug mode enabled AND public access is offered !
</h5>
</div>
% }
<% my $curdate = strftime '%Y%m%d', localtime; %>
<% if ( "$curdate" >= "20290531" ) { %>
<div class=""><h5>
URGENT NOTICE: As per May 31st 2029, SME Server 11 is obsolete, and potentially INSECURE. NO support will be offered for any issue found with this installed version.
Please migrate IMMEDIATELY to Koozali SME Server 12 or higher version. Failure to upgrade may lead to the compromise of this server.
<br>Please, consult <a href="https://wiki.koozali.org/SME_Server:Download" target="_blank">https://wiki.koozali.org/SME_Server:Download</a> to get the latest version
</h5></div>
<% } %>
% if ( "$curdate" >= "20290531" ) {
<div>
<h5>
URGENT NOTICE: As per May 31st 2029, SME Server 11 is obsolete, and potentially INSECURE.<br>
NO support will be offered for any issue found with this installed version.<br>
Please migrate IMMEDIATELY to Koozali SME Server 12 or higher version.<br>
Failure to upgrade may lead to the compromise of this server.<br>
Please, consult <a href="https://wiki.koozali.org/SME_Server:Download" target="_blank">https://wiki.koozali.org/SME_Server:Download</a> to get the latest version
</h5>
</div>
% }
</div>

View File

@@ -56,7 +56,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<a href='letsencryptd' class="btn btn-primary btn-sm" role="button"><%= $back_text %></a>
<a href='letsencryptd' class="btn btn-primary btn-sm btn-sm" role="button"><%= $back_text %></a>
</div>
</div>

View File

@@ -67,7 +67,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<a href='letsencryptd' class="btn btn-primary btn-sm" role="button"><%= $back_text %></a>
<a href='letsencryptd' class="btn btn-primary btn-sm btn-sm" role="button"><%= $back_text %></a>
</div>
</div>

View File

@@ -131,7 +131,6 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="email_address" class="col-form-label"><%= l ('lets_EMAIL') %></label>
</div>
<div class="col-auto">
% param 'email' => $lets_data->{email} unless param 'email';
@@ -145,7 +144,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -87,7 +87,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -76,7 +76,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -39,7 +39,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
@@ -78,7 +78,7 @@
%my $csrf_token = "TOKEN"; # CSRF token for security
%$actionRemove = qq{
% <a href="localnetworksd?CsrfDef=$csrf_token&trt=DEL&localnetwork=$local_network_entry">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
% </a>

View File

@@ -1,3 +1,5 @@
<!-- Not used -->
<div class="login-page bg-body-secondary app-loaded">
<!-- /.login-logo -->
<br>
@@ -38,7 +40,7 @@
<!-- /.col -->
<div class="col-4">
<div class="d-grid gap-2">
<button type="submit" class="btn btn-primary">Sign In</button>
<button type="submit" class="btn btn-primary btn-sm">Sign In</button>
</div>
</div>
<!-- /.col -->

View File

@@ -1,13 +1,13 @@
% layout 'AdminLTE', title => "Sme server 2 - emailaccess";
%# layout 'AdminLTE', title => "Sme server 2 - emailaccess";
% content_for 'module' => begin
%# content_for 'module' => begin
<div class="card-body">
<!-- <div class="card-body"> -->
% if (config->{debug} == 1) {
<pre>
%= dumper $c->current_route
%= dumper $mai_datas
<%= dumper $c->current_route %>
<%= dumper $mai_data %>
</pre>
% }
@@ -18,11 +18,12 @@
</div>
% }
<h1><%= $title%></h1>
<!-- <h1><%#= $title%></h1> -->
<h2><%= $c->l('mai_DESC_STATE_ACCESS_BUTTON') %></h2>
<br>
<form action="/smanager/emailsettingd" method="POST">
<form action="/smanager/emailsettingsu" method="POST">
<div>
<%= l 'mai_DESC_POP_ACCESS_CONTROL' %>
@@ -83,7 +84,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
@@ -92,4 +93,5 @@
<br>
</div>
%end
%#end

View File

@@ -1,13 +1,13 @@
% layout 'AdminLTE', title => "Sme server 2 - emaildeliver";
%# layout 'AdminLTE', title => "Sme server 2 - emaildeliver";
% content_for 'module' => begin
%# content_for 'module' => begin
<div class="card-body">
<!-- <div class="card-body"> -->
% if (config->{debug} == 1) {
<pre>
<%= dumper $c->current_route %>
<%= dumper $mai_datas %>
<%= dumper $mai_data %>
</pre>
% }
@@ -19,11 +19,12 @@
</div>
% }
<h1><%= $title %></h1>
<!-- <h1><%#= $title%></h1> -->
<h2><%= $c->l('mai_DESC_STATE_DELIVERY_BUTTON') %></h2>
<br>
<form action="/smanager/emailsettingd" method="POST">
<form action="/smanager/emailsettingsu" method="POST">
<h2><%= l 'mai_TITLE_UNKNOWN' %></h2>
@@ -40,7 +41,7 @@
<%= l 'mai_LABEL_UNKNOWN' %>
</div>
<div class="col-auto">
% param 'EmailUnknownUser' => $mai_datas->{emailunknownuser} unless param 'EmailUnknownUser';
% param 'EmailUnknownUser' => $mai_data->{emailunknownuser} unless param 'EmailUnknownUser';
<%= select_field 'EmailUnknownUser' => $c->get_emailunknownuser_opt(), class => "form-select" %>
</div>
</div>
@@ -58,14 +59,14 @@
<br>
% param 'DelegateMailServer' => $mai_datas->{delegatemailserver} unless param 'DelegateMailServer';
% param 'DelegateMailServer' => $mai_data->{delegatemailserver} unless param 'DelegateMailServer';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputDelegateMailServer" class="col-form-label"><%= l 'mai_LABEL_DELEGATE' %></label>
</div>
<div class="col-auto">
<input type="text" name="DelegateMailServer" id="inputDelegateMailServer" class="form-control" aria-describedby="DelegateMailServer" value="<%= $mai_datas->{delegatemailserver} %>">
<input type="text" name="DelegateMailServer" id="inputDelegateMailServer" class="form-control" aria-describedby="DelegateMailServer" value="<%= $mai_data->{delegatemailserver} %>">
</div>
</div>
@@ -82,20 +83,20 @@
<br>
% param 'SMTPSmartHost' => $mai_datas->{smtpsmarthost} unless param 'SMTPSmartHost';
% param 'SMTPSmartHost' => $mai_data->{smtpsmarthost} unless param 'SMTPSmartHost';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputSMTPSmartHost" class="col-form-label"><%= l 'mai_LABEL_SMARTHOST' %></label>
</div>
<div class="col-auto">
<input type="text" name="SMTPSmartHost" id="inputSMTPSmartHost" class="form-control" aria-describedby="SMTPSmartHost" value="<%= $mai_datas->{smtpsmarthost} %>">
<input type="text" name="SMTPSmartHost" id="inputSMTPSmartHost" class="form-control" aria-describedby="SMTPSmartHost" value="<%= $mai_data->{smtpsmarthost} %>">
</div>
</div>
<br>
% param 'SMTPAUTHPROXY_status' => $mai_datas->{smtpauthproxystatus} unless param 'SMTPAUTHPROXY_status';
% param 'SMTPAUTHPROXY_status' => $mai_data->{smtpauthproxystatus} unless param 'SMTPAUTHPROXY_status';
<div class="row g-3 align-items-center">
<div class="col-md-2">
@@ -108,27 +109,27 @@
<br>
% param 'SMTPAUTHPROXY_Userid' => $mai_datas->{smtpauthproxyuserid} unless param 'SMTPAUTHPROXY_Userid';
% param 'SMTPAUTHPROXY_Userid' => $mai_data->{smtpauthproxyuserid} unless param 'SMTPAUTHPROXY_Userid';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputSMTPAuthproxy" class="col-form-label"><%= l 'mai_LABEL_SMARTHOST_SMTPAUTH_USERID' %></label>
</div>
<div class="col-auto">
<input type="text" name="SMTPAUTHPROXY_Userid" id="inputSMTPAuthproxy" class="form-control" aria-describedby="SMTPAuthproxy" value="<%= $mai_datas->{smtpauthproxyuserid} %>">
<input type="text" name="SMTPAUTHPROXY_Userid" id="inputSMTPAuthproxy" class="form-control" aria-describedby="SMTPAuthproxy" value="<%= $mai_data->{smtpauthproxyuserid} %>">
</div>
</div>
<br>
% param 'SMTPAUTHPROXY_Passwd' => $mai_datas->{smtpauthproxypassword} unless param 'SMTPAUTHPROXY_Passwd';
% param 'SMTPAUTHPROXY_Passwd' => $mai_data->{smtpauthproxypassword} unless param 'SMTPAUTHPROXY_Passwd';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="password" class="col-form-label"><%= l 'mai_LABEL_SMARTHOST_SMTPAUTH_PASSWD' %></label>
</div>
<div class="col-auto">
<input type="password" name="SMTPAUTHPROXY_Passwd" id="password" class="form-control" aria-describedby="SMTPAuthProxyPassword" value="<%= $mai_datas->{smtpauthproxypassword} %>">
<input type="password" name="SMTPAUTHPROXY_Passwd" id="password" class="form-control" aria-describedby="SMTPAuthProxyPassword" value="<%= $mai_data->{smtpauthproxypassword} %>">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
@@ -142,10 +143,11 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>
</div>
%end
%#end

View File

@@ -1,13 +1,13 @@
% layout 'AdminLTE', title => "Sme server 2 - emailfilter";
%# layout 'AdminLTE', title => "Sme server 2 - emailfilter";
% content_for 'module' => begin
%# content_for 'module' => begin
<div class="card-body">
<!-- <div class="card-body"> -->
% if (config->{debug} == 1) {
<pre>
<%= dumper $c->current_route %>
<%= dumper $mai_datas %>
<%= dumper $mai_data %>
</pre>
% }
@@ -18,11 +18,12 @@
</div>
% }
<h1><%= $title%></h1>
<!-- <h1><%#= $title%></h1> -->
<h2><%= $c->l('mai_DESC_STATE_FILTERING_BUTTON') %></h2>
<br>
<form action="/smanager/emailsettingd" method="POST">
<form action="/smanager/emailsettingsu" method="POST">
<div>
<%= l 'mai_DESC_VIRUS_SCAN' %>
@@ -35,7 +36,7 @@
<%= l 'mai_LABEL_VIRUS_SCAN' %>
</div>
<div class="col-auto">
% param 'VirusStatus' => $mai_datas->{virusstatus} unless param 'VirusStatus';
% param 'VirusStatus' => $mai_data->{virusstatus} unless param 'VirusStatus';
<%= select_field 'VirusStatus' => [[(l 'DISABLED') => 'disabled'], [ (l 'ENABLED') => 'enabled']], class => "form-select" %>
</div>
</div>
@@ -53,7 +54,7 @@
<%= l 'mai_LABEL_SPAM_SCAN' %>
</div>
<div class="col-auto">
% param 'Spamstatus' => $mai_datas->{spamstatus} unless param 'Spamstatus';
% param 'Spamstatus' => $mai_data->{spamstatus} unless param 'Spamstatus';
<%= select_field 'Spamstatus' => [[(l 'DISABLED') => 'disabled'], [ (l 'ENABLED') => 'enabled']], class => "form-select" %>
</div>
</div>
@@ -65,7 +66,7 @@
<%= l 'mai_LABEL_SPAM_SENSITIVITY' %>
</div>
<div class="col-auto">
% param 'SpamSensitivity' => $mai_datas->{spamsensitivity} unless param 'SpamSensitivity';
% param 'SpamSensitivity' => $mai_data->{spamsensitivity} unless param 'SpamSensitivity';
<%= select_field 'SpamSensitivity' => $c->get_spam_sensitivity_opt(), class => "form-select" %>
</div>
</div>
@@ -77,7 +78,7 @@
<%= l 'mai_LABEL_SPAM_TAGLEVEL' %>
</div>
<div class="col-auto">
% param 'SpamTagLevel' => $mai_datas->{spamtaglevel} unless param 'SpamTagLevel';
% param 'SpamTagLevel' => $mai_data->{spamtaglevel} unless param 'SpamTagLevel';
<%= select_field 'SpamTagLevel' => $c->get_spam_level_options(), class => "form-select" %>
</div>
</div>
@@ -89,7 +90,7 @@
<%= l 'mai_LABEL_SPAM_REJECTLEVEL' %>
</div>
<div class="col-auto">
% param 'SpamRejectLevel' => $mai_datas->{spamrejectlevel} unless param 'SpamRejectLevel';
% param 'SpamRejectLevel' => $mai_data->{spamrejectlevel} unless param 'SpamRejectLevel';
<%= select_field 'SpamRejectLevel' => $c->get_spam_level_options(), class => "form-select" %>
</div>
</div>
@@ -101,7 +102,7 @@
<%= l 'mai_LABEL_SORTSPAM' %>
</div>
<div class="col-auto">
% param 'SpamSortSpam' => $mai_datas->{spamsortspam} unless param 'SpamSortSpam';
% param 'SpamSortSpam' => $mai_data->{spamsortspam} unless param 'SpamSortSpam';
<%= select_field 'SpamSortSpam' => [[(l 'DISABLED') => 'disabled'], [ (l 'ENABLED') => 'enabled']], class => "form-select" %>
</div>
</div>
@@ -119,14 +120,14 @@
<%= l 'mai_LABEL_SPAM_SUBJECTTAG' %>
</div>
<div class="col-auto">
% param 'SpamSubjectTag' => $mai_datas->{spamsubjecttag} unless param 'SpamSubjectTag';
% param 'SpamSubjectTag' => $mai_data->{spamsubjecttag} unless param 'SpamSubjectTag';
<%= select_field 'SpamSubjectTag' => [[(l 'DISABLED') => 'disabled'], [ (l 'ENABLED') => 'enabled']], class => "form-select" %>
</div>
</div>
<br>
% param 'SpamSubject' => $mai_datas->{spamsubject} unless param 'SpamSubject';
% param 'SpamSubject' => $mai_data->{spamsubject} unless param 'SpamSubject';
<div class="row g-3 align-items-center">
<div class="col-md-1">
@@ -134,7 +135,7 @@
</div>
<div class="col-auto">
<!-- text_field 'Soft' -->
<input type="text" name="SpamSubject" id="inputSpamSubjectTag" class="form-control" aria-describedby="SpamSubjectTag" value="<%= $mai_datas->{spamsubject} %>">
<input type="text" name="SpamSubject" id="inputSpamSubjectTag" class="form-control" aria-describedby="SpamSubjectTag" value="<%= $mai_data->{spamsubject} %>">
</div>
</div>
@@ -165,11 +166,12 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>
</div>
%end
%#end

View File

@@ -0,0 +1,206 @@
% if (config->{debug} == 1) {
<pre>
<%= dumper $mai_data %>
<br>
</pre>
% }
<h2><%= $c->l('mai_DESC_STATE_ACCESS_BUTTON') %></h2>
<form action="/smanager/emailsettings" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_POP_ACCESS_CONTROL' %>
</div>
<div class="col-auto">
<%= $c->get_current_pop3_access( TRUE ) %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_IMAP_ACCESS_CONTROL' %>
</div>
<div class="col-auto">
<%= $c->get_current_imap_access( TRUE ) %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_WEBMAIL' %>
</div>
<div class="col-auto">
<%= $c->get_current_webmail_status( TRUE ) %>
</div>
</div>
<br>
% my $btn = l('mai_DESC_STATE_ACCESS_BUTTON');
<%= hidden_field 'trt' => 'ACC' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>
<br><br>
<!--<hr class="" />-->
<form action="/smanager/emailsettings" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_VIRUS_SCAN' %>
</div>
<div class="col-auto">
<%= $c->get_virus_status(TRUE) %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_SPAM_SCAN' %>
</div>
<div class="col-auto">
<%= $c->get_spam_status(TRUE) %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_BLOCK_EXECUTABLE_CONTENT' %>
</div>
<div class="col-auto">
<%= $c->get_patterns_status(TRUE) %>
</div>
</div>
<br>
% $btn = l('mai_DESC_STATE_FILTERING_BUTTON');
<%= hidden_field 'trt' => 'FIL' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>
<br><br>
<!--<hr class="" />-->
<form action="/smanager/emailsettings" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_MODE' %>
</div>
<div class="col-auto">
<%= $mai_data->{fetchmailmethod} %>
</div>
</div>
% my $smtp_mesg;
% $smtp_mesg=l('SMTP port %u allow client to authenticate:');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= sprintf($smtp_mesg,$c->get_db_prop('qpsmtpd','TCPPort',25)); %>
</div>
<div class="col-auto">
<%= $c->get_current_smtp_auth( TRUE ) %>
</div>
</div>
% $smtp_mesg=l('SMTPS SSL/TLS auth: port %u status:');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= sprintf($smtp_mesg,$c->get_db_prop('sqpsmtpd','TCPPort',465)); %>
</div>
<div class="col-auto">
<%= $c->get_current_smtp_ssl_auth( TRUE, 's', FALSE ) %>
</div>
</div>
% $smtp_mesg=l 'Submission port %u status:';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= sprintf($smtp_mesg,$c->get_db_prop('uqpsmtpd','TCPPort',587)); %>
</div>
<div class="col-auto">
<%= $c->get_current_smtp_ssl_auth( TRUE,'u', FALSE ) %>
</div>
</div>
<br>
% $btn = l('mai_DESC_STATE_RECEPTION_BUTTON');
<%= hidden_field 'trt' => 'REC' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>
<br><br>
<!--<hr class="" />-->
<form action="/smanager/emailsettings" method="POST">
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_UNKNOWN' %>
</div>
<div class="col-auto">
<%= $c->get_emailunknownuser_status( TRUE ) %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_DELEGATE' %>
</div>
<div class="col-auto">
<%= $c->get_value('DelegateMailServer') %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_SMARTHOST' %>
</div>
<div class="col-auto">
<%= $c->get_value('SMTPSmartHost') %>
</div>
</div>
<br>
% $btn = l('mai_DESC_STATE_DELIVERY_BUTTON');
<%= hidden_field 'trt' => 'DEL' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
<br>
</form>

View File

@@ -1,16 +1,16 @@
% layout 'AdminLTE', title => "Sme server 2 - emailreceive";
%# layout 'AdminLTE', title => "Sme server 2 - emailreceive";
% content_for 'module' => begin
%# content_for 'module' => begin
% use constant FALSE => 0;
% use constant TRUE => 1;
%# use constant FALSE => 0;
%# use constant TRUE => 1;
<div class="card-body">
<!-- <div class="card-body"> -->
% if (config->{debug} == 1) {
<pre>
<<%= dumper $c->current_route %>
<<%= dumper $mai_datas %>
<<%= dumper $mai_data %>
<<%= dumper $c->param('SMTPAuth') %>
</pre>
% }
@@ -22,30 +22,26 @@
</div>
% }
<h1><%= $title %></h1>
<!--<h1><%#= $title %></h1> -->
<h2><%= $c->l('mai_DESC_STATE_RECEPTION_BUTTON') %></h2>
<br>
<form action="/smanager/emailsettingd" method="POST">
<form action="/smanager/emailsettingsu" method="POST">
<div>
<%= l 'mai_DESC_MODE' %>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'mai_LABEL_MODE' %>
</div>
<div class="col-auto">
% param 'FetchmailMethod' => $mai_datas->{fetchmailmethod} unless param 'FetchmailMethod';
<!--
<pre>
<%= dumper $mai_datas->{fetchmailmethod} %>
<%= dumper $c->get_retrieval_opt() %>
<%= param 'FetchmailMethod' %>
</pre>
-->
% param 'FetchmailMethod' => $mai_data->{fetchmailmethod} unless param 'FetchmailMethod';
<%= select_field 'FetchmailMethod' => $c->get_retrieval_opt(), class =>"form-select" %>
</div>
</div>
@@ -72,7 +68,6 @@
<br>
<div>
<%= l "SMTPS port (465) will require implicit SSL/TLS then authenticate to send." %>
</div>
@@ -86,8 +81,6 @@
<br>
% my $smtp_mesg=l('SMTP port %u allow client to authenticate:');
% param 'SMTPAuth' => $c->get_current_smtp_auth( FALSE ) unless param 'SMTPAuth';
@@ -96,15 +89,6 @@
<%= sprintf($smtp_mesg,$c->get_db_prop('qpsmtpd','TCPPort',25)); %>
</div>
<div class="col-auto">
<!--
<pre>
<%= dumper $c->get_smtp_auth_opt() %>
<%= dumper $c->get_current_smtp_auth(FALSE) %>
<%= dumper $c->get_db_prop("qpsmtpd","Authentication") %>
<%= param 'SMTPAuth' %>
</pre>
-->
<%= select_field 'SMTPAuth' => $c->get_smtp_auth_opt(), class => "form-select" %>
</div>
</div>
@@ -158,14 +142,14 @@
<br>
% param 'SecondaryMailServer' => $mai_datas->{secondarymailserver} unless param 'SecondaryMailServer';
% param 'SecondaryMailServer' => $mai_data->{secondarymailserver} unless param 'SecondaryMailServer';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputSecondaryMailServer" class="col-form-label"><%= l 'mai_LABEL_SECONDARY' %></label>
</div>
<div class="col-auto">
<input type="text" name="SecondaryMailServer" id="inputSecondaryMailServer" class="form-control" aria-describedby="SecondaryMailServer" value="<%= $mai_datas->{secondarymailserver} %>">
<input type="text" name="SecondaryMailServer" id="inputSecondaryMailServer" class="form-control" aria-describedby="SecondaryMailServer" value="<%= $mai_data->{secondarymailserver} %>">
</div>
</div>
@@ -175,7 +159,7 @@
<%= l 'mai_DESC_FETCH_PERIOD' %>
</div>
% param 'FreqOffice' => $mai_datas->{freqoffice} unless param 'FreqOffice';
% param 'FreqOffice' => $mai_data->{freqoffice} unless param 'FreqOffice';
<div class="row g-3 align-items-center">
<div class="col-md-2">
@@ -188,7 +172,7 @@
<br>
% param 'FreqOutside' => $mai_datas->{freqoutside} unless param 'FreqOutside';
% param 'FreqOutside' => $mai_data->{freqoutside} unless param 'FreqOutside';
<div class="row g-3 align-items-center">
<div class="col-md-2">
@@ -201,7 +185,7 @@
<br>
% param 'FreqWeekend' => $mai_datas->{freqweekend} unless param 'FreqWeekend';
% param 'FreqWeekend' => $mai_data->{freqweekend} unless param 'FreqWeekend';
<div class="row g-3 align-items-center">
<div class="col-md-2">
@@ -214,27 +198,27 @@
<br>
% param 'SecondaryMailAccount' => $mai_datas->{secondarymailaccount} unless param 'SecondaryMailAccount';
% param 'SecondaryMailAccount' => $mai_data->{secondarymailaccount} unless param 'SecondaryMailAccount';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputSecondaryMailAccount" class="col-form-label"><%= l 'mai_LABEL_POP_ACCOUNT' %></label>
</div>
<div class="col-auto">
<input type="text" name="SecondaryMailAccount" id="inputSecondaryMailAccount" class="form-control" aria-describedby="SecondaryMailAccount" value="<%= $mai_datas->{secondarymailaccount} %>">
<input type="text" name="SecondaryMailAccount" id="inputSecondaryMailAccount" class="form-control" aria-describedby="SecondaryMailAccount" value="<%= $mai_data->{secondarymailaccount} %>">
</div>
</div>
<br>
% param 'SecondaryMailPassword' => $mai_datas->{secondarymailpassword} unless param 'SecondaryMailPassword';
% param 'SecondaryMailPassword' => $mai_data->{secondarymailpassword} unless param 'SecondaryMailPassword';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="password" class="col-form-label"><%= l 'mai_LABEL_POP_PASS' %></label>
</div>
<div class="col-auto">
<input type="password" name="SecondaryMailPassword" id="password" class="form-control" aria-describedby="SecondaryMailPassword" value="<%= $mai_datas->{secondarymailpassword} %>">
<input type="password" name="SecondaryMailPassword" id="password" class="form-control" aria-describedby="SecondaryMailPassword" value="<%= $mai_data->{secondarymailpassword} %>">
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
@@ -244,7 +228,7 @@
<br>
% param 'SpecifyHeader' => $mai_datas->{specifyheader} unless param 'SpecifyHeader';
% param 'SpecifyHeader' => $mai_data->{specifyheader} unless param 'SpecifyHeader';
<div class="row g-3 align-items-center">
<div class="col-md-2">
@@ -257,30 +241,32 @@
<br>
% param 'SecondaryMailEnvelope' => $mai_datas->{secondarymailenvelope} unless param 'SecondaryMailEnvelope';
% param 'SecondaryMailEnvelope' => $mai_data->{secondarymailenvelope} unless param 'SecondaryMailEnvelope';
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputSecondaryMailEnvelope" class="col-form-label"><%= l 'mai_LABEL_SORT_HEADER' %></label>
</div>
<div class="col-auto">
<input type="text" name="SecondaryMailEnvelope" id="inputSecondaryEnvelope" class="form-control" aria-describedby="SecondaryMailEnvelope" value="<%= $mai_datas->{secondarymailenvelope} %>">
<input type="text" name="SecondaryMailEnvelope" id="inputSecondaryEnvelope" class="form-control" aria-describedby="SecondaryMailEnvelope" value="<%= $mai_data->{secondarymailenvelope} %>">
</div>
</div>
<br>
% my $btn = l('SAVE');
% param 'trt' => $mai_data->{trt} unless param 'trt';
<%= hidden_field 'trt' => 'REC' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>
</div>
%end
%#end

View File

@@ -22,20 +22,22 @@
% end
% content_for 'end' => begin
<div id="" class="">
content_end
<div>
content_end
</div>
% end
<div id="">
<div>
<p> < %= $title % ></p><br>
<%= $modul %><br>
Et eu humo modo paratus quadrum turpis validus. Abico appellatio augue qui refero valetudo vereor. Augue diam eu genitus ille letalis nobis typicus veniam.
Et eu humo modo paratus quadrum turpis validus. Abico appellatio augue qui refero valetudo vereor. Augue diam eu genitus ille letalis nobis typicus veniam.
Dignissim dolus loquor lucidus probo proprius tation torqueo. Abluo luptatum quidem. Acsi aliquip eu ex iaceo natu populus quae scisco si.
Dignissim dolus loquor lucidus probo proprius tation torqueo. Abluo luptatum quidem. Acsi aliquip eu ex iaceo natu populus quae scisco si.
Aliquam autem blandit decet in jus loquor quidne saluto te. Eu meus voco wisi. Abico defui euismod huic jumentum lobortis mos vulpes. Causa eros feugiat hendrerit illum luctus nimis quidem valetudo. Elit ex obruo tation usitas vero. Abigo dolus hendrerit huic iriure jumentum letalis lobortis melior nulla. Blandit causa immitto iriure metuo nutus pagus ut voco.
Aliquam autem blandit decet in jus loquor quidne saluto te. Eu meus voco wisi. Abico defui euismod huic jumentum lobortis mos vulpes. Causa eros feugiat hendrerit illum luctus nimis quidem valetudo. Elit ex obruo tation usitas vero. Abigo dolus hendrerit huic iriure jumentum letalis lobortis melior nulla. Blandit causa immitto iriure metuo nutus pagus ut voco.
<br>
<p>
%= link_to Welcome => '/'
</p>

View File

@@ -2,162 +2,231 @@
%# Generated by SM2Gen version:0.9(20Jan2025) Chameleon version:4.5.4 On Python:3.12.3 at 2025-01-20 16:21:33
%#
<div>
<script>
window.onload = function() {
SelectInput();
};
</script>
% if (config->{debug} == 1) {
<pre>
%= dumper $nut_data
</pre>
% }
% my $btn = l('nut_APPLY');
%= form_for "nutupsu" => (method => 'POST') => begin
% param 'trt' => $nut_data->{trt} unless param 'trt';
%= hidden_field 'trt' => $nut_data->{trt}
<form action="/smanager/nutupsu" method="POST">
%# Inputs etc in here.
<h2 class=""><%=l('nut_Manage_Nutups-config_settings:')%></h2>
<!-- reetp - autocomplete="off" ? -->
<p>
<span class="">
%=l('nut_Nut_status')
</span>
<span class="">
<h2><%=l('nut_Manage_Nutups-config_settings:')%></h2>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l ('nut_Nut_status') %>
</div>
<div class="col-auto">
%# my @status_options = [['Disabled' => 'disabled'], ['Enabled' => 'enabled']];
%# param 'status' => $nut_data->{status} unless param 'status';
% my @status_options = selected_field([['Disabled' => 'disabled'], ['Enabled' => 'enabled']], $nut_data->{status});
%= select_field 'status' => @status_options, class => "", id => ""
<br>
</span>
</p>
<p>
<span class="">
%=l('nut_Nut_mode')
</span>
<span class="">
% my @Nutmode_options = [['Standalone' => 'standalone'], ['Net Server' => 'netserver'], ['Net Client ' => 'netclient']];
% param 'Nutmode' => $nut_data->{Nutmode} unless param 'Nutmode';
%= select_field 'Nutmode' => @Nutmode_options, class => "", id => ""
<br>
</span>
</p>
<div class="">
<h2 class=""><%=l('nut_if_Net_Server')%></h2>
<p>
<span class="">
%=l('nut_MasterUPS_UPSNAME@IP')
</span>
<span class="">
% param 'MasterUPS_Name' => $nut_data->{MasterUPS_Name} unless param 'MasterUPS_Name';
%= text_field 'MasterUPS_Name', size => '50', class => "" , pattern=>'.*' , placeholder=>'ups@localhost'
<br>
</span>
</p>
<p>
<span class="">
%=l('nut_MasterUPS_Password')
</span>
<span class="">
% param 'MasterUPS_Password' => $nut_data->{MasterUPS_Password} unless param 'MasterUPS_Password';
%=password_field 'MasterUPS_Password', class => ""
</span>
</p>
<p>
<span class="">
%=l('nut_UPS_Model')
</span>
<span class="">
% my @UPS_Model_options = $c->get_model_options();
% param 'UPS_Model' => $nut_data->{UPS_Model} unless param 'UPS_Model';
%= select_field 'UPS_Model' => \@UPS_Model_options, class => "", id => ""
<br>
</span></p>
<p><span class="">
%=l('nut_UPS_Device')
</span><span class="">
% param 'UPS_Device' => $nut_data->{UPS_Device} unless param 'UPS_Device';
%= text_field 'UPS_Device', size => '50', class => "" , pattern=>'.*' , placeholder=>'auto (for usb)'
<br></span></p>
% my @status_options = selected_field([['Disabled' => 'disabled'], ['Enabled' => 'enabled']], $nut_data->{status});
<%= select_field 'status' => @status_options, class => "form-select", id => 'status_select' %>
</div>
</div>
<div class="">
<h2 class=""><%=l('nut_if_Net_Client')%></h2>
<p>
<span class="">
%=l('nut_SlaveUPS_UPSNAME@IP')
</span>
<span class="">
% param 'SlaveUPS_Name' => $nut_data->{SlaveUPS_Name} unless param 'SlaveUPS_Name';
%= text_field 'SlaveUPS_Name', size => '50', class => "" , pattern=>'.*' , placeholder=>'upsname@IP'
<br>
</span>
</p>
<br>
<p>
<span class="">
%=l('nut_SlaveUPS_Password')
</span>
<span class="">
% param 'SlaveUPS_Password' => $nut_data->{SlaveUPS_Password} unless param 'SlaveUPS_Password';
%=password_field 'SlaveUPS_Password', class => ""
</span>
</p>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l ('nut_Nut_mode') %>
</div>
<div class="col-auto">
% my @Nutmode_options = [['Standalone' => 'standalone'], ['Net Server' => 'netserver'], ['Net Client ' => 'netclient']];
% param 'Nutmode' => $nut_data->{Nutmode} unless param 'Nutmode';
<%= select_field 'Nutmode' => @Nutmode_options, class => "input form-select", id => "Nutmode_select" %>
</div>
</div>
<div class="">
` <h2 class=""><%=l('nut_if_genericups')%></h2>
<p>
<span class="">
%=l('nut_UPS_Generic_Type')
</span>
<span class="">
% param 'UPS_gen_Type' => $nut_data->{UPS_gen_Type} unless param 'UPS_gen_Type';
%= text_field 'UPS_gen_Type', size => '50', class => "" , pattern=>'.*' , placeholder=>'UPS_gen_Type'
<br><br>
<div class="masterups">
<div class="secondaryups">
<h2><%=l('nut_if_Net_Server')%></h2>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputMasterUPSName" class="col-form-label"><%= l ('nut_MasterUPS_UPSNAME@IP') %></label>
</div>
<div class="col-auto">
% param 'MasterUPS_Name' => $nut_data->{MasterUPS_Name} unless param 'MasterUPS_Name';
<%= 'ups@'. $nut_data->{'localip'} %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l ('nut_SlaveUPS_User') %>
</div>
<div class="col-auto">
<%= 'upssecondary' %>
</div>
</div>
<div class="row g-3 align-items-center">
<div class="col-md-1">
%=l('nut_SlaveUPS_Password')
</div>
<div class="col-auto">
<%= $nut_data->{'SlaveUPS_Pass'}%>
</div>
</div>
<br>
</div>
<br>
</span>
</p>
<p>
<span class="">
%=l('nut_UPS_Generic_Manufacturer')
</span>
<span class="">
% param 'UPS_gen_Mfr' => $nut_data->{UPS_gen_Mfr} unless param 'UPS_gen_Mfr';
%= text_field 'UPS_gen_Mfr', size => '50', class => "" , pattern=>'.*' , placeholder=>'UPS_gen_Mfr'
<div>
<h2><%= l ('nut_UPS_Device') %></h2>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="UPS_Model_select" class="col-form-label"><%= l ('nut_UPS_Model') %></label>
</div>
<div class="col-auto">
% my @UPS_Model_options = $c->get_model_options();
% param 'UPS_Model' => $nut_data->{UPS_Model} unless param 'UPS_Model';
<%= select_field 'UPS_Model' => \@UPS_Model_options, class => "form-select", id => 'UPS_Model_select' %>
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputUPSDevice" class="col-form-label"><%= l ('nut_UPS_Device') %></label>
</div>
<div class="col-auto">
% param 'UPS_Device' => $nut_data->{UPS_Device} unless param 'UPS_Device';
<input type="text" name="UPS_Device" pattern=".*" size="50" id="inputUPSDevice" class="form-control" aria-describedby="UPS Device" placeholder="auto (for usb)" value="<%= $nut_data->{UPS_Device} %>" >
</div>
</div>
</div>
</div>
<div class="slaveups">
<h2><%=l('nut_if_Net_Client')%></h2>
<br>
</span>
</p>
<p>
<span class="">
%=l('nut_UPS_Generic_Model')
</span>
<span class="">
% param 'UPS_gen_Model' => $nut_data->{UPS_gen_Model} unless param 'UPS_gen_Model';
%= text_field 'UPS_gen_Model', size => '50', class => "" , pattern=>'.*' , placeholder=>'UPS_gen_Model'
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputClientUPSDevice" class="col-form-label"><%= l ('nut_SlaveUPS_UPSNAME@IP') %></label>
</div>
<div class="col-auto">
% param 'ClientUPS_Name' => $nut_data->{ClientUPS_Name} unless param 'ClientUPS_Name';
<input type="text" name="ClientUPS_Name" pattern=".*" size="50" id="inputClientUPSDevice" class="form-control" aria-describedby="Client UPS Name" placeholder="upsname@IP[:port]" value="<%= $nut_data->{ClientUPS_Name} %>" >
</div>
</div>
<br>
</span>
</p>
` </div>
<span class="">
%= submit_button l('nut_Save'), class => ""
</span>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="ClientUPSUsername" class="col-form-label"><%= l ('nut_ClientUPS_Username') %></label>
</div>
<div class="col-auto">
% param 'ClientUPS_User' => $nut_data->{ClientUPS_User} unless param 'ClientUPS_User';
<input type="text" name="ClientUPS_User" id="ClientUPSUsername" class="form-control" aria-describedby="Client UPS Username" placeholder="Client username" value="<%= $nut_data->{ClientUPS_User} %>" >
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="password" class="col-form-label"><%= l ('nut_ClientUPS_Password') %></label>
</div>
<div class="col-auto">
% param 'ClientUPS_Pass' => $nut_data->{ClientUPS_Pass} unless param 'ClientUPS_Pass';
<input type="password" name="ClientUPS_Pass" id="password" class="form-control" aria-describedby="Client UPS Password" placeholder="Client password" value="<%= $nut_data->{ClientUPS_Pass} %>" >
</div>
<div class="col-auto">
<span id="togglePassword" class="bi bi-eye"></span>
</div>
</div>
</div>
<br><br>
<div class="generics">
<h2><%=l('nut_if_genericups')%></h2>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputUPSGenericType" class="col-form-label"><%= l ('nut_UPS_Generic_Type') %></label>
</div>
<div class="col-auto">
% param 'UPS_gen_Type' => $nut_data->{UPS_gen_Type} unless param 'UPS_gen_Type';
<input type="text" name="UPS_gen_Type" pattern=".*" size="50" id="inputUPSGenericType" class="form-control" aria-describedby="UPS Generic Type" placeholder="UPS_Gen_Type" value="<%= $nut_data->{UPS_gen_Type} %>" >
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputUPSManufacturer" class="col-form-label"><%= l ('nut_UPS_Generic_Manufacturer') %></label>
</div>
<div class="col-auto">
% param 'UPS_gen_Mfr' => $nut_data->{UPS_gen_Mfr} unless param 'UPS_gen_Mfr';
<input type="text" name="UPS_gen_Mfr" pattern=".*" size="50" id="inputUPSManufacturer" class="form-control" aria-describedby="UPS Generic Manufacturer" placeholder="UPS_sen_Mfr" value="<%= $nut_data->{UPS_gen_Mfr} %>" >
</div>
</div>
<br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<label for="inputUPSModel" class="col-form-label"><%= l ('nut_UPS_Generic_Model') %></label>
</div>
<div class="col-auto">
% param 'UPS_gen_Model' => $nut_data->{UPS_gen_Model} unless param 'UPS_gen_Model';
<input type="text" name="UPS_gen_Model" pattern=".*" size="50" id="inputUPSModel" class="form-control" aria-describedby="UPS Generic Model" placeholder="UPS_gen_Model" value="<%= $nut_data->{UPS_gen_Model} %>" >
</div>
</div>
</div>
<br>
% param 'trt' => $nut_data->{trt} unless param 'trt';
<%= hidden_field 'trt' => $nut_data->{trt} %>
% my $btn = l ('nut_Save');
<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>
</form>
<br>
%# Probably finally by a submit.
%end
</div>

View File

@@ -2,43 +2,46 @@
%# Generated by SM2Gen version:0.9(20Jan2025) Chameleon version:4.5.4 On Python:3.12.3 at 2025-01-20 16:21:33
%#
<div>
<!--
<script>
window.onload = function() {
SelectInput();
};
</script>
-->
% if (config->{debug} == 1) {
<pre>
%= dumper $nut_data
<%= dumper $nut_data %>
</pre>
% }
% my $btn = l('nut_APPLY');
%= form_for "nutupsu" => (method => 'POST') => begin
<form action="/smanager/nutupsu" method="POST">
% param 'trt' => $nut_data->{trt} unless param 'trt';
%= hidden_field 'trt' => $nut_data->{trt}
<%= hidden_field 'trt' => $nut_data->{trt} %>
%# Inputs etc in here.
<div class="">
<a href='nutupsd?trt=CONFIG' class="">
%= l('nut_Configure_NutUPS')
</a>
%#= link_to l('nut_Configure_NutUPS'), 'nutupsd?trt=CONFIG' , class=> 'link link1'
<div>
<a href='nutupsd?trt=CONFIG' class = "btn btn-sm btn-primary">
<%= l ('nut_Configure_NutUPS') %>
</a>
</div>
<br>
<h2 class=""><%=l('nut_Status_of_the_controlled_UPS')%></h2>
<h2><%= l ('nut_Status_of_the_controlled_UPS')%></h2>
<p class="">
%=l('nut_Descriptive_paragraph')
</p>
<div >
<%= l ('nut_Descriptive_paragraph') %>
</div>
<!--
<br>
<!--
<span class="">
%=l('nut_Status_(from_upsc)')
</span>
@@ -47,10 +50,11 @@
%= text_area 'UPSStatus', cols=>55, rows=>35, Readonly=>'true'
</span>
<br>
-->
-->
%= include 'partials/_nut_UPS_STATUS'
<%= include 'partials/_nut_UPS_STATUS' %>
%# Probably finally by a submit.
%end
</form>
</div>

View File

@@ -1,45 +1,105 @@
<h1>UPS Status</h1>
%= stylesheet '/css/nut_ups-status-page.css'
<h2>UPS Status</h2>
<div class="container-md">
<div>
<h2>Device Information</h2>
<table class="table table-bordered">
<tr><td>Manufacturer:</td><td><%= $nut_data->{'ups_data'}->{'device.mfr'} %></td></tr>
<tr><td>Model:</td><td><%= $nut_data->{'ups_data'}->{'device.model'} %></td></tr>
<tr><td>Serial:</td><td><%= $nut_data->{'ups_data'}->{'device.serial'} %></td></tr>
<tr><td>Type:</td><td><%= $nut_data->{'ups_data'}->{'device.type'} %></td></tr>
</table>
</div>
<div>
<h2>Device Information</h2>
<table class="table table-bordered nutTable">
<tr>
<td>Manufacturer:</td>
<td><%= $nut_data->{'ups_data'}->{'device.mfr'} %></td>
</tr>
<tr>
<td>Model:</td>
<td><%= $nut_data->{'ups_data'}->{'device.model'} %></td>
</tr>
<tr>
<td>Serial:</td>
<td><%= $nut_data->{'ups_data'}->{'device.serial'} %></td>
</tr>
<tr>
<td>Type:</td>
<td><%= $nut_data->{'ups_data'}->{'device.type'} %></td>
</tr>
</table>
</div>
<div>
<h2>Battery Status</h2>
<table class="table table-bordered">
<tr><td>Charge:</td><td><%= $nut_data->{'ups_data'}->{'battery.charge'} %>%</td></tr>
<tr><td>Runtime:</td><td><%= sprintf("%.2f", $nut_data->{'ups_data'}->{'battery.runtime'} / 60) %> minutes</td></tr>
<tr><td>Voltage:</td><td><%= $nut_data->{'ups_data'}->{'battery.voltage'} %>V</td></tr>
<tr><td>Type:</td><td><%= $nut_data->{'ups_data'}->{'battery.type'} %></td></tr>
</table>
</div>
<br>
<div>
<h2>Input Power</h2>
<table class="table table-bordered">
<tr><td>Voltage:</td><td><%= $nut_data->{'ups_data'}->{'input.voltage'} %>V</td></tr>
<tr><td>Nominal Voltage:</td><td><%= $nut_data->{'ups_data'}->{'input.voltage.nominal'} %>V</td></tr>
<tr><td>Sensitivity:</td><td><%= $nut_data->{'ups_data'}->{'input.sensitivity'} %></td></tr>
<tr><td>Transfer High:</td><td><%= $nut_data->{'ups_data'}->{'input.transfer.high'} %>V</td></tr>
<tr><td>Transfer Low:</td><td><%= $nut_data->{'ups_data'}->{'input.transfer.low'} %>V</td></tr>
</table>
</div>
<div>
<h2>Battery Status</h2>
<table class="table table-bordered nutTable">
<tr>
<td>Charge:</td>
<td><%= $nut_data->{'ups_data'}->{'battery.charge'} %>%</td>
</tr>
<tr>
<td>Runtime:</td>
<td><%= sprintf("%.2f", $nut_data->{'ups_data'}->{'battery.runtime'} / 60) %> minutes</td>
</tr>
<tr>
<td>Voltage:</td>
<td><%= $nut_data->{'ups_data'}->{'battery.voltage'} %>V</td>
</tr>
<tr>
<td>Type:</td>
<td><%= $nut_data->{'ups_data'}->{'battery.type'} %></td>
</tr>
</table>
</div>
<div>
<h2>UPS Status</h2>
<table class="table table-bordered">
<tr><td>Status:</td><td><%= $nut_data->{'ups_data'}->{'ups.status'} %></td></tr>
<tr><td>Load:</td><td><%= $nut_data->{'ups_data'}->{'ups.load'} %>%</td></tr>
<tr><td>Beeper:</td><td><%= $nut_data->{'ups_data'}->{'ups.beeper.status'} %></td></tr>
<tr><td>Firmware:</td><td><%= $nut_data->{'ups_data'}->{'ups.firmware'} %></td></tr>
<tr><td>Test Result:</td><td><%= $nut_data->{'ups_data'}->{'ups.test.result'} %></td></tr>
</table>
</div>
<br>
<div>
<h2>Input Power</h2>
<table class="table table-bordered nutTable">
<tr>
<td>Voltage:</td>
<td><%= $nut_data->{'ups_data'}->{'input.voltage'} %>V</td>
</tr>
<tr>
<td>Nominal Voltage:</td>
<td><%= $nut_data->{'ups_data'}->{'input.voltage.nominal'} %>V</td>
</tr>
<tr>
<td>Sensitivity:</td>
<td><%= $nut_data->{'ups_data'}->{'input.sensitivity'} %></td>
</tr>
<tr>
<td>Transfer High:</td>
<td><%= $nut_data->{'ups_data'}->{'input.transfer.high'} %>V</td>
</tr>
<tr>
<td>Transfer Low:</td>
<td><%= $nut_data->{'ups_data'}->{'input.transfer.low'} %>V</td>
</tr>
</table>
</div>
<br>
<div>
<h2>UPS Status</h2>
<table class="table table-bordered nutTable">
<tr>
<td>Status:</td>
<td><%= $nut_data->{'ups_data'}->{'ups.status'} %></td>
</tr>
<tr>
<td>Load:</td>
<td><%= $nut_data->{'ups_data'}->{'ups.load'} %>%</td>
</tr>
<tr>
<td>Beeper:</td>
<td><%= $nut_data->{'ups_data'}->{'ups.beeper.status'} %></td>
</tr>
<tr>
<td>Firmware:</td>
<td><%= $nut_data->{'ups_data'}->{'ups.firmware'} %></td>
</tr>
<tr>
<td>Test Result:</td>
<td><%= $nut_data->{'ups_data'}->{'ups.test.result'} %></td>
</tr>
</table>
</div>
</div>

View File

@@ -114,7 +114,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>

View File

@@ -90,7 +90,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>

View File

@@ -40,7 +40,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
@@ -92,7 +92,7 @@
% my $csrf_token = "TOKEN"; # CSRF token for security
% my $actionRemove = qq{
% <a href="portforwardingd?CsrfDef=$csrf_token&trt=DEL&sport=$sport&proto=$proto">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
% </a>

View File

@@ -53,7 +53,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>

View File

@@ -30,7 +30,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>

View File

@@ -9,7 +9,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>
@@ -54,7 +54,7 @@
% my $printer_name = $printer->key;
% my $actionRemove = qq{
% <a href="printers2?CsrfDef=$csrf_token&trt=DEL&&printer=$printer_name">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
% </a>

View File

@@ -37,7 +37,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -14,7 +14,7 @@
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-danger"><%= $btn %></button>
<button type="submit" class="btn btn-danger btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -6,7 +6,7 @@
<%= $c->render_to_string(inline => l('pse_DESCRIPTION')); %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
<%= hidden_field 'trt' => 'ADD' %>
@@ -53,7 +53,7 @@
%my $pseudonyms_entry_name = $pseudonym->key; # pseudonyms_entry name extracted from the data structure
%$actionModify = qq{
% <a href="pseudonyms2?CsrfDef=$csrf_token&trt=UPD&pseudonym=$pseudonyms_entry_name">
% <button type='button' class="btn btn-primary" title='$modify_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$modify_text' >
% $modify_text
% </button>
% </a>
@@ -66,7 +66,7 @@
%my $pseudonyms_entry_name = $pseudonym->key; # pseudonyms_entry name extracted from the data structure
%$actionRemove = qq{
% <a href="pseudonyms2?CsrfDef=$csrf_token&trt=DEL&pseudonym=$pseudonyms_entry_name">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
% </a>

View File

@@ -62,7 +62,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -71,7 +71,7 @@
% my $quota_user_name = $user->key; # quotas_entry name extracted from the data structure
% my $actionModify = qq{
% <a href="quotad?CsrfDef=$csrf_token&trt=UPD&user=$quota_user_name">
% <button type='button' class="btn btn-primary" title='$modify_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$modify_text' >
% $modify_text
% </button>
% </a>

View File

@@ -85,7 +85,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -12,7 +12,7 @@
<li class="nav-header">USER</li>
<li class="nav-item">
<a href='#' id="" class="nav-link">
<a href='#' class="nav-link">
<i class="nav-icon bi bi-person-fill"></i>Current User: <%= session 'username' %>
</a>
</li>

View File

@@ -31,7 +31,7 @@
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary">Theme</button>
<button type="submit" class="btn btn-primary btn-sm">Theme</button>
</div>
</div>
</form>

View File

@@ -40,7 +40,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-danger"><%= $btn %></button>
<button type="submit" class="btn btn-danger btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -5,7 +5,7 @@
<form action="/smanager/useraccounts" method="POST">
<br>
<div>
<button type="submit" class="btn btn-primary"><%= $btn %> </button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %> </button>
</div>
</form>
@@ -63,14 +63,14 @@
% if ($useraccounts_user_name eq 'admin') {
%$actionModify = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=UPS&user=$useraccounts_user_name">
% <button type='button' class="btn btn-primary" title='$modify_text'>
% <button type='button' class="btn btn-primary btn-sm" title='$modify_text'>
% $modify_text
% </button>
%</a>
%};
%$actionResetPw = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWS&user=$useraccounts_user_name">
% <button type='button' class="btn btn-primary" title='$password_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$password_text' >
% $password_text
% </button>
%</a>
@@ -78,7 +78,7 @@
% } else {
%$actionModify = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=UPD&user=$useraccounts_user_name">
% <button type='button' class="btn btn-primary" title='$modify_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$modify_text' >
% $modify_text
% </button>
%</a>
@@ -93,14 +93,14 @@
<!-- Sets BOTH columns - possibly leave out Reset Password here?-->
%$actionLock = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
% <button type='button' class="btn btn-danger" title="$password_text - currently unset">
% <button type='button' class="btn btn-danger btn-sm" title="$password_text - currently unset">
% Unlock
% </button>
%</a>
%};
%$actionResetPw = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
% <button type='button' class="btn btn-primary" title="$password_text - currently unset">
% <button type='button' class="btn btn-primary btn-sm" title="$password_text - currently unset">
% $password_text
% </button>
%</a>
@@ -109,14 +109,14 @@
% } elsif ($useraccounts_user_name ne 'admin') {
%$actionLock = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=LCK&user=$useraccounts_user_name">
% <button type='button' class="btn btn-primary" title='$lock_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$lock_text' >
% $lock_text
% </button>
%</a>
%};
%$actionResetPw = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
% <button type='button' class="btn btn-primary" title='$password_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$password_text' >
% $password_text
% </button>
%</a>
@@ -126,7 +126,7 @@
% if ( $removable eq 'yes' ) {
%$actionRemove = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=DEL&user=$useraccounts_user_name">
% <button type='button' class="btn btn-primary" title='$remove_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$remove_text' >
% $remove_text
% </button>
%</a>
@@ -136,7 +136,7 @@
<!-- If webmail disabled??? -->
% $actionroundcube = qq{
%<a href="roundcubepanel?CsrfDef=$csrf_token&url=https://$thisdomain/roundcube?_user=$useraccounts_user_name&height=600px">
% <button type='button' class="btn btn-primary" title='$roundcube_text' >
% <button type='button' class="btn btn-primary btn-sm" title='$roundcube_text' >
% $roundcube_text
% </button>
%</a>

View File

@@ -42,7 +42,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -75,7 +75,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -64,7 +64,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -279,7 +279,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -105,7 +105,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= l 'SAVE' %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= l 'SAVE' %></button>
</div>
</div>

View File

@@ -66,7 +66,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -2,10 +2,6 @@
% content_for 'module' => begin
<!-- should be moved -->
%= javascript '/js/qmailanalog.js'
<div class="card-body">
% if (config->{debug} == 1) {
@@ -60,7 +56,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -40,7 +40,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
</form>

View File

@@ -277,7 +277,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -40,14 +40,14 @@
% if (!($url =~ /https:/)) {
% $url = 'https://' . $url;
%}
% }
<div class="container-fluid">
<a href="<%= "https://".$thisdomain."/" %>roundcube?_user=<%= $username %>">
<button class="" width=20em title="<%= l('Full Window') %>"><%= l('Full Window') %>
</button>
</a>
<object id="" data="<%=$url %>" title="<%= $c->stash('title') %>" type="text/html" ><%= $c->stash('title') %> not found</object>
<object data="<%=$url %>" title="<%= $c->stash('title') %>" type="text/html" ><%= $c->stash('title') %> not found</object>
</div>
</div>
@@ -59,7 +59,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

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 %></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

@@ -101,7 +101,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -25,7 +25,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -4,69 +4,73 @@
<div class="card-body">
<p>Index on line - Welcome page
<br>
</p>
<p>
Cogo diam enim ibidem paulatim pertineo velit. Comis patria pertineo secundum. Aliquip laoreet quibus zelus. Gravis incassum interdico iustum lucidus neo os paratus. Autem causa haero pneum similis sudo vindico. Iusto molior neque oppeto. Ideo minim nibh refoveo veniam vereor virtus. Appellatio pala scisco.
<div>Index on line - Welcome page<br></div>
Caecus esse exputo ideo laoreet valde. Appellatio feugiat haero jus lucidus tum valetudo vulputate. Amet illum imputo volutpat. Acsi adipiscing brevitas facilisi illum laoreet lobortis lucidus sagaciter uxor. Defui dolor hos luptatum quadrum saluto verto vicis wisi.
<div>
Cogo diam enim ibidem paulatim pertineo velit. Comis patria pertineo secundum. Aliquip laoreet quibus zelus. Gravis incassum interdico iustum lucidus neo os paratus. Autem causa haero pneum similis sudo vindico. Iusto molior neque oppeto. Ideo minim nibh refoveo veniam vereor virtus. Appellatio pala scisco.
Acsi ideo pagus ymo. Ea jugis lobortis nimis utrum veniam vereor. Aliquip amet autem gilvus hos iaceo loquor natu pagus refoveo. Adipiscing laoreet probo tation tum vero. Enim minim ymo. Dolore imputo iusto iustum lobortis meus molior vulputate. Dolor immitto iustum jumentum olim pagus saluto uxor zelus. Capto commodo eu euismod. Duis ille nunc premo quidem tamen ulciscor wisi.
Caecus esse exputo ideo laoreet valde. Appellatio feugiat haero jus lucidus tum valetudo vulputate. Amet illum imputo volutpat. Acsi adipiscing brevitas facilisi illum laoreet lobortis lucidus sagaciter uxor. Defui dolor hos luptatum quadrum saluto verto vicis wisi.
Abdo abico damnum dolor et facilisi incassum melior populus saepius. Commodo conventio ex exputo pagus quae valetudo. Eligo jumentum lobortis suscipit tamen torqueo validus venio voco. Letalis molior tego tincidunt tum. Bene iriure melior natu obruo os te voco. Ea oppeto refoveo tum. Consectetuer dolus ut.
Acsi ideo pagus ymo. Ea jugis lobortis nimis utrum veniam vereor. Aliquip amet autem gilvus hos iaceo loquor natu pagus refoveo. Adipiscing laoreet probo tation tum vero. Enim minim ymo. Dolore imputo iusto iustum lobortis meus molior vulputate. Dolor immitto iustum jumentum olim pagus saluto uxor zelus. Capto commodo eu euismod. Duis ille nunc premo quidem tamen ulciscor wisi.
Abdo abigo aptent commoveo inhibeo molior nibh plaga pneum zelus. Conventio genitus neo nulla patria pneum saluto velit voco. Abigo defui dolore humo nulla nunc. Autem commodo erat gemino nisl olim pecus ratis tego. Fere luctus nunc sit. Bene humo imputo paulatim suscipit. Aliquam diam dolor feugiat gravis imputo lucidus modo nulla obruo. Ea macto melior neo qui ratis velit.
</p>
%= l ('MESS_TEST','toto')
<p>
%= link_to Initial => '/'
</p>
<p>
%= link_to Manual => '/manual'
</p>
<p>
%= link_to Welcome => '/welcome'
<a href="<%= url_for 'index' %>">Accueil</a -->.
</p>
Abdo abico damnum dolor et facilisi incassum melior populus saepius. Commodo conventio ex exputo pagus quae valetudo. Eligo jumentum lobortis suscipit tamen torqueo validus venio voco. Letalis molior tego tincidunt tum. Bene iriure melior natu obruo os te voco. Ea oppeto refoveo tum. Consectetuer dolus ut.
Abdo abigo aptent commoveo inhibeo molior nibh plaga pneum zelus. Conventio genitus neo nulla patria pneum saluto velit voco. Abigo defui dolore humo nulla nunc. Autem commodo erat gemino nisl olim pecus ratis tego. Fere luctus nunc sit. Bene humo imputo paulatim suscipit. Aliquam diam dolor feugiat gravis imputo lucidus modo nulla obruo. Ea macto melior neo qui ratis velit.
</div>
<%= l ('MESS_TEST','toto') %>
<div>
<%= link_to Initial => '/' %>
</div>
<div>
<%= link_to Manual => '/manual' %>
</div>
<div>
<%= link_to Welcome => '/welcome' %>
<a href="<%= url_for 'index' %>">Accueil</a>
</div>
% use SrvMngr::Navigation2;
% my %nav = %{SrvMngr::navigation2->getNavigation( $c->languages() )};
% use SrvMngr::Navigation2;
% my %nav = %{SrvMngr::navigation2->getNavigation( $c->languages() )};
<!-- % = dumper %nav -->
<div>
% foreach my $h (sort { ($nav{$a}{'WEIGHT'}/$nav{$a}{'COUNT'})
% <=> ($nav{$b}{'WEIGHT'}/$nav{$b}{'COUNT'}) } keys %nav) {
% foreach my $h (sort { ($nav{$a}{'WEIGHT'}/$nav{$a}{'COUNT'})
% <=> ($nav{$b}{'WEIGHT'}/$nav{$b}{'COUNT'}) } keys %nav) {
</div>
<div>
%= $h
% foreach (sort { $a->{'WEIGHT'} <=> $b->{'WEIGHT'} } @{$nav{$h}{'DESCRIPTIONS'}}) {
% my ($target, $classNew) = ( $_->{'FILENAME'} =~ m/^2\// ) ?
% ('_self',' accent') :
% ('main','') ;
<%= $h %>
% my $href = '/server-manager' . $_->{'FILENAME'};
<div class=""><a class="" target='
%= $target
' onclick=\"swapClasses('sme
%= $c
')\" id="" href='
%= $href
'>
%= $_->{'DESCRIPTION'}
</a>
</div>
% foreach (sort { $a->{'WEIGHT'} <=> $b->{'WEIGHT'} } @{$nav{$h}{'DESCRIPTIONS'}}) {
% my ($target, $classNew) = ( $_->{'FILENAME'} =~ m/^2\// ) ?
% ('_self',' accent') :
% ('main','') ;
% $c++;
% }
% my $href = '/server-manager' . $_->{'FILENAME'};
<div class=""><a class="" target='
%= $target
' onclick=\"swapClasses('sme
%= $c
')\" href='
%= $href
'>
%= $_->{'DESCRIPTION'}
</a>
</div>
% }
% $c++;
% }
% }
</div>
</div>
% end

View File

@@ -92,7 +92,7 @@
<div class="row g-3 align-items-center">
<div class="col-md-1">
<button type="submit" class="btn btn-primary"><%= $btn %></button>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>

View File

@@ -5,117 +5,141 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $yum_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $yum_datas %>
</pre>
% }
<h1><%= $title%></h1>
% if ( $notif ) {
<br>
<span class="">
%= $notif
</span>
%}
<br>
<div class="text-warn">
<%= $notif %>
</div>
<br>
% }
% if ( $c->is_empty('updates') ) {
<br>
<div class=""><h2>
%=l 'yum_TITLE_UPTODATE'
</h2>
%=l 'yum_DESC_UPTODATE'
</div>
<br>
%}
<br>
<div>
<h2><%=l 'yum_TITLE_UPTODATE' %></h2>
<br>
<%=l 'yum_DESC_UPTODATE' %>
</div>
<br>
% }
% if ( $c->non_empty('updates') ) {
<br>
<div class="">
<h2>
%=l 'yum_TITLE_UPDATES_AVAILABLE'
</h2>
%=l 'yum_DESC_UPDATES_AVAILABLE'
</div>
<br>
<br>
<div>
<h2><%= l 'yum_TITLE_UPDATES_AVAILABLE' %></h2>
<%= l 'yum_DESC_UPDATES_AVAILABLE' %>
</div>
<br>
%= form_for 'yum' => (method => 'POST') => begin
%= hidden_field 'trt' => 'UPDT'
%= submit_button $c->l('yum_BUTTON_INSTALL_UPDATES'), class => ""
% end
%}
<form action="/smanager/yum" method="POST">
% my $btnInUp = $c->l('yum_BUTTON_INSTALL_UPDATES');
<%= hidden_field 'trt' => 'UPDT' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btnInUp %></button>
</div>
</div>
</form>
% }
% if ( $c->non_empty('available') ) {
%= form_for 'yum' => (method => 'POST') => begin
<br>
%= hidden_field 'trt' => 'INST'
%= submit_button $c->l('yum_BUTTON_INSTALL_AVAILABLE'), class => ""
% end
%}
<form action="/smanager/yum" method="POST">
<br>
% my $btnInAv = $c->l('yum_BUTTON_INSTALL_AVAILABLE');
<%= hidden_field 'trt' => 'INST' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btnInAv %></button>
</div>
</div>
</form>
% }
% if ( $c->non_empty('installed') ) {
%= form_for 'yum' => (method => 'POST') => begin
<br>
%= hidden_field 'trt' => 'REMO'
%= submit_button $c->l('yum_BUTTON_REMOVE'), class => ""
% end
%}
<form action="/smanager/yum" method="POST">
<br>
% my $btnInRm = $c->l('yum_BUTTON_REMOVE');
<%= hidden_field 'trt' => 'REMO' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btnInRm %></button>
</div>
</div>
% }
</form>
<br>
<!--<br><hr class=""><br>-->
%= form_for 'yum' => (method => 'POST') => begin
<form action="/smanager/yum" method="POST">
<p>
<span class="">
%=l 'yum_LABEL_YUM_STATUS'
</span>
<span class="">
%= $c->get_status('status', 'localise')
</span>
</p>
<div class="row g-3 align-items-center">
<div class="col-md-2 border-bottom">
<%= l 'yum_LABEL_YUM_STATUS' %>
</div>
<div class="col-auto border-bottom">
<%= $c->get_status('status', 'localise') %>
</div>
</div>
<p>
<span class="">
%=l 'yum_LABEL_YUM_PACKAGEFUNCTIONS'
</span>
<span class="">
%= $c->get_status('PackageFunctions', 'localise')
</span>
</p>
<div class="row g-3 align-items-center">
<div class="col-md-2 border-bottom">
<%= l 'yum_LABEL_YUM_PACKAGEFUNCTIONS' %>
</div>
<div class="col-auto border-bottom">
<%= $c->get_status('PackageFunctions', 'localise') %>
</div>
</div>
<p>
<span class="">
%=l 'yum_LABEL_YUM_DELTARPMPROCESS'
</span>
<span class="">
%= $c->get_status('DeltaRpmProcess', 'localise')
</span>
</p>
<div class="row g-3 align-items-center">
<div class="col-md-2 border-bottom">
<%= l 'yum_LABEL_YUM_DELTARPMPROCESS' %>
</div>
<div class="col-auto border-bottom">
<%= $c->get_status('DeltaRpmProcess', 'localise') %>
</div>
</div>
<p>
<span class="">
%=l 'yum_LABEL_YUM_DOWNLOADONLY'
</span>
<span class="">
%= $c->get_status('DownloadOnly', 'localise')
</span>
</p>
<div class="row g-3 align-items-center">
<div class="col-md-2 border-bottom">
<%= l 'yum_LABEL_YUM_DOWNLOADONLY' %>
</div>
<div class="col-auto border-bottom">
<%= $c->get_status('DownloadOnly', 'localise') %>
</div>
</div>
<p>
<span class="">
%=l 'yum_LABEL_YUM_AUTOINSTALLUPDATES'
</span>
<span class="">
%= $c->get_status('AutoInstallUpdates', 'localise')
</span>
</p>
<div class="row g-3 align-items-center">
<div class="col-md-2 border-bottom">
<%= l 'yum_LABEL_YUM_AUTOINSTALLUPDATES' %>
</div>
<div class="col-auto border-bottom">
<%= $c->get_status('AutoInstallUpdates', 'localise') %>
</div>
</div>
%= hidden_field 'trt' => 'CONF'
<br>
%= submit_button $c->l('yum_BUTTON_CONFIGURATION'), class => ""
<br>
% end
% my $btnConfig = $c->l('yum_BUTTON_CONFIGURATION');
<%= hidden_field 'trt' => 'CONF' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btnConfig %></button>
</div>
</div>
</form>
</div>

View File

@@ -5,105 +5,157 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $yum_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $yum_datas %>
</pre>
% }
<h1><%= $title%></h1>
% if ( $notif ) {
<br>
<div class="">
%= $notif
</div>
%}
<br>
<div class="text-warn">
<%= $notif %>
</div>
<br>
% }
%= form_for 'yumd' => (method => 'POST') => begin
<p>
<span class="">
%=l 'yum_LABEL_YUM_STATUS'
</span>
<span class="">
% param 'yum_check4updates' => $c->get_status('check4updates') unless param 'yum_check4updates';
%= select_field 'yum_check4updates' => $c->get_check_freq_opt()
</span>
</p>
<form action="/smanager/yumd" method="POST">
<br>
%=l 'yum_DESC_YUM_PACKAGEFUNCTIONS'
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'yum_LABEL_YUM_STATUS' %>
</div>
<div class="col-auto">
% param 'yum_check4updates' => $c->get_status('check4updates') unless param 'yum_check4updates';
<%= select_field 'yum_check4updates' => $c->get_check_freq_opt(), class => "form-select" %>
</div>
</div>
<p>
<span class="">
%=l 'yum_LABEL_YUM_PACKAGEFUNCTIONS'
</span>
<span class="">
% param 'yum_PackageFunctions' => $c->get_status('PackageFunctions') unless param 'yum_PackageFunctions';
%= select_field 'yum_PackageFunctions' => [[ $c->l('DISABLED') => 'disabled'], [ $c->l('ENABLED') => 'enabled']]
</span>
</p>
<br>
<br>
%=l 'yum_DESC_ENABLED_REPOSITORIES'
<%= l 'yum_DESC_YUM_PACKAGEFUNCTIONS' %>
<p>
<span class="">
%=l 'yum_LABEL_ENABLED_REPOSITORIES'
</span>
<span class="">
% param 'SelectedRepositories' => $c->get_repository_current_options() unless param 'SelectedRepositories';
%= select_field 'SelectedRepositories' => $c->get_repository_options2(), class => "", multiple => '1'
</span>
</p>
<br><br>
<br>
%=l 'yum_DESC_YUM_DELTARPMPROCESS'
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'yum_LABEL_YUM_PACKAGEFUNCTIONS' %>
</div>
<div class="col-auto">
% param 'yum_PackageFunctions' => $c->get_status('PackageFunctions') unless param 'yum_PackageFunctions';
<%= select_field 'yum_PackageFunctions' => [[ $c->l('DISABLED') => 'disabled'], [ $c->l('ENABLED') => 'enabled']], class => "form-select" %>
</div>
</div>
<p>
<span class="">
%=l 'yum_LABEL_YUM_DELTARPMPROCESS'
</span>
<span class="">
% param 'yum_DeltaRpmProcess' => $c->get_status('DeltaRpmProcess') unless param 'yum_DeltaRpmProcess';
%= select_field 'yum_DeltaRpmProcess' => [[ $c->l('DISABLED') => 'disabled'], [ $c->l('ENABLED') => 'enabled']]
</span>
</p>
<br>
<br>
%=l 'yum_DESC_YUM_DOWNLOADONLY'
<%= l 'yum_DESC_ENABLED_REPOSITORIES' %>
<p>
<span class="">
%=l 'yum_LABEL_YUM_DOWNLOADONLY'
</span>
<span class="">
% param 'yum_DownloadOnly' => $c->get_status('DownloadOnly') unless param 'yum_DownloadOnly';
%= select_field 'yum_DownloadOnly' => [[ $c->l('DISABLED') => 'disabled'], [ $c->l('ENABLED') => 'enabled']]
</span>
</p>
<br><br>
<br>
%=l 'yum_DESC_YUM_AUTOINSTALLUPDATES'
<br>
<p>
<span class="">
%=l 'yum_LABEL_YUM_AUTOINSTALLUPDATES'
</span>
<span class="">
% param 'yum_AutoInstallUpdates' => $c->get_status('AutoInstallUpdates') unless param 'yum_AutoInstallUpdates';
%= select_field 'yum_AutoInstallUpdates' => [[ $c->l('DISABLED') => 'disabled'], [ $c->l('ENABLED') => 'enabled']]
</span>
</p>
%= hidden_field 'trt' => 'CONF'
<br>
<!--<div class="">-->
%= submit_button $c->l('SAVE'), class => ""
<!--</div>-->
% end
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'yum_LABEL_ENABLED_REPOSITORIES' %>
</div>
<div class="col-auto">
% param 'SelectedRepositories' => $c->get_repository_current_options() unless param 'SelectedRepositories';
<%= select_field 'SelectedRepositories' => $c->get_repository_options2(), multiple => '1', size => "16", class => "form-select" %>
</div>
</div>
<br>
<%= dumper $c->get_repository_options2() %>
<br>
<%= dumper $c->get_repository_current_options () %>
<br>
<%= dumper $c->every_param('SelectedRepositories') %>
<br>
%# my @repo ();
%# my %repositories = $c->get_repository_options2();
<%#= dumper %repositories %>
%# foreach my @repository (keys %$repositories) {
<%#= dumper @repository %>
<br>
%# my $repoName = $_->{Name};
%# my $repoStatus = $_ -> {Status};
%# }
<br>
<%= l 'yum_DESC_YUM_DELTARPMPROCESS' %>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'yum_LABEL_YUM_DELTARPMPROCESS' %>
</div>
<div class="col-auto">
% param 'yum_DeltaRpmProcess' => $c->get_status('DeltaRpmProcess') unless param 'yum_DeltaRpmProcess';
<%= select_field 'yum_DeltaRpmProcess' => [[ $c->l('DISABLED') => 'disabled'], [ $c->l('ENABLED') => 'enabled']], class => "form-select" %>
</div>
</div>
<br>
<%= l 'yum_DESC_YUM_DOWNLOADONLY' %>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'yum_LABEL_YUM_DOWNLOADONLY' %>
</div>
<div class="col-auto">
% param 'yum_DownloadOnly' => $c->get_status('DownloadOnly') unless param 'yum_DownloadOnly';
<%= select_field 'yum_DownloadOnly' => [[ $c->l('DISABLED') => 'disabled'], [ $c->l('ENABLED') => 'enabled']], class => "form-select" %>
</div>
</div>
<br>
<%= l 'yum_DESC_YUM_AUTOINSTALLUPDATES' %>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<%= l 'yum_LABEL_YUM_AUTOINSTALLUPDATES' %>
</div>
<div class="col-auto">
% param 'yum_AutoInstallUpdates' => $c->get_status('AutoInstallUpdates') unless param 'yum_AutoInstallUpdates';
<%= select_field 'yum_AutoInstallUpdates' => [[ $c->l('DISABLED') => 'disabled'], [ $c->l('ENABLED') => 'enabled']], class => "form-select" %>
</div>
</div>
<br>
% my $btnSave = $c->l('SAVE');
<%= hidden_field 'trt' => 'CONF' %>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btnSave %></button>
</div>
</div>
</form>
</div>

View File

@@ -5,61 +5,79 @@
<div class="card-body">
% if (config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $yum_datas
</p>
<pre>
<%= dumper $c->current_route %>
<%= dumper $yum_datas %>
</pre>
% }
<h1><%= $title%></h1>
% if ( $notif ) {
<br>
<div class="">
%= $notif
</div>
%}
<br>
<br>
<div class="text-warn">
<%= $notif %>
</div>
<br>
% }
%= form_for 'yumd' => (method => 'POST') => begin
<form action="/smanager/yumd" method="POST">
%=l 'yum_HEADER_AVAILABLE_SOFTWARE'
<br><br>
% if ($c->non_empty('available','group')) {
%=l 'yum_DESC_AVAILABLE_GROUPS'
<p>
<span class="">
%=l 'yum_LABEL_AVAILABLE_GROUPS'
</span>
<span class="">
% param 'SelectedGroups' => $c->get_names2('updates','group') unless param 'SelectedGroups';
%= select_field 'SelectedGroups' => $c->get_options2('available', 'group'), class => "", multiple => "1"
</span>
</p>
%}
<br>
% if ($c->non_empty('available','packages')) {
%=l 'yum_DESC_AVAILABLE_PACKAGES'
<p>
<span class="">
%=l 'yum_LABEL_AVAILABLE_PACKAGES'
</span>
<span class="">
% param 'SelectedPackages' => $c->get_names2('updates','package') unless param 'SelectedPackages';
%= select_field 'SelectedPackages' => $c->get_options2('available', 'package'), class => "", multiple => "1"
</span>
</p>
%}
<%= l 'yum_HEADER_AVAILABLE_SOFTWARE' %>
<!-- $c->print_skip_header() -->
<br><br>
%= hidden_field 'trt' => 'INST'
<br><br>
<!-- <div class="">-->
%= submit_button $c->l('yum_INSTALL_SOFTWARE'), class => ""
<!--</div>-->
% if ($c->non_empty('available','group')) {
<%=l 'yum_DESC_AVAILABLE_GROUPS' %>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%= l 'yum_LABEL_AVAILABLE_GROUPS' %>
</div>
<div class="col-md-3">
% param 'SelectedGroups' => $c->get_names2('updates','group') unless param 'SelectedGroups';
<%= select_field 'SelectedGroups' => $c->get_options2('available', 'group'), class => "form-select", size => "10", multiple => "1" %>
</div>
</div>
% }
<br><br>
% if ($c->non_empty('available','packages')) {
<%= l 'yum_DESC_AVAILABLE_PACKAGES' %>
<br><br>
<div class="row g-3 align-items-center">
<div class="col-md-1">
<%=l 'yum_LABEL_AVAILABLE_PACKAGES' %>
</div>
<div class="col-md-3">
% param 'SelectedPackages' => $c->get_names2('updates','package') unless param 'SelectedPackages';
%= select_field 'SelectedPackages' => $c->get_options2('available', 'package'), class => "form-select", size => "10", multiple => "1"
</div>
</div>
% }
<!-- $c->print_skip_header() -->
<br>
<%= hidden_field 'trt' => 'INST' %>
% my $btnSave = $c->l('yum_INSTALL_SOFTWARE');
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btnSave %></button>
</div>
</div>
</form>
% end
</div>

Some files were not shown because too many files have changed in this diff Show More