Enhance product links and translations; update styles and add registration modal
- Updated product links in rma.php and rma_manage.php to include icons for better UX. - Improved German, Spanish, Dutch, Polish, Portuguese, and US translations with new phrases for software licenses and user information prompts. - Refactored CSS to remove redundant styles and added new styles for a registration modal, enhancing the overall UI. - Introduced JavaScript variables for user information prompts in softwaretool.php for better localization support.
This commit is contained in:
@@ -64,11 +64,64 @@ if(isset($get_content) && $get_content!=''){
|
|||||||
//build up search
|
//build up search
|
||||||
$clause .= ' AND (h.rowID like :'.$v[0].' OR h.createdby like :'.$v[0].')';
|
$clause .= ' AND (h.rowID like :'.$v[0].' OR h.createdby like :'.$v[0].')';
|
||||||
}
|
}
|
||||||
elseif ($v[0] == 'type' && $v[1] == 'servicereport') {
|
elseif ($v[0] == 'serialnumber') {
|
||||||
//Filter out only relevant servicereports
|
//build up serialnumber
|
||||||
$filter_key_1 = '"%serialnumber%"';
|
//check if multiple serialnumbers are provided
|
||||||
$filter_key_2 = '"ServiceReport"';
|
if (str_contains($v[1], ',')){
|
||||||
$clause .= ' AND h.type = '.$filter_key_2.' AND NOT e.productrowid = "31" AND h.description like '.$filter_key_1;
|
$inputs = explode(",",$v[1]);
|
||||||
|
$new_querystring = ''; //empty querystring
|
||||||
|
$x=0;
|
||||||
|
foreach($inputs as $input){
|
||||||
|
//create key
|
||||||
|
$new_key = $v[0].'_'.$x;
|
||||||
|
//inject new key/value to array
|
||||||
|
$criterias[$new_key] = $input;
|
||||||
|
$new_querystring .= ':'.$new_key.',';
|
||||||
|
$x++;
|
||||||
|
}
|
||||||
|
//remove obsolete last character from new_querystring
|
||||||
|
$new_querystring = substr($new_querystring,0, -1);
|
||||||
|
//add new_querystring to clause
|
||||||
|
$clause .= ' AND e.serialnumber IN ('.$new_querystring.')';
|
||||||
|
//remove original key/value from array
|
||||||
|
unset($criterias[$v[0]]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$clause .= ' AND e.serialnumber IN (:'.$v[0].')';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($v[0] == 'type') {
|
||||||
|
if ($v[1] == 'servicereport') {
|
||||||
|
//Filter out only relevant servicereports
|
||||||
|
$filter_key_1 = '"%serialnumber%"';
|
||||||
|
$filter_key_2 = '"ServiceReport"';
|
||||||
|
$clause .= ' AND h.type = '.$filter_key_2.' AND NOT e.productrowid = "31" AND h.description like '.$filter_key_1;
|
||||||
|
//remove from criterias to prevent double binding
|
||||||
|
unset($criterias[$v[0]]);
|
||||||
|
}
|
||||||
|
elseif (str_contains($v[1], ',')) {
|
||||||
|
//check if multiple types are provided
|
||||||
|
$inputs = explode(",",$v[1]);
|
||||||
|
$new_querystring = ''; //empty querystring
|
||||||
|
$x=0;
|
||||||
|
foreach($inputs as $input){
|
||||||
|
//create key
|
||||||
|
$new_key = $v[0].'_'.$x;
|
||||||
|
//inject new key/value to array
|
||||||
|
$criterias[$new_key] = $input;
|
||||||
|
$new_querystring .= ':'.$new_key.',';
|
||||||
|
$x++;
|
||||||
|
}
|
||||||
|
//remove obsolete last character from new_querystring
|
||||||
|
$new_querystring = substr($new_querystring,0, -1);
|
||||||
|
//add new_querystring to clause
|
||||||
|
$clause .= ' AND h.type IN ('.$new_querystring.')';
|
||||||
|
//remove original key/value from array
|
||||||
|
unset($criterias[$v[0]]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$clause .= ' AND h.type = :'.$v[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
elseif ($v[0] == 'created') {
|
elseif ($v[0] == 'created') {
|
||||||
//build up search
|
//build up search
|
||||||
|
|||||||
@@ -24,7 +24,11 @@ function checkSerial($serialinput){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//CHECK IF SN AND PAYLOAD IS SEND => FROM EXTERNAL APPS
|
//CHECK IF SN AND PAYLOAD IS SEND => FROM EXTERNAL APPS
|
||||||
if (isset($post_content['sn']) && isset($post_content['payload'])){
|
if (isset($post_content['sn']) && (isset($post_content['payload']) || isset($post_content['testdetails']))){
|
||||||
|
|
||||||
|
if (!isset($post_content['payload'])) {
|
||||||
|
$post_content['payload'] = $post_content['testdetails'];
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($post_content['sn']) && !empty($post_content['payload'])) {
|
if (!empty($post_content['sn']) && !empty($post_content['payload'])) {
|
||||||
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
@@ -148,6 +152,11 @@ if (isset($post_content['sn']) && isset($post_content['payload'])){
|
|||||||
$servicetoolHistoryUpdate = 1;
|
$servicetoolHistoryUpdate = 1;
|
||||||
$sn_service = $post_content['sn_service'];
|
$sn_service = $post_content['sn_service'];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'customer': //update from Portal
|
||||||
|
$historytype = 'Customer';
|
||||||
|
$equipmentUpdate = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
$historytype = 'Other';
|
$historytype = 'Other';
|
||||||
|
|||||||
@@ -1755,7 +1755,7 @@ function warrantyStatus($input){
|
|||||||
if (!empty($input) && $input < $warrantydate){
|
if (!empty($input) && $input < $warrantydate){
|
||||||
$warranty_date_due = '<span class="status warranty_outdated">'.$warranty_outdated_text.'</span>';
|
$warranty_date_due = '<span class="status warranty_outdated">'.$warranty_outdated_text.'</span>';
|
||||||
} else {
|
} else {
|
||||||
$warranty_date_due ='<span class="status warranty">'.$warranty_recent.' ('.date('Y-m-d', strtotime($input. ' + 365 days')).')</span>';
|
$warranty_date_due ='<span class="">'.$warranty_recent.' ('.date('Y-m-d', strtotime($input. ' + 365 days')).')</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $warranty_date_due;
|
return $warranty_date_due;
|
||||||
@@ -1788,7 +1788,7 @@ function serviceStatus($input){
|
|||||||
if (!empty($input) && $input < $servicedate){
|
if (!empty($input) && $input < $servicedate){
|
||||||
$service_date_due = '<span class="status service_renewal">'.$service_renewal_text.'</span>';
|
$service_date_due = '<span class="status service_renewal">'.$service_renewal_text.'</span>';
|
||||||
} else {
|
} else {
|
||||||
$service_date_due ='<span class="status service">'.$service_recent.' ('.date('Y-m-d', strtotime($input. ' + 365 days')).')</span>';
|
$service_date_due ='<span class="">'.$service_recent.' ('.date('Y-m-d', strtotime($input. ' + 365 days')).')</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $service_date_due;
|
return $service_date_due;
|
||||||
@@ -1815,7 +1815,7 @@ function availableFirmware($sw_version,$sw_version_latest){
|
|||||||
|
|
||||||
switch ($sw_version_latest) {
|
switch ($sw_version_latest) {
|
||||||
case 1:
|
case 1:
|
||||||
$message = '<span class="status firmware_recent">'.$firmware_recent_text.'</span>';
|
$message = '<span class="">'.$firmware_recent_text.'</span>';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
@@ -1823,7 +1823,7 @@ function availableFirmware($sw_version,$sw_version_latest){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
$message ='<span class="status">✓</span>';
|
$message ='<span class="">✓</span>';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ async function connectDeviceForSoftware() {
|
|||||||
readBar.innerHTML = '';
|
readBar.innerHTML = '';
|
||||||
serialResultsDiv.innerHTML = '';
|
serialResultsDiv.innerHTML = '';
|
||||||
document.getElementById("softwareCheckStatus").style.display = "none";
|
document.getElementById("softwareCheckStatus").style.display = "none";
|
||||||
document.getElementById("softwareOptions").style.display = "none";
|
document.getElementById("softwareOptionsContainer").style.display = "none";
|
||||||
document.getElementById("noUpdatesMessage").style.display = "none";
|
document.getElementById("noUpdatesMessage").style.display = "none";
|
||||||
document.getElementById("uploadSection").style.display = "none";
|
document.getElementById("uploadSection").style.display = "none";
|
||||||
|
|
||||||
@@ -443,12 +443,15 @@ async function fetchSoftwareOptions() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display options in table
|
// Display options in table (blurred initially)
|
||||||
displaySoftwareOptions(options);
|
displaySoftwareOptions(options);
|
||||||
document.getElementById("softwareCheckStatus").style.display = "none";
|
document.getElementById("softwareCheckStatus").style.display = "none";
|
||||||
document.getElementById("softwareOptions").style.display = "block";
|
document.getElementById("softwareOptionsContainer").style.display = "block";
|
||||||
progressBar("100", "Software options loaded", "#04AA6D");
|
progressBar("100", "Software options loaded", "#04AA6D");
|
||||||
|
|
||||||
|
// Show user info modal immediately
|
||||||
|
showUserInfoModal();
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await logCommunication(`Software options error: ${error.message}`, 'error');
|
await logCommunication(`Software options error: ${error.message}`, 'error');
|
||||||
progressBar("0", "Error loading options: " + error.message, "#ff6666");
|
progressBar("0", "Error loading options: " + error.message, "#ff6666");
|
||||||
@@ -642,18 +645,189 @@ function displaySoftwareOptions(options) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showUserInfoModal() {
|
||||||
|
// Create modal overlay
|
||||||
|
const modal = document.createElement("div");
|
||||||
|
modal.id = "userInfoModal";
|
||||||
|
modal.style.cssText = `
|
||||||
|
display: flex;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0,0,0,0.7);
|
||||||
|
z-index: 2000;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
`;
|
||||||
|
|
||||||
|
// Create modal content
|
||||||
|
const modalContent = document.createElement("div");
|
||||||
|
modalContent.style.cssText = `
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
max-width: 500px;
|
||||||
|
width: 90%;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
margin: 20px;
|
||||||
|
box-shadow: 0 20px 60px rgba(0,0,0,0.4);
|
||||||
|
`;
|
||||||
|
|
||||||
|
modalContent.innerHTML = `
|
||||||
|
<div style="padding: 30px; border-bottom: 2px solid #e0e0e0;">
|
||||||
|
<h3 style="margin: 0; color: #333; font-size: 24px;">${typeof TRANS_USER_INFO_REQUIRED !== 'undefined' ? TRANS_USER_INFO_REQUIRED : 'User Information Required'}</h3>
|
||||||
|
<p style="margin: 10px 0 0 0; color: #666; font-size: 14px;">${typeof TRANS_USER_INFO_DESCRIPTION !== 'undefined' ? TRANS_USER_INFO_DESCRIPTION : 'Please provide your information to continue with software updates'}</p>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 30px;">
|
||||||
|
<form id="userInfoForm" style="display: flex; flex-direction: column; gap: 15px;">
|
||||||
|
<div>
|
||||||
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 600;">${typeof TRANS_NAME !== 'undefined' ? TRANS_NAME : 'Name'} *</label>
|
||||||
|
<input type="text" name="name" id="userInfoName" required style="width: 100%; padding: 12px; border: 2px solid #ddd; border-radius: 6px; font-size: 14px; transition: border 0.3s;" onfocus="this.style.borderColor='#04AA6D'" onblur="this.style.borderColor='#ddd'">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 600;">${typeof TRANS_EMAIL !== 'undefined' ? TRANS_EMAIL : 'Email'} *</label>
|
||||||
|
<input type="email" name="email" id="userInfoEmail" required style="width: 100%; padding: 12px; border: 2px solid #ddd; border-radius: 6px; font-size: 14px; transition: border 0.3s;" onfocus="this.style.borderColor='#04AA6D'" onblur="this.style.borderColor='#ddd'">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 600;">${typeof TRANS_ADDRESS !== 'undefined' ? TRANS_ADDRESS : 'Address'} *</label>
|
||||||
|
<input type="text" name="address" id="userInfoAddress" required placeholder="Street and number" style="width: 100%; padding: 12px; border: 2px solid #ddd; border-radius: 6px; font-size: 14px; margin-bottom: 10px; transition: border 0.3s;" onfocus="this.style.borderColor='#04AA6D'" onblur="this.style.borderColor='#ddd'">
|
||||||
|
<input type="text" name="city" id="userInfoCity" required placeholder="${typeof TRANS_CITY !== 'undefined' ? TRANS_CITY : 'City'}" style="width: 100%; padding: 12px; border: 2px solid #ddd; border-radius: 6px; font-size: 14px; margin-bottom: 10px; transition: border 0.3s;" onfocus="this.style.borderColor='#04AA6D'" onblur="this.style.borderColor='#ddd'">
|
||||||
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
|
||||||
|
<input type="text" name="postal" id="userInfoPostal" required placeholder="${typeof TRANS_POSTAL !== 'undefined' ? TRANS_POSTAL : 'Postal code'}" style="padding: 12px; border: 2px solid #ddd; border-radius: 6px; font-size: 14px; transition: border 0.3s;" onfocus="this.style.borderColor='#04AA6D'" onblur="this.style.borderColor='#ddd'">
|
||||||
|
<input type="text" name="country" id="userInfoCountry" required placeholder="${typeof TRANS_COUNTRY !== 'undefined' ? TRANS_COUNTRY : 'Country'}" style="padding: 12px; border: 2px solid #ddd; border-radius: 6px; font-size: 14px; transition: border 0.3s;" onfocus="this.style.borderColor='#04AA6D'" onblur="this.style.borderColor='#ddd'">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin-top: 10px; display: flex; gap: 10px;">
|
||||||
|
<button type="button" onclick="location.reload()" style="padding: 15px 20px; background: #6c757d; color: white; border: none; border-radius: 8px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.3s;" onmouseover="this.style.background='#5a6268'" onmouseout="this.style.background='#6c757d'">
|
||||||
|
<i class="fa-solid fa-times"></i>
|
||||||
|
</button>
|
||||||
|
<button type="submit" style="flex: 1; padding: 15px; background: linear-gradient(135deg, #04AA6D 0%, #038f5a 100%); color: white; border: none; border-radius: 8px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.3s;" onmouseover="this.style.transform='translateY(-2px)'; this.style.boxShadow='0 6px 16px rgba(4,170,109,0.3)'" onmouseout="this.style.transform='translateY(0)'; this.style.boxShadow='none'">
|
||||||
|
${typeof TRANS_CONTINUE !== 'undefined' ? TRANS_CONTINUE : 'Continue'}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
modal.appendChild(modalContent);
|
||||||
|
document.body.appendChild(modal);
|
||||||
|
|
||||||
|
// Prefill form with customer data from sessionStorage if available
|
||||||
|
const savedCustomerData = sessionStorage.getItem('customerData');
|
||||||
|
if (savedCustomerData) {
|
||||||
|
try {
|
||||||
|
const customerData = JSON.parse(savedCustomerData);
|
||||||
|
if (customerData.name) document.getElementById("userInfoName").value = customerData.name;
|
||||||
|
if (customerData.email) document.getElementById("userInfoEmail").value = customerData.email;
|
||||||
|
if (customerData.address) document.getElementById("userInfoAddress").value = customerData.address;
|
||||||
|
if (customerData.city) document.getElementById("userInfoCity").value = customerData.city;
|
||||||
|
if (customerData.postal) document.getElementById("userInfoPostal").value = customerData.postal;
|
||||||
|
if (customerData.country) document.getElementById("userInfoCountry").value = customerData.country;
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('Error parsing saved customer data:', e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle form submission
|
||||||
|
document.getElementById("userInfoForm").onsubmit = async (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
const formData = new FormData(e.target);
|
||||||
|
const customerData = {
|
||||||
|
name: formData.get("name"),
|
||||||
|
email: formData.get("email"),
|
||||||
|
address: formData.get("address"),
|
||||||
|
city: formData.get("city"),
|
||||||
|
postal: formData.get("postal"),
|
||||||
|
country: formData.get("country")
|
||||||
|
};
|
||||||
|
|
||||||
|
// Save customer data to sessionStorage
|
||||||
|
sessionStorage.setItem('customerData', JSON.stringify(customerData));
|
||||||
|
|
||||||
|
// Send to API
|
||||||
|
await sendUserInfoToAPI(customerData);
|
||||||
|
|
||||||
|
// Close modal
|
||||||
|
document.body.removeChild(modal);
|
||||||
|
|
||||||
|
// Reveal software options by removing blur
|
||||||
|
const softwareOptions = document.getElementById("softwareOptions");
|
||||||
|
if (softwareOptions) {
|
||||||
|
softwareOptions.style.filter = "none";
|
||||||
|
softwareOptions.style.opacity = "1";
|
||||||
|
softwareOptions.style.pointerEvents = "auto";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
async function sendUserInfoToAPI(customerData) {
|
||||||
|
try {
|
||||||
|
const serviceToken = document.getElementById("servicetoken")?.innerHTML || '';
|
||||||
|
const url = link + '/v2/history';
|
||||||
|
const bearer = 'Bearer ' + serviceToken;
|
||||||
|
|
||||||
|
const historyData = {
|
||||||
|
sn: deviceSerialNumber,
|
||||||
|
type: 'customer',
|
||||||
|
sn_service: 'Portal',
|
||||||
|
payload: customerData
|
||||||
|
};
|
||||||
|
|
||||||
|
await logCommunication(`Sending user info to API: ${JSON.stringify(historyData)}`, 'sent');
|
||||||
|
|
||||||
|
const response = await fetch(url, {
|
||||||
|
method: 'POST',
|
||||||
|
withCredentials: true,
|
||||||
|
credentials: 'include',
|
||||||
|
headers: {
|
||||||
|
'Authorization': bearer,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify(historyData)
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
console.warn('Failed to send user info:', response.status);
|
||||||
|
await logCommunication(`Failed to send user info: ${response.status}`, 'error');
|
||||||
|
} else {
|
||||||
|
const result = await response.json();
|
||||||
|
console.log("User info sent successfully:", result);
|
||||||
|
await logCommunication(`User info sent successfully: ${JSON.stringify(result)}`, 'received');
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('Error sending user info:', error);
|
||||||
|
await logCommunication(`Error sending user info: ${error.message}`, 'error');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function selectUpgrade(option) {
|
async function selectUpgrade(option) {
|
||||||
const price = parseFloat(option.price || 0);
|
const price = parseFloat(option.price || 0);
|
||||||
const isFree = price === 0;
|
const isFree = price === 0;
|
||||||
|
|
||||||
// If paid upgrade, show payment modal first
|
// If paid upgrade, show payment modal with pre-filled data
|
||||||
if (!isFree) {
|
if (!isFree) {
|
||||||
showPaymentModal(option);
|
showPaymentModal(option);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Free upgrade - show confirmation modal first
|
// Free upgrade - proceed directly with saved customer data
|
||||||
showFreeInstallModal(option);
|
const savedCustomerData = sessionStorage.getItem('customerData');
|
||||||
|
if (savedCustomerData) {
|
||||||
|
try {
|
||||||
|
const customerData = JSON.parse(savedCustomerData);
|
||||||
|
await downloadAndInstallSoftware(option, customerData);
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('Error parsing saved customer data:', e);
|
||||||
|
showFreeInstallModal(option);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
showFreeInstallModal(option);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function showFreeInstallModal(option) {
|
function showFreeInstallModal(option) {
|
||||||
@@ -699,22 +873,22 @@ function showFreeInstallModal(option) {
|
|||||||
|
|
||||||
<form id="freeInstallForm" style="display: flex; flex-direction: column; gap: 15px;">
|
<form id="freeInstallForm" style="display: flex; flex-direction: column; gap: 15px;">
|
||||||
<div>
|
<div>
|
||||||
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">Name *</label>
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">${typeof TRANS_NAME !== 'undefined' ? TRANS_NAME : 'Name'} *</label>
|
||||||
<input type="text" name="name" id="freeInstallName" required style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
<input type="text" name="name" id="freeInstallName" required style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">Email *</label>
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">${typeof TRANS_EMAIL !== 'undefined' ? TRANS_EMAIL : 'Email'} *</label>
|
||||||
<input type="email" name="email" id="freeInstallEmail" required style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
<input type="email" name="email" id="freeInstallEmail" required style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">Address *</label>
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">${typeof TRANS_ADDRESS !== 'undefined' ? TRANS_ADDRESS : 'Address'} *</label>
|
||||||
<input type="text" name="address" id="freeInstallAddress" required placeholder="Street and number" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; margin-bottom: 10px;">
|
<input type="text" name="address" id="freeInstallAddress" required placeholder="Street and number" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; margin-bottom: 10px;">
|
||||||
<input type="text" name="city" id="freeInstallCity" required placeholder="City" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; margin-bottom: 10px;">
|
<input type="text" name="city" id="freeInstallCity" required placeholder="${typeof TRANS_CITY !== 'undefined' ? TRANS_CITY : 'City'}" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; margin-bottom: 10px;">
|
||||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
|
||||||
<input type="text" name="postal" id="freeInstallPostal" required placeholder="Postal code" style="padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
<input type="text" name="postal" id="freeInstallPostal" required placeholder="${typeof TRANS_POSTAL !== 'undefined' ? TRANS_POSTAL : 'Postal code'}" style="padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
||||||
<input type="text" name="country" id="freeInstallCountry" required placeholder="Country" style="padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
<input type="text" name="country" id="freeInstallCountry" required placeholder="${typeof TRANS_COUNTRY !== 'undefined' ? TRANS_COUNTRY : 'Country'}" style="padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -837,22 +1011,22 @@ function showPaymentModal(option) {
|
|||||||
|
|
||||||
<form id="paymentForm" style="display: flex; flex-direction: column; gap: 15px;">
|
<form id="paymentForm" style="display: flex; flex-direction: column; gap: 15px;">
|
||||||
<div>
|
<div>
|
||||||
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">Name *</label>
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">${typeof TRANS_NAME !== 'undefined' ? TRANS_NAME : 'Name'} *</label>
|
||||||
<input type="text" name="name" id="paymentName" required style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
<input type="text" name="name" id="paymentName" required style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">Email *</label>
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">${typeof TRANS_EMAIL !== 'undefined' ? TRANS_EMAIL : 'Email'} *</label>
|
||||||
<input type="email" name="email" id="paymentEmail" required style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
<input type="email" name="email" id="paymentEmail" required style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">Address *</label>
|
<label style="display: block; margin-bottom: 5px; color: #333; font-weight: 500;">${typeof TRANS_ADDRESS !== 'undefined' ? TRANS_ADDRESS : 'Address'} *</label>
|
||||||
<input type="text" name="address" id="paymentAddress" required placeholder="Street and number" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; margin-bottom: 10px;">
|
<input type="text" name="address" id="paymentAddress" required placeholder="Street and number" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; margin-bottom: 10px;">
|
||||||
<input type="text" name="city" id="paymentCity" required placeholder="City" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; margin-bottom: 10px;">
|
<input type="text" name="city" id="paymentCity" required placeholder="${typeof TRANS_CITY !== 'undefined' ? TRANS_CITY : 'City'}" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; margin-bottom: 10px;">
|
||||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
|
||||||
<input type="text" name="postal" id="paymentPostal" required placeholder="Postal code" style="padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
<input type="text" name="postal" id="paymentPostal" required placeholder="${typeof TRANS_POSTAL !== 'undefined' ? TRANS_POSTAL : 'Postal code'}" style="padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
||||||
<input type="text" name="country" id="paymentCountry" required placeholder="Country" style="padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
<input type="text" name="country" id="paymentCountry" required placeholder="${typeof TRANS_COUNTRY !== 'undefined' ? TRANS_COUNTRY : 'Country'}" style="padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ $view .= '<div class="content-block">
|
|||||||
<tbody>';
|
<tbody>';
|
||||||
//Check for assigned tools
|
//Check for assigned tools
|
||||||
foreach ($servicetools as $tools){
|
foreach ($servicetools as $tools){
|
||||||
$view .= '<tr><td>'.(($view_equipment == 1)? '<a href="index.php?page=equipment&serialnumber='.$tools.'" class="btn2">'.$tools.'</a>':$tools).'</td><tr>';
|
$view .= '<tr><td>'.(($view_equipment == 1)? '<a href="index.php?page=equipment&serialnumber='.$tools.'" class="link-with-icon">'.$tools.' <i class="fa-solid fa-up-right-from-square"></i></a>':$tools).'</td><tr>';
|
||||||
}
|
}
|
||||||
$view .= '
|
$view .= '
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
258
equipment.php
258
equipment.php
@@ -60,6 +60,28 @@ $equipment_data = ioServer($api_url,'');
|
|||||||
//Decode Payload
|
//Decode Payload
|
||||||
if (!empty($equipment_data )){$equipment_data = decode_payload($equipment_data );}else{$equipment_data = null;}
|
if (!empty($equipment_data )){$equipment_data = decode_payload($equipment_data );}else{$equipment_data = null;}
|
||||||
|
|
||||||
|
//CALL TO API FOR CUSTOMER AND WARRANTY DATA (type = customer,Warranty in history)
|
||||||
|
$api_url = '/v2/history/equipmentID='.$responses->equipmentID.'&type=customer,Warranty';
|
||||||
|
$registration_data = ioServer($api_url,'');
|
||||||
|
|
||||||
|
//Decode Payload
|
||||||
|
if (!empty($registration_data)){$registration_data = json_decode($registration_data);}else{$registration_data = null;}
|
||||||
|
|
||||||
|
// Separate customer and warranty data
|
||||||
|
$latest_customer = null;
|
||||||
|
$latest_warranty = null;
|
||||||
|
|
||||||
|
if (is_array($registration_data) && count($registration_data) > 0) {
|
||||||
|
foreach ($registration_data as $record) {
|
||||||
|
if ($record->type === 'Customer' && $latest_customer === null) {
|
||||||
|
$latest_customer = $record;
|
||||||
|
}
|
||||||
|
if ($record->type === 'Warranty' && $latest_warranty === null) {
|
||||||
|
$latest_warranty = $record;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//GET PRODUCTS_SOFTWARE
|
//GET PRODUCTS_SOFTWARE
|
||||||
$api_url = '/v1/products_software/productrowid='.$responses->productrowid.'&status=1';
|
$api_url = '/v1/products_software/productrowid='.$responses->productrowid.'&status=1';
|
||||||
$products_software = ioServer($api_url,'');
|
$products_software = ioServer($api_url,'');
|
||||||
@@ -163,7 +185,7 @@ $view .= ' <div class="content-block order-details">
|
|||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$view_asset_data_ranking.'</h3>
|
<h3>'.$view_asset_data_ranking.'</h3>
|
||||||
<p><span class="status '.(($total_score >= 85) ?'enabled' : (($total_score <= 50)? 'disabled' : 'id2')).'">'.$total_score.'</span></p>
|
<p><span class="'.(($total_score >= 85) ?'' : (($total_score <= 50)? 'status disabled' : 'id2')).'">'.$total_score.'</span></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$equipment_label2.'</h3>
|
<h3>'.$equipment_label2.'</h3>
|
||||||
@@ -175,11 +197,11 @@ $view .= ' <div class="content-block order-details">
|
|||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_code.'</h3>
|
<h3>'.$product_code.'</h3>
|
||||||
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$responses->productrowid.'" class="btn2">'.$responses->productcode.'</a>':$responses->productcode).'</p>
|
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$responses->productrowid.'" class="link-with-icon">'.$responses->productcode.' <i class="fa-solid fa-up-right-from-square"></i></a>':$responses->productcode).'</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_name.'</h3>
|
<h3>'.$product_name.'</h3>
|
||||||
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$responses->productrowid.'" class="btn2">'.(${$responses->productname} ?? $responses->productname).'</a>':(${$responses->productname} ?? $responses->productname)).'</p>
|
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$responses->productrowid.'" class="link-with-icon">'.(${$responses->productname} ?? $responses->productname).' <i class="fa-solid fa-up-right-from-square"></i></a>':(${$responses->productname} ?? $responses->productname)).'</p>
|
||||||
</div>';
|
</div>';
|
||||||
if (!empty($media_responses['full_path'])){
|
if (!empty($media_responses['full_path'])){
|
||||||
$view .='
|
$view .='
|
||||||
@@ -217,6 +239,9 @@ $view .='<div class="content-block order-details">
|
|||||||
<h3>'.$general_section.'</h3>
|
<h3>'.$general_section.'</h3>
|
||||||
<p>'.$section.'</p>
|
<p>'.$section.'</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="order-detail">
|
||||||
|
<h3>'.(($latest_customer || $latest_warranty) ? '<a href="#" onclick="showCustomerModal(); return false;" class="link-with-icon">'.($register_title ?? 'Registration').' <i class="fa-solid fa-up-right-from-square"></i></a>' : '').'</h3>
|
||||||
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
$view .= '</div>';
|
$view .= '</div>';
|
||||||
@@ -368,8 +393,8 @@ $view .= '<div class="content-block">
|
|||||||
|
|
||||||
$view .= '<tr onclick="window.location.href=\'index.php?page=equipment_data&equipmentID='.$responses->equipmentID.'&rowID='.$data->rowID.'\'" style="cursor: pointer;">
|
$view .= '<tr onclick="window.location.href=\'index.php?page=equipment_data&equipmentID='.$responses->equipmentID.'&rowID='.$data->rowID.'\'" style="cursor: pointer;">
|
||||||
<td>'.$data->rowID.'</td>
|
<td>'.$data->rowID.'</td>
|
||||||
<td>'.(($view_history == 1)? '<a href="index.php?page=history&equipmentID='.$responses->equipmentID.'&historyid='.$data->historyid.'" class="btn2">'.$data->historyid.'</a>':$data->historyid).'</td>
|
<td>'.(($view_history == 1)? '<a href="index.php?page=history&equipmentID='.$responses->equipmentID.'&historyid='.$data->historyid.'" class="link-with-icon">'.$data->historyid.' <i class="fa-solid fa-up-right-from-square"></i></a>':$data->historyid).'</td>
|
||||||
<td><span class="status '.(($data->healthindex >= 85) ?'enabled' : (($data->healthindex <= 50)? 'disabled' : 'id2')).'.">'.$data->healthindex.'</span></td>
|
<td><span class=" '.(($data->healthindex >= 85) ?'' : (($data->healthindex <= 50)? 'status disabled' : 'id2')).'.">'.$data->healthindex.'</span></td>
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
}
|
||||||
$view .= '
|
$view .= '
|
||||||
@@ -448,7 +473,228 @@ if ($update_allowed === 1){
|
|||||||
$view .='</div>';
|
$view .='</div>';
|
||||||
|
|
||||||
//OUTPUT
|
//OUTPUT
|
||||||
echo $view;
|
echo $view;
|
||||||
|
|
||||||
|
// Add customer data modal if data exists
|
||||||
|
if ($latest_customer || $latest_warranty) {
|
||||||
|
$customer_payload = $latest_customer ? json_decode($latest_customer->description, true) : null;
|
||||||
|
$warranty_payload = $latest_warranty ? json_decode($latest_warranty->description, true) : null;
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<div id="customerModal" class="reg-modal">
|
||||||
|
<div class="reg-modal-content">
|
||||||
|
<div class="reg-modal-header">
|
||||||
|
<h3>'.($register_title ?? 'Registration').'</h3>
|
||||||
|
<button onclick="closeCustomerModal()" class="reg-modal-close">×</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Tabs -->
|
||||||
|
<div class="reg-tabs">
|
||||||
|
<a href="#" class="reg-tab-link active" onclick="switchTab(event, \'warrantyTab\')">'.($warranty_status ?? 'Warranty').'</a>
|
||||||
|
<a href="#" class="reg-tab-link" onclick="switchTab(event, \'registrationTab\')">'.($register_title ?? 'Product Registration').'</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Warranty Tab Content -->
|
||||||
|
<div id="warrantyTab" class="reg-tab-content" style="display: block;">
|
||||||
|
<div class="reg-fields">';
|
||||||
|
|
||||||
|
if ($warranty_payload) {
|
||||||
|
// Check if warranty is still active
|
||||||
|
$warranty_end_date = $warranty_payload['end_date'] ?? null;
|
||||||
|
$warranty_display = '-';
|
||||||
|
$warranty_payload['createdby'] = $latest_warranty->createdby ?? '-';
|
||||||
|
|
||||||
|
if ($warranty_end_date) {
|
||||||
|
$end_date_obj = new DateTime(substr($warranty_end_date, 0, 10)); // Extract date part (YYYY-MM-DD)
|
||||||
|
$current_date_obj = new DateTime(date('Y-m-d'));
|
||||||
|
|
||||||
|
if ($end_date_obj >= $current_date_obj) {
|
||||||
|
// Warranty is still active
|
||||||
|
$warranty_display = ($warranty_recent ?? 'Active') . ' - ' . htmlspecialchars($warranty_end_date);
|
||||||
|
} else {
|
||||||
|
// Warranty has expired
|
||||||
|
$warranty_display = ($warranty_outdated_text ?? 'Expired');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($warranty_status ?? 'Status').'</label>
|
||||||
|
<p>'.$warranty_display.'</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($account_name ?? 'Organization').'</label>
|
||||||
|
<p>'.htmlspecialchars($warranty_payload['organization'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($account_email ?? 'Email').'</label>
|
||||||
|
<p onclick="copyToClipboard(\''.htmlspecialchars($warranty_payload['createdby'] ?? '').'\')"; class="reg-field-email" title="Click to copy">
|
||||||
|
<i class="fa-solid fa-envelope"></i> '.htmlspecialchars($warranty_payload['createdby'] ?? '-').'
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>Phone</label>
|
||||||
|
<p>'.htmlspecialchars($warranty_payload['phone'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field-group">
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($shipping_city ?? 'City').'</label>
|
||||||
|
<p>'.htmlspecialchars($warranty_payload['city'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($shipping_country ?? 'Country').'</label>
|
||||||
|
<p>'.htmlspecialchars($warranty_payload['country'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($general_created ?? 'Registered').'</label>
|
||||||
|
<p>'.getRelativeTime($latest_warranty->created).'</p>
|
||||||
|
</div>';
|
||||||
|
} else {
|
||||||
|
echo '
|
||||||
|
<div class="reg-empty-state">
|
||||||
|
<i class="fa-solid fa-shield-halved"></i>
|
||||||
|
<p>No warranty information available</p>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Product Registration Tab Content -->
|
||||||
|
<div id="registrationTab" class="reg-tab-content" style="display: none;">
|
||||||
|
<div class="reg-fields">
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($account_name ?? 'Name').'</label>
|
||||||
|
<p>'.htmlspecialchars($customer_payload['name'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($account_email ?? 'Email').'</label>
|
||||||
|
<p onclick="copyToClipboard(\''.htmlspecialchars($customer_payload['email'] ?? '').'\')"; class="reg-field-email" title="Click to copy">
|
||||||
|
<i class="fa-solid fa-envelope"></i> '.htmlspecialchars($customer_payload['email'] ?? '-').'
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($shipping_address ?? 'Address').'</label>
|
||||||
|
<p>'.htmlspecialchars($customer_payload['address'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field-group">
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($shipping_city ?? 'City').'</label>
|
||||||
|
<p>'.htmlspecialchars($customer_payload['city'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($shipping_zip ?? 'Postal Code').'</label>
|
||||||
|
<p>'.htmlspecialchars($customer_payload['postal'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($shipping_country ?? 'Country').'</label>
|
||||||
|
<p>'.htmlspecialchars($customer_payload['country'] ?? '-').'</p>
|
||||||
|
</div>
|
||||||
|
<div class="reg-field">
|
||||||
|
<label>'.($general_created ?? 'Registered').'</label>
|
||||||
|
<p>'.getRelativeTime($latest_customer->created).'</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function switchTab(event, tabId) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// Hide all tab contents
|
||||||
|
const tabContents = document.querySelectorAll(".reg-tab-content");
|
||||||
|
tabContents.forEach(function(content) {
|
||||||
|
content.style.display = "none";
|
||||||
|
});
|
||||||
|
|
||||||
|
// Remove active class from all tab links
|
||||||
|
const tabLinks = document.querySelectorAll(".reg-tab-link");
|
||||||
|
tabLinks.forEach(function(link) {
|
||||||
|
link.classList.remove("active");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Show selected tab content
|
||||||
|
document.getElementById(tabId).style.display = "block";
|
||||||
|
|
||||||
|
// Add active class to clicked tab
|
||||||
|
event.currentTarget.classList.add("active");
|
||||||
|
}
|
||||||
|
|
||||||
|
function showCustomerModal() {
|
||||||
|
const modal = document.getElementById("customerModal");
|
||||||
|
if (modal) {
|
||||||
|
modal.style.display = "flex";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeCustomerModal() {
|
||||||
|
const modal = document.getElementById("customerModal");
|
||||||
|
if (modal) {
|
||||||
|
modal.style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function copyToClipboard(text) {
|
||||||
|
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||||
|
navigator.clipboard.writeText(text).then(function() {
|
||||||
|
// Show temporary success message
|
||||||
|
const originalText = event.target.innerHTML;
|
||||||
|
event.target.innerHTML = \'<i class="fa-solid fa-check"></i> Copied!\';
|
||||||
|
event.target.style.background = \'#d4edda\';
|
||||||
|
setTimeout(function() {
|
||||||
|
event.target.innerHTML = originalText;
|
||||||
|
event.target.style.background = \'#f8f9fa\';
|
||||||
|
}, 2000);
|
||||||
|
}).catch(function(err) {
|
||||||
|
console.error(\'Failed to copy: \', err);
|
||||||
|
fallbackCopyToClipboard(text);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
fallbackCopyToClipboard(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function fallbackCopyToClipboard(text) {
|
||||||
|
const textArea = document.createElement("textarea");
|
||||||
|
textArea.value = text;
|
||||||
|
textArea.style.position = "fixed";
|
||||||
|
textArea.style.left = "-999999px";
|
||||||
|
document.body.appendChild(textArea);
|
||||||
|
textArea.focus();
|
||||||
|
textArea.select();
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.execCommand(\'copy\');
|
||||||
|
const originalText = event.target.innerHTML;
|
||||||
|
event.target.innerHTML = \'<i class="fa-solid fa-check"></i> Copied!\';
|
||||||
|
event.target.style.background = \'#d4edda\';
|
||||||
|
setTimeout(function() {
|
||||||
|
event.target.innerHTML = originalText;
|
||||||
|
event.target.style.background = \'#f8f9fa\';
|
||||||
|
}, 2000);
|
||||||
|
} catch (err) {
|
||||||
|
console.error(\'Fallback copy failed: \', err);
|
||||||
|
alert(\'Failed to copy email\');
|
||||||
|
}
|
||||||
|
|
||||||
|
document.body.removeChild(textArea);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close modal on background click
|
||||||
|
document.addEventListener("click", function(e) {
|
||||||
|
const modal = document.getElementById("customerModal");
|
||||||
|
if (modal && e.target === modal) {
|
||||||
|
closeCustomerModal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
';
|
||||||
|
}
|
||||||
|
|
||||||
template_footer()
|
template_footer()
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ echo'
|
|||||||
<div class="login-container">
|
<div class="login-container">
|
||||||
<div class="login-form">
|
<div class="login-form">
|
||||||
<div class="logo"></div>
|
<div class="logo"></div>
|
||||||
<a href="#" class="register-link"></a>';
|
<a href="register.php" class="register-link">'.strtolower($account_create ?? 'create account').'</a>';
|
||||||
|
|
||||||
if (maintenance_mode)
|
if (maintenance_mode)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -183,11 +183,11 @@ $view .= ' <div class="content-block order-details">
|
|||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_category.'</h3>
|
<h3>'.$product_category.'</h3>
|
||||||
<p><span class="status id'.$responses->product_category.'">'.$$product_category_text.'</span></p>
|
<p><span class="">'.$$product_category_text.'</span></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_parttype.'</h3>
|
<h3>'.$product_parttype.'</h3>
|
||||||
<p><span class="status id'.$responses->parttype.'">'.$$parttype_text.'</span></p>
|
<p><span class="">'.$$parttype_text.'</span></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_code.'</h3>
|
<h3>'.$product_code.'</h3>
|
||||||
@@ -268,7 +268,7 @@ $view .= '<div class="content-block">
|
|||||||
|
|
||||||
$view .= '<tr onclick="window.location.href=\'index.php?page=products_versions&productrowid='.$_GET['rowID'].'&rowID='.$version->rowID.'\'" style="cursor: pointer;">
|
$view .= '<tr onclick="window.location.href=\'index.php?page=products_versions&productrowid='.$_GET['rowID'].'&rowID='.$version->rowID.'\'" style="cursor: pointer;">
|
||||||
<td>'.$version->rowID.'</td>
|
<td>'.$version->rowID.'</td>
|
||||||
<td>'.(($version->status == 1)? '<span class="status enabled">'.$prod_status_1:'<span class="status">'.$prod_status_0).'</td>
|
<td>'.(($version->status == 1)? $prod_status_1:'<span class="status">'.$prod_status_0).'</td>
|
||||||
<td>'.$version->version.'</td>
|
<td>'.$version->version.'</td>
|
||||||
<td>'.(!empty($version->config) ? ($general_yes ?? 'Y') : ($general_no ?? 'N')).'</td>
|
<td>'.(!empty($version->config) ? ($general_yes ?? 'Y') : ($general_no ?? 'N')).'</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|||||||
@@ -59,12 +59,11 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
|||||||
if ($uploaded_file != '' || !empty($uploaded_file)) {
|
if ($uploaded_file != '' || !empty($uploaded_file)) {
|
||||||
$extension = strtolower(pathinfo($uploaded_file, PATHINFO_EXTENSION));
|
$extension = strtolower(pathinfo($uploaded_file, PATHINFO_EXTENSION));
|
||||||
$target_dir = dirname(__FILE__) . "/firmware/";
|
$target_dir = dirname(__FILE__) . "/firmware/";
|
||||||
|
$firmware_name = pathinfo($_FILES["fileToUpload"]["name"], PATHINFO_FILENAME);
|
||||||
|
|
||||||
if ($extension == 'hex') {
|
if ($extension == 'hex') {
|
||||||
//READ FILE
|
//READ FILE
|
||||||
$contents = file_get_contents($_FILES["fileToUpload"]["tmp_name"]);
|
$contents = file_get_contents($_FILES["fileToUpload"]["tmp_name"]);
|
||||||
//firmwarename
|
|
||||||
$firmware_name = pathinfo($_FILES["fileToUpload"]["name"], PATHINFO_FILENAME);
|
|
||||||
$commitCode = compareCommitCodes($firmware_name, "");
|
$commitCode = compareCommitCodes($firmware_name, "");
|
||||||
|
|
||||||
//IF COMMITCODE IS EMPTY THEN RETURN HEX_FW
|
//IF COMMITCODE IS EMPTY THEN RETURN HEX_FW
|
||||||
@@ -76,6 +75,18 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
|||||||
file_put_contents($input_file, $contents);
|
file_put_contents($input_file, $contents);
|
||||||
$_POST['file_path'] = $firmware_name . '.HEX';
|
$_POST['file_path'] = $firmware_name . '.HEX';
|
||||||
$_POST['version'] = $fw_name;
|
$_POST['version'] = $fw_name;
|
||||||
|
} elseif ($extension == 'bin' || $extension == 'exe') {
|
||||||
|
//Extract commit code from filename
|
||||||
|
$commitCode = compareCommitCodes($firmware_name, "");
|
||||||
|
|
||||||
|
//IF COMMITCODE IS EMPTY THEN RETURN FIRMWARE_NAME
|
||||||
|
$fw_name = ($commitCode != '' || !empty($commitCode)) ? $commitCode : $firmware_name;
|
||||||
|
|
||||||
|
//Move uploaded file
|
||||||
|
$target_file = $target_dir . $uploaded_file;
|
||||||
|
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);
|
||||||
|
$_POST['file_path'] = $uploaded_file;
|
||||||
|
$_POST['version'] = $fw_name;
|
||||||
} else {
|
} else {
|
||||||
$target_file = $target_dir . $uploaded_file;
|
$target_file = $target_dir . $uploaded_file;
|
||||||
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);
|
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);
|
||||||
@@ -152,7 +163,7 @@ $view .= '<div class="content-block">
|
|||||||
<i class="fas fa-cloud-upload-alt"></i>
|
<i class="fas fa-cloud-upload-alt"></i>
|
||||||
<span id="uploadBtnText">Choose File</span>
|
<span id="uploadBtnText">Choose File</span>
|
||||||
</button>
|
</button>
|
||||||
<input type="file" name="fileToUpload" id="fileToUpload" style="display: none;" onchange="updateFields()" accept=".hex,.bin,.fw">
|
<input type="file" name="fileToUpload" id="fileToUpload" style="display: none;" onchange="updateFields()" accept=".hex,.bin,.fw,.exe">
|
||||||
<span class="file-upload-info" id="fileUploadInfo">No file selected</span>
|
<span class="file-upload-info" id="fileUploadInfo">No file selected</span>
|
||||||
</div>
|
</div>
|
||||||
<label for="file_path">File Path</label>
|
<label for="file_path">File Path</label>
|
||||||
|
|||||||
799
register.php
799
register.php
@@ -10,8 +10,13 @@ $lang = in_array($lang, $supportedLanguages) ? $lang : 'US';
|
|||||||
//INCLUDE THE TRANSLATION
|
//INCLUDE THE TRANSLATION
|
||||||
include_once './settings/translations/translations_'.$lang.'.php';
|
include_once './settings/translations/translations_'.$lang.'.php';
|
||||||
|
|
||||||
|
//=========================================
|
||||||
|
//GET DOMAIN FOR CORRECT STYLING AND SETTINGS
|
||||||
|
//=========================================
|
||||||
|
$domain = getDomainName($_SERVER['SERVER_NAME']);
|
||||||
|
$custom_css = (file_exists(dirname(__FILE__).'/custom/'.$domain.'/style/'.$domain.'_login.css') ? './custom/'.$domain.'/style/'.$domain.'_login.css' : './style/admin_login.css');
|
||||||
|
|
||||||
// Default input values
|
// Default input values
|
||||||
$display ='';
|
|
||||||
$register = [
|
$register = [
|
||||||
'sn' => '',
|
'sn' => '',
|
||||||
'organization' => '',
|
'organization' => '',
|
||||||
@@ -50,7 +55,6 @@ if (isset($_POST['register'])){
|
|||||||
$message_return = ioServer('/v1/application/register', $payload);
|
$message_return = ioServer('/v1/application/register', $payload);
|
||||||
if (!empty($message_return)){
|
if (!empty($message_return)){
|
||||||
$message_return = decode_payload($message_return);
|
$message_return = decode_payload($message_return);
|
||||||
$display = 'display:none;';
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$message_return = '400';
|
$message_return = '400';
|
||||||
@@ -58,264 +62,589 @@ if (isset($_POST['register'])){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo '
|
echo '
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width,minimum-scale=1">
|
<meta name="viewport" content="width=device-width,minimum-scale=1">
|
||||||
<title>'.$register_title.'</title>
|
<title>'.$register_title.'</title>
|
||||||
<link rel="icon" type="image/png" href="'.icon_image.'">
|
<link rel="shortcut icon" href="'.icon_image.'" type="image/x-icon" />
|
||||||
<style>
|
<style>
|
||||||
|
:root {
|
||||||
|
--color-white: #FFFFFF;
|
||||||
|
--color-light-green: #2FAC66;
|
||||||
|
--color-green: #005655c2;
|
||||||
|
--color-red: #a75151;
|
||||||
|
--text-color: #333333;
|
||||||
|
--error-background: #f3c3c3;
|
||||||
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
padding: 0;
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen, ubuntu, cantarell, "fira sans", "droid sans", "helvetica neue", Arial, sans-serif;
|
margin: 0;
|
||||||
font-size: 16px;
|
box-sizing: border-box;
|
||||||
}
|
font-family: "Open Sans", Helvetica, sans-serif;
|
||||||
|
accent-color: var(--color-green);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 100vh;
|
||||||
|
background-color: var(--color-white);
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 1200px;
|
||||||
|
height: calc(100vh - 40px);
|
||||||
|
background-color: var(--color-white);
|
||||||
|
border-radius: 16px;
|
||||||
|
box-shadow: 0 10px 25px rgba(0,0,0,0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
padding: 30px 40px 20px 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
background-image: url(/assets/images/TSS-logo3.png);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
opacity: inherit;
|
||||||
|
width: 85px;
|
||||||
|
height: 120px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
-webkit-filter: drop-shadow(5px 5px 5px #222);
|
||||||
|
filter: drop-shadow(5px 5px 5px #222);
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-form {
|
||||||
|
width: 45%;
|
||||||
|
padding: 40px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
position: relative;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-visual {
|
||||||
|
width: 55%;
|
||||||
|
position: relative;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 40px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header h1 {
|
||||||
|
font-size: 24px;
|
||||||
|
margin: 0;
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.back-to-login {
|
||||||
|
margin-left: auto;
|
||||||
|
padding: 8px 16px;
|
||||||
|
background-color: transparent;
|
||||||
|
color: var(--text-color);
|
||||||
|
text-decoration: none;
|
||||||
|
border: 1px solid var(--text-color);
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 14px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.back-to-login:hover {
|
||||||
|
background-color: var(--text-color);
|
||||||
|
color: var(--color-white);
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-registration {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-registration .step-section {
|
||||||
|
padding: 25px;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-registration {
|
||||||
|
width: 100%;
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-section {
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-section h4 {
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-registration .step-section h4 {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-section img {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 180px;
|
||||||
|
display: block;
|
||||||
|
margin: 15px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-label {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
color: #333;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-field {
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
background-color: #fff;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
padding: 10px 20px;
|
||||||
|
background-color: var(--color-light-green);
|
||||||
|
color: var(--color-white);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.3s ease;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:hover {
|
||||||
|
background-color: var(--color-green);
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
small {
|
||||||
position: relative;
|
color: #666;
|
||||||
min-height: 100%;
|
font-size: 12px;
|
||||||
color: #555555;
|
}
|
||||||
background-color: #FFFFFF;
|
|
||||||
margin: 0;
|
input[type="checkbox"] {
|
||||||
padding-bottom: 100px;
|
margin-right: 8px;
|
||||||
/* Same height as footer */
|
}
|
||||||
}
|
|
||||||
|
.sn-fields-container {
|
||||||
h1, h2, h3, h4, h5 {
|
margin-bottom: 15px;
|
||||||
color: #fff;
|
}
|
||||||
|
|
||||||
|
.sn-field-row {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sn-field-row input {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-remove {
|
||||||
|
padding: 10px 15px;
|
||||||
|
background-color: var(--color-red);
|
||||||
|
color: var(--color-white);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
min-width: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-remove:hover {
|
||||||
|
background-color: #8b3a3a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-add {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0,0,0,0.5);
|
||||||
|
z-index: 1000;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 20px;
|
||||||
|
box-shadow: 0 10px 40px rgba(0,0,0,0.3);
|
||||||
|
position: relative;
|
||||||
|
max-height: 80vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-header {
|
||||||
|
text-align: center;
|
||||||
|
padding: 30px 30px 20px 30px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-body {
|
||||||
|
padding: 25px 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-footer {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px 30px 30px 30px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close {
|
||||||
|
position: absolute;
|
||||||
|
top: 15px;
|
||||||
|
right: 20px;
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #999;
|
||||||
|
cursor: pointer;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close:hover {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success-icon {
|
||||||
|
font-size: 64px;
|
||||||
|
color: var(--color-light-green);
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal h2 {
|
||||||
|
color: var(--color-light-green);
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal h4 {
|
||||||
|
color: #333;
|
||||||
|
margin: 20px 0 10px 0;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal p {
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal small {
|
||||||
|
color: #666;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapsible-header {
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 10px 0;
|
||||||
|
user-select: none;
|
||||||
|
font-size:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapsible-header:hover {
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
margin: 0 -10px;
|
||||||
|
padding: 10px 10px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapsible-indicator {
|
||||||
|
color: var(--color-light-green);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapsible-indicator.active {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapsible-content {
|
||||||
|
max-height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: max-height 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.collapsible-content.active {
|
||||||
|
max-height: 500px;
|
||||||
|
padding-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.trademark {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 20px;
|
||||||
|
left: 20px;
|
||||||
|
color: var(--text-color);
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.language-selector {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 20px;
|
||||||
|
right: 20px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.language-selector select {
|
||||||
|
margin-left: 10px;
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
|
.login-container {
|
||||||
|
height: auto;
|
||||||
|
max-width: 1000px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-wrapper {
|
.content-wrapper {
|
||||||
width: 1050px;
|
flex-direction: column;
|
||||||
margin: 0 auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
.login-form, .login-visual {
|
||||||
position: relative;
|
width: 100%;
|
||||||
border-bottom: 1px solid #EEEEEE;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
header .content-wrapper {
|
.login-visual {
|
||||||
display: flex;
|
min-height: 400px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.trademark, .language-selector {
|
||||||
main .myaccount h1 {
|
position: static;
|
||||||
display: block;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #fff;
|
|
||||||
margin: 0;
|
|
||||||
padding: 40px 0;
|
|
||||||
font-size: 50px;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width: 100%;
|
margin: 20px 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
main .myaccount {
|
|
||||||
display: flex;
|
@media screen and (max-width: 480px) {
|
||||||
flex-flow: wrap;
|
.login-form, .login-visual {
|
||||||
|
padding: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
main .myaccount form {
|
.header h1 {
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
main .myaccount h2 {
|
|
||||||
width: 100%;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
padding: 30px 0 20px 0;
|
|
||||||
margin: 0 0 10px 0;
|
|
||||||
border-bottom: 1px solid #EEEEEE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main .myaccount .login-register {
|
.right-registration {
|
||||||
display: flex;
|
padding: 20px;
|
||||||
width: 100%;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-top: 40px;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
main .myaccount .login-register h1 {
|
</style>
|
||||||
text-align: left;
|
|
||||||
padding-top: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
main .myaccount .login-register .login {
|
|
||||||
width: 100%;
|
|
||||||
border-right: 1px solid #f6f6f6;
|
|
||||||
padding-right: 45px;
|
|
||||||
}
|
|
||||||
|
|
||||||
main .myaccount .login-register .register {
|
|
||||||
width: 100%;
|
|
||||||
padding-left: 45px;
|
|
||||||
}
|
|
||||||
|
|
||||||
main .myaccount .login-register .btn {
|
|
||||||
margin-top: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
text-decoration: none;
|
|
||||||
background: #03337a;
|
|
||||||
border: 0;
|
|
||||||
color: #FFFFFF;
|
|
||||||
padding: 11px 16px;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 500;
|
|
||||||
border-radius: 4px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background: #444954;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:disabled {
|
|
||||||
background: #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label {
|
|
||||||
display: block;
|
|
||||||
padding: 20px 0 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-field {
|
|
||||||
width: 100%;
|
|
||||||
padding: 10px;
|
|
||||||
border: 1px solid #d5d5d5;
|
|
||||||
border-radius: 4px;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
position: absolute;
|
|
||||||
padding: 20px 0;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #555555;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive CSS below */
|
|
||||||
@media screen and (max-width: 1050px) {
|
|
||||||
.rhide {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.content-wrapper {
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
main .checkout form, main .myaccount form {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
main .myaccount .login-register {
|
|
||||||
flex-flow: column;
|
|
||||||
}
|
|
||||||
main .myaccount .login-register .login {
|
|
||||||
border-right: 0;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
main .myaccount .login-register .register {
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
main .myaccount .menu {
|
|
||||||
width: 100%;
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
</head>
|
||||||
<body style="background-image:linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url(./assets/images/emergencyplug-auto-in-licht.jpg);
|
<body>
|
||||||
background-position: center center;background-size: 100% 100%; min-height: 100vh;background-repeat: no-repeat;">
|
';
|
||||||
<main style="color:#fff">
|
|
||||||
<div class="myaccount content-wrapper">
|
|
||||||
<h1>'.$register_title.'</h1>
|
|
||||||
<div class="login-register">
|
|
||||||
<div class="login">
|
|
||||||
<h4>'.$register_1_find.'</h4>
|
|
||||||
<img style="width: 80%;
|
|
||||||
margin-top: -75px;
|
|
||||||
margin-bottom: -40px;" src="./assets/images/EP_register.gif" alt="">
|
|
||||||
|
|
||||||
<h4>'.$register_2_enter.'</h4>
|
|
||||||
<form action="" method="post">
|
|
||||||
<label for="email" class="form-label">'.$register_2_label.' *</label>
|
|
||||||
<input type="text" name="sn[]" id="sn" placeholder="'.$register_2_placeholder.'" style="margin-bottom:10px;" minlength="8" maxlength="8" required="" class="form-field">
|
|
||||||
<button type="button" class="btn" onclick="addField(\'sn\',\'sn[]\');"> + </button><small>'.$register_2_add.'</small>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="register" style="'.$display.'">
|
|
||||||
<h4>'.$register_3_register.'</h4>
|
|
||||||
<label for="company" class="form-label">'.$register_3_name.' *</label>
|
|
||||||
<input type="text" name="organization" placeholder="'.$register_3_name.'" value="'.$register['organization'].'" required="" class="form-field">
|
|
||||||
<label for="email" class="form-label">'.$register_3_mail.' *</label>
|
|
||||||
<input type="email" name="email" id="email" placeholder="info@example.com" value="'.$register['email'].'" required="" class="form-field">
|
|
||||||
<label for="company" class="form-label">'.$register_3_phone.' *</label>
|
|
||||||
<input type="text" name="phone" placeholder="'.$register_3_phone.'" value="'.$register['phone'].'" required="" class="form-field">
|
|
||||||
<label for="city" class="form-label">'.$register_3_city.' *</label>
|
|
||||||
<input type="text" name="city" placeholder="'.$register_3_city.'" value="'.$register['city'].'" required="" class="form-field">
|
|
||||||
<label for="city" class="form-label">'.$register_3_country.' *</label>
|
|
||||||
<input type="text" name="country" placeholder="'.$register_3_country.'" value="'.$register['country'].'" required="" class="form-field" style="margin-bottom: 20px;">
|
|
||||||
<input type="checkbox" name="email_consent" checked required/>'.$register_3_email_consent.' <br>
|
|
||||||
<input type="checkbox" name="terms_consent" required/>'.$register_3_term_consent_1.' <a href="" target="blank">'.$register_3_term_consent_2.'</a> *<br>
|
|
||||||
|
|
||||||
<input name="register" type="submit" value="'.$register_button.'" class="btn">
|
|
||||||
</form>
|
|
||||||
<br>
|
|
||||||
<small>* '.$register_mandatory.'</small>
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
//IF MESSAGES ARE RETURN SHOW THEM
|
|
||||||
if (!empty($message_return)){
|
|
||||||
echo '
|
|
||||||
<div class="register">
|
|
||||||
<h4>'.$register_4_completed.'</h4>
|
|
||||||
|
|
||||||
<p>'.$register_message_4.' '.software_update_user.'/'.software_update_pw.'</b></p>
|
|
||||||
<h4>'.$register_5_details.'</h4>';
|
|
||||||
foreach($message_return as $return_message){
|
|
||||||
echo'
|
|
||||||
<p>'.$return_message.'"</p>
|
|
||||||
';
|
|
||||||
}
|
|
||||||
|
|
||||||
echo'
|
|
||||||
<h4>'.$register_6_return.'</h4>
|
|
||||||
<p> <a href="register.php" class="btn alt mar-right-2">'.$register_6_button.'</a><p>
|
|
||||||
';
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
//Register view
|
||||||
echo'
|
echo'
|
||||||
</div>
|
<div class="login-container">
|
||||||
</div>
|
<div class="top-header">
|
||||||
</main>
|
<div class="logo"></div>
|
||||||
|
<div class="header">
|
||||||
|
<h1>'.$register_title.'</h1>
|
||||||
|
</div>
|
||||||
|
<a href="index.php" class="back-to-login">'.($button_back_to_login ?? 'Back to login').'</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="login-form">
|
||||||
|
<div class="left-registration">
|
||||||
|
<div class="step-section">
|
||||||
|
<h4>'.$register_1_find.'</h4>
|
||||||
|
<img src="./assets/images/EP_register.gif" alt="Registration guide">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="step-section">
|
||||||
|
<h4>'.$register_2_enter.'</h4>
|
||||||
|
<form action="" method="post" id="regForm">
|
||||||
|
<label for="sn" class="form-label">'.$register_2_label.' *</label>
|
||||||
|
<div class="sn-fields-container" id="snFieldsContainer">
|
||||||
|
<div class="sn-field-row">
|
||||||
|
<input type="text" name="sn[]" id="sn" placeholder="'.$register_2_placeholder.'" minlength="8" maxlength="8" required="" class="form-field">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="btn btn-add" onclick="addField();">+</button><small> '.$register_2_add.'</small>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="login-visual">
|
||||||
|
<div class="right-registration">
|
||||||
|
<div class="step-section">
|
||||||
|
<h4>'.$register_3_register.'</h4>
|
||||||
|
<label for="organization" class="form-label">'.$register_3_name.' *</label>
|
||||||
|
<input type="text" name="organization" form="regForm" placeholder="'.$register_3_name.'" value="'.$register['organization'].'" required="" class="form-field">
|
||||||
|
|
||||||
|
<label for="email" class="form-label">'.$register_3_mail.' *</label>
|
||||||
|
<input type="email" name="email" form="regForm" id="email" placeholder="info@example.com" value="'.$register['email'].'" required="" class="form-field">
|
||||||
|
|
||||||
|
<label for="phone" class="form-label">'.$register_3_phone.' *</label>
|
||||||
|
<input type="text" name="phone" form="regForm" placeholder="'.$register_3_phone.'" value="'.$register['phone'].'" required="" class="form-field">
|
||||||
|
|
||||||
|
<label for="city" class="form-label">'.$register_3_city.' *</label>
|
||||||
|
<input type="text" name="city" form="regForm" placeholder="'.$register_3_city.'" value="'.$register['city'].'" required="" class="form-field">
|
||||||
|
|
||||||
|
<label for="country" class="form-label">'.$register_3_country.' *</label>
|
||||||
|
<input type="text" name="country" form="regForm" placeholder="'.$register_3_country.'" value="'.$register['country'].'" required="" class="form-field">
|
||||||
|
|
||||||
|
<div style="margin-bottom: 15px;">
|
||||||
|
<input type="checkbox" name="email_consent" form="regForm" checked required/>'.$register_3_email_consent.'<br>
|
||||||
|
<input type="checkbox" name="terms_consent" form="regForm" required/>'.$register_3_term_consent_1.' <a href="" target="blank">'.$register_3_term_consent_2.'</a> *
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input name="register" form="regForm" type="submit" value="'.$register_button.'" class="btn">
|
||||||
|
<br><br>
|
||||||
|
<small>* '.$register_mandatory.'</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
';
|
||||||
|
|
||||||
|
//IF MESSAGES ARE RETURN SHOW THEM IN MODAL
|
||||||
|
if (!empty($message_return)){
|
||||||
|
echo '
|
||||||
|
<div id="successModal" class="modal" style="display: flex;">
|
||||||
|
<div class="modal-content">
|
||||||
|
<span class="close" onclick="closeModal()">×</span>
|
||||||
|
<div class="modal-header">
|
||||||
|
<div class="success-icon">✓</div>
|
||||||
|
<h2>'.$register_4_completed.'</h2>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p>'.$register_message_4.' <strong>'.software_update_user.'/'.software_update_pw.'</strong></p>
|
||||||
|
<div class="collapsible-header" onclick="toggleDetails()">
|
||||||
|
'.$register_5_details.'
|
||||||
|
<span class="collapsible-indicator" id="detailsIndicator">▼</span>
|
||||||
|
</div>
|
||||||
|
<div class="collapsible-content" id="detailsContent">';
|
||||||
|
foreach($message_return as $return_message){
|
||||||
|
echo'<p>'.$return_message.'</p>';
|
||||||
|
}
|
||||||
|
echo'
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<a href="register.php" class="btn">'.$register_6_button.'</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo'
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
function addField(id, name) {
|
function closeModal() {
|
||||||
var x = document.createElement("INPUT");
|
document.getElementById("successModal").style.display = "none";
|
||||||
x.setAttribute("type", "text");
|
|
||||||
x.setAttribute("name", name);
|
|
||||||
x.setAttribute("value", "");
|
|
||||||
x.setAttribute("placeholder", "'.$register_2_placeholder.'");
|
|
||||||
x.setAttribute("class", "form-field");
|
|
||||||
x.setAttribute("style", "margin-bottom:10px;");
|
|
||||||
x.setAttribute("minlength", "8");
|
|
||||||
x.setAttribute("maxlength", "8");
|
|
||||||
x.setAttribute("required", "");
|
|
||||||
var td_new = document.getElementById(id);
|
|
||||||
td_new.parentNode.insertBefore(x, td_new.nextSibling);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toggleDetails() {
|
||||||
|
var content = document.getElementById("detailsContent");
|
||||||
|
var indicator = document.getElementById("detailsIndicator");
|
||||||
|
|
||||||
|
if (content.classList.contains("active")) {
|
||||||
|
content.classList.remove("active");
|
||||||
|
indicator.classList.remove("active");
|
||||||
|
} else {
|
||||||
|
content.classList.add("active");
|
||||||
|
indicator.classList.add("active");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addField() {
|
||||||
|
var container = document.getElementById("snFieldsContainer");
|
||||||
|
var fieldRow = document.createElement("div");
|
||||||
|
fieldRow.className = "sn-field-row";
|
||||||
|
|
||||||
|
var input = document.createElement("INPUT");
|
||||||
|
input.setAttribute("type", "text");
|
||||||
|
input.setAttribute("name", "sn[]");
|
||||||
|
input.setAttribute("value", "");
|
||||||
|
input.setAttribute("placeholder", "'.$register_2_placeholder.'");
|
||||||
|
input.setAttribute("class", "form-field");
|
||||||
|
input.setAttribute("minlength", "8");
|
||||||
|
input.setAttribute("maxlength", "8");
|
||||||
|
input.setAttribute("required", "");
|
||||||
|
|
||||||
|
var removeBtn = document.createElement("button");
|
||||||
|
removeBtn.setAttribute("type", "button");
|
||||||
|
removeBtn.setAttribute("class", "btn-remove");
|
||||||
|
removeBtn.innerHTML = "×";
|
||||||
|
removeBtn.onclick = function() { removeField(this); };
|
||||||
|
|
||||||
|
fieldRow.appendChild(input);
|
||||||
|
fieldRow.appendChild(removeBtn);
|
||||||
|
container.appendChild(fieldRow);
|
||||||
|
|
||||||
|
// Focus on the new input
|
||||||
|
input.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeField(btn) {
|
||||||
|
var container = document.getElementById("snFieldsContainer");
|
||||||
|
// Only allow removal if there is more than one field
|
||||||
|
if (container.children.length > 1) {
|
||||||
|
btn.parentElement.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById(\'language-selector\').addEventListener(\'change\', function() {
|
||||||
|
if (this.value) {
|
||||||
|
window.location.href = `register.php?language=${this.value}`;
|
||||||
|
}
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
';
|
';
|
||||||
|
|||||||
4
rma.php
4
rma.php
@@ -103,11 +103,11 @@ $view .= ' <div class="content-block order-details">
|
|||||||
|
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_code.'</h3>
|
<h3>'.$product_code.'</h3>
|
||||||
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$rma_header['productrowid'].'" class="btn2">'.$rma_header['productcode'].'</a>':'<input type="text" name="header[productcode]" value="'.$rma_header['productcode'].'">').'</p>
|
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$rma_header['productrowid'].'" class="link-with-icon">'.$rma_header['productcode'].' <i class="fa-solid fa-up-right-from-square"></i></a>':'<input type="text" name="header[productcode]" value="'.$rma_header['productcode'].'">').'</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_name.'</h3>
|
<h3>'.$product_name.'</h3>
|
||||||
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$rma_header['productrowid'].'" class="btn2">'.(${$rma_header['productname']} ?? $rma_header['productname']).'</a>':'<input type="text" name="header[productname]" value="'.(${$rma_header['productname']} ?? $rma_header['productname']).'">').'</p>
|
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$rma_header['productrowid'].'" class="link-with-icon">'.(${$rma_header['productname']} ?? $rma_header['productname']).' <i class="fa-solid fa-up-right-from-square"></i></a>':'<input type="text" name="header[productname]" value="'.(${$rma_header['productname']} ?? $rma_header['productname']).'">').'</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$equipment_label10.'</h3>
|
<h3>'.$equipment_label10.'</h3>
|
||||||
|
|||||||
@@ -260,11 +260,11 @@ $view .= ' <div class="content-block order-details">
|
|||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_code.'</h3>
|
<h3>'.$product_code.'</h3>
|
||||||
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$rma['header']['productrowid'].'" class="btn2">'.$rma['header']['productcode'].'</a>':'<input type="text" name="header[productcode]" value="'.$rma['header']['productcode'].'">').'</p>
|
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$rma['header']['productrowid'].'" class="link-with-icon">'.$rma['header']['productcode'].' <i class="fa-solid fa-up-right-from-square"></i></a>':'<input type="text" name="header[productcode]" value="'.$rma['header']['productcode'].'">').'</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$product_name.'</h3>
|
<h3>'.$product_name.'</h3>
|
||||||
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$rma['header']['productrowid'].'" class="btn2">'.(${$rma['header']['productname']} ?? $rma['header']['productname']).'</a>':'<input type="text" name="header[productname]" value="'.(${$rma['header']['productname']} ?? $rma['header']['productname']).'">').'</p>
|
<p>'.(($view_product == 1)? '<a href="index.php?page=product&rowID='.$rma['header']['productrowid'].'" class="link-with-icon">'.(${$rma['header']['productname']} ?? $rma['header']['productname']).' <i class="fa-solid fa-up-right-from-square"></i></a>':'<input type="text" name="header[productname]" value="'.(${$rma['header']['productname']} ?? $rma['header']['productname']).'">').'</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-detail">
|
<div class="order-detail">
|
||||||
<h3>'.$equipment_label10.'</h3>
|
<h3>'.$equipment_label10.'</h3>
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ $menu_report_usage = 'Systemnutzung';
|
|||||||
$menu_maintenance = 'Maintenance';
|
$menu_maintenance = 'Maintenance';
|
||||||
$menu_profiles = 'Profiles';
|
$menu_profiles = 'Profiles';
|
||||||
$menu_upgrades = 'Software Upgrades';
|
$menu_upgrades = 'Software Upgrades';
|
||||||
|
$menu_sales_licenses = 'Lizenzen';
|
||||||
|
$menu_softwaretool = 'Software-Aktualisierung';
|
||||||
|
$menu_products_software_versions = 'Software';
|
||||||
$tab1 = 'Allgemein';
|
$tab1 = 'Allgemein';
|
||||||
$tab2 = 'Partner';
|
$tab2 = 'Partner';
|
||||||
$tab3 = 'Protokoll';
|
$tab3 = 'Protokoll';
|
||||||
@@ -366,16 +369,15 @@ $register_3_term_consent_1 = 'Ich stimme den ';
|
|||||||
$register_3_term_consent_2 = 'Allgemeinen Geschäftsbedingungen zu';
|
$register_3_term_consent_2 = 'Allgemeinen Geschäftsbedingungen zu';
|
||||||
$register_button = 'Registrieren';
|
$register_button = 'Registrieren';
|
||||||
$register_mandatory = 'verpflichtend';
|
$register_mandatory = 'verpflichtend';
|
||||||
$register_4_completed = '4. Registrierung abgeschlossen';
|
$register_4_completed = 'Registrierung abgeschlossen';
|
||||||
$register_5_details = '5. Registrierungsdetails';
|
$register_5_details = 'Registrierungsdetails';
|
||||||
$register_6_return = '6. Zurück zur Registrierung';
|
$register_6_return = 'Zurück zur Registrierung';
|
||||||
$register_6_button = 'Zurück';
|
$register_6_button = 'Zurück';
|
||||||
$register_message_1 = 'Seriennummer nicht erkannt, bitte wenden Sie sich an Ihren Lieferanten';
|
$register_message_1 = 'Seriennummer nicht erkannt, bitte wenden Sie sich an Ihren Lieferanten';
|
||||||
$register_message_2 = 'Produkt in Garantie oder Garantie abgelaufen. Falls dies nicht korrekt ist, wenden Sie sich bitte an Ihren Lieferanten';
|
$register_message_2 = 'Produkt in Garantie oder Garantie abgelaufen. Falls dies nicht korrekt ist, wenden Sie sich bitte an Ihren Lieferanten';
|
||||||
$register_message_3 = 'Die Garantie wurde um ein zusätzliches Jahr verlängert';
|
$register_message_3 = 'Die Garantie wurde um ein zusätzliches Jahr verlängert';
|
||||||
$register_message_4 = 'Vielen Dank für Ihre Registrierung. Sie erhalten den Link zu unserem Software-Update-Tool per E-Mail, die Sie während der Registrierung angegeben haben.
|
$register_message_4 = 'Vielen Dank für Ihre Registrierung. Sie erhalten den Link zu unserem Software-Update-Tool per E-Mail, die Sie während der Registrierung angegeben haben.
|
||||||
|
<br><br>Falls Sie unsere E-Mail nicht erhalten, können Sie über unsere Website auf unser Software-Update-Tool zugreifen.<br><br>Gehen Sie zu Mein Login und verwenden Sie Benutzername/Passwort:';
|
||||||
Falls Sie unsere E-Mail nicht erhalten, können Sie über unsere Website auf unser Software-Update-Tool zugreifen. Gehen Sie zu Mein Login und verwenden Sie Benutzername/Passwort:';
|
|
||||||
$communication_h2 = 'Kommunikation';
|
$communication_h2 = 'Kommunikation';
|
||||||
$communication_p = 'Kommunikation anzeigen, verwalten und suchen.';
|
$communication_p = 'Kommunikation anzeigen, verwalten und suchen.';
|
||||||
$communication_status = 'Status';
|
$communication_status = 'Status';
|
||||||
@@ -822,5 +824,6 @@ $focus_offering_0 = 'Economy - Premium';
|
|||||||
$focus_offering_1 = 'Premium - Highend';
|
$focus_offering_1 = 'Premium - Highend';
|
||||||
$dealer_type_0 = 'Lokal';
|
$dealer_type_0 = 'Lokal';
|
||||||
$dealer_type_1 = 'Professionell';
|
$dealer_type_1 = 'Professionell';
|
||||||
$dealer_type_2 = 'Unternehmens';
|
$dealer_type_2 = 'Unternehmens';$user_information_required = 'Benutzerinformationen Erforderlich';
|
||||||
?>
|
$user_information_description = 'Bitte geben Sie Ihre Daten ein, um mit Software-Updates fortzufahren';
|
||||||
|
$general_continue = 'Fortfahren';?>
|
||||||
@@ -28,6 +28,9 @@ $menu_report_usage = 'Uso del Sistema';
|
|||||||
$menu_maintenance = 'Mantenimiento';
|
$menu_maintenance = 'Mantenimiento';
|
||||||
$menu_profiles = 'Perfiles';
|
$menu_profiles = 'Perfiles';
|
||||||
$menu_upgrades = 'Actualizaciones de Software';
|
$menu_upgrades = 'Actualizaciones de Software';
|
||||||
|
$menu_sales_licenses = 'Licencias';
|
||||||
|
$menu_softwaretool = 'Actualización de Software';
|
||||||
|
$menu_products_software_versions = 'Software';
|
||||||
$tab1 = 'General';
|
$tab1 = 'General';
|
||||||
$tab2 = 'Socios';
|
$tab2 = 'Socios';
|
||||||
$tab3 = 'Registro';
|
$tab3 = 'Registro';
|
||||||
@@ -366,16 +369,14 @@ $register_3_term_consent_1 = 'Acepto ';
|
|||||||
$register_3_term_consent_2 = 'términos y condiciones';
|
$register_3_term_consent_2 = 'términos y condiciones';
|
||||||
$register_button = 'Registrar';
|
$register_button = 'Registrar';
|
||||||
$register_mandatory = 'obligatorio';
|
$register_mandatory = 'obligatorio';
|
||||||
$register_4_completed = '4. Registro Completado';
|
$register_4_completed = 'Registro Completado';
|
||||||
$register_5_details = '5. Detalles del Registro';
|
$register_5_details = 'Detalles del Registro';
|
||||||
$register_6_return = '6. Volver al registro';
|
$register_6_return = 'Volver al registro';
|
||||||
$register_6_button = 'Atrás';
|
$register_6_button = 'Atrás';
|
||||||
$register_message_1 = 'Número de serie no reconocido, comuníquese con su proveedor';
|
$register_message_1 = 'Número de serie no reconocido, comuníquese con su proveedor';
|
||||||
$register_message_2 = 'Producto bajo garantía o garantía expirada. Si no es correcto, comuníquese con su proveedor';
|
$register_message_2 = 'Producto bajo garantía o garantía expirada. Si no es correcto, comuníquese con su proveedor';
|
||||||
$register_message_3 = 'La garantía se extiende por 1 año adicional';
|
$register_message_3 = 'La garantía se extiende por 1 año adicional';
|
||||||
$register_message_4 = 'Gracias por su registro. Recibirá el enlace a nuestra herramienta de actualización de software a través del correo electrónico proporcionado durante el registro.
|
$register_message_4 = 'Gracias por su registro. Recibirá el enlace a nuestra herramienta de actualización de software a través del correo electrónico proporcionado durante el registro.<br><br>En caso de que no reciba nuestro correo electrónico, puede acceder a nuestra herramienta de actualización de software a través de nuestro sitio web. <br><br>Vaya a Mi Login y utilice nombre de usuario/contraseña:';
|
||||||
|
|
||||||
En caso de que no reciba nuestro correo electrónico, puede acceder a nuestra herramienta de actualización de software a través de nuestro sitio web. Vaya a Mi Login y utilice nombre de usuario/contraseña:';
|
|
||||||
$communication_h2 = 'Comunicación';
|
$communication_h2 = 'Comunicación';
|
||||||
$communication_p = 'Ver, gestionar y buscar comunicación.';
|
$communication_p = 'Ver, gestionar y buscar comunicación.';
|
||||||
$communication_status = 'Estado';
|
$communication_status = 'Estado';
|
||||||
@@ -829,4 +830,7 @@ $focus_offering_1 = 'Premium - Alta gama';
|
|||||||
$dealer_type_0 = 'Local';
|
$dealer_type_0 = 'Local';
|
||||||
$dealer_type_1 = 'Profesional';
|
$dealer_type_1 = 'Profesional';
|
||||||
$dealer_type_2 = 'Corporativo';
|
$dealer_type_2 = 'Corporativo';
|
||||||
|
$user_information_required = 'Información del Usuario Requerida';
|
||||||
|
$user_information_description = 'Por favor proporcione su información para continuar con las actualizaciones de software';
|
||||||
|
$general_continue = 'Continuar';
|
||||||
?>
|
?>
|
||||||
@@ -28,6 +28,9 @@ $menu_report_usage = 'Systeemgebruik';
|
|||||||
$menu_maintenance = 'Maintenance';
|
$menu_maintenance = 'Maintenance';
|
||||||
$menu_profiles = 'Profielen';
|
$menu_profiles = 'Profielen';
|
||||||
$menu_upgrades = 'Software Upgrades';
|
$menu_upgrades = 'Software Upgrades';
|
||||||
|
$menu_sales_licenses = 'Licenties';
|
||||||
|
$menu_softwaretool = 'Software Update';
|
||||||
|
$menu_products_software_versions = 'Software';
|
||||||
$tab1 = 'Algemeen';
|
$tab1 = 'Algemeen';
|
||||||
$tab2 = 'Hierarchy';
|
$tab2 = 'Hierarchy';
|
||||||
$tab3 = 'Log';
|
$tab3 = 'Log';
|
||||||
@@ -366,16 +369,14 @@ $register_3_term_consent_1 = 'Ik ga akkoord met de ';
|
|||||||
$register_3_term_consent_2 = 'algemene voorwaarden';
|
$register_3_term_consent_2 = 'algemene voorwaarden';
|
||||||
$register_button = 'Registreren';
|
$register_button = 'Registreren';
|
||||||
$register_mandatory = 'verplicht';
|
$register_mandatory = 'verplicht';
|
||||||
$register_4_completed = '4. Registratie Voltooid';
|
$register_4_completed = 'Registratie Voltooid';
|
||||||
$register_5_details = '5. Registratiegegevens';
|
$register_5_details = 'Registratiegegevens';
|
||||||
$register_6_return = '6. Terug naar registratie';
|
$register_6_return = 'Terug naar registratie';
|
||||||
$register_6_button = 'Terug';
|
$register_6_button = 'Terug';
|
||||||
$register_message_1 = 'Serienummer niet herkend, neem contact op met uw leverancier';
|
$register_message_1 = 'Serienummer niet herkend, neem contact op met uw leverancier';
|
||||||
$register_message_2 = 'Product onder garantie of garantie verlopen. Neem contact op met uw leverancier als dit niet klopt';
|
$register_message_2 = 'Product onder garantie of garantie verlopen. Neem contact op met uw leverancier als dit niet klopt';
|
||||||
$register_message_3 = 'Garantie is met 1 extra jaar verlengd';
|
$register_message_3 = 'Garantie is met 1 extra jaar verlengd';
|
||||||
$register_message_4 = 'Bedankt voor uw registratie. U ontvangt de link naar onze software-update tool via de e-mail die u tijdens de registratie heeft opgegeven.
|
$register_message_4 = 'Bedankt voor uw registratie. U ontvangt de link naar onze software-update tool via de e-mail die u tijdens de registratie heeft opgegeven. <br><br>Als u onze e-mail niet ontvangt, kunt u via onze website toegang krijgen tot onze software updatetool. <br><br>Ga naar Mijn Login en gebruik gebruikersnaam/wachtwoord:';
|
||||||
|
|
||||||
Als u onze e-mail niet ontvangt, kunt u via onze website toegang krijgen tot onze software updatetool. Ga naar Mijn Login en gebruik gebruikersnaam/wachtwoord:';
|
|
||||||
$communication_h2 = 'Communicatie';
|
$communication_h2 = 'Communicatie';
|
||||||
$communication_p = 'Bekijk, update, en zoek communicatie.';
|
$communication_p = 'Bekijk, update, en zoek communicatie.';
|
||||||
$communication_status = 'Status';
|
$communication_status = 'Status';
|
||||||
@@ -1035,4 +1036,7 @@ $focus_offering_1 = 'Premium - Highend';
|
|||||||
$dealer_type_0 = 'Lokaal';
|
$dealer_type_0 = 'Lokaal';
|
||||||
$dealer_type_1 = 'Professioneel';
|
$dealer_type_1 = 'Professioneel';
|
||||||
$dealer_type_2 = 'Bedrijf';
|
$dealer_type_2 = 'Bedrijf';
|
||||||
|
$user_information_required = 'Gebruikersinformatie Vereist';
|
||||||
|
$user_information_description = 'Geef uw gegevens op om door te gaan met software-updates';
|
||||||
|
$general_continue = 'Doorgaan';
|
||||||
?>
|
?>
|
||||||
@@ -28,6 +28,9 @@ $menu_report_usage = 'Użycie systemu';
|
|||||||
$menu_maintenance = 'Konserwacja';
|
$menu_maintenance = 'Konserwacja';
|
||||||
$menu_profiles = 'Profile';
|
$menu_profiles = 'Profile';
|
||||||
$menu_upgrades = 'Aktualizacje Oprogramowania';
|
$menu_upgrades = 'Aktualizacje Oprogramowania';
|
||||||
|
$menu_sales_licenses = 'Licencje';
|
||||||
|
$menu_softwaretool = 'Aktualizacja Oprogramowania';
|
||||||
|
$menu_products_software_versions = 'Oprogramowanie';
|
||||||
$tab1 = 'Ogólne';
|
$tab1 = 'Ogólne';
|
||||||
$tab2 = 'Partnerzy';
|
$tab2 = 'Partnerzy';
|
||||||
$tab3 = 'Dziennik';
|
$tab3 = 'Dziennik';
|
||||||
@@ -373,7 +376,7 @@ $register_6_button = 'Wstecz';
|
|||||||
$register_message_1 = 'Numer seryjny nie został rozpoznany, skontaktuj się z dostawcą';
|
$register_message_1 = 'Numer seryjny nie został rozpoznany, skontaktuj się z dostawcą';
|
||||||
$register_message_2 = 'Produkt objęty gwarancją lub gwarancja wygasła. Jeśli jest to nieprawidłowe, skontaktuj się z dostawcą';
|
$register_message_2 = 'Produkt objęty gwarancją lub gwarancja wygasła. Jeśli jest to nieprawidłowe, skontaktuj się z dostawcą';
|
||||||
$register_message_3 = 'Gwarancja przedłużona o 1 dodatkowy rok';
|
$register_message_3 = 'Gwarancja przedłużona o 1 dodatkowy rok';
|
||||||
$register_message_4 = 'Dziękujemy za rejestrację. Otrzymasz link do naszego narzędzia aktualizacji oprogramowania na adres e-mail podany podczas rejestracji. W przypadku nieotrzymania naszego e-maila możesz uzyskać dostęp do naszego narzędzia aktualizacji oprogramowania przez naszą stronę internetową. Przejdź do Moje logowanie i użyj nazwy użytkownika/hasła:';
|
$register_message_4 = 'Dziękujemy za rejestrację. Otrzymasz link do naszego narzędzia aktualizacji oprogramowania na adres e-mail podany podczas rejestracji. <br><br>W przypadku nieotrzymania naszego e-maila możesz uzyskać dostęp do naszego narzędzia aktualizacji oprogramowania przez naszą stronę internetową. <br><br>Przejdź do Moje logowanie i użyj nazwy użytkownika/hasła:';
|
||||||
$communication_h2 = 'Komunikacja';
|
$communication_h2 = 'Komunikacja';
|
||||||
$communication_p = 'Przeglądaj, zarządzaj i wyszukuj komunikację.';
|
$communication_p = 'Przeglądaj, zarządzaj i wyszukuj komunikację.';
|
||||||
$communication_status = 'Status';
|
$communication_status = 'Status';
|
||||||
@@ -761,4 +764,7 @@ $general_currency_1 = '$';
|
|||||||
$general_currency_0 = '€';
|
$general_currency_0 = '€';
|
||||||
$general_modifier_0 = '-';
|
$general_modifier_0 = '-';
|
||||||
$general_modifier_1 = '+';
|
$general_modifier_1 = '+';
|
||||||
|
$user_information_required = 'Wymagane Informacje o Użytkowniku';
|
||||||
|
$user_information_description = 'Podaj swoje dane, aby kontynuować aktualizacje oprogramowania';
|
||||||
|
$general_continue = 'Kontynuuj';
|
||||||
?>
|
?>
|
||||||
@@ -28,6 +28,9 @@ $menu_report_usage = 'Uso do Sistema';
|
|||||||
$menu_maintenance = 'Manutenção';
|
$menu_maintenance = 'Manutenção';
|
||||||
$menu_profiles = 'Perfis';
|
$menu_profiles = 'Perfis';
|
||||||
$menu_upgrades = 'Atualizações de Software';
|
$menu_upgrades = 'Atualizações de Software';
|
||||||
|
$menu_sales_licenses = 'Licenças';
|
||||||
|
$menu_softwaretool = 'Atualização de Software';
|
||||||
|
$menu_products_software_versions = 'Software';
|
||||||
$tab1 = 'Geral';
|
$tab1 = 'Geral';
|
||||||
$tab2 = 'Parceiros';
|
$tab2 = 'Parceiros';
|
||||||
$tab3 = 'Registro';
|
$tab3 = 'Registro';
|
||||||
@@ -366,16 +369,14 @@ $register_3_term_consent_1 = 'Eu concordo com ';
|
|||||||
$register_3_term_consent_2 = 'termos e condições';
|
$register_3_term_consent_2 = 'termos e condições';
|
||||||
$register_button = 'Registrar';
|
$register_button = 'Registrar';
|
||||||
$register_mandatory = 'obrigatório';
|
$register_mandatory = 'obrigatório';
|
||||||
$register_4_completed = '4. Registro Concluído';
|
$register_4_completed = 'Registro Concluído';
|
||||||
$register_5_details = '5. Detalhes do Registro';
|
$register_5_details = 'Detalhes do Registro';
|
||||||
$register_6_return = '6. Retornar ao registro';
|
$register_6_return = 'Retornar ao registro';
|
||||||
$register_6_button = 'Voltar';
|
$register_6_button = 'Voltar';
|
||||||
$register_message_1 = 'Número de série não reconhecido, entre em contato com seu fornecedor';
|
$register_message_1 = 'Número de série não reconhecido, entre em contato com seu fornecedor';
|
||||||
$register_message_2 = 'Produto sob garantia ou garantia expirada. Se não estiver correto, entre em contato com seu fornecedor';
|
$register_message_2 = 'Produto sob garantia ou garantia expirada. Se não estiver correto, entre em contato com seu fornecedor';
|
||||||
$register_message_3 = 'Garantia é estendida por 1 ano adicional';
|
$register_message_3 = 'Garantia é estendida por 1 ano adicional';
|
||||||
$register_message_4 = 'Obrigado pelo seu registro. Você receberá o link para nossa ferramenta de atualização de software pelo e-mail fornecido durante o registro.
|
$register_message_4 = 'Obrigado pelo seu registro. Você receberá o link para nossa ferramenta de atualização de software pelo e-mail fornecido durante o registro.<br><br>Caso não receba o nosso e-mail, pode aceder à nossa ferramenta de atualização de software através do nosso website. <br><br>Vá para Meu Login e utilize o nome de utilizador/palavra-passe:';
|
||||||
|
|
||||||
Caso não receba o nosso e-mail, pode aceder à nossa ferramenta de atualização de software através do nosso website. Vá para Meu Login e utilize o nome de utilizador/palavra-passe:';
|
|
||||||
$communication_h2 = 'Comunicação';
|
$communication_h2 = 'Comunicação';
|
||||||
$communication_p = 'Ver, gerenciar e buscar comunicação.';
|
$communication_p = 'Ver, gerenciar e buscar comunicação.';
|
||||||
$communication_status = 'Status';
|
$communication_status = 'Status';
|
||||||
@@ -829,4 +830,7 @@ $focus_offering_1 = 'Premium - Alta gama';
|
|||||||
$dealer_type_0 = 'Local';
|
$dealer_type_0 = 'Local';
|
||||||
$dealer_type_1 = 'Profissional';
|
$dealer_type_1 = 'Profissional';
|
||||||
$dealer_type_2 = 'Corporativo';
|
$dealer_type_2 = 'Corporativo';
|
||||||
|
$user_information_required = 'Informações do Usuário Obrigatórias';
|
||||||
|
$user_information_description = 'Por favor, forneça suas informações para continuar com as atualizações de software';
|
||||||
|
$general_continue = 'Continuar';
|
||||||
?>
|
?>
|
||||||
@@ -29,6 +29,9 @@ $menu_report_usage = 'System usage';
|
|||||||
$menu_maintenance = 'Maintenance';
|
$menu_maintenance = 'Maintenance';
|
||||||
$menu_profiles = 'Profiles';
|
$menu_profiles = 'Profiles';
|
||||||
$menu_upgrades = 'Software Upgrades';
|
$menu_upgrades = 'Software Upgrades';
|
||||||
|
$menu_sales_licenses = 'Licenses';
|
||||||
|
$menu_softwaretool = 'Software Update';
|
||||||
|
$menu_products_software_versions = 'Software';
|
||||||
$tab1 = 'General';
|
$tab1 = 'General';
|
||||||
$tab2 = 'Partners';
|
$tab2 = 'Partners';
|
||||||
$tab3 = 'Log';
|
$tab3 = 'Log';
|
||||||
@@ -375,16 +378,14 @@ $register_3_term_consent_1 = 'I agree with ';
|
|||||||
$register_3_term_consent_2 = 'terms and conditions';
|
$register_3_term_consent_2 = 'terms and conditions';
|
||||||
$register_button = 'Register';
|
$register_button = 'Register';
|
||||||
$register_mandatory = 'mandatory';
|
$register_mandatory = 'mandatory';
|
||||||
$register_4_completed = '4. Registration Completed';
|
$register_4_completed = 'Registration Completed';
|
||||||
$register_5_details = '5. Registration details';
|
$register_5_details = 'Registration details';
|
||||||
$register_6_return = '6. Return to registration';
|
$register_6_return = 'Return to registration';
|
||||||
$register_6_button = 'Back';
|
$register_6_button = 'Back';
|
||||||
$register_message_1 = 'Serialnumber not recognized, please contact your supplier';
|
$register_message_1 = 'Serialnumber not recognized, please contact your supplier';
|
||||||
$register_message_2 = 'Product under warranty or warranty expired. If not correct please contact your supplier';
|
$register_message_2 = 'Product under warranty or warranty expired. If not correct please contact your supplier';
|
||||||
$register_message_3 = 'Warranty is extended with 1 additional year';
|
$register_message_3 = 'Warranty is extended with 1 additional year';
|
||||||
$register_message_4 = 'Thank you for your registration. You will receive the link to our software update tool via the mail provided during the registration.
|
$register_message_4 = 'Thank you for your registration. You will receive the link to our software update tool via the mail provided during the registration.<br><br>In case you do not receive our email you can access our software update tool via our website. <br><br>Go to My Login and use username/password:';
|
||||||
|
|
||||||
In case you do not receive our email you can access our software update tool via our website. Go to My Login and use username/password:';
|
|
||||||
$communication_h2 = 'Communication';
|
$communication_h2 = 'Communication';
|
||||||
$communication_p = 'View, manage, and search communication.';
|
$communication_p = 'View, manage, and search communication.';
|
||||||
$communication_status = 'Status';
|
$communication_status = 'Status';
|
||||||
@@ -1049,4 +1050,7 @@ $focus_offering_1 = 'Premium - Highend';
|
|||||||
$dealer_type_0 = 'Local';
|
$dealer_type_0 = 'Local';
|
||||||
$dealer_type_1 = 'Professional';
|
$dealer_type_1 = 'Professional';
|
||||||
$dealer_type_2 = 'Corporate';
|
$dealer_type_2 = 'Corporate';
|
||||||
|
$user_information_required = 'User Information Required';
|
||||||
|
$user_information_description = 'Please provide your information to continue with software updates';
|
||||||
|
$general_continue = 'Continue';
|
||||||
?>
|
?>
|
||||||
@@ -203,9 +203,11 @@ $view .= '<div class="content-block">
|
|||||||
<p id="checkingMessage" style="margin: 0; font-size: 16px;">'.$softwaretool_checking.'</p>
|
<p id="checkingMessage" style="margin: 0; font-size: 16px;">'.$softwaretool_checking.'</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="softwareOptions" style="margin-top: 20px; display:none;">
|
<div id="softwareOptionsContainer" style="margin-top: 20px; display:none; position: relative;">
|
||||||
<h3 style="margin-bottom: 20px; color: #333;">'.$softwaretool_select_upgrade.'</h3>
|
<div id="softwareOptions" style="filter: blur(8px); pointer-events: none; opacity: 0.3; transition: all 0.3s ease;">
|
||||||
<div id="softwareOptionsGrid" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; justify-content: center; max-width: 1200px; margin: 0 auto;">
|
<h3 style="margin-bottom: 20px; color: #333;">'.$softwaretool_select_upgrade.'</h3>
|
||||||
|
<div id="softwareOptionsGrid" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; justify-content: center; max-width: 1200px; margin: 0 auto;">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -274,6 +276,18 @@ echo '
|
|||||||
var MOLLIE_ENABLED = '.(mollie_enabled ? 'true' : 'false').';
|
var MOLLIE_ENABLED = '.(mollie_enabled ? 'true' : 'false').';
|
||||||
var PAYPAL_ENABLED = '.(paypal_enabled ? 'true' : 'false').';
|
var PAYPAL_ENABLED = '.(paypal_enabled ? 'true' : 'false').';
|
||||||
var PAY_ON_DELIVERY_ENABLED = '.(pay_on_delivery_enabled ? 'true' : 'false').';
|
var PAY_ON_DELIVERY_ENABLED = '.(pay_on_delivery_enabled ? 'true' : 'false').';
|
||||||
|
|
||||||
|
// Translation variables
|
||||||
|
var TRANS_NAME = "'.($account_name ?? 'Name').'";
|
||||||
|
var TRANS_EMAIL = "'.($account_email ?? 'Email').'";
|
||||||
|
var TRANS_ADDRESS = "'.($shipping_address ?? 'Address').'";
|
||||||
|
var TRANS_CITY = "'.($shipping_city ?? 'City').'";
|
||||||
|
var TRANS_POSTAL = "'.($shipping_zip ?? 'Postal Code').'";
|
||||||
|
var TRANS_COUNTRY = "'.($shipping_country ?? 'Country').'";
|
||||||
|
var TRANS_USER_INFO_REQUIRED = "'.($user_information_required ?? 'User Information Required').'";
|
||||||
|
var TRANS_USER_INFO_DESCRIPTION = "'.($user_information_description ?? 'Please provide your information to continue with software updates').'";
|
||||||
|
var TRANS_CONTINUE = "'.($general_continue ?? 'Continue').'";
|
||||||
|
|
||||||
var port, textEncoder, writableStreamClosed, writer, historyIndex = -1;
|
var port, textEncoder, writableStreamClosed, writer, historyIndex = -1;
|
||||||
const lineHistory = [];
|
const lineHistory = [];
|
||||||
|
|
||||||
|
|||||||
181
style/admin.css
181
style/admin.css
@@ -1062,43 +1062,6 @@ main .manage-order-table .delete-item:hover {
|
|||||||
color: #e26060;
|
color: #e26060;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table table tbody .status {
|
|
||||||
padding: 6px 12px;
|
|
||||||
border-radius: 6px;
|
|
||||||
background-color: #10b981;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 12px;
|
|
||||||
color: var(--color-white);
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
min-width: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table table tbody .status.enabled {
|
|
||||||
padding: 6px 12px;
|
|
||||||
border-radius: 6px;
|
|
||||||
background-color: #10b981;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 12px;
|
|
||||||
color: var(--color-white);
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
min-width: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table table tbody .status.disabled {
|
|
||||||
padding: 6px 12px;
|
|
||||||
border-radius: 6px;
|
|
||||||
background-color: #ef4444;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 12px;
|
|
||||||
color: var(--color-white);
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
min-width: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.status {
|
.status {
|
||||||
padding: 3px 6px;
|
padding: 3px 6px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
@@ -1335,6 +1298,24 @@ background-color: var(--color-indicator-1);
|
|||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.link-with-icon {
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--color-green);
|
||||||
|
font-weight: 500;
|
||||||
|
transition: color 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-with-icon:hover {
|
||||||
|
color: var(--color-dark-green);
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-with-icon i {
|
||||||
|
font-size: 0.75em;
|
||||||
|
margin-left: 4px;
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
.btn_link {
|
.btn_link {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -3128,4 +3109,128 @@ main .content-block .button-container {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
border-top: 1px solid #eee;
|
border-top: 1px solid #eee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Registration Modal Styles */
|
||||||
|
|
||||||
|
.reg-modal {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
z-index: 1000;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-modal-content {
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
max-width: 600px;
|
||||||
|
width: 90%;
|
||||||
|
max-height: 90vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
margin: 20px;
|
||||||
|
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-modal-header {
|
||||||
|
padding: 25px;
|
||||||
|
border-bottom: 2px solid #e0e0e0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-modal-header h3 {
|
||||||
|
margin: 0;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-modal-close {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
font-size: 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-tabs {
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-tab-link {
|
||||||
|
padding: 15px 25px;
|
||||||
|
display: inline-block;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #666;
|
||||||
|
border-bottom: 2px solid transparent;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-tab-link.active {
|
||||||
|
border-bottom: 2px solid #04AA6D;
|
||||||
|
color: #04AA6D;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-tab-content {
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-fields {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-field-group {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-field label {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
color: #666;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-field p {
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px;
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 6px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-field-email {
|
||||||
|
color: #04AA6D;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-field-email:hover {
|
||||||
|
background: #e9ecef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-empty-state {
|
||||||
|
text-align: center;
|
||||||
|
padding: 40px 20px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-empty-state i {
|
||||||
|
font-size: 48px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reg-empty-state p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -80,9 +80,20 @@ body {
|
|||||||
top: 20px;
|
top: 20px;
|
||||||
right: 20px;
|
right: 20px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
margin-left: auto;
|
||||||
|
padding: 8px 16px;
|
||||||
|
background-color: transparent;
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
|
border: 1px solid var(--text-color);
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 12px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.register-link:hover {
|
||||||
|
background-color: var(--text-color);
|
||||||
|
color: var(--color-white);
|
||||||
}
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user