This commit is contained in:
2026-06-06 09:16:49 -04:00
parent 2346a67789
commit dad39132e6
3 changed files with 581 additions and 97 deletions

View File

@@ -150,6 +150,9 @@ function assoc_profile_content() {
if (function_exists('head_add_css')) {
head_add_css('/addon/assoc_profile/view/css/assoc_profile.css');
}
if (function_exists('head_add_js')) {
head_add_js('/addon/assoc_profile/view/js/assoc_profile.js');
}
$action = argv(1) ?? '';
@@ -158,29 +161,28 @@ function assoc_profile_content() {
}
if (!assoc_is_operator()) {
return '<div class="alert alert-danger">Operator access required.</div>';
return '<div class="civicinfra-notice civicinfra-warning">Operator access required.</div>';
}
$sub = argv(2) ?? '';
$slug = argv(3) ?? '';
$sub = argv(2) ?? '';
$slug = argv(3) ?? '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
return assoc_handle_post();
}
// Manage index
if (!$sub) return assoc_render_manage_index();
// Association actions
if ($sub === 'assoc') {
if (!$slug) return assoc_render_add_association_form();
return assoc_render_edit_association_form($slug);
}
// Field actions
if ($sub === 'fields') return assoc_render_fields_form();
return '<div class="alert alert-warning">Unknown management action.</div>';
if ($sub === 'import') return assoc_render_import_form();
return '<div class="civicinfra-notice civicinfra-warning">Unknown management action.</div>';
}
// ----------------------------------------------------------------------------
@@ -189,19 +191,23 @@ function assoc_profile_content() {
function assoc_handle_post() {
if (!assoc_verify_csrf()) {
return '<div class="alert alert-danger">Invalid form token.</div>';
return '<div class="civicinfra-notice civicinfra-warning">Invalid form token.</div>';
}
$action = $_POST['assoc_action'] ?? '';
switch ($action) {
case 'save_association': return assoc_save_association();
case 'add_association': return assoc_add_association();
case 'save_fields': return assoc_save_fields();
case 'add_field': return assoc_add_field();
case 'remove_field': return assoc_remove_field();
case 'save_association': return assoc_save_association();
case 'add_association': return assoc_add_association();
case 'delete_association':return assoc_delete_association();
case 'save_fields': return assoc_save_fields();
case 'add_field': return assoc_add_field();
case 'remove_field': return assoc_remove_field();
case 'export_selected': return assoc_handle_export($_POST['export_slugs'] ?? '');
case 'import_upload': return assoc_handle_import_upload();
case 'import_confirm': return assoc_handle_import_confirm();
default:
return '<div class="alert alert-danger">Unknown action.</div>';
return '<div class="civicinfra-notice civicinfra-warning">Unknown action.</div>';
}
}
@@ -256,7 +262,29 @@ function assoc_add_association() {
if (assoc_write_registry($registry)) {
goaway(z_root() . '/assoc_profile/manage/assoc/' . $slug);
}
return '<div class="alert alert-danger">Failed to create association.</div>';
return '<div class="civicinfra-notice civicinfra-warning">Failed to create association.</div>';
}
// ----------------------------------------------------------------------------
// DELETE ASSOCIATION
// ----------------------------------------------------------------------------
function assoc_delete_association() {
$slug = substr(strip_tags($_POST['assoc_slug'] ?? ''), 0, 128);
if (!$slug) return '<div class="civicinfra-notice civicinfra-warning">Missing slug.</div>';
$registry = assoc_load_registry();
if (!isset($registry[$slug])) {
return '<div class="civicinfra-notice civicinfra-warning">Association not found.</div>';
}
$name = $registry[$slug]['assoc_legal_name'] ?? $slug;
unset($registry[$slug]);
if (assoc_write_registry($registry)) {
goaway(z_root() . '/assoc_profile/manage');
}
return '<div class="civicinfra-notice civicinfra-warning">Delete failed. Check server logs.</div>';
}
// ----------------------------------------------------------------------------