|
|
| 1行目: |
1行目: |
| /** | | /* JSなし */ |
| * MediaWiki:Common.js
| |
| */
| |
| (function() {
| |
| 'use strict';
| |
| | |
| function loadRecentUpdates() {
| |
| var container = document.getElementById('tw-live-recent-updates');
| |
| if (!container) return;
| |
| | |
| fetch('/api.php?action=query&list=recentchanges&rcnamespace=0&rclimit=6&rcprop=title|timestamp|user&format=json')
| |
| .then(function(res) { return res.json(); })
| |
| .then(function(data) {
| |
| if (!data || !data.query || !data.query.recentchanges) return;
| |
| var rcs = data.query.recentchanges;
| |
| if (rcs.length === 0) return;
| |
| | |
| var html = '<ul class="tw-recent-feed">';
| |
| for (var i = 0; i < rcs.length; i++) {
| |
| var item = rcs[i];
| |
| var titleEnc = encodeURIComponent(item.title);
| |
| var dateObj = new Date(item.timestamp);
| |
| var timeStr = formatTime(dateObj);
| |
| | |
| html += '<li class="tw-recent-feed-item">';
| |
| html += ' <span><a href="/index.php/' + titleEnc + '">' + escapeHtml(item.title) + '</a></span>';
| |
| html += ' <span class="tw-recent-feed-time">' + timeStr + '</span>';
| |
| html += '</li>';
| |
| }
| |
| html += '</ul>';
| |
| container.innerHTML = html;
| |
| })
| |
| .catch(function(err) {
| |
| console.warn('Recent changes load error:', err);
| |
| });
| |
| }
| |
| | |
| function formatTime(d) {
| |
| var m = (d.getMonth() + 1);
| |
| var day = d.getDate();
| |
| var h = ('0' + d.getHours()).slice(-2);
| |
| var min = ('0' + d.getMinutes()).slice(-2);
| |
| return m + '/' + day + ' ' + h + ':' + min;
| |
| }
| |
| | |
| function escapeHtml(s) {
| |
| if (!s) return '';
| |
| return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
| |
| }
| |
| | |
| if (document.readyState === 'loading') {
| |
| document.addEventListener('DOMContentLoaded', loadRecentUpdates);
| |
| } else {
| |
| loadRecentUpdates();
| |
| }
| |
| })();
| |