Changes for page 学校ページ テンプレート
Last modified by Super Admin on 2026/04/05 18:59
From version
114.1
edited by Super Admin
on 2026/03/27 03:45
on 2026/03/27 03:45
Change comment:
There is no comment for this version
To version
118.1
edited by Super Admin
on 2026/04/01 17:36
on 2026/04/01 17:36
Change comment:
There is no comment for this version
Summary
Details
- Page properties
-
- Content
-
... ... @@ -387,7 +387,7 @@ 387 387 #end 388 388 #if($canEditSchool) 389 389 <div style="text-align:right; margin-bottom:12px;"> 390 - <a href="$doc.getURL('view', 'sheet=SeitokaiCode.SchoolEditForm')" class="btn-school-edit"><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> 基本情報を編集</a>390 + <a href="$doc.getURL('view', 'sheet=SeitokaiCode.SchoolEditForm')" class="btn-school-edit"><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> 情報を編集</a> 391 391 </div> 392 392 #end 393 393 ... ... @@ -1050,22 +1050,42 @@ 1050 1050 {{/html}} 1051 1051 1052 1052 ## 活動を「年度降順 + 特色あり先頭」で並び替え 1053 -## Step1: fySet から年度を降順ソート( $sorttoolを使用)1053 +## Step1: fySet から年度を降順ソート(Velocity ネイティブ実装) 1054 1054 #set($fyNums = []) 1055 1055 #foreach($fy in $fySet) 1056 1056 #if($fy && $fy != '' && $fy != 'unknown') 1057 - #set($discard = $fyNums.add($fy)) 1057 + #set($fyInt = $mathtool.toInteger($fy)) 1058 + #if($fyInt) 1059 + #set($discard = $fyNums.add($fyInt)) 1060 + #end 1058 1058 #end 1059 1059 #end 1060 -#set($fySorted = $sorttool.sort($fyNums)) 1061 -#if(!$fySorted)#set($fySorted = $fyNums)#end 1063 +## 最大値を順番に取り出して降順リストを構築(最大20年度まで対応) 1062 1062 #set($fyDesc = []) 1063 -#foreach($fy in $fySorted) 1064 - #set($discard = $fyDesc.add(0, $fy)) 1065 +#set($fyRemaining = []) 1066 +#foreach($fy in $fyNums) 1067 + #set($discard = $fyRemaining.add($fy)) 1065 1065 #end 1066 -#if($fySet.contains('unknown')) 1067 - #set($discard = $fyDesc.add('unknown')) 1069 +#foreach($dummy in [1..20]) 1070 + #if($fyRemaining.isEmpty())#break#end 1071 + #set($fyMax = $fyRemaining.get(0)) 1072 + #foreach($fy in $fyRemaining) 1073 + #if($fy > $fyMax)#set($fyMax = $fy)#end 1074 + #end 1075 + #set($discard = $fyDesc.add($fyMax)) 1076 + #set($fyNextRem = []) 1077 + #set($fyMaxRemoved = false) 1078 + #foreach($fy in $fyRemaining) 1079 + #if(!$fyMaxRemoved && $fy == $fyMax) 1080 + #set($fyMaxRemoved = true) 1081 + #else 1082 + #set($discard = $fyNextRem.add($fy)) 1083 + #end 1084 + #end 1085 + #set($fyRemaining = $fyNextRem) 1068 1068 #end 1087 +## 年度未設定の活動は末尾に表示(fySetに'unknown'は入らないため無条件追加) 1088 +#set($discard = $fyDesc.add('unknown')) 1069 1069 ## Step2: 年度降順で featured → normal の順にインデックスを収集 1070 1070 #set($orderedActivityIndices = []) 1071 1071 #foreach($curFY in $fyDesc) ... ... @@ -1598,7 +1598,7 @@ 1598 1598 } 1599 1599 // ページ読み込み時の初期化 1600 1600 document.addEventListener('DOMContentLoaded', function() { 1601 - // 年度タブを降順にソート(「全期間」タブは 末尾に固定)1621 + // 年度タブを降順にソート(「全期間」タブは先頭に固定) 1602 1602 var tabContainer = document.querySelector('.activity-fy-tabs'); 1603 1603 if (tabContainer) { 1604 1604 var tabs = Array.from(tabContainer.querySelectorAll('.activity-fy-tab')); ... ... @@ -1615,9 +1615,9 @@ 1615 1615 var bYear = parseInt(b.textContent) || 0; 1616 1616 return bYear - aYear; 1617 1617 }); 1618 - // DOM再配置 1619 - fyTabs.forEach(function(t) { tabContainer.appendChild(t); }); 1638 + // DOM再配置(全期間を先頭、年度タブを降順で続ける) 1620 1620 if (allTab) { tabContainer.appendChild(allTab); } 1640 + fyTabs.forEach(function(t) { tabContainer.appendChild(t); }); 1621 1621 } 1622 1622 // デフォルトで全期間を表示 1623 1623 var defaultTab = document.querySelector('.activity-fy-tab.active');