1{% extends "base_main_template.html" %}
3{% block additional_scripts_css %}
6 background-color: #ffffff !important;
7 color: #333333 !important;
8 border: 2px solid #e9ecef;
9 box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
13 border-bottom: 2px solid #e9ecef;
17 background-color: #ffffff !important;
18 color: #333333 !important;
22 background-color: #f8f9fa !important;
23 color: #495057 !important;
24 border-color: #dee2e6 !important;
28 border-color: #dee2e6 !important;
29 color: #333333 !important;
32.form-control, .form-select {
33 background-color: #ffffff !important;
34 color: #333333 !important;
35 border: 2px solid #ced4da !important;
38.form-control:focus, .form-select:focus {
39 border-color: #80bdff !important;
40 box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25) !important;
49 border: 2px solid #e9ecef;
50 background-color: #ffffff !important;
51 color: #333333 !important;
54h1, h2, h3, h4, h5, h6, p, label {
55 color: #333333 !important;
67<div class="container mt-4">
71 <div class="card-header bg-primary text-white">
73 <i class="fas fa-folder-open me-2"></i>
77 <div class="card-body">
78 <!-- Project Selection Section -->
79 {% if projects_by_role.owned or projects_by_role.admin%}
80 <div class="card mb-4">
81 <div class="card-header bg-primary text-white">
83 <i class="fas fa-crown me-2"></i>
84 Manage Project Members
87 <div class="card-body">
88 <form method="GET" action="#" id="projectSelectForm">
90 <div class="col-md-8">
91 <label for="project_select" class="form-label text-dark">Select a project to manage members:</label>
92 <select class="form-select" id="project_select" name="project_id" onchange="redirectToProject()">
93 <option value="">Choose a project...</option>
94 {% for project_info in projects_by_role.owned %}
95 <option value="{{ project_info.project.id }}" data-url="{{ url_for('project_members', project_id=project_info.project.id) }}">
96 {{ project_info.project.name }} (Owner)
99 {% for project_info in projects_by_role.admin %}
100 <option value="{{ project_info.project.id }}" data-url="{{ url_for('project_members', project_id=project_info.project.id) }}">
101 {{ project_info.project.name }} (Admin)
106 <div class="col-md-4">
107 <label class="form-label"> </label>
108 <button type="button" class="btn btn-primary w-100" onclick="goToSelectedProject()" disabled id="manageBtn">
109 <i class="fas fa-users me-2"></i>Manage Members
118 <!-- Admin Projects Section -->
119 {% if projects_by_role.admin %}
120 <div class="card mb-4">
121 <div class="card-header bg-warning text-dark">
123 <i class="fas fa-user-shield me-2"></i>
124 Projects I Admin ({{ projects_by_role.admin|length }})
127 <div class="card-body">
128 <div class="table-responsive">
129 <table class="table table-striped">
130 <thead class="table-dark">
132 <th>Project Name</th>
140 {% for project_info in projects_by_role.admin %}
142 <td><strong>{{ project_info.project.name }}</strong></td>
143 <td>{{ project_info.project.description or 'No description' }}</td>
144 <td>{{ project_info.project.creation_date.strftime('%Y-%m-%d %H:%M:%S') if project_info.project.creation_date else 'Unknown' }}</td>
146 <span class="badge bg-warning text-dark">Admin</span>
149 <div class="btn-group" role="group">
150 <a href="{{ url_for('project_members', project_id=project_info.project.id) }}" class="btn btn-sm btn-primary">
151 <i class="fas fa-users me-1"></i>Manage Members
153 <a href="{{ url_for('project') }}" class="btn btn-sm btn-info">
154 <i class="fas fa-cog me-1"></i>Settings
167 <!-- Member Projects Section -->
168 {% if projects_by_role.member %}
169 <div class="card mb-4">
170 <div class="card-header bg-info text-white">
172 <i class="fas fa-user me-2"></i>
173 Projects I'm Member Of ({{ projects_by_role.member|length }})
176 <div class="card-body">
177 <div class="table-responsive">
178 <table class="table table-striped">
179 <thead class="table-dark">
181 <th>Project Name</th>
189 {% for project_info in projects_by_role.member %}
191 <td><strong>{{ project_info.project.name }}</strong></td>
192 <td>{{ project_info.project.description or 'No description' }}</td>
193 <td>{{ project_info.project.creation_date.strftime('%Y-%m-%d %H:%M:%S') if project_info.project.creation_date else 'Unknown' }}</td>
195 {% if project_info.role == 'editor' %}
196 <span class="badge bg-primary">Editor</span>
197 {% elif project_info.role == 'viewer' %}
198 <span class="badge bg-info">Viewer</span>
199 {% elif project_info.role == 'guest' %}
200 <span class="badge bg-secondary">Guest</span>
202 <span class="badge bg-secondary">{{ project_info.role }}</span>
206 <a href="{{ url_for('project') }}" class="btn btn-sm btn-outline-info">
207 <i class="fas fa-eye me-1"></i>View
219 <!-- No Projects Message -->
220 {% if not projects_by_role.owned and not projects_by_role.admin and not projects_by_role.member %}
221 <div class="alert alert-info">
222 <i class="fas fa-info-circle me-2"></i>
223 You don't have any projects yet.
224 <a href="{{ url_for('project') }}" class="alert-link">Create your first project</a> or ask an administrator to add you to an existing project.
228 <!-- Action Buttons -->
230 <a href="{{ url_for('project') }}" class="btn btn-primary">
231 <i class="fas fa-plus me-2"></i>Create New Project
241 function redirectToProject() {
242 const select = document.getElementById('project_select');
243 const manageBtn = document.getElementById('manageBtn');
246 manageBtn.disabled = false;
248 manageBtn.disabled = true;
252 function goToSelectedProject() {
253 const select = document.getElementById('project_select');
254 const selectedOption = select.options[select.selectedIndex];
256 if (selectedOption && selectedOption.dataset.url) {
257 window.location.href = selectedOption.dataset.url;
261 // Initialize button state
262 document.addEventListener('DOMContentLoaded', function() {