Changes for page 学校一覧
Last modified by Super Admin on 2026/03/23 10:15
From version
22.1
edited by Super Admin
on 2026/03/13 00:18
on 2026/03/13 00:18
Change comment:
There is no comment for this version
To version
37.1
edited by Super Admin
on 2026/03/23 10:15
on 2026/03/23 10:15
Change comment:
There is no comment for this version
Summary
Details
- Page properties
-
- Content
-
... ... @@ -3,19 +3,50 @@ 3 3 ## ソート: 更新順(デフォルト)/ 都道府県順 4 4 ## カード形式で表示し、活動数・投稿数・最終更新日を表示 5 5 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 + 6 6 #set($sortParam = $!request.sort) 7 7 #if(!$sortParam || $sortParam == '') 8 8 #set($sortParam = 'updated') 9 9 #end 10 10 11 -## ソート順に応じたXWQLクエリ 12 -#if($sortParam == 'pref') 13 - #set($query = $services.query.xwql("from doc.object(SeitokaiCode.SchoolClass) as school order by school.prefecture, school.schoolName")) 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 14 14 #else 15 - ## 更新順: ドキュメントの最終更新日でソート(降順) 16 - #set($query = $services.query.xwql("from doc.object(SeitokaiCode.SchoolClass) as school order by doc.date desc")) 31 + ## 一般: 非表示校を除外 32 + #if($sortParam == 'pref') 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")) 34 + #else 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")) 36 + #end 17 17 #end 18 18 #set($results = $query.execute()) 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) 19 19 20 20 {{html clean="false"}} 21 21 <h1 class="home-section-title">登録されている学校</h1> ... ... @@ -32,6 +32,11 @@ 32 32 class="sort-toggle #if($sortParam == 'pref')active#end"> 33 33 <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> 都道府県順 34 34 </a> 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 35 35 </div> 36 36 </div> 37 37 {{/html}} ... ... @@ -59,13 +59,15 @@ 59 59 #set($actCount = $schoolDoc.getObjects('SeitokaiCode.ActivityClass').size()) 60 60 ## 投稿数をカウント(全活動の投稿合計) 61 61 #set($postCount = $schoolDoc.getObjects('SeitokaiCode.ActivityPostClass').size()) 62 - ## 特色ある活動の数 をカウント98 + ## 特色ある活動の数とタイトルを収集 63 63 #set($schoolActivities = $schoolDoc.getObjects('SeitokaiCode.ActivityClass')) 64 64 #set($featuredCount = 0) 101 + #set($featuredTitles = []) 65 65 #if($schoolActivities) 66 66 #foreach($sa in $schoolActivities) 67 67 #if($!sa.getValue('featured') == '1') 68 68 #set($featuredCount = $featuredCount + 1) 106 + #set($discard = $featuredTitles.add($!sa.getValue('title'))) 69 69 #end 70 70 #end 71 71 #end ... ... @@ -78,10 +78,14 @@ 78 78 </div> 79 79 #end 80 80 81 - <a href="$schoolDoc.getURL('view')" class="school-card"> 119 + #set($sHidden = $!schoolObj.getValue('hidden')) 120 + <a href="$schoolDoc.getURL('view')" class="school-card #if($sHidden == 1)school-card-hidden#end"> 82 82 <div class="school-card-body"> 83 83 <div class="school-card-header-row"> 84 84 <div class="school-card-name">$!escapetool.xml($sName)</div> 124 + #if($sHidden == 1) 125 + <span class="badge-hidden">非表示</span> 126 + #end 85 85 #if($sEst) 86 86 <span class="school-card-badge #if($sEst == '公立')public#elseif($sEst == '私立')private#else national#end">$!escapetool.xml($sEst)</span> 87 87 #end ... ... @@ -91,10 +91,12 @@ 91 91 #if($sCoed) ・ $!escapetool.xml($sCoed)#end 92 92 #if($sSystem && !$sSystem.isEmpty()) ・ #foreach($__sys in $sSystem)#if($foreach.count > 1)・#end$!escapetool.xml($__sys)#end#end 93 93 </div> 94 - ## 特色ある活動 バッジ136 + ## 特色ある活動タイトル 95 95 #if($featuredCount > 0) 96 - <div class="school-card-featured-wrap"> 97 - <span class="badge-featured"><svg class="ico ico-fixed-14" 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> 特色ある活動 ${featuredCount}件</span> 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 98 98 </div> 99 99 #end 100 100 <div class="school-card-stats">