وحدة:الرئيسية

من أرابيكا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث

--وحدة لقوالب الصفحة الرئيسية

local fgetFAlist = require('وحدة:الرئيسية/مختارة').getFAlist
local fgetGAlist = require('وحدة:الرئيسية/جيدة').getGAlist
local fgetFPlist = require('وحدة:الرئيسية/بوابات').getFPlist
local fgetFPiclist = require('وحدة:الرئيسية/صور').getFPiclist
local fgetFWordlist = require('وحدة:الرئيسية/كلمة').getFWordlist


local a = {}


function a.rnumber( frame )
    d = {}

    if(frame.args[1] =='ga' or frame.args[1] =='جيدة' ) then
    	d = fgetGAlist()
    	return #d
	elseif (frame.args[1] =='fa' or frame.args[1] =='مختارة' ) then
		d = fgetFAlist()
		return #d
	elseif (frame.args[1] =='fp' or frame.args[1] =='بوابات' ) then
		d = fgetFPlist()
		local nb =0
		for t,s in pairs(d) do
			nb = nb+1
		end
		return nb
	elseif (frame.args[1] =='fpic' or frame.args[1] =='صور' ) then
		d = fgetFPiclist()
		local nb =0
		for t,s in pairs(d) do
			nb = nb+1
		end
		return nb		
	end
end

function a.rlist( frame )
    d = {}
    if(frame.args[1] =='ga' or frame.args[1] =='جيدة' ) then
    	d = fgetGAlist()
	elseif (frame.args[1] =='fa' or frame.args[1] =='مختارة' ) then
		d = fgetFAlist()
	end
    
    math.randomseed( os.time() )
    x = math.random(1,#d) 
    repeat
    	x1 = math.random(1,#d)
	until x1 ~= x
    repeat
    	x2 = math.random(1,#d)
	until (x2 ~= x and x2 ~= x1)

    return "[["..d[x1].."]] – [["..d[x].."]] – [["..d[x2].."]]" 
end

function a.plist(frame)
    local c = ''
    local d = {}
    if(frame.args[1] =='ga' or frame.args[1] =='جيدة' ) then
    	d = fgetGAlist()
    	for _,s in ipairs(d) do
       		c = c .. "\n# [[" .. s .. "]]"
    	end    	
	elseif (frame.args[1] =='fa' or frame.args[1] =='مختارة' ) then
		d = fgetFAlist()
    	for _,s in ipairs(d) do
       		c = c .. "\n# [[" .. s .. "]]"
    	end    	
	elseif (frame.args[1] =='fp' or frame.args[1] =='بوابات' ) then
		d = fgetFPlist()
    	for t,s in pairs(d) do
       		c = c .. "\n# [[" ..t.."|".. s[3] .. "]]"
    	end    	
	end

  return c 
end

----
----اختيار مسبق/عشوائي لمقطع من مقالة جيدة/مختارة لعرضها على الصفحة الرئيسية
----
---- _RandOne : النتيجة هي اسم عشوائي مقالة واحدة مختارة/جيدة
local function _getOnepDay( frame )
    d = {}
	math.randomseed( os.time() )
	
    if (frame.args[1] =='dyk' or frame.args[1] =='تعلم' ) then
		local nbf = mw.site.stats.pagesInCategory( 'قائمة مشروع هل تعلم', 'pages' )
		if(type(nbf) ~= "number") then return '' end
    	---- x = math.random(1,nbf)
    	x = (math.floor(os.time()/(24*3600)) % nbf ) +1
		return frame:expandTemplate{ title = 'هل تعلم/حالية', args = {  x } }
    elseif (frame.args[1] =='fpic' or frame.args[1] =='صور' ) then
		d = fgetFPiclist()
		local nbf=0
    	for t,s in pairs(d) do
       		nbf = nbf + 1
    	end
    	---- x = math.random(1,nbf)
    	x = math.floor(os.time()/(24*3600)) % nbf 
		local nb=0
    	for t,s in pairs(d) do
       		nb = nb + 1
       		if(nb == x) then
       			return frame:expandTemplate{ title = 'صورة صفحة رئيسية', args = {  t, s[1],  s[2] } }
       		end
    	end    
    elseif (frame.args[1] =='fw' or frame.args[1] =='كلمة' ) then
		d = fgetFWordlist()
		local nbf=0
    	for title,items in pairs(d) do
       		nbf = nbf + 1
    	end
    	x = math.floor(os.time()/(24*3600)) % nbf
		local nb=0
    	for t,s in pairs(d) do
       		nb = nb + 1
       		if(nb == x) then
       			return frame:expandTemplate{ title = 'كلمة اليوم', args = {  s[1],  s[2] } }
       		end
    	end
    elseif (frame.args[1] =='fp' or frame.args[1] =='بوابات' ) then
		d = fgetFPlist()
		local nbf=0
    	for title,items in pairs(d) do
       		nbf = nbf + 1
    	end
    	--- x = math.random(1,nbf)
    	x = math.floor(os.time()/(24*3600)) % nbf
		local nb=0
    	for t,s in pairs(d) do
       		nb = nb + 1
       		if(nb == x) then
       			return frame:expandTemplate{ title = 'بوابة اليوم المختارة/قالب', args = {  s[1],  s[2], t , s[3] } }
       		end
    	end
	elseif(frame.args[1] =='ga' or frame.args[1] =='جيدة' ) then
    	d = fgetGAlist()
	elseif (frame.args[1] =='fa' or frame.args[1] =='مختارة' ) then
		d = fgetFAlist()
	end
    
    
    ---x = math.random(1,#d)
    x = math.floor(os.time()/(24*3600)) % #d
    return x --d[x]
end

local function _LCount( items )
	local nb = 0
	for _, item in ipairs(items) do
             nb = nb +1
    end
    return nb     
end
	
local function _OneDay( frame )

    local dayList = {}
    local monthList = {}
    local articles = {}
    local nbarts = 0
	
	math.randomseed( os.time() )
	
    if(frame.args[1] =='مختارة' or frame.args[1] =='جيدة' ) then      
    	
    	---- التأكد أولا بوجود مقالة مخصصة لهذا اليوم بالذات
    	dayList = mw.loadData('وحدة:الرئيسية/'.. frame.args[1]..'/تاريخ')
    	for date1, articles in pairs(dayList) do
    		if( date1 == mw.getContentLanguage():formatDate('Y-n-d') ) then
    		   nbarts = _LCount(articles)
               if(nbarts == 1) then
                 	return articles[1]
            		elseif nbarts > 1 then
            		return articles[math.random(1,nbarts) ]
        		end
    		end
    	end

        --- البحث عن ذكرى سنوية
        monthList = mw.loadData('وحدة:الرئيسية/'.. frame.args[1]..'/شهر/'..mw.getContentLanguage():formatDate('n'))

        articles = monthList[mw.getContentLanguage():formatDate('d')]

        if(type(articles) ~= 'table') then
          return ''
        end

        nbarts = _LCount(articles)

        if(nbarts == 0) then
            return ''
            elseif nbarts == 1 then
            return articles[1]
            else
            return articles[math.random(1,nbarts) ]
        end
    end
    return ''
end

function a.selectArt(frame)

   local title = _OneDay( frame )
   if(title ~= '') then
     return title
   else
     return _getOnepDay( frame )
   end
end

----
----
return a