ميدياويكي:Gadget-SearchEngines.js

من كوبتيكبيديا
اذهب إلى التنقلاذهب الى البحث
لم تعد النسخة القابلة للطباعة مدعومة وقد تحتوي على أخطاء في العرض. يرجى تحديث علامات متصفحك المرجعية واستخدام وظيفة الطباعة الافتراضية في متصفحك بدلا منها.

ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.

  • فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
  • جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
  • إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
  • أوبرا: اضغط Ctrl-F5.
//[[fr:MediaWiki:Gadget-ExternalSearch.js]]
/* globals mw, $ */

if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ) {

    mw.loader.using( 'jquery.throttle-debounce', function () {
        'use strict';

        var searchbox;

        function externalSearchEngines( $ ) {
            // OOUI
            var $searchbox = $( '#searchText input' );
            if ( !$searchbox.length ) {
                // fallback, markup before OOUI
                $searchbox = $( 'input#searchText' );
                if ( !$searchbox.length ) {
                    return;
                }
            }

            searchbox = $searchbox[ 0 ];

            var language = 'ar';
            var domain = mw.config.get( 'wgServer' ).replace( /^.*?\/\//, '' );

            var colorExternal = $( '<a class="external">' )
                .wrap( '<div class="mw-parser-output">' )
                .css( 'color' );

            var $choices = $( '<div>' );
            $choices.css( {
                'clear': 'right',
                'padding-top': '0.5em'
            } );

            $choices.append( '<b>المصادر العربية:</b> ' );

            var space = '';
            searchEngines.forEach( function ( engine ) {
                if ( space ) {
                    $choices.append( space );
                }
                space = '&nbsp;• ';

                var $a = $( '<a>' );
                $a.text( engine.Name );
                $a.attr( 'target', '_blank' );
                $a.css( 'color', colorExternal );

                $choices.append( $a );

                // préparsage des templates, pour avoir ça de moins à exécuter lors des events "text input"
                engine.HomePage = engine.HomePage
                    .split( '{language}' ).join( language )
                    .split( '{domain}' ).join( domain );
                engine.Template = engine.Template
                    .split( '{language}' ).join( language )
                    .split( '{domain}' ).join( domain );

                engine.Element = $a[ 0 ];
            } );

            updateHrefs();
            $searchbox.on( 'input', $.debounce( 100, updateHrefs ) );

            $choices.insertAfter( '#mw-search-top-table' );
        }

        function updateHrefs() {
            var searchTerms = searchbox.value;
            if ( searchTerms === '' ) {
                searchEngines.forEach( function ( engine ) {
                    engine.Element.href = engine.HomePage;
                } );
            } else {
                searchEngines.forEach( function ( engine ) {
                    engine.Element.href = engine.Template.split( '{searchTerms}' ).join( searchTerms );
                } );
            }
        }

        var searchEngines = [
            {
                Name: 'المكتبة',
                HomePage: 'https://www.google.com/search?hl={language}&q=site:al-maktaba.org ',
                Template: 'https://www.google.com/search?hl={language}&q=site:al-maktaba.org "{searchTerms}"'
            },
            {
                Name: 'لبلب',
                HomePage: 'https://lableb.com/',
                Template: 'https://lableb.com/search?q={searchTerms}'
            },
            {
                Name: 'الأنطولوجيا',
                HomePage: 'https://ontology.birzeit.edu/',
                Template: 'https://ontology.birzeit.edu/term/{searchTerms}'
            },
            {
                Name: 'المعجم التاريخي',
                HomePage: 'https://www.dohadictionary.org/',
                Template: 'https://www.dohadictionary.org/#/dictionary/{searchTerms}'
            },
            {
                Name: 'المكتبة العربية',
                HomePage: 'https://duckduckgo.com/?q=site:arablib.com ',
                Template: 'https://duckduckgo.com/?q=site:arablib.com {searchTerms}'
            },
            {
                Name: 'مساحة',
                HomePage: 'https://www.google.com/search?hl={language}&q=site:www.masaha.org/research/book/ ',
                Template: 'https://www.google.com/search?hl={language}&q=site:www.masaha.org/research/book/ {searchTerms}'
            },
            {
                Name: 'غيرها',
                HomePage: 'https://www.google.com/search?lr=lang_ar',
                Template: 'https://www.google.com/search?lr=lang_ar&q=site:.org {searchTerms}'
            }
        ];

        $( externalSearchEngines );

    } );
}