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

وحدة:MonthCategoryNav

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

local p = {}

local check = {}

function make_table(nav,key , month_number )
	local rows = "[[:تصنيف:يناير|يناير]] · [[:تصنيف:فبراير|فبراير]] · [[:تصنيف:مارس|مارس]] · [[:تصنيف:أبريل|أبريل]] · [[:تصنيف:مايو|مايو]] · [[:تصنيف:يونيو|يونيو]] · [[:تصنيف:يوليو|يوليو]] · [[:تصنيف:أغسطس|أغسطس]] · [[:تصنيف:سبتمبر|سبتمبر]] · [[:تصنيف:أكتوبر|أكتوبر]] · [[:تصنيف:نوفمبر|نوفمبر]] · [[:تصنيف:ديسمبر|ديسمبر]]"
	local key2 =  "[[شهر|الشهور]]"
	local month_number = tostring(month_number)
	if #month_number == 1 then
		month_number = "0" .. month_number
	end
	Table = mw.html.create( 'table' ) -- style='float:left
		--:addClass('wikitable')
		:addClass('infobox')
    	:attr('clear', "left")
		:css( 'border', '1' )
		:css( 'width', '40%' )
		:css( 'float', 'left' )
	if key ~= "" then 
		key2 = mw.ustring.gsub( key , "key", "شهور ")
		cat_title = mw.ustring.gsub( key , "key", "") .. " حسب الشهر"
		Cat = ""
		
		if mw.title.new(cat_title).exists then
			Cat = " [[".. cat_title .. "|" .. month_number .. "]]"
			mw.log(Cat)
		end
		key2 = mw.ustring.gsub( key2 , "تصنيف:", "")
	end
    if nav ~= "" and key ~= "تصنيف:key" then
		Table:tag('th')
		    --:css('background-color', "#f3f3f3" )
			:css('background-color', "#f3f3f3" )
			:css('text-align', "center" )
			:attr('colspan', 2)
			:tag("span")
				:addClass('nowrap')
				:wikitext(key2 .. Cat) 
				:done()
		    :done()
		Table:tag('tr')
		    :tag('td')
		    	:attr('colspan', 2)
		    	:css('text-align', "center" )
		    	:wikitext(nav)
		    	:done()
		    :done()
    end
    Table:tag('tr')
        --:css('background-color', "#f3f3f3" )
        :tag('td')
        	:css('background-color', "#f3f3f3" )
        	:css('text-align', "right" )
        	:wikitext("[[شهر|الشهور]]") 
        	:done()
        :tag('td')
        	:css('text-align', "center" )
    		:addClass('nowrap')
        	:wikitext(rows) 
        	:done()
        :done()
	return tostring(Table)
end

function oneline(cat , month)
	local link = cat
	local catepage = mw.title.new(cat)
	if catepage.exists then
		link = '[[:' .. cat .. "|" .. month .. "]]"
		table.insert(check ,link )
	else
		link = month
	end
	mw.log( "Module:MonthCategoryNav: " .. link .." cat " .. cat)
	return link
end

function find_duplicate( text )
	text = mw.ustring.gsub( text , 'تصنيف شهر', 'MonthCategoryNav' )
	local cat = ""
	pattern = string.format	('({{%%s*%s)', "MonthCategoryNav");
	_, total = mw.ustring.gsub (text, pattern, '%1');
	if total > 1 then
		cat = "[[تصنيف:تصنيفات بها قالب:تصنيف شهر مكرر]]"
	end
	return cat
end

function p.nav(frame)
	local months = {"يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"}
	local category = frame.args[1]
	local page_title_object = mw.title.getCurrentTitle();
	local text = page_title_object:getContent();
	if not category or category == "" then  
		title = page_title_object.text
		mw.log( "Module:MonthCategoryNav: title " .. title)
		--if string.find(title, "تصنيف:") 
		if page_title_object.namespace == 14
			then category = "تصنيف:" .. title
		end
	end
	local okay = false
	local str_month_number = ""
	local str_month = ""
	local key = ""
	local nav = ""
	--local nav = "يناير · فبراير · مارس · أبريل · مايو · يونيو · يوليو · أغسطس · سبتمبر · أكتوبر · نوفمبر · ديسمبر"
	local ttable = {}
	if category and category ~= '' 
	then
		for k, month in pairs(months) do
			if string.find(category, month) then
				str_month = month 
				str_month_number = k
				mw.log( "Module:MonthCategoryNav:  str_month" .. str_month)
				okay = true
			end
		end
		if str_month ~= "" then
			key = mw.ustring.gsub( category , str_month , "key" )
			for k, month in pairs(months) do
				cas = mw.ustring.gsub( category , str_month, month)
				cat = oneline(cas , month)
				table.insert(ttable ,cat )
			end
			nav = mw.text.listToText( ttable, " · " , " · " )
		end
	end
	mw.log( "key:" .. key )
	Table = make_table(nav , key , str_month_number )
	if #check == 1 then 
	Table = Table .. "[[تصنيف:قوالب بحاجة لمراجعة]]"
	end
	Table = Table .. find_duplicate(text)
	return Table
	
	end

return p