added bootstar, font awsome, and the project is in a useable state, bit needs some manual setup.
This commit is contained in:
221
ProjectKiln/app/viewer/admin.php
Normal file
221
ProjectKiln/app/viewer/admin.php
Normal file
@@ -0,0 +1,221 @@
|
||||
<section class="admin-view" id="adminView" hidden>
|
||||
<div class="admin-header">
|
||||
<div>
|
||||
<div class="viewer-key">Administration</div>
|
||||
<h1>Admin</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="admin-layout">
|
||||
<aside class="admin-nav" aria-label="Admin sections">
|
||||
<button class="admin-nav-item is-active" type="button" data-admin-section="workflows">
|
||||
<i class="fa-solid fa-diagram-project"></i>
|
||||
<span>Workflows</span>
|
||||
</button>
|
||||
<button class="admin-nav-item" type="button" data-admin-section="options">
|
||||
<i class="fa-solid fa-sliders"></i>
|
||||
<span>Task Options</span>
|
||||
</button>
|
||||
<button class="admin-nav-item" type="button" data-admin-section="users">
|
||||
<i class="fa-solid fa-users-gear"></i>
|
||||
<span>Users</span>
|
||||
</button>
|
||||
</aside>
|
||||
|
||||
<section class="admin-panel" id="adminWorkflowsPanel">
|
||||
<div class="admin-panel-header">
|
||||
<div>
|
||||
<h2>Edit Workflows</h2>
|
||||
<p>Create task states, connect transitions, and assign states to task types.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="workflow-editor">
|
||||
<section class="workflow-section">
|
||||
<div class="workflow-section-header">
|
||||
<h3>Global workflow definitions</h3>
|
||||
<p>States and transitions are shared globally across task types.</p>
|
||||
</div>
|
||||
|
||||
<div class="workflow-editor-grid">
|
||||
<section class="workflow-card">
|
||||
<h3>States</h3>
|
||||
|
||||
<form class="workflow-form" id="workflowStateForm">
|
||||
<input class="form-control" name="name" placeholder="Open" required maxlength="128">
|
||||
<input class="form-control form-control-color" type="color" name="color" value="#4ea1ff" aria-label="State color">
|
||||
<button class="btn btn-primary btn-sm" type="submit">
|
||||
<i class="fa-solid fa-plus me-1"></i>
|
||||
Add State
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="workflow-list" id="workflowStateList"></div>
|
||||
</section>
|
||||
|
||||
<section class="workflow-card">
|
||||
<h3>Transitions</h3>
|
||||
|
||||
<form class="workflow-form workflow-form-stacked" id="workflowTransitionForm">
|
||||
<select class="form-select" name="from_id" id="workflowTransitionFrom" required></select>
|
||||
<select class="form-select" name="to_id" id="workflowTransitionTo" required></select>
|
||||
<input class="form-control" name="action_name" placeholder="Close task" required maxlength="128">
|
||||
<button class="btn btn-primary btn-sm" type="submit">
|
||||
<i class="fa-solid fa-plus me-1"></i>
|
||||
Add Transition
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="workflow-list" id="workflowTransitionList"></div>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="workflow-section">
|
||||
<div class="workflow-section-header">
|
||||
<h3>Task type workflow</h3>
|
||||
<p>Select a task type, assign its allowed states, choose the default state, and preview its graph.</p>
|
||||
</div>
|
||||
|
||||
<section class="workflow-context-panel">
|
||||
<div>
|
||||
<label class="form-label" for="workflowTaskTypeSelect">Task Type</label>
|
||||
<select class="form-select" id="workflowTaskTypeSelect"></select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="form-label" for="workflowDefaultStateSelect">Default State</label>
|
||||
<select class="form-select" id="workflowDefaultStateSelect"></select>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="workflow-editor-grid">
|
||||
<section class="workflow-card">
|
||||
<h3>Assigned States</h3>
|
||||
|
||||
<form class="workflow-form workflow-form-stacked" id="workflowAssignmentForm">
|
||||
<select class="form-select" name="state" id="workflowAssignmentState" required></select>
|
||||
<button class="btn btn-primary btn-sm" type="submit">
|
||||
<i class="fa-solid fa-link me-1"></i>
|
||||
Assign State
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="workflow-list" id="workflowAssignmentList"></div>
|
||||
</section>
|
||||
|
||||
<section class="workflow-graph-panel">
|
||||
<div class="workflow-graph-toolbar">
|
||||
<strong>Workflow Graph</strong>
|
||||
<button class="btn btn-sm btn-outline-secondary" type="button" id="workflowRefreshButton">
|
||||
<i class="fa-solid fa-rotate me-1"></i>
|
||||
Refresh
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="workflow-graph" id="workflowGraph"></div>
|
||||
<div class="workflow-empty" id="workflowGraphEmpty" hidden>
|
||||
Assign states to render the workflow graph.
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="admin-panel" id="adminOptionsPanel" hidden>
|
||||
<div class="admin-panel-header">
|
||||
<div>
|
||||
<h2>Task Options</h2>
|
||||
<p>Create and maintain the task types and priorities used across tasks.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="admin-options-grid">
|
||||
<section class="workflow-card admin-option-card">
|
||||
<h3>Task Types</h3>
|
||||
|
||||
<form class="admin-option-form" data-admin-option-form="type">
|
||||
<input class="form-control" name="name" placeholder="Bug" required maxlength="20">
|
||||
<input class="form-control" type="file" name="logo" accept=".svg,image/svg+xml" aria-label="Task type logo">
|
||||
<button class="btn btn-primary btn-sm" type="submit">
|
||||
<i class="fa-solid fa-plus me-1"></i>
|
||||
Add Type
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="admin-type-editor">
|
||||
<div>
|
||||
<label class="form-label" for="adminTaskTypeSelect">Selected Type</label>
|
||||
<select class="form-select" id="adminTaskTypeSelect"></select>
|
||||
</div>
|
||||
|
||||
<div id="adminSelectedTypeEditor"></div>
|
||||
|
||||
<div class="admin-subsection">
|
||||
<h4>Custom Fields</h4>
|
||||
|
||||
<form class="admin-custom-field-form" id="adminCustomFieldForm">
|
||||
<input class="form-control" name="name" placeholder="Story points" required maxlength="128">
|
||||
<select class="form-select" name="type" required>
|
||||
<option value="string">String</option>
|
||||
<option value="int">Int</option>
|
||||
<option value="float">Float</option>
|
||||
<option value="date">Date</option>
|
||||
<option value="boolean">Boolean</option>
|
||||
<option value="text">Text</option>
|
||||
<option value="json">JSON</option>
|
||||
</select>
|
||||
<input class="form-control" name="value" placeholder="Default value">
|
||||
<button class="btn btn-primary btn-sm" type="submit">
|
||||
<i class="fa-solid fa-plus me-1"></i>
|
||||
Add Field
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="admin-custom-field-list" id="adminCustomFieldList"></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="workflow-card admin-option-card">
|
||||
<h3>Task Priorities</h3>
|
||||
|
||||
<form class="admin-option-form" data-admin-option-form="priority">
|
||||
<input class="form-control" name="name" placeholder="High" required maxlength="128">
|
||||
<input class="form-control" type="file" name="logo" accept=".svg,image/svg+xml" aria-label="Task priority logo">
|
||||
<button class="btn btn-primary btn-sm" type="submit">
|
||||
<i class="fa-solid fa-plus me-1"></i>
|
||||
Add Priority
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="admin-option-list" id="adminPriorityList"></div>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="admin-panel" id="adminUsersPanel" hidden>
|
||||
<div class="admin-panel-header">
|
||||
<div>
|
||||
<h2>Users</h2>
|
||||
<p>Assign and remove global rights for users.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="workflow-card admin-option-card">
|
||||
<h3>User Rights</h3>
|
||||
|
||||
<div class="admin-user-editor">
|
||||
<div>
|
||||
<label class="form-label" for="adminUserSelect">Selected User</label>
|
||||
<select class="form-select" id="adminUserSelect"></select>
|
||||
</div>
|
||||
|
||||
<div class="admin-user-rights" id="adminUserRightsList"></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
6
ProjectKiln/app/viewer/dashboard.php
Normal file
6
ProjectKiln/app/viewer/dashboard.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<section class="viewer-placeholder" id="dashboardView">
|
||||
<div>
|
||||
<h1>Dashboard</h1>
|
||||
<p>Select a project, version or task from the sidebar.</p>
|
||||
</div>
|
||||
</section>
|
||||
103
ProjectKiln/app/viewer/profile.php
Normal file
103
ProjectKiln/app/viewer/profile.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<section class="profile-view" id="profileView" hidden>
|
||||
<div class="profile-header">
|
||||
<div>
|
||||
<div class="viewer-key">Account</div>
|
||||
<h1>Edit Profile</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form class="profile-layout" id="profileForm" enctype="multipart/form-data">
|
||||
<section class="profile-avatar-panel">
|
||||
<div class="profile-avatar-preview" id="profileAvatarPreview">
|
||||
<span class="profile-avatar-fallback">
|
||||
<i class="fa-solid fa-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<label class="btn btn-outline-secondary btn-sm profile-picture-button">
|
||||
<i class="fa-solid fa-image me-1"></i>
|
||||
Upload picture
|
||||
<input
|
||||
type="file"
|
||||
name="picture"
|
||||
id="profilePictureInput"
|
||||
accept="image/png,image/jpeg,image/webp,image/gif"
|
||||
hidden
|
||||
>
|
||||
</label>
|
||||
|
||||
<label class="profile-remove-picture">
|
||||
<input type="checkbox" name="remove_picture" value="1" id="profileRemovePicture">
|
||||
Remove current picture
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<section class="profile-form-panel">
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="profileName">Username</label>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="name"
|
||||
id="profileName"
|
||||
maxlength="128"
|
||||
required
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="profileEmail">Email</label>
|
||||
<input
|
||||
type="email"
|
||||
class="form-control"
|
||||
name="email"
|
||||
id="profileEmail"
|
||||
maxlength="128"
|
||||
required
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="profilePassword">New Password</label>
|
||||
<input
|
||||
type="password"
|
||||
class="form-control"
|
||||
name="password"
|
||||
id="profilePassword"
|
||||
minlength="8"
|
||||
autocomplete="new-password"
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="profilePasswordConfirm">Confirm Password</label>
|
||||
<input
|
||||
type="password"
|
||||
class="form-control"
|
||||
id="profilePasswordConfirm"
|
||||
minlength="8"
|
||||
autocomplete="new-password"
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="profileTheme">Theme</label>
|
||||
<select class="form-select" name="theme" id="profileTheme">
|
||||
<option value="white">White</option>
|
||||
<option value="dark">Dark</option>
|
||||
<option value="purple">Purple</option>
|
||||
<option value="green">Green</option>
|
||||
<option value="beige">Beige</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="profile-actions">
|
||||
<button class="btn btn-primary" type="submit" id="profileSubmitButton">
|
||||
<i class="fa-solid fa-floppy-disk me-1"></i>
|
||||
Save Profile
|
||||
</button>
|
||||
<span class="profile-status" id="profileStatus" aria-live="polite"></span>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</section>
|
||||
67
ProjectKiln/app/viewer/project.php
Normal file
67
ProjectKiln/app/viewer/project.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<section class="project-view" id="projectView" hidden>
|
||||
<div class="version-header">
|
||||
<div>
|
||||
<div class="viewer-key" id="projectKey"></div>
|
||||
<div
|
||||
class="project-editable version-title"
|
||||
id="projectName"
|
||||
data-project-field="name"
|
||||
role="heading"
|
||||
aria-level="1"
|
||||
tabindex="0"
|
||||
></div>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($canEditProjects)): ?>
|
||||
<button class="btn btn-outline-secondary btn-sm" id="projectEditButton">
|
||||
<i class="fa-solid fa-pen me-1"></i>
|
||||
Edit
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="version-detail-grid">
|
||||
<section class="version-panel">
|
||||
<h2 class="section-title">Project</h2>
|
||||
<div class="viewer-description">
|
||||
<div class="meta-list">
|
||||
<div class="meta-row">
|
||||
<span class="meta-label">Key</span>
|
||||
<span class="meta-value" id="projectId"></span>
|
||||
</div>
|
||||
|
||||
<div class="meta-row">
|
||||
<span class="meta-label">Name</span>
|
||||
<span
|
||||
class="meta-value project-editable version-inline-field"
|
||||
id="projectInlineName"
|
||||
data-project-field="name"
|
||||
tabindex="0"
|
||||
></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<aside class="version-panel">
|
||||
<h2 class="section-title">Details</h2>
|
||||
|
||||
<div class="meta-list">
|
||||
<div class="meta-row">
|
||||
<span class="meta-label">Owner</span>
|
||||
<span
|
||||
class="meta-value project-editable version-inline-field"
|
||||
id="projectOwner"
|
||||
data-project-field="owner"
|
||||
tabindex="0"
|
||||
></span>
|
||||
</div>
|
||||
|
||||
<div class="meta-row">
|
||||
<span class="meta-label">Created</span>
|
||||
<span class="meta-value" id="projectCreated"></span>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</section>
|
||||
138
ProjectKiln/app/viewer/task.php
Normal file
138
ProjectKiln/app/viewer/task.php
Normal file
@@ -0,0 +1,138 @@
|
||||
<section class="task-view task-detail-view" id="taskView" hidden>
|
||||
|
||||
<div class="task-detail-header">
|
||||
<div class="task-detail-breadcrumb">
|
||||
<span id="taskProject"></span>
|
||||
<span>/</span>
|
||||
<span id="taskKey"></span>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="task-editable task-detail-title"
|
||||
id="taskTitle"
|
||||
data-task-field="title"
|
||||
role="heading"
|
||||
aria-level="1"
|
||||
tabindex="0"
|
||||
></div>
|
||||
|
||||
<div class="task-detail-action-row">
|
||||
<div class="task-detail-actions">
|
||||
<?php if (!empty($canEditTasks)): ?>
|
||||
<button class="btn btn-sm btn-outline-secondary" id="taskEditButton">
|
||||
<i class="fa-solid fa-pen me-1"></i>
|
||||
Edit
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
|
||||
<button class="btn btn-sm btn-outline-secondary" id="taskCommentButton">
|
||||
<i class="fa-solid fa-comment me-1"></i>
|
||||
Comment
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="task-status-slot" id="taskStatusSlot"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="task-detail-grid">
|
||||
|
||||
<div class="task-detail-main">
|
||||
|
||||
<section class="task-detail-panel" id="taskCustomFieldsPanel" hidden>
|
||||
<h2>Custom Fields</h2>
|
||||
<div class="task-custom-field-list" id="taskCustomFieldList"></div>
|
||||
</section>
|
||||
|
||||
<section class="task-detail-panel">
|
||||
<h2>Description</h2>
|
||||
<div
|
||||
class="task-editable task-inline-field task-detail-description"
|
||||
id="taskDescription"
|
||||
data-task-field="description"
|
||||
tabindex="0"
|
||||
></div>
|
||||
</section>
|
||||
|
||||
<section class="task-detail-panel task-comments-panel">
|
||||
<h2>Comments</h2>
|
||||
|
||||
<form class="task-comment-form" id="taskCommentForm">
|
||||
<textarea
|
||||
class="form-control"
|
||||
name="comment"
|
||||
id="taskCommentInput"
|
||||
rows="3"
|
||||
placeholder="Add a comment..."
|
||||
></textarea>
|
||||
<div class="task-comment-actions">
|
||||
<button class="btn btn-sm btn-primary" type="submit">
|
||||
<i class="fa-solid fa-paper-plane me-1"></i>
|
||||
Add Comment
|
||||
</button>
|
||||
<span class="task-comment-status" id="taskCommentStatus"></span>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="task-comment-list" id="taskCommentList"></div>
|
||||
<div class="text-secondary" id="taskCommentEmpty" hidden>
|
||||
No comments yet.
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="task-detail-side">
|
||||
|
||||
<section class="task-detail-panel">
|
||||
<h2>Details</h2>
|
||||
|
||||
<div class="task-detail-meta">
|
||||
<div class="task-detail-meta-row">
|
||||
<span>Type</span>
|
||||
<strong class="task-editable task-inline-field" id="taskType" data-task-field="type" tabindex="0"></strong>
|
||||
</div>
|
||||
|
||||
<div class="task-detail-meta-row">
|
||||
<span>Priority</span>
|
||||
<strong class="task-editable task-inline-field" id="taskPriority" data-task-field="priority" tabindex="0"></strong>
|
||||
</div>
|
||||
|
||||
<div class="task-detail-meta-row">
|
||||
<span>Fix Version</span>
|
||||
<strong class="task-editable task-inline-field" id="taskFixVersion" data-task-field="fix_version" tabindex="0"></strong>
|
||||
</div>
|
||||
|
||||
<div class="task-detail-meta-row">
|
||||
<span>Created</span>
|
||||
<strong id="taskCreated"></strong>
|
||||
</div>
|
||||
|
||||
<div class="task-detail-meta-row">
|
||||
<span>Updated</span>
|
||||
<strong id="taskUpdated"></strong>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="task-detail-panel">
|
||||
<h2>People</h2>
|
||||
|
||||
<div class="task-detail-meta">
|
||||
<div class="task-detail-meta-row">
|
||||
<span>Reporter</span>
|
||||
<strong id="taskReporter"></strong>
|
||||
</div>
|
||||
|
||||
<div class="task-detail-meta-row">
|
||||
<span>Assignee</span>
|
||||
<strong class="task-editable task-inline-field" id="taskAssignee" data-task-field="assignee" tabindex="0"></strong>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</aside>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
43
ProjectKiln/app/viewer/task_list.php
Normal file
43
ProjectKiln/app/viewer/task_list.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<section class="task-list-view" id="taskListView" hidden>
|
||||
<div class="task-list-header">
|
||||
<div>
|
||||
<div class="viewer-key" id="taskListProjectKey"></div>
|
||||
<h1 id="taskListTitle">Tasks</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="version-task-table project-task-table" id="projectTaskTable">
|
||||
<div class="version-task-row version-task-head">
|
||||
<button type="button" data-project-task-sort="id">
|
||||
ID
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-project-task-sort="title">
|
||||
Name
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-project-task-sort="type">
|
||||
Type
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-project-task-sort="priority">
|
||||
Priority
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-project-task-sort="assignee">
|
||||
Assignee
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-project-task-sort="status">
|
||||
Status
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="taskListContainer"></div>
|
||||
</div>
|
||||
<div class="version-task-pagination" id="projectTaskPagination"></div>
|
||||
<div class="text-secondary" id="taskListEmpty" hidden>
|
||||
No tasks found.
|
||||
</div>
|
||||
</section>
|
||||
108
ProjectKiln/app/viewer/version.php
Normal file
108
ProjectKiln/app/viewer/version.php
Normal file
@@ -0,0 +1,108 @@
|
||||
<section class="version-view" id="versionView" hidden>
|
||||
<div class="version-header">
|
||||
<div>
|
||||
<div class="viewer-key" id="versionKey"></div>
|
||||
<div
|
||||
class="version-editable version-title"
|
||||
id="versionName"
|
||||
data-version-field="name"
|
||||
role="heading"
|
||||
aria-level="1"
|
||||
tabindex="0"
|
||||
></div>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($canEditVersions)): ?>
|
||||
<button class="btn btn-outline-secondary btn-sm" id="versionEditButton">
|
||||
<i class="fa-solid fa-pen me-1"></i>
|
||||
Edit
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="version-detail-grid">
|
||||
<section class="version-panel">
|
||||
<h2 class="section-title">Description</h2>
|
||||
<div
|
||||
class="version-editable version-inline-field viewer-description"
|
||||
id="versionDescription"
|
||||
data-version-field="description"
|
||||
tabindex="0"
|
||||
></div>
|
||||
</section>
|
||||
|
||||
<aside class="version-panel">
|
||||
<h2 class="section-title">Details</h2>
|
||||
|
||||
<div class="meta-list">
|
||||
<div class="meta-row">
|
||||
<span class="meta-label">Project</span>
|
||||
<span class="meta-value" id="versionProject"></span>
|
||||
</div>
|
||||
|
||||
<div class="meta-row">
|
||||
<span class="meta-label">Created</span>
|
||||
<span class="meta-value" id="versionCreated"></span>
|
||||
</div>
|
||||
|
||||
<div class="meta-row">
|
||||
<span class="meta-label">Due Date</span>
|
||||
<span
|
||||
class="meta-value version-editable version-inline-field"
|
||||
id="versionDueDate"
|
||||
data-version-field="due_date"
|
||||
tabindex="0"
|
||||
></span>
|
||||
</div>
|
||||
|
||||
<div class="meta-row">
|
||||
<span class="meta-label">Released</span>
|
||||
<span
|
||||
class="meta-value version-editable version-inline-field"
|
||||
id="versionReleasedDate"
|
||||
data-version-field="released_date"
|
||||
tabindex="0"
|
||||
></span>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<section class="version-panel version-task-section">
|
||||
<h2 class="section-title">Tasks</h2>
|
||||
<div class="version-task-table" id="versionTaskTable">
|
||||
<div class="version-task-row version-task-head">
|
||||
<button type="button" data-version-task-sort="id">
|
||||
ID
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-version-task-sort="title">
|
||||
Name
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-version-task-sort="type">
|
||||
Type
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-version-task-sort="priority">
|
||||
Priority
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-version-task-sort="assignee">
|
||||
Assignee
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
<button type="button" data-version-task-sort="status">
|
||||
Status
|
||||
<i class="fa-solid fa-sort"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="versionTaskList"></div>
|
||||
</div>
|
||||
<div class="version-task-pagination" id="versionTaskPagination"></div>
|
||||
<div class="text-secondary" id="versionTaskEmpty" hidden>
|
||||
No tasks in this version.
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
Reference in New Issue
Block a user