مدیاویکی:Common.js: تفاوت بین نسخهها
از ولایت حضرت علی و حضرت زهرا
| سطر ۱۳۱: | سطر ۱۳۱: | ||
showSujects('.subjects, .minutes', 'موضوعات'); | showSujects('.subjects, .minutes', 'موضوعات'); | ||
| + | |||
$(function () { | $(function () { | ||
| سطر ۱۳۶: | سطر ۱۳۷: | ||
function setupFind($box) { | function setupFind($box) { | ||
| − | + | var $input = $box.find('.mw-find-input'); | |
| − | + | var $prev = $box.find('.mw-find-prev'); | |
| − | + | var $next = $box.find('.mw-find-next'); | |
| − | + | var $count = $box.find('.mw-find-count'); | |
| − | + | var matches = []; | |
| − | + | var index = -1; | |
function clearHighlights() { | function clearHighlights() { | ||
| − | matches. | + | for (var i = 0; i < matches.length; i++) { |
| − | $( | + | $(matches[i]).replaceWith(matches[i].textContent); |
| − | } | + | } |
matches = []; | matches = []; | ||
index = -1; | index = -1; | ||
| سطر ۱۶۰: | سطر ۱۶۱: | ||
} | } | ||
| − | + | var $content = $('#mw-content-text'); | |
| − | + | var regex = new RegExp(term, 'gi'); | |
$content.find('*').contents().each(function () { | $content.find('*').contents().each(function () { | ||
if (this.nodeType !== 3) return; | if (this.nodeType !== 3) return; | ||
| − | if (!this.nodeValue | + | if (!regex.test(this.nodeValue)) return; |
| − | + | var html = this.nodeValue.replace(regex, function (match) { | |
| − | return | + | return '<mark class="mw-find-highlight">' + match + '</mark>'; |
}); | }); | ||
| − | $(this).replaceWith( | + | $(this).replaceWith(html); |
}); | }); | ||
matches = $content.find('.mw-find-highlight').toArray(); | matches = $content.find('.mw-find-highlight').toArray(); | ||
| − | if ( | + | if (matches.length === 0) { |
$count.text('یافت نشد'); | $count.text('یافت نشد'); | ||
return; | return; | ||
| سطر ۱۸۸: | سطر ۱۸۹: | ||
function focusResult() { | function focusResult() { | ||
$('.mw-find-highlight').removeClass('active'); | $('.mw-find-highlight').removeClass('active'); | ||
| − | + | ||
| + | var el = matches[index]; | ||
$(el).addClass('active')[0] | $(el).addClass('active')[0] | ||
.scrollIntoView({ behavior: "smooth", block: "center" }); | .scrollIntoView({ behavior: "smooth", block: "center" }); | ||
| سطر ۱۹۶: | سطر ۱۹۸: | ||
$next.on('click', function () { | $next.on('click', function () { | ||
| − | if ( | + | if (matches.length === 0) return; |
index = (index + 1) % matches.length; | index = (index + 1) % matches.length; | ||
focusResult(); | focusResult(); | ||
| سطر ۲۰۲: | سطر ۲۰۴: | ||
$prev.on('click', function () { | $prev.on('click', function () { | ||
| − | if ( | + | if (matches.length === 0) return; |
index = (index - 1 + matches.length) % matches.length; | index = (index - 1 + matches.length) % matches.length; | ||
focusResult(); | focusResult(); | ||
| سطر ۲۱۰: | سطر ۲۱۲: | ||
doSearch(this.value); | doSearch(this.value); | ||
}); | }); | ||
| + | |||
} | } | ||
نسخهٔ ۳ دسامبر ۲۰۲۵، ساعت ۱۰:۵۷
/* Any JavaScript here will be loaded for all users on every page load. */
$(function () {
var targets = $('[rel~=tooltip]'),
target = false,
tooltip = false,
title = false;
targets.bind('mouseenter', function () {
target = $(this);
tip = target.attr('title');
tooltip = $('<div id="tooltip"></div>');
if (!tip || tip == '')
return false;
target.removeAttr('title');
tooltip.css('opacity', 0)
.html(tip)
.appendTo('body');
var init_tooltip = function () {
if ($(window).width() < tooltip.outerWidth() * 1.5)
tooltip.css('max-width', $(window).width() / 2);
else
tooltip.css('max-width', 340);
var pos_left = target.offset().left + (target.outerWidth() / 2) - (tooltip.outerWidth() / 2),
pos_top = target.offset().top - tooltip.outerHeight() - 20;
if (pos_left < 0) {
pos_left = target.offset().left + target.outerWidth() / 2 - 20;
tooltip.addClass('left');
}
else
tooltip.removeClass('left');
if (pos_left + tooltip.outerWidth() > $(window).width()) {
pos_left = target.offset().left - tooltip.outerWidth() + target.outerWidth() / 2 + 20;
tooltip.addClass('right');
}
else
tooltip.removeClass('right');
if (pos_top < 0) {
var pos_top = target.offset().top + target.outerHeight();
tooltip.addClass('top');
}
else
tooltip.removeClass('top');
tooltip.css({ left: pos_left, top: pos_top })
.animate({ top: '+=10', opacity: 1 }, 50);
};
init_tooltip();
$(window).resize(init_tooltip);
var remove_tooltip = function () {
tooltip.animate({ top: '-=10', opacity: 0 }, 50, function () {
$(this).remove();
});
target.attr('title', tip);
};
target.bind('mouseleave', remove_tooltip);
tooltip.bind('click', remove_tooltip);
});
});
$('.col-lg-9').removeClass('col')
$('.col-lg-3').removeClass('col')
function showSujects(subjectClass, title) {
// Get all the elements with the class "subjects"
var subjects = $(subjectClass);
// Create an empty list to hold the IDs of the selected elements
var selectedTitles = [];
var selectedIds = [];
var types = [];
// Loop through each element with the class "subjects"
subjects.each(function () {
// Get the ID of the current element
var currentTitle = $(this).attr('data-headline');
var currentId = $(this).attr('id');
// Add the ID to the list of selected IDs
selectedTitles.push(currentTitle);
selectedIds.push(currentId);
types.push($(this).hasClass('minutes'))
});
if (selectedTitles.length === 0) {
return
}
// console.log('selecting subjects')
// Loop through the selected IDs and create a new div for each one
var headlines = [];
for (var i = 0; i < selectedTitles.length; i++) {
var tocWrapper = '';
var id = parseInt(selectedIds[i]);
console.log(id);
if (types[i])
tocWrapper = $("<div class='tocMinuts'></div>");
else
tocWrapper = $("<li></li>");
var newDiv = $("<a class='subjectToc' href='#" + selectedIds[i] + "'></a>");
newDiv.text(selectedTitles[i]);
tocWrapper.append(newDiv);
headlines.push(tocWrapper);
}
// Wrap all the new divs in a specific div with the ID "new-div-container"
var headLineContainer = $("<div></div>");
headLineContainer.addClass("infobox mw-collapsible");
headLineContainer.css("width", "22em");
var ToggleSpan = $("<span >" + title + "</span>")
var headLineWrapper = $("<ol></ol>");
headLineWrapper.addClass("headWrapperSubjects");
headLineWrapper.addClass("mw-collapsible-content");
headLineWrapper.append(headlines);
headLineContainer.append(ToggleSpan);
headLineContainer.append(headLineWrapper);
// Add the new div container after the table with the ID "my-table"
$(".infobox.vcard").after(headLineContainer);
}
showSujects('.subjects, .minutes', 'موضوعات');
$(function () {
function setupFind($box) {
var $input = $box.find('.mw-find-input');
var $prev = $box.find('.mw-find-prev');
var $next = $box.find('.mw-find-next');
var $count = $box.find('.mw-find-count');
var matches = [];
var index = -1;
function clearHighlights() {
for (var i = 0; i < matches.length; i++) {
$(matches[i]).replaceWith(matches[i].textContent);
}
matches = [];
index = -1;
}
function doSearch(term) {
clearHighlights();
if (!term) {
$count.text('');
return;
}
var $content = $('#mw-content-text');
var regex = new RegExp(term, 'gi');
$content.find('*').contents().each(function () {
if (this.nodeType !== 3) return;
if (!regex.test(this.nodeValue)) return;
var html = this.nodeValue.replace(regex, function (match) {
return '<mark class="mw-find-highlight">' + match + '</mark>';
});
$(this).replaceWith(html);
});
matches = $content.find('.mw-find-highlight').toArray();
if (matches.length === 0) {
$count.text('یافت نشد');
return;
}
index = 0;
focusResult();
}
function focusResult() {
$('.mw-find-highlight').removeClass('active');
var el = matches[index];
$(el).addClass('active')[0]
.scrollIntoView({ behavior: "smooth", block: "center" });
$count.text((index + 1) + ' از ' + matches.length);
}
$next.on('click', function () {
if (matches.length === 0) return;
index = (index + 1) % matches.length;
focusResult();
});
$prev.on('click', function () {
if (matches.length === 0) return;
index = (index - 1 + matches.length) % matches.length;
focusResult();
});
$input.on('input', function () {
doSearch(this.value);
});
}
$('.mw-find-box').each(function () {
setupFind($(this));
});
});
