Moduł:Wiki

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
Template-info.png Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.OddawajDaneKodyWiki(self,klucz_projektu,kod_jezyka,kod_projektu)
	if(self.tabkodywiki)then
		local parametry_modul=require("Module:Parametry");
        local pudelko_modul=require("Module:Pudełko");
        		
		local czy_klucz_projektu=parametry_modul.CzyTak(klucz_projektu);
		
		local czy_jezyk=parametry_modul.CzyTak(kod_jezyka);
		local czy_projekt=parametry_modul.CzyTak(kod_projektu);
		
		local kod_jezyka_w_bazie=czy_jezyk and kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
		local kod_projektu_w_bazie=czy_projekt and kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
		
		for _,tab_element in ipairs(self.tabkodywiki)do
			if(czy_klucz_projektu)then
				if((parametry_modul.CzyTak(tab_element[1]))and((not parametry_modul.CzyTak(tab_element[2]))and(not parametry_modul.CzyTak(tab_element[3]))))then
					if(tab_element[1]==klucz_projektu)then
						return {tab_element[1],tab_element[2],tab_element[3],tab_element[4],tab_element[5],};
					end;
				end;
			else
				if((not parametry_modul.CzyTak(tab_element[1]))and((parametry_modul.CzyTak(tab_element[2]))or(parametry_modul.CzyTak(tab_element[3]))))then
			    	local tab_element_jezyk=parametry_modul.CzyTak(tab_element[2]) and tab_element[2] or pudelko_modul["Kod języka tego projektu"]();
			    	local tab_element_projekt=parametry_modul.CzyTak(tab_element[3]) and tab_element[3] or pudelko_modul["Kod projektu tego projektu"]();
				
					if((kod_jezyka_w_bazie==tab_element_jezyk) and (kod_projektu_w_bazie==tab_element_projekt))then
						 return {tab_element[1],tab_element[2],tab_element[3],tab_element[4],tab_element[5],};
					end;
				end;
			end;
		end;
	end;
	return;
end;
function p.UstawDaneKodyWiki(self,klucz_projektu,kod_jezyka,kod_projektu,czy_jezyk,czy_projekt)
	local wynik=p:OddawajDaneKodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
	if((type(wynik)=="nil"))then
		if(not self.tabkodywiki)then self.tabkodywiki={};end;
		table.insert(self.tabkodywiki,{klucz_projektu,kod_jezyka,kod_projektu,czy_jezyk,czy_projekt,});
	end;
	
end;
function p.SpecjalneKodyInterwiki(kod_jezyka,kod_projektu)
	if(not kod_jezyka and not kod_projektu)then
		local pudelko_modul=require("Module:Pudełko");
		local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
		local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
		return kod_jezyka_tego_projektu,kod_projektu_tego_projektu;
	elseif(kod_jezyka and not kod_projektu)then
		local pudelko_modul=require("Module:Pudełko");
		local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
		return kod_jezyka,kod_projektu_tego_projektu;
	end;
	local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
	local interwikisiostrzaneangielskie=wiki_interwiki_modul.interwiki_siostrzane_angielskie;
	local kod_projektu_inny=interwikisiostrzaneangielskie[kod_projektu];
	if(kod_projektu_inny)then
		if(not kod_jezyka)then
			return "en",kod_projektu_inny;
		else
			return kod_jezyka,kod_projektu_inny;
		end;
	end;
	if(not kod_jezyka)then
		local pudelko_modul=require("Module:Pudełko");
		local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
		return kod_jezyka_tego_projektu,kod_projektu;
	else
		return kod_jezyka,kod_projektu;
	end;
end;
local function WyzyskiwanieKodow(klucz_projektu,kod_jezyka,kod_projektu)
	local tablica_kodow_strony={};
	local linki_modul=require("Module:Linki");
	local parametry_modul=require("Module:Parametry");
	
	local czy_klucz_projektu=parametry_modul.CzyTak(klucz_projektu);
	local czy_kod_jezyka=parametry_modul.CzyTak(kod_jezyka);
	local czy_kod_projektu=parametry_modul.CzyTak(kod_projektu);
	
	klucz_projektu=czy_klucz_projektu and mw.getContentLanguage():lc(klucz_projektu) or nil;
	kod_jezyka=czy_kod_jezyka and mw.getContentLanguage():lc(kod_jezyka) or nil;
	kod_projektu=czy_kod_projektu and mw.getContentLanguage():lc(kod_projektu) or nil;
	
	local pudelko_modul=require("Module:Pudełko");
	local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
	local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]()
	
	if(czy_klucz_projektu or (czy_kod_jezyka or czy_kod_projektu))then
		
		if(((czy_klucz_projektu)
			  and((klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)
			  	or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu)
			  	 or(klucz_projektu==kod_jezyka_tego_projektu)
			  	  or(klucz_projektu==kod_projektu_tego_projektu)
	    ))
		or (((kod_jezyka)and((kod_jezyka=="")or(kod_jezyka==kod_jezyka_tego_projektu)))
		and ((kod_projektu)and((kod_projektu=="")or(kod_projektu==kod_projektu_tego_projektu))))
		)then
			p:UstawDaneKodyWiki(nil,kod_jezyka_tego_projektu,kod_projektu_tego_projektu,kod_jezyka_tego_projektu,kod_projektu_tego_projektu);
			
			p:UstawDaneKodyWiki(kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu,nil,nil,kod_jezyka_tego_projektu,kod_projektu_tego_projektu);
			p:UstawDaneKodyWiki(kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu,nil,nil,kod_jezyka_tego_projektu,kod_projektu_tego_projektu);
		  return kod_jezyka_tego_projektu,kod_projektu_tego_projektu;
	    end;
		
		local wynik=p:OddawajDaneKodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
	
		if(type(wynik)=="table")then 
			if(wynik[4] and wynik[5])then 
				 return wynik[4],wynik[5];
			else
				return (wynik[4] or kod_jezyka_tego_projektu), (wynik[5] or kod_projektu_tego_projektu);
			end;
		end;
	else
		if((not czy_klucz_projektu)and((not czy_kod_jezyka) and (not czy_kod_projektu)))then
			local pudelko_modul=require("Module:Pudełko");
			
			p:UstawDaneKodyWiki(nil,kod_jezyka_tego_projektu,kod_projektu_tego_projektu,kod_jezyka_tego_projektu,kod_projektu_tego_projektu);
			
			p:UstawDaneKodyWiki(kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu,nil,nil,kod_jezyka_tego_projektu,kod_projektu_tego_projektu);
			p:UstawDaneKodyWiki(kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu,nil,nil,kod_jezyka_tego_projektu,kod_projektu_tego_projektu);
			
			return kod_jezyka_tego_projektu,kod_projektu_tego_projektu;
		end;
	end;
	
	local klucz_projektu_uzyskany;
	if(not czy_klucz_projektu)then
		klucz_projektu_uzyskany=(kod_jezyka or "")..":"..(kod_projektu or "");
	else
		klucz_projektu_uzyskany=klucz_projektu;
	end;
	
    local nazwa_strony,kod_jezyka_koncowy,kod_projektu_koncowy,kod_jezyka_poczatkowy,kod_projektu_poczatkowy=linki_modul.KodyNazwyStrony(klucz_projektu_uzyskany..":Main Page",nil,nil,tablica_kodow_strony);

    kod_jezyka_koncowy,kod_projektu_koncowy=p.SpecjalneKodyInterwiki(kod_jezyka_koncowy,kod_projektu_koncowy);
    
    local pudelko_modul=require("Module:Pudełko");
    local kod_jezyka_koncowy=parametry_modul.CzyTak(kod_jezyka_koncowy) and kod_jezyka_koncowy or kod_jezyka_tego_projektu;
    local kod_projektu_koncowy=parametry_modul.CzyTak(kod_projektu_koncowy) and kod_projektu_koncowy or kod_projektu_tego_projektu;
    
    local kod_jezyka_strony=parametry_modul.CzyTak(kod_jezyka) and kod_jezyka or kod_jezyka_tego_projektu;
    local kod_projektu_strony=parametry_modul.CzyTak(kod_projektu) and kod_projektu or kod_projektu_tego_projektu;
    
    local czy_jezyk=(czy_klucz_projektu
    					and (mw.ustring.match(klucz_projektu,"^"..kod_jezyka_koncowy.."$")
                    			or mw.ustring.match(klucz_projektu,"^"..kod_jezyka_koncowy..":") 
                    				or mw.ustring.match(klucz_projektu,":"..kod_jezyka_koncowy.."$")
                    					or mw.ustring.match(klucz_projektu,":"..kod_jezyka_koncowy..":"))
                    	   or((not czy_klucz_projektu)and(kod_jezyka_strony==kod_jezyka_koncowy))) and kod_jezyka_koncowy or nil;
                    	   
    local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
	local interwikisiostrzaneangielskie=wiki_interwiki_modul.interwiki_siostrzane_angielskie;                	   
	
    local czy_projekt=(czy_klucz_projektu
    					and (mw.ustring.match(klucz_projektu,"^"..kod_projektu_koncowy.."$")
                    			or mw.ustring.match(klucz_projektu,"^"..kod_projektu_koncowy..":") 
                    				or mw.ustring.match(klucz_projektu,":"..kod_projektu_koncowy.."$")
                    					or mw.ustring.match(klucz_projektu,":"..kod_projektu_koncowy..":"))
                      	   or((not czy_klucz_projektu)and((interwikisiostrzaneangielskie[kod_projektu_strony] or kod_projektu_strony)==kod_projektu_koncowy))) and kod_projektu_koncowy or nil;
    
    czy_jezyk=czy_klucz_projektu and ((czy_projekt and not czy_jezyk) and kod_jezyka_tego_projektu or czy_jezyk) or czy_jezyk;
    czy_projekt=czy_klucz_projektu and ((czy_jezyk and not czy_projekt) and kod_projektu_tego_projektu or czy_projekt) or czy_projekt;
    
    if((not czy_klucz_projektu)and(not czy_jezyk)and(not czy_projekt))then
    	if(kod_jezyka_strony==kod_projektu_koncowy)then
    		czy_projekt=((not kod_projektu)or(kod_projektu=="")) and kod_projektu_tego_projektu or nil;
    		czy_jezyk=nil;
    	end;
    	if(kod_projektu_strony==kod_jezyka_koncowy)then
    		czy_jezyk=((not kod_jezyka)or(kod_jezyka=="")) and kod_jezyka_tego_projektu or nil;
    		czy_projektu=nil;
    	end;
    end;
    
    p:UstawDaneKodyWiki(nil,kod_jezyka_koncowy,kod_projektu_koncowy,czy_jezyk,czy_projekt);
    if(klucz_projektu)then
    	p:UstawDaneKodyWiki(klucz_projektu,nil,nil,czy_jezyk,czy_projekt);
    else
    	p:UstawDaneKodyWiki(nil,kod_jezyka,kod_projektu,czy_jezyk,czy_projekt);
    end;
    
    czy_jezyk=czy_jezyk or kod_jezyka_tego_projektu;
    czy_projekt=czy_projekt or kod_projektu_tego_projektu;
    
    return czy_jezyk,czy_projekt;
end;
function p.KluczProjektu(klucz_projektu) 
    local kod_jezyka_koncowy,kod_projektu_koncowy=WyzyskiwanieKodow(klucz_projektu,nil,nil);
    return kod_jezyka_koncowy,kod_projektu_koncowy;
end;
function p.KodyGeneruj(kod_jezyka,kod_projektu)
    local kod_jezyka_koncowy,kod_projektu_koncowy=WyzyskiwanieKodow(nil,kod_jezyka,kod_projektu);
    return kod_jezyka_koncowy,kod_projektu_koncowy;
end;
function p.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu)
  local parametry_modul=require("Module:Parametry");
  local kod_jezyka2;local kod_projektu2;
  if(parametry_modul.CzyTak(klucz_projektu))then
		kod_jezyka2,kod_projektu2=p.KluczProjektu(klucz_projektu);
  else
		kod_jezyka2,kod_projektu2=p.KodyGeneruj(kod_jezyka,kod_projektu);
  end;
  return kod_jezyka2,kod_projektu2;
end;
function p.KluczProjektuWiki(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local kod_jezyka,kod_projektu=p.KodyWiki(args["klucz projektu"],args["kod języka"],args["kod projektu"]);
	local pudelko_modul=require("Module:Pudełko");
	local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
	local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
	if((kod_jezyka~=kod_jezyka_tego_projektu)and(kod_projektu~=kod_projektu_tego_projektu))then
		return kod_jezyka..":"..kod_projektu;
	elseif(kod_jezyka~=kod_jezyka_tego_projektu)then
		return kod_jezyka;
	elseif(kod_projektu~=kod_projektu_tego_projektu)then
		return kod_projektu;
	else
		return "";
	end;
end;
p["KodJęzykaWiki"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local wiki_modul=require("Module:Wiki");
	local kod_jezyka,_=p.KodyWiki(args["klucz projektu"],args["kod języka"],args["kod projektu"]);
	return kod_jezyka;
end;
p["KodProjektuWiki"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local wiki_modul=require("Module:Wiki");
	local _,kod_projektu=p.KodyWiki(args["klucz projektu"],args["kod języka"],args["kod projektu"]);
	return kod_projektu;
end;
function p.WikidaneIdWiki(frame)
    local parametry_modul=require("Module:Parametry");
    local args=parametry_modul.PobierzArgsParametry(frame);

   	local klucz_projektu=args["klucz projektu"];
	local kod_jezyka=args["kod języka"];
	local kod_projektu=args["kod projektu"];
		
   	kod_jezyka,kod_projektu=p.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
    local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki").kody_projektow_wikidane;
    local pudelko_modul=require("Module:Pudełko");
    local parametry_modul=require("Module:Parametry");
	if(not parametry_modul.CzyTak(kod_jezyka))then kod_jezyka=pudelko_modul["Kod języka tego projektu"]();end;
	if(not parametry_modul.CzyTak(kod_projektu))then kod_projektu=pudelko_modul["Kod projektu tego projektu"]();end;
	
    local kod_projektu_identyfikatora_projektu_11=wiki_interwiki_modul.jezykowe[kod_projektu];    
    local kod_projektu_identyfikatora_projektu_12=wiki_interwiki_modul.angielskie[kod_projektu];
    
    local czy_wspierany=mw.language.isKnownLanguageTag(kod_jezyka);
    if(czy_wspierany)then
    	if(kod_projektu_identyfikatora_projektu_11)then 
    		return kod_jezyka..kod_projektu_identyfikatora_projektu_11;
    	elseif(kod_projektu_identyfikatora_projektu_12) then
     		return kod_projektu_identyfikatora_projektu_12;
    	else 
     		return nil;
    	end;
    else
    	return nil;
    end;
end;
function p.WikidaneOdpowiednikStrony(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	
	local nazwa_strony=args["nazwa strony"];
	local kod_jezyka=args["kod języka"];
	local kod_projektu=args["kod projektu"];
	local klucz_projektu=args["klucz projektu"];
	local kod_jezyka_baza=args["kod języka bazy"];
	local kod_projektu_baza=args["kod projektu bazy"];
    local klucz_projektu_baza=args["klucz projektu bazy"];
	    
	local identyfikator_projektu_globalnej_danej_wiki=p.WikidaneIdWiki{
		                     ["klucz projektu"]=klucz_projektu_baza,
		                     ["kod języka"]=kod_jezyka_baza,
		                     ["kod projektu"]=kod_projektu_baza,
	};
	if(not identyfikator_projektu_globalnej_danej_wiki)then identyfikator_projektu_globalnej_danej_wiki=mw.wikibase.getGlobalSiteId();end;
	local identyfikator_strony=mw.wikibase.getEntityIdForTitle(nazwa_strony,identyfikator_projektu_globalnej_danej_wiki);
	if(not identyfikator_strony)then return nil;end;
	local identyfikator_projektu_globalnej_danej_wiki_2=p.WikidaneIdWiki{
		                    ["klucz projektu"]=klucz_projektu,
		                    ["kod języka"]=kod_jezyka,
		                    ["kod projektu"]=kod_projektu,
	};
	if(not identyfikator_projektu_globalnej_danej_wiki_2)then return;end;
    local odpowiednik=mw.wikibase.getSitelink(identyfikator_strony,identyfikator_projektu_globalnej_danej_wiki_2);
    if(odpowiednik)then
    	local odpowiednik_strony_danej_wiki_na_innej_wiki,_=mw.ustring.gsub(odpowiednik,"[_%s]+"," ");
    	return odpowiednik_strony_danej_wiki_na_innej_wiki;
    else
        return nil
    end;
end;
function p.CzyIstniejeDanaWiki(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local klucz_projektu=args["klucz projektu"];
	local kod_jezyka=args["kod języka"];
	local kod_projektu=args["kod projektu"];
	local kod_jezyka,kod_projektu=p.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
	if(kod_jezyka and kod_projektu)then
		return p.WikidaneIdWiki{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
	else
		return;
	end;
end;
function p.CzyIstniejeStronaDanejWiki(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local html_modul=require("Module:Html");
	local strona=html_modul.DecodeHtml(args["strona"]);
	local czy_url=parametry_modul.CzyTak(args["url"]);
	if(czy_url)then
		local hash=args["nagłówek"];
		if(parametry_modul.CzyTak(hash))then
			return "sun";
		else
			return "su";
		end;
	end;
	local nazwy_modul=require("Module:Nazwy");
	local parametry_modul=require("Module:Parametry")
	local idwiki=p.CzyIstniejeDanaWiki(frame);
	local klucz_projektu=args["klucz projektu"];
	local kod_jezyka=args["kod języka"];
	local kod_projektu=args["kod projektu"];
	local hash=args["nagłówek"];
	local parametry=args["parametry"];
	local aktywny=args["aktywny"];
    local kod_jezyka,kod_projektu=p.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
	local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
	local function CzyParametryLinku(kod)
		if(parametry_modul.CzyTak(parametry))then
			return kod.."p";
		else
			return kod;
		end;
	end;
	if (not idwiki)then 
		if(wiki_interwiki_modul.tab_nowiki_data[kod_projektu])then
			if(not parametry_modul.CzyTak(hash))then
				return CzyParametryLinku("ipw");
			else
				return CzyParametryLinku("inpw");
			end;
		end;
		return CzyParametryLinku("dwni");
	end;
	if(idwiki=="plwikibooks")then
		strona=nazwy_modul["PEŁNANAZWASTRONY"](strona)
		local wikidane_modul=require("Module:Wikidane");
		local id=wikidane_modul.id{args={["idwiki"]=idwiki,[1]=strona}};
		local title=mw.title.getCurrentTitle();
		if(strona==title.fullText)then 
			if(not parametry_modul.CzyTak(hash))then
				return CzyParametryLinku((not id)and ((aktywny) and "wash" or "was") or ((aktywny) and "washew" or "wasew"));
			else
				return CzyParametryLinku((not id)and "wasn" or "wasnew");
			end;
		end;
		local title=mw.title.makeTitle('',strona);
		local czy_istnieje=title and (title:getContent() or title.exists) or nil;
		if(czy_istnieje)then
			if(not parametry_modul.CzyTak(hash))then
				return CzyParametryLinku((not id)and "iw" or "iwew");
			else
				return CzyParametryLinku((not id)and "inw" or "inwew");
			end;
		else
			if(not parametry_modul.CzyTak(hash))then
				return CzyParametryLinku("niw");
			else
				return CzyParametryLinku("ninw");
			end;
		end;
	else
		strona=nazwy_modul["PEŁNANAZWASTRONY"]{[1]=strona,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
		local wikidane_modul=require("Module:Wikidane");
		local id=wikidane_modul.id{args={["idwiki"]=idwiki,[1]=strona}};
		if(id)then
			if(not parametry_modul.CzyTak(hash))then
				return CzyParametryLinku("iew");
			else
				return CzyParametryLinku("inew");
			end;
		else
			if(not parametry_modul.CzyTak(hash))then
				return CzyParametryLinku("niew");
			else
				return CzyParametryLinku("ninew");
			end;
		end;
	end;
end;
p["CzyBieżącaWiki"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	
	local klucz_projektu=args["klucz projektu"];
	local kod_jezyka=args["kod języka"];
	local kod_projektu=args["kod projektu"];
	
	if(not klucz_projektu and not kod_jezyka and not kod_projektu)then return "tak";end;
	
	local wiki_modul=require("Module:Wiki");
	local parametry_modul=require("Module:Parametry");
	local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
	if(not kod_jezyka and not kod_projektu)then return true;end;
	local pudelko_modul=require("Module:Pudełko");
	local kod_jezyka_pl=pudelko_modul["Kod języka tego projektu"]();
	local kod_projektu_lokalne=pudelko_modul["Kod projektu tego projektu"]();
	if((kod_jezyka==kod_jezyka_pl)and(kod_projektu==kod_projektu_lokalne))then
		return "tak";
	end;
	return;
end;
return p;