ميدياويكي: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 );

    } );
}