project.html 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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. </div>
  68. {% if quest.overdue == 'yes' and quest.realized != 1 %}
  69. <div class="deadline_block alert alert-danger" role="alert">
  70. {{ quest.time_left }}
  71. </div>
  72. {% elif quest.overdue == 'today' and quest.realized != 1 %}
  73. <div class="deadline_block alert alert-warning" role="alert">
  74. Дедлайн сегодня
  75. </div>
  76. {% elif quest.overdue == 'no' and quest.realized != 1 %}
  77. <div class="deadline_block alert alert-success" role="alert">
  78. {{ quest.time_left }}
  79. </div>
  80. {% elif quest.overdue == '' and quest.realized != 1 %}
  81. <div class="deadline_block alert alert-warning" role="alert">
  82. Дедлайна нет
  83. </div>
  84. {% else %}
  85. <div class="deadline_block alert alert-success" role="alert">
  86. Задача выполнена
  87. </div>
  88. {% endif %}
  89. </button>
  90. </h2>
  91. <div id="panelsStayOpen-collapse{{ quest.id }}"
  92. class="accordion-collapse collapse quest_body_block"
  93. aria-labelledby="panelsStayOpen-heading{{ quest.id }}">
  94. <div class="accordion-body quest_body">
  95. {% if quest.realized == 0 %}
  96. <div class="quest_body">
  97. <div class="quest_description_block">
  98. <p class="quest_description_title">Описание</p>
  99. <div class="quest_description">
  100. <p class="quest_description_text">{{ quest.description }}</p>
  101. </div>
  102. </div>
  103. <div class="quest_solve_button">
  104. <a class="quest_solve_link" href="{{ project.id }}/quest/{{ quest.id }}">
  105. <p class="quest_solve_text">Решить</p>
  106. </a>
  107. </div>
  108. </div>
  109. {% else %}
  110. <div class="quest_body">
  111. <div class="quest_description_block">
  112. <p class="quest_description_title">Описание</p>
  113. <div class="quest_description">
  114. <p class="quest_description_text">{{ quest.description }}</p>
  115. </div>
  116. </div>
  117. <div class="quest_solve_button">
  118. <a class="quest_solve_link" href="{{ project.id }}/quest/{{ quest.id }}">
  119. <p class="quest_solve_text">Посмотреть</p>
  120. </a>
  121. </div>
  122. </div>
  123. {% endif %}
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. {% endfor %}
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133. <div class="files_block">
  134. <div class="head_files">
  135. <h2 class="files_title">Файлы</h2>
  136. <form action="" method="post" class="file_form" id="file_form" enctype="multipart/form-data">
  137. {{ form_file.hidden_tag() }}
  138. <div class="form_data bottom_data">
  139. {{ form_file.file(class="input_data", id="selectedFile", type="file", style="display: none;") }}
  140. {% for error in form_file.file.errors %}
  141. <div class="alert alert-danger" role="alert">{{ error }}</div>
  142. {% endfor %}
  143. </div>
  144. {{ form_file.submit(type="submit", id="upload_button", class="btn btn-success upload_button",
  145. style="display: none;") }}
  146. <button type="button" class="upload_button btn btn-primary" id="select_file_button"
  147. onclick="push_file()">Добавить
  148. </button>
  149. </form>
  150. </div>
  151. <div class="list_files_block">
  152. <div class="list_files">
  153. {% for item in file_tree %}
  154. {% if item['type'] == 'file' %}
  155. <div class="file">
  156. <div class="file_head">
  157. <nav class="file_head_group" style="--bs-breadcrumb-divider: '>';" aria-label="breadcrumb">
  158. <ol class="breadcrumb file_head_path">
  159. {% for path in item['current_path'] %}
  160. <li class="breadcrumb-item active file_path" aria-current="page">{{ path }}</li>
  161. {% endfor %}
  162. </ol>
  163. </nav>
  164. </div>
  165. <div class="file_buttons">
  166. <div class="btn-group file_buttons_groud">
  167. {% if current_user.id == project.creator or item['object'].user == current_user.id %}
  168. <a href="../project/{{ project.id }}/file/{{ item['object'].id }}/delete?from=project"
  169. class="btn btn-primary file_delete"><p class="button_text">Удалить</p></a>
  170. {% endif %}
  171. <a href="../../../{{ item['path'] }}" download="" class="btn btn-primary file_download"><p
  172. class="button_text">Скачать</p></a>
  173. </div>
  174. </div>
  175. </div>
  176. {% elif item['type'] == 'folder' %}
  177. {% endif %}
  178. {% endfor %}
  179. </div>
  180. </div>
  181. </div>
  182. </div>
  183. <script type="text/javascript" src="../static/js/project.js"></script>
  184. {% endblock %}