125 lines
7.0 KiB
Python
125 lines
7.0 KiB
Python
import sys
|
|
import re
|
|
|
|
try:
|
|
with open('admin.php', 'r') as f:
|
|
content = f.read()
|
|
|
|
# Remove any existing script tags and their contents
|
|
content = re.sub(r'<script>.*?</script>', '', content, flags=re.DOTALL)
|
|
content = content.replace('<script>', '').replace('</script>', '')
|
|
|
|
# Define the full script content
|
|
script_content = r"""
|
|
<script>
|
|
function syncSlug(val, targetId) {
|
|
const target = document.getElementById(targetId);
|
|
if (target) {
|
|
target.value = val.toLowerCase().normalize('NFD').replace(/[̀-ͤ]/g, '').replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
|
|
if (typeof checkUnitFormValidity === 'function') checkUnitFormValidity();
|
|
}
|
|
}
|
|
|
|
// UNIT TAB JS
|
|
const unitGridDataInput = document.getElementById('unit_grid_data');
|
|
const unitGridCells = document.querySelectorAll('.grid-cell');
|
|
|
|
function initUnitGrid() {
|
|
const grid = document.getElementById('unit_grid');
|
|
if (grid) {
|
|
const cells = grid.querySelectorAll('.grid-cell');
|
|
cells.forEach(cell => {
|
|
cell.addEventListener('click', () => {
|
|
cell.classList.toggle('active');
|
|
cell.style.background = cell.classList.contains('active') ? '#88c0d0' : '#0a0f1d';
|
|
updateGridData();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
function updateGridData() {
|
|
const activeIndices = [];
|
|
const cells = document.querySelectorAll('.grid-cell');
|
|
cells.forEach(cell => { if (cell.classList.contains('active')) activeIndices.push(cell.getAttribute('data-index')); });
|
|
const input = document.getElementById('unit_grid_data');
|
|
if (input) input.value = JSON.stringify(activeIndices);
|
|
checkUnitFormValidity();
|
|
}
|
|
|
|
function checkUnitFormValidity() {
|
|
const name = document.getElementById('unit_name')?.value;
|
|
const slug = document.getElementById('unit_slug')?.value;
|
|
const gridData = document.getElementById('unit_grid_data')?.value;
|
|
const submitBtn = document.getElementById('unit_submit_btn');
|
|
if (submitBtn) {
|
|
const isValid = name && slug && gridData && gridData !== '[]' && gridData !== '';
|
|
submitBtn.disabled = !isValid;
|
|
submitBtn.style.opacity = isValid ? '1' : '0.5';
|
|
}
|
|
}
|
|
|
|
function resetUnitForm() {
|
|
document.getElementById('unit_id').value = 0;
|
|
const cells = document.querySelectorAll('.grid-cell');
|
|
cells.forEach(cell => { cell.classList.remove('active'); cell.style.background = '#0a0f1d'; });
|
|
const input = document.getElementById('unit_grid_data');
|
|
if (input) input.value = '';
|
|
document.querySelectorAll('.reward-input-destroy, .reward-input-capture').forEach(input => input.value = 0);
|
|
checkUnitFormValidity();
|
|
}
|
|
|
|
function editUnit(data) {
|
|
document.getElementById('unit_id').value = data.id;
|
|
document.getElementById('unit_name').value = data.name;
|
|
document.getElementById('unit_slug').value = data.slug;
|
|
document.getElementById('unit_faction_id').value = data.faction_id || "";
|
|
document.getElementById('unit_can_be_destroyed').checked = data.can_be_destroyed == 1;
|
|
document.getElementById('unit_can_be_captured').checked = data.can_be_captured == 1;
|
|
document.getElementById('unit_points_per_hit').value = data.points_per_hit;
|
|
document.getElementById('unit_bonus_destruction').value = data.bonus_destruction;
|
|
document.getElementById('unit_bonus_capture').value = data.bonus_capture;
|
|
|
|
const indices = JSON.parse(data.grid_data || '[]');
|
|
const cells = document.querySelectorAll('.grid-cell');
|
|
cells.forEach(cell => {
|
|
const active = indices.includes(cell.getAttribute('data-index'));
|
|
cell.classList.toggle('active', active);
|
|
cell.style.background = active ? '#88c0d0' : '#0a0f1d';
|
|
});
|
|
|
|
const input = document.getElementById('unit_grid_data');
|
|
if (input) input.value = data.grid_data;
|
|
|
|
document.querySelectorAll('.reward-input-destroy, .reward-input-capture').forEach(input => input.value = 0);
|
|
if (data.rewards) {
|
|
data.rewards.forEach(r => {
|
|
const selector = r.action_type === 'destroy' ? '.reward-input-destroy' : '.reward-input-capture';
|
|
const input = document.querySelector(selector + '[data-res-id="' + r.resource_id + '"]');
|
|
if (input) input.value = r.amount;
|
|
});
|
|
}
|
|
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
checkUnitFormValidity();
|
|
}
|
|
|
|
// Shared helpers
|
|
function editLevel(d) { document.getElementById("level_id").value = d.id; document.getElementById("level_name").value = d.name; document.getElementById("level_slug").value = d.slug; document.getElementById("level_resource_id").value = d.resource_id; document.getElementById("level_required_quantity").value = d.required_quantity; window.scrollTo(0,0); }
|
|
function editRank(r) { document.getElementById('rank_id').value = r.id; document.getElementById('rank_name').value = r.name; document.getElementById('rank_slug').value = r.slug; document.getElementById('rank_type').value = r.user_type; document.getElementById('rank_min').value = r.min_level || ''; document.getElementById('rank_max').value = r.max_level || ''; window.scrollTo(0,0); }
|
|
function editStatus(s) { document.getElementById("st_id").value = s.id; document.getElementById("st_name").value = s.name; document.getElementById("st_slug").value = s.slug; document.getElementById("st_color").value = s.color.replace(';blink',''); document.getElementById("st_is_blinking").checked = s.color.includes(';blink'); window.scrollTo(0,0); }
|
|
function editResource(r) { document.getElementById('res_id').value = r.id; document.getElementById('res_name').value = r.name; document.getElementById('res_slug').value = r.slug; document.getElementById('res_icon').value = r.icon; window.scrollTo(0,0); }
|
|
function editFaction(f) { document.getElementById('fac_id').value = f.id; document.getElementById('fac_name').value = f.name; document.getElementById('fac_slug').value = f.slug; document.getElementById('fac_color').value = f.color; window.scrollTo(0,0); }
|
|
function editObject(o) { document.getElementById('obj_id').value = o.id; document.getElementById('obj_name').value = o.name; document.getElementById('obj_slug').value = o.slug; window.scrollTo(0,0); }
|
|
function resetObjectForm() { document.getElementById('obj_id').value = 0; }
|
|
function resetLevelForm() { document.getElementById('level_id').value = 0; }
|
|
function resetRankForm() { document.getElementById('rank_id').value = 0; }
|
|
function resetStatusForm() { document.getElementById('st_id').value = 0; }
|
|
function resetResourceForm() { document.getElementById('res_id').value = 0; }
|
|
function resetFactionForm() { document.getElementById('fac_id').value = 0; }
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
initUnitGrid();
|
|
checkUnitFormValidity();
|
|
});
|
|
</script>
|