انتقل إلى المحتوى

وحدة:Taxonbar

من ويكيبيديا، الموسوعه الحره

يمكن إنشاء صفحة توثيق الوحدة في وحدة:Taxonbar/شرح

local p = {}

local Identifier = require('Module:Identifiers')
local Navbox = require('Module:Navbox')

local props = {
    ["P3186"] = {
        label = "دليل الأصنوفة المرجعي (TAXREF)",
        pattern = "https://inpn.mnhn.fr/espece/cd_nom/$1"
    },
    ["P3746"] = {
		label = "الزهور البرية في إسرائيل",
        pattern = "https://www.wildflowers.co.il/english/plant.asp?ID=$1"
    },
    ["P846"] = {
		label = "المَرفَق العالمي لمعلومات التنوع الحيوي (GBIF)",
        pattern = "https://www.gbif.org/species/$1"
    },
    ["P1391"] = {
		label = "فهرس فنغورم (Fungorum)",
        pattern = "http://www.indexfungorum.org/names/NamesRecord.asp?RecordID=$1"
    },
    ["P2455"] = {
		label = "ملف الأنواع والتهديدات (SPRAT)",
        pattern = "https://www.environment.gov.au/cgi-bin/sprat/public/publicspecies.pl?taxon_id=$1"
    },
    ["P1992"] = {
		label = " موقع بلزي (Plazi)",
        pattern = "https://treatment.plazi.org/id/$1"
    },
    ["P687"] = {
		label = "مكتبة تراث التنوع الحيوي (BHL)",
        pattern = "https://biodiversitylibrary.org/page/$1"
    },
    ["P3322"] = {
		label = "جمعية الفراشات (Vlindernet)",
        pattern = "https://www.vlinderstichting.nl/vlinders/overzicht-vlinders/details-vlinder/?vlinder=$1"
    },
    ["P3105"] = {
		label = "جمعية تيلا بوتانيكا (Tela-botanica)",
        pattern = "https://referentiels.tela-botanica.org/referentiel/index.php?ref=bdtfx&module=FicheTaxon&num_nom=$1"
    },
    ["P3606"] = {
		label = "أنظمة بولد (BOLD)",
        pattern = "http://www.boldsystems.org/index.php/TaxBrowser_TaxonPage?taxid=$1"
    },
    ["P1772"] = {
		label = "قاعدة بيانات نباتات وزارة الزراعة الأمريكية (USDA)",
        pattern = "https://plants.sc.egov.usda.gov/home/plantProfile?symbol=$1"
    },
    ["P4194"] = {
		label = "نباتات كاليفورنيا الأصيلة النادرة والمهددة بالانقراض (CNPS)",
        pattern = "https://rareplants.cnps.org/Plants/ODetails/$1"
    },
    ["P938"] = {
		label = "قاعدة بيانات السُّموك (FishBase)",
        pattern = "https://www.fishbase.ca/summary/$1"
    },
    ["P3088"] = {
		label = "فهرس الكائنات الحية في تايوان (TaiBNET)",
        pattern = "https://taibnet.sinica.edu.tw/chi/taibnet_species_detail.php?name_code=$1"
    },
    ["P5055"] = {
		label = "السجل المُؤقَّت للأنواع البحريَّة وغير البحريَّة (IRMNG)",
        pattern = "https://www.irmng.org/aphia.php?p=taxdetails&id=$1"
    },
    ["P2040"] = {
		label = "قاعدة بيانات سايتس للأنواع (CITES)",
        pattern = "https://speciesplus.net/#/taxon_concepts/$1/legal"
    },
    ["P3240"] = {
		label = "الشبكة الوطنية للتنوع الحيوي (NBN)",
        pattern = "https://data.nbn.org.uk/Taxa/$1"
    },
    ["P3444"] = {
		label = "المرصد الرقمي للطيور (eBird)",
        pattern = "https://ebird.org/species/$1"
    },
    ["P2036"] = {
		label = "قاعدة بيانات النباتات في إفريقيا (APDB)",
        pattern = "https://africanplantdatabase.ch/en/nomen/$1"
    },
    ["P3099"] = {
		label = "مجموعة أنواع الطيور على الإنترنت (IBC)",
        pattern = "https://www.hbw.com/species/$1"
    },
    ["P1940"] = {
		label = "قاعدة بيانات عاريات البذور (conifers)",
        pattern = "https://conifers.org/$1.php"
    },
    ["P1939"] = {
		label = 'قاعدة بيانات  "دنتكسا" (Dyntaxa)',
        pattern = "https://www.dyntaxa.se/taxon/info/$1"
    },
    ["P959"] = {
		label = "أنواع ثدييات العالم (MSW)",
        pattern = "https://www.departments.bucknell.edu/biology/resources/msw3/browse.asp?s=y&id=$1"
    },
    ["P3591"] = {
		label = "قائمة التحقق العالمية لفصائل النباتات المُختارة (WCSPF)",
        pattern = "https://wcsp.science.kew.org/namedetail.do?name_id=$1"
    },
    ["P3594"] = {
		label = "موقع آرينيه (Araneae)",
        pattern = "https://araneae.nmbe.ch/data/$1"
    },
    ["P815"] = {
		label = "نظام معلومات التصنيف المتكامل (ITIS TSN)",
        pattern = "https://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&search_value=$1"
    },
    ["P2464"] = {
		label = "شبكة دليل الحشرات (BugGuide)",
        pattern = "https://bugguide.net/node/view/$1"
    },
    ["P2426"] = {
		label = "قاعدة بيانات زينوكانتو (Xeno-canto)",
        pattern = "https://www.xeno-canto.org/species/$1"
    },
    ["P1746"] = {
		label = "مستودع كلمات حدائق الحيوان (ZooBank)",
        pattern = "https://zoobank.org/NomenclaturalActs/$1"
    },
    ["P1727"] = {
		label = "مُعرِّف الحياة النباتية في أمريكا الشمالية (FNA)",
        pattern = "http://www.efloras.org/florataxon.aspx?flora_id=1&taxon_id=$1"
    },
    ["P3151"] = {
		label = "أنا عالم طبيعة (iNaturalist)",
        pattern = "https://www.inaturalist.org/taxa/$1"
    },
    ["P2794"] = {
		label = "فهرس هباتكارم (IHND)",
        pattern = "http://www.ville-ge.ch/musinfo/bd/cjb/hepatic/detail.php?no_record=$1"
    },
    ["P961"] = {
		label = "الفهرس الدولي لأسماء النباتات (IPNI)",
        pattern = "https://www.ipni.org/n/$1"
    },
    ["P3060"] = {
		label = "فراشات العالم وعثثه (ButMoth)",
        pattern = "https://www.nhm.ac.uk/our-science/data/butmoth/search/GenusDetails.dsml?NUMBER=$1"
    },
    ["P3064"] = {
		label = "فهرس حرشفيات الأجنحة (LepIndex)",
        pattern = "https://www.nhm.ac.uk/our-science/data/lepindex/detail/?taxonno=$1"
    },
    ["P2833"] = {
		label = "قاعدة بيانات أركيف (ARKive)",
        pattern = "https://web.archive.org/web/*/www.arkive.org/wd/$1/"
    },
    ["P1895"] = {
		label = "الحياة البرية في أوروبا (EU Nomen)",
        pattern = "http://www.eu-nomen.eu/portal/taxon.php?GUID=urn:lsid:faunaeur.org:taxname:$1"
    },
    ["P830"] = {
		label = "موسوعة الحياة (EoL)",
        pattern = "https://eol.org/pages/$1"
    },
    ["P4301"] = {
		label = "نباتات لمستقبل ما (PfaF)",
        pattern = "https://pfaf.org/user/Plant.aspx?LatinName=$1"
    },
    ["P1747"] = {
		label = "الحياة النباتية في الصين (FOC)",
        pattern = "http://www.efloras.org/florataxon.aspx?flora_id=2&taxon_id=$1"
    },
    ["P3420"] = {
		label = " كلفلورا (Calflora)",
        pattern = "https://www.calflora.org/cgi-bin/species_query.cgi?where-calrecnum=$1"
    },
    ["P685"] = {
		label = "المركز الوطني الأمريكي لمعلومات التقانة الحيوية (NCBI)",
        pattern = "https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=$1"
    },
    ["P2434"] = {
		label = "الحياة النباتية في القطب الجنوبي (PAF)",
        pattern = "http://panarcticflora.org/results?name=#paf-$1"
    },
    ["P842"] = {
		label = "أعمال المستحاثات (Fossilworks)",
        pattern = "http://www.fossilworks.org/cgi-bin/bridge.pl?a=taxonInfo&taxon_no=$1"
    },
    ["P850"] = {
		label = "السجل الدَّولي للأنواع البحرية (WoRMS)",
        pattern = "https://www.marinespecies.org/aphia.php?p=taxdetails&id=$1"
    },
    ["P1743"] = {
		label = "قائمة تدقيق برادلي و فليتشر",
        pattern = "https://ukmoths.org.uk/search/?entry=$1"
    },
    ["P962"] = {
		label = "مستودع كلمات علم الفطريات (MycoBank)",
        pattern = "https://www.mycobank.org/MB/$1"
    },
    ["P2809"] = {
		label = "الأطلس الأسترالي لحبوب اللقاح والأبواغ (APSA)",
        pattern = "https://web.archive.org/web/*/http://apsa.anu.edu.au/sample/$1"
    },
    ["P2026"] = {
		label = "قاعدة بيانات أفباس (Avibase)",
        pattern = "https://avibase.bsc-eoc.org/species.jsp?avibaseid=$1"
    },
    ["P2946"] = {
		label = "قاعدة بيانات تنوع الجراثيم (BacDive)",
        pattern = "https://bacdive.dsmz.de/strain/$1"
    },
    ["P1070"] = {
		label = "قاعدة بيانات قائمة النباتات (PlantList)",
        pattern = "http://www.theplantlist.org/tpl1.1/record/$1"
    },
    ["P3100"] = {
		label = "الحياة النباتية في أستراليا (FoA)",
        pattern = "https://web.archive.org/web/*/https://www.anbg.gov.au/abrs/online-resources/flora/stddisplay.xsql?pnid=$1"
    },
    ["P3288"] = {
		label = "دليل عناكب العالم (WSC)",
        pattern = "https://www.wsc.nmbe.ch/lsid/$1"
    },
    ["P960"] = {
		label = "قاعدة بيانات تربيكوس (Tropicos)",
        pattern = "http://legacy.tropicos.org/Name/$1"
    },
    ["P1832"] = {
		label = "قاعدة بيانات الأعشاب (GrassBase)",
        pattern = "http://www.kew.org/data/grasses-db/www/$1"
    },
    ["P838"] = {
		label = "مكتبة علم الأحياء (BioLib)",
        pattern = "https://www.biolib.cz/en/taxon/id$1"
    },
    ["P1761"] = {
		label = "مُعرِّف فصيلة في موقع وطسون ودليتز (W&Df)",
        pattern = "http://delta-intkey.com/angio/www/$1.htm"
    },
    ["P4024"] = {
		label = "موقع تنوع الحيوانات (ADW)",
        pattern = "https://animaldiversity.org/accounts/$1/"
    },
    ["P1745"] = {
		label = "قاعدة بيانات النباتات الوعائية في كندا (VASCAN)",
        pattern = "https://data.canadensys.net/vascan/taxon/$1"
    },
    ["P3101"] = {
		label = "الحياة النباتية (FloraBase)",
        pattern = "https://florabase.dpaw.wa.gov.au/browse/profile/$1"
    },
    ["P2752"] = {
		label = "سجل الأحياء في نيوزيلندا (NZOR)",
        pattern = "https://www.nzor.org.nz/names/$1"
    },
    ["P3405"] = {
		label = "سجل الأنواع الهولندية (NSR)",
        pattern = "https://www.nederlandsesoorten.nl/linnaeus_ng/app/views/species/nsr_taxon.php?id=$1"
    },
    ["P3102"] = {
		label = "قاعدة بيانات بلنتاريوم (Plantarium)",
        pattern = "http://www.plantarium.ru/page/view/item/$1.html"
    }
}


local i8 = {
    tracking = '[[تصنيف:معرفات الأصنوفة]]',
    without = '[[تصنيف:معرفات الأصنوفة غير موجودة]]',
    g1 = '[[مساعدة:معرفات الأصنوفة|معرفات الأصنوفة]]',
    name = 'Taxonomy bar'
}

local function getIdsFromWikidata(qid, property)
    local ids = {}
    for _, statement in ipairs(mw.wikibase.getBestStatements(qid, property) or {}) do
        if statement.mainsnak and statement.mainsnak.datavalue then
            local val = statement.mainsnak.datavalue.value
            if val then
                table.insert(ids, val)
            end
        end
    end
    return ids
end

local function createLink(label, pattern, id)
    local url = mw.ustring.gsub(pattern, "%$1", id) 
    return string.format("[%s %s]", url, label)
end

local function makeSections(qid, args, Table)
    local tval = {}
    for property, params in pairs(Table) do
        local ids = getIdsFromWikidata(qid, property) or {}
        if #ids == 0 and args[property] then
            table.insert(ids, args[property])
        end
        params.ids = ids
        tval[property] = params
    end

    local external = {}
    for _, params in pairs(tval) do
        if #params.ids > 0 then
            for _, id in ipairs(params.ids) do
                local link = createLink(params.label, params.pattern, id) 
                table.insert(external, link)
            end
        end
    end

    local params = {
        name = i8.name,
        bodyclass = "hlist",
        group1 = i8.g1,
        list1 = table.concat(external, ' <span style="font-size: 50%;">•</span> ')
    }

    return Navbox._navbox(params)
end

-- الوظيفة الرئيسية
function p.main(frame)
    local options = frame.args
    local page = options["صفحة"]
    local qid

    if page and page ~= "" then
        if mw.wikibase.isValidEntityId(page) then
            qid = page
        else
            qid = mw.wikibase.getEntityIdForTitle(page)
        end
    else
        qid = mw.wikibase.getEntityIdForCurrentPage()
    end

    if not qid then
        return i8.without
    end

    return makeSections(qid, options, props)
end

function p.list( frame )
	return Identifier.make_list(props)
end

return p