project.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <link rel="stylesheet" href="../static/css/project.css"/>
  2. {% extends "base.html" %} {% block content %}
  3. <div class="projects_page">
  4. <div class="link_back_block">
  5. <a class="link_back" href="../">
  6. <p class="link_back_text">К проектам</p>
  7. </a>
  8. </div>
  9. <div class="project_header">
  10. <div class="edit_block">
  11. {% if current_user.id == project.creator %}
  12. <div class="edit_button">
  13. <a id="edit_button" class="edit_button_link" href="">
  14. <p class="edit_button_text">Редактировать</p>
  15. </a>
  16. </div>
  17. {% else %}
  18. <p style="width: 12vw;"> </p>
  19. {% endif %}
  20. </div>
  21. <div class="brand_block">
  22. <img class="project_logo" src="../{{project.photo}}"/>
  23. <p class="name_project header_title">{{ project.name }}</p>
  24. </div>
  25. <div class="notification_block">
  26. </div>
  27. </div>
  28. <div class="body_block">
  29. <div class="head_staff_block">
  30. <h3 class="header_title">Участники</h3>
  31. <div class="collaborator_block">
  32. <div class="staff_block">
  33. {% for user in staff %}
  34. <div class="user">
  35. <a class="link_to_user" href="/user/{{ user.login }}">
  36. <img class="user_logo" src="../{{user.photo}}">
  37. <p class="user_names">{{user.name}}</p>
  38. </a>
  39. </div>
  40. {% endfor %}
  41. </div>
  42. </div>
  43. </div>
  44. <div class="header_task_block">
  45. <div class="head_task">
  46. <h3 class="header_title_2">Задачи</h3>
  47. <div class="new_task_block">
  48. <a class="new_task_link" id="new_task_link" href="{{ project.id }}/quest/new">
  49. <p class="new_task_text">Добавить</p>
  50. </a>
  51. </div>
  52. </div>
  53. <div class="task_block">
  54. <div class="task">
  55. {% for quest in quests %}
  56. <div class="accordion list_quests" id="accordionPanelsStayOpen{{ quest.id }}">
  57. <div class="accordion-item quest">
  58. <h2 class="accordion-header quest_header" id="panelsStayOpen-heading{{ quest.id }}">
  59. <button class="accordion-button quest_header_button" type="button"
  60. data-bs-toggle="collapse"
  61. data-bs-target="#panelsStayOpen-collapse{{ quest.id }}" aria-expanded="true"
  62. aria-controls="panelsStayOpen-collapse{{ quest.id }}">
  63. <div class="quest_button_block_one">
  64. <div class="quest_title_block">
  65. <p class="quest_title">{{ quest.name }}</p>
  66. </div>
  67. {% if not project.is_template %}
  68. </div>
  69. {% if quest.overdue == 'yes' and quest.realized != 1 %}
  70. <div class="deadline_block alert alert-danger" role="alert">
  71. {{ quest.time_left }}
  72. </div>
  73. {% elif quest.overdue == 'today' and quest.realized != 1 %}
  74. <div class="deadline_block alert alert-warning" role="alert">
  75. Дедлайн сегодня
  76. </div>
  77. {% elif quest.overdue == 'no' and quest.realized != 1 %}
  78. <div class="deadline_block alert alert-success" role="alert">
  79. {{ quest.time_left }}
  80. </div>
  81. {% elif quest.overdue == '' and quest.realized != 1 %}
  82. <div class="deadline_block alert alert-warning" role="alert">
  83. Дедлайна нет
  84. </div>
  85. {% else %}
  86. <div class="deadline_block alert alert-success" role="alert">
  87. Задача выполнена
  88. </div>
  89. {% endif %}
  90. {% endif %}
  91. </button>
  92. </h2>
  93. <div id="panelsStayOpen-collapse{{ quest.id }}"
  94. class="accordion-collapse collapse quest_body_block"
  95. aria-labelledby="panelsStayOpen-heading{{ quest.id }}">
  96. <div class="accordion-body quest_body">
  97. {% if quest.realized == 0 %}
  98. <div class="quest_body">
  99. <div class="quest_description_block">
  100. <p class="quest_description_title">Описание</p>
  101. <div class="quest_description">
  102. <p class="quest_description_text">{{ quest.description }}</p>
  103. </div>
  104. </div>
  105. <div class="quest_solve_button">
  106. <a class="quest_solve_link" href="{{ project.id }}/quest/{{ quest.id }}">
  107. <p class="quest_solve_text">Решить</p>
  108. </a>
  109. </div>
  110. </div>
  111. {% else %}
  112. <div class="quest_body">
  113. <div class="quest_description_block">
  114. <p class="quest_description_title">Описание</p>
  115. <div class="quest_description">
  116. <p class="quest_description_text">{{ quest.description }}</p>
  117. </div>
  118. </div>
  119. <div class="quest_solve_button">
  120. <a class="quest_solve_link" href="{{ project.id }}/quest/{{ quest.id }}">
  121. <p class="quest_solve_text">Посмотреть</p>
  122. </a>
  123. </div>
  124. </div>
  125. {% endif %}
  126. </div>
  127. </div>
  128. </div>
  129. </div>
  130. {% endfor %}
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. <div class="files_block">
  136. <div class="head_files">
  137. <h2 class="files_title">Файлы</h2>
  138. <form action="" method="post" class="file_form" id="file_form" enctype="multipart/form-data">
  139. {{ form_file.hidden_tag() }}
  140. <div class="form_data bottom_data">
  141. {{ form_file.file(class="input_data", id="selectedFile", type="file", style="display: none;") }}
  142. {% for error in form_file.file.errors %}
  143. <div class="alert alert-danger" role="alert">{{ error }}</div>
  144. {% endfor %}
  145. </div>
  146. {{ form_file.submit(type="submit", id="upload_button", class="btn btn-success upload_button",
  147. style="display: none;") }}
  148. <button type="button" class="upload_button btn btn-primary" id="select_file_button"
  149. onclick="push_file()">Добавить
  150. </button>
  151. </form>
  152. </div>
  153. <div class="list_files_block">
  154. <div class="list_files">
  155. {% for item in file_tree %}
  156. {% if item['type'] == 'file' %}
  157. <div class="file">
  158. <div class="file_head">
  159. <nav class="file_head_group" style="--bs-breadcrumb-divider: '>';" aria-label="breadcrumb">
  160. <ol class="breadcrumb file_head_path">
  161. {% for path in item['current_path'] %}
  162. <li class="breadcrumb-item active file_path" aria-current="page">{{ path }}</li>
  163. {% endfor %}
  164. </ol>
  165. </nav>
  166. </div>
  167. <div class="file_buttons">
  168. <div class="btn-group file_buttons_groud">
  169. {% if current_user.id == project.creator or item['object'].user == current_user.id %}
  170. <a href="../project/{{ project.id }}/file/{{ item['object'].id }}/delete?from=project"
  171. class="btn btn-primary file_delete"><p class="button_text">Удалить</p></a>
  172. {% endif %}
  173. <a href="../../../{{ item['path'] }}" download="" class="btn btn-primary file_download"><p
  174. class="button_text">Скачать</p></a>
  175. </div>
  176. </div>
  177. </div>
  178. {% elif item['type'] == 'folder' %}
  179. {% endif %}
  180. {% endfor %}
  181. </div>
  182. </div>
  183. </div>
  184. </div>
  185. <script type="text/javascript" src="../static/js/project.js"></script>
  186. {% endblock %}