Moduł:Dopracować

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
Template-info.png Dokumentacja modułu [zobacz] [edytuj] [historia] [odśwież]

Moduł techniczny wspierający szablon {{dopracować}}. Wszelkie instrukcje użycia są przedstawione na stronie dokumentacji szablonu.

Podstawowe funkcje

test

Funkcja do sprawdzania, czy szablon {{dopracować}} jest wywołany z parametrami określającymi powody jego umieszczenia. Jeśli żadnych powodów nie podano to zwraca pusty tekst.

icon

Funkcja zwraca zwraca wartość icon danego problemu lub jego wartość domyślną.

text

Funkcja do generowania treści wyświetlanej przez szablon {{dopracować}}.

Dodatkowe funkcje

errormodule

Funkcja sprawdza, czy w szablonie {{dopracować}} po podanych parametrach występuje błąd.

unknown

Funkcja sprawdza, czy szablon {{dopracować}} przyjmuje nieznane nazwane parametry.

repeatfun

Funkcja sprawdza, czy w szablonie {{dopracować}} występują powtarzające się parametry nazwane i nienazwane.
local resources = mw.loadData( 'Moduł:Dopracować/resources' )
function newresult(result)
	for i, v in ipairs(resources.compact or {}) do
		local r, c = mw.ustring.gsub(result, v.pattern, v.replace)
		if c > 0 then
			result = r
			break
		end
	end
	return result
end
function ProblemToSpace(category, frame)
	local cal={}
	for i, val in ipairs(resources.reasons) do
		 for i2, val2 in ipairs(val.space)do
		 	if(val2==category)then
		 		 for i3, val3 in ipairs(val.aliases) do
		 		 	cal[val3]=i
		 		 end
		 	end
		 end
	end
	local mapParamToReason = {}
    for i, v in ipairs(resources.reasons) do
		for _, a in ipairs(v.aliases) do
			mapParamToReason[a] = i
		end
	end
   local pf = frame:getParent()
   for i, val in pairs(pf.args)do
   		if(type(i)=="number")then
   			local val0=mw.text.trim(val)
   			local c=mapParamToReason[val0]
   			if(c)then 
   				if(not cal[val0])then
   					return true
   				end
   			end
   		else
   			local c=mapParamToReason[i]
   			if(c)then
   				 if(not cal[i])then
   				 	return true
   				 end
   			end
   		end	
   end
   return false
end
return {
	test = function(frame)
		local un=require("Moduł:Dopracować").unknown(frame);
		if(un~="")then return "true" end
		local pf = frame:getParent()
		-- scan reasons without dates
		local sectionParamIndex = resources.data.sectionParamIndex
		local sectionParamValue = resources.data.sectionParamValue
		for i, reason in ipairs(pf.args) do
				if reason and ((i ~= sectionParamIndex) or (reason ~= sectionParamValue)) then
					if #mw.text.trim(reason) > 0 then
						     return "true"
					end
				end
		--	end
		end
		local mapParamToReason = {}
		for i, v in ipairs(resources.reasons) do
			for _, a in ipairs(v.aliases) do
				mapParamToReason[a] = i
			end
		end
		-- scan well known reasons with optional date
		for _, v in ipairs(resources.reasons) do
			for _, k in ipairs(v.aliases) do
				local object = pf:getArgument(k)
				if object then
					local currentDate = object:expand()
					if currentDate then
						if(mapParamToReason[k])then
						    return "true"
					    end
					end
				end
			end
		end
	
		return nil
	end,
	
	icon = function(frame)
		local pf = frame:getParent()
 
		local onlyReason = nil
 
		local mapParamToReason = {}
		for i, v in ipairs(resources.reasons) do
			for _, a in ipairs(v.aliases) do
				mapParamToReason[a] = i
			end
		end
 
		-- scan well known reasons with date
		local args={}
	    if(require("Moduł:Dopracować").errormodule(frame,args)=="")then
			for k, i in pairs(mapParamToReason) do
				local object = pf:getArgument(k)
					if object then
						local currentDate = object:expand()
							if currentDate then
					    		if not onlyReason then
									onlyReason = i
					    		elseif onlyReason ~= i then
									onlyReason = 0
									break
								end
							end
					end
			end
            
            -- scan reasons without dates
			if not onlyReason then
				for i, reason in  ipairs(pf.args) do
					--local object = pf:getArgument(i)
					--if object then
					--	local reason = object:expand()
					if reason and ((i ~= resources.data.sectionParamIndex) or (reason ~= resources.data.sectionParamValue)) then
						if mw.text.trim(reason) ~= "" then
							local known = mapParamToReason[reason]
							if known then
								if not onlyReason then
									onlyReason = known
								elseif onlyReason ~= known then
									onlyReason = 0
									break
								end
							end
					    end
					end
				end
			end
		end
		local icon = nil
		if onlyReason then
			local reasonData = resources.reasons[onlyReason]
			if reasonData then
				icon = reasonData.icon
			end
		end
 
		return icon or resources.default.icon
	end,
    errormodule =  function (frame,args)
    	if(not args)then args={} end 
    	args.title = mw.title.getCurrentTitle()
		args.pf = frame:getParent()
		args.nazwaprzestrzeni=args.pf.args["nazwa przestrzeni nazw"]
		args.nazwijstrona=args.pf.args["nazwij jednostką"]
		args.nazwaprzestrzeni=(not args.nazwaprzestrzeni)and args.title.nsText or args.nazwaprzestrzeni;
		args.nazwaprzestrzeni=mw.getCurrentFrame():callParserFunction{name='#invoke:Nazwy',args={"Np",args.nazwaprzestrzeni}};
	    args.stronaglownawikijuniora=args.pf.args["strona główna dla dzieci"]
	    args.stronaglownawikijuniora=(not args.stronaglownawikijuniora)and "Wikijunior:Strona główna" or string.gsub(args.stronaglownawikijuniora,"_"," ");
	    args.nazwastrony=args.pf.args["nazwa jednostki"]
	    args.nazwastrony=(not args.nazwastrony)and args.title.text or args.nazwastrony
	    local c=mw.site.namespaces[args.nazwaprzestrzeni];
	    if(c)then
	    	args.nazwaprzestrzeni2=mw.ustring.gsub(c.name,"_"," ");
	    	args.nazwaprzestrzeni=args.nazwaprzestrzeni2;
	    else
	    	args.nazwaprzestrzeni2="";
	    end;
	    if(args.nazwastrony~="")then
	    	args.invalidentityname=mw.title.makeTitle('',args.nazwastrony); 
	    	if(args.invalidentityname)then
	        	args.title=(args.nazwaprzestrzeni=="")and mw.title.makeTitle('',args.nazwastrony) 
	            or mw.title.makeTitle('',args.nazwaprzestrzeni..":"..args.nazwastrony)
	            args.nstext=(args.title)and mw.ustring.gsub(args.title.nsText,"_"," ") or nil;
	        else
	        	args.title=nil;
	        end;
	    else
	    	args.title=nil;
	    end;
	    args.typjednostki=args.pf.args["typ jednostki"]
	    args.stronaglownaprojektu=args.pf.args["strona główna projektu"]
	    args.stronaglownaprojektu=(not args.stronaglownaprojektu) and "Wikibooks:Strona główna" or string.gsub(args.stronaglownaprojektu,"_"," ");
	    args.sekcja=args.pf.args[resources.data.sectionParamIndex];
	    args.cal=ProblemToSpace(args.nazwaprzestrzeni,frame)
	    args.re=require("Moduł:Dopracować").repeatfun(frame)
	    args.un=require("Moduł:Dopracować").unknown(frame)
	    if((not args.cal)and(args.re=="")and(args.un=="")and(args.title)	    	
	    	and(((args.nazwaprzestrzeni2~="")and(args.nazwaprzestrzeni~=""))or((args.nazwaprzestrzeni2=="")and(args.nazwaprzestrzeni=="")))
	    	and(args.nstext==args.nazwaprzestrzeni)and(args.invalidentityname)
	    	and((args.stronaglownawikijuniora)and(args.stronaglownawikijuniora~="")and(string.match(args.stronaglownawikijuniora,"^[^/]+$"))
	    	 and(args.title.fullText~=args.stronaglownawikijuniora)and(args.stronaglownaprojektu)
	                and(args.stronaglownaprojektu~="")and(args.title.fullText~=args.stronaglownaprojektu)
	               and(string.match(args.stronaglownaprojektu,"^[^/]+$")))and((((args.nazwaprzestrzeni==resources.data.defaultmainspace)
	               	  or(args.nazwaprzestrzeni==resources.data.defaultwikijunior))
	                 and(((args.nazwijstrona)and(args.nazwijstrona~=""))
	    	 or(((not args.nazwijstrona)or(args.nazwijstrona==""))
	               and((not args.typjednostki)
	           or((args.nazwaprzestrzeni==resources.data.defaultmainspace)and((args.typjednostki=="artykuł")or(args.typjednostki=="podręcznik")))
	          or((args.nazwaprzestrzeni==resources.data.defaultwikijunior)and((args.typjednostki=="artykuł dla dzieci")or(args.typjednostki=="podręcznik dla dzieci")))))))
	                   or(args.nazwaprzestrzeni==resources.data.defaultcategory)
	                    or((args.nazwaprzestrzeni==resources.data.defaultwikibooks)and ((not args.typjednostki)
	                    	or((args.typjednostki)and (args.typjednostki=="brudnopis projektu"))))
	                     or(args.nazwaprzestrzeni==resources.data.defaulthelp)or((args.nazwaprzestrzeni==resources.data.defaulttemplate)
	                     	and((not args.typjednostki)or((args.typjednostki)and (args.typjednostki=="brudnopis szablonu")))
	                	      	   and((args.title.subpageText==resources.data.defaultdoc)
	                	      	   	  or((args.title.exists)and(mw.getCurrentFrame():callParserFunction{name='#invoke:Łatki',args={'contentMatch', '<noinclude>.-{{%s*[Dd]okumentacja%s*}}.-</noinclude>'
	                	      	   	  	   ,'<noinclude>.-{{%s*[Dd]okumentacja%s*|.-</noinclude>',pagename=args.title.fullText,namespace=0}}==""))))
	                	      	   	  or((args.nazwaprzestrzeni==resources.data.defaultmodule)and(args.title.subpageText==resources.data.defaultdoc)
	                	      	   	  	and ((not args.typjednostki)
								or((args.typjednostki)and (args.typjednostki=="brudnopis modułu"))))
	                	      	       or((args.nazwaprzestrzeni==resources.data.defaultuser)and(string.match(args.nazwastrony,"^[^/]+/.*$")))))then
	                    return ""
	    else
	    	return "true"
	    end   
	  end,
      unknown = function (frame)
      	local pf = frame:getParent()
		local mapParamToReason = {}
		for i, v in ipairs(resources.reasons) do
			for _, a in ipairs(v.aliases) do
				mapParamToReason[a] = i
			end
	     end
	     local un=true
	     for v, _ in pairs(pf.args) do
	      if(type(v) ~= "number")then
			for v1,_ in pairs(mapParamToReason) do
				if(v==v1)then un=false break end;
			end
			for _,v3 in ipairs(resources.additionalparameters) do
				if(v==v3)then un=false break end;
			end
			if(un)then return "true" end
			un=true
		  end
		end
		return ""
     end,
    repeatfun = function(frame)
    	local pf = frame:getParent()
    	local f={};
        for i2,val2 in ipairs(resources.reasons) do
    		for _,val3 in ipairs(val2.aliases)do
    			for i,val in pairs(pf.args)do
    			   if(type(i)=="number")then
    			   	  if(val==val3)then
    			   	  	f[#f+1]=val2.aliases[1]
    			   	  end
    			   elseif(type(i)=="string")then
    			  	  if(i==val3)then
    			  	  	 f[#f+1]=val2.aliases[1]
    			  	  end
    			   end
    			end
    		end
    	end
    	if(#f>0)then
    		for i=1,#f,1 do
    			for i2=1,i,1 do
    				if(i~=i2)	then
    					if(f[i]==f[i2])then
    						return "true"
    					end
    			    end
    			end
    		end
    	end
    	return ""
    end,
	text = function(frame)
		local args={}
	    	function prepareTemplates(reason, date, section, comments)
		    	local c = (reason)and (reason["?"] or {}) or {}
				local sourceTemplates;
				local templates = {};
				function ManualAndTemplates(test2)
			       	local sourceTemplates=test2 and resources.manualTemplates or resources.articleTemplates;
			        return sourceTemplates;
			    end;
			    function Templates()
			    	if((args.nazwijstrona)and(args.nazwijstrona~=""))then
			    		sourceTemplates = resources.otherTemplates
			    		templates["{{unit type}}"]="Jednostki"
        				templates["{{comma}}"]="";
					elseif(args.nazwaprzestrzeni==resources.data.defaultuser)then
						sourceTemplates = resources.userTemplates
					    templates["{{unit type}}"]="Jednostki użytkowników"
	    			    templates["{{comma}}"]=",";
    				elseif(args.nazwaprzestrzeni==resources.data.defaulthelp)then
						sourceTemplates = resources.pomocTemplates
					    templates["{{unit type}}"]="Strony pomocy"
	    	    	    templates["{{comma}}"]=",";
    		    	elseif(args.nazwaprzestrzeni==resources.data.defaultwikibooks)then
						if(((args.typjednostki)and (args.typjednostki=="brudnopis projektu"))or(mw.ustring.match(args.nazwastrony,"^[Bb]rudnopis/.-")))then
    						sourceTemplates = resources.documentationdraftprojectTemplates;
    					else	
							sourceTemplates = resources.projektTemplates;
						end;
						if(((args.typjednostki)and(args.typjednostki=="brudnopis projektu"))or(mw.ustring.match(args.nazwastrony,"^[Bb]rudnopis/.-")))then
        		    		templates["{{unit type}}"]="Strony brudnopisu projektu"
        		    	else
        	    			templates["{{unit type}}"]="Strony projektu"
        	    		end;
        	    		templates["{{comma}}"]=",";
					elseif(args.nazwaprzestrzeni==resources.data.defaulttemplate)then--
						if(((args.typjednostki)and (args.typjednostki=="brudnopis szablonu"))
							or((not mw.ustring.match(args.nazwastrony,"^[Bb]rudnopis/opis$"))and(mw.ustring.match(args.nazwastrony,"^[Bb]rudnopis/.-"))))then
							sourceTemplates = resources.documentationdrafttemplateTemplates
							templates["{{unit type}}"]="Strony opisu brudnopisu szablonów"
    					else	
							sourceTemplates = resources.documentationtemplateTemplates;
						    templates["{{unit type}}"]="Strony opisu szablonów"
						end;
					    templates["{{comma}}"]=",";
					elseif(args.nazwaprzestrzeni==resources.data.defaultmodule)then--
						if(((args.typjednostki)and(args.typjednostki=="brudnopis modułu"))
							or((not mw.ustring.match(args.nazwastrony,"^[Bb]rudnopis/opis$"))and(mw.ustring.match(args.nazwastrony,"^[Bb]rudnopis/.-"))))then
							sourceTemplates = resources.documentationdraftmoduleTemplates;
							templates["{{unit type}}"]="Strony opisu brudnopisu modułów"
    					else	
							sourceTemplates = resources.documentationmoduleTemplates
							templates["{{unit type}}"]="Strony opisu modułów"
						end;
						templates["{{comma}}"]=",";
					elseif(args.nazwaprzestrzeni==resources.data.defaultcategory)then
			    		sourceTemplates = resources.categoryTemplates
			    		templates["{{unit type}}"]="Strony kategorii"
						templates["{{comma}}"]=",";
					elseif(args.nazwaprzestrzeni==resources.data.defaultmainspace)then
						if(args.typjednostki)then
						   if(args.typjednostki=="artykuł")then
			    		        sourceTemplates=resources.articleTemplates;
			    		        templates["{{unit type}}"]="Artykuły"
						        templates["{{comma}}"]="";
			    		    else
			    		    	sourceTemplates=resources.manualTemplates;
			    		    	templates["{{unit type}}"]="Podręczniki"
						        templates["{{comma}}"]="";
			    		    end;
			    		 else
			    		    local test2=string.match(args.title.text,"^[^/]+$");
			    		 	sourceTemplates=ManualAndTemplates(test2);
			    		 	if(test2)then
			    		 	    templates["{{unit type}}"]="Podręczniki"
						        templates["{{comma}}"]="";
			    		 	else
			    		 	    templates["{{unit type}}"]="Artykuły"
						        templates["{{comma}}"]="";			    		 		
			    		 	end;
                         end;
					elseif(args.nazwaprzestrzeni==resources.data.defaultwikijunior)then
						if(args.typjednostki)then
						   if(args.typjednostki=="artykuł dla dzieci")then
			    		        sourceTemplates=resources.articleTemplates;
			    		        templates["{{unit type}}"]="Artykuły dla dzieci"
						        templates["{{comma}}"]=",";
			    		    else
			    		    	sourceTemplates=resources.manualTemplates;
			    		        templates["{{unit type}}"]="Podręczniki dla dzieci"
						        templates["{{comma}}"]=",";
			    		    end;
			    		 else
			    		 	local test2=string.match(args.title.text,"^[^/]+$");
			    		 	sourceTemplates=ManualAndTemplates(test2);
			    		 	if(test2)then
			    		 	    templates["{{unit type}}"]="Podręczniki dla dzieci"
						        templates["{{comma}}"]=",";
			    		 	else
			    		 	    templates["{{unit type}}"]="Artykuły dla dzieci"
						        templates["{{comma}}"]=",";			    		 		
			    		 	end;
                         end;
                       
			    	else
			       		sourceTemplates=resources.otherTemplates
			       		templates["{{unit type}}"]="Jednostki"
        				templates["{{comma}}"]="";
			    	end;
			    end;
				if(section)then
					sourceTemplates=resources.sectionTemplates;
					Templates();
				else
                    Templates();
			    end;
				for k, v in pairs(sourceTemplates) do
					templates[k] = v
				end
       	        if(args.nazwaprzestrzeni==resources.data.defaultwikijunior)then
            		templates["{{M}}"] = templates["{{M}}"].." dla dzieci"
            		templates["{{B}}"] = templates["{{B}}"].." dla dzieci"
            		templates["{{d}}"] = templates["{{d}}"].." dla dzieci"
            		templates["{{ms}}"] = templates["{{ms}}"].." dla dzieci"
	        		templates["{{w}}"] = templates["{{w}}"].." dla dzieci"	
	        		templates["{{MS}}"] = templates["{{MS}}"].." dla dzieci"
		    		templates["{{MD}}"] = templates["{{MD}}"].." dla dzieci"
		    		templates["{{BD}}"] = templates["{{BD}}"].." dla dzieci"
		    		templates["{{dm}}"] = templates["{{dm}}"].." dla dzieci"
		    		templates["{{bm}}"] = templates["{{bm}}"].." dla dzieci"
            	end;
				templates[resources.data.dateTemplate] = date or ""
				if args.title.talkPageTitle then
					templates[resources.data.talkNameTemplate] = args.title.talkPageTitle.fullText
				end
				templates["{{FULLPAGENAMEE}}"] = mw.uri.encode(args.title.fullText, "WIKI")
				templates["{{PAGENAMEE}}"] = mw.uri.encode(args.title.text, "WIKI")
				templates["{{BASEPAGENAMEE}}"] = mw.uri.encode(args.title.baseText, "WIKI")
				templates["{{SUBPAGENAMEE}}"] = mw.uri.encode(args.title.subpageText, "WIKI")
				templates["{{FULLPAGENAME}}"] = args.title.fullText
				templates["{{PAGENAME}}"] = args.title.text
				templates["{{BASEPAGENAME}}"] = args.title.baseText
				templates["{{SUBPAGENAME}}"] = args.title.subpageText
				templates[resources.data.pageUrlTemplate] = args.title:fullUrl()
				templates["{{Cat}}"] = resources.data.defaultcategory
 				templates[resources.data.talkSectionTemplate] = args.pf.args[resources.data.talkPageSectionParamIndex] or ""
				local defaultComment, _ = string.gsub(c.default or "", resources.data.templatePattern, templates)
				templates[resources.data.infoTemplate] = ((comments)and(#comments > 0)) and ((c.prefix or "")..table.concat(comments, c.separator or ", ")..(c.suffix or "")) or defaultComment
				templates[resources.data.infoTemplate]=string.gsub(templates[resources.data.infoTemplate],resources.data.templatePattern,templates);
				-- prepare "talk" hint
				local talk = ""
				if args.title.talkPageTitle and args.title.talkPageTitle.exists then
					talk, _ = string.gsub(reason.talk or "", resources.data.templatePattern, templates)
				end
				templates[resources.data.talkTemplate] = talk
			    	return templates
		    	end
	     if(require("Moduł:Dopracować").errormodule(frame,args)=="")then
		    	local defaultDate = args.pf.args[resources.data.defaultDateIndex] or ""

		    	local complexCategories = {
			    	categories = function(result, date)
--						 if (switch == resources.data.defaulthelp) or (switch == "Wikipedia") or (switch == "Portal") or (switch == "Wikiproject") then
--							table.insert(result, "[[Kategoria:WP?|"..title.text.."]]")
--						else
						table.insert(result, "[[{{Cat}}:{{unit type}} wymagające umieszczenia w odpowiedniej kategorii|"..args.title.text.."]]")
					end,}
		    	local mapParamToReason = {}
		    	for i, v in ipairs(resources.reasons) do
			    	for _, a in ipairs(v.aliases) do
				    	mapParamToReason[a] = i
			    	end
		    	end

		    	local reasonDates = {}
		    -- scan well known reasons with date
		    	for k, i in pairs(mapParamToReason) do
		  	    	local object = args.pf:getArgument(k)
			    	if object then
				    	 local currentDate = object:expand()
				    	 if currentDate then
					    	local previousDate = reasonDates[i]
					    	if not previousDate or (previousDate == "") or ((currentDate ~= "") and (currentDate < previousDate)) then
								reasonDates[i] = currentDate
					    	end
				    	end
			    	end
		    	end

		    	local onlyReason = nil
		    	local allMessages = {}
		    	local customMessages = {}

				-- collect messages with dates
				for i, v in ipairs(resources.reasons) do
					local date = reasonDates[i]
					if date then
						table.insert(allMessages, (#date > 0) and string.format(resources.data.messageWithDatePrefix, date, v.message) or v.message)
						if not onlyReason then
							onlyReason = i
						else
							onlyReason = 0
						end
					end
				end

			-- scan reasons without dates
				local scanReasonWithoutDate = function(index,reason)
				   if reason then
					    reason = mw.text.trim(reason)
					    if (index ~= resources.data.sectionParamIndex) or (reason ~= resources.data.sectionParamValue) then
						   if #reason > 0 then
							   local known = mapParamToReason[reason]
							   if not known then
								   table.insert(allMessages, reason)
								   table.insert(customMessages, reason)
							   else
								  if not onlyReason then
									  onlyReason = known
								  elseif onlyReason ~= known then
									  onlyReason = 0
								  end
								  if not reasonDates[known] then
									  reasonDates[known] = defaultDate
									  local v = resources.reasons[known].message
									  table.insert(allMessages, (#defaultDate > 0) and string.format(resources.data.messageWithDatePrefix, defaultDate, v) or v)
								  end
							   end
						   end
					    end
				    end
				 return reason
			   --end
		    end
		    local sectionParam = scanReasonWithoutDate(resources.data.sectionParamValue)
		    for i, reason in ipairs(args.pf.args) do
		    	if(type(i)=="number")then
			       scanReasonWithoutDate(i,reason)
			    end
		    end
		   local categories = {}
		   local bezkategorii=args.pf.args["bez kategorii"];
		   if((bezkategorii==nil)or(bezkategorii==""))then
		       for i, v in ipairs(resources.reasons) do
			       local date = reasonDates[i]
			       if date and v.cat then
				      local complexCat = complexCategories[v.cat]
				      if complexCat then
					      complexCat(categories, date)
				      else
			            	table.insert(categories, (v.catDate and (#date > 0)) and string.format(v.catDate, date) or v.cat)
				      end;
			      end
		        end
		       if (#categories == 0)then
			       table.insert(categories, resources.default.cat)
               end
           end
		-- prepare date hints
		    local hints = {}
		    local currentDate = nil
		    for i, v in ipairs(resources.reasons) do
			    local date = reasonDates[i]
			    if date and (#date == 0) and v.catDate then
				   if not currentDate then
					   currentDate = mw.getContentLanguage():formatDate(resources.data.dateFormat, nil, true)
				   end
				   table.insert(hints, string.format(resources.data.dateExample, v.aliases[1], currentDate))
			    end
		    end

	 	    local result = {}
		    local section = (args.sekcja == resources.data.sectionParamValue) or sectionParam
		    local onlyReasonData = resources.reasons[onlyReason]
		    local mainText = nil
		    local templates = {}
		    if onlyReasonData and onlyReasonData.simple and ((#customMessages == 0) or onlyReasonData["?"]) then
			    local date = reasonDates[onlyReason]
			    if #date > 0 then
				   date = string.format(resources.data.dateInfix, date)
			    end
			   templates = prepareTemplates(onlyReasonData, date, section, customMessages)
			   mainText, _ = string.gsub(onlyReasonData.simple, resources.data.templatePattern, templates)
		   end
		   if not mainText and not onlyReason then
		     	 local date = args.pf.args[resources.data.defaultDateIndex] or ""
			     if #date > 0 then
				    date = string.format(resources.data.dateInfix, date)
			     end
			     templates = prepareTemplates(resources.default, date, section, customMessages)
			     mainText, _ = string.gsub(resources.default.simple, resources.data.templatePattern, templates)
		    end
		    if not mainText then
			     templates = prepareTemplates(resources.default, "", section, allMessages)
			     mainText, _ = string.gsub(resources.default.message, resources.data.templatePattern, templates)
 		    end
 		    
 		     table.insert(result, mainText)
 		     if args.title.talkPageTitle and args.title.talkPageTitle.exists and ((#templates[resources.data.talkTemplate] == 0) or (#templates[resources.data.talkSectionTemplate] > 0))  then
	 		     local talkPageMessage, _ = string.gsub((#templates[resources.data.talkSectionTemplate] == 0) and resources.data.talkPage or resources.data.talkSection, resources.data.templatePattern, templates)
 			     table.insert(result, talkPageMessage)
	 	     end
	 	    local articleInstruction, _ = string.gsub(resources.data.articleInstruction, resources.data.templatePattern, templates)
	 	    table.insert(result, articleInstruction)
		    if #hints > 0 then
		 	    table.insert(result, string.format(resources.data.templateInstruction, table.concat(hints, ", ")))
		    end
		    local categor=table.concat(categories,"")
		    categor=string.gsub(categor,resources.data.templatePattern,templates)
            table.insert(result, categor)
		    local result = table.concat(result, "")
            return newresult(result)
 		else
	    	local bezkategorii=args.pf.args["bez kategorii"];
	    	local mainText2=""
	    	local result={}
	        if((args.title)and(args.nazwaprzestrzeni==resources.data.defaulttemplate)and(args.title.subpageText~=resources.data.defaultdoc))then
	             mainText, _ = string.gsub(resources.nodoctemplate.simple, resources.data.templatePattern, resources.otherTemplates)
	             mainText2=mainText2.."<li>"..mainText.."</li>";
        		 if((bezkategorii==nil)or(bezkategorii==""))then
	        	     table.insert(result, resources.nodoctemplate.cat)
	        	 end  
	        end
	        if((args.title)and(args.nazwaprzestrzeni==resources.data.defaultmodule)and(args.title.subpageText~=resources.data.defaultdoc))then
	        	 mainText, _ = string.gsub(resources.nodocmodule.simple, resources.data.templatePattern, resources.otherTemplates)
	             mainText2=mainText2.."<li>"..mainText.."</li>";
        		 if((bezkategorii==nil)or(bezkategorii==""))then
	        	    table.insert(result, resources.nodocmodule.cat)
	        	 end
	        end
	        if((args.stronaglownaprojektu)and(args.stronaglownaprojektu==""))then
	        	 mainText, _ = string.gsub(resources.emptynamepagehomewikibooks.simple, resources.data.templatePattern, resources.otherTemplates)
	             mainText2=mainText2.."<li>"..mainText.."</li>";
        		 if((bezkategorii==nil)or(bezkategorii==""))then
	        		table.insert(result, resources.emptynamepagehomewikibooks.cat)
	        	 end
	        end
	        if((args.stronaglownaprojektu)and(args.stronaglownaprojektu~="")and(string.match(args.stronaglownaprojektu,"^[^/]+(/.-)$")))then
	        		mainText, _ = string.gsub(resources.errornamehomewikibooks.simple, resources.data.templatePattern, resources.otherTemplates)
	                mainText2=mainText2.."<li>"..mainText.."</li>";
        		    if((bezkategorii==nil)or(bezkategorii==""))then
	        	    	table.insert(result, resources.errornamehomewikibooks.cat)
	        	    end
	        end
	        if((args.title)and(args.stronaglownaprojektu)and(args.stronaglownaprojektu~="")and(args.title.fullText==args.stronaglownaprojektu))then
	        	   mainText, _ = string.gsub(resources.homeWikibooks.simple, resources.data.templatePattern, resources.otherTemplates)
	               mainText2=mainText2.."<li>"..mainText.."</li>";
        		   if((bezkategorii==nil)or(bezkategorii==""))then
	        	    	table.insert(result, resources.homeWikibooks.cat)
	        	   end
	        end
	        if(args.cal)then
	            mainText, _ = string.gsub(resources.otherparameters.simple, resources.data.templatePattern, resources.otherTemplates)
	            mainText2=mainText2.."<li>"..mainText.."</li>";
        		if((bezkategorii==nil)or(bezkategorii==""))then
	        	    table.insert(result, resources.otherparameters.cat)
	        	end
	        end
	        if(args.re~="")then
	        	mainText, _ = string.gsub(resources.repeatingparameters.simple, resources.data.templatePattern, resources.otherTemplates)
	        	 mainText2=mainText2.."<li>"..mainText.."</li>";
        		 if((bezkategorii==nil)or(bezkategorii==""))then
	        	    	table.insert(result, resources.repeatingparameters.cat)
	        	 end
	        end   
	        if(args.un~="")then
	            mainText, _ = string.gsub(resources.unknownparameters.simple, resources.data.templatePattern, resources.otherTemplates)
	            mainText2=mainText2.."<li>"..mainText.."</li>";
        		if((bezkategorii==nil)or(bezkategorii==""))then
	        	   table.insert(result, resources.unknownparameters.cat)
	        	end
	        end
	        if((args.nazwaprzestrzeni2=="")and(args.nazwaprzestrzeni~=""))then
	        	mainText, _ = string.gsub(resources.errorvaluenazwaprzestrzeni.simple, resources.data.templatePattern, resources.otherTemplates)
	            mainText2=mainText2.."<li>"..mainText.."</li>";
        		if((bezkategorii==nil)or(bezkategorii==""))then
	        	   table.insert(result, resources.errorvaluenazwaprzestrzeni.cat)
	        	end
	        end
	        if((args.title)and(args.nazwaprzestrzeni=="")and(args.nstext~=resources.data.defaultmainspace))then
	            mainText, _ = string.gsub(resources.errorname.simple, resources.data.templatePattern, resources.otherTemplates)	
	            mainText2=mainText2.."<li>"..mainText.."</li>";
	        	if((bezkategorii==nil)or(bezkategorii==""))then
	        	    table.insert(result, resources.errorname.cat)
	        	end
	        end
            if(args.nazwastrony=="")then
	            mainText, _ = string.gsub(resources.emptynamepage.simple, resources.data.templatePattern, resources.otherTemplates)
	            mainText2=mainText2.."<li>"..mainText.."</li>";
        	    if((bezkategorii==nil)or(bezkategorii==""))then
	        	   table.insert(result, resources.emptynamepage.cat)
	            end
	        end
	        if((args.nazwastrony~="")and(not args.invalidentityname))then
	            mainText, _ = string.gsub(resources.invalidentityname.simple, resources.data.templatePattern, resources.otherTemplates)
	            mainText2=mainText2.."<li>"..mainText.."</li>";
        	    if((bezkategorii==nil)or(bezkategorii==""))then
	        	   table.insert(result, resources.invalidentityname.cat)
	            end
	        end
	        if((args.nazwaprzestrzeni==resources.data.defaultuser)and(string.match(args.nazwastrony,"^[^/]+$")))then
	        	mainText, _ = string.gsub(resources.userparameters.simple, resources.data.templatePattern, resources.otherTemplates)
	            mainText2=mainText2.."<li>"..mainText.."</li>";
        		if((bezkategorii==nil)or(bezkategorii==""))then
	        	   table.insert(result, resources.userparameters.cat)
	            end
	       end
	       if((args.stronaglownawikijuniora)and(args.stronaglownawikijuniora==""))then
	        	mainText, _ = string.gsub(resources.emptynamepagehomewikijunior.simple, resources.data.templatePattern, resources.otherTemplates)
	            mainText2=mainText2.."<li>"..mainText.."</li>";
        		if((bezkategorii==nil)or(bezkategorii==""))then
	        	    table.insert(result, resources.emptynamepagehomewikijunior.cat)
	        	end	      	   
	       end
           if((args.stronaglownawikijuniora)and(string.match(args.stronaglownawikijuniora,"^[^/]+(/.-)$")))then
               mainText, _ = string.gsub(resources.errornamehomewikijunior.simple, resources.data.templatePattern, resources.otherTemplates)
	           mainText2=mainText2.."<li>"..mainText.."</li>";
               if((bezkategorii==nil)or(bezkategorii==""))then
	               table.insert(result, resources.errornamehomewikijunior.cat) 	
	           end
	       end
	       if(((not args.nazwijstrona)or(args.nazwijstrona==""))and(args.typjednostki)and(((args.typjednostki~="artykuł")and(args.typjednostki~="podręcznik"))
	       	     and(args.nazwaprzestrzeni==resources.data.defaultmainspace)))then
	        		mainText, _ = string.gsub(resources.errorvaluetypjednostkimain.simple, resources.data.templatePattern, resources.otherTemplates)
	            	mainText2=mainText2.."<li>"..mainText.."</li>";
	        	    if((bezkategorii==nil)or(bezkategorii==""))then
				      	table.insert(result, resources.errorvaluetypjednostkimain.cat)
				    end
			end
	       if(((not args.nazwijstrona)or(args.nazwijstrona==""))and(args.typjednostki)
	       	  and((args.typjednostki~="artykuł dla dzieci")and(args.typjednostki~="podręcznik dla dzieci"))
	       	     and(args.nazwaprzestrzeni==resources.data.defaultwikijunior))then
	        		mainText, _ = string.gsub(resources.errorvaluetypjednostkiwikijunior.simple, resources.data.templatePattern, resources.otherTemplates)
	            	mainText2=mainText2.."<li>"..mainText.."</li>";
	        	    if((bezkategorii==nil)or(bezkategorii==""))then
				      	table.insert(result, resources.errorvaluetypjednostkiwikijunior.cat)
				    end
			end			
            if((args.title)and(args.stronaglownawikijuniora)and(args.title.fullText==args.stronaglownawikijuniora))then
            	mainText, _ = string.gsub(resources.homewikijunior.simple, resources.data.templatePattern, resources.otherTemplates)
	            mainText2=mainText2.."<li>"..mainText.."</li>";
            	if((bezkategorii==nil)or(bezkategorii==""))then  
	 	            table.insert(result, resources.homewikijunior.cat)
	 	        end
	 	     end
	 	     if(not ((args.nazwaprzestrzeni2=="")and(args.nazwaprzestrzeni~="")))then
	 	    	if((args.nazwaprzestrzeni~=resources.data.defaultmainspace)and(args.nazwaprzestrzeni~=resources.data.defaultwikijunior)
	 	     		 and(args.nazwaprzestrzeni~=resources.data.defaultwikibooks)and(args.nazwaprzestrzeni~=resources.data.defaulthelp)
	 	     			and(args.nazwaprzestrzeni~=resources.data.defaultmodule)and(args.nazwaprzestrzeni~=resources.data.defaulttemplate)
	 	     	    		and(args.nazwaprzestrzeni~=resources.data.defaultcategory)and(args.nazwaprzestrzeni~=resources.data.defaultuser))then
	 	            			mainText, _ = string.gsub(resources.pose.simple, resources.data.templatePattern, resources.otherTemplates)	
	            				mainText2=mainText2.."<li>"..mainText.."</li>";
	 	            			if((bezkategorii==nil)or(bezkategorii==""))then
	 	           	    			table.insert(result, resources.pose.cat)
	 	        				end
	 	    	end
	 	   end
  	        local articleErrorInstruction, _ = string.gsub(resources.data.articleErrorInstruction, resources.data.templatePattern, resources.otherTemplates) 
  	        local templates={};
  	        templates["{{Cat}}"] = resources.data.defaultcategory;
  	        result=string.gsub(table.concat(result,""),resources.data.templatePattern,templates);
			result=resources.data.articleErrorAdmission.."<BR><ul>"..mainText2.."</ul>"..articleErrorInstruction..result;
            return newresult(result)
        end
	end,
}