Skip to content

Commit d618c80

Browse files
committed
fix: IP-Add inline JavaScript wie im upkeep Addon
1 parent bbbd22e commit d618c80

File tree

2 files changed

+93
-68
lines changed

2 files changed

+93
-68
lines changed

assets/js/frontend-advanced.js

Lines changed: 41 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,50 @@
11
/**
22
* Frontend Advanced Settings - IP Whitelist Management
33
*/
4-
(function($) {
5-
'use strict';
6-
7-
$(function() {
8-
console.log('Maintenance IP management loaded');
4+
$(document).on('rex:ready', function() {
5+
// Funktion zum Hinzufügen einer IP-Adresse zum Whitelist-Feld
6+
function addIpToWhitelist(ip) {
7+
var ipField = $('#maintenance-allowed-ips');
98

10-
// Funktion zum Hinzufügen einer IP-Adresse zum Whitelist-Feld
11-
function addIpToWhitelist(ip) {
12-
console.log('Adding IP:', ip);
13-
var ipField = $('#maintenance-allowed-ips');
14-
15-
console.log('Field found:', ipField.length);
16-
17-
if (!ipField.length) {
18-
console.error('IP field not found');
19-
return;
20-
}
21-
22-
var currentValue = ipField.val().trim();
23-
console.log('Current value:', currentValue);
24-
25-
if (currentValue === '') {
26-
// Wenn das Feld leer ist, einfach die IP hinzufügen
27-
ipField.val(ip);
28-
console.log('Set value to:', ip);
29-
} else {
30-
// IP-Adressen als Array verarbeiten und alle Leerzeichen entfernen
31-
var ips = currentValue.split(',').map(function(ip) {
32-
return ip.trim();
33-
}).filter(function(ip) {
34-
// Leere Einträge filtern
35-
return ip !== '';
36-
});
37-
38-
console.log('Current IPs:', ips);
39-
40-
// Prüfen, ob IP bereits enthalten ist
41-
if (ips.indexOf(ip) === -1) {
42-
ips.push(ip);
43-
// Saubere Komma-getrennte Liste ohne unnötige Leerzeichen
44-
ipField.val(ips.join(','));
45-
console.log('Updated value to:', ips.join(','));
46-
} else {
47-
console.log('IP already exists');
48-
}
49-
}
9+
if (!ipField.length) {
10+
console.error('IP field not found');
11+
return;
5012
}
5113

52-
// Client-IP-Adresse hinzufügen
53-
$(document).on('click', '#maintenance-add-ip', function(e) {
54-
e.preventDefault();
55-
console.log('Add IP button clicked');
56-
var currentIp = $(this).data('ip');
57-
console.log('IP from data attribute:', currentIp);
58-
if (currentIp) {
59-
addIpToWhitelist(currentIp);
60-
}
61-
});
14+
var currentValue = ipField.val().trim();
6215

63-
// Server-IP-Adresse hinzufügen
64-
$(document).on('click', '#maintenance-add-server-ip', function(e) {
65-
e.preventDefault();
66-
console.log('Add Server IP button clicked');
67-
var serverIp = $(this).data('ip');
68-
console.log('Server IP from data attribute:', serverIp);
69-
if (serverIp) {
70-
addIpToWhitelist(serverIp);
16+
if (currentValue === '') {
17+
// Wenn das Feld leer ist, einfach die IP hinzufügen
18+
ipField.val(ip);
19+
} else {
20+
// IP-Adressen als Array verarbeiten und alle Leerzeichen entfernen
21+
var ips = currentValue.split(',').map(function(ip) {
22+
return ip.trim();
23+
}).filter(function(ip) {
24+
// Leere Einträge filtern
25+
return ip !== '';
26+
});
27+
28+
// Prüfen, ob IP bereits enthalten ist
29+
if (ips.indexOf(ip) === -1) {
30+
ips.push(ip);
31+
// Saubere Komma-getrennte Liste ohne unnötige Leerzeichen
32+
ipField.val(ips.join(','));
7133
}
72-
});
34+
}
35+
}
36+
37+
// Client-IP-Adresse hinzufügen
38+
$('#maintenance-add-ip').on('click', function(e) {
39+
e.preventDefault();
40+
var currentIp = '<?= rex_server('REMOTE_ADDR', 'string', '') ?>';
41+
addIpToWhitelist(currentIp);
42+
});
43+
44+
// Server-IP-Adresse hinzufügen
45+
$('#maintenance-add-server-ip').on('click', function(e) {
46+
e.preventDefault();
47+
var serverIp = '<?= rex_server('SERVER_ADDR', 'string', '') ?>';
48+
addIpToWhitelist(serverIp);
7349
});
74-
})(jQuery);
50+
});

pages/frontend.advanced.php

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
$addon = rex_addon::get('maintenance');
1414

1515
// Load page-specific assets
16-
rex_view::addJsFile($addon->getAssetsUrl('js/frontend-advanced.js'));
1716
rex_view::addCssFile($addon->getAssetsUrl('css/ip-addresses.css'));
1817

1918
// Nur für Admins zugänglich
@@ -48,10 +47,10 @@
4847
// IP-Adressen als formatierte Liste mit Buttons
4948
$notice = '<div class="ip-addresses">';
5049
$notice .= '<div class="ip-address-row"><span class="ip-label">' . $addon->i18n('maintenance_your_ip') . ':</span> <code class="ip-code">' . $clientIp . '</code>';
51-
$notice .= ' <button class="btn btn-xs btn-primary" type="button" id="maintenance-add-ip" data-ip="' . rex_escape($clientIp) . '"><i class="rex-icon fa-plus"></i> ' . $addon->i18n('maintenance_add_ip') . '</button></div>';
50+
$notice .= ' <button class="btn btn-xs btn-primary" type="button" id="maintenance-add-ip"><i class="rex-icon fa-plus"></i> ' . $addon->i18n('maintenance_add_ip') . '</button></div>';
5251
if ($serverIp && $serverIp !== $clientIp) {
5352
$notice .= '<div class="ip-address-row"><span class="ip-label">' . $addon->i18n('maintenance_server_ip') . ':</span> <code class="ip-code">' . $serverIp . '</code>';
54-
$notice .= ' <button class="btn btn-xs btn-primary" type="button" id="maintenance-add-server-ip" data-ip="' . rex_escape($serverIp) . '"><i class="rex-icon fa-plus"></i> ' . $addon->i18n('maintenance_add_server_ip') . '</button></div>';
53+
$notice .= ' <button class="btn btn-xs btn-primary" type="button" id="maintenance-add-server-ip"><i class="rex-icon fa-plus"></i> ' . $addon->i18n('maintenance_add_server_ip') . '</button></div>';
5554
}
5655
$notice .= '</div>';
5756
$notice .= '<div class="help-block" style="margin-top: 10px;">' . $addon->i18n('maintenance_allowed_ips_notice') . '</div>';
@@ -87,3 +86,53 @@
8786
<?php include __DIR__ . '/frontend.sidebar.php' ?>
8887
</div>
8988
</div>
89+
90+
<script type="text/javascript">
91+
$(document).on('rex:ready', function() {
92+
// Funktion zum Hinzufügen einer IP-Adresse zum Whitelist-Feld
93+
function addIpToWhitelist(ip) {
94+
var ipField = $('#maintenance-allowed-ips');
95+
96+
if (!ipField.length) {
97+
console.error('IP field not found');
98+
return;
99+
}
100+
101+
var currentValue = ipField.val().trim();
102+
103+
if (currentValue === '') {
104+
// Wenn das Feld leer ist, einfach die IP hinzufügen
105+
ipField.val(ip);
106+
} else {
107+
// IP-Adressen als Array verarbeiten und alle Leerzeichen entfernen
108+
var ips = currentValue.split(',').map(function(ip) {
109+
return ip.trim();
110+
}).filter(function(ip) {
111+
// Leere Einträge filtern
112+
return ip !== '';
113+
});
114+
115+
// Prüfen, ob IP bereits enthalten ist
116+
if (ips.indexOf(ip) === -1) {
117+
ips.push(ip);
118+
// Saubere Komma-getrennte Liste ohne unnötige Leerzeichen
119+
ipField.val(ips.join(','));
120+
}
121+
}
122+
}
123+
124+
// Client-IP-Adresse hinzufügen
125+
$('#maintenance-add-ip').on('click', function(e) {
126+
e.preventDefault();
127+
var currentIp = '<?= rex_server('REMOTE_ADDR', 'string', '') ?>';
128+
addIpToWhitelist(currentIp);
129+
});
130+
131+
// Server-IP-Adresse hinzufügen
132+
$('#maintenance-add-server-ip').on('click', function(e) {
133+
e.preventDefault();
134+
var serverIp = '<?= rex_server('SERVER_ADDR', 'string', '') ?>';
135+
addIpToWhitelist(serverIp);
136+
});
137+
});
138+
</script>

0 commit comments

Comments
 (0)