This commit is contained in:
parent
c13b02c358
commit
c30675cc14
|
|
@ -760,13 +760,13 @@
|
|||
$(document).ready(function() {
|
||||
removeEmptyTitles();
|
||||
});
|
||||
$(".w-annc__img-wrap a").each(function () {
|
||||
var $this = $(this);
|
||||
// 確保 <a> 內沒有文字節點 (避免重複添加)
|
||||
if ($this.text().trim() === "") {
|
||||
$this.append('<span class="sr-only">公告圖片</span>');
|
||||
}
|
||||
});
|
||||
// $(".w-annc__img-wrap a").each(function () {
|
||||
// var $this = $(this);
|
||||
// // 確保 <a> 內沒有文字節點 (避免重複添加)
|
||||
// if ($this.text().trim() === "") {
|
||||
// $this.append('<span class="sr-only">公告圖片</span>');
|
||||
// }
|
||||
// });
|
||||
$(".widget-link__widget-title").each(function () {
|
||||
if ($(this).text().trim() === "") {
|
||||
$(this).append('<span class="sr-only">公告標題</span>');
|
||||
|
|
@ -835,7 +835,7 @@
|
|||
var isLinkImage = $parentA.length > 0 && $parentA.text().replace(/\u00a0/g, '').trim() === "";
|
||||
|
||||
// --- 1. 處理「裝飾性圖片」標註 ---
|
||||
if (currentAlt === "裝飾圖片" || currentTitle === "裝飾圖片") {
|
||||
if (currentAlt === "announcement image" || currentAlt === "裝飾圖片" || currentTitle === "裝飾圖片") {
|
||||
$img.attr('alt', '');
|
||||
$img.removeAttr('title');
|
||||
return;
|
||||
|
|
@ -883,10 +883,10 @@
|
|||
// 有連結目的之所有a標籤的無障礙處理
|
||||
$(function() {
|
||||
/**
|
||||
* 全站無障礙 AA 級補強 (多語系偵測版)
|
||||
* 全站無障礙 AA 級補強 (整合 HM1240400C 與 HM1240401C 規範)
|
||||
*/
|
||||
function fixAccessibilityAll() {
|
||||
// --- 0. 網址參數判斷 ---
|
||||
// --- 0. 環境與語言偵測 ---
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
var isEditMode = urlParams.get('editmode') === 'on';
|
||||
|
||||
|
|
@ -897,7 +897,9 @@
|
|||
langBtn: isEn ? 'Open language menu in this window' : '在本視窗開啟語言選單',
|
||||
newWin: isEn ? '(Open in new window)' : '(在新視窗開啟)',
|
||||
selfWin: isEn ? '(Open in this window)' : '(在本視窗開啟)',
|
||||
link: isEn ? 'Link' : '連結'
|
||||
link: isEn ? 'Link' : '連結',
|
||||
openImg: isEn ? 'Open image' : '開啟圖片內容',
|
||||
sort: isEn ? 'Sort' : '排序'
|
||||
};
|
||||
|
||||
// --- Part 1: 語言選單修正 ---
|
||||
|
|
@ -907,22 +909,62 @@
|
|||
$langBtn.removeAttr('aria-label');
|
||||
}
|
||||
|
||||
// --- Part 2: 全站連結處理 ---
|
||||
// --- Part 2: 全站連結與圖片邏輯處理 ---
|
||||
$('a').each(function() {
|
||||
var $a = $(this);
|
||||
|
||||
// 【條件判斷:若 a 標籤的 class 等於或包含 navbar-brand,則不執行此 function】
|
||||
if ($a.hasClass('navbar-brand') || $a.hasClass('orbit-bar-logo')) {
|
||||
return;
|
||||
}
|
||||
var href = ($a.attr('href') || '').toLowerCase();
|
||||
if (!href || href.startsWith('javascript:')) return;
|
||||
|
||||
// 清理 與 空白
|
||||
var linkText = $a.text().replace(/\u00a0/g, '').trim();
|
||||
var $img = $a.find('img');
|
||||
var $icons = $a.find('i, svg'); // 偵測其他元素 (如 FontAwesome, SVG)
|
||||
var currentTitle = ($a.attr('title') || '').trim();
|
||||
|
||||
// --- 【新增修正:隱藏空連結】 ---
|
||||
// 若網址沒有 editmode=on 時,判定 a 裡面文字為空且沒有圖片,則隱藏
|
||||
if (!isEditMode && linkText === "" && $img.length === 0) {
|
||||
// --- 【修正 1:隱藏空連結】 ---
|
||||
if (!isEditMode && linkText === "" && $img.length === 0 && $icons.length === 0) {
|
||||
$a.hide();
|
||||
return; // 跳過後續處理
|
||||
return;
|
||||
}
|
||||
|
||||
// --- 【修正 2:符合 HM1240401C 的文字與標題防禦】 ---
|
||||
// 若連結文字為空、或文字內容為無效的 URL 路徑,自動補上語意文字
|
||||
if (linkText === "" || linkText.startsWith('/') || linkText.includes('?')) {
|
||||
var accessibleText = i18n.link; // 預設名稱
|
||||
|
||||
// 智慧判斷:若為排序連結,可顯示為「排序」
|
||||
if (href.includes('sort')) {
|
||||
accessibleText = i18n.sort;
|
||||
}
|
||||
|
||||
var $span = $a.find('span');
|
||||
if ($span.length > 0) {
|
||||
$span.text(accessibleText);
|
||||
} else {
|
||||
$a.append('<span>' + accessibleText + '</span>');
|
||||
$span = $a.find('span').last();
|
||||
}
|
||||
|
||||
// 套用視覺隱藏但螢幕閱讀器可讀取之樣式
|
||||
$span.css({
|
||||
'display': 'inline-block',
|
||||
'position': 'absolute',
|
||||
'width': '1px',
|
||||
'height': '1px',
|
||||
'padding': '0',
|
||||
'margin': '-1px',
|
||||
'overflow': 'hidden',
|
||||
'clip': 'rect(0, 0, 0, 0)',
|
||||
'white-space': 'nowrap',
|
||||
'border': '0'
|
||||
});
|
||||
|
||||
linkText = accessibleText; // 更新變數以便後續比對
|
||||
}
|
||||
|
||||
// A. 視窗動作規範
|
||||
|
|
@ -936,32 +978,69 @@
|
|||
fileExt = fileMatches[1].toLowerCase();
|
||||
}
|
||||
|
||||
// C. 智慧修正與標題補充
|
||||
// C. 智慧修正標題 (移除冗餘資訊)
|
||||
var hasBadSymbol = currentTitle.includes('()') ||
|
||||
currentTitle.includes('另開新視窗') ||
|
||||
currentTitle.includes('Open in new window');
|
||||
|
||||
currentTitle.includes('另開新視窗') ||
|
||||
currentTitle.includes('Open in new window') ||
|
||||
currentTitle.includes('/uploads/');
|
||||
|
||||
// 如果 title 是 URL,視為壞標籤並重置
|
||||
if (currentTitle.startsWith('/') || currentTitle.includes('?')) {
|
||||
currentTitle = "";
|
||||
}
|
||||
|
||||
// D. 處理【HM1240400C】:圖片與文字毗鄰時,替代文字只能有一份
|
||||
if (($img.length > 0 || $icons.length > 0) && linkText !== "") {
|
||||
if ($img.length > 0) {
|
||||
// 強制圖片設為裝飾性
|
||||
$img.attr('alt', '');
|
||||
}
|
||||
|
||||
// 針對「視覺隱藏但存在於 DOM」的文字
|
||||
var $hiddenSpans = $a.find('span').filter(function() {
|
||||
return $(this).css('display') === 'none' || $(this).attr('style')?.includes('display: none');
|
||||
});
|
||||
|
||||
if ($hiddenSpans.length > 0) {
|
||||
$hiddenSpans.each(function() {
|
||||
var $span = $(this);
|
||||
if ($span.text().includes('/uploads/')) {
|
||||
$span.text(i18n.openImg);
|
||||
}
|
||||
|
||||
// 轉換為無障礙友善的隱藏樣式
|
||||
$span.css({
|
||||
'display': 'inline-block',
|
||||
'position': 'absolute',
|
||||
'width': '1px',
|
||||
'height': '1px',
|
||||
'padding': '0',
|
||||
'margin': '-1px',
|
||||
'overflow': 'hidden',
|
||||
'clip': 'rect(0, 0, 0, 0)',
|
||||
'white-space': 'nowrap',
|
||||
'border': '0'
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// E. 重新計算標題與替代文字 (針對不同情境)
|
||||
if (linkText === "" && $img.length > 0) {
|
||||
// 【純圖片連結】替代文字邏輯
|
||||
var rawAlt = ($img.attr('alt') || '').trim();
|
||||
var forbidden = ['這是一張圖片', '圖片', 'image', 'photo', '圖', ''];
|
||||
var imgAlt = forbidden.some(function(txt) { return rawAlt.toLowerCase() === txt; })
|
||||
? ($a.attr('aria-label') || i18n.link) : rawAlt;
|
||||
|
||||
var fileInfo = fileExt ? '[' + fileExt.toUpperCase() + '] ' : '';
|
||||
|
||||
// 確保具備標題與圖片 alt
|
||||
$a.attr('title', (fileInfo + imgAlt + " " + windowTask).trim());
|
||||
$img.attr('alt', imgAlt);
|
||||
}
|
||||
else if (linkText !== "") {
|
||||
// 【有文字連結】
|
||||
if (fileExt !== "" || hasBadSymbol || currentTitle === "") {
|
||||
var isTag = $a.hasClass('label') || $a.hasClass('tag') || $a.find('[class*="tag"]').length > 0;
|
||||
|
||||
if (fileExt !== "" || hasBadSymbol || currentTitle === "" || currentTitle.includes('/uploads/')) {
|
||||
if (fileExt !== "") {
|
||||
$a.attr('title', linkText + " ." + fileExt + " " + windowTask);
|
||||
} else if (linkText.length <= 6 || isTag) {
|
||||
} else if (linkText.length <= 8) {
|
||||
$a.attr('title', linkText + " " + windowTask);
|
||||
} else {
|
||||
$a.attr('title', windowTask);
|
||||
|
|
@ -969,30 +1048,22 @@
|
|||
}
|
||||
}
|
||||
|
||||
// --- 修正後的 Part D 最終清理 ---
|
||||
$a.removeAttr('aria-label');
|
||||
|
||||
// 只有當「真正可見的文字」存在時,才將圖片設為裝飾性
|
||||
// 使用 clone() 移除隱藏元件後再計算文字,確保準確度
|
||||
var visibleText = $a.clone().find(':hidden, style, script').remove().end().text().replace(/\u00a0/g, '').trim();
|
||||
|
||||
if (visibleText !== "" && $img.length > 0) {
|
||||
$img.attr('alt', '');
|
||||
} else {
|
||||
// 如果文字是隱藏的 (如你的範例),則必須保留或補強圖片 alt
|
||||
var rawAlt = ($img.attr('alt') || '').trim();
|
||||
if (rawAlt === "") {
|
||||
// 如果連圖片 alt 都沒寫,就從 a 的 title 抓
|
||||
var cleanTitle = currentTitle.replace(/\(在本視窗開啟\)|\(在新視窗開啟\)/g, '').trim();
|
||||
$img.attr('alt', cleanTitle || i18n.link);
|
||||
}
|
||||
// 【HM1240401C 補強】若連結包含其他多媒體內容 (如 i 標籤、SVG),需補齊 title 屬性
|
||||
var hasOtherContent = ($img.length > 0 || $icons.length > 0);
|
||||
if (hasOtherContent && currentTitle === "") {
|
||||
var newTitle = linkText + " " + windowTask;
|
||||
$a.attr('title', newTitle.trim());
|
||||
}
|
||||
|
||||
// F. 最終清理:移除冗餘 label
|
||||
$a.removeAttr('aria-label');
|
||||
});
|
||||
}
|
||||
|
||||
// 延遲執行確保 DOM 載入完成
|
||||
setTimeout(function() {
|
||||
fixAccessibilityAll();
|
||||
}, 600);
|
||||
}, 800);
|
||||
});
|
||||
|
||||
// if (location.href.search('editmode=on') === -1) {
|
||||
|
|
@ -1011,66 +1082,87 @@
|
|||
// });
|
||||
// });
|
||||
// }
|
||||
$(function() {
|
||||
function smartFixIcons() {
|
||||
$('i').each(function() {
|
||||
var $icon = $(this);
|
||||
var $parent = $icon.parent();
|
||||
$(function() {
|
||||
function smartFixIcons() {
|
||||
var isEn = $('html').attr('lang') === 'en';
|
||||
|
||||
// 1. 基本安全:所有圖示先對螢幕閱讀器隱藏 (避免讀出 Unicode 亂碼)
|
||||
$icon.attr('aria-hidden', 'true');
|
||||
var labels = {
|
||||
calendar : isEn ? 'Date: ' : '日期:',
|
||||
user : isEn ? 'Author: ' : '發布者:',
|
||||
tag : isEn ? 'Tag: ' : '標籤:',
|
||||
clock : isEn ? 'Time: ' : '時間:',
|
||||
location : isEn ? 'Location: ' : '地點:',
|
||||
phone : isEn ? 'Phone: ' : '電話:',
|
||||
envelope : isEn ? 'Email: ' : '信箱:',
|
||||
folder : isEn ? 'Category: ' : '分類:',
|
||||
eye : isEn ? 'Views: ' : '瀏覽次數:',
|
||||
download : isEn ? 'Download: ' : '下載檔案:',
|
||||
search : isEn ? 'Search' : '搜尋',
|
||||
bars : isEn ? 'Menu' : '選單',
|
||||
print : isEn ? 'Print this page': '列印此頁',
|
||||
share : isEn ? 'Share' : '分享至社群',
|
||||
close : isEn ? 'Close' : '關閉視窗'
|
||||
};
|
||||
|
||||
// 2. 檢查:如果已經有 aria-label 或旁邊已有 sr-only,就不重複處理
|
||||
if ($icon.attr('aria-label') || $icon.next('.sr-only').length > 0 || $parent.find('.sr-only').length > 0) {
|
||||
return;
|
||||
}
|
||||
$('i').each(function() {
|
||||
var $icon = $(this);
|
||||
var $parent = $icon.parent();
|
||||
|
||||
var cls = ($icon.attr('class') || '').toLowerCase();
|
||||
var labelText = '';
|
||||
// 1. 所有圖示先對螢幕閱讀器隱藏
|
||||
$icon.attr('aria-hidden', 'true');
|
||||
|
||||
// --- 策略 A:常見資訊型圖示 (自動識別內容意義) ---
|
||||
if (cls.includes('calendar')) labelText = '日期:';
|
||||
else if (cls.includes('user') || cls.includes('male')) labelText = '發布者:';
|
||||
else if (cls.includes('tag')) labelText = '標籤:';
|
||||
else if (cls.includes('clock') || cls.includes('time')) labelText = '時間:';
|
||||
else if (cls.includes('map-marker') || cls.includes('location')) labelText = '地點:';
|
||||
else if (cls.includes('phone')) labelText = '電話:';
|
||||
else if (cls.includes('envelope') || cls.includes('mail')) labelText = '信箱:';
|
||||
else if (cls.includes('folder')) labelText = '分類:';
|
||||
else if (cls.includes('eye')) labelText = '瀏覽次數:';
|
||||
else if (cls.includes('download')) labelText = '下載檔案:';
|
||||
|
||||
// --- 策略 B:功能性按鈕 (如果 i 放在 <a> 或 <button> 裡面且容器沒文字) ---
|
||||
var $container = $icon.closest('a, button');
|
||||
if ($container.length > 0 && $container.text().trim() === "") {
|
||||
// 如果容器裡面什麼字都沒有,這是一個「純圖示按鈕」
|
||||
// 我們嘗試抓取容器的 title 作為 label
|
||||
var btnTitle = $container.attr('title');
|
||||
if (btnTitle) {
|
||||
labelText = btnTitle;
|
||||
} else if (cls.includes('search')) labelText = '搜尋';
|
||||
else if (cls.includes('bars') || cls.includes('navicon')) labelText = '選單';
|
||||
else if (cls.includes('print')) labelText = '列印此頁';
|
||||
else if (cls.includes('share')) labelText = '分享至社群';
|
||||
else if (cls.includes('close') || cls.includes('times')) labelText = '關閉視窗';
|
||||
}
|
||||
// 特判:.close-screen-btn 內的圖示,移除無關的 sr-only 並設正確 aria-label
|
||||
if ($parent.hasClass('close-screen-btn')) {
|
||||
$parent.find('.sr-only').remove();
|
||||
$parent.attr('aria-label', '關閉公告視窗');
|
||||
return;
|
||||
}
|
||||
|
||||
// --- 3. 執行補強 ---
|
||||
if (labelText !== '') {
|
||||
// 如果是按鈕內部,用 aria-label 補強容器
|
||||
if ($container.length > 0 && $container.text().trim() === "") {
|
||||
$container.attr('aria-label', labelText);
|
||||
} else {
|
||||
// 如果是資訊列表,在 i 後面插入 sr-only
|
||||
$icon.after('<span class="sr-only">' + labelText + '</span>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
// 2. 已有 aria-label 或 sr-only 就不重複處理
|
||||
if ($icon.attr('aria-label') || $icon.next('.sr-only').length > 0 || $parent.find('.sr-only').length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 延遲執行確保內容渲染完成
|
||||
setTimeout(smartFixIcons, 500);
|
||||
});
|
||||
var cls = ($icon.attr('class') || '').toLowerCase();
|
||||
var labelText = '';
|
||||
|
||||
// --- 策略 A:常見資訊型圖示 ---
|
||||
if (cls.includes('calendar')) labelText = labels.calendar;
|
||||
else if (cls.includes('user') || cls.includes('male')) labelText = labels.user;
|
||||
else if (cls.includes('tag')) labelText = labels.tag;
|
||||
else if (cls.includes('clock') || cls.includes('time')) labelText = labels.clock;
|
||||
else if (cls.includes('map-marker') || cls.includes('location')) labelText = labels.location;
|
||||
else if (cls.includes('phone')) labelText = labels.phone;
|
||||
else if (cls.includes('envelope') || cls.includes('mail')) labelText = labels.envelope;
|
||||
else if (cls.includes('folder')) labelText = labels.folder;
|
||||
else if (cls.includes('eye')) labelText = labels.eye;
|
||||
else if (cls.includes('download')) labelText = labels.download;
|
||||
|
||||
// --- 策略 B:功能性按鈕 ---
|
||||
var $container = $icon.closest('a, button');
|
||||
if ($container.length > 0 && $container.text().trim() === '') {
|
||||
var btnTitle = $container.attr('title');
|
||||
if (btnTitle) labelText = btnTitle;
|
||||
else if (cls.includes('search')) labelText = labels.search;
|
||||
else if (cls.includes('bars') || cls.includes('navicon')) labelText = labels.bars;
|
||||
else if (cls.includes('print')) labelText = labels.print;
|
||||
else if (cls.includes('share')) labelText = labels.share;
|
||||
else if (cls.includes('close') || cls.includes('times')) labelText = labels.close;
|
||||
}
|
||||
|
||||
// --- 3. 執行補強 ---
|
||||
if (labelText !== '') {
|
||||
if ($container.length > 0 && $container.text().trim() === '') {
|
||||
$container.attr('aria-label', labelText);
|
||||
} else {
|
||||
$icon.after('<span class="sr-only">' + labelText + '</span>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
setTimeout(smartFixIcons, 500);
|
||||
});
|
||||
// 刪除banner-slide的空連結和空連結目標
|
||||
for(var i=0;i<$('.w-ba-banner__slide a').length;i++){
|
||||
if($('.w-ba-banner__slide a').eq(i).attr('href')=="")
|
||||
|
|
@ -1393,35 +1485,35 @@
|
|||
});
|
||||
};
|
||||
|
||||
//公告頁籤
|
||||
function annc_widget_nav() {
|
||||
$('.tab_nav').nextAll().addClass('tab_content');
|
||||
$('.tab_content').css("display","none");
|
||||
$('.tab_content').eq(0).css('display', 'block');
|
||||
// //公告頁籤
|
||||
// function annc_widget_nav() {
|
||||
// $('.tab_nav').nextAll().addClass('tab_content');
|
||||
// $('.tab_content').css("display","none");
|
||||
// $('.tab_content').eq(0).css('display', 'block');
|
||||
|
||||
var num = $('.tab_nav li').length;
|
||||
$('.tab_content').eq(num).css('display', 'block');
|
||||
$('.tab_content').eq(num).nextAll().css('display', 'block');
|
||||
// var num = $('.tab_nav li').length;
|
||||
// $('.tab_content').eq(num).css('display', 'block');
|
||||
// $('.tab_content').eq(num).nextAll().css('display', 'block');
|
||||
|
||||
$('.tab_nav li').off('click').on('click',function() {
|
||||
$('.tab_nav li').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
var fa = $(this).index();
|
||||
// $('.tab_nav li').off('click').on('click',function() {
|
||||
// $('.tab_nav li').removeClass('active');
|
||||
// $(this).addClass('active');
|
||||
// var fa = $(this).index();
|
||||
|
||||
$('.tab_content').attr('style','');
|
||||
$('.tab_content').css("display","none");
|
||||
$('.tab_content').eq(fa).css('display','block');
|
||||
var num = $('.tab_nav li').length;
|
||||
$('.tab_content').eq(num).css('display', 'block');
|
||||
$('.tab_content').eq(num).nextAll().css('display', 'block');
|
||||
});
|
||||
// $('.tab_content').attr('style','');
|
||||
// $('.tab_content').css("display","none");
|
||||
// $('.tab_content').eq(fa).css('display','block');
|
||||
// var num = $('.tab_nav li').length;
|
||||
// $('.tab_content').eq(num).css('display', 'block');
|
||||
// $('.tab_content').eq(num).nextAll().css('display', 'block');
|
||||
// });
|
||||
|
||||
var url = window.location.search;
|
||||
if (url == "?editmode=on") {
|
||||
$('.tab_content').css({'position': 'relative','display':'block'});
|
||||
}
|
||||
}
|
||||
annc_widget_nav();
|
||||
// var url = window.location.search;
|
||||
// if (url == "?editmode=on") {
|
||||
// $('.tab_content').css({'position': 'relative','display':'block'});
|
||||
// }
|
||||
// }
|
||||
// annc_widget_nav();
|
||||
|
||||
//切換語言停留在同一頁
|
||||
if(window.location.pathname!="/")
|
||||
|
|
@ -1800,6 +1892,14 @@
|
|||
// if($('.show-announcement').hasClass('show-announcement')) {
|
||||
// $('.').css('', '');
|
||||
// }
|
||||
$(function() {
|
||||
var $headerNav = $('.header-nav');
|
||||
$headerNav.contents().each(function() {
|
||||
if (this.nodeType === 3 && this.nodeValue.trim() === '|') {
|
||||
$(this).remove();
|
||||
}
|
||||
});
|
||||
});
|
||||
if ($('.fatfooter').length === 0) {
|
||||
$('.btn-fatfooter').hide();
|
||||
};
|
||||
|
|
@ -1967,11 +2067,15 @@
|
|||
});
|
||||
$(window).resize(function() {
|
||||
if ($(window).width() <769) {
|
||||
|
||||
$('.modules-menu-level-0').after($('.header-nav'));
|
||||
}else{
|
||||
$('.navbar-header').before($('.header-nav'));
|
||||
};
|
||||
// if ($(window).width() <769) {
|
||||
// $('.leftnav').append($('.header-nav'));
|
||||
// }else{
|
||||
// $('.leftnav').append($('.header-nav'));
|
||||
// };
|
||||
|
||||
if ($(window).width() > 821) {
|
||||
$('.form-horizontal').append($('.cancelbooking'));
|
||||
|
|
@ -2117,22 +2221,108 @@ $(document).ready(function() {
|
|||
// 2. 語言按鈕與手機版選單補強
|
||||
$(function() {
|
||||
function fixLanguageA11y() {
|
||||
var isEn = document.documentElement.lang === 'en';
|
||||
var correctTitle = isEn ? 'Open language menu' : '在本視窗開啟語言選單';
|
||||
var $desktopBtn = $('#languagebutton');
|
||||
var $langLi = $('#language-li');
|
||||
var $langUl = $('#language-li ul');
|
||||
|
||||
// =============================================
|
||||
// ✅ 新增 GN1210101E:繁體中文 li 補上可聚焦 <a>
|
||||
// 桌面版 + 手機版都處理
|
||||
// =============================================
|
||||
var $activeLis = $langUl.find('li.active')
|
||||
.add($('#language-li-ul').find('li.active'));
|
||||
|
||||
$activeLis.each(function() {
|
||||
var $li = $(this);
|
||||
if ($li.find('a, button').length === 0) {
|
||||
var activeText = $li.text().trim();
|
||||
$li.html(
|
||||
'<a href="javascript:;" ' +
|
||||
'aria-current="true" ' +
|
||||
'title="' + (isEn ? 'Current language' : '目前語言') + '" ' +
|
||||
'tabindex="0">' +
|
||||
activeText +
|
||||
'</a>'
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
// =============================================
|
||||
// Desktop 語言按鈕
|
||||
// =============================================
|
||||
if ($desktopBtn.length > 0) {
|
||||
$desktopBtn.attr({ 'aria-expanded': 'false', 'role': 'button', 'aria-haspopup': 'true' });
|
||||
$desktopBtn.attr({
|
||||
'aria-expanded': 'false',
|
||||
'role': 'button',
|
||||
'aria-haspopup': 'true',
|
||||
'title': correctTitle
|
||||
});
|
||||
$desktopBtn.removeAttr('aria-label');
|
||||
|
||||
function openLangMenu() {
|
||||
$langUl.addClass('show');
|
||||
$desktopBtn.attr('aria-expanded', 'true');
|
||||
$('.orbit-bar-search-sign-language').addClass('show');
|
||||
}
|
||||
function closeLangMenu() {
|
||||
$langUl.removeClass('show');
|
||||
$desktopBtn.attr('aria-expanded', 'false');
|
||||
}
|
||||
|
||||
// 原有:focus 展開
|
||||
$desktopBtn.on('focus', function() {
|
||||
$(this).closest('#language-li').find('ul').addClass('show');
|
||||
$(this).attr('aria-expanded', 'true');
|
||||
$('.orbit-bar-search-sign-language').addClass('show');
|
||||
openLangMenu();
|
||||
});
|
||||
|
||||
// ✅ 新增 GN1210100E:Enter / Space 切換、Escape 收合
|
||||
$desktopBtn.on('keydown', function(e) {
|
||||
if (e.which === 13 || e.which === 32) {
|
||||
e.preventDefault();
|
||||
$langUl.hasClass('show') ? closeLangMenu() : openLangMenu();
|
||||
}
|
||||
if (e.which === 27) {
|
||||
closeLangMenu();
|
||||
$desktopBtn.focus();
|
||||
}
|
||||
});
|
||||
|
||||
// 原有:click 切換
|
||||
$desktopBtn.on('click', function(e) {
|
||||
e.preventDefault();
|
||||
$langUl.hasClass('show') ? closeLangMenu() : openLangMenu();
|
||||
});
|
||||
|
||||
// ✅ 新增:選單內 Escape 跳回按鈕
|
||||
$langUl.find('a').on('keydown', function(e) {
|
||||
if (e.which === 27) {
|
||||
e.preventDefault();
|
||||
closeLangMenu();
|
||||
$desktopBtn.focus();
|
||||
}
|
||||
});
|
||||
|
||||
// 原有:焦點離開整個 language-li 時收合
|
||||
$langLi.on('focusout', function() {
|
||||
var $container = $(this);
|
||||
setTimeout(function() {
|
||||
if (!$container.is(':focus-within')) {
|
||||
closeLangMenu();
|
||||
}
|
||||
}, 150);
|
||||
});
|
||||
}
|
||||
|
||||
var $mobileBtn = $('.mobile-button');
|
||||
// =============================================
|
||||
// 手機版選單補強(原有邏輯完整保留)
|
||||
// =============================================
|
||||
var $mobileBtn = $('.mobile-button');
|
||||
if ($mobileBtn.length > 0) {
|
||||
$mobileBtn.attr({ 'role': 'button', 'tabindex': '0', 'aria-haspopup': 'true', 'aria-expanded': 'false' });
|
||||
$mobileBtn.on('focus', function() {
|
||||
$(this).closest('li').find('ul').addClass('show');
|
||||
$(this).attr('aria-expanded', 'true');
|
||||
$(this).attr('aria-expanded', 'true');
|
||||
});
|
||||
$mobileBtn.on('keydown', function(e) {
|
||||
if (e.which === 13 || e.which === 32) {
|
||||
|
|
@ -2153,17 +2343,20 @@ $(function() {
|
|||
});
|
||||
}
|
||||
|
||||
// 強制鎖定 Title
|
||||
// =============================================
|
||||
// 原有:MutationObserver 強制鎖定 title
|
||||
// =============================================
|
||||
var target = document.getElementById('languagebutton');
|
||||
if (target) {
|
||||
var isEn = document.documentElement.lang === 'en';
|
||||
var correctTitle = isEn ? 'Open language menu' : '在本視窗開啟語言選單';
|
||||
var observer = new MutationObserver(function() {
|
||||
if (target.getAttribute('title') !== correctTitle) target.setAttribute('title', correctTitle);
|
||||
if (target.getAttribute('title') !== correctTitle) {
|
||||
target.setAttribute('title', correctTitle);
|
||||
}
|
||||
});
|
||||
observer.observe(target, { attributes: true });
|
||||
observer.observe(target, { attributes: true, attributeFilter: ['title'] });
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(fixLanguageA11y, 600);
|
||||
});
|
||||
// rwd左上選單無障礙
|
||||
|
|
@ -2535,24 +2728,32 @@ $(function() {
|
|||
// 延遲 600 毫秒執行,確保動態元件已載入
|
||||
setTimeout(wrapGoBackTop, 500);
|
||||
});
|
||||
//修正 Logo 連結與無障礙文字
|
||||
$(function() {
|
||||
/**
|
||||
* 修正 Logo 連結與無障礙文字
|
||||
* 目標:將登入連結改為官網連結,並更新相關替代文字
|
||||
*/
|
||||
function fixLogoLinkToOfficial() {
|
||||
// 選取目標連結(建議透過 class 鎖定)
|
||||
// 選取目標連結(透過 class 鎖定)
|
||||
var $logoLink = $('a.orbit-bar-logo');
|
||||
|
||||
if ($logoLink.length > 0) {
|
||||
// 偵測當前 HTML 標籤的 lang 屬性
|
||||
var pageLang = $('html').attr('lang') || 'zh-Hant';
|
||||
var isEn = pageLang.toLowerCase().startsWith('en');
|
||||
|
||||
// 根據語系動態設定文字內容
|
||||
// alt 屬性:圖片說明
|
||||
var altText = isEn ? 'National Formosa University Logo' : '國立虎尾科技大學Logo';
|
||||
|
||||
// title 屬性:依據 HM1240404E 規範,補充內容不與 alt 相同,僅保留視窗提示即可
|
||||
var titleText = isEn ? '(Open in this window)' : '(在本視窗開啟)';
|
||||
|
||||
// 1. 修改超連結位址 (href) 與 標題 (title)
|
||||
$logoLink.attr({
|
||||
'href': 'https://www.nfu.edu.tw',
|
||||
'title': '國立虎尾科技大學(在本視窗開啟)'
|
||||
'title': titleText
|
||||
});
|
||||
|
||||
// 2. 修改內部圖片的替代文字 (alt)
|
||||
$logoLink.find('img').attr('alt', '國立虎尾科技大學');
|
||||
$logoLink.find('img').attr('alt', altText);
|
||||
|
||||
// 3. 移除內部的 <p> 標籤 (避免 display:none 的舊文字干擾無障礙檢測)
|
||||
$logoLink.find('p').remove();
|
||||
|
|
@ -2563,6 +2764,110 @@ $(function() {
|
|||
setTimeout(function() {
|
||||
fixLogoLinkToOfficial();
|
||||
}, 500);
|
||||
});
|
||||
$(document).ready(function () {
|
||||
setTimeout(function () {
|
||||
$('iframe.twitter-share-button, iframe.twitter-tweet-button').each(function () {
|
||||
$(this).attr('title', '分享至 X 在新視窗開啟');
|
||||
});
|
||||
}, 1500);
|
||||
});
|
||||
//orbitbarlogo無障礙
|
||||
$(function() {
|
||||
var $logo = $('.orbit-bar-logo');
|
||||
var $inner = $logo.contents().not('p');
|
||||
|
||||
var $span = $('<span>').addClass('orbit-bar-logo').append($inner);
|
||||
$logo.replaceWith($span);
|
||||
});
|
||||
//orbitbar登入無障礙
|
||||
$(function() {
|
||||
var $loginWindow = $('.login-window');
|
||||
var $checkbox = $('#open-orbit-login');
|
||||
|
||||
// login-window 顯示時,焦點移到 label.close
|
||||
$checkbox.on('change', function() {
|
||||
if ($(this).is(':checked')) {
|
||||
setTimeout(function() {
|
||||
$('.login-window .login-header label.close').focus();
|
||||
}, 50);
|
||||
}
|
||||
});
|
||||
|
||||
// login-window 失去焦點時,關閉並還原焦點
|
||||
$loginWindow.on('focusout', function() {
|
||||
var $thisWindow = $(this);
|
||||
setTimeout(function() {
|
||||
// document.hasFocus() 為 false 代表焦點移到瀏覽器外(開發者工具、右鍵選單等),不關閉
|
||||
if (!document.hasFocus()) return;
|
||||
|
||||
if (!$thisWindow.is(':focus-within') && $checkbox.is(':checked')) {
|
||||
$(".orbit-bar-logo").one("focusin", function() {
|
||||
if (window.orbit_login_button) {
|
||||
window.orbit_login_button.focus();
|
||||
}
|
||||
});
|
||||
$checkbox.click();
|
||||
}
|
||||
}, 500);
|
||||
});
|
||||
});
|
||||
//gallery層級問題
|
||||
$(function() {
|
||||
var target = document.getElementById('gallery-theater-stage');
|
||||
if (!target) return;
|
||||
|
||||
var observer = new MutationObserver(function() {
|
||||
var display = target.style.display;
|
||||
if (display === 'block') {
|
||||
$('.verticalhome').css('z-index', '2000');
|
||||
} else if (display === 'none') {
|
||||
$('.verticalhome').css('z-index', 'auto');
|
||||
}
|
||||
});
|
||||
|
||||
observer.observe(target, {
|
||||
attributes : true,
|
||||
attributeFilter: ['style']
|
||||
});
|
||||
});
|
||||
$(document).ready(function() {
|
||||
|
||||
function removeFakeLinks() {
|
||||
$('a.fake_link').remove();
|
||||
}
|
||||
|
||||
// 初始執行一次
|
||||
removeFakeLinks();
|
||||
|
||||
// Shift+Tab 時也執行
|
||||
$(document).on('keydown', function(e) {
|
||||
if (e.key === 'Tab' && e.shiftKey) {
|
||||
removeFakeLinks();
|
||||
}
|
||||
});
|
||||
|
||||
// MutationObserver 監聽 DOM 變化,fake_link 一出現就移除
|
||||
var observer = new MutationObserver(function(mutations) {
|
||||
mutations.forEach(function(mutation) {
|
||||
mutation.addedNodes.forEach(function(node) {
|
||||
// 直接是 fake_link
|
||||
if ($(node).is('a.fake_link')) {
|
||||
$(node).remove();
|
||||
}
|
||||
// 或其子元素內含 fake_link
|
||||
if ($(node).find) {
|
||||
$(node).find('a.fake_link').remove();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
observer.observe(document.body, {
|
||||
childList: true,
|
||||
subtree: true
|
||||
});
|
||||
|
||||
});
|
||||
// 執行 member等高計算,目前改用flexbox故mark掉 by ika 20160105
|
||||
// $(window).load(function() {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ a[accesskey] {
|
|||
}
|
||||
|
||||
#orbit-bar a[accesskey] {
|
||||
color: #666666 !important;
|
||||
color: #666666;
|
||||
margin-left: 0;
|
||||
position: relative;
|
||||
&:hover {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@
|
|||
|
||||
@import "../initial";
|
||||
@import "variables";
|
||||
#orbit-bar .orbit-bar-title a{
|
||||
color: #333!important;
|
||||
|
||||
.fa-classic, .fa-regular, .fa-solid, .far, .fas ,.fa{
|
||||
font-family: var(--fa-style-family, "FontAwesome");
|
||||
}
|
||||
#orbit-bar .orbit-bar-inner > label:focus, #orbit-bar .orbit-bar-inner > label.focus{
|
||||
.orbit-bar-search-sign-language{
|
||||
|
|
@ -11,6 +12,48 @@
|
|||
}
|
||||
}
|
||||
|
||||
.login-btn:focus {
|
||||
outline: 0.3125em auto -webkit-focus-ring-color !important;
|
||||
transition: all 0.2s ease-in-out!important;
|
||||
}
|
||||
.orbit-bar-inner{
|
||||
li.active {
|
||||
@media(min-width:768px){
|
||||
padding: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
label[for="open-orbit-login"] {
|
||||
@media(max-width:768px){
|
||||
display: none!important;
|
||||
}
|
||||
}
|
||||
[accesskey="U"],[accesskey="W"]{
|
||||
@media(max-width:768px){
|
||||
color: #666!important;
|
||||
}
|
||||
}
|
||||
.orbit-bar-inner{
|
||||
[accesskey="U"]{
|
||||
height: 40px;
|
||||
display: inline-block!important;
|
||||
line-height: 40px;
|
||||
float: left;
|
||||
@media(min-width:769px){
|
||||
color: #fff!important;
|
||||
}
|
||||
}
|
||||
[accesskey="W"]{
|
||||
height: 40px;
|
||||
display: inline-block!important;
|
||||
line-height: 40px;
|
||||
float: left;
|
||||
color: #fff!important;
|
||||
@media(min-width:769px){
|
||||
color: #fff!important;
|
||||
}
|
||||
}
|
||||
}
|
||||
.orbit-bar-search-sign-language{
|
||||
@media(max-width:767px){
|
||||
position: absolute !important;
|
||||
|
|
@ -126,7 +169,7 @@ a.btn-primary {
|
|||
&:hover {
|
||||
color: #fff;
|
||||
// box-shadow:$theme-color-third 0 0px 0px 40px inset;
|
||||
background: radial-gradient(circle at 60% 90%, #dea797, transparent 60%), radial-gradient(circle at 10px 10px, #eb8467, transparent 25%), #ec6641;
|
||||
background: radial-gradient(circle at 60% 90%, #ea8466, transparent 60%), radial-gradient(circle at 10px 10px, #e66c4a, transparent 25%), #cc3d00;
|
||||
}
|
||||
}
|
||||
.theadsearch2{
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
@import "variables";
|
||||
.go-back-top-inner{
|
||||
background: radial-gradient(circle at 60% 90%, #dea797, transparent 60%), radial-gradient(circle at 10px 10px, #eb8467, transparent 25%), #ec6641;
|
||||
background: radial-gradient(circle at 60% 90%, #ea8466, transparent 60%), radial-gradient(circle at 10px 10px, #e66c4a, transparent 25%), #cc3d00;
|
||||
clip-path: polygon(25% 5.77%, 75% 5.77%, 100% 50%, 75% 94.23%, 25% 94.23%, 0% 50%);
|
||||
padding: 1em;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ $theme-color-third: #ec6641;
|
|||
$theme-color-green: #ec6641;
|
||||
$theme-color-hover:#00437c;
|
||||
|
||||
.fa, .fa-classic, .fa-regular, .fa-solid, .far, .fas {
|
||||
font-family: "Font Awesome 6 Free", FontAwesome;
|
||||
}
|
||||
// Font stacks
|
||||
$main-font: "Noto Sans TC", sans-serif;
|
||||
$sub-font: "Noto Sans TC", sans-serif;
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ i.kenmenu-drop.fa-solid.fa-chevron-down {
|
|||
list-style: none;
|
||||
}
|
||||
a[accesskey] {
|
||||
position: absolute;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
.container {
|
||||
|
|
|
|||
|
|
@ -155,6 +155,6 @@
|
|||
--bs-card-bg: transparent;
|
||||
}
|
||||
.card:before{
|
||||
background: radial-gradient(circle at 60% 90%, #dea797, transparent 60%), radial-gradient(circle at 10px 10px, #eb8467, transparent 25%), #ec6641!important;
|
||||
background: radial-gradient(circle at 60% 90%, #ea8466, transparent 60%), radial-gradient(circle at 10px 10px, #e66c4a, transparent 25%), #cc3d00!important;
|
||||
}
|
||||
}
|
||||
|
|
@ -39,6 +39,15 @@ ul.button-mid{
|
|||
.banner-pager .active-slide button{
|
||||
background: $theme-color-second!important;
|
||||
}
|
||||
.w-ba-banner .button-mid {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
top: 50%;
|
||||
}
|
||||
.next-button, .prev-button {
|
||||
cursor: pointer;
|
||||
}
|
||||
iframe{
|
||||
border: none;
|
||||
}
|
||||
|
|
@ -349,8 +358,8 @@ ul.button-mid{
|
|||
}
|
||||
.banner-overlay{
|
||||
padding: 3.5em 5em;
|
||||
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
|
||||
-pie-background: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
|
||||
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
|
||||
-pie-background: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
|
||||
behavior: url("/assets/ie_support/PIE2/PIE.htc");
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
|
|
@ -630,8 +639,8 @@ ul.button-mid{
|
|||
.banner-overlay{
|
||||
color: #fff;
|
||||
padding: 3.5em 5em;
|
||||
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
|
||||
-pie-background: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
|
||||
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
|
||||
-pie-background: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
|
||||
behavior: url("/assets/ie_support/PIE2/PIE.htc");
|
||||
.ad-overlay2{
|
||||
margin: 0 3em;
|
||||
|
|
@ -667,8 +676,8 @@ ul.button-mid{
|
|||
.ba-banner-widget-10 {
|
||||
.w-ad-banner__caption{
|
||||
padding: 2em 1em;
|
||||
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
|
||||
-pie-background: linear-gradient(180deg, transparent 0, #00000066 40%, #000);
|
||||
background-image: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
|
||||
-pie-background: linear-gradient(180deg, transparent 0, #00000066 40%, #000000a3);
|
||||
behavior: url("/assets/ie_support/PIE2/PIE.htc");
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
|
|
|
|||
|
|
@ -535,6 +535,7 @@
|
|||
}
|
||||
li{
|
||||
list-style: none;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
}
|
||||
.index-archive-15{
|
||||
|
|
|
|||
|
|
@ -84,18 +84,18 @@ tr.i-member-tr-head {
|
|||
.i-member-pic-wrap{
|
||||
overflow: hidden;
|
||||
}
|
||||
.i-member-item{
|
||||
&:hover{
|
||||
img{
|
||||
transform: scale(1.1) !important;
|
||||
-webkit-transition: .3s ease-out;
|
||||
-moz-transition: .3s ease-out;
|
||||
-ms-transition: .3s ease-out;
|
||||
-o-transition: .3s ease-out;
|
||||
transition: .3s ease-out;
|
||||
}
|
||||
}
|
||||
}
|
||||
// .i-member-item{
|
||||
// &:hover{
|
||||
// img{
|
||||
// transform: scale(1.1) !important;
|
||||
// -webkit-transition: .3s ease-out;
|
||||
// -moz-transition: .3s ease-out;
|
||||
// -ms-transition: .3s ease-out;
|
||||
// -o-transition: .3s ease-out;
|
||||
// transition: .3s ease-out;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// Index 1
|
||||
.index-member-1 {
|
||||
.i-member__status-title {
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@
|
|||
}
|
||||
|
||||
&:hover {
|
||||
background: radial-gradient(circle at 60% 90%, #dea797, transparent 60%), radial-gradient(circle at 10px 10px, #eb8467, transparent 25%), #ec6641;
|
||||
background: radial-gradient(circle at 60% 90%, #ea8466, transparent 60%), radial-gradient(circle at 10px 10px, #e66c4a, transparent 25%), #cc3d00;
|
||||
@media(max-width: 769px){
|
||||
a,i {
|
||||
color:#fff;
|
||||
|
|
@ -557,13 +557,13 @@
|
|||
}
|
||||
.navbar-toggle {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
left: 1em;
|
||||
background: transparent;
|
||||
top: 40px;
|
||||
z-index: 1;
|
||||
height: 100vh;
|
||||
height: 93vh;
|
||||
margin: 0;
|
||||
width: 20%;
|
||||
width: 13%;
|
||||
border: 0;
|
||||
}
|
||||
.cover {
|
||||
|
|
|
|||
|
|
@ -481,7 +481,7 @@
|
|||
color: #fff;
|
||||
}
|
||||
&:hover{
|
||||
background: radial-gradient(circle at 60% 90%, #dea797, transparent 60%), radial-gradient(circle at 10px 10px, #eb8467, transparent 25%), #ec6641;
|
||||
background: radial-gradient(circle at 60% 90%, #ea8466, transparent 60%), radial-gradient(circle at 10px 10px, #e66c4a, transparent 25%), #cc3d00;
|
||||
}
|
||||
|
||||
& + .widget-content {
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
margin-right: 1%;
|
||||
margin-bottom: 0.5em;
|
||||
cursor: pointer;
|
||||
background: radial-gradient(circle at 60% 90%, #dea797, transparent 60%), radial-gradient(circle at 10px 10px, #eb8467, transparent 25%), #ec6641;
|
||||
background: radial-gradient(circle at 60% 90%, #ea8466, transparent 60%), radial-gradient(circle at 10px 10px, #e66c4a, transparent 25%), #cc3d00;
|
||||
border-radius: 2em;
|
||||
behavior: url("/assets/ie_support/PIE2/PIE.htc");
|
||||
color: #fff;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<div class="layout-footer-inner">
|
||||
<div class="layout-footer-content">{{footer-data}}</div>
|
||||
<div class="footer-counter"><a href="https://ruling.digital/"><img src="/assets/ruling_logo.png" alt="ruling-logo-icon"></a>{{site-counter}}</div>
|
||||
<div class="footer-counter"><a href="https://orbitek.co"><img src="/assets/orbitek.png" alt="orbitek-logo-icon" style="width: 15px;"></a>{{site-counter}}</div>
|
||||
<div class="footer-updated-date">{{last-updated}}</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -41,10 +41,10 @@
|
|||
<p style="display: none;"><%= I18n.t("ad_banner.pause") %></p>
|
||||
</a>
|
||||
</ul>
|
||||
<ul class="button-mid">
|
||||
<i class="fa fa-angle-left prev-button" aria-hidden="true" title = "<%= (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" %>"></i>
|
||||
<i class="fa fa-angle-right next-button" aria-hidden="true" title = "<%= (I18n.locale.to_s =="zh_tw") ? "下一張" : "next" %>"></i>
|
||||
</ul>
|
||||
<ul class="button-mid">
|
||||
<i class="fa fa-angle-left prev-button" aria-label="<%= I18n.t("ad_banner.prev") %>"></i>
|
||||
<i class="fa fa-angle-right next-button" aria-label="<%= I18n.t("ad_banner.next") %>"></i>
|
||||
</ul>
|
||||
</div>
|
||||
<script>
|
||||
var flag = 1;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
<section class="s-annc__post-wrap">
|
||||
<div class="s-annc__sub-img2">
|
||||
<div class="s-annc__sub-img {{hide_class}}">
|
||||
<img src="{{img_src}}"></img>
|
||||
<img src="{{img_src}}" alt="{{img_description}}"></img>
|
||||
<span class="s-annc__img_description">{{img_description}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
<section class="s-annc__post-wrap">
|
||||
<div class="s-annc__sub-img2">
|
||||
<div class="s-annc__sub-img {{hide_class}}">
|
||||
<img src="{{img_src}}"></img>
|
||||
<img src="{{img_src}}" alt="{{img_description}}"></img>
|
||||
<span class="s-annc__img_description">{{img_description}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -3,19 +3,23 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th class="col-md-1">{{th_year}}</th>
|
||||
<th class="col-md-6">{{th_course_title}}</th>
|
||||
<th class="col-md-3">{{th_course_category}}</th>
|
||||
<th class="col-md-4">{{th_course_title}}</th>
|
||||
<th class="col-md-2">{{th_course_class}}</th>
|
||||
<th class="col-md-2">{{th_course_category}}</th>
|
||||
<th class="col-md-1 min-tablet">{{th_course_semester}}</th>
|
||||
<th class="col-md-1 min-tablet-l">{{th_authors}}</th>
|
||||
<th class="col-md-1 min-tablet-2">{{th_url}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-level="0" data-list="courses">
|
||||
<tr>
|
||||
<td>{{year}}</td>
|
||||
<td><a href="{{link_to_show}}">{{title}}</a></td>
|
||||
<td>{{course_class}}</td>
|
||||
<td>{{category}}</td>
|
||||
<td>{{semester}}</td>
|
||||
<td>{{authors}}</td>
|
||||
<td>{{url}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -33,4 +37,4 @@ $('table.courses-index').each(function(){
|
|||
});
|
||||
}
|
||||
});;
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Reference in New Issue