Updated
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
/**
|
/**
|
||||||
* Association Profile — Management Renderer
|
* Association Profile — Management Renderer
|
||||||
* Operator-only. Called from assoc_profile.php content router.
|
* Operator-only. Called from assoc_profile.php content router.
|
||||||
* v0.2.0 — search, filter, paginate, bulk export, import with diff, delete.
|
* v0.3.0 — tabbed edit form; all other functions unchanged from v0.2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -165,7 +165,7 @@ function assoc_render_add_association_form() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// EDIT ASSOCIATION
|
// EDIT ASSOCIATION — tabbed by field group
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
function assoc_render_edit_association_form($slug) {
|
function assoc_render_edit_association_form($slug) {
|
||||||
@@ -183,6 +183,15 @@ function assoc_render_edit_association_form($slug) {
|
|||||||
|
|
||||||
$name = $entry['assoc_legal_name'] ?? $slug;
|
$name = $entry['assoc_legal_name'] ?? $slug;
|
||||||
|
|
||||||
|
// Short tab labels — operator-defined groups map to shorter labels for tab nav
|
||||||
|
$tab_labels = [
|
||||||
|
'Identity' => 'Identity',
|
||||||
|
'Physical Structure' => 'Buildings',
|
||||||
|
'Governance and Management' => 'Governance',
|
||||||
|
'Legal and Compliance' => 'Compliance',
|
||||||
|
'Record' => 'Record',
|
||||||
|
];
|
||||||
|
|
||||||
$out = '<div class="assoc-manage">';
|
$out = '<div class="assoc-manage">';
|
||||||
$out .= '<header class="civicinfra-manage-header">';
|
$out .= '<header class="civicinfra-manage-header">';
|
||||||
$out .= '<div>';
|
$out .= '<div>';
|
||||||
@@ -203,12 +212,39 @@ function assoc_render_edit_association_form($slug) {
|
|||||||
$out .= '<input type="hidden" name="assoc_action" value="save_association">';
|
$out .= '<input type="hidden" name="assoc_action" value="save_association">';
|
||||||
$out .= '<input type="hidden" name="assoc_slug" value="' . assoc_h($slug) . '">';
|
$out .= '<input type="hidden" name="assoc_slug" value="' . assoc_h($slug) . '">';
|
||||||
|
|
||||||
|
// Tab nav
|
||||||
|
$out .= '<ul class="nav nav-tabs assoc-edit-tabs mb-0" id="assocEditTabs" role="tablist">';
|
||||||
|
$first = true;
|
||||||
foreach ($groups as $group) {
|
foreach ($groups as $group) {
|
||||||
$group_fields = $by_group[$group] ?? [];
|
$group_fields = $by_group[$group] ?? [];
|
||||||
if (empty($group_fields)) continue;
|
if (empty($group_fields)) continue;
|
||||||
|
$tab_id = 'tab-' . preg_replace('/[^a-z0-9]/', '-', strtolower($group));
|
||||||
|
$label = $tab_labels[$group] ?? $group;
|
||||||
|
$active = $first ? 'active' : '';
|
||||||
|
$selected = $first ? 'true' : 'false';
|
||||||
|
$out .= '<li class="nav-item" role="presentation">';
|
||||||
|
$out .= '<button class="nav-link ' . $active . '" id="' . assoc_h($tab_id) . '-btn"
|
||||||
|
data-bs-toggle="tab"
|
||||||
|
data-bs-target="#' . assoc_h($tab_id) . '-pane"
|
||||||
|
type="button" role="tab"
|
||||||
|
aria-selected="' . $selected . '">'
|
||||||
|
. assoc_h($label) . '</button>';
|
||||||
|
$out .= '</li>';
|
||||||
|
$first = false;
|
||||||
|
}
|
||||||
|
$out .= '</ul>';
|
||||||
|
|
||||||
$out .= '<section class="civicinfra-form-section">';
|
// Tab panes
|
||||||
$out .= '<h2 class="civicinfra-record-heading">' . assoc_h($group) . '</h2>';
|
$out .= '<div class="tab-content assoc-edit-tab-content" id="assocEditTabContent">';
|
||||||
|
$first = true;
|
||||||
|
foreach ($groups as $group) {
|
||||||
|
$group_fields = $by_group[$group] ?? [];
|
||||||
|
if (empty($group_fields)) continue;
|
||||||
|
$tab_id = 'tab-' . preg_replace('/[^a-z0-9]/', '-', strtolower($group));
|
||||||
|
$active = $first ? 'show active' : '';
|
||||||
|
|
||||||
|
$out .= '<div class="tab-pane fade ' . $active . ' civicinfra-form-section assoc-tab-pane"'
|
||||||
|
. ' id="' . assoc_h($tab_id) . '-pane" role="tabpanel">';
|
||||||
|
|
||||||
foreach ($group_fields as $f) {
|
foreach ($group_fields as $f) {
|
||||||
$nick = $f['nickname'];
|
$nick = $f['nickname'];
|
||||||
@@ -239,30 +275,35 @@ function assoc_render_edit_association_form($slug) {
|
|||||||
}
|
}
|
||||||
$out .= '</select>';
|
$out .= '</select>';
|
||||||
} else {
|
} else {
|
||||||
$width = in_array($nick, ['assoc_legal_name','assoc_street','assoc_cai_listing',
|
$wide = in_array($nick, ['assoc_legal_name','assoc_street','assoc_cai_listing',
|
||||||
'assoc_bbb_standing','assoc_idfpr_complaint',
|
'assoc_bbb_standing','assoc_idfpr_complaint',
|
||||||
'assoc_litigation_active','assoc_liens_active',
|
'assoc_litigation_active','assoc_liens_active',
|
||||||
'assoc_mgmt_contact']) ? '100%' : '24rem';
|
'assoc_mgmt_contact']);
|
||||||
$out .= '<input type="text" class="form-control form-control-sm"
|
$out .= '<input type="text" class="form-control form-control-sm"
|
||||||
id="' . assoc_h($nick) . '" name="' . assoc_h($nick) . '"
|
id="' . assoc_h($nick) . '" name="' . assoc_h($nick) . '"
|
||||||
value="' . assoc_h($val) . '"
|
value="' . assoc_h($val) . '"'
|
||||||
style="max-width:' . $width . ';">';
|
. ($wide ? '' : ' style="max-width:24rem;"') . '>';
|
||||||
}
|
}
|
||||||
$out .= '</div>';
|
$out .= '</div>';
|
||||||
}
|
}
|
||||||
$out .= '</section>';
|
|
||||||
}
|
|
||||||
|
|
||||||
$out .= '<div class="d-flex gap-2 mt-4">';
|
$out .= '</div>'; // tab-pane
|
||||||
|
$first = false;
|
||||||
|
}
|
||||||
|
$out .= '</div>'; // tab-content
|
||||||
|
|
||||||
|
// Save bar below tabs
|
||||||
|
$out .= '<div class="assoc-save-bar">';
|
||||||
$out .= '<button type="submit" class="btn btn-primary">Save</button> ';
|
$out .= '<button type="submit" class="btn btn-primary">Save</button> ';
|
||||||
$out .= '<a href="' . z_root() . '/assoc_profile/manage" class="btn btn-outline-secondary">Cancel</a>';
|
$out .= '<a href="' . z_root() . '/assoc_profile/manage" class="btn btn-outline-secondary">Cancel</a>';
|
||||||
$out .= '</div></form>';
|
$out .= '</div>';
|
||||||
|
$out .= '</form>';
|
||||||
|
|
||||||
// Delete section
|
// Delete section
|
||||||
$out .= '<div class="assoc-delete-confirm">';
|
$out .= '<div class="assoc-delete-confirm">';
|
||||||
$out .= '<h5>Delete Association</h5>';
|
$out .= '<h5>Delete Association</h5>';
|
||||||
$out .= '<p class="civicinfra-help-text">This removes <strong>' . assoc_h($name) . '</strong> from the registry permanently. ';
|
$out .= '<p class="civicinfra-help-text">Permanently removes <strong>' . assoc_h($name) . '</strong> from the registry. ';
|
||||||
$out .= 'You must also remove the corresponding entry from <code>vs01/config.json</code> manually.</p>';
|
$out .= 'You must also remove the entry from <code>vs01/config.json</code> manually.</p>';
|
||||||
$out .= '<form method="post" action="' . z_root() . '/assoc_profile/manage"
|
$out .= '<form method="post" action="' . z_root() . '/assoc_profile/manage"
|
||||||
onsubmit="return confirm(\'Permanently delete ' . addslashes(assoc_h($name)) . '? This cannot be undone.\')">';
|
onsubmit="return confirm(\'Permanently delete ' . addslashes(assoc_h($name)) . '? This cannot be undone.\')">';
|
||||||
$out .= assoc_csrf_token();
|
$out .= assoc_csrf_token();
|
||||||
|
|||||||
Reference in New Issue
Block a user