feat: 모든 페이지에 공통 헤더 적용 및 모바일 최적화

- 모든 HTML 페이지에 권한 기반 공통 헤더 적용
- 부적합 등록 페이지 모바일 최적화 (사진 업로드 UI 개선)
- 부적합 조회 페이지에 모바일 캘린더 날짜 필터 적용
- 사용자별 권한에 따른 동적 페이지 제목 및 메시지 표시

Page Updates:
- index.html: 모바일 친화적 사진 업로드 UI, 공통 헤더 적용
- issue-view.html: 터치/스와이프 캘린더 필터, 권한별 조회 제한
- daily-work.html: 공통 헤더 적용, 프로젝트 로딩 로직 개선
- project-management.html: 공통 헤더 적용, 권한 체크 강화
- admin.html: 페이지 권한 관리 UI 추가, 공통 헤더 적용

Mobile Optimizations:
- 터치 타겟 최소 44px 보장
- 스와이프 제스처 지원
- 반응형 레이아웃
- 모바일 전용 UI 컴포넌트
This commit is contained in:
Hyungi Ahn
2025-10-25 09:01:32 +09:00
parent 25123be806
commit 610a171b25
5 changed files with 615 additions and 363 deletions

View File

@@ -49,22 +49,7 @@
</style>
</head>
<body>
<!-- 헤더 -->
<header class="bg-white shadow-sm">
<div class="container mx-auto px-4 py-4">
<div class="flex justify-between items-center">
<h1 class="text-2xl font-bold text-gray-800">
<i class="fas fa-folder-open text-blue-500 mr-2"></i>프로젝트 관리
</h1>
<div class="flex items-center gap-4">
<span class="text-sm text-gray-600" id="userDisplay"></span>
<a href="index.html" class="text-gray-500 hover:text-gray-700">
<i class="fas fa-home mr-1"></i>메인으로
</a>
</div>
</div>
</div>
</header>
<!-- 공통 헤더가 여기에 자동으로 삽입됩니다 -->
<!-- 메인 컨텐츠 -->
<main class="container mx-auto px-4 py-8 max-w-4xl">
@@ -177,6 +162,9 @@
console.log('📱 프로젝트 관리 - 캐시 버스터:', cacheBuster);
</script>
<script src="/static/js/core/permissions.js?v=20251025"></script>
<script src="/static/js/components/common-header.js?v=20251025"></script>
<script src="/static/js/core/page-manager.js?v=20251025"></script>
<script>
// 사용자 확인 (관리자만 접근 가능)
let currentUser = null;
@@ -214,17 +202,19 @@
const authSuccess = await initAuth();
if (!authSuccess) return;
const username = currentUser.username || currentUser;
const isAdmin = username === 'hyungi' || currentUser.role === 'admin';
// 공통 헤더 초기화
await window.commonHeader.init(currentUser, 'projects_manage');
if (!isAdmin) {
alert('관리자만 접근 가능합니다.');
window.location.href = 'index.html';
return;
}
// 페이지 접근 권한 체크 (프로젝트 관리 페이지)
setTimeout(() => {
if (!canAccessPage('projects_manage')) {
alert('프로젝트 관리 페이지에 접근할 권한이 없습니다.');
window.location.href = 'index.html';
return;
}
}, 500);
const displayName = currentUser.full_name || (username === 'hyungi' ? '관리자' : username);
document.getElementById('userDisplay').textContent = `${displayName} (${username})`;
// 사용자 정보는 공통 헤더에서 표시됨
// 프로젝트 로드
loadProjects();