Wiki source code of 学校一覧

Last modified by Super Admin on 2026/03/23 10:15

Hide last authors
Super Admin 1.1 1 {{velocity}}
2 ## ===== 学校一覧ページ =====
3 ## ソート: 更新順(デフォルト)/ 都道府県順
4 ## カード形式で表示し、活動数・投稿数・最終更新日を表示
5
Super Admin 23.1 6 ## --- 閲覧者情報(非表示校フィルタ用) ---
7 #set($listViewerUser = $xcontext.user)
8 #set($isListAdmin = false)
9 #if($listViewerUser != 'XWiki.XWikiGuest')
10 #set($listViewerDoc = $xwiki.getDocument($listViewerUser))
11 #set($listViewerAccountType = $!listViewerDoc.getValue('accountType'))
12 #if($listViewerAccountType == 'admin')
13 #set($isListAdmin = true)
14 #end
15 #end
16
Super Admin 1.1 17 #set($sortParam = $!request.sort)
18 #if(!$sortParam || $sortParam == '')
19 #set($sortParam = 'updated')
20 #end
21
Super Admin 23.1 22 ## ソート順に応じたXWQLクエリ(非表示校フィルタ付き)
23 #if($isListAdmin)
24 ## 管理者: 全校表示
25 #if($sortParam == 'pref')
26 #set($query = $services.query.xwql("from doc.object(SeitokaiCode.SchoolClass) as school order by school.prefecture, school.schoolName"))
27 #else
28 #set($query = $services.query.xwql("from doc.object(SeitokaiCode.SchoolClass) as school order by doc.date desc"))
29 #end
Super Admin 1.1 30 #else
Super Admin 23.1 31 ## 一般: 非表示校を除外
32 #if($sortParam == 'pref')
Super Admin 24.1 33 #set($query = $services.query.xwql("from doc.object(SeitokaiCode.SchoolClass) as school where (school.hidden <> 1 or school.hidden is null) order by school.prefecture, school.schoolName"))
Super Admin 23.1 34 #else
Super Admin 24.1 35 #set($query = $services.query.xwql("from doc.object(SeitokaiCode.SchoolClass) as school where (school.hidden <> 1 or school.hidden is null) order by doc.date desc"))
Super Admin 23.1 36 #end
Super Admin 1.1 37 #end
38 #set($results = $query.execute())
Super Admin 37.1 39 ## サンプル高等学校を常に先頭に表示
40 #set($samplePageName = 'Schools.D100000000001.WebHome')
41 #set($sortedResults = [])
42 #foreach($r in $results)
43 #if($r == $samplePageName)
44 #set($discard = $sortedResults.add(0, $r))
45 #else
46 #set($discard = $sortedResults.add($r))
47 #end
48 #end
49 #set($results = $sortedResults)
Super Admin 1.1 50
51 {{html clean="false"}}
Super Admin 32.1 52 <h1 class="home-section-title">登録されている学校</h1>
Super Admin 11.1 53 <div class="sort-header">
54 <div class="school-count">
Super Admin 1.1 55 $results.size() 校が登録されています
56 </div>
Super Admin 11.1 57 <div class="sort-toggle-group">
Super Admin 1.1 58 <a href="$doc.getURL('view', 'sort=updated')"
Super Admin 11.1 59 class="sort-toggle #if($sortParam == 'updated')active#end">
Super Admin 6.1 60 <svg class="ico ico-fixed-14" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg> 更新順
Super Admin 1.1 61 </a>
62 <a href="$doc.getURL('view', 'sort=pref')"
Super Admin 11.1 63 class="sort-toggle #if($sortParam == 'pref')active#end">
Super Admin 6.1 64 <svg class="ico ico-fixed-14" viewBox="0 0 24 24"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 都道府県順
Super Admin 1.1 65 </a>
Super Admin 32.1 66 #if($listViewerUser != 'XWiki.XWikiGuest')
67 <a href="/bin/SeitokaiCode/CreateSchool" class="sort-toggle" style="margin-left:var(--sp-2); color:var(--primary); border-color:var(--primary);">
68 <svg class="ico ico-fixed-14" viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg> 学校を追加
69 </a>
70 #end
Super Admin 1.1 71 </div>
72 </div>
73 {{/html}}
74
75 #if($results.size() > 0)
76
77 ## 都道府県順の場合、都道府県グループヘッダーを表示
78 #set($currentPref = '')
79
80 {{html clean="false"}}
Super Admin 11.1 81 <div class="school-card-grid">
Super Admin 1.1 82 #foreach($docName in $results)
83 #set($schoolDoc = $xwiki.getDocument($docName))
84 #set($schoolObj = $schoolDoc.getObject('SeitokaiCode.SchoolClass'))
85 #if($schoolObj)
86 #set($sName = $!schoolObj.getValue('schoolName'))
87 #set($sPref = $!schoolObj.getValue('prefecture'))
88 #set($sCity = $!schoolObj.getValue('city'))
89 #set($sType = $!schoolObj.getValue('schoolType'))
90 #set($sEst = $!schoolObj.getValue('establishment'))
91 #set($sCoed = $!schoolObj.getValue('coeducation'))
92 #set($sSystem = $!schoolObj.getValue('schoolSystem'))
93 #set($lastUpdate = $datetool.format('yyyy/MM/dd', $schoolDoc.date))
94 ## 活動数をカウント
95 #set($actCount = $schoolDoc.getObjects('SeitokaiCode.ActivityClass').size())
96 ## 投稿数をカウント(全活動の投稿合計)
97 #set($postCount = $schoolDoc.getObjects('SeitokaiCode.ActivityPostClass').size())
Super Admin 25.1 98 ## 特色ある活動の数とタイトルを収集
Super Admin 1.1 99 #set($schoolActivities = $schoolDoc.getObjects('SeitokaiCode.ActivityClass'))
100 #set($featuredCount = 0)
Super Admin 25.1 101 #set($featuredTitles = [])
Super Admin 1.1 102 #if($schoolActivities)
103 #foreach($sa in $schoolActivities)
104 #if($!sa.getValue('featured') == '1')
105 #set($featuredCount = $featuredCount + 1)
Super Admin 25.1 106 #set($discard = $featuredTitles.add($!sa.getValue('title')))
Super Admin 1.1 107 #end
108 #end
109 #end
110
111 ## 都道府県グループヘッダー(都道府県順の場合)
112 #if($sortParam == 'pref' && $sPref != $currentPref)
113 #set($currentPref = $sPref)
Super Admin 11.1 114 <div class="pref-group-header">
115 <span class="pref-group-label"><svg class="ico ico-fixed-16" viewBox="0 0 24 24"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> $!escapetool.xml($currentPref)</span>
Super Admin 1.1 116 </div>
117 #end
118
Super Admin 23.1 119 #set($sHidden = $!schoolObj.getValue('hidden'))
120 <a href="$schoolDoc.getURL('view')" class="school-card #if($sHidden == 1)school-card-hidden#end">
Super Admin 11.1 121 <div class="school-card-body">
122 <div class="school-card-header-row">
123 <div class="school-card-name">$!escapetool.xml($sName)</div>
Super Admin 23.1 124 #if($sHidden == 1)
125 <span class="badge-hidden">非表示</span>
126 #end
Super Admin 1.1 127 #if($sEst)
Super Admin 11.1 128 <span class="school-card-badge #if($sEst == '公立')public#elseif($sEst == '私立')private#else national#end">$!escapetool.xml($sEst)</span>
Super Admin 1.1 129 #end
130 </div>
Super Admin 11.1 131 <div class="school-card-meta">
Super Admin 5.1 132 $!escapetool.xml($sPref) $!escapetool.xml($sCity)
133 #if($sCoed) ・ $!escapetool.xml($sCoed)#end
Super Admin 22.1 134 #if($sSystem && !$sSystem.isEmpty()) ・ #foreach($__sys in $sSystem)#if($foreach.count > 1)・#end$!escapetool.xml($__sys)#end#end
Super Admin 1.1 135 </div>
Super Admin 28.1 136 ## 特色ある活動タイトル
Super Admin 1.1 137 #if($featuredCount > 0)
Super Admin 25.1 138 <div class="school-card-featured-titles">
139 #foreach($ft in $featuredTitles)
140 <span class="featured-title-item"><svg class="ico ico-fixed-12" viewBox="0 0 24 24" fill="currentColor" stroke="none"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg> $!escapetool.xml($ft)</span>
141 #end
142 </div>
Super Admin 1.1 143 #end
Super Admin 11.1 144 <div class="school-card-stats">
145 <span><svg class="ico ico-fixed-14" 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> 活動 <span class="num">$actCount</span>件</span>
146 <span><svg class="ico ico-fixed-14" viewBox="0 0 24 24"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg> 投稿 <span class="num">$postCount</span>件</span>
147 <span><svg class="ico ico-fixed-14" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg> 更新 $lastUpdate</span>
Super Admin 1.1 148 </div>
149 </div>
150 </a>
151 #end
152 #end
153 </div>
154 {{/html}}
155
156 #else
157 //まだ学校ページが登録されていません。//
158
159 [[学校ページを作成する>>SeitokaiCode.CreateSchool]]
160 #end
161 {{/velocity}}