Changes for page 生徒会Wiki

Last modified by Super Admin on 2026/04/01 16:27

From version Icon 5.1 Icon
edited by Super Admin
on 2026/03/06 00:44
Change comment: There is no comment for this version
To version Icon 33.1 Icon
edited by XWikiGuest
on 2026/03/18 03:51
Change comment: There is no comment for this version

Summary

Details

Icon Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.superadmin
1 +XWiki.XWikiGuest
Content
... ... @@ -1,28 +1,65 @@
1 1  {{velocity}}
2 -## メンテナンスバナー
3 -{{include reference="SeitokaiCode.MaintenanceBannerInclude" /}}
4 -
2 +## ユーザーごとに異なるコンテンツ(ゲストCTA等)があるためキャッシュ無効化
3 +#set($discard = $xcontext.put('rendering.cache.disabled', true))
5 5  {{html clean="false"}}
5 +## メンテナンスバナー(インラインで記述し、<p>タグ挿入を回避)
6 +#set($bannerDoc = $xwiki.getDocument('SeitokaiAdmin.MaintenanceBanner'))
7 +#set($bannerObj = $bannerDoc.getObject('SeitokaiCode.MaintenanceBannerClass'))
8 +#if($bannerObj && $bannerObj.getValue('enabled') == 1)
9 +#set($bannerMsg = $bannerObj.getValue('message'))
10 +#set($bannerLevel = $bannerObj.getValue('level'))
11 +#if(!$bannerLevel || $bannerLevel == '')#set($bannerLevel = 'warning')#end
12 +<div class="maintenance-banner active maintenance-${bannerLevel}" id="maintenance-banner">
13 + <div class="maintenance-banner-inner">
14 + <span class="maintenance-icon">#if($bannerLevel == 'urgent')<svg class="ico-banner" viewBox="0 0 24 24"><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>#elseif($bannerLevel == 'info')<svg class="ico-banner" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>#else<svg class="ico-banner" viewBox="0 0 24 24"><path d="M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"/></svg>#end</span>
15 + <span class="maintenance-text">$!escapetool.xml($bannerMsg)</span>
16 + <button class="maintenance-close" onclick="document.getElementById('maintenance-banner').style.display='none'">&times;</button>
17 + </div>
18 +</div>
19 +#end
6 6  <div class="home-hero">
7 - <h1><svg class="ico" style="width:1em;height:1em;vertical-align:-0.125em;" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 20h20"/><path d="M5 20V10l7-5 7 5v10"/><path d="M9 20v-5h6v5"/></svg> 生徒会Wiki</h1>
21 + <span class="home-hero-icon"><svg class="ico ico-hero" viewBox="0 0 24 24"><path d="M2 20h20"/><path d="M5 20V10l7-5 7 5v10"/><path d="M9 20v-5h6v5"/></svg></span>
22 + <h1>生徒会Wiki</h1>
8 8   <p>全国の学校の生徒会活動を共有するプラットフォーム</p>
24 + <p class="home-hero-org">運営:<a href="https://seitokai.jp/aboutus" target="_blank" rel="noopener">一般社団法人生徒会活動支援協会</a>(<a href="https://seitokai.jp" target="_blank" rel="noopener">生徒会.jp</a>)</p>
9 9  </div>
10 10  
27 +#if($xcontext.user == "XWiki.XWikiGuest")
28 +<div class="home-guest-cta">
29 + <div class="home-guest-cta-inner">
30 + <div class="home-guest-cta-content">
31 + <h2 class="home-guest-cta-title">アカウントを作成して、全国の生徒会と情報を共有しましょう</h2>
32 + <p class="home-guest-cta-desc">ログインすると、自分の学校ページの作成・編集や活動報告の投稿ができるようになります。</p>
33 + </div>
34 + <div class="home-guest-cta-buttons">
35 + <a href="$xwiki.getURL('XWiki.XWikiLogin', 'login', 'loginLink=1')" class="btn-guest-register">
36 + <svg class="login-icon" viewBox="0 0 24 24"><path d="M16 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="8.5" cy="7" r="4"/><line x1="20" y1="11" x2="20" y2="17"/><line x1="17" y1="14" x2="23" y2="14"/></svg>
37 + アカウントを作成
38 + </a>
39 + <a href="$xwiki.getURL('XWiki.XWikiLogin', 'login')" class="btn-guest-login">
40 + <svg class="login-icon" viewBox="0 0 24 24"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
41 + ログイン
42 + </a>
43 + </div>
44 + </div>
45 +</div>
46 +#end
47 +
11 11  <div class="home-cards">
12 12   <a href="$xwiki.getURL('Schools.WebHome', 'view')" class="home-card">
13 - <div class="home-card-icon"><svg class="ico" style="width:1em;height:1em;vertical-align:-0.125em;" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 016.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/></svg></div>
50 + <div class="home-card-icon"><svg class="ico" viewBox="0 0 24 24"><path d="M4 19.5A2.5 2.5 0 016.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/></svg></div>
14 14   <div class="home-card-title">学校ページを見る</div>
15 15   <div class="home-card-desc">登録されている学校の活動を閲覧</div>
16 16   </a>
17 17  
18 18   <a href="$xwiki.getURL('SeitokaiCode.CreateSchool', 'view')" class="home-card">
19 - <div class="home-card-icon"><svg class="ico" style="width:1em;height:1em;vertical-align:-0.125em;" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z"/></svg></div>
56 + <div class="home-card-icon"><svg class="ico" viewBox="0 0 24 24"><path d="M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z"/></svg></div>
20 20   <div class="home-card-title">学校ページを作成</div>
21 21   <div class="home-card-desc">あなたの学校のページを新規作成</div>
22 22   </a>
23 23  
24 24   <a href="$xwiki.getURL('SeitokaiCode.Guidelines', 'view')" class="home-card">
25 - <div class="home-card-icon"><svg class="ico" style="width:1em;height:1em;vertical-align:-0.125em;" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg></div>
62 + <div class="home-card-icon"><svg class="ico" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg></div>
26 26   <div class="home-card-title">ガイドライン</div>
27 27   <div class="home-card-desc">編集ルール・利用規約を確認</div>
28 28   </a>
... ... @@ -29,7 +29,7 @@
29 29  
30 30   #if($xcontext.user != "XWiki.XWikiGuest")
31 31   <a href="$xwiki.getURL('SeitokaiCode.MyPage', 'view')" class="home-card">
32 - <div class="home-card-icon"><svg class="ico" style="width:1em;height:1em;vertical-align:-0.125em;" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg></div>
69 + <div class="home-card-icon"><svg class="ico" viewBox="0 0 24 24"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg></div>
33 33   <div class="home-card-title">マイページ</div>
34 34   <div class="home-card-desc">プロフィール・投稿履歴を確認</div>
35 35   </a>
... ... @@ -36,11 +36,8 @@
36 36   #end
37 37  </div>
38 38  
39 -<div style="margin-top:32px;">
40 - <h2 style="display:flex;align-items:center;gap:8px;font-size:1.5em;color:var(--text-dark);margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid var(--primary-bg);">
41 - <svg style="width:1.1em;height:1.1em;display:inline-block;vertical-align:-0.15em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;" viewBox="0 0 24 24"><path d="M3 11l18-5v12L3 13v-2z"/><path d="M11.6 16.8a3 3 0 11-5.8-1.6"/></svg>
42 - 最近の更新
43 - </h2>
76 +<div class="home-recent-section">
77 + <h2 class="home-section-title">最近の更新</h2>
44 44   #set($recentDocs = $xwiki.searchDocuments("where (doc.fullName like 'Main.%' or doc.fullName like 'Schools.%') and doc.fullName not like '%.WebPreferences' order by doc.date desc", 10))
45 45   #if($recentDocs.size() > 0)
46 46   <ul class="recent-changes-list">
... ... @@ -47,23 +47,42 @@
47 47   #foreach($docName in $recentDocs)
48 48   #set($rdoc = $xwiki.getDocument($docName))
49 49   <li class="recent-changes-item">
50 - <span class="recent-changes-icon">
51 - <svg style="width:1em;height:1em;display:inline-block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
52 - </span>
53 - <div>
54 - <div class="recent-changes-title"><a href="$rdoc.getURL('view')">$escapetool.xml($rdoc.displayTitle)</a></div>
55 - <div class="recent-changes-meta">$xwiki.formatDate($rdoc.date, 'yyyy/MM/dd HH:mm')</div>
56 - </div>
84 + <span class="recent-changes-icon"></span>
85 + <span class="recent-changes-title"><a href="$rdoc.getURL('view')">$!escapetool.xml($rdoc.displayTitle)</a> が更新されました</span>
86 + <span class="recent-changes-meta" data-ts="$rdoc.date.time">$datetool.format('yyyy/MM/dd HH:mm', $rdoc.date)</span>
57 57   </li>
58 58   #end
59 59   </ul>
60 60   #else
61 - <div style="text-align:center;padding:40px 20px;color:var(--text-light);">
62 - <svg style="width:3em;height:3em;display:block;margin:0 auto 12px;opacity:0.4;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
91 + <div class="home-empty-state">
92 + <svg class="home-empty-icon" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
63 63   <p>まだ更新はありません。</p>
64 - <p style="font-size:0.9em;">学校ページを作成して、活動を共有しましょう!</p>
94 + <p class="home-empty-sub">学校ページを作成して、活動を共有しましょう!</p>
65 65   </div>
66 66   #end
67 67  </div>
98 +
99 +<div class="home-bottom-cta">
100 + <a href="$xwiki.getURL('Schools.WebHome', 'view')" class="home-bottom-cta-btn">
101 + <svg class="ico" viewBox="0 0 24 24"><path d="M4 19.5A2.5 2.5 0 016.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/></svg>
102 + 学校一覧を見る
103 + <svg class="ico ico-fixed-12" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg>
104 + </a>
105 +</div>
106 +
107 +<script>
108 +// タイムスタンプをユーザーのローカルタイムゾーンで表示
109 +document.querySelectorAll('[data-ts]').forEach(function(el) {
110 + var ts = parseInt(el.getAttribute('data-ts'));
111 + if (isNaN(ts)) return;
112 + var d = new Date(ts);
113 + var y = d.getFullYear();
114 + var m = ('0' + (d.getMonth() + 1)).slice(-2);
115 + var day = ('0' + d.getDate()).slice(-2);
116 + var h = ('0' + d.getHours()).slice(-2);
117 + var min = ('0' + d.getMinutes()).slice(-2);
118 + el.textContent = y + '/' + m + '/' + day + ' ' + h + ':' + min;
119 +});
120 +</script>
68 68  {{/html}}
69 69  {{/velocity}}