[% PageVersion = 'Documentation/index.tt,v 1.7 2025/01/20 shanta Exp shanta ' %] [% META title = 'Comserv Documentation' %] [% IF c.session.debug_mode == 1 %] [% PageVersion %] [% END %] [%# Determine user role for display %] [% SET display_role = 'Guest' %] [% IF c.session.roles %] [% IF c.session.roles.grep('admin').size %] [% SET display_role = 'Administrator' %] [% ELSIF c.session.roles.grep('developer').size %] [% SET display_role = 'Developer' %] [% ELSIF c.session.roles.grep('editor').size %] [% SET display_role = 'Editor' %] [% ELSIF c.session.roles.grep('user').size %] [% SET display_role = 'User' %] [% END %] [% END %] [% IF c.session.debug_mode == 1 %]

Debug Information

User Role from Controller: [% user_role %]

Display Role from Template: [% display_role %]

Session Roles: [% c.session.roles.join(', ') IF c.session.roles %]

Debug Message: [% debug_msg %]

Categories Available:

Changelog Entries:

Controller Documentation Files:

Model Documentation Files:

[%# Enhanced hybrid approach with better error handling and fallbacks %] [%# Debug information for hybrid approach %] [% IF c.session.debug_mode == 1 %]

Hybrid Documentation System Debug

Data Sources Status:

[% IF structured_pages %]

Sample Structured Pages:

[% END %] [% IF categories %]

Categories with Page Counts:

[% END %]
[% END %] [%# Enhanced page rendering with fallback handling %] [% MACRO render_page_link(page_id, category_name) BLOCK %] [% IF structured_pages && structured_pages.$page_id %] [% page = structured_pages.$page_id %]

[% page.title || page_id.replace('_', ' ').replace('-', ' ') | ucfirst %]

[% IF page.description %]

[% page.description %]

[% END %]
[% IF page.date %]Date: [% page.date %][% END %] [% IF page.site && page.site != 'all' %]Site: [% page.site %][% END %]
[% ELSE %] [%# Fallback for missing structured page data %]

[% page_id.replace('_', ' ').replace('-', ' ') | ucfirst %]

Documentation file referenced in [% category_name %] but not found in auto-discovery.

[% IF c.session.debug_mode == 1 %]

Page ID: [% page_id %]

[% END %]
[% END %] [% END %] [%# Enhanced category rendering with better error handling %] [% MACRO render_category_section(category_key, category_data, section_id, icon_class) BLOCK %] [% RETURN UNLESS category_data %] [% page_count = category_data.pages ? category_data.pages.size : 0 %] [% RETURN UNLESS page_count > 0 %]

[% category_data.title || category_key.replace('_', ' ') | ucfirst %] ([% page_count %])

[% END %] [% END %]

Comserv Documentation

Site: [% site_name || 'Comserv' %] Role: [% display_role %] [% IF is_admin %] Access: Administrator [% END %]

Directory Structure Update

We are normalizing to a single Documentation directory (capitalized) to reduce confusion. Legacy references to lowercase documentation directories are being updated to use this standardized structure.

Search Documentation

[% IF is_admin %]

Quick Access for Administrators

[% END %] [%# User-facing sections %] [% render_category_section('user_guides', categories.user_guides, 'user-guides-section', 'fas fa-users') %] [% render_category_section('tutorials', categories.tutorials, 'tutorials-section', 'fas fa-graduation-cap') %] [% render_category_section('site_specific', categories.site_specific, 'site-specific-section', 'fas fa-building') %] [% render_category_section('developer_guides', categories.developer_guides, 'developer-guides-section', 'fas fa-code') %] [%# Admin-only sections %] [% # Use the is_admin flag passed from the controller %] [% IF is_admin %] [% # Debug output %] [% IF c.session.debug_mode == 1 %]

Admin sections visible: user_role=[% user_role %], session roles=[% c.session.roles.join(',') IF c.session.roles %]

[% END %] [% render_category_section('admin_guides', categories.admin_guides, 'admin-guides-section', 'fas fa-shield-alt') %] [% render_category_section('proxmox', categories.proxmox, 'proxmox-section', 'fas fa-server') %] [% render_category_section('controllers', categories.controllers, 'controllers-section', 'fas fa-cogs') %] [% render_category_section('models', categories.models, 'models-section', 'fas fa-database') %] [% render_category_section('changelog', categories.changelog, 'changelog-section', 'fas fa-history') %] [%# Fallback: If no changelog category, try to find changelog pages directly %] [% IF !categories.changelog || !categories.changelog.pages.size %] [% IF structured_pages %] [% changelog_pages = [] %] [% FOREACH page_id IN structured_pages.keys %] [% IF page_id.match('changelog') || structured_pages.$page_id.path.match('changelog') %] [% changelog_pages.push(page_id) %] [% END %] [% END %] [% IF changelog_pages.size > 0 %]

System Changelog (Auto-discovered)

[% END %] [% END %] [% END %] [% END %]