1710c8f811
프로젝트 상세 화면 좌측 트리는 renderTree()가 매번 JS로 다시 그리므로 (라이브 새로고침 포함) 실제 동작은 projectsMeta/treeProjLi/wireTreeHandlers 쪽에 구현 — 홈 화면과 같은 프로젝트 수정 모달(이름/설명/기간/색상/완료 토글)을 재사용. 서버 쪽 projects_meta·nav_projects 에 description/status 필드 추가(기존엔 없어서 수정 폼을 못 채웠음). Jinja 쪽 nav_projects 루프도 동일하게 맞춰뒀지만 JS가 즉시 덮어쓰므로 첫 페인트용일 뿐 — 기존 삭제 버튼도 같은 이중 구조였음(관례를 그대로 따름). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
50 lines
1.7 KiB
HTML
50 lines
1.7 KiB
HTML
{% extends "erp_base.html" %}
|
|
|
|
{% block head_extra %}
|
|
<link rel="stylesheet" href="/static/project.css?v=20260917d" />
|
|
<link rel="stylesheet" href="/static/vendor/material-symbols/material-symbols.css" />
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="pj-wrap">
|
|
<div class="pj-section-head">
|
|
<h2>알림센터</h2>
|
|
<div style="display:flex; gap:8px;">
|
|
<a class="pj-btn" href="/project/">← 프로젝트</a>
|
|
<button type="button" class="pj-btn pj-btn-primary" id="pj-readall">모두 읽음</button>
|
|
</div>
|
|
</div>
|
|
|
|
{% if not notifications %}
|
|
<div class="pj-empty">알림이 없습니다.</div>
|
|
{% else %}
|
|
<ul class="pj-inbox" id="pj-inbox">
|
|
{% for n in notifications %}
|
|
<li class="pj-inbox-item {% if not n.is_read %}is-unread{% endif %}"
|
|
data-id="{{ n.id }}"
|
|
{% if n.task_id %}data-project="{{ n.project_id }}"{% endif %}>
|
|
<span class="material-symbols-outlined pj-inbox-icon">
|
|
{% if n.type == 'assigned' %}assignment_ind
|
|
{% elif n.type == 'completed' %}task_alt
|
|
{% elif n.type == 'comment' %}chat_bubble
|
|
{% else %}notifications{% endif %}
|
|
</span>
|
|
<div class="pj-inbox-body">
|
|
<div class="pj-inbox-title">{{ n.title }}</div>
|
|
{% if n.body %}<div class="pj-inbox-sub">{{ n.body }}</div>{% endif %}
|
|
<div class="pj-inbox-meta">
|
|
{% if n.actor_email %}{{ n.actor_email.split('@')[0] }} · {% endif %}{{ n.created_at[:16].replace('T',' ') }}
|
|
</div>
|
|
</div>
|
|
{% if n.project_id %}
|
|
<a class="pj-btn pj-inbox-go" href="/project/p/{{ n.project_id }}">이동</a>
|
|
{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<script src="/static/project.js?v=20260917d" defer></script>
|
|
{% endblock %}
|