Module:Main page
இந்த லுவா (Lua) நிரலானது மே 26, 2013 அன்று சென்னையில் நடந்த திறந்த வார இறுதிகள் நிகழ்வில் விக்கிமீடியா பணியாளர் யுவராஜ் பாண்டியன் மற்றும் தமிழ் விக்கிப் பயனர் சூர்யபிரகாசாலும் உருவாக்கப்பட்டது.
இதன் நோக்கம் முதற்பக்க இற்றைப்படுத்தலை தானியாக்கம் (automation) செய்வது ஆகும். எடுத்துக்காட்டாக, தற்போதைய நிலவரப்படி முதற்பக்கக் கட்டுரைகள், உங்களுக்குத் தெரியுமா, முதற்பக்கப் படம், வலைவாசல் அறிமுகம், பயனர் அறிமுகம், பட்டியல் அறிமுகம் ஆகிய அனைத்துமே Mainpage v2 என்ற வார்ப்புருவில் நேரடியாக அதனதன் பராமரிப்பாளார்களால் குறிப்பிட்ட கால இடைவெளிகளில் தொடர்ச்சியாக மாற்றப்பட்டு வருகின்றன.
ஒரு சில வேளைகளில், சரியான நேரத்தில் பராமரிப்பாளர்களால் அவற்றை இற்றைப்படுத்த முடியாமல் போய்விடுகிறது. இந்த இக்கட்டான சூழலைச் சரி செய்யவேண்டும் என்பதற்காகவே இந்த நிரல் எழுதப்பட்டது. ஆங்கில விக்கியில் இது போன்ற நிரல்களின் மூலமாகவே முதற்பக்கம் தினமும் (குறிப்பிடத்தக்கது) இற்றைப்படுத்தப்படுகிறது. ஆனால், நம்மிடம் உள்ள குறைவான மனித வளத்தால் நம்மால் தினமும் இற்றைப்படுத்த முடியாத நிலை உள்ளது. ("இன்று" பகுதி தவிர; இது விக்கிக் குறிமுறை மூலம் தினமும் மாற்றப்படுகிறது)
- கட்டுரைகள் ஒரு வாரத்திற்கு ஒரு முறை ஞாயிற்றுக் கிழமைகளிலும
- உங்களுக்குத் தெரியுமா பகுதி வாரத்திற்கு ஒரு முறை புதன் கிழமைகளிலும்
- சிறப்புப் படம் பகுதி வாரத்திற்கு இரு முறை புதனன்றும் ஞாயிறன்றும்
- வலைவாசல் பகுதி தற்போதைக்கு மாதம் ஒரு முறையும்
- பட்டியல் பகுதியும் மாதம் ஒரு முறையும் இற்றைப்படுத்தப்படுகிறது.
இவற்றுக்காக ஒவ்வொரு முறையும் பராமரிப்பாளர்கள் அனைவரும் Main page v2 வார்ப்புருவில் கைவைப்பதற்குப் பதிலாக, அவர்களுக்குத் தோதான நேரத்தில் அவர்கள் தேவையான உள்ளடக்க வார்ப்புருவை மட்டும் உருவாக்கி விட்டால் போதுமானது. தானாகவே, இந்த நிரல் அதனை இற்றைப்படுத்திவிடும். இதிலுள்ள இன்னொரு வசதி என்னவென்றால், குறிப்பிட்ட நாளுக்கான உள்ளடக்கம் இல்லையெனில் (நாம் உருவாக்காமல் விட்டிருந்தால்) அது அதற்கு முந்தைய வார்ப்புருவை அப்படியே எடுத்துக் கொள்ளும். (எடுத்துக்காட்டாக ஞாயிறுக்கான சிறப்புப் படம் இற்றைப்படுத்தப்படாமலிருப்பின் புதனன்று உருவாக்கப்பட்ட சிறப்புப் படம் அப்படியே காட்சியளிக்கும்). எனவே, முதற்பக்கத்தில் "சிவப்பு இணைப்பு" வரும் என்ற அச்சம் தேவையில்லை.
தெரிந்த சிக்கல்கள்
பாலா சுட்டிக்காட்டியவை:
1) தற்போது நாம் முதற்பக்க துணை வார்ப்புருகளை under construction போட்டு உருவாக்கி விடுகிறோம். அவை அந்த தேதி வரும் போது தயாராகாது சில சமயம் draft ஆகவே இருக்கும். இபோதுள்ள நிரலில் அப்படியே எடுத்துப் போட்டு விடுமே. எடுத்துக் காட்டு மே 29 வுக்கு ஒரு உ.தெ பக்கம் உருவாக்கி விட்டு அதைப் பாதி நிரப்பி “under construction" போட்டு வைத்து விட்டு மே 29 அன்று வரை விட்டு விட்டால். அன்று முழுமையடையாத அந்தப் பக்கம் அப்படியே முதற்பக்கத்துக்குப் போய் விடும். இதனைத் தவிர்க்க வேண்டும்.
2) வார்ப்புரு தலைப்புகளில் வரும் மாதப் பெயர் வேறுபாடுகள் (ஜூன vs சூன். மார்ச் vs மார்ச்சு, முதலியன). இதற்கு பதிலாக மாத எண்ணிக்கையாகப் (1-12) பெயர் வைத்து மாற்றலாம்.
தீர்வுகள்
- முதல் சிக்கலுக்குத் தீர்வு சற்றே கடினம். அனைத்தும் பராமரிப்பாளர்களின் கையிலும் அவர்களுக்கு உதவுபவர்களின் கையிலும் அவர்கள் அனைவருக்கு உள்ள நேரத்தினால் மட்டுமே சாத்தியம். வார்ப்புரு முழுமையாக நிறைவடையாத நிலையில் (தற்போதைக்கு அது உங்களுக்குத் தெரியுமாவில் மட்டும் உள்ளது என்று நினைக்கிறேன்.) எனவே, {.{underconstruction}} வார்ப்புரு பயன்படுத்தபட்டுள்ளவற்றைச் சோதித்து அதையும் முந்தைய வார்ப்புருவைப் பயன்படுத்துமாறு செய்யலாம். யுவராஜிடமும் இதைப்பற்றிப் பேசுகிறேன். கூடிய விரைவில் இந்தப் பயன்பாடு மீண்டும் செயல்படுத்தப்பட்டு முழுமையான பயன்படுத்துமுறைகள் வழங்கப்படும்.
- இரண்டாவது சிக்கலுக்குத் தீர்வு எளிமை. மீடியாவிக்கியில் என்ன மாதப் பெயர்கள் பயன்படுத்தப்படுகின்றனவோ அதனையே அனைவரும் பொதுவாகப் பயன்படுத்துவது சிறப்பான தீர்வு.
local p = {}
local lang = mw.getContentLanguage()
--- Prefixes for each type of main page content
-- The key is the parameter to the 'current' function
local prefixes = {
picture = "விக்கிப்பீடியா:இன்றைய சிறப்புப் படம்/",
dyk = "விக்கிப்பீடியா:உங்களுக்குத் தெரியுமா/",
fa = "விக்கிப்பீடியா:முதற்பக்கக் கட்டுரைகள்/",
tdta = {prefix ="விக்கிப்பீடியா:ஆண்டு நிறைவுகள்/", format = "F j" },
portal = {prefix = "விக்கிப்பீடியா:வலைவாசல்கள்/", format="F"},
list = {prefix = "விக்கிப்பீடியா:பட்டியல்கள்/", format="F"}
}
--- Returns a page for this type and that date if it exists, nil otherwise
-- @param type_name String that is a key in the 'prefixes' table
-- @param date Timestamp (in a format that mw.language:formatDate accepts) to give page for
-- @return a string page title if it exists, nil otherwise
function existing_page_for( type_name, date )
local type_data = prefixes[ type_name ]
local page_name
if type( type_data ) == 'table' then
page_name = type_data['prefix'] .. lang:formatDate( type_data['format'], tostring(date) )
else
page_name = type_data .. lang:formatDate( 'F j, Y', tostring(date) )
end
local title = mw.title.new( page_name )
if title.exists then
return page_name
else
return nil
end
end
--- Returns the expanded text for the current main page content specified by the first argument 'type'
-- Checks the page for the current date for the type (using existing_page_for). If it exists, it is
-- expanded and returned. If not, we keep trying prior dates until we find one that exists, and then
-- expand and return it.
function p.current( frame )
local type = frame.args[1]
local cur_date = os.date()
local i = 0
while true do
cur_date = os.date( nil, os.time() - (i * 24 * 60 * 60) )
i = i + 1
page = existing_page_for( type, cur_date )
if page then
return frame:expandTemplate{title=page}
end
end
end
return p