From 08263c7933cc30e63dc42283ddd8d8f5e086da9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CVeLiTi=E2=80=9D?= <“info@veliti.nl”> Date: Wed, 7 Jan 2026 14:36:48 +0100 Subject: [PATCH 01/18] feat: Implement invoice generation and emailing functionality - Added invoice generation logic using DomPDF. - Integrated invoice data retrieval from the API. - Implemented language determination for invoices based on customer data. - Added options to email invoices to customers and admin. - Included HTML output option for direct viewing in the browser. - Ensured proper redirection and error handling throughout the process. --- .DS_Store | Bin 12292 -> 12292 bytes .gitignore | 8 + api/.DS_Store | Bin 6148 -> 6148 bytes api/v1/.DS_Store | Bin 6148 -> 6148 bytes api/v2/.DS_Store | Bin 6148 -> 6148 bytes api/v2/get/.DS_Store | Bin 6148 -> 0 bytes api/v2/get/equipments.php | 24 +- api/v2/get/history.php | 14 +- api/v2/get/invoice.php | 2 +- api/v2/get/software_available.php | 18 +- api/v2/get/software_update.php | 10 +- api/v2/post/.DS_Store | Bin 6148 -> 0 bytes api/v2/post/history.php | 6 +- .../post/products_software_upgrade_paths.php | 2 +- assets/functions.php | 427 ++- assets/images/TSS_invoice_footer.png | Bin 0 -> 155915 bytes assets/images/TSS_invoice_header.png | Bin 0 -> 194902 bytes assets/mollie/.DS_Store | Bin 6148 -> 0 bytes assets/mollie/src/.DS_Store | Bin 6148 -> 0 bytes assets/scripts.js | 5 +- assets/softwaretool.js | 54 +- .../settings/bewellwell_settings.php | 2 +- .../morvalwatches/mail/email_template_new.php | 102 + .../mail/email_template_reset.php | 99 + .../settings/morvalwatches_config.php | 55 + .../settings/morvalwatches_settings.php | 112 + .../morvalwatches/settings/settingsmenu.php | 365 ++ .../settings/settingsprofiles.php | 27 + custom/morvalwatches/style/SoVeLiTi.png | Bin 0 -> 13831 bytes custom/morvalwatches/style/VeLiTi-Logo2.png | Bin 0 -> 2761 bytes custom/morvalwatches/style/VeLiTi.png | Bin 0 -> 5850 bytes .../style/morvalwatches_login.css | 231 ++ .../style/morvalwatches_reset.css | 231 ++ custom/morvalwatches/style/soveliti.css | 2971 +++++++++++++++++ custom/morvalwatches/style/veliti_intro.png | Bin 0 -> 170794 bytes factuur.php | 151 + histories.php | 10 +- history.php | 10 +- history_manage.php | 4 +- settings/translations/translations_DE.php | 15 + settings/translations/translations_ES.php | 15 + settings/translations/translations_NL.php | 15 + settings/translations/translations_PL.php | 15 + settings/translations/translations_PT.php | 15 + settings/translations/translations_US.php | 4 +- softwaretool.php | 114 +- 46 files changed, 4982 insertions(+), 151 deletions(-) delete mode 100644 api/v2/get/.DS_Store delete mode 100644 api/v2/post/.DS_Store create mode 100644 assets/images/TSS_invoice_footer.png create mode 100644 assets/images/TSS_invoice_header.png delete mode 100644 assets/mollie/.DS_Store delete mode 100644 assets/mollie/src/.DS_Store create mode 100644 custom/morvalwatches/mail/email_template_new.php create mode 100644 custom/morvalwatches/mail/email_template_reset.php create mode 100644 custom/morvalwatches/settings/morvalwatches_config.php create mode 100644 custom/morvalwatches/settings/morvalwatches_settings.php create mode 100644 custom/morvalwatches/settings/settingsmenu.php create mode 100644 custom/morvalwatches/settings/settingsprofiles.php create mode 100644 custom/morvalwatches/style/SoVeLiTi.png create mode 100755 custom/morvalwatches/style/VeLiTi-Logo2.png create mode 100644 custom/morvalwatches/style/VeLiTi.png create mode 100644 custom/morvalwatches/style/morvalwatches_login.css create mode 100644 custom/morvalwatches/style/morvalwatches_reset.css create mode 100644 custom/morvalwatches/style/soveliti.css create mode 100644 custom/morvalwatches/style/veliti_intro.png create mode 100644 factuur.php diff --git a/.DS_Store b/.DS_Store index d585516f07cac1bf959ab13093032bf01238c838..9d4c452e8d05565dc11a62679d1101247abf067b 100644 GIT binary patch delta 23 ecmZokXi3=MtH{jplVNgzVlWf;hs{eBOs=$R$85kIt7|Ixoa`RnWl5+BsfP9WQ#$tC9KOA#J$fe+v bE66YmPR`FQ0IFqRU~iaMxMwpv$6tN`mHi(E diff --git a/api/v1/.DS_Store b/api/v1/.DS_Store index cb2f10e1357faf68309e1e8364e209576c0aa91c..ad7d9ddda816a54c2ad792535b6d79ae8299b745 100644 GIT binary patch delta 15 WcmZoMXffE(!@^{vy}6I2Oc($v0|ejz delta 15 WcmZoMXffE(!@^|Cw7HL^Oc($u6a=^c diff --git a/api/v2/.DS_Store b/api/v2/.DS_Store index c28ab400b19f012f4b0c962037a8f72c937b427b..16d8e396faeb73974af56135799be2f37bed8a85 100644 GIT binary patch delta 323 zcmZoMXfc=|#>B)qu~2NHo}wrh0|Nsi1A_oVaY0f}eiD$kBdK6BBhzxmdXN+|Lpnn$ zLrGFOvUE;nafyM!HAW_87FITP4t5T1j@aOg{PN(E#FEltr^KRY5HBP@KPL&sPD~2R zOf8QW5OL1WD@n}EODzIx$V^EEDv1ft%uC5Hcgio#ODP8H4F*aC0A)BhIXL45B&w^; zOpSCD49(4Jbrh;CjSO@YOpMKHYdJYYmG!NI;B`mu~2NHo}wrR0|Nsi1A_pAVQ_MOZUK)+c G7G?lQksJL0 diff --git a/api/v2/get/.DS_Store b/api/v2/get/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0execute(); + $messages = $stmt->fetch(); + + if ($messages[0] == 1) { + echo json_encode(array('SN'=> TRUE)); + } + else { + echo json_encode(array('SN'=> FALSE)); + } + return; +} +elseif(isset($criterias['totals']) && $criterias['totals']==''){ $stmt->execute(); $messages = $stmt->fetch(); $messages = $messages[0]; diff --git a/api/v2/get/history.php b/api/v2/get/history.php index be5c826..8967b7c 100644 --- a/api/v2/get/history.php +++ b/api/v2/get/history.php @@ -136,10 +136,22 @@ else { $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); } +// Clean up nested JSON in description fields before final encoding +if (!isset($criterias['totals']) || $criterias['totals'] != '') { + foreach ($messages as &$message) { + if (isset($message['description']) && is_string($message['description'])) { + $decoded = json_decode($message['description'], true); + if (json_last_error() === JSON_ERROR_NONE) { + $message['description'] = json_encode($decoded, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + } + } + } +} + //------------------------------------------ //JSON_ENCODE //------------------------------------------ -$messages = json_encode($messages, JSON_UNESCAPED_UNICODE); +$messages = json_encode($messages, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); //Send results echo $messages; diff --git a/api/v2/get/invoice.php b/api/v2/get/invoice.php index 8091646..07055c6 100644 --- a/api/v2/get/invoice.php +++ b/api/v2/get/invoice.php @@ -51,7 +51,7 @@ elseif (isset($criterias['list']) && $criterias['list'] =='invoice'){ //SQL for Paging $sql = 'SELECT tx.*, txi.item_id as item_id,txi.item_price as item_price, txi.item_quantity as item_quantity, txi.item_options as item_options, p.productcode, p.productname, inv.id as invoice, inv.created as invoice_created, i.language as user_language FROM transactions tx - left join invoice inv ON tx.id = inv.txn_id + left join invoice inv ON tx.txn_id = inv.txn_id left join transactions_items txi ON tx.id = txi.txn_id left join products p ON p.rowID = txi.item_id left join identity i ON i.userkey = tx.account_id '.$whereclause; diff --git a/api/v2/get/software_available.php b/api/v2/get/software_available.php index 3513575..ef5f27f 100644 --- a/api/v2/get/software_available.php +++ b/api/v2/get/software_available.php @@ -161,6 +161,7 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ $debug['decision'] = 'No active software assignments found'; } } else { + $available_upgrades = 0; $has_priced_options = false; $has_latest_version_different = false; @@ -242,6 +243,8 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ } if ($show_version) { + $available_upgrades++; + //Check if there's a valid license for this upgrade if ($final_price > 0 && $sw_version_license) { //Check if the license is valid @@ -286,23 +289,18 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ } } - // Apply the logic: - // 1. If there are priced options -> "yes" - // 2. If no priced options but current version != latest flagged version -> "yes" - // 3. Default -> "no" - if ($has_priced_options) { + // Simple logic: if any upgrades are available to show, return "yes" + if ($available_upgrades > 0) { $software_available = "yes"; - $availability_reason = "Has priced upgrade options available"; - } elseif ($has_latest_version_different) { - $software_available = "yes"; - $availability_reason = "Has free latest version available"; + $availability_reason = "Software upgrades available"; } else { $software_available = "no"; - $availability_reason = "No upgrades available or already on latest"; + $availability_reason = "No upgrades available"; } if (debug) { $debug['final_decision'] = [ + 'available_upgrades' => $available_upgrades, 'has_priced_options' => $has_priced_options, 'has_latest_version_different' => $has_latest_version_different, 'software_available' => $software_available, diff --git a/api/v2/get/software_update.php b/api/v2/get/software_update.php index 2f4696b..6742cd0 100644 --- a/api/v2/get/software_update.php +++ b/api/v2/get/software_update.php @@ -133,6 +133,7 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ JOIN products_software_versions psv ON psa.software_version_id = psv.rowID WHERE psa.product_id = ? AND psa.status = 1 + AND psv.latest = 1 AND (psv.hw_version = ? OR psv.hw_version IS NULL OR psv.hw_version = "")'; $stmt = $pdo->prepare($sql); @@ -212,16 +213,13 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ $decision_reason = 'Skipped - is current version but no upgrades scenario'; } } else { - //Check if this is the current version and should be shown as disabled - if ($is_current_version && $has_paid_upgrade_from_current && $version['latest'] == 1) { - //Show current version as disabled only if it's the latest AND there's a paid upgrade available + //Check if this is the current version - always show it + if ($is_current_version) { $show_version = true; $is_current = true; $final_price = '0.00'; $final_currency = ''; - $decision_reason = 'Showing as CURRENT - is latest version with paid upgrade available'; - } else if ($is_current_version && !($has_paid_upgrade_from_current && $version['latest'] == 1)) { - $decision_reason = 'Skipped - is current version but not (latest + has_paid_upgrade)'; + $decision_reason = 'Showing as CURRENT - always show current version'; } else if (!$is_current_version) { //Check if this version is part of ANY upgrade path system (either FROM or TO) $sql = 'SELECT COUNT(*) as path_count diff --git a/api/v2/post/.DS_Store b/api/v2/post/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0HW; - $sw_version = $test->HEX_FW; + $hw_version = $post_content['payload']['HW']; + $sw_version = $post_content['payload']['HEX_FW']; } else { //GET HW + SW from object diff --git a/api/v2/post/products_software_upgrade_paths.php b/api/v2/post/products_software_upgrade_paths.php index 6b6f9a4..6ce616f 100644 --- a/api/v2/post/products_software_upgrade_paths.php +++ b/api/v2/post/products_software_upgrade_paths.php @@ -14,7 +14,7 @@ $post_content = json_decode($input,true); if (empty($partner->soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';} //default whereclause -list($whereclause,$condition) = getWhereclauselvl2("software_upgrade_paths",$permission,$partner,''); +list($whereclause,$condition) = getWhereclauselvl2("",$permission,$partner,''); //SET PARAMETERS FOR QUERY $id = $post_content['rowID'] ?? ''; //check for rowID diff --git a/assets/functions.php b/assets/functions.php index 6e50226..ed0e09f 100644 --- a/assets/functions.php +++ b/assets/functions.php @@ -1672,7 +1672,7 @@ function overviewIndicators($warranty, $service, $sw_version, $sw_version_latest $indicator .= 'F'; } else { if ($sw_version == ''){ - $indicator .= 'F'; + $indicator .= 'F'; } else { $indicator .= 'F'; } @@ -1777,7 +1777,7 @@ function availableFirmware($sw_version,$sw_version_latest){ break; default: - $message ='Unknown'; + $message =''; break; } @@ -5339,10 +5339,12 @@ function generateSoftwareInvoice($invoice_data, $order_id, $language = 'US') { $customer_country = $customer['address_country'] ?? ''; // Extract transaction data - $payment_amount = $invoice_data['payment_amount'] ?? 0; - $tax_amount = $invoice_data['tax_amount'] ?? 0; - $shipping_amount = $invoice_data['shipping_amount'] ?? 0; - $discount_amount = $invoice_data['discount_amount'] ?? 0; + $pricing = $invoice_data['pricing'] ?? []; + $payment_amount = $pricing['payment_amount'] ?? $invoice_data['payment_amount'] ?? 0; + $tax_amount = $pricing['tax_total'] ?? $invoice_data['tax_amount'] ?? 0; + $shipping_amount = $pricing['shipping_total'] ?? $invoice_data['shipping_amount'] ?? 0; + $discount_amount = $pricing['discount_total'] ?? $invoice_data['discount_amount'] ?? 0; + $subtotal_amount = $pricing['subtotal'] ?? 0; $currency = 'EUR'; // Default currency $invoice_date = $invoice_data['invoice_created'] ?? date('Y-m-d H:i:s'); @@ -5373,6 +5375,39 @@ function generateSoftwareInvoice($invoice_data, $order_id, $language = 'US') { 'serial_number' => $serial_number, 'license_key' => $license_key ]; + } elseif (isset($invoice_data['products']) && is_array($invoice_data['products'])) { + // New format with products array + $pdo = dbConnect($dbname); + + foreach ($invoice_data['products'] as $product) { + $product_code = $product['productcode'] ?? null; + $product_name = $product['product_name'] ?? null; + $product_options = $product['options'] ?? []; + $product_serial = $product_options['serial_number'] ?? null; + + // Handle case where productcode and product_name are empty but serial_number exists + if ((empty($product_code) || $product_code === null) && + (empty($product_name) || $product_name === null) && + !empty($product_serial)) { + $product_code = 'License'; + $product_name = 'software license for ' . $product_serial; + } + + // Get license key from database + $sql = 'SELECT license_key FROM products_software_licenses WHERE transaction_id = ? LIMIT 1'; + $stmt = $pdo->prepare($sql); + $stmt->execute([$order_id]); + $license_result = $stmt->fetch(PDO::FETCH_ASSOC); + $license_key = $license_result['license_key'] ?? 'Pending'; + + $items[] = [ + 'name' => $product_name ?? 'Software Upgrade', + 'quantity' => $product['quantity'] ?? 1, + 'price' => $product['price'] ?? 0, + 'serial_number' => $product_serial ?? 'N/A', + 'license_key' => $license_key + ]; + } } // Load language translations @@ -5402,127 +5437,319 @@ function generateSoftwareInvoice($invoice_data, $order_id, $language = 'US') { $lbl_license_key = $translations['license_key'] ?? 'License Key'; $lbl_license_expiry = $translations['license_expiry'] ?? 'License Expiry'; + // Subtotal calculation - use from pricing data or calculate from items + if ($subtotal_amount > 0) { + $subtotal = $subtotal_amount; + } else { + // Calculate from items if not provided + $subtotal = 0; + foreach ($items as $item) { + $subtotal += $item['price'] * $item['quantity']; + } + } + // Build HTML invoice $html = ' - + + + ' . htmlspecialchars($lbl_invoice) . ' - Total Safety Solutions -
-
' . htmlspecialchars($lbl_invoice) . '
-
- ' . htmlspecialchars($lbl_invoice_number) . ': ' . htmlspecialchars($order_id) . '
- ' . htmlspecialchars($lbl_invoice_date) . ': ' . htmlspecialchars(date('Y-m-d', strtotime($invoice_date))) . ' + + + +
' . htmlspecialchars($lbl_invoice) . '
+ +
+
+

Total Safety Solutions B.V.

+

Laarakkerweg 8

+

5061 JR OISTERWIJK

+

Nederland

+
+
-
- ' . htmlspecialchars($lbl_customer) . ':
- ' . htmlspecialchars($customer_name) . '
'; - - if ($customer_address) { - $html .= htmlspecialchars($customer_address) . '
'; - } - if ($customer_city || $customer_zip) { - $html .= htmlspecialchars($customer_zip . ' ' . $customer_city) . '
'; - } - if ($customer_state) { - $html .= htmlspecialchars($customer_state) . '
'; - } - if ($customer_country) { - $html .= htmlspecialchars($customer_country) . '
'; - } - - $html .= htmlspecialchars($customer_email) . ' +
+
+
+
Invoice Date
+
: ' . htmlspecialchars(date('d-m-Y', strtotime($invoice_date))) . '
+
+
+
Invoice Number
+
: ' . htmlspecialchars($order_id) . '
+
+
+
+
+
Reference
+
: Online order
+
+
+
Order number
+
: ' . htmlspecialchars($order_id) . '
+
+
- +
- - - + + + + + '; foreach ($items as $item) { + $line_total = $item['price'] * $item['quantity']; $html .= ' - - - - '; + + + + + + '; } - // Subtotal - $subtotal = $payment_amount - $tax_amount - $shipping_amount + $discount_amount; - $html .= ' - - - '; - - // Tax - if ($tax_amount > 0) { - $html .= ' - - - '; - } - - // Shipping - if ($shipping_amount > 0) { - $html .= ' - - - '; - } - - // Discount - if ($discount_amount > 0) { - $html .= ' - - - '; - } - - // Total - $html .= ' - - - '; - $html .= ' -
' . htmlspecialchars($lbl_product) . '' . htmlspecialchars($lbl_quantity) . '' . htmlspecialchars($lbl_price) . 'Item codeDescriptionQuantityPriceTotal
' . htmlspecialchars($item['name']) . '' . htmlspecialchars($item['quantity']) . '' . number_format($item['price'], 2) . ' ' . htmlspecialchars($currency) . '
SOFTWARE' . htmlspecialchars($item['name']); + + if ($item['serial_number'] !== 'N/A') { + $html .= '
Serial: ' . htmlspecialchars($item['serial_number']) . ''; + } + if ($item['license_key'] !== 'Pending') { + $html .= '
License: ' . htmlspecialchars($item['license_key']) . ''; + } + + $html .= '
' . htmlspecialchars($item['quantity']) . ' € ' . number_format($item['price'], 2) . '€ ' . number_format($line_total, 2) . '
' . htmlspecialchars($lbl_subtotal) . ':' . number_format($subtotal, 2) . ' ' . htmlspecialchars($currency) . '
' . htmlspecialchars($lbl_tax) . ':' . number_format($tax_amount, 2) . ' ' . htmlspecialchars($currency) . '
' . htmlspecialchars($lbl_shipping) . ':' . number_format($shipping_amount, 2) . ' ' . htmlspecialchars($currency) . '
' . htmlspecialchars($lbl_discount) . ':-' . number_format($discount_amount, 2) . ' ' . htmlspecialchars($currency) . '
' . htmlspecialchars($lbl_total) . ':' . number_format($payment_amount, 2) . ' ' . htmlspecialchars($currency) . '
'; + - // License information - if ($license_key && $serial_number) { - $html .= '
- Software License Information:
- ' . htmlspecialchars($lbl_device_serial) . ': ' . htmlspecialchars($serial_number) . '
- ' . htmlspecialchars($lbl_license_key) . ': ' . htmlspecialchars($license_key) . '
- ' . htmlspecialchars($lbl_license_expiry) . ': 2099-12-31 -
'; +
+
+
' . htmlspecialchars($lbl_subtotal) . '
+
€ ' . number_format($subtotal, 2) . '
+
'; + + if ($tax_amount > 0) { + $html .= '
+
' . htmlspecialchars($lbl_tax) . '
+
€ ' . number_format($tax_amount, 2) . '
+
'; + } else { + $html .= '
+
VAT
+
included
+
'; } - - $html .= ' + '; diff --git a/assets/images/TSS_invoice_footer.png b/assets/images/TSS_invoice_footer.png new file mode 100644 index 0000000000000000000000000000000000000000..c6129f57c6b1407cbcc8f2ea8c2c7e44c2a95883 GIT binary patch literal 155915 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 z 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

-`)jelb4S!Nw&Sp!;O}>(Jwp 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

7(Jmp(;@ZM_x+CYK570wV^1Hb9|ds_cG;o& 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 y&q{^HS9Zh}_$}hToqTOBl6{enJ6L^NIvsG+ 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

kPU{Teq$@|K`-N63i$pSyz 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
OPs zy#On{j{g4WjEgq!!NjY(}&LVL81bzAVCuRt|z644WB@9Li4BOCAyS4$gvKyK&Nhm{%jm^c`)%*z*ZJ&xO-u^06T%<4iPE4KfDh-9z2i3LE)?#?ZCt^*I&m?N|gQ z(bv$ELDf8S3|xuDb05KLSrl(SH8X&~gf<^oll9ykpvZ0xFOkx3WgTrtm*aQU|K zcq)iZCoCx*rpDobw5!dJiJVCv7?NY~i26?GJibbVKwarTEPp@CfzgNp@e3YqOATrk zm?5!WG%7{U6^KmX)0XHNiK3Ugx1;e>)JzJK-t%p39)dnCr7p8?&u=8J%D+k#%I^=- zLj06IJ!B^MZ*ubAhF|Ml*UcuX8N41y7@m0F^&Nq5-X;l*p*uJs&a$}9O%0DAz8LE784DF(59JQ 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 literal 0 HcmV?d00001 diff --git a/assets/mollie/.DS_Store b/assets/mollie/.DS_Store deleted file mode 100644 index 9c0e967f31d0281547eddca8985b83077aa7c9d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKy-ve05I(mBr68n^jNX|02B8WQLJV0MP#aW+Ca!|$z?3IL4DbNF0qnd13*XsC znlzLVq3TXLf6o0lmoJf>BO)`o&&EU}B8s4ly&;Alg#D}?>51h4Xn2irI&=BbTL+zJ zHT*{g_}%sCj!K#>=FRtaezo@GE=i^fH-#noIC^+Hd3`x;db3}=%iG4P!zZMD-*1(c z#ljVHSn&1GKCS463d+b)*{b*1!9hb1%U;RxlQ<0>T3^ zAr%->jkFjhq{D6{E*7i;hIBI0d>Fa2kq*W9yJLOp!^y+}byNnFfi?sEa5>`h|7?5z z-%ipiWk4C&DF)0SNs|d4NzT^J!|_>bq1R9rj;jLJDVX@97_od5A49#sZg~QX1*?Ft QK=enz)1ZSg@TUxX0r^){uK)l5 diff --git a/assets/mollie/src/.DS_Store b/assets/mollie/src/.DS_Store deleted file mode 100644 index c6ec5837655044ebf2159e546cc74c086deb766e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyH3L}6umB?>SO5!Z21JbFfpW6EAiMUA5i)bAT>$V2Wq!`0umb^!iJdm4t|Am zuPumGTVg^8`AYV2?Q@-zlf+6?;Rg= z@h;ad^5}HT=ke6RwDd(okG_Y&BAewI?}peRX`ilX z3%79>w#z3k_NYg3Dc_^C#IO`9agbGh2P;C=4`r^b%n3!w)iHl8 zbW(}NPzMKs1GWQu`e%#x|GxkHZzqLc!GYkwzj8oDy+N;wTQYm=&du>&8>0+SIG9&x lloV8EJC+7-#fK;o7>l_9Obiwp(Srzo1jL3=1qXiBfltOd+L-_V diff --git a/assets/scripts.js b/assets/scripts.js index 28f9696..cb1df5e 100644 --- a/assets/scripts.js +++ b/assets/scripts.js @@ -119,7 +119,10 @@ async function connectDevice() { // Log connection failure details await logCommunication(`Serial connection failed: ${error.message || 'Unknown error'}`, 'disconnected'); - if (openPort = 1){ + // Check for specific "No port selected" error and show user-friendly message + if (error.message && error.message.includes('No port selected by the user')) { + progressBar("100", "No device selected, please try again", "#ff6666"); + } else if (openPort = 1){ closePort(); console.log("Closing port"); alert("System is still trying to close the serial port. If this message continues to come up please refresh this page."); diff --git a/assets/softwaretool.js b/assets/softwaretool.js index 0194de5..5e8a9ac 100644 --- a/assets/softwaretool.js +++ b/assets/softwaretool.js @@ -161,7 +161,13 @@ async function connectDeviceForSoftware() { } catch (error) { await logCommunication(`Connection error: ${error.message}`, 'error'); - progressBar("0", "Error: " + error.message, "#ff6666"); + + // Check for specific "No port selected" error and show user-friendly message + if (error.message && error.message.includes('No port selected by the user')) { + progressBar("100", "No device selected, please try again", "#ff6666"); + } else { + progressBar("100", "Error: " + error.message, "#ff6666"); + } } } @@ -1193,14 +1199,50 @@ async function downloadAndInstallSoftware(option, customerData = null) { console.log("Click the 'Install Software' button to test if upload.js can handle the file"); alert("DEBUG MODE: Download complete!\n\nBlob size: " + blob.size + " bytes\n\nClick the 'Install Software' button to test upload.js"); } else { - // PRODUCTION MODE: Show upload button and automatically trigger + // PRODUCTION MODE: Hide button and show installation in progress document.getElementById("uploadSection").style.display = "block"; const uploadBtn = document.getElementById("uploadSoftware"); - uploadBtn.style.display = "block"; - uploadBtn.disabled = false; + uploadBtn.style.display = "none"; + + // Hide device version information during installation + const softwareOptions = document.getElementById("softwareOptions"); + if (softwareOptions) { + softwareOptions.style.display = "none"; + } + + // Create installation status indicator + const installStatus = document.createElement("div"); + installStatus.id = "installationStatus"; + installStatus.style.cssText = ` + text-align: center; + padding: 20px; + background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); + border-radius: 8px; + margin: 10px 0; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + `; + installStatus.innerHTML = ` + +

Installing Software...

+

Please keep your device connected and do not close this page

+ `; + + // Insert status before the hidden upload section + document.getElementById("uploadSection").parentNode.insertBefore(installStatus, document.getElementById("uploadSection")); - progressBar("60", "Ready to install, starting upload...", "#04AA6D"); - uploadBtn.click(); + progressBar("60", "Starting automatic installation...", "#04AA6D"); + + // Enable the upload button and automatically click it + setTimeout(() => { + uploadBtn.disabled = false; + + // Start monitoring for completion + if (typeof startUploadMonitoring === 'function') { + startUploadMonitoring(); + } + + uploadBtn.click(); + }, 1000); } } catch (error) { diff --git a/custom/bewellwell/settings/bewellwell_settings.php b/custom/bewellwell/settings/bewellwell_settings.php index 8cd76de..1780d98 100644 --- a/custom/bewellwell/settings/bewellwell_settings.php +++ b/custom/bewellwell/settings/bewellwell_settings.php @@ -19,7 +19,7 @@ $color_accent = '#2FAC66'; //'#ececec'; // Database settings //------------------------------------------ -require '/var/www/vhosts/morvalwatches.com/settings/soveliti_cloud_settings.php'; +require '/var/www/vhosts/morvalwatches.com/settings/bewellwell_cloud_settings.php'; //------------------------------------------ // Menusetup & settings diff --git a/custom/morvalwatches/mail/email_template_new.php b/custom/morvalwatches/mail/email_template_new.php new file mode 100644 index 0000000..4760382 --- /dev/null +++ b/custom/morvalwatches/mail/email_template_new.php @@ -0,0 +1,102 @@ + + + + + + ' . $subject . ' + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ '.site_name.' +
+ ' . $newuser_header . ', +
+
+ '.$newuser_text.' '.$newuser_credential_text_1.''.$post_content['username'].' +
+
+ '.$newuser_credential_text_2.' +
+ + + + + +
+ Reset Password +
+
+ ' . $newuser_closure . ' +
+
+ Kind regards, +
+
+ Service team +
+
+
+
+ + +'; \ No newline at end of file diff --git a/custom/morvalwatches/mail/email_template_reset.php b/custom/morvalwatches/mail/email_template_reset.php new file mode 100644 index 0000000..f9fafb4 --- /dev/null +++ b/custom/morvalwatches/mail/email_template_reset.php @@ -0,0 +1,99 @@ + + + + + + ' . $subject . ' + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ '.site_title.' +
+ ' . $changeuser_header . ', +
+
+ '.$changeuser_text.' +
+
+ '.$changeuser_credential_text_1 .' +
+ + + + + +
+ Reset Password +
+
+ ' . $changeuser_closure . ' +
+
+ Kind regards, +
+
+ Service team +
+
+
+
+ + +'; \ No newline at end of file diff --git a/custom/morvalwatches/settings/morvalwatches_config.php b/custom/morvalwatches/settings/morvalwatches_config.php new file mode 100644 index 0000000..8ab12a2 --- /dev/null +++ b/custom/morvalwatches/settings/morvalwatches_config.php @@ -0,0 +1,55 @@ +format('F'); + +//------------------------------------------ +//History Type +//------------------------------------------ +$type1 = 'General'; +$type2 = 'Customer'; +$type3 = 'Service'; +$type4 = 'Testing'; +$type5 = 'Data'; +$type6 = 'Other'; +$type7 = 'Internal'; +$type8 = 'Ignore'; +$type9 = 'Warranty'; +$type10 = 'Contract'; +$type11 = 'Warranty-Expired'; +$type12 = 'Contract-Expired'; +$type13 = "Order"; +$type14 = "ServiceReport"; +$type15 = "SRIncluded"; +$type16 = "Notes"; +$type17 = "Visual"; + +$HistoryType_1 = 'Bootloader'; +$HistoryType_2 = 'Firmware'; +$HistoryType_3 = 'SerialNumber'; +$HistoryType_4 = 'Visual_Test'; +$HistoryType_5 = 'Maintenance_Test'; +$HistoryType_6 = 'Assembly_Test'; +$HistoryType_7 = 'ProductNumber'; +$HistoryType_8 = 'Visual'; +$HistoryType_9 = 'ServiceReport'; +//------------------------------------------ +//Permissions CRUD +//------------------------------------------ +$permission_4 = 'CRUD'; //Admin+ +$permission_3 = 'CRUD'; //Admin +$permission_2 = 'CRU'; //SuperUser +$permission_1 = 'CRU'; //CreateUpdate +$permission_0 = 'R'; //Readonly + +$permissionlabel1 = 'Permission'; +$permission1 = 'Superuser'; #1 +$permission2 = 'Create & Update'; #2 +$permission3 = 'read-only'; // #3 +$permission4 = 'Admin'; //#4 +$permission5 = 'Admin+'; // #5 + +$settingslabel1 = 'profile'; +$setting1 = 'firmware'; //Fix +$setting2 = 'service'; +$setting3 = 'build'; //Fix +$setting4 = 'distribution'; +$setting5 = ''; +$setting6 = ''; +$setting7 = ''; //Fix +$setting8 = 'interface'; + +//------------------------------------------ +//Partners +//------------------------------------------ +$partnertype1 = 'SalesID'; +$partnertype2 = 'SoldTo'; +$partnertype3 = 'ShipTo'; +$partnertype4 = 'Location'; +$partnertype5 = 'Section'; \ No newline at end of file diff --git a/custom/morvalwatches/settings/settingsmenu.php b/custom/morvalwatches/settings/settingsmenu.php new file mode 100644 index 0000000..b7ce39b --- /dev/null +++ b/custom/morvalwatches/settings/settingsmenu.php @@ -0,0 +1,365 @@ + [ + "main_menu" => [ + "url" => "dashboard", + "selected" => "dashboard", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_dashboard" + ] + ], + "sales" => [ + "main_menu" => [ + "url" => "contracts", + "selected" => "contracts", + "icon" => "fa-solid fa-bars", + "name" => "menu_sales" + ], + "accounts" => [ + "url" => "accounts", + "selected" => "accounts", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_sales_accounts" + ], + "catalog" => [ + "url" => "catalog", + "selected" => "catalog", + "icon" => "fa-solid fa-photo-film", + "name" => "menu_catalog" + ], + "contracts" => [ + "url" => "contracts", + "selected" => "contracts", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_sales_contracts" + ], + "orders" => [ + "url" => "orders", + "selected" => "orders", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_sales_orders" + ], + "identity" => [ + "url" => "identity", + "selected" => "identity", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_identity" + ] + ], + "dealers" => [ + "main_menu" => [ + "url" => "dealers", + "selected" => "dealers", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_dealers" + ] + ], + "buildtool" => [ + "main_menu" => [ + "url" => "buildtool", + "selected" => "buildtool", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_build" + ] + ], + "cartests" => [ + "main_menu" => [ + "url" => "cartests", + "selected" => "cartests", + "icon" => "fa-solid fa-car", + "name" => "menu_cartest" + ] + ], + "marketing" => [ + "main_menu" => [ + "url" => "marketing&product_group=Emergency_Plug&product_content=Images", + "selected" => "marketing", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_marketing" + ] + ], + "equipments" => [ + "main_menu" => [ + "url" => "equipments", + "selected" => "assets", + "icon" => "fa-solid fa-database", + "name" => "menu_assets" + ], + "equipments" =>[ + "url" => "equipments", + "selected" => "assets", + "icon" => "fa-solid fa-database", + "name" => "menu_assets" + ], + "servicereports" => [ + "url" => "servicereports", + "selected" => "servicereports", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_service_reports" + ], + "rmas" => [ + "url" => "rmas", + "selected" => "rmas", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_rmas" + ], + "histories" => [ + "url" => "histories", + "selected" => "histories", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_history" + ], + "firmwaretool" => [ + "url" => "firmwaretool", + "selected" => "firmwaretool", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_firmwaretool" + ] , + "equipments_mass_update" => [ + "url" => "equipments_mass_update", + "selected" => "equipments_mass_update", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_equipments_mass_update" + ] + ], + "products" => [ + "main_menu" => [ + "url" => "products&status=1", + "selected" => "products", + "icon" => "fas fa-box-open", + "name" => "menu_products" + ], + "products" => [ + "url" => "products&status=1", + "selected" => "products", + "icon" => "fas fa-box-open", + "name" => "menu_products" + ], + "products_software" => [ + "url" => "products_software_versions", + "selected" => "products_software_versions", + "icon" => "fas fa-box-open", + "name" => "menu_products_software_versions" + ], + "products_attributes" => [ + "url" => "products_attributes", + "selected" => "products_attributes", + "icon" => "fas fa-box-open", + "name" => "menu_products_attributes" + ], + "pricelists" => [ + "url" => "pricelists", + "selected" => "pricelists", + "icon" => "fa-solid fa-coins", + "name" => "menu_pricelists" + ] + ], + "reporting" => [ + "main_menu" => [ + "url" => "report_build", + "selected" => "report_build", + "icon" => "fa-solid fa-magnifying-glass-chart", + "name" => "menu_report_main" + ], + "report_build" => [ + "url" => "report_build", + "selected" => "report_build", + "icon" => "fa-solid fa-magnifying-glass-chart", + "name" => "menu_report_build" + ], + "report_contracts_billing" => [ + "url" => "report_contracts_billing", + "selected" => "report_contracts_billing", + "icon" => "fa-solid fa-magnifying-glass-chart", + "name" => "menu_report_contracts_billing" + ], + "report_healthindex" => [ + "url" => "report_healthindex", + "selected" => "report_healthindex", + "icon" => "fa-solid fa-magnifying-glass-chart", + "name" => "menu_report_healthindex" + ], + "report_usage" => [ + "url" => "report_usage", + "selected" => "report_usage", + "icon" => "fa-solid fa-magnifying-glass-chart", + "name" => "menu_report_usage" + ] + ], + "admin" =>[ + "main_menu" => [ + "url" => "partners", + "selected" => "partners", + "icon" => "fa-solid fa-bars", + "name" => "menu_admin" + ], + "partners" => [ + "url" => "partners", + "selected" => "partners", + "icon" => "fa-solid fa-bars", + "name" => "menu_admin_partners" + ], + "users" => [ + "url" => "users", + "selected" => "users", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_admin_users" + ], + "communications" => [ + "url" => "communications", + "selected" => "communications", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_admin_communications" + ], + "media" => [ + "url" => "media", + "selected" => "media", + "icon" => "fa-solid fa-photo-film", + "name" => "menu_media" + ], + "categories" => [ + "url" => "categories", + "selected" => "categories", + "icon" => "fa-solid fa-photo-film", + "name" => "menu_categories" + ], + "discounts" => [ + "url" => "discounts", + "selected" => "discounts", + "icon" => "fa-solid fa-photo-film", + "name" => "menu_discounts" + ], + "shipping" => [ + "url" => "shipping", + "selected" => "shipping", + "icon" => "fa-solid fa-truck-fast", + "name" => "menu_shipping" + ] + ], + "settings" => [ + "main_menu" => [ + "url" => "settings", + "selected" => "settings", + "icon" => "fas fa-tools", + "name" => "menu_settings" + ], + "config" => [ + "url" => "settings", + "selected" => "settings", + "icon" => "fas fa-tools", + "name" => "menu_config" + ], + "translations" => [ + "url" => "translations", + "selected" => "translations", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_translations" + ], + "uploader" => [ + "url" => "uploader", + "selected" => "uploader", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_uploader" + ], + "logfile" => [ + "url" => "logfile", + "selected" => "logfile", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_logfile" + ], + "maintenance" => [ + "url" => "maintenance", + "selected" => "maintenance", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_maintenance" + ], + "profiles" => [ + "url" => "profiles", + "selected" => "profiles", + "icon" => "fas fa-tachometer-alt", + "name" => "menu_profiles" + ] + ] +]; + +$routes = array( + '/' => 'equipments.php', + 'equipments' => 'equipments.php', + 'products' => 'products.php', + 'logout' => 'logout.php' +); + +//------------------------------------------ +// Paging +//------------------------------------------ +$page_rows_equipment = 25; //list Equipment +$page_rows_history = 15; //list History +$page_rows_products = 25;//list producst +$page_rows_users = 15;//list users +$page_rows_partners = 15;//list partners +$page_rows_communication = 25; //list communications +$page_rows_accounts = 25 ;// list accounts +$page_rows_contracts = 25 ;// list contracts +$page_rows_cartest = 25 ;// list contracts +$page_rows_equipment_servicereporst = 5 ;// Number of service reports on equipment +$page_rows_changelog = 50 ;// Number of changelogs returned +$page_rows_rma = 25; // list RMA +$page_rows_translations = 50; //list translation variables +$page_rows_products_attributes = 50; //list product attributes +$page_rows_media = 25; // list media +$page_rows_pricelists = 50;//pricelists +$page_rows_categories = 25;//categories +$page_rows_discounts = 25;//discounts +$page_rows_shipping = 25;//discounts +$page_rows_transactions = 25; //transactions +$page_rows_invoice = 25; //invoices +$page_rows_dealers = 25; //dealers +$page_rows_software_versions = 50; //software versions + +//------------------------------------------ +// Languages supported +//------------------------------------------ +$supportedLanguages = ['US', 'NL', 'DE', 'ES','PT']; + +//------------------------------------------ +// Pricing +//------------------------------------------ +$supportedCurrencies = ["0" =>"euro", "1"=>"dollar"]; + +$supportedModifiers = ["0" =>"subtract", "1"=>"add"]; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// All individual views and APIs - Profile ++++++++++++++ +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++ +$all_profiles = [ + "build", + "commerce", + "distribution", + "firmware", + "garage", + "interface", + "service", + "other" +]; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Marketing +++++++++++++++++++++++++++++++++++++ +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +$main_marketing_dir = './marketing/'; + +$marketing_structure = array( +"Emergency_Plug" => array( + "Documents", + "Images", + "Video" + ) + ); \ No newline at end of file diff --git a/custom/morvalwatches/settings/settingsprofiles.php b/custom/morvalwatches/settings/settingsprofiles.php new file mode 100644 index 0000000..2999088 --- /dev/null +++ b/custom/morvalwatches/settings/settingsprofiles.php @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/custom/morvalwatches/style/SoVeLiTi.png b/custom/morvalwatches/style/SoVeLiTi.png new file mode 100644 index 0000000000000000000000000000000000000000..5572acc7b0a8d8c909af72e25ccf179f7b5baf6b GIT binary patch literal 13831 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 literal 0 HcmV?d00001 diff --git a/custom/morvalwatches/style/VeLiTi-Logo2.png b/custom/morvalwatches/style/VeLiTi-Logo2.png new file mode 100755 index 0000000000000000000000000000000000000000..ea68b1b4c9d4ab8dc9d41d7421a48f51591b55b8 GIT binary patch literal 2761 zcmV;)3O4nLP)002-31^@s6QD2C%00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru<_Q!F5+-;K>PY|q01RnV zSad^gZEa<4bN~PV006wMvY7w?3O-3hK~#9!?VNjDlvNtXzwg|*i?XQ1(t>Fz-d4@k zFiBhU(w1VDx*N7q)~;JwYxe1rrnQx3VzzBsTGj@u;wAF};vFzbg>QKZh)y1p)#P3%2%`qsR>k2#6(~MFbL=dcwL3nnXDWbdo!%-kj4Wa0(}5?K-P%| zVJSBN2#RR>=}u6@N+1asa&_2sW>7RuIf`qb)KL%=;SFp6{@696-)ss3=Qe>-08zm7 zE-cNP>?bSUav-b=No%mo!*B>N8(Ik^x(peCbLGGcAgBw6C0LT=b`@5aS)AaZH!!r> z|LP6Us1v)AB!QdC{L>jts|TH4(1m13?kY^CpTjblf}6cTt)7Rb+|3&=hN0IREpU>k zs;Ou0qK%Z4RXd+YDC9i<)Fi^EhoI9LEPUyZUwD~0^VgZb{2O3NQed-arBGsm)O-9C^zR}35A*Mp@Crt+)qV)yaE=Z8TiHM<)6w?r7Dk@>Gh3wLVS zf-u}XT)4@99cg+4Pt6Jy29$ERBJqd&e@jq+uaLaBw2BRzlRzQ20W1Jl6>om9m+IOEA^EU@zv1^|f*le@ z`1SN=-mFkz{qnVO80s_@vk!4tl7z8Q$15v$2sc^z%3}@~f=0q74rf5$+l1tKg(Ym< zoOn~T-ac3WDg|5PQn^@kMMxeL;LDS*?MB3-V}jpcd`DK+tpDw7gm3IfXeE6A^E){ z?__-FAlm}d8Hijg9#_2@xs!(Kx;C8^v=5d96_vHD{`7!wlaH4_A$|yAF$2~UJ~LD} zT325zW7F;vpi;JNFttCsFtO)wIz^W&1y@FYX3h?6KQNOC@b7rNGlX@bXq?B_)axV{8 z!oxyv_i}IJw_{}51H%|PAV5f7ex;62Vve;tgRtEJpGslX_RZ|6qv(G}?>2pucMnhI zOdo?vsSwidKAc8gWK=j zmPGCZ57&0zqHT|kJzZJ4<||=&c-TGk>*sIXv6)WKikBa?Vg-z+?8geLQycrkk|Zu% zs$j#GB;h9O-VBFYjhI+(AY}9aLPqozTrhQf@Wo-FUC@q)1sIG*Hg5ZxTESE4$@dLm zROn!_s9vk*qqpV=_a$<}erjrMcRFsD3XZJYOYAwEF05a+U@8`aE{%?`un^&7yr{H_ zt+A;XZFn+n7g&vTjr?cVajFG}*XZGW89nMQXz38w1WHd=7Cj@r3%cvzDRT0QYyvew^ zifyaJ>`fsvJx};}%XwhQWMt)DVq09Qklfu(#ajy>xn2xsFfyQj0CT2?hy!1-txdb2 zj)w&pjYif+CkX2oL_C0BP;c|f*r;Qj6>-(SzBt0=@*2BUOm|47Y*y|?_9vYY)-PW) z1L`!4yr(}C#tal{Q&m&X=i8HQ8do_4R#inUTlS{VAXxJ-W!w+~gKuYv6}6yo2^r+% z7u$DM=?GXTWW>a#a9&*^B)_d!ccR~ahS1;LC8V#eZ6IdvNwf`(zW`X01R5>xd=w|R zE=Y_U)gNCUFCqPza~C;qFwHJ2V8_D(a8a^-dosBNB{skGlE|Gl*@AH%SO6*|e}6m1 zrk6aFe3oyHoiUd+{i0wge^ln7<=@z`O%RMG{-#a zCYP}_R=kk+=T=+a$dm@9`@e!Nden|LzY9MCG{of8&7(#dSnvkEQhR;-P)>weWO0jsF!3U9o> zo2pjoyVgY?Q zgmoe@dQfDSNTb-m7HCcpq_ zfOud%>ZnsqD<6f?H-Kt_wFyYM+ORX31}H)um3{3mliq=xoEzU({uBE@bcmGNfw0Z7 P00000NkvXXu0mjfr@${T literal 0 HcmV?d00001 diff --git a/custom/morvalwatches/style/VeLiTi.png b/custom/morvalwatches/style/VeLiTi.png new file mode 100644 index 0000000000000000000000000000000000000000..16e9476ae931f3d362e3098f26cf68287ad4070c GIT binary patch literal 5850 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 literal 0 HcmV?d00001 diff --git a/custom/morvalwatches/style/morvalwatches_login.css b/custom/morvalwatches/style/morvalwatches_login.css new file mode 100644 index 0000000..1c0c2fb --- /dev/null +++ b/custom/morvalwatches/style/morvalwatches_login.css @@ -0,0 +1,231 @@ +:root { + --color-white: #FFFFFF; + --color-light-blue: #344fd5c2; + --color-blue: #0b1054; + --color-red: #a75151; + --text-color: #333333; + --error-background: #f3c3c3; +} + + +* { + padding: 0; + margin: 0; + box-sizing: border-box; + font-family: "Open Sans", Helvetica, sans-serif; + accent-color: var(--color-blue); +} + +body { + display: flex; + justify-content: center; + align-items: center; + min-height: 100vh; + background-color: var(--color-white); + padding: 20px; +} + +.login-container { + display: flex; + 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; +} + +.login-form { + width: 45%; + padding: 40px; + display: flex; + flex-direction: column; + justify-content: center; + position: relative; +} + +.logo { + position: absolute; + top: 20px; + left: 20px; + background-image: url(VeLiTi-Logo2.png); + background-repeat: no-repeat; + opacity: inherit; + width: 85px; + height: 120px; + margin: 0 auto; + -webkit-filter: drop-shadow(5px 5px 5px #222); + filter: drop-shadow(5px 5px 5px #222); +} + +.login-visual { + width: 55%; + position: relative; + overflow: hidden; + background-image: url(veliti_intro.png); + background-position: center center; + background-size: 100% 100%; + background-color: var(--color-light-blue); + background-repeat: no-repeat; +} + +.login-visual img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.register-link { + position: absolute; + top: 20px; + right: 20px; + text-decoration: none; + color: var(--text-color); +} + +.header { + margin-bottom: 30px; +} + +.header h1 { + font-size: 24px; + margin-bottom: 10px; +} + +.header p { + color: #666; +} + +.input-group { + margin-bottom: 15px; + position: relative; +} + +.input-group input { + width: 100%; + padding: 10px; + border: 1px solid #ddd; + border-radius: 4px; +} + +.input-group input[type="email"] { + padding-left: 40px; + background: url('data:image/svg+xml;utf8,') no-repeat left 10px center; +} + +.input-group input[type="password"] { + padding-left: 40px; + background: url('data:image/svg+xml;utf8,') no-repeat left 10px center; +} + +.forgot-password { + color: var(--text-color); + text-decoration: none; + text-align: right; + margin-top: 5px; + float: right; + font-size: 12px; +} + +.remember-me { + display: flex; + align-items: center; + margin-bottom: 20px; +} + +.remember-me input { + margin-right: 10px; +} + +.maintenance { + padding: 5px; +} + +.message p { + margin-top: 5px; + background-color: var(--error-background); + border-left: 4px solid var(--color-red); + color: var(--color-red); + padding: 5px; + border-radius: 4px; + text-align: center; +} + +.login-btn { + width: 100%; + padding: 12px; + background-color: var(--color-light-blue); + color: var(--color-white); + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.login-btn:hover { + background-color: var(--color-blue); +} + +.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; +} + +/* Responsive Design */ +@media screen and (max-width: 1024px) { + .login-container { + flex-direction: column; + height: auto; + max-width: 500px; + } + + .login-form, .login-visual { + width: 100%; + height: auto; + } + + .login-visual { + height: 300px; + } + + .logo { + position: static; + margin: 20px auto; + margin-bottom: 0; + } + + .trademark, .language-selector { + position: static; + text-align: center; + margin: 20px 0; + } +} + +@media screen and (max-width: 480px) { + .login-form { + padding: 20px; + } + + .header h1 { + font-size: 20px; + } +} \ No newline at end of file diff --git a/custom/morvalwatches/style/morvalwatches_reset.css b/custom/morvalwatches/style/morvalwatches_reset.css new file mode 100644 index 0000000..a88f437 --- /dev/null +++ b/custom/morvalwatches/style/morvalwatches_reset.css @@ -0,0 +1,231 @@ +:root { + --color-white: #FFFFFF; + --color-light-blue: #344fd5c2; + --color-blue: #0b1054; + --color-red: #a75151; + --text-color: #333333; + --error-background: #f3c3c3; +} + + +* { + padding: 0; + margin: 0; + box-sizing: border-box; + font-family: "Open Sans", Helvetica, sans-serif; + accent-color: var(--color-blue); +} + +body { + display: flex; + justify-content: center; + align-items: center; + min-height: 100vh; + background-color: var(--color-white); + padding: 20px; +} + +.login-container { + display: flex; + 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; +} + +.login-form { + width: 45%; + padding: 40px; + display: flex; + flex-direction: column; + justify-content: center; + position: relative; +} + +.logo { + position: absolute; + top: 20px; + left: 20px; + background-image: url(VeLiTi-Logo2.png); + background-repeat: no-repeat; + opacity: inherit; + width: 85px; + height: 120px; + margin: 0 auto; + -webkit-filter: drop-shadow(5px 5px 5px #222); + filter: drop-shadow(5px 5px 5px #222); +} + +.login-visual { + width: 55%; + position: relative; + overflow: hidden; + background-image: url(veliti_intro.png); + background-position: center center; + background-size: 100% 100%; + background-color: var(--color-light-blue); + background-repeat: no-repeat; +} + +.login-visual img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.register-link { + position: absolute; + top: 20px; + right: 20px; + text-decoration: none; + color: var(--text-color); +} + +.header { + margin-bottom: 30px; +} + +.header h1 { + font-size: 24px; + margin-bottom: 10px; +} + +.header p { + color: #666; +} + +.input-group { + margin-bottom: 15px; + position: relative; +} + +.input-group input { + width: 100%; + padding: 10px; + border: 1px solid #ddd; + border-radius: 4px; +} + +.input-group input[type="email"] { + padding-left: 40px; + background: url('data:image/svg+xml;utf8,') no-repeat left 10px center; +} + +.input-group input[type="password"] { + padding-left: 40px; + background: url('data:image/svg+xml;utf8,') no-repeat left 10px center; +} + +.forgot-password { + color: var(--text-color); + text-decoration: none; + text-align: right; + margin-top: 5px; + float: right; + font-size: 12px; +} + +.remember-me { + display: flex; + align-items: center; + margin-bottom: 20px; +} + +.remember-me input { + margin-right: 10px; +} + +.maintenance { + padding: 5px; +} + +.message p { + margin-top: 5px; + background-color: var(--error-background); + border-left: 4px solid var(--color-red); + color: var(--color-red); + padding: 5px; + border-radius: 4px; + text-align: center; +} + +.login-btn { + width: 100%; + padding: 12px; + background-color: var(--color-light-blue); + color: var(--color-white); + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.login-btn:hover { + background-color: var(--color-blue); +} + +.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; +} + +/* Responsive Design */ +@media screen and (max-width: 1024px) { + .login-container { + flex-direction: column; + height: auto; + max-width: 500px; + } + + .login-form, .login-visual { + width: 100%; + height: auto; + } + + .login-visual { + height: 300px; + } + + .logo { + position: static; + margin: 20px auto; + margin-bottom: 0; + } + + .trademark, .language-selector { + position: static; + text-align: center; + margin: 20px 0; + } +} + +@media screen and (max-width: 480px) { + .login-form { + padding: 20px; + } + + .header h1 { + font-size: 20px; + } +} \ No newline at end of file diff --git a/custom/morvalwatches/style/soveliti.css b/custom/morvalwatches/style/soveliti.css new file mode 100644 index 0000000..0ed2857 --- /dev/null +++ b/custom/morvalwatches/style/soveliti.css @@ -0,0 +1,2971 @@ +:root { + --color-text-default: #555555; + --color-text-heading: #4a5361; + --color-bg-body: #fff; + --color-bg-body: #ffffff; + --color-bg-header: #F8f9fa; + --color-bg-header: #f8f9fa; + --color-border-light: #eee; + --color-hover-dark: #606c7e; + --color-hover-light: #fbfbfb; + --color-note-bg: #383c46; + --color-note-text: #afb1b5; + --color-selected-bg: #527ee5; + --color-sub-hover: #2a374a; + --color-title-muted: #959faf; + --color-title-muted-light: #99999a; + --color-title-bg: #dbdddf; + --color-icon-bg: #7c8394; + --color-msg-success-bg: #C3F3D7; + --color-msg-success: #51a775; + --color-msg-error-bg: #f3c3c3; + --color-msg-error: #a75151; + --color-border-input: #d0d3d5; + --color-border-input-hover: #b5b9bd; + --color-filter-text-hover: #343a44; + --color-btn-bg: #4a79b4; + --color-btn-hover-bg: #4672a9; + --color-tab-bg: #dedfe1; + --color-tab-hover: #d8dadc; + --color-muted: #8d9398; + --color-status-neutral: #81848a; + --color-status-enabled: #13b368; + --color-status-warning: #eb8a0d; + --color-status-disabled: #bd4141; + --color-danger: #e26060; + --color-btn-secondary: #bed4ea; + --color-btn-neutral: #f1f3f4; + --color-pagination-hover: #6d7c90; + --color-pagination-bg: #758497; + --color-accent-blue: #0060ba; + --color-accent-blue-hover: #003260; + --color-accent-red: #ba0000; + --color-accent-red-hover: #600000; + --color-disabled: #b1b3b4; + --color-disabled-hover: #a9abad; +} + +* { + box-sizing: border-box; + font-family: -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen, ubuntu, cantarell, "fira sans", "droid sans", "helvetica neue", Arial, sans-serif; + font-size: 16px; +} + +html { + height: 100%; +} + +body { + position: relative; + min-height: 100%; + color: var(--color-text-default); + background-color: var(--color-bg-body); + margin: 0; +} + +h1, h2, h3, h4, h5 { + color: var(--color-text-heading); + margin: 0; + padding: 0; +} + +header { + display: flex; + position: fixed; + top: 0; + left: 0; + padding-left: 260px; + z-index: 999; + width: 100%; + height: 55px; + background-color: var(--color-bg-header); + box-shadow: 0px 0px 4px 1px rgba(0, 0, 0, 0.15); +} + +header a { + display: inline-flex; + color: var(--color-text-heading); + height: 100%; + text-decoration: none; + justify-content: center; + align-items: center; + padding: 0 20px; +} + +header a i { + font-size: 16px; +} + +header a:hover, header a:active { + color: var(--color-hover-dark); +} + +header .space-between { + flex: 1; +} + +header .dropdown { + display: inline-flex; + color: var(--color-text-heading); + height: 100%; + cursor: pointer; + justify-content: center; + align-items: center; + padding: 0 30px; +} + +header .dropdown i { + font-size: 18px; +} + +header .dropdown:hover, header .dropdown:active { + color: var(--color-hover-dark); +} + +header .dropdown .list { + display: none; + position: absolute; + top: 100%; + right: 0; + width: 150px; + background-color: var(--color-bg-body); + border-top: 1px solid var(--color-border-light); + box-shadow: 0px 2px 2px 1px rgba(0, 0, 0, 0.05); +} + +header .dropdown .list a { + padding: 10px 15px; + font-size: 14px; +} + +header .dropdown .list a:hover { + background-color: var(--color-hover-light); +} + +header .dropdown:hover .list, header .dropdown:active .list { + display: flex; + flex-flow: column; +} + +header.full { + padding-left: 0; +} + +aside { + position: fixed; + z-index: 999999; + height: 100%; + width: 260px; + display: flex; + flex-flow: column; + background-color: var(--color-bg-header); + overflow-y: auto; +} + +aside h1 { + background: url("SoVeLiTi.png"); + background-position: center center; + background-repeat: no-repeat; + background-size: 50%; + padding: 30px; +} + +aside > a { + font-size: 14px; + font-weight: 600; + text-decoration: none; + color: var(--color-note-text); + padding: 15px 20px; +} + +aside > a i { + color: inherit; + width: 40px; +} + +aside > a:hover, aside > a.selected { + background-color: var(--color-selected-bg); + color: var(--color-bg-body); + padding: 15px 17px; + border-radius: 5px; +} + +aside > a.selected + .sub { + display: flex; +} + +aside > a .note { + background-color: var(--color-note-bg); + padding: 1px 5px; + border-radius: 4px; + font-size: 12px; + margin-left: 10px; +} + +aside .sub { + display: none; + flex-flow: column; + background-color: var(--color-bg-header); + padding: 13px 0; +} + +aside .sub a { + font-size: 14px; + color: var(--color-note-text); + text-decoration: none; + padding: 4px 20px; +} + +aside .sub a span { + display: inline-block; + width: 40px; + font-size: 12px; +} + +aside .sub a:hover, aside .sub a.selected { + color: var(--color-sub-hover); +} + +aside .footer { + display: flex; + flex-flow: column; + margin-top: auto; + padding: 15px; + font-size: 14px; + color: var(--color-note-text); +} + +aside .footer a { + text-decoration: none; + font-size: 14px; + color: var(--color-note-text); + padding-bottom: 2px; +} + +aside .footer a:hover { + color: #7c7f83; +} + +aside.closed { + display: none; +} + +main { + padding: 30px; + padding-left: 290px; + padding-top: 85px; +} + +main.full { + padding-left: 30px; + padding-right: 30px; +} + +main h2 { + font-size: 20px; + padding-bottom: 20px; + font-weight: 600; +} + +main h2 span { + font-size: 16px; + margin-left: 5px; + font-weight: 600; + color: var(--color-title-muted); +} + +main .content-title { + border-bottom: 1px solid var(--color-title-bg); + display: flex; +} + +main .content-title h2 { + flex: 1; +} + +main .content-title .btn { + height: 36px; +} + +main .content-title .title { + flex: 1; + display: flex; + align-items: center; + padding-bottom: 15px; +} + +main .content-title .title i { + display: inline-flex; + justify-content: center; + align-items: center; + background-color: var(--color-selected-bg); + color: var(--color-bg-body); + width: 52px; + height: 42px; + border-radius: 4px; + margin-right: 12px; +} + +main .content-title .title i.alt { + background-color: var(--color-icon-bg); +} + +main .content-title .title h2 { + padding: 0 0 3px 0; +} + +main .content-title .title p { + margin: 0; + font-size: 14px; + color: var(--color-title-muted-light); + font-weight: 500; +} + +main .msg { + display: flex; + align-items: center; + margin: 15px 0 0 0; + padding: 15px; + font-weight: 500; + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.1); +} + +main .msg p { + margin: 0; + padding: 0 15px; + font-size: 14px; + flex: 1; +} + +main .msg i.fa-times { + align-self: flex-end; + justify-content: flex-end; + cursor: pointer; +} + +main .msg i.fa-times:hover { + opacity: .9; +} + +main .msg.success { + background-color: #c3f3d7; + border-left: 4px solid var(--color-msg-success); + color: var(--color-msg-success); +} + +main .msg.success i { + color: var(--color-msg-success); +} + +main .msg.error { + background-color: var(--color-msg-error-bg); + border-left: 4px solid var(--color-msg-error); + color: var(--color-msg-error); +} + +main .msg.error i { + color: var(--color-msg-error); +} + +main .content-header { + display: flex; + justify-content: space-between; +} + +main .content-header form { + display: flex; + justify-content: space-between; +} + +main .content-header form .search input, main .content-header form > select { + background-color: transparent; + outline: none; + border: none; + height: 40px; + width: 220px; + border-bottom: 1px solid var(--color-border-input); + padding-right: 25px; + margin-left: 10px; +} + +main .content-header form .search input:hover, main .content-header form .search input:active, main .content-header form > select:hover, main .content-header form > select:active { + border-bottom: 1px solid var(--color-border-input-hover); +} + +main .content-header form > select { + width: 150px; +} + +main .content-header form > a { + text-decoration: none; + display: inline-flex; + color: #676d72; + justify-self: center; + align-items: center; + padding: 0 5px; +} + +main .content-header form > a:hover { + color: #4f5357; +} + +main .content-header .search label { + position: relative; +} + +main .content-header .search i { + position: absolute; + right: 4px; + top: 4px; + bottom: 0; + font-size: 14px; + margin-top: auto; + margin-bottom: auto; + color: var(--color-border-input-hover); +} + +main .content-header .filters { + display: flex; + position: relative; + margin-right: 10px; + margin-bottom: 3px; + align-items: center; +} + +main .content-header .filters a { + text-decoration: none; + font-weight: 600; + color: var(--color-text-heading); + white-space: nowrap; +} + +main .content-header .filters a:hover { + color: var(--color-filter-text-hover); +} + +main .content-header .filters .list { + display: none; + top: calc(100% + 5px); + width: 180px; + flex-flow: column; + position: absolute; + background-color: var(--color-bg-body); + padding: 10px; + box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.1); +} + +main .content-header .filters .list label { + padding-bottom: 5px; + font-size: 14px; +} + +main .content-header .filters .list input { + margin-right: 10px; +} + +main .content-header .filters .list select { + width: 100%; + margin-bottom: 10px; + font-size: 14px; + padding: 3px; + border: 1px solid var(--color-tab-bg); +} + +main .content-header .filters .list button { + background: var(--color-btn-bg); + border: 0; + color: var(--color-bg-body); + padding: 5px 0; + font-size: 12px; + font-weight: 600; + margin-top: 5px; + cursor: pointer; + border-radius: 4px; +} + +main .content-header .filters .list button:hover { + background: var(--color-btn-hover-bg); +} + + +main .content-header .sort { + display: flex; + position: relative; + margin-right: 10px; + margin-bottom: 3px; + align-items: center; +} + +main .content-header .sort a { + text-decoration: none; + font-weight: 600; + color: var(--color-text-heading); + white-space: nowrap; +} + +main .content-header .sort a:hover { + color: var(--color-filter-text-hover); +} + +main .content-header .sort .list { + display: none; + top: calc(100% + 5px); + width: 180px; + flex-flow: column; + position: absolute; + background-color: var(--color-bg-body); + padding: 10px; + box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.1); +} + +main .content-header .sort .list label { + padding-bottom: 5px; + font-size: 14px; +} + +main .content-header .sort .list input { + margin-right: 10px; +} + +main .content-header .sort .list select { + width: 100%; + margin-bottom: 10px; + font-size: 14px; + padding: 3px; + border: 1px solid var(--color-tab-bg); +} + +main .content-header .sort .list button { + background: var(--color-btn-bg); + border: 0; + color: var(--color-bg-body); + padding: 5px 0; + font-size: 12px; + font-weight: 600; + margin-top: 5px; + cursor: pointer; + border-radius: 4px; +} + +main .content-header .sort .list button:hover { + background: var(--color-btn-hover-bg); +} + +main .content-block { + background-color: var(--color-bg-body); + margin-top: 25px; + padding: 15px; + box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.03); + overflow: hidden; + border-radius: 3px; +} + +main .content-block .block-header { + position: relative; + border-bottom: 1px solid #f0f1f2; + margin-bottom: 20px; + padding: 0 15px 15px 15px; + margin-left: -15px; + margin-right: -15px; + font-size: 14px; + font-weight: 500; +} + +main .content-block .block-header i { + display: inline-flex; + height: 25px; + width: 25px; + padding-top: 2px; + justify-content: center; + align-items: center; + border-radius: 50%; + background-color: var(--color-selected-bg); + color: var(--color-bg-body); + margin-right: 10px; +} + +main .content-block-wrapper { + display: flex; + width: 100%; + padding-top: 25px; +} + +main .content-block-wrapper .content-block { + width: 100%; + margin: 0 10px; + border-radius: 3px; +} + +main .content-block-wrapper .content-block:first-child { + margin-left: 0; +} + +main .content-block-wrapper .content-block:last-child { + margin-right: 0; +} + +main .tabs { + display: flex; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + background-color: var(--color-tab-bg); + margin-top: 25px; + box-shadow: 0px 0px 4px 1px rgba(0, 0, 0, 0.03); + z-index: 100; +} + +main .tabs a { + display: flex; + text-decoration: none; + padding: 12px 15px; + border: 0; + color: #6b788c; + font-weight: 500; + font-size: 14px; +} + +main .tabs a:hover { + background-color: var(--color-tab-hover); +} + +main .tabs a.active { + color: var(--color-text-heading); + background-color: var(--color-bg-body); +} + +main .tabs ~ .content-block { + margin-top: 0; + box-shadow: 0px 6px 5px 1px rgba(0, 0, 0, 0.03); +} + +main .tab-content { + display: none; +} + +main .tab-content.active { + display: block; +} + +main .dashboard { + display: flex; + justify-content: space-between; + padding-bottom: 40px; +} + +main .dashboard .stat { + width: 24%; + padding: 0; + display: flex; + flex-flow: wrap; + border-radius: 3px; +} + +main .dashboard .stat > i { + display: inline-flex; + justify-content: center; + padding: 15px; + margin: 30px 25px 0 0; + align-items: center; + font-size: 18px; + height: 40px; + width: 40px; + border-radius: 5px; + background-color: var(--color-selected-bg); + color: var(--color-bg-body); +} + +main .dashboard .stat .data { + padding: 7px; + flex: 1; +} + +main .dashboard .stat .data h3 { + font-size: 16px; + font-weight: 400; + padding: 15px 15px 0 15px; +} + +main .dashboard .stat .data p { + margin: 0; + padding: 10px 15px 15px 15px; + font-size: 24px; + font-weight: 700; +} + +main .dashboard .stat .footer { + width: 100%; + border-top: 1px solid #ebeced; + background-color: var(--color-hover-light); + color: #9aa0a5; + font-size: 14px; + padding: 10px; +} + +main .dashboard .stat .footer i { + padding-right: 5px; +} + +main .form { + display: flex; + flex-flow: column; + padding: 20px; +} + +main .form input[type="text"], main .form input[type="password"], main .form input[type="datetime-local"], main .form input[type="email"], main .form input[type="number"], main .form textarea, main .form select { + width: 100%; + padding: 15px 5px; + margin-bottom: 25px; + border: 0; + border-bottom: 1px solid var(--color-tab-bg); +} + +main .form input[type="text"]:hover, main .form input[type="text"]:active, main .form input[type="password"]:hover, main .form input[type="password"]:active, main .form input[type="datetime-local"]:hover, main .form input[type="datetime-local"]:active, main .form input[type="email"]:hover, main .form input[type="email"]:active, main .form input[type="number"]:hover, main .form input[type="number"]:active, main .form textarea:hover, main .form textarea:active, main .form select:hover, main .form select:active { + border-bottom: 1px solid var(--color-border-input-hover); +} + +main .form textarea { + height: 200px; +} + +main .form input[type="checkbox"] { + width: auto; + margin: 15px 0 25px 2px; + transform: scale(1.2); +} + +main .form label { + display: block; + font-weight: 600; +} + +main .form label .required { + font-style: normal; + color: var(--color-danger); +} + +main .form button { + background-color: var(--color-tab-bg); + color: #676d72; + border: 0; + padding: 5px; + width: 100%; + font-weight: 600; + font-size: 14px; + cursor: pointer; +} + +main .form button:hover { + background-color: #d6d8da; +} + +main .form .multiselect { + position: relative; + display: flex; + flex-flow: wrap; + border-bottom: 1px solid var(--color-tab-bg); + padding-bottom: 10px; + margin: 15px 0 25px 0; + margin-bottom: 25px; +} + +main .form .multiselect > .item { + display: inline-flex; + border: 1px solid var(--color-tab-bg); + padding: 0 10px; + height: 40px; + margin: 0 5px 5px 0; + font-size: 14px; + justify-content: center; + align-items: center; +} +main .multiselect > .item { + display: inline-flex; + border: 1px solid var(--color-tab-bg); + padding: 0 10px; + height: 40px; + margin: 0 5px 5px 0; + font-size: 14px; + justify-content: center; + align-items: center; +} + +main .form .multiselect > .item .remove { + font-style: normal; + cursor: pointer; + font-size: 19px; + margin-right: 3px; + margin-top: -2px; + color: var(--color-border-input-hover); +} + +main .form .multiselect > .item .remove:hover { + color: #9aa0a5; +} + +main .form .multiselect input { + height: 40px; + width: 80px; + flex-grow: 1; + padding: 0; + margin: 0; + outline: 0; + border: 0; +} + +main .form .multiselect input:hover { + border: 0; +} + +main .form .multiselect .list { + display: none; + position: absolute; + top: 100%; + width: 100%; + flex-flow: column; + background-color: var(--color-bg-body); + box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.1); + max-height: 100px; + overflow-y: auto; + z-index: 1000000000; +} + +main .form .multiselect .list span { + display: flex; + padding: 5px 7px; + cursor: pointer; +} + +main .form .multiselect .list span:hover { + background-color: #f3f4f4; +} + +main .form .multiselect:hover, main .form .multiselect:active { + border-bottom: 1px solid var(--color-border-input-hover); +} + +main .top-nav { + display: flex; + flex-flow: wrap; + padding-top: 20px; +} + +main .error { + padding: 15px; + margin: 0; +} + +main .pagination { + display: flex; + align-items: center; + padding: 25px 0; +} + +main .pagination a { + display: inline-flex; + text-decoration: none; + background-color: var(--color-pagination-bg); + font-size: 14px; + font-weight: 600; + color: var(--color-bg-body); + border-radius: 4px; + padding: 7px 10px; +} + +main .pagination a:hover { + background-color: var(--color-pagination-hover); +} + +main .pagination a:first-child { + margin-right: 10px; +} + +main .pagination a:last-child { + margin-left: 10px; +} + +main .pagination span { + font-weight: 600; + margin: 10px; +} + +main .media-page .media { + display: flex; + flex-flow: wrap; + padding: 15px; +} + +main .media-page .media .image { + position: relative; + text-decoration: none; + border: 1px solid #e3e4e6; + padding: 10px; + width: 150px; + height: 135px; + margin: 0 15px 50px 0; +} + +main .media-page .media .image img { + width: 100%; + height: 100%; + object-fit: contain; + transition: all ease .3s; +} + +main .media-page .media .image::after { + content: attr(data-title); + display: block; + position: absolute; + color: #6e7581; + font-size: 14px; + font-weight: 500; + top: calc(100% + 5px); + left: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; +} + +main .media-page .media .image:hover { + border: 1px solid var(--color-border-input); +} + +main .media-page .media .image:hover img { + transform: scale(1.05); +} + +main .media-page .media .image:hover .title { + color: #5c6471; +} + +main .order-details .order-detail { + display: flex; + justify-content: space-between; + padding-bottom: 15px; + word-break: break-all; +} + +main .order-details .order-detail h3 { + padding: 0; + margin: 0; + font-size: 14px; + font-weight: 500; +} + +main .order-details .order-detail p { + padding: 0; + margin: 0; +} + +main .order-table { + margin: 0; +} + +main .order-table .item-list-end { + border-bottom: 1px solid #f0f1f2; +} + +main .order-table .subtotal { + padding-top: 20px; +} + +main .order-table .subtotal, main .order-table .shipping, main .order-table .total { + text-align: right; + font-weight: 500; + font-size: 14px; +} + +main .order-table .num { + text-align: right; +} + +main .manage-order-table input, main .manage-order-table select { + border: 0; + padding: 5px 0; + height: 40px; + background: transparent; + width: 90%; + border-bottom: 1px solid var(--color-tab-bg); +} + +main .manage-order-table .add-item { + display: inline-block; + text-decoration: none; + color: #676d72; + padding: 25px 0; +} + +main .manage-order-table .add-item i { + padding-right: 5px; +} + +main .manage-order-table .add-item:hover { + color: #4f5357; +} + +main .manage-order-table .delete-item { + cursor: pointer; + color: #676d72; +} + +main .manage-order-table .delete-item:hover { + color: #b44a4a; +} + +.table { + overflow-x: auto; + padding: 0 10px; +} + +.table table { + width: 100%; + border-collapse: collapse; +} + +.table table thead td { + font-weight: 600; + font-size: 14px; + padding: 15px 0; +} + +.table table thead td a { + font-weight: inherit; + font-size: inherit; + color: inherit; + text-decoration: none; +} + +.table table thead td i { + padding-left: 5px; +} + +.table table thead tr { + border-bottom: 1px solid #f0f1f2; +} + +.table table tbody tr:first-child td { + padding-top: 10px; +} + +.table table tbody td { + padding: 5px; +} + +.table table tbody .img { + padding: 1px 0; +} + +.table table tbody .rrp { + color: var(--color-danger); +} + +.table table tbody .status { + padding: 4px 7px; + border-radius: 4px; + background-color: var(--color-status-neutral); + font-weight: 500; + font-size: 12px; + color: var(--color-bg-body); +} + +.table table tbody .status.enabled { + padding: 4px 7px; + border-radius: 4px; + background-color: var(--color-status-enabled); + font-weight: 500; + font-size: 12px; + color: var(--color-bg-body); +} + +.table table tbody .status.disabled { + padding: 4px 7px; + border-radius: 4px; + background-color: var(--color-status-disabled); + font-weight: 500; + font-size: 12px; + color: var(--color-bg-body); +} + + +.status { + padding: 4px 7px; + border-radius: 4px; + background-color: var(--color-status-neutral); + font-weight: 500; + font-size: 12px; + color: var(--color-bg-body); +} + +.status.enabled { + background-color: var(--color-status-enabled); +} + +.status.disabled { + background-color: var(--color-status-disabled); +} + +.status.id4 { + background-color: var(--color-status-enabled); +} + +.status.id3 { +background-color: var(--color-status-enabled); +} + +.status.id2 { + background-color: var(--color-status-warning); +} +.table table tbody .status.service_renewal{ + background-color: var(--color-status-warning); +} + +.table table tbody .status.firmware_update{ + background-color: var(--color-status-warning); +} + +.table table tbody .status.warranty_outdated{ + background-color: var(--color-status-warning); +} +.table table tbody .status.warranty { + background-color: var(--color-status-enabled); +} + +.table table tbody .status.service{ + background-color: var(--color-status-enabled); +} + +.table table tbody .status.firmware_recent{ + background-color: var(--color-status-enabled); +} + +.status.id5 { + background-color: var(--color-status-disabled); +} + +.table table tbody .status.id4, .table table tbody .status.id3, .table table tbody .status.warranty { + background-color: var(--color-status-enabled); +} + +.table table tbody .status.id2 { + background-color: var(--color-status-warning); +} + +.table table tbody .status.id5{ + background-color: var(--color-status-disabled); +} + +.product-media-tab, .product-options-tab, .product-downloads-tab { + max-width: 800px; +} + +.product-media-tab .product-media, .product-media-tab .product-option, .product-media-tab .product-download, .product-options-tab .product-media, .product-options-tab .product-option, .product-options-tab .product-download, .product-downloads-tab .product-media, .product-downloads-tab .product-option, .product-downloads-tab .product-download { + display: flex; + border-right: 4px solid #e8ebee; + margin-bottom: 15px; +} + +.product-media-tab .product-media:first-child, .product-media-tab .product-option:first-child, .product-media-tab .product-download:first-child, .product-options-tab .product-media:first-child, .product-options-tab .product-option:first-child, .product-options-tab .product-download:first-child, .product-downloads-tab .product-media:first-child, .product-downloads-tab .product-option:first-child, .product-downloads-tab .product-download:first-child { + border-right: 4px solid #72a0d4; +} + +.product-media-tab .product-media:first-child .move-up, .product-media-tab .product-option:first-child .move-up, .product-media-tab .product-download:first-child .move-up, .product-options-tab .product-media:first-child .move-up, .product-options-tab .product-option:first-child .move-up, .product-options-tab .product-download:first-child .move-up, .product-downloads-tab .product-media:first-child .move-up, .product-downloads-tab .product-option:first-child .move-up, .product-downloads-tab .product-download:first-child .move-up { + display: none; +} + +.product-media-tab .product-media:last-child .move-down, .product-media-tab .product-option:last-child .move-down, .product-media-tab .product-download:last-child .move-down, .product-options-tab .product-media:last-child .move-down, .product-options-tab .product-option:last-child .move-down, .product-options-tab .product-download:last-child .move-down, .product-downloads-tab .product-media:last-child .move-down, .product-downloads-tab .product-option:last-child .move-down, .product-downloads-tab .product-download:last-child .move-down { + display: none; +} + +.product-media-tab .product-media .media-index, .product-media-tab .product-media .option-index, .product-media-tab .product-media .download-index, .product-media-tab .product-option .media-index, .product-media-tab .product-option .option-index, .product-media-tab .product-option .download-index, .product-media-tab .product-download .media-index, .product-media-tab .product-download .option-index, .product-media-tab .product-download .download-index, .product-options-tab .product-media .media-index, .product-options-tab .product-media .option-index, .product-options-tab .product-media .download-index, .product-options-tab .product-option .media-index, .product-options-tab .product-option .option-index, .product-options-tab .product-option .download-index, .product-options-tab .product-download .media-index, .product-options-tab .product-download .option-index, .product-options-tab .product-download .download-index, .product-downloads-tab .product-media .media-index, .product-downloads-tab .product-media .option-index, .product-downloads-tab .product-media .download-index, .product-downloads-tab .product-option .media-index, .product-downloads-tab .product-option .option-index, .product-downloads-tab .product-option .download-index, .product-downloads-tab .product-download .media-index, .product-downloads-tab .product-download .option-index, .product-downloads-tab .product-download .download-index { + display: flex; + color: #bcc0c4; + font-weight: 500; + align-items: center; + padding-right: 15px; + font-weight: 14px; + width: 30px; +} + +.product-media-tab .product-media .media-img, .product-media-tab .product-option .media-img, .product-media-tab .product-download .media-img, .product-options-tab .product-media .media-img, .product-options-tab .product-option .media-img, .product-options-tab .product-download .media-img, .product-downloads-tab .product-media .media-img, .product-downloads-tab .product-option .media-img, .product-downloads-tab .product-download .media-img { + text-decoration: none; + display: flex; + height: 70px; + width: 100px; + border: 1px solid #ddd; + padding: 5px; +} + +.product-media-tab .product-media .media-img img, .product-media-tab .product-option .media-img img, .product-media-tab .product-download .media-img img, .product-options-tab .product-media .media-img img, .product-options-tab .product-option .media-img img, .product-options-tab .product-download .media-img img, .product-downloads-tab .product-media .media-img img, .product-downloads-tab .product-option .media-img img, .product-downloads-tab .product-download .media-img img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.product-media-tab .product-media .media-text, .product-media-tab .product-media .option-text, .product-media-tab .product-media .download-text, .product-media-tab .product-option .media-text, .product-media-tab .product-option .option-text, .product-media-tab .product-option .download-text, .product-media-tab .product-download .media-text, .product-media-tab .product-download .option-text, .product-media-tab .product-download .download-text, .product-options-tab .product-media .media-text, .product-options-tab .product-media .option-text, .product-options-tab .product-media .download-text, .product-options-tab .product-option .media-text, .product-options-tab .product-option .option-text, .product-options-tab .product-option .download-text, .product-options-tab .product-download .media-text, .product-options-tab .product-download .option-text, .product-options-tab .product-download .download-text, .product-downloads-tab .product-media .media-text, .product-downloads-tab .product-media .option-text, .product-downloads-tab .product-media .download-text, .product-downloads-tab .product-option .media-text, .product-downloads-tab .product-option .option-text, .product-downloads-tab .product-option .download-text, .product-downloads-tab .product-download .media-text, .product-downloads-tab .product-download .option-text, .product-downloads-tab .product-download .download-text { + display: flex; + flex-flow: column; + justify-content: center; + flex: 1; + padding-left: 15px; +} + +.product-media-tab .product-media .media-text h3, .product-media-tab .product-media .option-text h3, .product-media-tab .product-media .download-text h3, .product-media-tab .product-option .media-text h3, .product-media-tab .product-option .option-text h3, .product-media-tab .product-option .download-text h3, .product-media-tab .product-download .media-text h3, .product-media-tab .product-download .option-text h3, .product-media-tab .product-download .download-text h3, .product-options-tab .product-media .media-text h3, .product-options-tab .product-media .option-text h3, .product-options-tab .product-media .download-text h3, .product-options-tab .product-option .media-text h3, .product-options-tab .product-option .option-text h3, .product-options-tab .product-option .download-text h3, .product-options-tab .product-download .media-text h3, .product-options-tab .product-download .option-text h3, .product-options-tab .product-download .download-text h3, .product-downloads-tab .product-media .media-text h3, .product-downloads-tab .product-media .option-text h3, .product-downloads-tab .product-media .download-text h3, .product-downloads-tab .product-option .media-text h3, .product-downloads-tab .product-option .option-text h3, .product-downloads-tab .product-option .download-text h3, .product-downloads-tab .product-download .media-text h3, .product-downloads-tab .product-download .option-text h3, .product-downloads-tab .product-download .download-text h3 { + font-weight: 500; +} + +.product-media-tab .product-media .media-text p, .product-media-tab .product-media .option-text p, .product-media-tab .product-media .download-text p, .product-media-tab .product-option .media-text p, .product-media-tab .product-option .option-text p, .product-media-tab .product-option .download-text p, .product-media-tab .product-download .media-text p, .product-media-tab .product-download .option-text p, .product-media-tab .product-download .download-text p, .product-options-tab .product-media .media-text p, .product-options-tab .product-media .option-text p, .product-options-tab .product-media .download-text p, .product-options-tab .product-option .media-text p, .product-options-tab .product-option .option-text p, .product-options-tab .product-option .download-text p, .product-options-tab .product-download .media-text p, .product-options-tab .product-download .option-text p, .product-options-tab .product-download .download-text p, .product-downloads-tab .product-media .media-text p, .product-downloads-tab .product-media .option-text p, .product-downloads-tab .product-media .download-text p, .product-downloads-tab .product-option .media-text p, .product-downloads-tab .product-option .option-text p, .product-downloads-tab .product-option .download-text p, .product-downloads-tab .product-download .media-text p, .product-downloads-tab .product-download .option-text p, .product-downloads-tab .product-download .download-text p { + margin: 0; + color: var(--color-muted); + font-size: 14px; +} + +.product-media-tab .product-media .media-position, .product-media-tab .product-media .option-position, .product-media-tab .product-media .download-position, .product-media-tab .product-option .media-position, .product-media-tab .product-option .option-position, .product-media-tab .product-option .download-position, .product-media-tab .product-download .media-position, .product-media-tab .product-download .option-position, .product-media-tab .product-download .download-position, .product-options-tab .product-media .media-position, .product-options-tab .product-media .option-position, .product-options-tab .product-media .download-position, .product-options-tab .product-option .media-position, .product-options-tab .product-option .option-position, .product-options-tab .product-option .download-position, .product-options-tab .product-download .media-position, .product-options-tab .product-download .option-position, .product-options-tab .product-download .download-position, .product-downloads-tab .product-media .media-position, .product-downloads-tab .product-media .option-position, .product-downloads-tab .product-media .download-position, .product-downloads-tab .product-option .media-position, .product-downloads-tab .product-option .option-position, .product-downloads-tab .product-option .download-position, .product-downloads-tab .product-download .media-position, .product-downloads-tab .product-download .option-position, .product-downloads-tab .product-download .download-position { + display: flex; + width: 100px; + justify-content: flex-end; + align-items: center; + padding-right: 20px; +} + +.product-media-tab .product-media .media-position i, .product-media-tab .product-media .option-position i, .product-media-tab .product-media .download-position i, .product-media-tab .product-option .media-position i, .product-media-tab .product-option .option-position i, .product-media-tab .product-option .download-position i, .product-media-tab .product-download .media-position i, .product-media-tab .product-download .option-position i, .product-media-tab .product-download .download-position i, .product-options-tab .product-media .media-position i, .product-options-tab .product-media .option-position i, .product-options-tab .product-media .download-position i, .product-options-tab .product-option .media-position i, .product-options-tab .product-option .option-position i, .product-options-tab .product-option .download-position i, .product-options-tab .product-download .media-position i, .product-options-tab .product-download .option-position i, .product-options-tab .product-download .download-position i, .product-downloads-tab .product-media .media-position i, .product-downloads-tab .product-media .option-position i, .product-downloads-tab .product-media .download-position i, .product-downloads-tab .product-option .media-position i, .product-downloads-tab .product-option .option-position i, .product-downloads-tab .product-option .download-position i, .product-downloads-tab .product-download .media-position i, .product-downloads-tab .product-download .option-position i, .product-downloads-tab .product-download .download-position i { + cursor: pointer; + font-size: 20px; + padding-left: 15px; + color: #cbcfd4; +} + +.product-media-tab .product-media .media-position i:hover, .product-media-tab .product-media .option-position i:hover, .product-media-tab .product-media .download-position i:hover, .product-media-tab .product-option .media-position i:hover, .product-media-tab .product-option .option-position i:hover, .product-media-tab .product-option .download-position i:hover, .product-media-tab .product-download .media-position i:hover, .product-media-tab .product-download .option-position i:hover, .product-media-tab .product-download .download-position i:hover, .product-options-tab .product-media .media-position i:hover, .product-options-tab .product-media .option-position i:hover, .product-options-tab .product-media .download-position i:hover, .product-options-tab .product-option .media-position i:hover, .product-options-tab .product-option .option-position i:hover, .product-options-tab .product-option .download-position i:hover, .product-options-tab .product-download .media-position i:hover, .product-options-tab .product-download .option-position i:hover, .product-options-tab .product-download .download-position i:hover, .product-downloads-tab .product-media .media-position i:hover, .product-downloads-tab .product-media .option-position i:hover, .product-downloads-tab .product-media .download-position i:hover, .product-downloads-tab .product-option .media-position i:hover, .product-downloads-tab .product-option .option-position i:hover, .product-downloads-tab .product-option .download-position i:hover, .product-downloads-tab .product-download .media-position i:hover, .product-downloads-tab .product-download .option-position i:hover, .product-downloads-tab .product-download .download-position i:hover { + color: #afb5bd; +} + +.product-media-tab .product-media .media-position i.media-delete, .product-media-tab .product-media .media-position i.option-delete, .product-media-tab .product-media .media-position i.download-delete, .product-media-tab .product-media .option-position i.media-delete, .product-media-tab .product-media .option-position i.option-delete, .product-media-tab .product-media .option-position i.download-delete, .product-media-tab .product-media .download-position i.media-delete, .product-media-tab .product-media .download-position i.option-delete, .product-media-tab .product-media .download-position i.download-delete, .product-media-tab .product-option .media-position i.media-delete, .product-media-tab .product-option .media-position i.option-delete, .product-media-tab .product-option .media-position i.download-delete, .product-media-tab .product-option .option-position i.media-delete, .product-media-tab .product-option .option-position i.option-delete, .product-media-tab .product-option .option-position i.download-delete, .product-media-tab .product-option .download-position i.media-delete, .product-media-tab .product-option .download-position i.option-delete, .product-media-tab .product-option .download-position i.download-delete, .product-media-tab .product-download .media-position i.media-delete, .product-media-tab .product-download .media-position i.option-delete, .product-media-tab .product-download .media-position i.download-delete, .product-media-tab .product-download .option-position i.media-delete, .product-media-tab .product-download .option-position i.option-delete, .product-media-tab .product-download .option-position i.download-delete, .product-media-tab .product-download .download-position i.media-delete, .product-media-tab .product-download .download-position i.option-delete, .product-media-tab .product-download .download-position i.download-delete, .product-options-tab .product-media .media-position i.media-delete, .product-options-tab .product-media .media-position i.option-delete, .product-options-tab .product-media .media-position i.download-delete, .product-options-tab .product-media .option-position i.media-delete, .product-options-tab .product-media .option-position i.option-delete, .product-options-tab .product-media .option-position i.download-delete, .product-options-tab .product-media .download-position i.media-delete, .product-options-tab .product-media .download-position i.option-delete, .product-options-tab .product-media .download-position i.download-delete, .product-options-tab .product-option .media-position i.media-delete, .product-options-tab .product-option .media-position i.option-delete, .product-options-tab .product-option .media-position i.download-delete, .product-options-tab .product-option .option-position i.media-delete, .product-options-tab .product-option .option-position i.option-delete, .product-options-tab .product-option .option-position i.download-delete, .product-options-tab .product-option .download-position i.media-delete, .product-options-tab .product-option .download-position i.option-delete, .product-options-tab .product-option .download-position i.download-delete, .product-options-tab .product-download .media-position i.media-delete, .product-options-tab .product-download .media-position i.option-delete, .product-options-tab .product-download .media-position i.download-delete, .product-options-tab .product-download .option-position i.media-delete, .product-options-tab .product-download .option-position i.option-delete, .product-options-tab .product-download .option-position i.download-delete, .product-options-tab .product-download .download-position i.media-delete, .product-options-tab .product-download .download-position i.option-delete, .product-options-tab .product-download .download-position i.download-delete, .product-downloads-tab .product-media .media-position i.media-delete, .product-downloads-tab .product-media .media-position i.option-delete, .product-downloads-tab .product-media .media-position i.download-delete, .product-downloads-tab .product-media .option-position i.media-delete, .product-downloads-tab .product-media .option-position i.option-delete, .product-downloads-tab .product-media .option-position i.download-delete, .product-downloads-tab .product-media .download-position i.media-delete, .product-downloads-tab .product-media .download-position i.option-delete, .product-downloads-tab .product-media .download-position i.download-delete, .product-downloads-tab .product-option .media-position i.media-delete, .product-downloads-tab .product-option .media-position i.option-delete, .product-downloads-tab .product-option .media-position i.download-delete, .product-downloads-tab .product-option .option-position i.media-delete, .product-downloads-tab .product-option .option-position i.option-delete, .product-downloads-tab .product-option .option-position i.download-delete, .product-downloads-tab .product-option .download-position i.media-delete, .product-downloads-tab .product-option .download-position i.option-delete, .product-downloads-tab .product-option .download-position i.download-delete, .product-downloads-tab .product-download .media-position i.media-delete, .product-downloads-tab .product-download .media-position i.option-delete, .product-downloads-tab .product-download .media-position i.download-delete, .product-downloads-tab .product-download .option-position i.media-delete, .product-downloads-tab .product-download .option-position i.option-delete, .product-downloads-tab .product-download .option-position i.download-delete, .product-downloads-tab .product-download .download-position i.media-delete, .product-downloads-tab .product-download .download-position i.option-delete, .product-downloads-tab .product-download .download-position i.download-delete { + padding-right: 5px; + color: #e1e4e6; +} + +.product-media-tab .product-media .media-position i.media-delete:hover, .product-media-tab .product-media .media-position i.option-delete:hover, .product-media-tab .product-media .media-position i.download-delete:hover, .product-media-tab .product-media .option-position i.media-delete:hover, .product-media-tab .product-media .option-position i.option-delete:hover, .product-media-tab .product-media .option-position i.download-delete:hover, .product-media-tab .product-media .download-position i.media-delete:hover, .product-media-tab .product-media .download-position i.option-delete:hover, .product-media-tab .product-media .download-position i.download-delete:hover, .product-media-tab .product-option .media-position i.media-delete:hover, .product-media-tab .product-option .media-position i.option-delete:hover, .product-media-tab .product-option .media-position i.download-delete:hover, .product-media-tab .product-option .option-position i.media-delete:hover, .product-media-tab .product-option .option-position i.option-delete:hover, .product-media-tab .product-option .option-position i.download-delete:hover, .product-media-tab .product-option .download-position i.media-delete:hover, .product-media-tab .product-option .download-position i.option-delete:hover, .product-media-tab .product-option .download-position i.download-delete:hover, .product-media-tab .product-download .media-position i.media-delete:hover, .product-media-tab .product-download .media-position i.option-delete:hover, .product-media-tab .product-download .media-position i.download-delete:hover, .product-media-tab .product-download .option-position i.media-delete:hover, .product-media-tab .product-download .option-position i.option-delete:hover, .product-media-tab .product-download .option-position i.download-delete:hover, .product-media-tab .product-download .download-position i.media-delete:hover, .product-media-tab .product-download .download-position i.option-delete:hover, .product-media-tab .product-download .download-position i.download-delete:hover, .product-options-tab .product-media .media-position i.media-delete:hover, .product-options-tab .product-media .media-position i.option-delete:hover, .product-options-tab .product-media .media-position i.download-delete:hover, .product-options-tab .product-media .option-position i.media-delete:hover, .product-options-tab .product-media .option-position i.option-delete:hover, .product-options-tab .product-media .option-position i.download-delete:hover, .product-options-tab .product-media .download-position i.media-delete:hover, .product-options-tab .product-media .download-position i.option-delete:hover, .product-options-tab .product-media .download-position i.download-delete:hover, .product-options-tab .product-option .media-position i.media-delete:hover, .product-options-tab .product-option .media-position i.option-delete:hover, .product-options-tab .product-option .media-position i.download-delete:hover, .product-options-tab .product-option .option-position i.media-delete:hover, .product-options-tab .product-option .option-position i.option-delete:hover, .product-options-tab .product-option .option-position i.download-delete:hover, .product-options-tab .product-option .download-position i.media-delete:hover, .product-options-tab .product-option .download-position i.option-delete:hover, .product-options-tab .product-option .download-position i.download-delete:hover, .product-options-tab .product-download .media-position i.media-delete:hover, .product-options-tab .product-download .media-position i.option-delete:hover, .product-options-tab .product-download .media-position i.download-delete:hover, .product-options-tab .product-download .option-position i.media-delete:hover, .product-options-tab .product-download .option-position i.option-delete:hover, .product-options-tab .product-download .option-position i.download-delete:hover, .product-options-tab .product-download .download-position i.media-delete:hover, .product-options-tab .product-download .download-position i.option-delete:hover, .product-options-tab .product-download .download-position i.download-delete:hover, .product-downloads-tab .product-media .media-position i.media-delete:hover, .product-downloads-tab .product-media .media-position i.option-delete:hover, .product-downloads-tab .product-media .media-position i.download-delete:hover, .product-downloads-tab .product-media .option-position i.media-delete:hover, .product-downloads-tab .product-media .option-position i.option-delete:hover, .product-downloads-tab .product-media .option-position i.download-delete:hover, .product-downloads-tab .product-media .download-position i.media-delete:hover, .product-downloads-tab .product-media .download-position i.option-delete:hover, .product-downloads-tab .product-media .download-position i.download-delete:hover, .product-downloads-tab .product-option .media-position i.media-delete:hover, .product-downloads-tab .product-option .media-position i.option-delete:hover, .product-downloads-tab .product-option .media-position i.download-delete:hover, .product-downloads-tab .product-option .option-position i.media-delete:hover, .product-downloads-tab .product-option .option-position i.option-delete:hover, .product-downloads-tab .product-option .option-position i.download-delete:hover, .product-downloads-tab .product-option .download-position i.media-delete:hover, .product-downloads-tab .product-option .download-position i.option-delete:hover, .product-downloads-tab .product-option .download-position i.download-delete:hover, .product-downloads-tab .product-download .media-position i.media-delete:hover, .product-downloads-tab .product-download .media-position i.option-delete:hover, .product-downloads-tab .product-download .media-position i.download-delete:hover, .product-downloads-tab .product-download .option-position i.media-delete:hover, .product-downloads-tab .product-download .option-position i.option-delete:hover, .product-downloads-tab .product-download .option-position i.download-delete:hover, .product-downloads-tab .product-download .download-position i.media-delete:hover, .product-downloads-tab .product-download .download-position i.option-delete:hover, .product-downloads-tab .product-download .download-position i.download-delete:hover { + color: #b44a4a; +} + +.product-media-tab .product-media .media-position i.option-edit, .product-media-tab .product-media .option-position i.option-edit, .product-media-tab .product-media .download-position i.option-edit, .product-media-tab .product-option .media-position i.option-edit, .product-media-tab .product-option .option-position i.option-edit, .product-media-tab .product-option .download-position i.option-edit, .product-media-tab .product-download .media-position i.option-edit, .product-media-tab .product-download .option-position i.option-edit, .product-media-tab .product-download .download-position i.option-edit, .product-options-tab .product-media .media-position i.option-edit, .product-options-tab .product-media .option-position i.option-edit, .product-options-tab .product-media .download-position i.option-edit, .product-options-tab .product-option .media-position i.option-edit, .product-options-tab .product-option .option-position i.option-edit, .product-options-tab .product-option .download-position i.option-edit, .product-options-tab .product-download .media-position i.option-edit, .product-options-tab .product-download .option-position i.option-edit, .product-options-tab .product-download .download-position i.option-edit, .product-downloads-tab .product-media .media-position i.option-edit, .product-downloads-tab .product-media .option-position i.option-edit, .product-downloads-tab .product-media .download-position i.option-edit, .product-downloads-tab .product-option .media-position i.option-edit, .product-downloads-tab .product-option .option-position i.option-edit, .product-downloads-tab .product-option .download-position i.option-edit, .product-downloads-tab .product-download .media-position i.option-edit, .product-downloads-tab .product-download .option-position i.option-edit, .product-downloads-tab .product-download .download-position i.option-edit { + font-size: 14px; + padding-right: 5px; + color: #e1e4e6; +} + +.product-media-tab .product-media .media-position i.option-edit:hover, .product-media-tab .product-media .option-position i.option-edit:hover, .product-media-tab .product-media .download-position i.option-edit:hover, .product-media-tab .product-option .media-position i.option-edit:hover, .product-media-tab .product-option .option-position i.option-edit:hover, .product-media-tab .product-option .download-position i.option-edit:hover, .product-media-tab .product-download .media-position i.option-edit:hover, .product-media-tab .product-download .option-position i.option-edit:hover, .product-media-tab .product-download .download-position i.option-edit:hover, .product-options-tab .product-media .media-position i.option-edit:hover, .product-options-tab .product-media .option-position i.option-edit:hover, .product-options-tab .product-media .download-position i.option-edit:hover, .product-options-tab .product-option .media-position i.option-edit:hover, .product-options-tab .product-option .option-position i.option-edit:hover, .product-options-tab .product-option .download-position i.option-edit:hover, .product-options-tab .product-download .media-position i.option-edit:hover, .product-options-tab .product-download .option-position i.option-edit:hover, .product-options-tab .product-download .download-position i.option-edit:hover, .product-downloads-tab .product-media .media-position i.option-edit:hover, .product-downloads-tab .product-media .option-position i.option-edit:hover, .product-downloads-tab .product-media .download-position i.option-edit:hover, .product-downloads-tab .product-option .media-position i.option-edit:hover, .product-downloads-tab .product-option .option-position i.option-edit:hover, .product-downloads-tab .product-option .download-position i.option-edit:hover, .product-downloads-tab .product-download .media-position i.option-edit:hover, .product-downloads-tab .product-download .option-position i.option-edit:hover, .product-downloads-tab .product-download .download-position i.option-edit:hover { + color: #4ab46d; +} + +.link1, .link2 { + text-decoration: none; + color: var(--color-accent-blue); + border-bottom: 1px dotted; + margin: 0 5px 0 0; +} + +.link1:hover, .link2:hover { + color: var(--color-accent-blue-hover); +} + +.link2 { + color: var(--color-accent-red); +} + +.link2:hover { + color: var(--color-accent-red-hover); +} + +.title1 { + color: #6a6e75; + border-bottom: 1px solid #f0f1f2; + margin-bottom: 15px; + padding-bottom: 15px; + font-weight: 500; +} + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + text-decoration: none; + appearance: none; + cursor: pointer; + border: 0; + background: var(--color-selected-bg); + color: var(--color-bg-body); + padding: 0 14px; + font-size: 14px; + font-weight: 600; + border-radius: 4px; + height: 38px; + margin: 2px; + font-style: italic; +} + +.btn2 { + display: inline-flex; + align-items: center; + justify-content: center; + text-decoration: none; + appearance: none; + cursor: pointer; + border: 0; + background: var(--color-btn-secondary); + color: var(--color-bg-body); + padding: 0px 10px; + font-size: 14px; + font-weight: 600; + border-radius: 4px; + height: 20px; + margin: 2px; + font-style: italic; +} + +a.btn:after{ + content: ' '; + display: inline-block; + border-bottom: 1px solid var(--color-bg-body); + border-right: 1px solid var(--color-bg-body); + height: 8px; + width: 8px; + transform: rotate(-45deg); + margin-left: 1rem; +} + +.btn_link { + display: inline-flex; + align-items: center; + justify-content: center; + text-decoration: none; + appearance: none; + cursor: pointer; + border: 0; + background: var(--color-btn-neutral); + color: #75797e; + padding: 0 14px; + font-size: 12px; + font-weight: 600; + border-radius: 4px; + height: 30px; + margin: 2px; + font-style: italic; +} + +a.btn_link:after{ + content: ' '; + display: inline-block; + border-bottom: 1px solid #75797e; + border-right: 1px solid #75797e; + height: 8px; + width: 8px; + transform: rotate(-45deg); + margin-left: 1rem; +} + +.btn:hover { + background: var(--color-btn-hover-bg); +} + +.btn.green { + background: #4ab46d; +} + +.btn.green:hover { + background: #46a966; +} + +.btn.red { + background: #b44a4a; +} + +.btn.red:hover { + background: #a94646; +} + +.btn.alt { + color: #75797e; + border: 1px solid #d4dbde; + box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.03); + background: var(--color-btn-neutral); +} + +.btn.alt:hover { + background: #eef1f2; +} + +.btn.disabled { + background: var(--color-disabled); +} + +.btn.disabled:hover { + background: var(--color-disabled-hover); +} + +.btn.small { + padding: 8px 12px; + font-size: 12px; +} + +.btn .loader, +.btn .loader::after { + width: 15px; + height: 15px; +} + +.btn .loader { + margin: 0; + border-top: 2px solid rgba(255, 255, 255, 0.4); + border-right: 2px solid rgba(255, 255, 255, 0.4); + border-bottom: 2px solid rgba(255, 255, 255, 0.4); + border-left: 2px solid rgba(255, 255, 255, 0.9); +} + +.dialog { + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + position: fixed; + top: 0; + left: 0; + display: none; + z-index: 999999; + align-items: center; + justify-content: center; +} + +.dialog .content { + transform: scale(0.5); + background-color: var(--color-bg-body); + box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.03); + width: 400px; +} + +.dialog .content .heading { + display: flex; + padding: 20px; + font-weight: 600; + justify-content: space-between; + border-bottom: 1px solid #ebeced; + align-items: center; +} + +.dialog .content .heading span { + font-size: 24px; + line-height: 24px; + padding-bottom: 4px; + cursor: pointer; + color: var(--color-title-muted); +} + +.dialog .content .heading span:hover { + color: var(--color-hover-dark); +} + +.dialog .content .footer { + border-top: 1px solid #ebeced; + background-color: var(--color-hover-light); +} + +.dialog.large .content { + width: 900px; +} + +.dialog.medium .content { + width: 600px; +} + +.dialog.open { + display: flex; +} + +.dialog.open .content { + transform: scale(1); + transition: all 0.2s ease; +} + +.media-library-modal .media { + display: flex; +} + +.media-library-modal .media .list { + display: flex; + flex-flow: wrap; + align-items: flex-start; + align-content: flex-start; + width: 75%; + height: 460px; + overflow-y: auto; + scrollbar-width: thin; + padding: 10px; +} + +.media-library-modal .media .list > a { + position: relative; + display: flex; + height: 100px; + width: 23.4%; + border: 1px solid #ddd; + padding: 5px; + margin: 5px; +} + +.media-library-modal .media .list > a img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.media-library-modal .media .list > a.selected { + border: 2px solid #237fe8; +} + +.media-library-modal .media .list > a.selected::before { + position: absolute; + font-family: 'Font Awesome 5 Free'; + content: '\f00c'; + display: inline-block; + vertical-align: middle; + font-weight: 900; + bottom: 0; + right: 0; + color: var(--color-bg-body); + background-color: #237fe8; + font-size: 12px; + padding: 4px 4px 1px 4px; +} + +.media-library-modal .media .list .list-header { + display: flex; + width: 100%; + justify-content: space-between; + padding: 5px 5px 10px 5px; +} + +.media-library-modal .media .list .list-header input { + border: 0; + padding: 5px 0; + border-bottom: 1px solid var(--color-tab-bg); +} + +.media-library-modal .media .details { + width: 25%; + padding: 15px; + background-color: #f9f9fa; + border-left: 1px solid #ebeced; + height: 460px; + overflow-y: auto; + scrollbar-width: thin; +} + +.media-library-modal .media .details h3 { + margin: 0; + padding: 0; + font-size: 14px; + word-break: break-all; +} + +.media-library-modal .media .details label { + display: block; + margin: 0; + padding: 15px 0 0 0; + font-size: 14px; + font-weight: 500; +} + +.media-library-modal .media .details img { + max-width: 100%; + max-height: 100px; + padding-top: 10px; +} + +.media-library-modal .media .details input { + border: 0; + padding: 5px 0; + background: transparent; + width: 100%; + font-size: 14px; + border-bottom: 1px solid var(--color-tab-bg); +} + +.media-library-modal .media .details .media-links { + padding-top: 15px; +} + +.media-library-modal .media .details .media-links .save-media { + display: none; +} + +.media-library-modal .media .details .media-links a { + font-size: 14px; +} + +.media-library-modal .media .list::-webkit-scrollbar, .media-library-modal .media .details::-webkit-scrollbar { + width: 6px; + background: var(--color-bg-body); +} + +.media-library-modal .media .list::-webkit-scrollbar-thumb, .media-library-modal .media .details::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.1); + border-radius: 50px; +} + +.options-modal .body { + max-height: 400px; + overflow-y: auto; + padding: 20px; +} + +.options-modal .body input[type="text"], .options-modal .body input[type="number"], .options-modal .body input[type="datetime-local"], .options-modal .body select { + border: 0; + padding: 10px 0; + height: 40px; + background: transparent; + width: 100%; + border-bottom: 1px solid var(--color-tab-bg); +} + +.options-modal .body select { + padding: 0; +} + +.options-modal .body .option-header { + display: flex; + width: 70%; +} + +.options-modal .body .option-header input { + margin-right: 10px; +} + +.options-modal .body .option-header label { + display: flex; + justify-content: center; + align-items: center; + padding-left: 10px; +} + +.options-modal .body .option-content { + display: none; + flex-flow: column; +} + +.options-modal .body .table { + width: 100%; + padding: 0; +} + +.options-modal .body .table .input-group { + display: flex; +} + +.options-modal .body .table tbody td input { + font-size: 14px; +} + +.options-modal .body .table tbody td { + padding-right: 10px; +} + +.options-modal .body .table tbody td .modifier { + width: 45px; +} + +.options-modal .body .table tbody td .modifier ~ input { + padding-left: 5px; +} + +.options-modal .body .add-option-value-btn { + text-decoration: none; + font-weight: 400; + color: #676d72; + font-size: 14px; + padding: 15px 0; +} + +.options-modal .body .add-option-value-btn i { + padding-right: 5px; +} + +.options-modal .body .add-option-value-btn:hover { + color: #4f5357; +} + +.options-modal .body .remove-option-value { + cursor: pointer; + color: #676d72; +} + +.options-modal .body .remove-option-value:hover { + color: #b44a4a; +} + +.downloads-modal .body { + padding: 20px; +} + +.downloads-modal .body input { + border: 0; + padding: 10px 0; + height: 40px; + font-size: 14px; + background: transparent; + width: 100%; + border-bottom: 1px solid var(--color-tab-bg); +} + +.downloads-modal .body label { + font-weight: 500; +} + +.edit-media-modal .body { + padding: 20px; +} + +.edit-media-modal .body label { + display: block; + margin: 0; + padding: 15px 0 0 0; + font-size: 14px; + font-weight: 500; +} + +.edit-media-modal .body img { + max-width: 100%; + max-height: 100px; + padding-top: 10px; +} + +.edit-media-modal .body input { + border: 0; + padding: 5px 0; + background: transparent; + width: 100%; + font-size: 14px; + border-bottom: 1px solid var(--color-tab-bg); +} + +.loader, +.loader::after { + border-radius: 50%; + width: 50px; + height: 50px; +} + +.loader { + position: relative; + margin: 60px auto; + border-top: 2px solid rgba(154, 158, 162, 0.2); + border-right: 2px solid rgba(154, 158, 162, 0.2); + border-bottom: 2px solid rgba(154, 158, 162, 0.2); + border-left: 2px solid #9a9ea2; + transform: translateZ(0); + animation: loader 1.1s infinite linear; +} + +@keyframes loader { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +.pad-1 { + padding: 5px; +} + +.mar-1 { + margin: 5px; +} + +.pad-2 { + padding: 10px; +} + +.mar-2 { + margin: 10px; +} + +.pad-3 { + padding: 15px; +} + +.mar-3 { + margin: 15px; +} + +.pad-4 { + padding: 20px; +} + +.mar-4 { + margin: 20px; +} + +.pad-5 { + padding: 25px; +} + +.mar-5 { + margin: 25px; +} + +.pad-bot-1 { + padding-bottom: 5px; +} + +.pad-top-1 { + padding-top: 5px; +} + +.pad-left-1 { + padding-left: 5px; +} + +.pad-right-1 { + padding-right: 5px; +} + +.pad-x-1 { + padding-left: 5px; + padding-right: 5px; +} + +.pad-y-1 { + padding-top: 5px; + padding-bottom: 5px; +} + +.mar-bot-1 { + margin-bottom: 5px; +} + +.mar-top-1 { + margin-top: 5px; +} + +.mar-left-1 { + margin-left: 5px; +} + +.mar-right-1 { + margin-right: 5px; +} + +.mar-x-1 { + margin-top: 5px; + margin-bottom: 5px; +} + +.mar-y-1 { + margin-left: 5px; + margin-right: 5px; +} + +.pad-bot-2 { + padding-bottom: 10px; +} + +.pad-top-2 { + padding-top: 10px; +} + +.pad-left-2 { + padding-left: 10px; +} + +.pad-right-2 { + padding-right: 10px; +} + +.pad-x-2 { + padding-left: 10px; + padding-right: 10px; +} + +.pad-y-2 { + padding-top: 10px; + padding-bottom: 10px; +} + +.mar-bot-2 { + margin-bottom: 10px; +} + +.mar-top-2 { + margin-top: 10px; +} + +.mar-left-2 { + margin-left: 10px; +} + +.mar-right-2 { + margin-right: 10px; +} + +.mar-x-2 { + margin-top: 10px; + margin-bottom: 10px; +} + +.mar-y-2 { + margin-left: 10px; + margin-right: 10px; +} + +.pad-bot-3 { + padding-bottom: 15px; +} + +.pad-top-3 { + padding-top: 15px; +} + +.pad-left-3 { + padding-left: 15px; +} + +.pad-right-3 { + padding-right: 15px; +} + +.pad-x-3 { + padding-left: 15px; + padding-right: 15px; +} + +.pad-y-3 { + padding-top: 15px; + padding-bottom: 15px; +} + +.mar-bot-3 { + margin-bottom: 15px; +} + +.mar-top-3 { + margin-top: 15px; +} + +.mar-left-3 { + margin-left: 15px; +} + +.mar-right-3 { + margin-right: 15px; +} + +.mar-x-3 { + margin-top: 15px; + margin-bottom: 15px; +} + +.mar-y-3 { + margin-left: 15px; + margin-right: 15px; +} + +.pad-bot-4 { + padding-bottom: 20px; +} + +.pad-top-4 { + padding-top: 20px; +} + +.pad-left-4 { + padding-left: 20px; +} + +.pad-right-4 { + padding-right: 20px; +} + +.pad-x-4 { + padding-left: 20px; + padding-right: 20px; +} + +.pad-y-4 { + padding-top: 20px; + padding-bottom: 20px; +} + +.mar-bot-4 { + margin-bottom: 20px; +} + +.mar-top-4 { + margin-top: 20px; +} + +.mar-left-4 { + margin-left: 20px; +} + +.mar-right-4 { + margin-right: 20px; +} + +.mar-x-4 { + margin-top: 20px; + margin-bottom: 20px; +} + +.mar-y-4 { + margin-left: 20px; + margin-right: 20px; +} + +.pad-bot-5 { + padding-bottom: 25px; +} + +.pad-top-5 { + padding-top: 25px; +} + +.pad-left-5 { + padding-left: 25px; +} + +.pad-right-5 { + padding-right: 25px; +} + +.pad-x-5 { + padding-left: 25px; + padding-right: 25px; +} + +.pad-y-5 { + padding-top: 25px; + padding-bottom: 25px; +} + +.mar-bot-5 { + margin-bottom: 25px; +} + +.mar-top-5 { + margin-top: 25px; +} + +.mar-left-5 { + margin-left: 25px; +} + +.mar-right-5 { + margin-right: 25px; +} + +.mar-x-5 { + margin-top: 25px; + margin-bottom: 25px; +} + +.mar-y-5 { + margin-left: 25px; + margin-right: 25px; +} + +@media screen and (max-width: 1000px) { + header { + padding-left: 0; + } + .responsive-hidden { + display: none !important; + } + .responsive-width-100 { + width: 100% !important; + flex: auto !important; + flex-basis: 100% !important; + } + .responsive-flex-column { + flex-flow: column; + } + .responsive-flex-wrap { + flex-flow: wrap; + } + .responsive-flex { + display: flex; + } + main { + padding: 70px 7px 20px 7px; + } + main .content-header { + max-width: 100%; + } + main .content-header form { + padding-top: 10px; + } + main .content-header form .search input, main .content-header form > select { + padding-right: 0; + margin-left: 0; + } + main .content-block { + padding: 5px; + } + main .content-block .block-header { + padding-top: 10px; + } + main .dashboard { + flex-flow: column; + } + main .dashboard .stat { + width: 100%; + } + .responsive-pad-1 { + padding: 5px; + } + .responsive-mar-1 { + margin: 5px; + } + .responsive-pad-2 { + padding: 10px; + } + .responsive-mar-2 { + margin: 10px; + } + .responsive-pad-3 { + padding: 15px; + } + .responsive-mar-3 { + margin: 15px; + } + .responsive-pad-4 { + padding: 20px; + } + .responsive-mar-4 { + margin: 20px; + } + .responsive-pad-5 { + padding: 25px; + } + .responsive-mar-5 { + margin: 25px; + } + .responsive-pad-bot-1 { + padding-bottom: 5px; + } + .responsive-pad-top-1 { + padding-top: 5px; + } + .responsive-pad-left-1 { + padding-left: 5px; + } + .responsive-pad-right-1 { + padding-right: 5px; + } + .responsive-pad-x-1 { + padding-left: 5px; + padding-right: 5px; + } + .responsive-pad-y-1 { + padding-top: 5px; + padding-bottom: 5px; + } + .responsive-mar-bot-1 { + margin-bottom: 5px; + } + .responsive-mar-top-1 { + margin-top: 5px; + } + .responsive-mar-left-1 { + margin-left: 5px; + } + .responsive-mar-right-1 { + margin-right: 5px; + } + .responsive-mar-x-1 { + margin-top: 5px; + margin-bottom: 5px; + } + .responsive-mar-y-1 { + margin-left: 5px; + margin-right: 5px; + } + .responsive-pad-bot-2 { + padding-bottom: 10px; + } + .responsive-pad-top-2 { + padding-top: 10px; + } + .responsive-pad-left-2 { + padding-left: 10px; + } + .responsive-pad-right-2 { + padding-right: 10px; + } + .responsive-pad-x-2 { + padding-left: 10px; + padding-right: 10px; + } + .responsive-pad-y-2 { + padding-top: 10px; + padding-bottom: 10px; + } + .responsive-mar-bot-2 { + margin-bottom: 10px; + } + .responsive-mar-top-2 { + margin-top: 10px; + } + .responsive-mar-left-2 { + margin-left: 10px; + } + .responsive-mar-right-2 { + margin-right: 10px; + } + .responsive-mar-x-2 { + margin-top: 10px; + margin-bottom: 10px; + } + .responsive-mar-y-2 { + margin-left: 10px; + margin-right: 10px; + } + .responsive-pad-bot-3 { + padding-bottom: 15px; + } + .responsive-pad-top-3 { + padding-top: 15px; + } + .responsive-pad-left-3 { + padding-left: 15px; + } + .responsive-pad-right-3 { + padding-right: 15px; + } + .responsive-pad-x-3 { + padding-left: 15px; + padding-right: 15px; + } + .responsive-pad-y-3 { + padding-top: 15px; + padding-bottom: 15px; + } + .responsive-mar-bot-3 { + margin-bottom: 15px; + } + .responsive-mar-top-3 { + margin-top: 15px; + } + .responsive-mar-left-3 { + margin-left: 15px; + } + .responsive-mar-right-3 { + margin-right: 15px; + } + .responsive-mar-x-3 { + margin-top: 15px; + margin-bottom: 15px; + } + .responsive-mar-y-3 { + margin-left: 15px; + margin-right: 15px; + } + .responsive-pad-bot-4 { + padding-bottom: 20px; + } + .responsive-pad-top-4 { + padding-top: 20px; + } + .responsive-pad-left-4 { + padding-left: 20px; + } + .responsive-pad-right-4 { + padding-right: 20px; + } + .responsive-pad-x-4 { + padding-left: 20px; + padding-right: 20px; + } + .responsive-pad-y-4 { + padding-top: 20px; + padding-bottom: 20px; + } + .responsive-mar-bot-4 { + margin-bottom: 20px; + } + .responsive-mar-top-4 { + margin-top: 20px; + } + .responsive-mar-left-4 { + margin-left: 20px; + } + .responsive-mar-right-4 { + margin-right: 20px; + } + .responsive-mar-x-4 { + margin-top: 20px; + margin-bottom: 20px; + } + .responsive-mar-y-4 { + margin-left: 20px; + margin-right: 20px; + } + .responsive-pad-bot-5 { + padding-bottom: 25px; + } + .responsive-pad-top-5 { + padding-top: 25px; + } + .responsive-pad-left-5 { + padding-left: 25px; + } + .responsive-pad-right-5 { + padding-right: 25px; + } + .responsive-pad-x-5 { + padding-left: 25px; + padding-right: 25px; + } + .responsive-pad-y-5 { + padding-top: 25px; + padding-bottom: 25px; + } + .responsive-mar-bot-5 { + margin-bottom: 25px; + } + .responsive-mar-top-5 { + margin-top: 25px; + } + .responsive-mar-left-5 { + margin-left: 25px; + } + .responsive-mar-right-5 { + margin-right: 25px; + } + .responsive-mar-x-5 { + margin-top: 25px; + margin-bottom: 25px; + } + .responsive-mar-y-5 { + margin-left: 25px; + margin-right: 25px; + } + .media-library-modal { + padding: 10px; + } + .media-library-modal .media { + flex-flow: column; + } + .media-library-modal .media .list { + width: 100%; + height: 220px; + } + .media-library-modal .media .list > a { + width: 29%; + } + .media-library-modal .media .list .list-header input { + max-width: 150px; + width: auto; + } + .media-library-modal .media .details { + width: 100%; + height: 110px; + } + .options-modal { + padding: 10px; + } + .options-modal .body { + max-height: 260px; + } + .options-modal .body .option-header { + width: 100%; + } + .options-modal .body .table thead td { + font-size: 12px; + } + .options-modal .body .table tbody td input { + font-size: 12px; + } + .options-modal .body .table tbody td { + padding-right: 5px; + } + .options-modal .body .table tbody td .modifier { + width: 45px; + } + .options-modal .body .table tbody td .modifier ~ input { + padding-left: 0; + } + .downloads-modal { + padding: 10px; + } + .content-block-wrapper { + flex-flow: column; + } + .content-block-wrapper .content-block { + margin: 15px 0 0 0 !important; + } +} + +#tableView thead { + background-color: #ffd717; + color: var(--color-selected-bg); +} + +#tableView thead td { + font-weight: bold; +} + +#tableView { + border-collapse: collapse; + width: 100%; + border-radius: 5px; + border-style: hidden; + margin: auto; + margin-top: 10px; + background-color: var(--color-bg-body); +} + +#content { + margin-top:20px; + width: 90%; + margin: auto; +} + +.datalist { + width: 100%; + padding: 15px 5px; + margin-bottom: 25px; + border: 0; + border-bottom: 1px solid var(--color-tab-bg); +} + +#readBar { + width:1%; + height: 100%; + background-color: #04aa6d; + text-align: center; + color: white; + border-radius: 5px; + padding: 5px; +} + +input[type='file'] { + display: inline-block; + width: 100%; + padding: 120px 0 0 0; + height: 100px; + overflow: hidden; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + background: url('https://cdn1.iconfinder.com/data/icons/hawcons/32/698394-icon-130-cloud-upload-512.png') center center no-repeat #e4e4e4; + border-radius: 20px; + background-size: 60px 60px; +} + +.dot { + height: 15px; + width: 15px; + font-size: 10px; + color: var(--color-border-light); + display: table-cell; + text-align: center; + vertical-align: middle; + border-radius: 50%; + background-color: #bbb; + } + + .content-wrapper { + width: 1050px; + margin: 0 auto; + } + + .content-wrapper.error { + padding: 40px 0; + } + + .recentlyadded .products, main .products .products-wrapper { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + padding: 40px 0 0 0; + } + + .recentlyadded .products .product, main .products .products-wrapper .product { + display: block; + overflow: hidden; + text-decoration: none; + padding-bottom: 20px; + margin-left: 10px; + text-align: center; + } + .recentlyadded .products .product img, main .products .products-wrapper .product img { + transform: scale(1); + transition: transform 1s; + mix-blend-mode: multiply; + } + + .recentlyadded .products .product .name, main .products .products-wrapper .product .name { + display: block; + color: var(--color-text-default); + font-size: 12px; + text-align: center; + } + + main > .products .products-header { + display: flex; + justify-content: space-between; + align-items: center; + padding-bottom: 40px; + font-size: 10px; + } + + main > .products .products-header label { + padding-left: 20px; + font-size: 10px; + } + + main > .products .products-header select { + padding: 5px; + margin-left: 15px; + border: 1px solid #d5d5d5; + color: var(--color-text-default); + border-radius: 4px; + font-size: 10px; + } + + .product_category_nav { + display: inline-block; + } + + .product_category_nav a { + white-space: nowrap; + text-decoration: none; + color: var(--color-bg-body); + padding: 5px 5px; + margin: 5px; + border: 1px solid var(--color-text-default); + border-radius: 5px; + display: block; + float: left; + background:var(--color-btn-bg); + } + + /* Responsive CSS below */ + @media screen and (max-width: 1050px) { + .content-wrapper { + width: 100%; + margin: 0 auto; + } + + .recentlyadded .products, main .products .products-wrapper { + justify-content: center; + } + .recentlyadded .products .product, main .products .products-wrapper .product { + width: auto; + } + .products .products-header { + flex-flow: column; + } + .products .products-header p { + padding-bottom: 10px; + } + } + + th a { + text-decoration: none; + color: var(--color-text-default); + text-transform: capitalize; +} + +.chart { + display:table; + table-layout: fixed; + width:60%; + max-width:500px; +} + +.chart li{ + position:relative; + display:table-cell; + vertical-align:bottom; + height:100px; + color: var(--color-selected-bg); +} + +.chart span{ + margin:0 1em; + display: block; + background-color: var(--color-selected-bg); + animation: draw 1s ease-in-out; + border-radius: 3px; +} + +.chart span::before{ + position:absolute; + left:0;right:0;top:100%; + padding:5px; + display:block; + color: var(--color-selected-bg); + text-align:center; + content:attr(title); + word-wrap: break-word; + font-size: 10px; +} + +.servicereport { + border-collapse: collapse; + width: 100%; + border-radius: 5px; + border-style: hidden; + margin: auto; + background-color: var(--color-bg-body); + margin-top: 20px; +} + +.servicereport.fs-normal td { + font-size: 18px; +} + +.servicereport.fs-small td { + font-size: 14px; +} + +.servicereport thead { + background-color: var(--color-selected-bg); + color: var(--color-bg-body); +} + +.servicereport td { + padding: 5px 15px; +} + +.servicereport thead td { + font-weight: bold; +} + +.servicereport tbody td.success { + text-decoration: underline; + text-decoration-thickness: 2px; + text-decoration-color: #3ead48; + text-underline-offset: 2px; +} + +.servicereport tbody td.warning { + text-decoration: underline; + text-decoration-thickness: 2px; + text-decoration-color: #ffc107; + text-underline-offset: 2px; +} + +.servicereport tbody td.error { + text-decoration: underline; + text-decoration-thickness: 2px; + text-decoration-color: #d1232a; + text-underline-offset: 2px; +} + +.servicereport .col-key { + width: 70%; +} + +.servicereport .col-value { + width: 30%; +} + +.servicereport--details tbody tr { + border-bottom: 1px solid #035754; +} + +.servicereport--striped tbody tr:nth-child(odd) { + background-color: #f3fafa; +} + +.servicereport--striped tbody tr:nth-child(even) { + background-color: #e7f6f6; +} + +.servicereport--striped tbody tr { + border-bottom: 1px solid #9bdcd9; +} + +.service_summary { + background-image: linear-gradient(#e7f6f6, #fafdfd); + margin-top: 20px; + padding-bottom: 15px; +} + +.service_summary__title { + background-color: #035754; + color: var(--color-bg-body); + font-weight: bold; + padding: 5px 15px; +} + +.service_notes { + margin: 15px 15px 0 15px; + padding: 15px; + background-color: var(--color-bg-body); + color: #035754; +} + +h4.label { + padding: 5px 15px; + background-color: #035754; + color: var(--color-bg-body); + margin-top: 20px; + margin-bottom: 20px; +} + +.text-center { + text-align: center; +} + +@media screen and (max-width: 600px) { +#support_btn { + display:none; + } +} +.form-popup { + display: none; + position: fixed; + bottom: 0; + right: 15px; + z-index: 9; +} + +.close { + position: absolute; + top: 0px; + right: 0px; +} + +#support_btn img:hover{ + transform: scale(1.5); +} + +.cancel_link { + white-space: nowrap; + text-align: center; + background: #b44a4a; + border: 0; + padding: 5px 0; + font-size: 9px; + margin-top: 5px; + cursor: pointer; + border-radius: 4px; +} + +.order-detail input { + border: 0; + border-bottom: 1px solid var(--color-tab-bg) +} + +.loading-container { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.8); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + z-index: 9999; + opacity: 0; + visibility: hidden; + transition: opacity 0.3s, visibility 0.3s; +} + +.loading-container.active { + opacity: 1; + visibility: visible; +} + +.loading-bar { + width: 200px; + height: 10px; + background-color: #f0f0f0; + border-radius: 5px; + overflow: hidden; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); +} + +.progress { + height: 100%; + width: 0%; + background-color: #4caf50; + animation: progressAnimation 2s infinite ease-in-out; +} + +.loading-text { + margin-top: 10px; + font-size: 14px; + color: #333; +} + +@keyframes progressAnimation { + 0% { width: 0%; } + 50% { width: 100%; } + 100% { width: 0%; } +} + +/* Hide the loading bar when page is loaded */ +.loaded .loading-container { + display: none; +} + +.hidden { + display: none !important; +} + +/*CATALOG VIEW*/ + +.stock p { + font-size: 10px; + margin: auto; + padding: 5px; + width: fit-content; + border-radius: 5px; + color: white; +} + +.stock p:before { + content : '\1F4E6'; +} + +.filtersection { + display: flex; + margin: 0 auto; + background: white; + border-radius: 12px; + margin-bottom: 50px; + padding: 10px; + width: 95%; +} + +.filter-section { + width: 250px; + padding: 20px; + border-right: 1px solid #e0e0e0; +} + +.filter-section h2 { + margin-bottom: 15px; + color: #333; +} + +.filter-group { + margin-bottom: 20px; +} + +.filter-group label { + margin-bottom: 10px; +} + +.filter-group input[type="checkbox"] { + margin-right: 10px; +} + +/* Responsive Design */ +@media (max-width: 768px) { + .filtersection { + flex-direction: column; + text-align: center; + } + + .filter-section { + width: 100%; + border-right: none; + border-bottom: 1px solid #e0e0e0; + } +} + +main .recentlyadded .products .product, main .products .products-wrapper .product { + display: block; + overflow: hidden; + text-decoration: none; + padding-bottom: 30px; + text-align: center; + margin: 5px; +} + +main .recentlyadded .products .product img, main .products .products-wrapper .product img { + transform: scale(1); + transition: transform 1s; +} + +main .products .product .name, main .products .products-wrapper .product .name { + display: block; + color: var(--color-text-default); + padding: 20px 0 2px 0; + text-align: center; + font-family: 'gerb'; + word-wrap: break-word; +} +main .products .product .price, main .products .products-wrapper .product .price { + display: block; + color: #999999; + text-align: center; +} + +.product .rrp { + color: #bbbbbb; + text-decoration: line-through; + font-size: 22px; + padding-left: 10px; +} + +.img_config { + border-radius:5px; + width: 25px; + height: 25px; + margin: 1px; +} + +/* Button alignment styles */ +.form-actions, +.modal-actions, +.dialog-actions, +.button-actions { + display: flex; + gap: 10px; + justify-content: flex-end; + align-items: center; + margin-top: 20px; +} + +.title-actions { + display: flex; + gap: 10px; + align-items: center; + justify-content: flex-end; +} + +.filter-actions { + display: flex; + gap: 10px; + justify-content: flex-end; + align-items: center; + flex-wrap: wrap; +} + +main .form .button-container, +main .form .form-actions, +main .content-block .button-container { + display: flex; + gap: 10px; + justify-content: flex-end; + align-items: center; + margin-top: 15px; +} + +.dialog .content .footer, +.modal .modal-footer { + display: flex; + gap: 10px; + justify-content: flex-end; + align-items: center; + padding: 20px; + border-top: 1px solid #eee; +} \ No newline at end of file diff --git a/custom/morvalwatches/style/veliti_intro.png b/custom/morvalwatches/style/veliti_intro.png new file mode 100644 index 0000000000000000000000000000000000000000..60b2864f0cb1dd9f77d994fe21cbea7d0244c3bb GIT binary patch literal 170794 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
VsX?nmx;>+WwA>A0!nFd8Kl+niMBRcB3%mLxoK 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 'NL', + 'BE' => 'NL', + 'US' => 'US', + 'GB' => 'US', + 'DE' => 'DE', + 'FR' => 'FR', + 'ES' => 'ES' +]; + +$invoice_language = 'US'; // Default +if (!empty($invoice_data['customer']['language'])) { + $invoice_language = strtoupper($invoice_data['customer']['language']); +} elseif (!empty($invoice_data['customer']['country']) && isset($available_languages[strtoupper($invoice_data['customer']['country'])])) { + $invoice_language = $available_languages[strtoupper($invoice_data['customer']['country'])]; +} + +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Generate invoice HTML +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ + +var_dump($invoice_data); +list($data, $customer_email, $order_id) = generateSoftwareInvoice($invoice_data, $order_number, $invoice_language); + +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Check for HTML output request +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ +if (isset($_GET['output']) && $_GET['output'] === 'html') { + // Output HTML directly to browser + echo $data; + exit; +} + +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Initialize DomPDF +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ +use Dompdf\Dompdf; +use Dompdf\Options; + +$options = new Options(); +$options->set('isRemoteEnabled', true); +$dompdf = new Dompdf($options); + +// Load HTML content +$dompdf->loadHtml($data); + +// Setup paper size and orientation +$dompdf->setPaper('A4', 'portrait'); + +// Render the HTML as PDF +$dompdf->render(); + +$file_name = 'Factuur - ' . $order_id; + +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Handle different actions +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ + +// Email invoice to customer +if (isset($_POST['email_invoice'])) { + $to = $customer_email; + $subject = 'Factuur - ' . $order_id; + $message = $data; + $attachment = $dompdf->output(); + $attachment_name = $file_name . '.pdf'; + + $header_redirect = 'Location: index.php?page=order&id=' . $order_id . '&success=invoice_sent'; + + // Send to PHPMailer + send_mail($to, $subject, $message, $attachment, $attachment_name); + + header($header_redirect); + exit; +} + +// Email invoice to admin/bookkeeping +if (isset($_POST['email_invoice_to_admin'])) { + $to = $customer_email; + $subject = 'Factuur - ' . $order_id; + $message = $data; + $attachment = $dompdf->output(); + $attachment_name = $file_name . '.pdf'; + + $header_redirect = 'Location: index.php?page=order&id=' . $order_id . '&success=invoice_sent_admin'; + + // Send to bookkeeping if configured + if (defined('invoice_bookkeeping') && invoice_bookkeeping && defined('email_bookkeeping') && email_bookkeeping) { + send_mail(email_bookkeeping, $subject, $message, $attachment, $attachment_name); + } + + header($header_redirect); + exit; +} + +// Show invoice in browser +if (isset($_POST['show_invoice'])) { + // Clean output buffer to prevent corrupted PDF + if (ob_get_level()) { + ob_end_clean(); + } + + // Stream PDF to browser + $dompdf->stream($file_name . ".pdf", array("Attachment" => false)); + exit; +} + +// If no action specified, redirect back +header('Location: index.php?page=order&id=' . $order_number); +exit; + +?> \ No newline at end of file diff --git a/histories.php b/histories.php index 2aa3ba3..b6f962e 100644 --- a/histories.php +++ b/histories.php @@ -30,16 +30,16 @@ $url = 'index.php?page=histories'.$status.$search; //GET Details from URL $GET_VALUES = urlGETdetails($_GET) ?? ''; //CALL TO API -$api_url = '/v1/history/'.$GET_VALUES; +$api_url = '/v2/history/'.$GET_VALUES; $responses = ioServer($api_url,''); //Decode Payload -if (!empty($responses)){$responses = decode_payload($responses);}else{$responses = null;} +if (!empty($responses)){$responses = json_decode($responses);}else{$responses = null;} //Return QueryTotal from API -$api_url = '/v1/history/'.$GET_VALUES.'&totals='; +$api_url = '/v2/history/'.$GET_VALUES.'&totals='; $query_total = ioServer($api_url,''); //Decode Payload -if (!empty($query_total)){$query_total = decode_payload($query_total);}else{$query_total = null;} +if (!empty($query_total)){$query_total = json_decode($query_total);}else{$query_total = null;} template_header('Histories', 'histories','view'); $view = ' @@ -116,7 +116,7 @@ $view .= ' foreach ($responses as $response){ $description = json_decode($response->description) ?? $response->description; - $description = json_encode($description, JSON_PRETTY_PRINT); + $description = json_encode($description, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); //Replace JSON ITEMS $search = ['{', '}', '"',':','[',']',',']; $replace = ['', '','','=','','','']; diff --git a/history.php b/history.php index 116b24f..9b207c9 100644 --- a/history.php +++ b/history.php @@ -33,16 +33,16 @@ $url = 'index.php?page=history&equipmentID='.$_GET['equipmentID'].$status.$searc //GET Details from URL $GET_VALUES = urlGETdetails($_GET) ?? ''; //CALL TO API -$api_url = '/v1/history/'.$GET_VALUES; +$api_url = '/v2/history/'.$GET_VALUES; $responses = ioServer($api_url,''); //Decode Payload -if (!empty($responses)){$responses = decode_payload($responses);}else{$responses = null;} +if (!empty($responses)){$responses = json_decode($responses);}else{$responses = null;} //Return QueryTotal from API -$api_url = '/v1/history/'.$GET_VALUES.'&totals='; +$api_url = '/v2/history/'.$GET_VALUES.'&totals='; $query_total = ioServer($api_url,''); //Decode Payload -if (!empty($query_total)){$query_total = decode_payload($query_total);}else{$query_total = null;} +if (!empty($query_total)){$query_total = json_decode($query_total);}else{$query_total = null;} // Handle success messages @@ -137,7 +137,7 @@ $view .= ' foreach ($responses as $response){ $description = json_decode($response->description) ?? $response->description; -$description = json_encode($description, JSON_PRETTY_PRINT); +$description = json_encode($description, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); //Replace JSON ITEMS $search = ['{', '}', '"',':','[',']',',']; diff --git a/history_manage.php b/history_manage.php index 54a97e3..2403cae 100644 --- a/history_manage.php +++ b/history_manage.php @@ -34,10 +34,10 @@ if ($rowID !=''){ if (isset($_GET['rowID'])) { // ID param exists, edit an existing product //CALL TO API - $api_url = '/v1/history/historyid='.$rowID; + $api_url = '/v2/history/historyid='.$rowID; $responses = ioServer($api_url,''); //Decode Payload - if (!empty($responses)){$responses = decode_payload($responses);}else{$responses = null;} + if (!empty($responses)){$responses = json_decode($responses);}else{$responses = null;} $history = json_decode(json_encode($responses[0]), true); diff --git a/settings/translations/translations_DE.php b/settings/translations/translations_DE.php index 091bfef..f5c811e 100644 --- a/settings/translations/translations_DE.php +++ b/settings/translations/translations_DE.php @@ -319,6 +319,21 @@ $firmwaretool_step_5 = 'Wenn Firmware verfügbar ist: Die Statusleiste zeigt " Ik bevestig dat SN en HW zijn uitgelezen van de activa.'; $firmwaretool_step_7 = 'Druk op de "Update firmware" knop om de update te starten en de instructies op het scherm te volgen'; $firmwaretool_step_8 = 'Opgelet: Dit proces kan niet onderbroken worden.'; +$softwaretool_h2 = 'Software upgrade tool'; +$softwaretool_p = 'Software upgrade opties.'; +$softwaretool_step = 'Instructies'; +$softwaretool_step_1 = 'Sluit het apparaat via USB aan op de computer.(USB bevindt zich onder de batterijklep)'; +$softwaretool_step_2 = 'Druk "connect" knop'; +$softwaretool_step_3 = 'In het popup venster selecteer het apparaat door er op te klikken. Druk daarna op de verbinding maken knop.'; +$softwaretool_step_4 = 'Het apparaat wordt nu gelezen. Een voortgang status wordt getoond'; +$softwaretool_step_5 = 'Beschikbare software upgrades worden weergegeven met Naam, Beschrijving en Prijs'; +$softwaretool_step_6 = 'Selecteer een software versie'; +$softwaretool_step_7 = 'Voor betaalde upgrades, volg het betalingsproces'; +$softwaretool_step_8 = 'Opgelet: Dit proces kan niet onderbroken worden.'; +$softwaretool_no_updates = 'Geen software updates gevonden'; +$softwaretool_checking = 'Controleren op software updates...'; +$softwaretool_available = 'Software updates beschikbaar'; +$softwaretool_select_upgrade = 'Selecteer een upgrade optie:'; $newuser_subject = 'CustomerPortal user created'; $newuser_header = 'Dear CustomerPortal user'; $newuser_text = 'Your CustomerPortal administrator has provided access to the CustomerPortal. To complete your account you need to update your password via the link below.'; diff --git a/settings/translations/translations_PL.php b/settings/translations/translations_PL.php index f07f593..63abeed 100644 --- a/settings/translations/translations_PL.php +++ b/settings/translations/translations_PL.php @@ -319,6 +319,21 @@ $firmwaretool_step_5 = 'Gdy oprogramowanie jest dostępne: Pasek stanu pokaże " $firmwaretool_step_6 = 'Gdy oprogramowanie jest dostępne: Upewnij się, że SN i HW zostały odczytane z urządzenia i potwierdź to zaznaczając pole "Potwierdzam, że SN i HW zostały odczytane z urządzenia"'; $firmwaretool_step_7 = 'Naciśnij przycisk "Aktualizuj oprogramowanie", aby uruchomić okno aktualizacji oprogramowania i postępuj zgodnie z instrukcjami na ekranie'; $firmwaretool_step_8 = 'Uwaga: Ten proces nie może zostać przerwany i musi się zakończyć.'; +$softwaretool_h2 = 'Narzędzie aktualizacji oprogramowania'; +$softwaretool_p = 'Opcje aktualizacji oprogramowania.'; +$softwaretool_step = 'Instrukcje'; +$softwaretool_step_1 = 'Podłącz urządzenie do komputera przez USB. (Znajduje się pod pokrywą baterii)'; +$softwaretool_step_2 = 'Naciśnij przycisk "połącz"'; +$softwaretool_step_3 = 'Pojawi się okno popup z prośbą o wybranie urządzenia. Wybierz urządzenie klikając na nie, a następnie naciśnij przycisk połącz.'; +$softwaretool_step_4 = 'Po zniknięciu okna popup urządzenie zostanie odczytane, pasek stanu pokaże postęp'; +$softwaretool_step_5 = 'Dostępne aktualizacje oprogramowania zostaną wyświetlone z Nazwą, Opisem i Ceną'; +$softwaretool_step_6 = 'Wybierz wersję oprogramowania'; +$softwaretool_step_7 = 'W przypadku płatnych aktualizacji postępuj zgodnie z procesem płatności'; +$softwaretool_step_8 = 'Uwaga: Ten proces nie może zostać przerwany i musi się zakończyć.'; +$softwaretool_no_updates = 'Nie znaleziono aktualizacji oprogramowania'; +$softwaretool_checking = 'Sprawdzanie aktualizacji oprogramowania...'; +$softwaretool_available = 'Dostępne aktualizacje oprogramowania'; +$softwaretool_select_upgrade = 'Wybierz opcję aktualizacji:'; $newuser_subject = 'Użytkownik CustomerPortal utworzony'; $newuser_header = 'Szanowny użytkowniku CustomerPortal'; $newuser_text = 'Administrator CustomerPortal przyznał Ci dostęp do CustomerPortal. Aby ukończyć konfigurację konta, musisz zaktualizować hasło za pomocą poniższego linku.'; diff --git a/settings/translations/translations_PT.php b/settings/translations/translations_PT.php index 1f7fd5d..0858309 100644 --- a/settings/translations/translations_PT.php +++ b/settings/translations/translations_PT.php @@ -319,6 +319,21 @@ $firmwaretool_step_5 = 'Quando o firmware estiver disponível: A barra de status $firmwaretool_step_6 = 'Quando o firmware estiver disponível: Certifique-se de que o SN e o HW sejam lidos do dispositivo e confirme isso selecionando a caixa "Eu confirmo que o SN e o HW foram lidos do dispositivo"'; $firmwaretool_step_7 = 'Pressione o botão "Atualizar firmware" para iniciar o diálogo de atualização de firmware e siga as instruções na tela'; $firmwaretool_step_8 = 'Esteja ciente: Este processo não pode ser interrompido e precisa ser concluído.'; +$softwaretool_h2 = 'Ferramenta de atualização de software'; +$softwaretool_p = 'Opções de atualização de software.'; +$softwaretool_step = 'Instruções'; +$softwaretool_step_1 = 'Conecte o dispositivo ao computador por USB. (Encontrado sob a tampa da bateria)'; +$softwaretool_step_2 = 'Pressione o botão "conectar"'; +$softwaretool_step_3 = 'Um popup aparecerá pedindo para selecionar um dispositivo. Selecione o dispositivo clicando nele e depois pressione o botão conectar.'; +$softwaretool_step_4 = 'Após o popup desaparecer, o dispositivo será lido, a barra de status mostrará o progresso'; +$softwaretool_step_5 = 'Atualizações de software disponíveis serão exibidas com Nome, Descrição e Preço'; +$softwaretool_step_6 = 'Selecione uma versão de software'; +$softwaretool_step_7 = 'Para atualizações pagas, siga o processo de pagamento'; +$softwaretool_step_8 = 'Esteja ciente: Este processo não pode ser interrompido e precisa ser concluído.'; +$softwaretool_no_updates = 'Nenhuma atualização de software encontrada'; +$softwaretool_checking = 'Verificando atualizações de software...'; +$softwaretool_available = 'Atualizações de software disponíveis'; +$softwaretool_select_upgrade = 'Selecione uma opção de atualização:'; $newuser_subject = 'Usuário do CustomerPortal criado'; $newuser_header = 'Caro usuário do CustomerPortal'; $newuser_text = 'Seu administrador do CustomerPortal forneceu acesso ao CustomerPortal. Para completar sua conta, você precisa atualizar sua senha através do link abaixo.'; diff --git a/settings/translations/translations_US.php b/settings/translations/translations_US.php index 2daac2d..1858eb1 100644 --- a/settings/translations/translations_US.php +++ b/settings/translations/translations_US.php @@ -336,8 +336,8 @@ $softwaretool_step_2 = 'Press "connect" button"'; $softwaretool_step_3 = 'A popup will appear asking to select a device. Select the device by clicking on it and the press the connect button.'; $softwaretool_step_4 = 'After pop-up disappears the device will be read, status bar will show progress'; $softwaretool_step_5 = 'Available software upgrades will be displayed with Name, Description and Price'; -$softwaretool_step_6 = 'Select a free upgrade (price = 0) to download and install'; -$softwaretool_step_7 = 'For paid upgrades, please contact support'; +$softwaretool_step_6 = 'Select a software version'; +$softwaretool_step_7 = 'For paid upgrades, please follow the payment process'; $softwaretool_step_8 = 'Be aware: This process cannot be stopped and needs to finish.'; $softwaretool_no_updates = 'No software updates found'; $softwaretool_checking = 'Checking for software updates...'; diff --git a/softwaretool.php b/softwaretool.php index c419d56..e259d50 100644 --- a/softwaretool.php +++ b/softwaretool.php @@ -122,7 +122,7 @@ $view .= '

@@ -143,10 +143,10 @@ $view .= '
- @@ -245,6 +247,108 @@ echo ' closePaymentModal(); } }); + + // Monitor upload completion + const observer = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + if (mutation.type === "attributes" && mutation.attributeName === "checked") { + const actionFirmware = document.getElementById("action_firmware"); + if (actionFirmware && actionFirmware.checked) { + console.log("Upload completion detected!"); + // Upload completed successfully + handleUploadCompletion(true); + } + } + }); + }); + + // Also monitor for readBar changes to detect completion + const readBarObserver = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + if (mutation.type === "childList" || mutation.type === "characterData") { + const readBar = document.getElementById("readBar"); + if (readBar && readBar.innerHTML && readBar.innerHTML.includes("Firmware update completed")) { + console.log("Firmware update completed detected via readBar!"); + setTimeout(() => handleUploadCompletion(true), 500); + } + } + }); + }); + + // Start observing when upload section is visible + function startUploadMonitoring() { + const actionFirmware = document.getElementById("action_firmware"); + const readBar = document.getElementById("readBar"); + + if (actionFirmware) { + observer.observe(actionFirmware, { + attributes: true, + attributeFilter: ["checked"] + }); + console.log("Started monitoring action_firmware checkbox"); + } + + if (readBar) { + readBarObserver.observe(readBar, { + childList: true, + subtree: true, + characterData: true + }); + console.log("Started monitoring readBar for completion"); + } + } + + // Handle upload completion (success or failure) + window.handleUploadCompletion = function(success) { + console.log("handleUploadCompletion called with success:", success); + + const installStatus = document.getElementById("installationStatus"); + const readBar = document.getElementById("readBar"); + + if (success) { + // Success handling + console.log("Updating UI for successful completion"); + if (installStatus) { + installStatus.innerHTML = \'\' + + \'\' + + \'

Installation Complete!

\' + + \'

Your device has been successfully updated

\'; + } + // Ensure progress bar is at 100% + if (readBar) { + readBar.style.width = "100%"; + readBar.style.background = "#04AA6D"; + readBar.innerHTML = "Firmware update completed - 100%"; + console.log("Updated readBar to 100%"); + } + } else { + // Failure handling + console.log("Updating UI for failed completion"); + if (installStatus) { + installStatus.innerHTML = \'\' + + \'\' + + \'

Installation Failed

\' + + \'

Please try again or contact support

\'; + } + if (readBar) { + readBar.style.width = "100%"; + readBar.style.background = "#dc3545"; + readBar.innerHTML = "Installation failed"; + } + } + + // Stop monitoring + observer.disconnect(); + readBarObserver.disconnect(); + console.log("Stopped monitoring observers"); + }; + + // Monitor for upload errors + window.addEventListener("error", function(e) { + if (e.message && e.message.includes("upload")) { + handleUploadCompletion(false); + } + }); '; template_footer(); From 2520fb2b758db4fa713e16c31ca93fe8a0576c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CVeLiTi=E2=80=9D?= <“info@veliti.nl”> Date: Fri, 9 Jan 2026 15:19:28 +0100 Subject: [PATCH 02/18] Add PayPal webhook handler and marketing styles - Implemented PayPal webhook for handling payment notifications, including signature verification and transaction updates. - Created invoice generation and license management for software upgrades upon successful payment. - Added comprehensive logging for debugging purposes. - Introduced new CSS styles for the marketing file management system, including layout, toolbar, breadcrumb navigation, search filters, and file management UI components. --- .DS_Store | Bin 12292 -> 12292 bytes PAYMENT_IMPLEMENTATION_SUMMARY.md | 103 --- PAYMENT_INTEGRATION_PLAN.md | 825 ------------------ api.php | 3 +- api/.DS_Store | Bin 6148 -> 6148 bytes api/v1/.DS_Store | Bin 6148 -> 6148 bytes api/v2/.DS_Store | Bin 6148 -> 6148 bytes api/v2/get/equipment_history.php | 116 +++ api/v2/get/equipments.php | 2 +- api/v2/get/marketing_files.php | 155 ++++ api/v2/get/marketing_folders.php | 172 ++++ api/v2/get/marketing_tags.php | 115 +++ api/v2/get/service.php | 41 + api/v2/get/software_available.php | 76 +- api/v2/get/software_update.php | 94 +- api/v2/post/marketing_delete.php | 93 ++ api/v2/post/marketing_folders.php | 105 +++ api/v2/post/marketing_upload.php | 302 +++++++ api/v2/post/payment.php | 190 ++++- assets/.DS_Store | Bin 6148 -> 6148 bytes assets/database/marketing_install.sql | 114 +++ assets/functions.php | 48 +- assets/images/.DS_Store | Bin 6148 -> 6148 bytes assets/marketing.js | 900 ++++++++++++++++++++ assets/softwaretool.js | 35 +- custom/morvalwatches/style/VeLiTi-Logo2.png | Bin equipment.php | 44 +- equipment_manage.php | 18 +- marketing.php | 429 ++++++++-- order.php | 43 +- products_software_upgrade_paths_manage.php | 2 +- settings/settingsmenu.php | 1 + settings/settingsprofiles.php | 4 +- settings/settingsviews.php | 11 + softwaretool.php | 69 ++ style/marketing.css | 715 ++++++++++++++++ webhook_mollie.php | 21 +- webhook_paypal.php | 427 ++++++++++ 38 files changed, 4166 insertions(+), 1107 deletions(-) delete mode 100644 PAYMENT_IMPLEMENTATION_SUMMARY.md delete mode 100644 PAYMENT_INTEGRATION_PLAN.md create mode 100644 api/v2/get/equipment_history.php create mode 100644 api/v2/get/marketing_files.php create mode 100644 api/v2/get/marketing_folders.php create mode 100644 api/v2/get/marketing_tags.php create mode 100644 api/v2/get/service.php create mode 100644 api/v2/post/marketing_delete.php create mode 100644 api/v2/post/marketing_folders.php create mode 100644 api/v2/post/marketing_upload.php create mode 100644 assets/database/marketing_install.sql create mode 100644 assets/marketing.js mode change 100755 => 100644 custom/morvalwatches/style/VeLiTi-Logo2.png create mode 100644 style/marketing.css create mode 100644 webhook_paypal.php diff --git a/.DS_Store b/.DS_Store index 9d4c452e8d05565dc11a62679d1101247abf067b..1b6483b1c4bed5cc3953daaf953afd7a34f838bf 100644 GIT binary patch delta 95 zcmZokXi1ph&uFzVU^hRb_GTUdW+o{PhBSsuh9ZVshH{2PAf1|)Qk 0 (free upgrades shouldn't reach payment API) -4. Call Mollie API FIRST to get payment_id: - $mollie->payments->create([ - 'amount' => ['currency' => 'EUR', 'value' => $final_price], - 'description' => 'Software upgrade to version X', - 'redirectUrl' => 'https://site.com/softwaretool.php?payment_return=1&payment_id={payment_id}', - 'webhookUrl' => 'https://site.com/webhook_mollie.php', // NEW webhook for software upgrades - 'metadata' => ['order_id' => $mollie_payment_id] // for compatibility - ]) -5. Store transaction in DB with Mollie payment_id: - INSERT INTO transactions (txn_id, payment_amount, payment_status, payer_email, first_name, last_name, address_*, account_id, ...) - VALUES ($mollie_payment_id, $final_price, 0, ...) -- 0 = pending -6. Store transaction item: - INSERT INTO transactions_items (txn_id, item_id, item_price, item_quantity, item_options, ...) - VALUES ($mollie_payment_id, $version_id, $final_price, 1, '{"serial_number":"...", "equipment_id":...}', ...) -7. Return JSON: {checkout_url: $mollie_checkout_url, payment_id: $mollie_payment_id} -``` - -**1.3 Create `/api/v2/get/payment.php`** -```php - clientID, "clientsecret" => clientsecret), JSON_UNESCAPED_UNICODE); -$responses = ioAPIv2('/v2/authorization', $data,''); -//Decode Payload -if (!empty($responses)){$responses = json_decode($responses,true);}else{$responses = '400';} -$clientsecret = $responses['token']; - -//+++++++++++++++++++++++++++++++++++++++++++++++++++++ -// BASEURL is required for invoice template -//+++++++++++++++++++++++++++++++++++++++++++++++++++++ -$base_url = 'https://'.$_SERVER['SERVER_NAME'].'/'; -define('base_url', $base_url); - -try { - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - // Initialize the Mollie API library - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - require "initialize.php"; // Mollie initialization (from commerce webhook) - - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - //Retrieve the payment's current state - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - $payment = $mollie->payments->get($_POST["id"]); - $orderId = $payment->metadata->order_id; - - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - // Update the transaction using existing API - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - - if ($payment->isPaid() && !$payment->hasRefunds() && !$payment->hasChargebacks()) { - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - // PAID - Update transaction status via API - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - $payload = json_encode(array("txn_id" => $orderId, "payment_status" => 1), JSON_UNESCAPED_UNICODE); - $transaction = ioAPIv2('/v2/transactions/',$payload,$clientsecret); - $transaction = json_decode($transaction,true); - - if ($transaction !== null && !empty($transaction)) { - if(count($transaction) > 0) { - - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - // CREATE LICENSE for software upgrade - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - $pdo = dbConnect($dbname); - - // Fetch transaction items to find software upgrade - $sql = 'SELECT * FROM transactions_items WHERE txn_id = ?'; - $stmt = $pdo->prepare($sql); - $stmt->execute([$orderId]); - $items = $stmt->fetchAll(PDO::FETCH_ASSOC); - - foreach ($items as $item) { - if (!empty($item['item_options'])) { - $options = json_decode($item['item_options'], true); - - // Check if this is a software upgrade (has serial_number and equipment_id) - if (isset($options['serial_number']) && isset($options['equipment_id'])) { - - // Check if license already exists for this transaction - $sql = 'SELECT rowID FROM products_software_licenses WHERE transaction_id = ?'; - $stmt = $pdo->prepare($sql); - $stmt->execute([$orderId]); - $existing_license = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$existing_license) { - // Generate unique license key - $license_key = generateUniqueLicenseKey(); - - // Create license - $sql = 'INSERT INTO products_software_licenses - (license_key, equipment_id, license_type, status, start_at, expires_at, transaction_id, created, createdby) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)'; - $stmt = $pdo->prepare($sql); - $stmt->execute([ - $license_key, - $options['equipment_id'], - 'upgrade', - 1, // active - date('Y-m-d H:i:s'), - '2099-12-31 23:59:59', // effectively permanent - $orderId, - date('Y-m-d H:i:s'), - 'webhook' // created by webhook - ]); - - // Update equipment.sw_version_license - $sql = 'UPDATE equipment SET sw_version_license = ? WHERE rowID = ?'; - $stmt = $pdo->prepare($sql); - $stmt->execute([$license_key, $options['equipment_id']]); - - error_log("Webhook: License created for equipment_id: " . $options['equipment_id'] . ", license_key: " . $license_key); - } - } - } - } - - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - //Generate INVOICE RECORD via API - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - $payload = json_encode(array("txn_id" => $transaction['transaction_id']), JSON_UNESCAPED_UNICODE); - $invoice = ioAPIv2('/v2/invoice/',$payload,$clientsecret); - $invoice = json_decode($invoice,true); - - if ($invoice !== null && !empty($invoice)) { - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - //Generate INVOICE PDF and send email - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - $invoice_cust = ioAPIv2('/v2/invoice/list=invoice&id='.$invoice['invoice_id'],'',$clientsecret); - $invoice_cust = json_decode($invoice_cust,true); - - // Determine invoice language - if (!empty($invoice_cust['customer']['language'])) { - $invoice_language = strtoupper($invoice_cust['customer']['language']); - } elseif (!empty($invoice_cust['customer']['country']) && isset($available_languages[strtoupper($invoice_cust['customer']['country'])])) { - $invoice_language = $available_languages[strtoupper($invoice_cust['customer']['country'])]; - } else { - $invoice_language = 'US'; // Default fallback - } - - // Generate invoice HTML (using custom template for software upgrades) - list($data,$customer_email,$order_id) = generateSoftwareInvoice($invoice_cust,$orderId,$invoice_language); - - //CREATE PDF using DomPDF - $dompdf->loadHtml($data); - $dompdf->setPaper('A4', 'portrait'); - $dompdf->render(); - $subject = ($invoice_software_subject ?? 'Software Upgrade - Invoice: ').$order_id; - $attachment = $dompdf->output(); - - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - //Send email via PHPMailer - //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - send_mail_by_PHPMailer($customer_email, $subject, $data, $attachment, $subject); - - if(invoice_bookkeeping){ - send_mail_by_PHPMailer(email_bookkeeping, $subject, $data, $attachment, $subject); - } - } - } - } - - } elseif ($payment->isOpen()) { - // OPEN/PENDING (101) - $payload = json_encode(array("txn_id" => $orderId, "payment_status" => 101), JSON_UNESCAPED_UNICODE); - $transaction = ioAPIv2('/v2/transactions/',$payload,$clientsecret); - - } elseif ($payment->isPending()) { - // PENDING (101) - $payload = json_encode(array("txn_id" => $orderId, "payment_status" => 101), JSON_UNESCAPED_UNICODE); - $transaction = ioAPIv2('/v2/transactions/',$payload,$clientsecret); - - } elseif ($payment->isFailed()) { - // FAILED (102) - $payload = json_encode(array("txn_id" => $orderId, "payment_status" => 102), JSON_UNESCAPED_UNICODE); - $transaction = ioAPIv2('/v2/transactions/',$payload,$clientsecret); - - } elseif ($payment->isExpired()) { - // EXPIRED (103) - $payload = json_encode(array("txn_id" => $orderId, "payment_status" => 103), JSON_UNESCAPED_UNICODE); - $transaction = ioAPIv2('/v2/transactions/',$payload,$clientsecret); - - } elseif ($payment->isCanceled()) { - // CANCELED (999) - $payload = json_encode(array("txn_id" => $orderId, "payment_status" => 999), JSON_UNESCAPED_UNICODE); - $transaction = ioAPIv2('/v2/transactions/',$payload,$clientsecret); - - } elseif ($payment->hasRefunds()) { - // REFUNDED (1 + refund flag) - $payload = json_encode(array("txn_id" => $orderId, "payment_status" => 1), JSON_UNESCAPED_UNICODE); - $transaction = ioAPIv2('/v2/transactions/',$payload,$clientsecret); - // TODO: Disable license on refund - } - -} catch (\Mollie\Api\Exceptions\ApiException $e) { - error_log("Webhook API call failed: " . htmlspecialchars($e->getMessage())); - http_response_code(500); - echo "API call failed: " . htmlspecialchars($e->getMessage()); -} catch (Exception $e) { - error_log("Webhook error: " . htmlspecialchars($e->getMessage())); - http_response_code(500); -} -``` - -**Key Features (matching commerce webhook.php):** -- ✅ Uses `/v2/transactions/` API for status updates -- ✅ Uses `/v2/invoice/` API for invoice generation -- ✅ Generates PDF invoice with DomPDF -- ✅ Sends email via PHPMailer -- ✅ Creates license for software upgrade -- ✅ Uses same payment status codes (0, 1, 101, 102, 103, 999) -- ✅ Handles refunds (TODO: disable license) -- ✅ Multi-language invoice support -- ✅ Sends to bookkeeping if configured - -### Phase 2: Frontend Integration - -**2.1 Modify `processPayment()` in softwaretool.js (lines 574-608)** -```javascript -async function processPayment(paymentData, option, modal) { - try { - progressBar("10", "Processing payment...", "#04AA6D"); - - // SECURITY: Only send serial_number and version_id - // Server will calculate the price to prevent tampering - const response = await fetch(link + "/v2/post/payment", { - method: "POST", - headers: { - "Content-Type": "application/json", - "Authorization": "Bearer " + document.getElementById("servicetoken").textContent - }, - body: JSON.stringify({ - serial_number: deviceSerialNumber, - version_id: option.version_id, - user_data: paymentData // name, email, address only - // REMOVED: price, currency - server calculates these - }) - }); - - const result = await response.json(); - - if (result.checkout_url) { - await logCommunication(`Redirecting to payment provider`, 'sent'); - // Redirect to Mollie checkout - window.location.href = result.checkout_url; - } else { - throw new Error(result.error || "Failed to create payment"); - } - - } catch (error) { - await logCommunication(`Payment error: ${error.message}`, 'error'); - progressBar("0", "Payment failed: " + error.message, "#ff6666"); - alert("Payment failed: " + error.message); - } -} -``` - -**2.2 Remove equipment_id tracking - NOT NEEDED** -```javascript -// SECURITY: We don't need to track equipment_id in frontend -// The server will look it up from serial_number in the payment/create API -// This prevents tampering with equipment_id -``` - -**2.3 Add Serial Number Verification in `downloadAndInstallSoftware()` (lines 610-699)** -```javascript -async function downloadAndInstallSoftware(option) { - // Check if we're returning from payment - const urlParams = new URLSearchParams(window.location.search); - const paymentId = urlParams.get('payment_id'); - - if (paymentId) { - // Verify serial number matches payment using GET /v2/get/payment - const response = await fetch(link + `/v2/get/payment?payment_id=${paymentId}`, { - method: "GET", - headers: { - "Authorization": "Bearer " + document.getElementById("servicetoken").textContent - } - }); - - const paymentData = await response.json(); - - if (paymentData.serial_number !== deviceSerialNumber) { - const confirmed = confirm( - `WARNING: Different device detected!\n\n` + - `License was created for device: ${paymentData.serial_number}\n` + - `Currently connected device: ${deviceSerialNumber}\n\n` + - `The license is already applied to the original device. ` + - `Do you want to continue with this device anyway?` - ); - - if (!confirmed) { - progressBar("0", "Upload canceled by user", "#ff6666"); - return; - } - } - } - - // Continue with existing download logic... - selectedSoftwareUrl = option.source; - // ... rest of function unchanged -} -``` - -**Note**: Serial number verification uses existing GET /v2/get/payment endpoint (no separate verify endpoint needed) - -### Phase 3: Return URL Handling - -**3.1 Modify `softwaretool.php` to detect return from payment** -```php -// Add near top of softwaretool.php (after includes, before $view) - -``` - -**3.2 Optional: Auto-trigger device connection after payment return** -```javascript -// In softwaretool.js, check URL on page load -window.addEventListener('DOMContentLoaded', function() { - const urlParams = new URLSearchParams(window.location.search); - if (urlParams.has('payment_id')) { - // Show message: "Payment successful! Please reconnect your device." - // Optionally auto-show device connection UI - } -}); -``` - -### Phase 4: Testing Strategy - -**4.1 DEBUG Mode Testing (Complete Simulation)** -```php -// In /api/v2/post/payment.php, check if DEBUG mode -if (defined('debug') && debug) { - // FULL SIMULATION: No Mollie API connection, no device connection - $fake_payment_id = 'DEBUG_' . uniqid(); - - // 1. Store transaction with status 0 (pending) - $sql = 'INSERT INTO transactions - (txn_id, payment_amount, payment_status, payer_email, first_name, last_name, - address_street, address_city, address_state, address_zip, address_country, account_id) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; - $stmt = $pdo->prepare($sql); - $stmt->execute([ - $fake_payment_id, - $final_price, - 0, // 0 = pending - $post_content['user_data']['email'], - $post_content['user_data']['first_name'] ?? '', - $post_content['user_data']['last_name'] ?? '', - $post_content['user_data']['address_street'] ?? '', - $post_content['user_data']['address_city'] ?? '', - $post_content['user_data']['address_state'] ?? '', - $post_content['user_data']['address_zip'] ?? '', - $post_content['user_data']['address_country'] ?? '', - $post_content['serial_number'] // store serial number in account_id - ]); - - // 2. Store transaction item - $item_options = json_encode([ - 'serial_number' => $post_content['serial_number'], - 'equipment_id' => $equipment_id, - 'hw_version' => $hw_version - ]); - $sql = 'INSERT INTO transactions_items - (txn_id, item_id, item_price, item_quantity, item_options) - VALUES (?, ?, ?, ?, ?)'; - $stmt = $pdo->prepare($sql); - $stmt->execute([ - $fake_payment_id, - $post_content['version_id'], - $final_price, - 1, - $item_options - ]); - - // 3. Immediately simulate webhook success (update status to paid + create license) - $sql = 'UPDATE transactions SET payment_status = 1 WHERE txn_id = ?'; // 1 = paid - $stmt = $pdo->prepare($sql); - $stmt->execute([$fake_payment_id]); - - // 4. Create license - $license_key = generateUniqueLicenseKey(); - $sql = 'INSERT INTO products_software_licenses - (license_key, equipment_id, license_type, status, start_at, expires_at, transaction_id, created, createdby) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)'; - $stmt = $pdo->prepare($sql); - $stmt->execute([ - $license_key, - $equipment_id, - 'upgrade', - 1, - date('Y-m-d H:i:s'), - '2099-12-31 23:59:59', - $fake_payment_id, - date('Y-m-d H:i:s'), - $username - ]); - - // 5. Update equipment.sw_version_license - $sql = 'UPDATE equipment SET sw_version_license = ? WHERE rowID = ?'; - $stmt = $pdo->prepare($sql); - $stmt->execute([$license_key, $equipment_id]); - - // 6. Return fake checkout URL that redirects immediately - $messages = [ - 'checkout_url' => 'https://'.$_SERVER['SERVER_NAME'].'/softwaretool.php?payment_return=1&payment_id=' . $fake_payment_id, - 'payment_id' => $fake_payment_id - ]; - echo json_encode($messages); - exit; -} -``` - -**Note**: In DEBUG mode, the entire payment + license creation flow is simulated without: -- Calling Mollie API -- Requiring physical device connection (works with DEBUG mode mock device data in softwaretool.js) - -**4.2 Mollie Sandbox Testing** -1. Use Mollie test API key -2. Test successful payment flow -3. Test failed payment flow -4. Test canceled payment flow -5. Test webhook delivery -6. Test license creation - -**4.3 Serial Number Mismatch Testing** -1. Complete payment with device A (SN: 22110095) -2. Disconnect device A -3. Connect device B (different SN) -4. Verify warning appears -5. Verify license was created for device A - ---- - -## Critical Files to Modify - -### New Files -- `/api/v2/post/payment.php` - Payment creation (POST) -- `/api/v2/get/payment.php` - Payment status retrieval (GET) -- `/webhook_mollie.php` - Mollie webhook handler for software upgrades (based on existing webhook.php structure) -- `generateSoftwareInvoice()` function in `/assets/functions.php` - Invoice template for software upgrades - -### Modified Files -- `/assets/softwaretool.js`: - - `processPayment()` (lines 574-608) - Call POST /v2/post/payment instead of simulation - - `downloadAndInstallSoftware()` (lines 610-699) - Add serial number verification using GET /v2/get/payment - - Add payment return detection on page load (optional) -- `/softwaretool.php`: - - Add payment return URL detection (check for ?payment_id=X) - - Optionally show success message banner after payment -- `/api/v2/get/software_update.php`: - - **No changes needed** (existing license logic at lines 274-311 works perfectly!) - -### Database & Helper Functions -- No new tables needed (using existing `transactions` and `transactions_items`) -- Add helper function `generateUniqueLicenseKey()` in `assets/functions.php` -- Payment status codes already defined in existing webhook.php (0, 1, 101, 102, 103, 999) - ---- - -## Security Architecture Summary - -### ✅ **SECURE APPROACH: Server-Side Price Validation** - -**Frontend sends:** -- `serial_number` (from connected device) -- `version_id` (which version they want) -- `user_data` (name, email, address) - -**Backend does:** -1. Look up equipment from `serial_number` -2. Look up version from `version_id` -3. **Calculate actual price using same logic as software_update.php**: - - Check upgrade path pricing (lines 244-260) - - Check if license exists and reduces price (lines 274-311) - - Get final server-calculated price -4. Verify price > 0 (reject free upgrades) -5. Create Mollie payment with **SERVER-CALCULATED price** -6. Store pending payment with correct price - -### ❌ **INSECURE APPROACH: Never Do This** -```javascript -// WRONG - User can modify price in browser console! -body: JSON.stringify({ - serial_number: deviceSerialNumber, - version_id: option.version_id, - price: 0.01, // <-- Tampered from 49.99! - currency: "EUR" -}) -``` - -**Why this is dangerous:** -- User can open browser console -- Change `option.price = 0.01` before payment -- Backend trusts this value = user pays 1 cent for €49.99 upgrade - -### ✅ **CORRECT APPROACH** -```javascript -// SECURE - Only send identifiers, server calculates price -body: JSON.stringify({ - serial_number: deviceSerialNumber, // Who is buying - version_id: option.version_id, // What they want - user_data: paymentData // Customer info - // NO PRICE - server calculates it! -}) -``` - ---- - -## Configuration & Requirements (USER CONFIRMED) - -1. ✅ **Mollie API Credentials**: User has Mollie info - will be added as constants in `config.php` - - `MOLLIE_API_KEY_TEST` (for sandbox) - - `MOLLIE_API_KEY_LIVE` (for production) -2. ✅ **License Duration**: `expires_at = '2099-12-31 23:59:59'` (effectively permanent until 2099) -3. ✅ **Multiple Devices**: One license per device (license linked to specific equipment_id) -4. ✅ **DEBUG Mode**: Full payment process simulation without Mollie connection AND without device connection -5. ✅ **Transaction Logging**: Use existing ecommerce transaction APIs: - - `transactions` table - main transaction record - - `transaction_items` table - line items (software upgrade details) - ---- - -## Next Steps After Plan Approval - -1. ✅ Add Mollie constants to `config.php`: - ```php - define('MOLLIE_API_KEY_TEST', 'test_xxxxx'); // User will provide - define('MOLLIE_API_KEY_LIVE', 'live_xxxxx'); // User will provide - ``` -2. ✅ Mollie PHP SDK already installed (used by existing webhook.php) -3. ✅ No database changes needed (using existing `transactions` and `transactions_items` tables) -4. Create helper functions in `assets/functions.php`: - - `generateUniqueLicenseKey()` - Generate unique license keys - - `generateSoftwareInvoice()` - Generate HTML invoice for software upgrades (based on existing generateInvoice()) -5. ✅ Payment status codes already defined in existing webhook.php -6. Implement NEW backend files: - - `/api/v2/post/payment.php` (with DEBUG mode support) - - `/api/v2/get/payment.php` - - `/webhook_mollie.php` (based on existing webhook.php structure) -8. Modify frontend JavaScript in `/assets/softwaretool.js`: - - Update `processPayment()` to call POST /v2/post/payment - - Add serial number verification in `downloadAndInstallSoftware()` -9. Modify `/softwaretool.php` to detect payment return -10. Test in DEBUG mode (full simulation without Mollie or device) -11. Test with Mollie sandbox -12. Deploy to production - diff --git a/api.php b/api.php index b4d3888..3bb45e5 100644 --- a/api.php +++ b/api.php @@ -154,7 +154,8 @@ if($is_jwt_valid && str_contains($version, 'v')) { // First check if endPoint is fileUpload //------------------------------------------ $fileUploadEndpoints = [ - 'media_upload' + 'media_upload', + 'marketing_upload' ]; $isFileUploadEndpoint = in_array($collection, $fileUploadEndpoints); diff --git a/api/.DS_Store b/api/.DS_Store index 362cceb913bb468d59b8e8075642796a3e6f6af3..25bea50ec1d193708379b8bab07a6ab1ee4ed493 100644 GIT binary patch delta 104 zcmZoMXffDO$HsJc%j5>Os=$R$85kIt7|Ixoa`RnWl5+BsfP9WQ#$tC9KOA#J$fe+v bE66YmPR`FQ0IFqRU~iaMxMwpv$6tN`mHi(E delta 104 zcmZoMXffDO$HsK%?&Joxs=zKm1_lNuhB5}D+B`mu~2NHo}wrR0|Nsi1A_pAVQ_MOZUK)+c G7G?lQksJL0 delta 323 zcmZoMXfc=|#>B)qu~2NHo}wrh0|Nsi1A_oVaY0f}eiD$kBdK6BBhzxmdXN+|Lpnn$ zLrGFOvUE;nafyM!HAW_87FITP4t5T1j@aOg{PN(E#FEltr^KRY5HBP@KPL&sPD~2R zOf8QW5OL1WD@n}EODzIx$V^EEDv1ft%uC5Hcgio#ODP8H4F*aC0A)BhIXL45B&w^; zOpSCD49(4Jbrh;CjSO@YOpMKHYdJYYmG!NI; isset($_GET['serialnumber']) ? trim($_GET['serialnumber']) : null, + 'type' => isset($_GET['type']) ? trim($_GET['type']) : null, + 'start' => isset($_GET['start']) ? trim($_GET['start']) : date("Y-m-d", strtotime("-270 days")), + 'end' => isset($_GET['end']) ? trim($_GET['end']) : date("Y-m-d", strtotime("+1 days")) +]; + +// ============================================ +// Build Query with Prepared Statements +// ============================================ + +$whereClauses = []; +$params = []; + +// Serial Number Filter +if ($filters['serialnumber']) { + $whereClauses[] = 'h.description LIKE :serialnumber'; + $params[':serialnumber'] = "%historycreated%SN%:" . $filters['serialnumber'] . "%"; + $whereClauses[] = 'h.type != :excluded_type'; + $params[':excluded_type'] = 'SRIncluded'; +} + +// Type Filter +if ($filters['type']) { + if ($filters['type'] === 'latest') { + // Get only the latest record per equipment + if ($filters['serialnumber']) { + $whereClauses[] = 'h.rowID IN ( + SELECT MAX(h2.rowID) + FROM equipment_history h2 + GROUP BY h2.equipmentid + )'; + } else { + $whereClauses[] = "h.description LIKE '%historycreated%'"; + $whereClauses[] = 'h.rowID IN ( + SELECT MAX(h2.rowID) + FROM equipment_history h2 + WHERE h2.description LIKE :history_created + GROUP BY h2.equipmentid + )'; + $params[':history_created'] = '%historycreated%'; + } + } else { + // Specific type filter + $whereClauses[] = 'h.type = :type'; + $params[':type'] = $filters['type']; + } +} + +// Default filter if no other filters applied +if (empty($whereClauses)) { + $whereClauses[] = "h.description LIKE '%historycreated%'"; +} + +// Date Range Filter +$whereClauses[] = 'h.created BETWEEN :start_date AND :end_date'; +$params[':start_date'] = $filters['start']; +$params[':end_date'] = $filters['end']; + +// ============================================ +// Execute Query +// ============================================ + +$whereClause = 'WHERE ' . implode(' AND ', $whereClauses); +$sql = "SELECT h.rowID, h.description + FROM equipment_history h + $whereClause + ORDER BY h.created DESC"; + +try { + $stmt = $pdo->prepare($sql); + $stmt->execute($params); + $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); + + // ============================================ + // Format Response + // ============================================ + + $results = []; + foreach ($messages as $message) { + $record = json_decode($message['description'], true); + + // Handle JSON decode errors + if (json_last_error() !== JSON_ERROR_NONE) { + continue; // Skip invalid JSON + } + + $record['historyID'] = (int)$message['rowID']; + $results[] = $record; + } + + // Set proper headers + header('Content-Type: application/json; charset=utf-8'); + echo json_encode($results, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); + +} catch (PDOException $e) { + // Log error (don't expose to client in production) + error_log("Database error: " . $e->getMessage()); + + //header('Content-Type: application/json; charset=utf-8', true, 500); + echo json_encode([ + 'error' => 'An error occurred while processing your request' + ]); +} + +?> \ No newline at end of file diff --git a/api/v2/get/equipments.php b/api/v2/get/equipments.php index 13eb35e..ab70944 100644 --- a/api/v2/get/equipments.php +++ b/api/v2/get/equipments.php @@ -275,7 +275,7 @@ else { } //SQL for Paging - $sql = 'SELECT e.rowID as equipmentID, e.*, p.productcode, p.productname, p.product_media from equipment e LEFT JOIN products p ON e.productrowid = p.rowID '.$whereclause.' ORDER BY '.$sort.' LIMIT :page,:num_products'; + $sql = 'SELECT e.rowID as equipmentID, e.*, p.productcode, p.productname, p.product_media, psl.starts_at,psl.expires_at,psl.status as license_status from equipment e LEFT JOIN products p ON e.productrowid = p.rowID LEFT JOIN products_software_licenses psl ON e.sw_version_license = psl.license_key '.$whereclause.' ORDER BY '.$sort.' LIMIT :page,:num_products'; } $stmt = $pdo->prepare($sql); diff --git a/api/v2/get/marketing_files.php b/api/v2/get/marketing_files.php new file mode 100644 index 0000000..b0f5e3f --- /dev/null +++ b/api/v2/get/marketing_files.php @@ -0,0 +1,155 @@ +soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';} + +//default whereclause +$whereclause = ''; + +// For testing, disable account hierarchy filtering +// list($whereclause,$condition) = getWhereclauselvl2("",$permission,$partner,'get'); + +//NEW ARRAY +$criterias = []; +$clause = ''; + +//Check for $_GET variables and build up clause +if(isset($get_content) && $get_content!=''){ + //GET VARIABLES FROM URL + $requests = explode("&", $get_content); + //Check for keys and values + foreach ($requests as $y){ + $v = explode("=", $y); + //INCLUDE VARIABLES IN ARRAY + $criterias[$v[0]] = $v[1]; + + if ($v[0] == 'page' || $v[0] =='p' || $v[0] =='totals' || $v[0] =='list' || $v[0] == 'action' || $v[0] =='success_msg' || $v[0] == '_t'){ + //do nothing + } + elseif ($v[0] == 'folder_id') { + if ($v[1] === 'null' || $v[1] === '') { + $clause .= ' AND folder_id IS NULL'; + } else { + $clause .= ' AND folder_id = :folder_id'; + } + } + elseif ($v[0] == 'search') { + $clause .= ' AND (title LIKE :search OR original_filename LIKE :search)'; + } + elseif ($v[0] == 'tag') { + $clause .= ' AND EXISTS (SELECT 1 FROM marketing_file_tags ft JOIN marketing_tags t ON ft.tag_id = t.id WHERE ft.file_id = mf.id AND t.tag_name = :tag)'; + } + elseif ($v[0] == 'file_type') { + $clause .= ' AND file_type = :file_type'; + } + else { + // Ignore unknown parameters + } + } + if ($whereclause == '' && $clause !=''){ + $whereclause = 'WHERE '.substr($clause, 4); + } else { + $whereclause .= $clause; + } +} + +//Set page +$pagina = 1; +if(isset($criterias['p']) && $criterias['p'] !='') { + $pagina = $criterias['p']; +} + +//Set limit +$limit = 50; +if(isset($criterias['limit']) && $criterias['limit'] !='') { + $limit = intval($criterias['limit']); +} +$offset = ($pagina - 1) * $limit; + +//check for totals call +if(isset($criterias['totals'])){ + $sql = 'SELECT COUNT(*) as found FROM marketing_files mf '.$whereclause.' '; + $stmt = $pdo->prepare($sql); + + // Bind parameters + if (!empty($criterias)) { + foreach ($criterias as $key => $value) { + if ($key !== 'totals' && $key !== 'page' && $key !== 'p' && $key !== 'limit' && $key !== 'action') { + if ($key == 'search') { + $stmt->bindValue(':'.$key, '%'.$value.'%'); + } elseif ($key == 'folder_id' && ($value === 'null' || $value === '')) { + continue; + } else { + $stmt->bindValue(':'.$key, $value); + } + } + } + } + + $stmt->execute(); + $found = $stmt->fetchColumn(); + echo $found; + exit; +} + +// Main query +$sql = "SELECT + mf.*, + GROUP_CONCAT(mt.tag_name) as tags +FROM marketing_files mf +LEFT JOIN marketing_file_tags mft ON mf.id = mft.file_id +LEFT JOIN marketing_tags mt ON mft.tag_id = mt.id +" . $whereclause . " +GROUP BY mf.id +ORDER BY mf.created DESC +LIMIT " . $limit . " OFFSET " . $offset; + +$stmt = $pdo->prepare($sql); + +// Bind parameters +if (!empty($criterias)) { + foreach ($criterias as $key => $value) { + if ($key !== 'totals' && $key !== 'page' && $key !== 'p' && $key !== 'limit') { + if ($key == 'search') { + $stmt->bindValue(':'.$key, '%'.$value.'%'); + } elseif ($key == 'folder_id' && ($value === 'null' || $value === '')) { + continue; + } else { + $stmt->bindValue(':'.$key, $value); + } + } + } +} + +$stmt->execute(); +$marketing_files = $stmt->fetchAll(PDO::FETCH_ASSOC); + +// Process each file +foreach ($marketing_files as &$file) { + // Process tags + $file['tags'] = $file['tags'] ? explode(',', $file['tags']) : []; + + // Format file size + $bytes = $file['file_size']; + if ($bytes >= 1073741824) { + $file['file_size_formatted'] = number_format($bytes / 1073741824, 2) . ' GB'; + } elseif ($bytes >= 1048576) { + $file['file_size_formatted'] = number_format($bytes / 1048576, 2) . ' MB'; + } elseif ($bytes >= 1024) { + $file['file_size_formatted'] = number_format($bytes / 1024, 2) . ' KB'; + } else { + $file['file_size_formatted'] = $bytes . ' B'; + } +} + +// Return result +echo json_encode($marketing_files, JSON_UNESCAPED_UNICODE); +exit; \ No newline at end of file diff --git a/api/v2/get/marketing_folders.php b/api/v2/get/marketing_folders.php new file mode 100644 index 0000000..92f0853 --- /dev/null +++ b/api/v2/get/marketing_folders.php @@ -0,0 +1,172 @@ +soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';} + +//default whereclause +$whereclause = ''; + +list($whereclause,$condition) = getWhereclauselvl2('',$permission,$partner,'get'); + +//NEW ARRAY +$criterias = []; +$clause = ''; + +//Check for $_GET variables and build up clause +if(isset($get_content) && $get_content!=''){ + //GET VARIABLES FROM URL + $requests = explode("&", $get_content); + //Check for keys and values + foreach ($requests as $y){ + $v = explode("=", $y); + //INCLUDE VARIABLES IN ARRAY + $criterias[$v[0]] = $v[1]; + + if ($v[0] == 'page' || $v[0] =='p' || $v[0] =='totals' || $v[0] =='list' || $v[0] =='success_msg' || $v[0] == 'action' || $v[0] == 'tree'){ + //do nothing - these are not SQL parameters + } + elseif ($v[0] == 'parent_id') { + if ($v[1] === 'null' || $v[1] === '') { + $clause .= ' AND parent_id IS NULL'; + } else { + $clause .= ' AND parent_id = :parent_id'; + } + } + elseif ($v[0] == 'search') { + $clause .= ' AND (folder_name LIKE :search OR description LIKE :search)'; + } + else {//create clause + $clause .= ' AND '.$v[0].' = :'.$v[0]; + } + } + if ($whereclause == '' && $clause !=''){ + $whereclause = 'WHERE '.substr($clause, 4); + } else { + $whereclause .= $clause; + } +} + +//Define Query +if(isset($criterias['totals']) && $criterias['totals'] ==''){ +//Request for total rows + $sql = 'SELECT count(*) as count FROM marketing_folders '.$whereclause.''; +} +elseif (isset($criterias['list']) && $criterias['list'] =='') { + //SQL for list (no paging) + $sql = "SELECT + mf.*, + (SELECT COUNT(*) FROM marketing_files WHERE folder_id = mf.id) as file_count, + (SELECT COUNT(*) FROM marketing_folders WHERE parent_id = mf.id) as subfolder_count, + CASE + WHEN mf.parent_id IS NOT NULL THEN + (SELECT folder_name FROM marketing_folders WHERE id = mf.parent_id) + ELSE NULL + END as parent_folder_name + FROM marketing_folders mf + " . $whereclause . " + ORDER BY mf.folder_name ASC"; +} +else { + //SQL for paging + $sql = "SELECT + mf.*, + (SELECT COUNT(*) FROM marketing_files WHERE folder_id = mf.id) as file_count, + (SELECT COUNT(*) FROM marketing_folders WHERE parent_id = mf.id) as subfolder_count, + CASE + WHEN mf.parent_id IS NOT NULL THEN + (SELECT folder_name FROM marketing_folders WHERE id = mf.parent_id) + ELSE NULL + END as parent_folder_name + FROM marketing_folders mf + " . $whereclause . " + ORDER BY mf.folder_name ASC + LIMIT :page,:num_folders"; +} + +$stmt = $pdo->prepare($sql); + +//Bind to query +if (str_contains($whereclause, ':condition')){ + $stmt->bindValue('condition', $condition, PDO::PARAM_STR); +} + +if (!empty($criterias)){ + foreach ($criterias as $key => $value){ + $key_condition = ':'.$key; + if (str_contains($whereclause, $key_condition)){ + if ($key == 'search'){ + $search_value = '%'.$value.'%'; + $stmt->bindValue($key, $search_value, PDO::PARAM_STR); + } + elseif ($key == 'parent_id' && ($value === 'null' || $value === '')) { + // Skip binding for NULL parent_id + continue; + } + else { + $stmt->bindValue($key, $value, PDO::PARAM_STR); + } + } + } +} + +//Add paging details +if(isset($criterias['totals']) && $criterias['totals']==''){ + $stmt->execute(); + $messages = $stmt->fetch(); + $messages = $messages[0]; +} +elseif(isset($criterias['list']) && $criterias['list']==''){ + //Execute Query + $stmt->execute(); + //Get results + $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); +} +else { + $current_page = isset($criterias['p']) && is_numeric($criterias['p']) ? (int)$criterias['p'] : 1; + $stmt->bindValue('page', ($current_page - 1) * $page_rows_folders, PDO::PARAM_INT); + $stmt->bindValue('num_folders', $page_rows_folders, PDO::PARAM_INT); + + //Execute Query + $stmt->execute(); + //Get results + $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); +} + +// Check if tree structure is requested +if (isset($criterias['tree']) && isset($messages) && is_array($messages)) { + // Build hierarchical tree structure + $messages = buildFolderTree($messages); +} + +//------------------------------------------ +//JSON_ENCODE +//------------------------------------------ +$messages = json_encode($messages, JSON_UNESCAPED_UNICODE); + +//Send results +echo $messages; \ No newline at end of file diff --git a/api/v2/get/marketing_tags.php b/api/v2/get/marketing_tags.php new file mode 100644 index 0000000..8bc7431 --- /dev/null +++ b/api/v2/get/marketing_tags.php @@ -0,0 +1,115 @@ +soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';} + +//default whereclause +$whereclause = ''; + +// Tags are global, so no account hierarchy filtering +// list($whereclause,$condition) = getWhereclauselvl2("",$permission,$partner,'get'); + +//NEW ARRAY +$criterias = []; +$clause = ''; + +//Check for $_GET variables and build up clause +if(isset($get_content) && $get_content!=''){ + //GET VARIABLES FROM URL + $requests = explode("&", $get_content); + //Check for keys and values + foreach ($requests as $y){ + $v = explode("=", $y); + //INCLUDE VARIABLES IN ARRAY + $criterias[$v[0]] = $v[1]; + + if ($v[0] == 'page' || $v[0] =='p' || $v[0] =='totals' || $v[0] =='list' || $v[0] =='success_msg' || $v[0] == 'action'){ + //do nothing + } + elseif ($v[0] == 'search') { + $clause .= ' AND tag_name LIKE :search'; + } + elseif ($v[0] == 'used_only') { + if ($v[1] === 'true') { + $clause .= ' AND id IN (SELECT DISTINCT tag_id FROM marketing_file_tags)'; + } + } + else {//create clause + $clause .= ' AND '.$v[0].' = :'.$v[0]; + } + } + if ($whereclause == '' && $clause !=''){ + $whereclause = 'WHERE '.substr($clause, 4); + } else { + $whereclause .= $clause; + } +} + +//Set page +$pagina = 1; +if(isset($criterias['p']) && $criterias['p'] !='') { + $pagina = $criterias['p']; +} + +//check for totals call +if(isset($criterias['totals'])){ + $sql = 'SELECT COUNT(*) as found FROM marketing_tags mt '.$whereclause.' '; + $stmt = $pdo->prepare($sql); + + // Bind parameters + if (!empty($criterias)) { + foreach ($criterias as $key => $value) { + if ($key !== 'totals' && $key !== 'page' && $key !== 'p' && $key !== 'used_only') { + if ($key == 'search') { + $stmt->bindValue(':'.$key, '%'.$value.'%'); + } else { + $stmt->bindValue(':'.$key, $value); + } + } + } + } + + $stmt->execute(); + $found = $stmt->fetchColumn(); + echo $found; + exit; +} + +// Main query +$sql = "SELECT + mt.*, + COUNT(mft.file_id) as usage_count +FROM marketing_tags mt +LEFT JOIN marketing_file_tags mft ON mt.id = mft.tag_id +" . $whereclause . " +GROUP BY mt.id +ORDER BY mt.tag_name ASC"; + +$stmt = $pdo->prepare($sql); + +// Bind parameters +if (!empty($criterias)) { + foreach ($criterias as $key => $value) { + if ($key !== 'totals' && $key !== 'page' && $key !== 'p' && $key !== 'used_only') { + if ($key == 'search') { + $stmt->bindValue(':'.$key, '%'.$value.'%'); + } else { + $stmt->bindValue(':'.$key, $value); + } + } + } +} + +$stmt->execute(); +$marketing_tags = $stmt->fetchAll(PDO::FETCH_ASSOC); + +// Return result +echo json_encode($marketing_tags, JSON_UNESCAPED_UNICODE); \ No newline at end of file diff --git a/api/v2/get/service.php b/api/v2/get/service.php new file mode 100644 index 0000000..9fe1e98 --- /dev/null +++ b/api/v2/get/service.php @@ -0,0 +1,41 @@ + \ No newline at end of file diff --git a/api/v2/get/software_available.php b/api/v2/get/software_available.php index ef5f27f..8f4e4e6 100644 --- a/api/v2/get/software_available.php +++ b/api/v2/get/software_available.php @@ -62,6 +62,7 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ e.sw_version as current_sw_version, e.hw_version, e.sw_version_license, + e.sw_version_upgrade, e.rowID as equipment_rowid FROM equipment e JOIN products p ON e.productrowid = p.rowID @@ -78,6 +79,7 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ $current_sw_version = $equipment_data['current_sw_version']; $hw_version = $equipment_data['hw_version']; $sw_version_license = $equipment_data['sw_version_license']; + $sw_version_upgrade = $equipment_data['sw_version_upgrade']; $equipment_rowid = $equipment_data['equipment_rowid']; if (debug) { @@ -85,7 +87,8 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ 'product_rowid' => $product_rowid, 'productcode' => $productcode, 'current_sw_version_raw' => $current_sw_version, - 'hw_version' => $hw_version + 'hw_version' => $hw_version, + 'sw_version_upgrade' => $sw_version_upgrade ]; } @@ -119,6 +122,77 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ exit; } + // Check if sw_version_upgrade is set - this overrides normal availability check + if (!empty($sw_version_upgrade)) { + if (debug) { + $debug['sw_version_upgrade_check'] = [ + 'sw_version_upgrade_id' => $sw_version_upgrade, + 'checking_override' => true + ]; + } + + // Check if this version exists and is active + $sql = 'SELECT + psv.rowID as version_id, + psv.version, + psv.name, + psv.description, + psv.mandatory, + psv.latest, + psv.hw_version, + psv.file_path, + psv.status + FROM products_software_versions psv + WHERE psv.rowID = ?'; + $stmt = $pdo->prepare($sql); + $stmt->execute([$sw_version_upgrade]); + $upgrade_version = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($upgrade_version && $upgrade_version['status'] == 1) { + // Valid override found - check if different from current version + $normalized_upgrade_version = strtolower(ltrim($upgrade_version['version'], '0')); + + if (debug) { + $debug['sw_version_upgrade_check']['found_version'] = [ + 'version' => $upgrade_version['version'], + 'name' => $upgrade_version['name'], + 'normalized' => $normalized_upgrade_version, + 'status' => $upgrade_version['status'], + 'is_different_from_current' => ($current_sw_version != $normalized_upgrade_version) + ]; + } + + if ($current_sw_version && $normalized_upgrade_version == $current_sw_version) { + // Override version is same as current - no upgrade available + $software_available = "no"; + if (debug) { + $debug['sw_version_upgrade_check']['decision'] = 'Override version is same as current version'; + } + } else { + // Override version is different - upgrade is available + $software_available = "yes"; + if (debug) { + $debug['sw_version_upgrade_check']['decision'] = 'Override version is available'; + } + } + + $messages = ["software_available" => $software_available]; + + if (debug) { + debuglog(json_encode($debug)); + } + + echo json_encode($messages, JSON_UNESCAPED_UNICODE); + exit; + } else { + // Override version not found or inactive - fall back to standard check + if (debug) { + $debug['sw_version_upgrade_check']['found_version'] = $upgrade_version ? 'found but inactive' : 'not found'; + $debug['sw_version_upgrade_check']['decision'] = 'Falling back to standard check'; + } + } + } + //GET ALL ACTIVE SOFTWARE ASSIGNMENTS for this product with matching HW version $sql = 'SELECT psv.rowID as version_id, diff --git a/api/v2/get/software_update.php b/api/v2/get/software_update.php index 6742cd0..d56a26e 100644 --- a/api/v2/get/software_update.php +++ b/api/v2/get/software_update.php @@ -61,6 +61,7 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ e.sw_version as current_sw_version, e.hw_version, e.sw_version_license, + e.sw_version_upgrade, e.rowID as equipment_rowid FROM equipment e JOIN products p ON e.productrowid = p.rowID @@ -77,6 +78,7 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ $current_sw_version = $equipment_data['current_sw_version']; $hw_version = $equipment_data['hw_version']; $sw_version_license = $equipment_data['sw_version_license']; + $sw_version_upgrade = $equipment_data['sw_version_upgrade']; $equipment_rowid = $equipment_data['equipment_rowid']; if (debug) { @@ -85,7 +87,8 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ 'productcode' => $productcode, 'current_sw_version_raw' => $current_sw_version, 'hw_version' => $hw_version, - 'sw_version_license' => $sw_version_license + 'sw_version_license' => $sw_version_license, + 'sw_version_upgrade' => $sw_version_upgrade ]; } @@ -119,6 +122,95 @@ if (isset($criterias['sn']) && $criterias['sn'] != ''){ exit; } + // Check if sw_version_upgrade is set - this overrides normal availability check + if (!empty($sw_version_upgrade)) { + if (debug) { + $debug['sw_version_upgrade_check'] = [ + 'sw_version_upgrade_id' => $sw_version_upgrade, + 'checking_override' => true + ]; + } + + // Check if this version exists and is active + $sql = 'SELECT + psv.rowID as version_id, + psv.version, + psv.name, + psv.description, + psv.mandatory, + psv.latest, + psv.hw_version, + psv.file_path, + psv.status + FROM products_software_versions psv + WHERE psv.rowID = ?'; + $stmt = $pdo->prepare($sql); + $stmt->execute([$sw_version_upgrade]); + $upgrade_version = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($upgrade_version && $upgrade_version['status'] == 1) { + // Valid override found - check if different from current version + $normalized_upgrade_version = strtolower(ltrim($upgrade_version['version'], '0')); + + if (debug) { + $debug['sw_version_upgrade_check']['found_version'] = [ + 'version' => $upgrade_version['version'], + 'name' => $upgrade_version['name'], + 'normalized' => $normalized_upgrade_version, + 'status' => $upgrade_version['status'], + 'is_different_from_current' => ($current_sw_version != $normalized_upgrade_version) + ]; + } + + if (!$current_sw_version || $current_sw_version == '' || $normalized_upgrade_version != $current_sw_version) { + // Override version is different from current (or no current) - return only this upgrade + $output[] = [ + "productcode" => $productcode, + "name" => $upgrade_version['name'] ?? '', + "version" => $upgrade_version['version'], + "version_id" => $upgrade_version['version_id'], + "description" => $upgrade_version['description'] ?? '', + "hw_version" => $upgrade_version['hw_version'] ?? '', + "mandatory" => $upgrade_version['mandatory'] ?? '', + "latest" => $upgrade_version['latest'] ?? '', + "software" => $upgrade_version['file_path'] ?? '', + "source" => '', + "source_type" => '', + "price" => '0.00', + "currency" => '', + "is_current" => false + ]; + + // Generate download token + $download_token = create_download_url_token($criterias['sn'], $upgrade_version['version_id']); + $download_url = 'https://'.$_SERVER['SERVER_NAME'].'/api.php/v2/software_download?token='.$download_token; + $output[0]['source'] = $download_url; + $output[0]['source_type'] = 'token_url'; + + if (debug) { + $debug['sw_version_upgrade_check']['decision'] = 'Override version returned as only upgrade'; + $output[0]['_debug'] = $debug; + } + } else { + // Override version is same as current - no upgrades + if (debug) { + $debug['sw_version_upgrade_check']['decision'] = 'Override version is same as current version - no upgrades'; + $output = ['message' => 'No upgrades available', 'debug' => $debug]; + } + } + + $messages = $output; + echo json_encode($messages, JSON_UNESCAPED_UNICODE); + exit; + } else { + // Override version not found or inactive - fall back to standard check + if (debug) { + $debug['sw_version_upgrade_check']['found_version'] = $upgrade_version ? 'found but inactive' : 'not found'; + $debug['sw_version_upgrade_check']['decision'] = 'Falling back to standard check'; + } + } + } + //GET ALL ACTIVE SOFTWARE ASSIGNMENTS for this product with matching HW version $sql = 'SELECT psv.rowID as version_id, diff --git a/api/v2/post/marketing_delete.php b/api/v2/post/marketing_delete.php new file mode 100644 index 0000000..ed9036e --- /dev/null +++ b/api/v2/post/marketing_delete.php @@ -0,0 +1,93 @@ +soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';} + +//default whereclause +list($whereclause,$condition) = getWhereclauselvl2("",$permission,$partner,''); + +$file_id = $post_content['file_id'] ?? ''; + +if (empty($file_id)) { + echo json_encode(['error' => 'File ID is required']); + exit; +} + +//QUERY AND VERIFY ALLOWED +if (isAllowed('marketing',$profile,$permission,'D') === 1){ + // Get file information for cleanup + $file_sql = 'SELECT * FROM marketing_files WHERE id = ? AND accounthierarchy LIKE ?'; + $stmt = $pdo->prepare($file_sql); + $stmt->execute([$file_id, '%' . $partner->soldto . '%']); + $file_info = $stmt->fetch(PDO::FETCH_ASSOC); + + if (!$file_info) { + echo json_encode(['error' => 'File not found or access denied']); + exit; + } + + try { + $pdo->beginTransaction(); + + // Remove file tags + $delete_tags_sql = 'DELETE FROM marketing_file_tags WHERE file_id = ?'; + $stmt = $pdo->prepare($delete_tags_sql); + $stmt->execute([$file_id]); + + // Delete file record + $delete_file_sql = 'DELETE FROM marketing_files WHERE id = ? AND accounthierarchy LIKE ?'; + $stmt = $pdo->prepare($delete_file_sql); + $stmt->execute([$file_id, '%' . $partner->soldto . '%']); + + // Delete physical files + $base_path = dirname(__FILE__, 4) . "/"; + $main_file = $base_path . $file_info['file_path']; + $thumbnail_file = $file_info['thumbnail_path'] ? $base_path . $file_info['thumbnail_path'] : null; + + $files_deleted = []; + $files_failed = []; + + if (file_exists($main_file)) { + if (unlink($main_file)) { + $files_deleted[] = $file_info['file_path']; + } else { + $files_failed[] = $file_info['file_path']; + } + } + + if ($thumbnail_file && file_exists($thumbnail_file)) { + if (unlink($thumbnail_file)) { + $files_deleted[] = $file_info['thumbnail_path']; + } else { + $files_failed[] = $file_info['thumbnail_path']; + } + } + + $pdo->commit(); + + echo json_encode([ + 'success' => true, + 'message' => 'File deleted successfully', + 'files_deleted' => $files_deleted, + 'files_failed' => $files_failed + ]); + + } catch (Exception $e) { + $pdo->rollback(); + echo json_encode(['error' => 'Failed to delete file: ' . $e->getMessage()]); + } +} else { + echo json_encode(['error' => 'Insufficient permissions']); +} + +?> \ No newline at end of file diff --git a/api/v2/post/marketing_folders.php b/api/v2/post/marketing_folders.php new file mode 100644 index 0000000..ab29f94 --- /dev/null +++ b/api/v2/post/marketing_folders.php @@ -0,0 +1,105 @@ +soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';} + +//default whereclause +list($whereclause,$condition) = getWhereclauselvl2("",$permission,$partner,''); + +//BUILD UP PARTNERHIERARCHY FROM USER +$partner_hierarchy = json_encode(array("salesid"=>$partner->salesid,"soldto"=>$partner->soldto), JSON_UNESCAPED_UNICODE); + +$id = $post_content['id'] ?? ''; //check for rowID +$command = ($id == '')? 'insert' : 'update'; //IF rowID = empty then INSERT +if (isset($post_content['delete'])){$command = 'delete';} //change command to delete +$date = date('Y-m-d H:i:s'); + +//CREATE EMPTY STRINGS +$clause = ''; +$clause_insert =''; +$input_insert = ''; + +if ($command == 'update'){ + $post_content['updatedby'] = $username; + $post_content['updated'] = $date; +} +if ($command == 'insert'){ + $post_content['createdby'] = $username; + $post_content['accounthierarchy'] = $partner_hierarchy; +} + +//CREATE NEW ARRAY AND MAP TO CLAUSE +if(isset($post_content) && $post_content!=''){ + foreach ($post_content as $key => $var){ + if ($key == 'submit' || $key == 'id' || $key == 'delete'){ + //do nothing + } + else { + // Handle empty parent_id as NULL for foreign key constraint + if ($key == 'parent_id' && $var === '') { + $var = null; + } + $criterias[$key] = $var; + $clause .= ' , '.$key.' = ?'; + $clause_insert .= ' , '.$key.''; + $input_insert .= ', ?'; // ? for each insert item + $execute_input[]= $var; // Build array for input + } + } +} + +//CLEAN UP INPUT +$clause = substr($clause, 2); //Clean clause - remove first comma +$clause_insert = substr($clause_insert, 2); //Clean clause - remove first comma +$input_insert = substr($input_insert, 1); //Clean clause - remove first comma + +//QUERY AND VERIFY ALLOWED +if ($command == 'update' && isAllowed('marketing',$profile,$permission,'U') === 1){ + $sql = 'UPDATE marketing_folders SET '.$clause.' WHERE id = ? '.$whereclause.''; + $execute_input[] = $id; + $stmt = $pdo->prepare($sql); + $stmt->execute($execute_input); + echo json_encode(['success' => true, 'message' => 'Folder updated successfully']); +} +elseif ($command == 'insert' && isAllowed('marketing',$profile,$permission,'C') === 1){ + $sql = 'INSERT INTO marketing_folders ('.$clause_insert.') VALUES ('.$input_insert.')'; + $stmt = $pdo->prepare($sql); + $stmt->execute($execute_input); + $folder_id = $pdo->lastInsertId(); + echo json_encode(['success' => true, 'rowID' => $folder_id, 'message' => 'Folder created successfully']); +} +elseif ($command == 'delete' && isAllowed('marketing',$profile,$permission,'D') === 1){ + // Check if folder has subfolders + $subfolder_sql = 'SELECT COUNT(*) as count FROM marketing_folders WHERE parent_id = ? AND accounthierarchy LIKE ?'; + $stmt = $pdo->prepare($subfolder_sql); + $stmt->execute([$id, '%' . $partner->soldto . '%']); + $subfolder_count = $stmt->fetch()['count']; + + // Check if folder has files + $files_sql = 'SELECT COUNT(*) as count FROM marketing_files WHERE folder_id = ? AND accounthierarchy LIKE ?'; + $stmt = $pdo->prepare($files_sql); + $stmt->execute([$id, '%' . $partner->soldto . '%']); + $files_count = $stmt->fetch()['count']; + + if ($subfolder_count > 0 || $files_count > 0) { + echo json_encode(['error' => 'Cannot delete folder that contains subfolders or files']); + } else { + $stmt = $pdo->prepare('DELETE FROM marketing_folders WHERE id = ? '.$whereclause.''); + $stmt->execute([ $id ]); + echo json_encode(['success' => true, 'message' => 'Folder deleted successfully']); + } +} else { + echo json_encode(['error' => 'Insufficient permissions or invalid operation']); +} + +?> \ No newline at end of file diff --git a/api/v2/post/marketing_upload.php b/api/v2/post/marketing_upload.php new file mode 100644 index 0000000..a84a066 --- /dev/null +++ b/api/v2/post/marketing_upload.php @@ -0,0 +1,302 @@ +soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';} + +//default whereclause +list($whereclause,$condition) = getWhereclauselvl2("",$permission,$partner,''); + +//BUILD UP PARTNERHIERARCHY FROM USER +$partner_hierarchy = $condition; + +//QUERY AND VERIFY ALLOWED +if (isAllowed('marketing',$profile,$permission,'C') === 1){ + if (!isset($_FILES['file'])) { + echo json_encode(['success' => false, 'error' => 'No file uploaded']); + exit; + } + + $file = $_FILES['file']; + $folder_id = $_POST['folder_id'] ?? ''; + $tags = isset($_POST['tags']) ? json_decode($_POST['tags'], true) : []; + $title = $_POST['title'] ?? pathinfo($file['name'], PATHINFO_FILENAME); + + // Validate file type + $allowedTypes = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'mp4', 'mov', 'avi']; + $filename = $file['name']; + $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); + + if (!in_array($ext, $allowedTypes)) { + echo json_encode(['success' => false, 'error' => 'Invalid file type. Allowed: ' . implode(', ', $allowedTypes)]); + exit; + } + + $imageTypes = ['jpg', 'jpeg', 'png', 'gif', 'webp']; + $isImage = in_array($ext, $imageTypes); + + // For images over 10MB, automatically compress + if ($isImage && $file['size'] > 10000000) { + $compressed = compressImage($file['tmp_name'], $ext, 10000000); + if ($compressed === false) { + echo json_encode(['success' => false, 'error' => 'Failed to compress large image. Please reduce file size manually.']); + exit; + } + // Update file size after compression + $file['size'] = filesize($file['tmp_name']); + } + + // Non-images must be under 10MB + if (!$isImage && $file['size'] > 10000000) { + echo json_encode(['success' => false, 'error' => 'File too large. Maximum size is 10MB.']); + exit; + } + + // Create unique filename + $unique_filename = uniqid() . '_' . time() . '.' . $ext; + $target_dir = dirname(__FILE__, 4) . "/marketing/uploads/"; + $target_file = $target_dir . $unique_filename; + $logical_path = "marketing/uploads/" . $unique_filename; + + // Ensure upload directory exists + if (!file_exists($target_dir)) { + mkdir($target_dir, 0755, true); + } + + if (move_uploaded_file($file['tmp_name'], $target_file)) { + // Generate thumbnail for images + $thumbnail_path = null; + if (in_array($ext, ['jpg', 'jpeg', 'png', 'gif', 'webp'])) { + $thumb_dir = $target_dir . "thumbs/"; + if (!file_exists($thumb_dir)) { + mkdir($thumb_dir, 0755, true); + } + + $thumbnail_file = $thumb_dir . $unique_filename; + if (generateThumbnail($target_file, $thumbnail_file, 200, 200)) { + $thumbnail_path = "marketing/uploads/thumbs/" . $unique_filename; + } + } + + // Insert into database + $insert_sql = 'INSERT INTO `marketing_files` (`title`, `original_filename`, `file_path`, `thumbnail_path`, `file_type`, `file_size`, `folder_id`, `tags`, `createdby`, `accounthierarchy`) VALUES (?,?,?,?,?,?,?,?,?,?)'; + $stmt = $pdo->prepare($insert_sql); + $stmt->execute([ + $title, + $filename, + $logical_path, + $thumbnail_path, + $ext, + $file['size'], + $folder_id, + json_encode($tags), + $username, + $partner_hierarchy + ]); + + $file_id = $pdo->lastInsertId(); + + // Insert tags into separate table + if (!empty($tags)) { + $tag_sql = 'INSERT IGNORE INTO `marketing_tags` (`tag_name`) VALUES (?)'; + $tag_stmt = $pdo->prepare($tag_sql); + + $file_tag_sql = 'INSERT INTO `marketing_file_tags` (`file_id`, `tag_id`) SELECT ?, id FROM marketing_tags WHERE tag_name = ?'; + $file_tag_stmt = $pdo->prepare($file_tag_sql); + + foreach ($tags as $tag) { + $tag_stmt->execute([trim($tag)]); + $file_tag_stmt->execute([$file_id, trim($tag)]); + } + } + + echo json_encode([ + 'success' => true, + 'file_id' => $file_id, + 'path' => $logical_path, + 'thumbnail' => $thumbnail_path, + 'message' => 'File uploaded successfully' + ]); + + } else { + echo json_encode(['success' => false, 'error' => 'Failed to move uploaded file']); + } +} else { + echo json_encode(['success' => false, 'error' => 'Insufficient permissions']); +} + +// Function to compress large images +function compressImage($source, $ext, $maxSize) { + $info = @getimagesize($source); + if ($info === false) return false; + + $mime = $info['mime']; + + // Load image + switch ($mime) { + case 'image/jpeg': + $image = @imagecreatefromjpeg($source); + break; + case 'image/png': + $image = @imagecreatefrompng($source); + break; + case 'image/gif': + $image = @imagecreatefromgif($source); + break; + case 'image/webp': + $image = @imagecreatefromwebp($source); + break; + default: + return false; + } + + if ($image === false) return false; + + $width = imagesx($image); + $height = imagesy($image); + + // Start with 90% quality and reduce dimensions if needed + $quality = 90; + $scale = 1.0; + $tempFile = $source . '.tmp'; + + // Try progressive compression + while (true) { + // Calculate new dimensions + $newWidth = (int)($width * $scale); + $newHeight = (int)($height * $scale); + + // Create resized image + $resized = imagecreatetruecolor($newWidth, $newHeight); + + // Preserve transparency for PNG/GIF + if ($mime === 'image/png' || $mime === 'image/gif') { + imagealphablending($resized, false); + imagesavealpha($resized, true); + $transparent = imagecolorallocatealpha($resized, 255, 255, 255, 127); + imagefilledrectangle($resized, 0, 0, $newWidth, $newHeight, $transparent); + } + + imagecopyresampled($resized, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); + + // Save with current quality + if ($ext === 'jpg' || $ext === 'jpeg') { + imagejpeg($resized, $tempFile, $quality); + } elseif ($ext === 'png') { + // PNG compression level (0-9, where 9 is best compression) + $pngQuality = (int)((100 - $quality) / 11); + imagepng($resized, $tempFile, $pngQuality); + } elseif ($ext === 'webp') { + imagewebp($resized, $tempFile, $quality); + } else { + imagegif($resized, $tempFile); + } + + imagedestroy($resized); + + $fileSize = filesize($tempFile); + + // If file is small enough, use it + if ($fileSize <= $maxSize) { + imagedestroy($image); + rename($tempFile, $source); + return true; + } + + // If we've reduced too much, give up + if ($quality < 50 && $scale < 0.5) { + imagedestroy($image); + @unlink($tempFile); + return false; + } + + // Reduce quality or scale + if ($quality > 50) { + $quality -= 10; + } else { + $scale -= 0.1; + } + } +} + +// Function to generate thumbnail +function generateThumbnail($source, $destination, $width, $height) { + $info = getimagesize($source); + if ($info === false) return false; + + $mime = $info['mime']; + + switch ($mime) { + case 'image/jpeg': + $image = imagecreatefromjpeg($source); + break; + case 'image/png': + $image = imagecreatefrompng($source); + break; + case 'image/gif': + $image = imagecreatefromgif($source); + break; + case 'image/webp': + $image = imagecreatefromwebp($source); + break; + default: + return false; + } + + if ($image === false) return false; + + $original_width = imagesx($image); + $original_height = imagesy($image); + + // Calculate aspect ratio + $aspect_ratio = $original_width / $original_height; + + if ($width / $height > $aspect_ratio) { + $new_width = $height * $aspect_ratio; + $new_height = $height; + } else { + $new_height = $width / $aspect_ratio; + $new_width = $width; + } + + $thumbnail = imagecreatetruecolor($new_width, $new_height); + + // Preserve transparency + imagealphablending($thumbnail, false); + imagesavealpha($thumbnail, true); + $transparent = imagecolorallocatealpha($thumbnail, 255, 255, 255, 127); + imagefilledrectangle($thumbnail, 0, 0, $new_width, $new_height, $transparent); + + imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $new_width, $new_height, $original_width, $original_height); + + // Save thumbnail + switch ($mime) { + case 'image/jpeg': + $result = imagejpeg($thumbnail, $destination, 85); + break; + case 'image/png': + $result = imagepng($thumbnail, $destination, 8); + break; + case 'image/gif': + $result = imagegif($thumbnail, $destination); + break; + case 'image/webp': + $result = imagewebp($thumbnail, $destination, 85); + break; + default: + $result = false; + } + + imagedestroy($image); + imagedestroy($thumbnail); + + return $result; +} + +?> \ No newline at end of file diff --git a/api/v2/post/payment.php b/api/v2/post/payment.php index 84b4c54..e9e559e 100644 --- a/api/v2/post/payment.php +++ b/api/v2/post/payment.php @@ -6,7 +6,7 @@ defined($security_key) or exit; //------------------------------------------ // Payment Creation (for Software Upgrades) //------------------------------------------ -// This endpoint creates a Mollie payment and stores transaction data +// This endpoint creates a payment (Mollie or PayPal) and stores transaction data //Connect to DB $pdo = dbConnect($dbname); @@ -25,6 +25,8 @@ if (empty($post_content['serial_number']) || empty($post_content['version_id'])) $serial_number = $post_content['serial_number']; $version_id = $post_content['version_id']; $user_data = $post_content['user_data'] ?? []; +// Read payment_provider from top level first, then fallback to user_data +$payment_provider = $post_content['payment_provider'] ?? $user_data['payment_provider'] ?? 'mollie'; //+++++++++++++++++++++++++++++++++++++++++++++++++++++ // STEP 1: Get equipment data from serial_number @@ -137,67 +139,150 @@ if ($final_price <= 0) { } //+++++++++++++++++++++++++++++++++++++++++++++++++++++ -// STEP 6: DEBUG MODE - Log but continue to real Mollie +// STEP 6: DEBUG MODE - Log //+++++++++++++++++++++++++++++++++++++++++++++++++++++ if (debug) { - debuglog("DEBUG MODE: Creating real Mollie payment for testing"); + debuglog("DEBUG MODE: Creating $payment_provider payment for testing"); debuglog("DEBUG: Serial Number: $serial_number, Version ID: $version_id, Price: $final_price"); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++ -// STEP 7: Call Mollie API to create payment +// STEP 7: Create payment based on provider //+++++++++++++++++++++++++++++++++++++++++++++++++++++ try { - // Initialize Mollie - require dirname(__FILE__, 4).'/initialize.php'; - - // Format price for Mollie (must be string with 2 decimals) + // Format price (must be string with 2 decimals) $formatted_price = number_format((float)$final_price, 2, '.', ''); //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - // STEP 7A: Generate transaction ID BEFORE creating Mollie payment + // STEP 7A: Generate transaction ID BEFORE creating payment //+++++++++++++++++++++++++++++++++++++++++++++++++++++ - // Generate unique transaction ID (same as placeorder.php) $txn_id = strtoupper(uniqid('SC') . substr(md5(mt_rand()), 0, 5)); - // Build webhook URL and redirect URL with actual transaction ID + // Build URLs $protocol = 'https'; $hostname = $_SERVER['SERVER_NAME']; $path = '/'; - $webhook_url = "{$protocol}://{$hostname}{$path}webhook_mollie.php"; $redirect_url = "{$protocol}://{$hostname}{$path}?page=softwaretool&payment_return=1&order_id={$txn_id}"; if (debug) { debuglog("DEBUG: Transaction ID: {$txn_id}"); - debuglog("DEBUG: redirectUrl being sent to Mollie: " . $redirect_url); + debuglog("DEBUG: Redirect URL: " . $redirect_url); } - // Create payment with Mollie - $payment = $mollie->payments->create([ - 'amount' => [ - 'currency' => $final_currency ?: 'EUR', - 'value' => "{$formatted_price}" - ], - 'description' => "Software upgrade Order #{$txn_id}", - 'redirectUrl' => "{$redirect_url}", - 'webhookUrl' => "{$webhook_url}", - 'metadata' => [ - 'order_id' => $txn_id, - 'serial_number' => $serial_number, - 'version_id' => $version_id, - 'equipment_id' => $equipment_id - ] - ]); + //+++++++++++++++++++++++++++++++++++++++++++++++++++++ + // Create payment based on selected provider + //+++++++++++++++++++++++++++++++++++++++++++++++++++++ + if ($payment_provider === 'paypal') { + //========================================== + // PAYPAL PAYMENT CREATION + //========================================== + $cancel_url = "{$protocol}://{$hostname}{$path}?page=softwaretool&payment_return=cancelled&order_id={$txn_id}"; + + // Get PayPal access token + $access_token = getPayPalAccessToken(); - $mollie_payment_id = $payment->id; - $checkout_url = $payment->getCheckoutUrl(); + // Create PayPal order + $order_data = [ + 'intent' => 'CAPTURE', + 'purchase_units' => [[ + 'custom_id' => $txn_id, + 'description' => "Software upgrade Order #{$txn_id}", + 'amount' => [ + 'currency_code' => $final_currency ?: 'EUR', + 'value' => $formatted_price + ], + 'payee' => [ + 'email_address' => email + ] + ]], + 'application_context' => [ + 'return_url' => $redirect_url, + 'cancel_url' => $cancel_url, + 'brand_name' => site_name, + 'user_action' => 'PAY_NOW' + ] + ]; + + $ch = curl_init(PAYPAL_URL . '/v2/checkout/orders'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($order_data)); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'Content-Type: application/json', + 'Authorization: Bearer ' . $access_token + ]); + + $response = curl_exec($ch); + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($http_code != 200 && $http_code != 201) { + debuglog("PayPal API Error: HTTP $http_code - Response: $response"); + throw new Exception("PayPal order creation failed: HTTP $http_code"); + } + + $paypal_order = json_decode($response, true); + $payment_id = $paypal_order['id'] ?? null; + + // Extract approval URL + $checkout_url = ''; + foreach ($paypal_order['links'] ?? [] as $link) { + if ($link['rel'] === 'approve') { + $checkout_url = $link['href']; + break; + } + } + + if (!$checkout_url) { + throw new Exception("No approval URL received from PayPal"); + } + + $payment_method_id = 1; // PayPal + $payment_metadata = 'paypal_order_id'; + + } else { + //========================================== + // MOLLIE PAYMENT CREATION + //========================================== + // Initialize Mollie + require dirname(__FILE__, 4).'/initialize.php'; + + $webhook_url = "{$protocol}://{$hostname}{$path}webhook_mollie.php"; + + // Create payment with Mollie + $payment = $mollie->payments->create([ + 'amount' => [ + 'currency' => $final_currency ?: 'EUR', + 'value' => "{$formatted_price}" + ], + 'description' => "Software upgrade Order #{$txn_id}", + 'redirectUrl' => "{$redirect_url}", + 'webhookUrl' => "{$webhook_url}", + 'metadata' => [ + 'order_id' => $txn_id, + 'serial_number' => $serial_number, + 'version_id' => $version_id, + 'equipment_id' => $equipment_id + ] + ]); + + $payment_id = $payment->id; + $checkout_url = $payment->getCheckoutUrl(); + + if (debug) { + debuglog("DEBUG: Mollie payment created successfully"); + debuglog("DEBUG: Payment ID: $payment_id"); + debuglog("DEBUG: Redirect URL sent: $redirect_url"); + debuglog("DEBUG: Checkout URL: $checkout_url"); + } + + $payment_method_id = 0; // Mollie + $payment_metadata = 'mollie_payment_id'; + } if (debug) { - debuglog("DEBUG: Mollie payment created successfully"); - debuglog("DEBUG: Payment ID: $mollie_payment_id"); - debuglog("DEBUG: Redirect URL sent: $redirect_url"); - debuglog("DEBUG: Redirect URL from Mollie object: " . $payment->redirectUrl); - debuglog("DEBUG: Full payment object: " . json_encode($payment)); + debuglog("DEBUG: Payment created via $payment_provider"); + debuglog("DEBUG: Payment ID: $payment_id"); debuglog("DEBUG: Checkout URL: $checkout_url"); } @@ -218,7 +303,7 @@ try { VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; $stmt = $pdo->prepare($sql); $stmt->execute([ - $txn_id, // Use generated transaction ID, not Mollie payment ID + $txn_id, $final_price, 0, // 0 = pending $user_data['email'] ?? '', @@ -230,7 +315,7 @@ try { $user_data['postal'] ?? '', $user_data['country'] ?? '', $serial_number, - 0, // payment method + $payment_method_id, // 0 = Mollie, 1 = PayPal $partner_product, date('Y-m-d H:i:s') ]); @@ -245,14 +330,14 @@ try { 'serial_number' => $serial_number, 'equipment_id' => $equipment_id, 'hw_version' => $hw_version, - 'mollie_payment_id' => $mollie_payment_id // Store Mollie payment ID in options + $payment_metadata => $payment_id // Store payment provider ID ], JSON_UNESCAPED_UNICODE); $sql = 'INSERT INTO transactions_items (txn_id, item_id, item_price, item_quantity, item_options, created) VALUES (?, ?, ?, ?, ?, ?)'; $stmt = $pdo->prepare($sql); $stmt->execute([ - $transaction_id, // Use database transaction ID (not txn_id string, not mollie_payment_id) + $transaction_id, $version_id, $final_price, 1, @@ -265,7 +350,7 @@ try { //+++++++++++++++++++++++++++++++++++++++++++++++++++++ $messages = json_encode([ 'checkout_url' => $checkout_url, - 'payment_id' => $mollie_payment_id + 'payment_id' => $payment_id ], JSON_UNESCAPED_UNICODE); echo $messages; @@ -275,4 +360,27 @@ try { exit; } +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ +// Helper function to get PayPal access token +//+++++++++++++++++++++++++++++++++++++++++++++++++++++ +function getPayPalAccessToken() { + $ch = curl_init(PAYPAL_URL . '/v1/oauth2/token'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, 'grant_type=client_credentials'); + curl_setopt($ch, CURLOPT_USERPWD, PAYPAL_CLIENT_ID . ':' . PAYPAL_CLIENT_SECRET); + curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']); + + $response = curl_exec($ch); + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($http_code != 200) { + throw new Exception("Failed to get PayPal access token: HTTP $http_code"); + } + + $result = json_decode($response, true); + return $result['access_token'] ?? ''; +} + ?> diff --git a/assets/.DS_Store b/assets/.DS_Store index 1ba4cf5a23caa3cca1ed969ea790723f77e30419..7502f1f324f78f13bfed6b98ca295d7072285086 100644 GIT binary patch delta 55 zcmZoMXfc@J&&a(oU^g=(_hcRxV<`@X6oy2G5+F_j;$nu>w3OoHr2PCG#?3Y?>zFsQ IbNuB80FWLJ3jhEB delta 31 ncmZoMXfc@J&&ahgU^g=(*JK_R 'U', 'software_update' => 'R', 'software_download' => 'R', - 'software_available' => 'R' + 'software_available' => 'R', + 'marketing_files' => 'CRUD', + 'marketing_folders' => 'CRUD', + 'marketing_tags' => 'CRUD', + 'marketing_upload' => 'CRUD', + 'marketing_delete' => 'CRUD' ]; // Group permissions: [granting_page => [collection => allowed_actions_string]] diff --git a/assets/images/.DS_Store b/assets/images/.DS_Store index 12648aee244ff9e88c6e0a810e6dfa961ee7437f..a97d4fbaa404ff33dc6f3ce0b447852bdbc24d80 100644 GIT binary patch delta 110 zcmZoMXfc@J&&azmU^g=(?`9sB$4r4@3?U4`Kp4-E$&klT#*h!BlNnNh{0tzO$dCdg zix~763V^cdDVaIRNjdpR3=9kkK+M3v#K7?X|G#5EypMs=Sf7EBnRoINw&R=GIsWnk E0P`gt5&!@I delta 31 ncmZoMXfc@J&&abeU^g=(&t@K$$4ryG+4oFrh}q1}@s}R}qwxx* diff --git a/assets/marketing.js b/assets/marketing.js new file mode 100644 index 0000000..30f8c9c --- /dev/null +++ b/assets/marketing.js @@ -0,0 +1,900 @@ +/** + * Marketing File Management System + * Professional drag-and-drop upload with folder management and tagging + */ + +class MarketingFileManager { + constructor() { + this.currentFolder = ''; + this.selectedFiles = []; + this.uploadQueue = []; + this.viewMode = 'grid'; + this.filters = { + search: '', + tag: '', + fileTypes: [] + }; + this.folders = []; // Store folders data + this.loadRequestId = 0; // Track the latest load request + + this.init(); + } + + init() { + this.bindEvents(); + this.loadFolders(); + this.loadTags(); + this.loadFiles(); + this.setupDragAndDrop(); + } + + bindEvents() { + // Upload modal + document.getElementById('uploadBtn')?.addEventListener('click', () => { + this.showUploadModal(); + }); + + // Create folder modal + document.getElementById('createFolderBtn')?.addEventListener('click', () => { + this.showFolderModal(); + }); + + // View mode toggle + document.getElementById('gridViewBtn')?.addEventListener('click', () => { + this.setViewMode('grid'); + }); + + document.getElementById('listViewBtn')?.addEventListener('click', () => { + this.setViewMode('list'); + }); + + // Search + document.getElementById('searchInput')?.addEventListener('input', (e) => { + this.filters.search = e.target.value; + this.debounce(this.loadFiles.bind(this), 300)(); + }); + + // Tag filter + document.getElementById('tagFilter')?.addEventListener('change', (e) => { + this.filters.tag = e.target.value; + this.loadFiles(); + }); + + // File type filters + document.querySelectorAll('.file-type-filters input[type="checkbox"]').forEach(checkbox => { + checkbox.addEventListener('change', () => { + this.updateFileTypeFilters(); + }); + }); + + // Modal events + this.bindModalEvents(); + + // Upload events + this.bindUploadEvents(); + } + + bindModalEvents() { + // Close modals + document.querySelectorAll('.modal-close, .modal-cancel').forEach(btn => { + btn.addEventListener('click', (e) => { + this.closeModal(e.target.closest('.modal')); + }); + }); + + // Create folder + document.getElementById('createFolder')?.addEventListener('click', () => { + this.createFolder(); + }); + + // Download file + document.getElementById('downloadFile')?.addEventListener('click', () => { + if (this.selectedFile) { + this.downloadFile(this.selectedFile); + } + }); + + // Delete file + document.getElementById('deleteFile')?.addEventListener('click', () => { + if (this.selectedFile) { + this.deleteFile(this.selectedFile); + } + }); + } + + bindUploadEvents() { + const fileInput = document.getElementById('fileInput'); + const browseBtn = document.getElementById('browseBtn'); + const startUpload = document.getElementById('startUpload'); + + browseBtn?.addEventListener('click', () => { + fileInput.click(); + }); + + fileInput?.addEventListener('change', (e) => { + this.handleFileSelect(e.target.files); + }); + + startUpload?.addEventListener('click', () => { + this.startUpload(); + }); + } + + setupDragAndDrop() { + const uploadArea = document.getElementById('uploadArea'); + const filesContainer = document.getElementById('filesContainer'); + + if (uploadArea) { + uploadArea.addEventListener('dragover', this.handleDragOver); + uploadArea.addEventListener('drop', (e) => this.handleDrop(e)); + } + + if (filesContainer) { + filesContainer.addEventListener('dragover', this.handleDragOver); + filesContainer.addEventListener('drop', (e) => this.handleDrop(e)); + } + } + + handleDragOver(e) { + e.preventDefault(); + e.stopPropagation(); + e.currentTarget.classList.add('drag-over'); + } + + handleDrop(e) { + e.preventDefault(); + e.stopPropagation(); + e.currentTarget.classList.remove('drag-over'); + + const files = e.dataTransfer.files; + if (files.length > 0) { + this.showUploadModal(); + this.handleFileSelect(files); + } + } + + async loadFolders() { + try { + const response = await fetch('index.php?page=marketing&action=marketing_folders&tree=true', { cache: 'no-store' }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const text = await response.text(); + if (!text || text.trim() === '') { + console.warn('Empty response from folders API'); + this.folders = []; + this.renderFolderTree([]); + this.populateFolderSelects([]); + return; + } + + const data = JSON.parse(text); + + this.folders = data || []; // Store the folders data + // Always render the folder tree (at minimum shows Root) + this.renderFolderTree(this.folders); + this.populateFolderSelects(this.folders); + } catch (error) { + console.error('Error loading folders:', error); + this.folders = []; + // Show at least root folder on error + this.renderFolderTree([]); + this.populateFolderSelects([]); + } + } + + async loadTags() { + try { + const response = await fetch('index.php?page=marketing&action=marketing_tags&used_only=true', { cache: 'no-store' }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const text = await response.text(); + if (!text || text.trim() === '') { + console.warn('Empty response from tags API'); + this.populateTagFilter([]); + return; + } + + const data = JSON.parse(text); + + // Always populate tag filter (at minimum shows "All Tags") + this.populateTagFilter(data || []); + } catch (error) { + console.error('Error loading tags:', error); + // Show empty tag filter on error + this.populateTagFilter([]); + } + } + + async loadFiles() { + const container = document.getElementById('filesContainer'); + const loading = document.getElementById('loadingIndicator'); + const emptyState = document.getElementById('emptyState'); + + // Increment request ID to invalidate previous requests + const requestId = ++this.loadRequestId; + + // Clear container FIRST to prevent showing old files + container.innerHTML = ''; + loading.style.display = 'block'; + emptyState.style.display = 'none'; + + try { + // Use proper folder ID (null for root, or the folder ID) + const folderId = this.currentFolder ? this.currentFolder : 'null'; + // Add cache busting to prevent browser caching + let url = `index.php?page=marketing&action=marketing_files&folder_id=${folderId}&limit=50&_t=${Date.now()}`; + + if (this.filters.search) { + url += `&search=${encodeURIComponent(this.filters.search)}`; + } + + if (this.filters.tag) { + url += `&tag=${encodeURIComponent(this.filters.tag)}`; + } + + if (this.filters.fileTypes.length > 0) { + // API expects individual file_type parameter, so we'll filter client-side for now + } + + const response = await fetch(url, { cache: 'no-store' }); + + // Ignore response if a newer request was made + if (requestId !== this.loadRequestId) { + return; + } + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const text = await response.text(); + + if (!text || text.trim() === '') { + console.warn('Empty response from files API'); + emptyState.style.display = 'block'; + return; + } + + const data = JSON.parse(text); + + if (data && data.length > 0) { + let files = data; + + // Client-side file type filtering + if (this.filters.fileTypes.length > 0) { + files = files.filter(file => + this.filters.fileTypes.includes(file.file_type.toLowerCase()) + ); + } + + if (files.length === 0) { + emptyState.style.display = 'block'; + } else { + this.renderFiles(files); + } + } else { + emptyState.style.display = 'block'; + } + } catch (error) { + console.error('Error loading files:', error); + this.showToast('Error loading files', 'error'); + } finally { + loading.style.display = 'none'; + } + } + + renderFolderTree(folders, container = null, level = 0) { + if (!container) { + container = document.getElementById('folderTree'); + container.innerHTML = '
Root
'; + + // Add click listener to root folder + const rootFolder = container.querySelector('.folder-item.root'); + if (rootFolder) { + rootFolder.addEventListener('click', () => { + this.selectFolder(''); + }); + } + } + + folders.forEach(folder => { + const folderItem = document.createElement('div'); + folderItem.className = 'folder-item'; + folderItem.setAttribute('data-folder', folder.id); + folderItem.style.marginLeft = `${level * 20}px`; + + const hasChildren = folder.children && folder.children.length > 0; + const expandIcon = hasChildren ? '' : ''; + + folderItem.innerHTML = ` + ${expandIcon} + + ${this.escapeHtml(folder.folder_name)} + (${folder.file_count}) + `; + + folderItem.addEventListener('click', () => { + this.selectFolder(folder.id); + }); + + container.appendChild(folderItem); + + if (hasChildren) { + this.renderFolderTree(folder.children, container, level + 1); + } + }); + } + + renderFiles(files) { + const container = document.getElementById('filesContainer'); + container.innerHTML = ''; + + files.forEach(file => { + const fileElement = this.createFileElement(file); + container.appendChild(fileElement); + }); + } + + createFileElement(file) { + const fileElement = document.createElement('div'); + fileElement.className = `file-item ${this.viewMode}-item`; + fileElement.setAttribute('data-file-id', file.id); + + const thumbnail = this.getThumbnail(file); + const tags = file.tags.map(tag => `${this.escapeHtml(tag)}`).join(''); + + fileElement.innerHTML = ` +
+ ${thumbnail} +
+ + +
+
+
+
+ ${this.escapeHtml(file.title || file.original_filename)} +
+
+ ${file.file_size_formatted} + .${file.file_type.toUpperCase()} + ${this.formatDate(file.created)} +
+
+ ${tags} +
+
+ `; + + // Bind events + fileElement.querySelector('.preview-btn').addEventListener('click', () => { + this.previewFile(file); + }); + + fileElement.querySelector('.download-btn').addEventListener('click', () => { + this.downloadFile(file); + }); + + fileElement.addEventListener('dblclick', () => { + this.previewFile(file); + }); + + return fileElement; + } + + getThumbnail(file) { + const isImage = ['jpg', 'jpeg', 'png', 'gif', 'webp'].includes(file.file_type.toLowerCase()); + + if (isImage && file.thumbnail_path) { + return `${this.escapeHtml(file.title)}`; + } + + // File type icons + const iconMap = { + pdf: 'fa-file-pdf', + doc: 'fa-file-word', + docx: 'fa-file-word', + xls: 'fa-file-excel', + xlsx: 'fa-file-excel', + mp4: 'fa-file-video', + mov: 'fa-file-video', + avi: 'fa-file-video' + }; + + const iconClass = iconMap[file.file_type.toLowerCase()] || 'fa-file'; + + return `
`; + } + + showUploadModal() { + const modal = document.getElementById('uploadModal'); + this.showModal(modal); + this.populateUploadFolders(this.folders); // Use stored folders data + } + + showFolderModal() { + const modal = document.getElementById('folderModal'); + this.showModal(modal); + this.populateParentFolders(this.folders); // Use stored folders data + } + + showModal(modal) { + modal.style.display = 'flex'; + modal.classList.add('show'); + document.body.classList.add('modal-open'); + } + + closeModal(modal) { + modal.classList.remove('show'); + setTimeout(() => { + modal.style.display = 'none'; + document.body.classList.remove('modal-open'); + }, 300); + } + + handleFileSelect(files) { + this.uploadQueue = []; + + Array.from(files).forEach(file => { + this.uploadQueue.push({ + file: file, + progress: 0, + status: 'pending' + }); + }); + + this.renderUploadQueue(); + document.getElementById('startUpload').disabled = this.uploadQueue.length === 0; + } + + renderUploadQueue() { + const container = document.getElementById('uploadQueue'); + container.innerHTML = ''; + + this.uploadQueue.forEach((item, index) => { + const queueItem = document.createElement('div'); + queueItem.className = 'upload-item'; + queueItem.innerHTML = ` +
+
${this.escapeHtml(item.file.name)}
+
${this.formatFileSize(item.file.size)}
+
+
+
+
+
+
${item.status}
+
+ + `; + + queueItem.querySelector('.remove-btn').addEventListener('click', () => { + this.removeFromQueue(index); + }); + + container.appendChild(queueItem); + }); + } + + async startUpload() { + const folder = document.getElementById('uploadFolder').value; + const tags = document.getElementById('uploadTags').value + .split(',') + .map(tag => tag.trim()) + .filter(tag => tag.length > 0); + + for (let i = 0; i < this.uploadQueue.length; i++) { + const item = this.uploadQueue[i]; + await this.uploadFile(item, folder, tags, i); + } + + // Switch to the uploaded folder if different from current + if (folder && folder !== this.currentFolder) { + this.currentFolder = folder; + } + + this.loadFiles(); + this.closeModal(document.getElementById('uploadModal')); + this.showToast('Files uploaded successfully!', 'success'); + } + + async uploadFile(item, folderId, tags, index) { + const formData = new FormData(); + formData.append('file', item.file); + formData.append('folder_id', folderId); + formData.append('tags', JSON.stringify(tags)); + formData.append('title', item.file.name.replace(/\.[^/.]+$/, "")); + + item.status = 'uploading'; + this.updateQueueItem(index, item); + + try { + const response = await fetch('index.php?page=marketing&action=marketing_upload', { + method: 'POST', + body: formData, + onUploadProgress: (progressEvent) => { + item.progress = Math.round((progressEvent.loaded * 100) / progressEvent.total); + this.updateQueueItem(index, item); + } + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const text = await response.text(); + if (!text || text.trim() === '') { + throw new Error('Empty response from upload server'); + } + + const result = JSON.parse(text); + + if (result.success) { + item.status = 'completed'; + item.progress = 100; + } else { + throw new Error(result.error || 'Upload failed'); + } + } catch (error) { + item.status = 'error'; + item.error = error.message; + this.showToast(error.message, 'error'); + } + + this.updateQueueItem(index, item); + } + + async createFolder() { + const folderName = document.getElementById('folderName').value.trim(); + const parentId = document.getElementById('parentFolder').value; + const description = document.getElementById('folderDescription').value.trim(); + + if (!folderName) { + this.showToast('Folder name is required', 'error'); + return; + } + + try { + const formData = new FormData(); + formData.append('folder_name', folderName); + formData.append('parent_id', parentId || ''); + formData.append('description', description); + + const response = await fetch('index.php?page=marketing&action=marketing_folders', { + method: 'POST', + body: formData + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const text = await response.text(); + if (!text || text.trim() === '') { + throw new Error('Empty response from server'); + } + + const data = JSON.parse(text); + + if (data && (data.success || data.rowID)) { + this.closeModal(document.getElementById('folderModal')); + this.loadFolders(); + this.showToast('Folder created successfully!', 'success'); + } else if (data.error) { + throw new Error(data.error); + } else { + throw new Error('Unexpected response format'); + } + } catch (error) { + console.error('Create folder error:', error); + this.showToast(error.message || 'Error creating folder', 'error'); + } + } + + async deleteFile(file) { + if (!confirm(`Are you sure you want to delete "${file.title || file.original_filename}"?`)) { + return; + } + + try { + const formData = new FormData(); + formData.append('file_id', file.id); + + const response = await fetch('index.php?page=marketing&action=marketing_delete', { + method: 'POST', + body: formData + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const text = await response.text(); + if (!text || text.trim() === '') { + throw new Error('Empty response from delete server'); + } + + const data = JSON.parse(text); + + if (data && (data.success || !data.error)) { + this.closeModal(document.getElementById('previewModal')); + this.loadFiles(); + this.showToast('File deleted successfully!', 'success'); + } else if (data.error) { + throw new Error(data.error); + } else { + throw new Error('Unexpected response format'); + } + } catch (error) { + this.showToast(error.message || 'Error deleting file', 'error'); + } + } + + previewFile(file) { + this.selectedFile = file; + const modal = document.getElementById('previewModal'); + const title = document.getElementById('previewTitle'); + const content = document.getElementById('previewContent'); + + title.textContent = file.title || file.original_filename; + + // Generate preview content based on file type + if (['jpg', 'jpeg', 'png', 'gif', 'webp'].includes(file.file_type.toLowerCase())) { + content.innerHTML = `${this.escapeHtml(file.title)}`; + } else if (file.file_type.toLowerCase() === 'mp4') { + content.innerHTML = ``; + } else { + content.innerHTML = ` +
+ +

${this.escapeHtml(file.title || file.original_filename)}

+

File Type: ${file.file_type.toUpperCase()}

+

Size: ${file.file_size_formatted}

+

Created: ${this.formatDate(file.created)}

+
+ `; + } + + this.showModal(modal); + } + + downloadFile(file) { + const link = document.createElement('a'); + link.href = file.file_path; + link.download = file.original_filename; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + + // Utility methods + async apiCall(endpoint, params = {}, method = 'GET') { + const url = new URL(`/api.php${endpoint}`, window.location.origin); + + let options = { + method: method, + headers: { + 'Content-Type': 'application/json', + } + }; + + if (method === 'GET') { + Object.keys(params).forEach(key => url.searchParams.append(key, params[key])); + } else { + options.body = JSON.stringify(params); + } + + const response = await fetch(url, options); + return await response.json(); + } + + escapeHtml(text) { + const map = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + return text ? text.replace(/[&<>"']/g, m => map[m]) : ''; + } + + formatDate(dateString) { + return new Date(dateString).toLocaleDateString(); + } + + formatFileSize(bytes) { + const sizes = ['B', 'KB', 'MB', 'GB']; + const i = Math.floor(Math.log(bytes) / Math.log(1024)); + return Math.round(bytes / Math.pow(1024, i) * 100) / 100 + ' ' + sizes[i]; + } + + debounce(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; + } + + showToast(message, type = 'info') { + // Simple toast implementation + const toast = document.createElement('div'); + toast.className = `toast toast-${type}`; + toast.textContent = message; + + document.body.appendChild(toast); + + setTimeout(() => { + toast.classList.add('show'); + }, 100); + + setTimeout(() => { + toast.classList.remove('show'); + setTimeout(() => document.body.removeChild(toast), 300); + }, 3000); + } + + setViewMode(mode) { + this.viewMode = mode; + const container = document.getElementById('filesContainer'); + + // Update view mode classes + container.className = `files-container ${mode}-view`; + + // Update button states + document.querySelectorAll('.view-btn').forEach(btn => btn.classList.remove('active')); + document.getElementById(`${mode}ViewBtn`).classList.add('active'); + + // Re-render files with new view mode + this.loadFiles(); + } + + selectFolder(folderId) { + // Clear current folder selection and files BEFORE setting new folder + const container = document.getElementById('filesContainer'); + container.innerHTML = ''; + + // Set new current folder + this.currentFolder = folderId; + + // Update UI + this.updateBreadcrumb(); + + // Update active folder in tree + document.querySelectorAll('.folder-item').forEach(item => { + item.classList.remove('active'); + }); + const selectedFolder = document.querySelector(`[data-folder="${folderId}"]`); + if (selectedFolder) { + selectedFolder.classList.add('active'); + } + + // Load files for the new folder + this.loadFiles(); + } + + updateBreadcrumb() { + // Implement breadcrumb navigation + const nav = document.getElementById('breadcrumbNav'); + // This would build breadcrumb based on current folder path + } + + updateFileTypeFilters() { + this.filters.fileTypes = []; + + document.querySelectorAll('.file-type-filters input[type="checkbox"]:checked').forEach(checkbox => { + const types = checkbox.value.split(','); + this.filters.fileTypes.push(...types); + }); + + this.loadFiles(); + } + + populateTagFilter(tags) { + const select = document.getElementById('tagFilter'); + select.innerHTML = ''; + + tags.forEach(tag => { + const option = document.createElement('option'); + option.value = tag.tag_name; + option.textContent = `${tag.tag_name} (${tag.usage_count})`; + select.appendChild(option); + }); + } + + populateFolderSelects(folders) { + this.populateUploadFolders(folders); + this.populateParentFolders(folders); + } + + addFolderOptions(select, folders, level = 0) { + folders.forEach(folder => { + const option = document.createElement('option'); + option.value = folder.id; + option.textContent = ' '.repeat(level) + folder.folder_name; + select.appendChild(option); + + if (folder.children && folder.children.length > 0) { + this.addFolderOptions(select, folder.children, level + 1); + } + }); + } + + populateUploadFolders(folders = []) { + // Populate upload folder select + const select = document.getElementById('uploadFolder'); + if (select) { + select.innerHTML = ''; + this.addFolderOptions(select, folders); + } + } + + populateParentFolders(folders = []) { + // Populate parent folder select + const select = document.getElementById('parentFolder'); + if (select) { + select.innerHTML = ''; + this.addFolderOptions(select, folders); + } + } + + getFileIcon(fileType) { + const iconMap = { + pdf: 'fa-file-pdf', + doc: 'fa-file-word', + docx: 'fa-file-word', + xls: 'fa-file-excel', + xlsx: 'fa-file-excel', + mp4: 'fa-file-video', + mov: 'fa-file-video', + avi: 'fa-file-video' + }; + + return iconMap[fileType.toLowerCase()] || 'fa-file'; + } + + updateQueueItem(index, item) { + const queueItems = document.querySelectorAll('.upload-item'); + if (queueItems[index]) { + const progressFill = queueItems[index].querySelector('.progress-fill'); + const status = queueItems[index].querySelector('.upload-status'); + + progressFill.style.width = `${item.progress}%`; + status.textContent = item.status; + + if (item.status === 'error') { + queueItems[index].classList.add('error'); + } else if (item.status === 'completed') { + queueItems[index].classList.add('completed'); + } + } + } + + removeFromQueue(index) { + this.uploadQueue.splice(index, 1); + this.renderUploadQueue(); + document.getElementById('startUpload').disabled = this.uploadQueue.length === 0; + } +} + +// Initialize when DOM is ready +document.addEventListener('DOMContentLoaded', () => { + window.marketingManager = new MarketingFileManager(); +}); \ No newline at end of file diff --git a/assets/softwaretool.js b/assets/softwaretool.js index 5e8a9ac..74c1be7 100644 --- a/assets/softwaretool.js +++ b/assets/softwaretool.js @@ -860,9 +860,9 @@ function showPaymentModal(option) {
@@ -906,6 +906,16 @@ function showPaymentModal(option) { document.getElementById("paymentForm").onsubmit = async (e) => { e.preventDefault(); const formData = new FormData(e.target); + const paymentMethod = formData.get("payment_method"); + + // Auto-determine payment provider based on payment method + let paymentProvider = 'mollie'; // default + if (paymentMethod === 'paypal') { + paymentProvider = 'paypal'; + } else if (paymentMethod === 'credit_card' || paymentMethod === 'bank_transfer') { + paymentProvider = 'mollie'; + } + const paymentData = { name: formData.get("name"), email: formData.get("email"), @@ -913,7 +923,8 @@ function showPaymentModal(option) { city: formData.get("city"), postal: formData.get("postal"), country: formData.get("country"), - payment_method: formData.get("payment_method"), + payment_method: paymentMethod, + payment_provider: paymentProvider, version_id: option.version_id, price: price, currency: currency @@ -1010,7 +1021,9 @@ async function processPayment(paymentData, option, modal) { const paymentRequest = { serial_number: deviceSerialNumber, version_id: option.version_id, - user_data: paymentData // name, email, address only + payment_method: paymentData.payment_method, + payment_provider: paymentData.payment_provider, + user_data: paymentData // name, email, address, etc. }; // Debug logging @@ -1018,13 +1031,15 @@ async function processPayment(paymentData, option, modal) { console.log("=== DEBUG: Payment Request ==="); console.log("Serial Number:", deviceSerialNumber); console.log("Version ID:", option.version_id); + console.log("Payment Method:", paymentData.payment_method); + console.log("Payment Provider:", paymentData.payment_provider); console.log("User Data:", paymentData); console.log("Request payload:", paymentRequest); } - await logCommunication(`Payment initiated for version ${option.version_id}`, 'sent'); + await logCommunication(`Payment initiated for version ${option.version_id} via ${paymentData.payment_provider}`, 'sent'); - // Call payment API to create Mollie payment + // Call payment API (handles both Mollie and PayPal) const response = await fetch(link + "/v2/payment", { method: "POST", headers: { @@ -1052,16 +1067,16 @@ async function processPayment(paymentData, option, modal) { } if (result.checkout_url) { - await logCommunication(`Redirecting to Mollie payment: ${result.payment_id}`, 'sent'); + await logCommunication(`Redirecting to ${paymentData.payment_provider} payment: ${result.payment_id}`, 'sent'); if (typeof DEBUG !== 'undefined' && DEBUG) { - console.log("DEBUG: Redirecting to Mollie checkout..."); + console.log(`DEBUG: Redirecting to ${paymentData.payment_provider} checkout...`); } // Close modal before redirect document.body.removeChild(modal); - // Redirect to Mollie checkout page + // Redirect to payment checkout page window.location.href = result.checkout_url; } else { throw new Error(result.error || "No checkout URL received"); diff --git a/custom/morvalwatches/style/VeLiTi-Logo2.png b/custom/morvalwatches/style/VeLiTi-Logo2.png old mode 100755 new mode 100644 diff --git a/equipment.php b/equipment.php index 058404f..400e6ae 100644 --- a/equipment.php +++ b/equipment.php @@ -32,10 +32,10 @@ $view_contracts = isAllowed('contracts' ,$_SESSION['profile'],$_SESSION['permis $GET_VALUES = urlGETdetails($_GET) ?? ''; //CALL TO API FOR General information -$api_url = '/v1/equipments/'.$GET_VALUES; +$api_url = '/v2/equipments/'.$GET_VALUES; $responses = ioServer($api_url,''); //Decode Payload -if (!empty($responses)){$responses = decode_payload($responses);}else{$responses = null;} +if (!empty($responses)){$responses = json_decode($responses);}else{$responses = null;} $responses = $responses[0]; //CALL TO API FOR RELATED @@ -246,6 +246,46 @@ $view .= '
'.$equipment_label6.' '.$responses->sw_version.' '; +//Check if license is attached +if (!empty($responses->sw_version_license)) { + $view .= ' + '.($equipment_license ?? 'License').' + '.$responses->sw_version_license; + + // Check if license is active + $current_date = date('Y-m-d H:i:s'); + $is_active = false; + + if (!empty($responses->license_status) && $responses->license_status == 1) { + $starts_at = $responses->starts_at ?? null; + $expires_at = $responses->expires_at ?? null; + + if ($starts_at && $expires_at) { + if ($current_date >= $starts_at && $current_date <= $expires_at) { + $is_active = true; + } + } elseif ($starts_at && !$expires_at) { + if ($current_date >= $starts_at) { + $is_active = true; + } + } elseif (!$starts_at && $expires_at) { + if ($current_date <= $expires_at) { + $is_active = true; + } + } elseif (!$starts_at && !$expires_at) { + $is_active = true; + } + } + + if ($is_active) { + $view .= ' / '.$enabled ?? 'Active'; + } else { + $view .= ' / '.$disabled ?? 'Inactive'; + } + + $view .= ' + '; +} //SHOW ONLY SW_UPGRADE WHEN SET if (isset($products_software) && $products_software !=''){ foreach ($products_software as $products_soft){ diff --git a/equipment_manage.php b/equipment_manage.php index a44a706..f6edc7f 100644 --- a/equipment_manage.php +++ b/equipment_manage.php @@ -53,26 +53,26 @@ if ($equipment_ID !=''){ } //GET PRODUCTS -$api_url = '/v1/products/list='; +$api_url = '/v2/products/list='; $responses = ioServer($api_url,''); //Decode Payload -if (!empty($responses)){$products = decode_payload($responses);}else{$products = null;} +if (!empty($responses)){$products = json_decode($responses);}else{$products = null;} if (isset($_GET['equipmentID'])) { // ID param exists, edit an existing product //CALL TO API - $api_url = '/v1/equipments/equipmentID='.$equipment_ID; + $api_url = '/v2/equipments/equipmentID='.$equipment_ID; $responses = ioServer($api_url,''); //Decode Payload - if (!empty($responses)){$responses = decode_payload($responses);}else{$responses = null;} + if (!empty($responses)){$responses = json_decode($responses,true);}else{$responses = null;} - $equipment = json_decode(json_encode($responses[0]), true); + $equipment = $responses[0]; - //GET PRODUCTS_SOFTWARE - $api_url = '/v1/products_software/productrowid='.$equipment['productrowid'].'&status=1'; + //GET PRODUCTS_SOFTWARE_VERSIONS + $api_url = '/v2/products_software_versions/hw_version='.$equipment['hw_version'].'&status=1'; $products_software = ioServer($api_url,''); //Decode Payload - if (!empty($products_software)){$products_software = decode_payload($products_software);}else{$products_software = null;} + if (!empty($products_software)){$products_software = json_decode($products_software);}else{$products_software = null;} //------------------------------------ //CHECK IF USER IS ALSO CREATOR OF RECORD THEN OVERRIDE UPDATE_ALLOWED @@ -174,7 +174,7 @@ if (isset($products_software) && $products_software !=''){ '; foreach ($products_software as $products_soft ){ if ($products_soft->hw_version == $equipment['hw_version']){ - $product_software_list .= ' + $product_software_list .= ' '; } } diff --git a/marketing.php b/marketing.php index 8a46779..009f561 100644 --- a/marketing.php +++ b/marketing.php @@ -10,107 +10,362 @@ if (debug && debug_id == $_SESSION['id']){ include_once './assets/functions.php'; include_once './settings/settings_redirector.php'; +$page = 'marketing'; //Check if allowed -if (isAllowed('marketing',$_SESSION['profile'],$_SESSION['permission'],'R') === 0){ +if (isAllowed($page,$_SESSION['profile'],$_SESSION['permission'],'R') === 0){ header('location: index.php'); exit; } +//PAGE Security +$update_allowed = isAllowed($page,$_SESSION['profile'],$_SESSION['permission'],'U'); +$delete_allowed = isAllowed($page,$_SESSION['profile'],$_SESSION['permission'],'D'); +$create_allowed = isAllowed($page,$_SESSION['profile'],$_SESSION['permission'],'C'); + //GET PARAMETERS: -$product_group = $_GET['product_group'] ?? ''; -$product_content = $_GET['product_content'] ?? ''; +$current_folder = $_GET['folder'] ?? ''; +$view_mode = $_GET['view'] ?? 'grid'; +$search_term = $_GET['search'] ?? ''; +$tag_filter = $_GET['tag'] ?? ''; -template_header('Marketing', 'marketing'); -echo ' -
-
- -
-

'.$marketing_h2.'

-

'.$marketing_p.'

-
-
-
-
-
-
'; - foreach ($marketing_structure as $marketing => $folders){ - $style = ''; - if (!empty($product_group) && $product_group !== $marketing) { - $style = ' style="opacity: 0.5; color: #999; background-color: #f5f5f5;"'; - } elseif (!empty($product_group) && $product_group === $marketing) { - $style = ' style="background-color: #007cba; color: white;"'; +// Handle AJAX API requests +if (isset($_GET['action'])) { + $action = $_GET['action']; + + // Suppress errors for API responses to avoid HTML output breaking JSON + error_reporting(0); + ini_set('display_errors', 0); + + try { + // Marketing folders + if ($action === 'marketing_folders') { + if ($_SERVER['REQUEST_METHOD'] === 'POST') { + // Create folder - use standard format expected by POST API + $payload = [ + 'folder_name' => $_POST['folder_name'] ?? '', + 'parent_id' => $_POST['parent_id'] ?? '', + 'description' => $_POST['description'] ?? '' + // rowID is empty = insert (standard pattern) + ]; + $response = ioServer('/v2/marketing_folders', json_encode($payload)); + } else { + // Get folders + $get_values = urlGETdetails($_GET) ?? ''; + $response = ioServer('/v2/marketing_folders/' . $get_values, ''); } - echo ''.$marketing.''; + header('Content-Type: application/json'); + echo $response; + exit; } - echo' -
-
'; - // Only show folders if a product group is selected - if (!empty($product_group) && isset($marketing_structure[$product_group])) { - foreach($marketing_structure[$product_group] as $folder){ - echo ' '.$folder.''; + + // Marketing files + if ($action === 'marketing_files') { + // Filter out 'page', 'action', and cache busting timestamp from GET parameters + $filtered_params = $_GET; + unset($filtered_params['page']); + unset($filtered_params['action']); + unset($filtered_params['_t']); + + $get_values = urlGETdetails($filtered_params) ?? ''; + // API expects path segments, not query string: /v2/marketing_files/params + $api_url = '/v2/marketing_files/' . $get_values; + $response = ioServer($api_url, ''); + header('Content-Type: application/json'); + echo $response; + exit; + } + + // Marketing tags + if ($action === 'marketing_tags') { + // Filter out 'page' and 'action' from GET parameters + $get_values = urlGETdetails($_GET) ?? ''; + $response = ioServer('/v2/marketing_tags?' . $get_values, ''); + header('Content-Type: application/json'); + echo $response; + exit; + } + + // Marketing upload + if ($action === 'marketing_upload' && $_SERVER['REQUEST_METHOD'] === 'POST') { + if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK && $_FILES['file']['size'] > 0) { + // Use the uploaded file's temp path directly + $temp_path = $_FILES['file']['tmp_name']; + + // Get actual MIME type from file content (more secure than trusting browser) + $actual_mime_type = mime_content_type($temp_path); + + // Sanitize filename - remove path info and dangerous characters + $safe_filename = basename($_FILES['file']['name']); + $safe_filename = preg_replace('/[^a-zA-Z0-9._-]/', '_', $safe_filename); + + $fileData = [ + 'file' => new CURLFile($temp_path, $actual_mime_type, $safe_filename) + ]; + + $additionalData = $_POST; // Include any additional POST data + + $token = createCommunicationToken($_SESSION['userkey']); + + $response = ioAPIv2_FileUpload('/v2/marketing_upload/', $fileData, $additionalData, $token); + + // No need to unlink since we didn't move the file + } else { + $response = json_encode(['error' => 'No file uploaded or upload error']); } + header('Content-Type: application/json'); + echo $response; + exit; } - echo ' -
-
'; - - -if (isset($product_group) && $product_group !='' && isset($product_content) && $product_content !=''){ - - echo ' -
-
'; - $dir_name = $main_marketing_dir.$product_group.'/'.$product_content; - - $files = array_diff(scandir($dir_name), array('.', '..')); - echo''; - - foreach ($files as $file) { - $filetype = strtolower(pathinfo($file,PATHINFO_EXTENSION)); - - if ( $filetype != '' && $filetype != 'ds_store'){ - echo ' -
- - '; - if ( $filetype == "jpg" || $filetype == "png" || $filetype == "jpeg" || $filetype == "gif" || $filetype == "png"){ - echo' - - '; + + // Marketing delete + if ($action === 'marketing_delete' && $_SERVER['REQUEST_METHOD'] === 'POST') { + $payload = ['file_id' => $_POST['file_id'] ?? '']; + $response = ioServer('/v2/marketing_delete', json_encode($payload)); + header('Content-Type: application/json'); + echo $response; + exit; } - if ($filetype == "doc" || $filetype == "docx" || $filetype == "xls"|| $filetype == "xlsx"){ - echo' - - '; - } - if ( $filetype == "pdf"){ - echo' - '.ucfirst(substr($file, 0, strpos($file, - '.ucfirst(substr(substr($file, 0, strpos($file, ".")),0 ,25)).' - '; - } - if ( $filetype == "mp4"){ - echo' - - '; - } - - echo' - -
'; - } + } catch (Exception $e) { + header('Content-Type: application/json'); + http_response_code(500); + echo json_encode(['error' => $e->getMessage()]); + exit; } - -echo '
-
-
-'; } +template_header('Marketing', 'marketing'); +?> + + + +
+
+ +
+

+

+
+
+
+ + +
+ + +
+
+ + + + +
+ + +
+ +
+ + +
+ + + +
+ + +
+
+
+ + +
+ + +
+ + + +
+ + +
+ + +
+ +
+ + +
+ + Loading files... +
+ + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/order.php b/order.php index 19460e3..0944cbe 100644 --- a/order.php +++ b/order.php @@ -42,6 +42,23 @@ $order = ioServer($api_url,''); //Decode Payload if (!empty($order)){$order = json_decode($order,true);}else{$order = null;} +//HANDLE STATUS CHANGE +if ($update_allowed === 1){ + if (isset($_POST['payment_status'])) { + //GET ALL POST DATA + $data = json_encode($_POST, JSON_UNESCAPED_UNICODE); + + //API call + $responses = ioServer('/v2/transactions', $data); + if ($responses === 'NOK'){ + + } else { + header('Location: index.php?page=order&id='.$_POST['id'].'&success_msg=2'); + exit; + } + } +} + // Handle success messages if (isset($_GET['success_msg'])) { if ($_GET['success_msg'] == 1) { @@ -112,11 +129,33 @@ $view .='

Payment Method

' . (${$payment_method} ?? $order['header']['payment_method'] ). '

-
+
'; + +//STATUS CHANGE FORM +if ($update_allowed === 1){ + $view .=' +
+

Payment Status

+
+

+ +
+
'; +} else { + $view .='

Payment Status

' . (${$payment_status} ?? $order['header']['payment_status'] ). '

-
+
'; +} +$view .='

Date

'.getRelativeTime($order['header']['created']). '

diff --git a/products_software_upgrade_paths_manage.php b/products_software_upgrade_paths_manage.php index 592a0be..487f54d 100644 --- a/products_software_upgrade_paths_manage.php +++ b/products_software_upgrade_paths_manage.php @@ -28,7 +28,7 @@ $path = [ 'from_version_id' => '', 'to_version_id' => '', 'price' => '', - 'currency' => 'USD', + 'currency' => 'EUR', 'description' => '', 'is_active' => 1, 'created' => '', diff --git a/settings/settingsmenu.php b/settings/settingsmenu.php index 85cf303..b481eb6 100644 --- a/settings/settingsmenu.php +++ b/settings/settingsmenu.php @@ -336,6 +336,7 @@ $page_rows_invoice = 25; //invoices $page_rows_dealers = 25; //dealers $page_rows_software_versions = 50; //software versions $page_rows_software_assignment = 50; //software assignment +$page_rows_folders = 25; //marketing folders //------------------------------------------ // Languages supported diff --git a/settings/settingsprofiles.php b/settings/settingsprofiles.php index 4ec0352..283f91d 100644 --- a/settings/settingsprofiles.php +++ b/settings/settingsprofiles.php @@ -6,7 +6,7 @@ define('superuser_profile','admin,dashboard,profile,application,assets,firmwaret /*Admin*/ define('admin_profile','account,accounts,admin,dashboard,profile,application,assets,buildtool,buildtool,cartest,cartest_manage,cartests,changelog,communication,communication_send,communications,firmwaretool,histories,history,history_manage,marketing,partner,partners,sales,servicereport,servicereports,contract,contract_manage,contracts,equipment,equipment_data,equipment_healthindex,equipment_manage,equipment_manage_edit,equipments,equipments_mass_update,product,product_manage,products,products_software,products_versions,report_build,report_contracts_billing,report_healthindex,reporting,rma,rma_history,rma_history_manage,rma_manage,rmas,user,user_manage,users'); /*AdminPlus*/ -define('adminplus_profile','account,account_manage,accounts,admin,config,dashboard,profile,settings,api,application,appointment,assets,billing,buildtool,buildtool,cartest,cartest_manage,cartests,catalog,categories,category,changelog,checkout,com_log,communication,communication_send,communications,cronjob,debug,dev,discount,discounts,firmwaretool,generate_download_token,histories,history,history_manage,identity,identity_dealers,language,licenses,logfile,mailer,maintenance,marketing,media,media_manage,media_scanner,media_upload,order,orders,partner,partners,payment,placeorder,pricelists,pricelists_items,pricelists_manage,profiles,register,render_service_report,reset,sales,security,servicereport,servicereports,shipping,shipping_manage,shopping_cart,software_available,software_download,software_update,softwaretool,tax,taxes,test,transactions,transactions_items,translation_manage,translations,translations_details,unscribe,upgrades,uploader,vin,contract,contract_manage,contracts,dealer,dealer_manage,dealers,dealers_media,equipment,equipment_data,equipment_healthindex,equipment_manage,equipment_manage_edit,equipments,equipments_mass_update,product,product_manage,products,products_attributes,products_attributes_items,products_attributes_manage,products_categories,products_configurations,products_media,products_software,products_software_assignment,products_software_assignments,products_software_assignments,products_software_licenses,products_software_upgrade_paths,products_software_upgrade_paths_manage,products_software_version,products_software_version_access_rules_manage,products_software_version_manage,products_software_versions,products_versions,report_build,report_contracts_billing,report_healthindex,report_usage,reporting,rma,rma_history,rma_history_manage,rma_manage,rmas,user,user_credentials,user_manage,users'); +define('adminplus_profile','account,account_manage,accounts,admin,config,dashboard,profile,settings,api,application,appointment,assets,billing,buildtool,buildtool,cartest,cartest_manage,cartests,catalog,categories,category,changelog,checkout,com_log,communication,communication_send,communications,cronjob,debug,dev,discount,discounts,factuur,firmwaretool,functions,generate_download_token,histories,history,history_manage,identity,identity_dealers,initialize,invoice,language,licenses,logfile,mailer,maintenance,marketing,marketing_delete,marketing_files,marketing_folders,marketing_migrate,marketing_tags,marketing_upload,media,media_manage,media_scanner,media_upload,order,orders,partner,partners,payment,placeorder,pricelists,pricelists_items,pricelists_manage,profiles,register,render_service_report,reset,sales,security,service,servicereport,servicereports,shipping,shipping_manage,shopping_cart,software_available,software_download,software_update,softwaretool,tax,taxes,test,transactions,transactions_items,translation_manage,translations,translations_details,unscribe,upgrades,uploader,vin,webhook_mollie,webhook_paypal,contract,contract_manage,contracts,dealer,dealer_manage,dealers,dealers_media,equipment,equipment_data,equipment_healthindex,equipment_history,equipment_manage,equipment_manage_edit,equipments,equipments_mass_update,product,product_manage,products,products_attributes,products_attributes_items,products_attributes_manage,products_categories,products_configurations,products_media,products_software,products_software_assignment,products_software_assignments,products_software_assignments,products_software_licenses,products_software_upgrade_paths,products_software_upgrade_paths_manage,products_software_version,products_software_version_access_rules_manage,products_software_version_manage,products_software_versions,products_versions,report_build,report_contracts_billing,report_healthindex,report_usage,reporting,rma,rma_history,rma_history_manage,rma_manage,rmas,user,user_credentials,user_manage,users'); /*Build*/ define('build','dashboard,profile,application,buildtool,buildtool,firmwaretool,products_software'); /*Commerce*/ @@ -14,7 +14,7 @@ define('commerce','admin,dashboard,profile,application,catalog,categories,catego /*Distribution*/ define('distribution','admin,dashboard,profile,application,assets,firmwaretool,histories,history,history_manage,marketing,partner,partners,servicereport,servicereports,equipment,equipment_manage,equipment_manage_edit,equipments,equipments_mass_update,product,product_manage,products,products_software,products_versions,user,user_manage,users'); /*Firmware*/ -define('firmware','application,firmwaretool,products_software'); +define('firmware','application,firmwaretool,software_available,software_download,software_update,softwaretool,transactions,transactions_items,products_software'); /*Garage*/ define('garage','dashboard,profile,application,cartest,cartest_manage,cartests,products_versions'); /*Interface*/ diff --git a/settings/settingsviews.php b/settings/settingsviews.php index 0e7e408..9a4956d 100644 --- a/settings/settingsviews.php +++ b/settings/settingsviews.php @@ -44,11 +44,14 @@ $all_views = [ "equipment", "equipment_data", "equipment_healthindex", + "equipment_history", "equipment_manage", "equipment_manage_edit", "equipments", "equipments_mass_update", + "factuur", "firmwaretool", + "functions", "generate_download_token", "histories", "history", @@ -63,6 +66,12 @@ $all_views = [ "mailer", "maintenance", "marketing", + "marketing_delete", + "marketing_files", + "marketing_folders", + "marketing_migrate", + "marketing_tags", + "marketing_upload", "media", "media_manage", "media_scanner", @@ -114,6 +123,7 @@ $all_views = [ "rmas", "sales", "security", + "service", "servicereport", "servicereports", "settings", @@ -141,6 +151,7 @@ $all_views = [ "users", "vin", "webhook_mollie", + "webhook_paypal", ]; ?> \ No newline at end of file diff --git a/softwaretool.php b/softwaretool.php index e259d50..1bdf7cc 100644 --- a/softwaretool.php +++ b/softwaretool.php @@ -20,6 +20,72 @@ $bearertoken = createCommunicationToken($_SESSION['userkey']); //+++++++++++++++++++++++++++++++++++++++++++++++++++++ $payment_return = isset($_GET['order_id']) ? $_GET['order_id'] : null; $payment_return_status = isset($_GET['payment_return']) ? $_GET['payment_return'] : null; +$paypal_token = isset($_GET['token']) ? $_GET['token'] : null; // PayPal returns with ?token= + +// Handle PayPal return - capture the order directly +if ($paypal_token && $payment_return) { + try { + // Get PayPal access token + $ch = curl_init(PAYPAL_URL . '/v1/oauth2/token'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, 'grant_type=client_credentials'); + curl_setopt($ch, CURLOPT_USERPWD, PAYPAL_CLIENT_ID . ':' . PAYPAL_CLIENT_SECRET); + curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']); + $response = curl_exec($ch); + curl_close($ch); + $token_data = json_decode($response, true); + $access_token = $token_data['access_token'] ?? ''; + + if ($access_token) { + // Capture the PayPal order + $capture_url = PAYPAL_URL . "/v2/checkout/orders/{$paypal_token}/capture"; + $ch = curl_init($capture_url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'Content-Type: application/json', + 'Authorization: Bearer ' . $access_token + ]); + $response = curl_exec($ch); + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if (debug) { + debuglog("PayPal Capture: HTTP $http_code - $response"); + } + + // Update transaction status based on capture result + if ($http_code == 200 || $http_code == 201) { + $capture_result = json_decode($response, true); + $capture_status = $capture_result['status'] ?? ''; + + $payment_status = null; + if ($capture_status === 'COMPLETED') { + $payment_status = 1; // Paid + } elseif ($capture_status === 'PENDING') { + $payment_status = 101; // Pending + } + + if ($payment_status !== null) { + $pdo = dbConnect($dbname); + $sql = 'UPDATE transactions SET payment_status = ? WHERE txn_id = ?'; + $stmt = $pdo->prepare($sql); + $stmt->execute([$payment_status, $payment_return]); + } + } + } + + // Redirect to clean URL + header("Location: ?page=softwaretool&payment_return=1&order_id={$payment_return}"); + exit; + + } catch (Exception $e) { + if (debug) { + debuglog("PayPal Capture Error: " . $e->getMessage()); + } + } +} template_header('Softwaretool', 'softwaretool','view'); @@ -205,6 +271,9 @@ echo ' Date: Mon, 12 Jan 2026 15:59:46 +0100 Subject: [PATCH 04/18] 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. --- api/v2/get/history.php | 63 +- api/v2/post/history.php | 11 +- assets/functions.php | 8 +- assets/softwaretool.js | 210 +++++- contract.php | 2 +- equipment.php | 258 ++++++- login.php | 2 +- product.php | 6 +- products_software_version_manage.php | 17 +- register.php | 799 +++++++++++++++------- rma.php | 4 +- rma_manage.php | 4 +- settings/translations/translations_DE.php | 17 +- settings/translations/translations_ES.php | 16 +- settings/translations/translations_NL.php | 16 +- settings/translations/translations_PL.php | 8 +- settings/translations/translations_PT.php | 16 +- settings/translations/translations_US.php | 16 +- softwaretool.php | 20 +- style/admin.css | 181 ++++- style/admin_login.css | 13 +- 21 files changed, 1332 insertions(+), 355 deletions(-) diff --git a/api/v2/get/history.php b/api/v2/get/history.php index 8967b7c..e433d1d 100644 --- a/api/v2/get/history.php +++ b/api/v2/get/history.php @@ -64,11 +64,64 @@ if(isset($get_content) && $get_content!=''){ //build up search $clause .= ' AND (h.rowID like :'.$v[0].' OR h.createdby like :'.$v[0].')'; } - elseif ($v[0] == 'type' && $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; + elseif ($v[0] == 'serialnumber') { + //build up serialnumber + //check if multiple serialnumbers are provided + if (str_contains($v[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') { //build up search diff --git a/api/v2/post/history.php b/api/v2/post/history.php index 2cbe397..b24d723 100644 --- a/api/v2/post/history.php +++ b/api/v2/post/history.php @@ -24,7 +24,11 @@ function checkSerial($serialinput){ } //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'])) { // +++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -148,6 +152,11 @@ if (isset($post_content['sn']) && isset($post_content['payload'])){ $servicetoolHistoryUpdate = 1; $sn_service = $post_content['sn_service']; break; + + case 'customer': //update from Portal + $historytype = 'Customer'; + $equipmentUpdate = 1; + break; default: $historytype = 'Other'; diff --git a/assets/functions.php b/assets/functions.php index 647f357..77ec17a 100644 --- a/assets/functions.php +++ b/assets/functions.php @@ -1755,7 +1755,7 @@ function warrantyStatus($input){ if (!empty($input) && $input < $warrantydate){ $warranty_date_due = ''.$warranty_outdated_text.''; } else { - $warranty_date_due =''.$warranty_recent.' ('.date('Y-m-d', strtotime($input. ' + 365 days')).')'; + $warranty_date_due =''.$warranty_recent.' ('.date('Y-m-d', strtotime($input. ' + 365 days')).')'; } return $warranty_date_due; @@ -1788,7 +1788,7 @@ function serviceStatus($input){ if (!empty($input) && $input < $servicedate){ $service_date_due = ''.$service_renewal_text.''; } else { - $service_date_due =''.$service_recent.' ('.date('Y-m-d', strtotime($input. ' + 365 days')).')'; + $service_date_due =''.$service_recent.' ('.date('Y-m-d', strtotime($input. ' + 365 days')).')'; } return $service_date_due; @@ -1815,7 +1815,7 @@ function availableFirmware($sw_version,$sw_version_latest){ switch ($sw_version_latest) { case 1: - $message = ''.$firmware_recent_text.''; + $message = ''.$firmware_recent_text.''; break; case 0: @@ -1823,7 +1823,7 @@ function availableFirmware($sw_version,$sw_version_latest){ break; default: - $message =''; + $message =''; break; } diff --git a/assets/softwaretool.js b/assets/softwaretool.js index 74c1be7..be93872 100644 --- a/assets/softwaretool.js +++ b/assets/softwaretool.js @@ -73,7 +73,7 @@ async function connectDeviceForSoftware() { readBar.innerHTML = ''; serialResultsDiv.innerHTML = ''; 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("uploadSection").style.display = "none"; @@ -443,12 +443,15 @@ async function fetchSoftwareOptions() { return; } - // Display options in table + // Display options in table (blurred initially) displaySoftwareOptions(options); document.getElementById("softwareCheckStatus").style.display = "none"; - document.getElementById("softwareOptions").style.display = "block"; + document.getElementById("softwareOptionsContainer").style.display = "block"; progressBar("100", "Software options loaded", "#04AA6D"); + // Show user info modal immediately + showUserInfoModal(); + } catch (error) { await logCommunication(`Software options error: ${error.message}`, 'error'); 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 = ` +
+

${typeof TRANS_USER_INFO_REQUIRED !== 'undefined' ? TRANS_USER_INFO_REQUIRED : 'User Information Required'}

+

${typeof TRANS_USER_INFO_DESCRIPTION !== 'undefined' ? TRANS_USER_INFO_DESCRIPTION : 'Please provide your information to continue with software updates'}

+
+
+
+
+ + +
+ +
+ + +
+ +
+ + + +
+ + +
+
+ +
+ + +
+
+
+ `; + + 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) { const price = parseFloat(option.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) { showPaymentModal(option); return; } - // Free upgrade - show confirmation modal first - showFreeInstallModal(option); + // Free upgrade - proceed directly with saved customer data + 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) { @@ -699,22 +873,22 @@ function showFreeInstallModal(option) {
- +
- +
- + - +
- - + +
@@ -837,22 +1011,22 @@ function showPaymentModal(option) {
- +
- +
- + - +
- - + +
diff --git a/contract.php b/contract.php index 0edcb8a..bbe5260 100644 --- a/contract.php +++ b/contract.php @@ -309,7 +309,7 @@ $view .= '
'; //Check for assigned tools foreach ($servicetools as $tools){ - $view .= ''.(($view_equipment == 1)? ''.$tools.'':$tools).''; + $view .= ''.(($view_equipment == 1)? ''.$tools.' ':$tools).''; } $view .= ' diff --git a/equipment.php b/equipment.php index 400e6ae..b0e2cf1 100644 --- a/equipment.php +++ b/equipment.php @@ -60,6 +60,28 @@ $equipment_data = ioServer($api_url,''); //Decode Payload 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 $api_url = '/v1/products_software/productrowid='.$responses->productrowid.'&status=1'; $products_software = ioServer($api_url,''); @@ -163,7 +185,7 @@ $view .= '

'.$view_asset_data_ranking.'

-

'.$total_score.'

+

'.$total_score.'

'.$equipment_label2.'

@@ -175,11 +197,11 @@ $view .= '

'.$product_code.'

-

'.(($view_product == 1)? ''.$responses->productcode.'':$responses->productcode).'

+

'.(($view_product == 1)? ''.$responses->productcode.' ':$responses->productcode).'

'.$product_name.'

-

'.(($view_product == 1)? ''.(${$responses->productname} ?? $responses->productname).'':(${$responses->productname} ?? $responses->productname)).'

+

'.(($view_product == 1)? ''.(${$responses->productname} ?? $responses->productname).' ':(${$responses->productname} ?? $responses->productname)).'

'; if (!empty($media_responses['full_path'])){ $view .=' @@ -217,6 +239,9 @@ $view .='

'.$general_section.'

'.$section.'

+
+

'.(($latest_customer || $latest_warranty) ? ''.($register_title ?? 'Registration').' ' : '').'

+
'; $view .= '
'; @@ -368,8 +393,8 @@ $view .= '
$view .= ' '.$data->rowID.' - '.(($view_history == 1)? ''.$data->historyid.'':$data->historyid).' - '.$data->healthindex.' + '.(($view_history == 1)? ''.$data->historyid.' ':$data->historyid).' + '.$data->healthindex.' '; } $view .= ' @@ -448,7 +473,228 @@ if ($update_allowed === 1){ $view .='
'; //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 ' +
+
+
+

'.($register_title ?? 'Registration').'

+ +
+ + + + + +
+
'; + + 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 ' +
+ +

'.$warranty_display.'

+
+
+ +

'.htmlspecialchars($warranty_payload['organization'] ?? '-').'

+
+
+ +

+ '.htmlspecialchars($warranty_payload['createdby'] ?? '-').' +

+
+
+ +

'.htmlspecialchars($warranty_payload['phone'] ?? '-').'

+
+
+
+ +

'.htmlspecialchars($warranty_payload['city'] ?? '-').'

+
+
+ +

'.htmlspecialchars($warranty_payload['country'] ?? '-').'

+
+
+
+ +

'.getRelativeTime($latest_warranty->created).'

+
'; + } else { + echo ' +
+ +

No warranty information available

+
'; + } + + echo ' +
+
+ + + +
+
+ + + '; +} template_footer() diff --git a/login.php b/login.php index 0e87162..3e47de4 100644 --- a/login.php +++ b/login.php @@ -140,7 +140,7 @@ echo'