مدیاویکی:Common.js: تفاوت بین نسخه‌ها

از ولایت حضرت علی و حضرت زهرا
پرش به:ناوبری، جستجو
 
سطر ۱۳۸: سطر ۱۳۸:
  
 
         var $input = $(this).find('.mw-find-input');
 
         var $input = $(this).find('.mw-find-input');
 +
        var content = document.getElementById('mw-content-text');
  
         function clearHighlights() {
+
         function unwrap() {
             $('#mw-content-text mark.mw-find-highlight').each(function () {
+
             var marks = content.querySelectorAll('mark.mw-find-highlight');
                 $(this).replaceWith($(this).text());
+
            for (var i = marks.length - 1; i >= 0; i--) {
             });
+
                 var parent = marks[i].parentNode;
 +
                parent.replaceChild(document.createTextNode(marks[i].textContent), marks[i]);
 +
                parent.normalize();
 +
             }
 
         }
 
         }
  
         function doSearch(term) {
+
         function highlight(term) {
             clearHighlights();
+
             unwrap();
 
 
 
             if (!term) return;
 
             if (!term) return;
  
             var $content = $('#mw-content-text');
+
             var walker = document.createTreeWalker(content, NodeFilter.SHOW_TEXT, null);
 
             var regex = new RegExp(term, 'gi');
 
             var regex = new RegExp(term, 'gi');
 +
            var node;
  
             $content.find('*').contents().each(function () {
+
             while ((node = walker.nextNode())) {
 
+
                 if (!node.nodeValue.match(regex)) continue;
                 if (this.nodeType !== 3) return;
 
                if (!this.nodeValue.match(regex)) return;
 
 
 
                var replaced = this.nodeValue.replace(regex, function (m) {
 
                    return '<mark class="mw-find-highlight">' + m + '</mark>';
 
                });
 
  
                 $(this).replaceWith(replaced);
+
                 var span = document.createElement('span');
             });
+
                span.innerHTML = node.nodeValue.replace(regex,
 +
                    '<mark class="mw-find-highlight">$&</mark>'
 +
                );
 +
                node.parentNode.replaceChild(span, node);
 +
             }
 
         }
 
         }
  
 
         $input.on('input', function () {
 
         $input.on('input', function () {
             doSearch(this.value);
+
             highlight(this.value.trim());
 
         });
 
         });
  

نسخهٔ کنونی تا ‏۳ دسامبر ۲۰۲۵، ساعت ۱۱:۰۵

/* 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 () {

    $('.mw-find-box').each(function () {

        var $input = $(this).find('.mw-find-input');
        var content = document.getElementById('mw-content-text');

        function unwrap() {
            var marks = content.querySelectorAll('mark.mw-find-highlight');
            for (var i = marks.length - 1; i >= 0; i--) {
                var parent = marks[i].parentNode;
                parent.replaceChild(document.createTextNode(marks[i].textContent), marks[i]);
                parent.normalize();
            }
        }

        function highlight(term) {
            unwrap();
            if (!term) return;

            var walker = document.createTreeWalker(content, NodeFilter.SHOW_TEXT, null);
            var regex = new RegExp(term, 'gi');
            var node;

            while ((node = walker.nextNode())) {
                if (!node.nodeValue.match(regex)) continue;

                var span = document.createElement('span');
                span.innerHTML = node.nodeValue.replace(regex,
                    '<mark class="mw-find-highlight">$&</mark>'
                );
                node.parentNode.replaceChild(span, node);
            }
        }

        $input.on('input', function () {
            highlight(this.value.trim());
        });

    });

});
حاج حسین خوش لهجه نابغه ولایت؛ حاج حسین خوش لهجه