<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://www.copticpedia.org/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A%3AGadget-LinksInfo.js</id>
	<title>ميدياويكي:Gadget-LinksInfo.js - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://www.copticpedia.org/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A%3AGadget-LinksInfo.js"/>
	<link rel="alternate" type="text/html" href="https://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-LinksInfo.js&amp;action=history"/>
	<updated>2026-04-11T23:47:40Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-LinksInfo.js&amp;diff=8442&amp;oldid=prev</id>
		<title>Gerges: مراجعة واحدة</title>
		<link rel="alternate" type="text/html" href="https://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-LinksInfo.js&amp;diff=8442&amp;oldid=prev"/>
		<updated>2021-03-19T00:38:26Z</updated>

		<summary type="html">&lt;p&gt;مراجعة واحدة&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;//developer: user:Ebraminio&lt;br /&gt;
/*jslint regexp: true */&lt;br /&gt;
/*browser: true*/&lt;br /&gt;
/*global jQuery: false, mw: false, window: false, console: false */&lt;br /&gt;
(function ($) {&lt;br /&gt;
    'use strict';&lt;br /&gt;
    // Library!&lt;br /&gt;
    function addInfoToNode(node, info, color) {&lt;br /&gt;
        $(node).after('&amp;lt;span class=&amp;quot;infoAddedcontent&amp;quot;&amp;gt;[&amp;lt;span style=&amp;quot;color: ' + color + ';&amp;quot;&amp;gt;' + info + '&amp;lt;/span&amp;gt;]&amp;lt;/span&amp;gt;');&lt;br /&gt;
    }&lt;br /&gt;
    function getSelectedTextLinks() {&lt;br /&gt;
        // borrowed from: http://stackoverflow.com/questions/4220478 :)&lt;br /&gt;
        var selection,&lt;br /&gt;
            selectionAncestor,&lt;br /&gt;
            range,&lt;br /&gt;
            allWithinRangeParent,&lt;br /&gt;
            allSelected,&lt;br /&gt;
            i,&lt;br /&gt;
            el;&lt;br /&gt;
&lt;br /&gt;
        // if `window.getSelection` is not defined (on IE) return nothing.&lt;br /&gt;
        if (window.getSelection === undefined) {&lt;br /&gt;
            return [];&lt;br /&gt;
        }&lt;br /&gt;
        selection = window.getSelection();&lt;br /&gt;
&lt;br /&gt;
        // if nothing is selected, return empty array&lt;br /&gt;
        if (selection.isCollapsed) {&lt;br /&gt;
            return [];&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        range = selection.getRangeAt(0);&lt;br /&gt;
        selectionAncestor = range.commonAncestorContainer;&lt;br /&gt;
        if (selectionAncestor.getElementsByTagName === undefined) { // if it is not a formal HTML selection&lt;br /&gt;
            return [];&lt;br /&gt;
        }&lt;br /&gt;
        allWithinRangeParent = selectionAncestor.getElementsByTagName('a');&lt;br /&gt;
&lt;br /&gt;
        allSelected = [];&lt;br /&gt;
        for (i = 0; (el = allWithinRangeParent[i]) !== undefined; i += 1) {&lt;br /&gt;
            // The second parameter says to include the element &lt;br /&gt;
            // even if it's not fully selected&lt;br /&gt;
            if (selection.containsNode(el, true)) {&lt;br /&gt;
                allSelected.push(el);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return allSelected;&lt;br /&gt;
    }&lt;br /&gt;
    function getArticleLinks() {&lt;br /&gt;
        var allSelected = getSelectedTextLinks();&lt;br /&gt;
        if (allSelected.length === 0) {&lt;br /&gt;
            return $('#bodyContent a');&lt;br /&gt;
        }&lt;br /&gt;
        return allSelected;&lt;br /&gt;
    }&lt;br /&gt;
    function parseUrl(url) {&lt;br /&gt;
        if (url === undefined) {&lt;br /&gt;
            return undefined;&lt;br /&gt;
        }&lt;br /&gt;
        var match = url.match(/\/wiki\/([^#]*)/);&lt;br /&gt;
        if (match === null) {&lt;br /&gt;
            match = url.match(/\/w\/index\.php\?title=([^&amp;amp;#]*).*redlink=1/);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (match !== null) {&lt;br /&gt;
            return decodeURI(match[1]); // returns () matched text&lt;br /&gt;
        }&lt;br /&gt;
        return undefined;&lt;br /&gt;
    }&lt;br /&gt;
    function getLinkTitle(link) {&lt;br /&gt;
        return parseUrl(link.href);&lt;br /&gt;
    }&lt;br /&gt;
    function firstUserAndTime(data) {&lt;br /&gt;
        var res;&lt;br /&gt;
        $.each(data.query.pages, function (key, value) { // for retrieving first object index&lt;br /&gt;
            if (value.revisions !== undefined) {&lt;br /&gt;
                res = [value.revisions[0].user, value.revisions[0].timestamp];&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        return res;&lt;br /&gt;
    }&lt;br /&gt;
    function detectHasTemplate(data) {&lt;br /&gt;
        var hasTemplate = false;&lt;br /&gt;
        $.each(data.query.pages, function (key, value) { // for retrieving first object index&lt;br /&gt;
            hasTemplate = value.templates === undefined ? false : true;&lt;br /&gt;
        });&lt;br /&gt;
        return hasTemplate;&lt;br /&gt;
    }&lt;br /&gt;
    //&lt;br /&gt;
&lt;br /&gt;
    function infoAdder(infoType) {&lt;br /&gt;
        var enableDisambigDetection = $('#enableDisambigDetection').is(':checked'),&lt;br /&gt;
            enableFirstUserName = $('#enableFirstUserName').is(':checked'),&lt;br /&gt;
            enableFirstUserTime = $('#enableFirstUserTime').is(':checked'),&lt;br /&gt;
            enableRedirectDetection = $('#enableRedirectDetection').is(':checked'),&lt;br /&gt;
            enableRedLinkDetection = $('#enableRedLinkDetection').is(':checked'),&lt;br /&gt;
            api = new mw.Api(),&lt;br /&gt;
            links = getArticleLinks();&lt;br /&gt;
        if (enableRedLinkDetection) {&lt;br /&gt;
            $(links).filter('a.new').each(function (key, value) {&lt;br /&gt;
                // value.innerHTML = value.innerHTML + ' @';&lt;br /&gt;
                addInfoToNode(value, 'غيرموجود', 'red');&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
        $(links).each(function (key, value) {&lt;br /&gt;
            var jValue = $(value),&lt;br /&gt;
                href = jValue.attr('href'),&lt;br /&gt;
                name;&lt;br /&gt;
            if (href === undefined || href.indexOf('/wiki/') !== 0) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            name = getLinkTitle(value);&lt;br /&gt;
            if (name === undefined) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            // value.innerHTML = value.innerHTML + ' @';&lt;br /&gt;
            if (enableRedirectDetection &amp;amp;&amp;amp; jValue.is('a.mw-redirect')) {&lt;br /&gt;
                addInfoToNode(value, 'تحويل', 'green');&lt;br /&gt;
            }&lt;br /&gt;
            if (enableDisambigDetection) {&lt;br /&gt;
                api.get({&lt;br /&gt;
                    action: 'query',&lt;br /&gt;
                    prop: 'templates',&lt;br /&gt;
                    titles: name,&lt;br /&gt;
                    tltemplates: 'قالب:توضيح\u200cتوضيح'&lt;br /&gt;
                }).done(function (data) {&lt;br /&gt;
                    if (detectHasTemplate(data)) {&lt;br /&gt;
                        addInfoToNode(value, 'توضيح\u200cتوضيح', 'aqua');&lt;br /&gt;
                    }&lt;br /&gt;
                }).fail(function (error) {&lt;br /&gt;
                    console.log('API failed :(', error);&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            if (enableFirstUserName || enableFirstUserTime) {&lt;br /&gt;
                api.get({&lt;br /&gt;
                    action: 'query',&lt;br /&gt;
                    prop: 'revisions',&lt;br /&gt;
                    titles: name,&lt;br /&gt;
                    rvlimit: '1',&lt;br /&gt;
                    rvprop: 'user|timestamp',&lt;br /&gt;
                    rvdir: 'newer'&lt;br /&gt;
                }).done(function (data) {&lt;br /&gt;
                    var fut = firstUserAndTime(data);&lt;br /&gt;
                    if (fut !== undefined) {&lt;br /&gt;
                        if (enableFirstUserName) {&lt;br /&gt;
                            addInfoToNode(value, 'م:' + fut[0], 'gray');&lt;br /&gt;
                        }&lt;br /&gt;
                        if (enableFirstUserTime) {&lt;br /&gt;
                            addInfoToNode(value, 'في ' + new Date(fut[1]).toDateString(), 'orange');&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }).fail(function (error) {&lt;br /&gt;
                    console.log('API failed :(', error);&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(function () {&lt;br /&gt;
        $('#articlesLinksInfo').remove();&lt;br /&gt;
        var html = '&amp;lt;span style=&amp;quot;font-size: 40%;display: block;line-height: 1px;padding: 0px 0px 5px;color: grey;margin-top: -5px&amp;quot; id=&amp;quot;articlesLinksInfo&amp;quot;&amp;gt;';&lt;br /&gt;
        html = html + '&amp;lt;a id=&amp;quot;allInfo-button&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt;عرض معلومات الروابط&amp;lt;/a&amp;gt;';&lt;br /&gt;
        html = html + ' &amp;lt;input checked type=&amp;quot;checkbox&amp;quot; name=&amp;quot;enableDisambigDetection&amp;quot; id=&amp;quot;enableDisambigDetection&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;enableDisambigDetection&amp;quot;&amp;gt;توضيح؟&amp;lt;/label&amp;gt;';&lt;br /&gt;
        html = html + ' &amp;lt;input checked type=&amp;quot;checkbox&amp;quot; name=&amp;quot;enableFirstUserName&amp;quot; id=&amp;quot;enableFirstUserName&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;enableFirstUserName&amp;quot;&amp;gt;أول مستخدم؟&amp;lt;/label&amp;gt;';&lt;br /&gt;
        html = html + ' &amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;enableFirstUserTime&amp;quot; id=&amp;quot;enableFirstUserTime&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;enableFirstUserTime&amp;quot;&amp;gt;تاريخ أول تعديل؟&amp;lt;/label&amp;gt;';&lt;br /&gt;
        html = html + ' &amp;lt;input checked type=&amp;quot;checkbox&amp;quot; name=&amp;quot;enableRedirectDetection&amp;quot; id=&amp;quot;enableRedirectDetection&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;enableRedirectDetection&amp;quot;&amp;gt;تحويل؟&amp;lt;/label&amp;gt;';&lt;br /&gt;
        html = html + ' &amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;enableRedLinkDetection&amp;quot; id=&amp;quot;enableRedLinkDetection&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;enableRedLinkDetection&amp;quot;&amp;gt;غيرموجود؟&amp;lt;/label&amp;gt;';&lt;br /&gt;
        html = html + '&amp;lt;/span&amp;gt;';&lt;br /&gt;
&lt;br /&gt;
        $('h1:first').append(html);&lt;br /&gt;
&lt;br /&gt;
        $('#allInfo-button').click(function (event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            infoAdder('all');&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
}(jQuery));&lt;br /&gt;
mw.util.addCSS(&amp;quot;.infoAddedcontent{font-weight:normal!important;margin-right:2px;font-family:tahoma;font-size:12px;position:relative;top:-2px;}&amp;quot;);&lt;/div&gt;</summary>
		<author><name>Gerges</name></author>
	</entry>
</feed>