Taisomas
Module:Update
Pereiti į navigaciją
Jump to search
Dėmesio:
Jūs nesate prisijungęs. Jūsų IP adresas bus viešai matomas, jei atliksite kokius nors keitimus. Jeigu
prisijungsite
arba
sukursite paskyrą
, jūsų keitimai bus priskirti jūsų naudotojo vardui; drauge įgysite naujų galimybių.
Brukalų patikra.
Ne
pildykite!
--<nowiki> -- IMPORTS local pt = require('Module:Paramtest') local hc = pt.has_content local dt = pt.default_to local top_icons -- [[Module:Top icons]] local contains -- [[Module:Array]] local ordinal -- [[Module:Ordinal]] -- exposed table local p = {} --[=[ -- -- HELPER TABLES AND FUNCTIONS -- --]=] -- replacement before calling encode -- as lua patterns local repl_before = { ['%('] = '', ['%)'] = '', ['%!'] = '', } -- replacements after calling encode -- as lua patterns local repl_after = { ['%+'] = '-', ['%%2C'] = '', ['%%2F'] = '', ['%%3F'] = '', ['%%26%%2338%%3B'] = '', ['%%E2%%80%%93'] = '', ['%.'] = '', ['%%26quot%%3B'] = '', ['%%E2%%80%%99'] = '', ['%%26%%2339%%3B'] = '', ['%%C3%%B6'] = 'o', ['%%3A'] = '', } -- converting month names to hex for sortkeys local hexmonthconv = { January = '1', February = '2', March = '3', April = '4', May = '5', June = '6', July = '7', August = '8', September = '9', October = 'A', November = 'B', December = 'C', } -- used by year func local looporder = { { 'November', 30 }, { 'October', 31 }, { 'September', 30 }, { 'August', 31 }, { 'July', 31 }, { 'June', 30}, { 'May', 31 }, { 'April', 30 }, { 'March', 31 }, { 'February', 29 }, { 'January', 31 }, { 'December', 31 } } -- category mapping: {category name, type for use on date pages (eg [[28 November]]) local category_info = { bts = {'Behind the Scenes updates', 'Behind the Scenes'}, community = {'Community updates', 'Community'}, devblog = {'Developer Blogs', 'Developer Blog'}, event = {'Event updates', 'Event update'}, game = {'Serverio restartas', 'Restartas'}, future = {'Future Updates', 'Future update'}, forum = {'forum'}, mobile = {'Mobile updates', 'Mobile update'}, shop = {'Shop updates', 'Shop update'}, support = {'Support updates', 'Support'}, technical = {'Technical updates', 'Technical'}, website = {'Website updates', 'Website update'}, yourfeedback = {'Your Feedback updates', 'Your Feedback'}, forum = {'Forum post updates', 'Forum post'}, competitions = {'Competition updates', 'Competitions'}, ['#default'] = {'Missing update category', ''}, } -- input mapping: accepted inputs -> keys for above table local cat_switch = { bts = 'bts', ['behind the scenes'] = 'bts', comm = 'community', community = 'community', dev = 'devblog', blog = 'devblog', ['dev blog'] = 'devblog', devblog = 'devblog', ['dev blogs'] = 'devblog', event = 'event', events = 'event', game = 'game', feedback= 'yourfeedback', forum = 'forum', future = 'future', mobile = 'mobile', shop = 'shop', cs = 'support', competitions = 'competitions', customer = 'support', ['customer support'] = 'support', support = 'support', tech = 'technical', technical = 'technical', th = 'th', site = 'website', ws = 'website', website = 'website', yourfeedback= 'yourfeedback', ['your feedback'] = 'yourfeedback', ['#default'] = '#default' } -- given a supported 'category' code, return the name of the category function get_update_category(catarg) if hc(catarg) then catarg = string.gsub(string.lower(catarg), ' ?updates?', '') if cat_switch[catarg] and category_info[cat_switch[catarg]] then return category_info[cat_switch[catarg]][1] else return category_info[cat_switch['#default']][1] end else return category_info[cat_switch['#default']][1] end end -- given d,m,y, return the relevant time-based categories (with sorting) function get_time_categories(day, month, year) local ret = {} local hexmonth, dayzero if not day or not month or not hexmonthconv[month] or not year then table.insert(ret, '[[Category:Missing update date]]') else dayzero = ((tonumber(day) < 10 and '0'..day) or day) hexmonth = hexmonthconv[month] -- [[Category:28 November updates]], sorted by year (eg 2015) table.insert(ret, string.format('[[Category:%s %s updates|%s%s%s]]', day, month, year, hexmonth, dayzero)) -- [[Category:2015 updates]], sorted by monthday, months converted to hex, eg B28 (28 November) table.insert(ret, string.format('[[Category:%s updates|%s%s]]', year, hexmonth, dayzero)) -- [[Category:Updates by date]], sorted year month day table.insert(ret, string.format('[[Category:Updates by date|%s%s%s]]', year, hexmonth, dayzero)) end local external = {} hexmonthnr = tonumber(hexmonthconv[month], 16) -- Historical or OSRS updates if tonumber(year) < 2008 then table.insert(ret, '[[Category:Historical updates]]') table.insert(external, 'rs') if tonumber(year) < 2004 or (tonumber(year) == 2004 and (hexmonthnr < 3 or (hexmonthnr == 3 and tonumber(day) <= 29))) then table.insert(external, 'rsc') end else table.insert(ret, '[[Category:Updates]]') end if #external then top_icons = require('Module:Top icons')._main table.insert(ret, top_icons(external)) end return table.concat(ret) end -- lang for formatting date local lang = mw.getContentLanguage() -- current title local title = mw.title.getCurrentTitle() --[=[ -- -- TEMPLATES -- --]=] -- [[Template:Update]] function p.update(frame) local a = frame:getParent().args local div = mw.html.create('div') :addClass('update') :done() local link local url = a.link or a.url local postDateInfo if hc(url) then if url == 'no' then link = 'oficialus' else link = '[' .. url .. ' oficialus]' end else link = string.lower(title.baseText) for i,v in pairs(repl_before) do link = string.gsub(link, i, v) end link = mw.uri.encode(link) for i,v in pairs(repl_after) do link = string.gsub(link, i, v) end link = '[https://wiki.mcslime.lt/' .. link .. ' oficialus pranešimas]' end local date_link, day, month, year if hc(a.date) then day = lang:formatDate('d', a.date) -- Day with leading zeros month = lang:formatDate('m', a.date) -- Month with leading zeros year = lang:formatDate('Y', a.date) -- Four-digit year date_link = string.format('[[%s-%s-%s]]', year, month, day) -- Format as yyyy-MM-dd else date_link = '(nenurodyta)' -- If no date is provided end if hc(a.rev) then date_link = date_link .. ' ir paskutinį kartą atnaujintas ' .. lang:formatDate('[[Y-m-d]]', a.rev) end if hc(a.author) then date_link = date_link .. ' by ' .. a.author end if url == 'no' then postDateInfo = 'Šis straipsnis buvo sukurtas ' .. date_link .. ', bet vėliau buvo panaikintas.' else postDateInfo = 'Šis straipsnis buvo sukurtas ' .. date_link .. '.' end -- Determine whether message is historical (pre-osrs), osrs. local message = '' local website = '' if hc(a.time) then --Historical updates if a.time == 'historical' then message = ' yra prieš paleidžiant <b>MCSlime</b> projektą ' website = '[https://www.mcslime.lt/ <i>MCSlime.LT</i>]' end --OSRS updates else message = ' ir priklauso MCSlime.LT projektui' website = '' end div:wikitext('Šis straipsnis yra ' .. link .. message) :tag('span') :addClass('plainlinks') :wikitext(website) :done() :wikitext('. Visos autorinės teisės priklauso [[MCSlime.LT]].') :tag('br'):done() :wikitext(postDateInfo) :done() local div2 = '' if hc(a.article) then div2 = mw.html.create('div') :addClass('update-redirect') :addClass('tile') -- css was previously at common.css but now here because it was unused :cssText('text-align:center;font-weight:bold;font-size:2em;line-height:1.5em;padding:1em;margin-left:auto;margin-right:auto;') :wikitext('This is a newspost. For the wiki article, see [[' .. a.article .. ']]') :done() if hc(a.nuke) then if a.nuke == 'yes' then div2:addClass('nuke'):cssText('margin-bottom:20%;') end end end local cat = '' -- cats only in update namespace if title.namespace == 112 then cat = '[[Category:' .. get_update_category(a.category) .. '|' .. title.text .. ']]' cat = cat .. get_time_categories(day, month, year) end local ret = '__NOTOC__ __NOEDITSECTION__' .. tostring(div2) .. tostring(div) .. cat return ret end -- [[Template:Patch Notes]] no links available as Patch Note Archive have been removed from MCSlime.LT's website function p.patchnotes(frame) local a = frame:getParent().args local cat = '' local div = mw.html.create('div') :addClass('update') :done() local date_link local day, month, year = '', '', '' if hc(a.date) then day = lang:formatDate('d', a.date) -- Day with leading zeros month = lang:formatDate('m', a.date) -- Month with leading zeros year = lang:formatDate('Y', a.date) -- Four-digit year date_link = string.format('[[%s-%s-%s]]', year, month, day) -- Format as yyyy-MM-dd else date_link = '(nenurodyta)' -- If no date is provided end if hc(a.rev) then date_link = date_link .. ', ir paskutinį kartą atnaujintas ' .. lang:formatDate('[[Y-m-d]]', a.rev) end div:wikitext('These official [[Patch Notes]] are copied verbatim from the Patch Notes Archive which is no longer available. Visos autorinės teisės priklauso [[MCSlime.LT]].') :done() :tag('br'):done() :wikitext('Pranešimas buvo paskelbtas ' .. date_link .. '.') :done() cat = cat .. '[[Category:Patch Notes|*' .. lang:formatDate('md', day .. ' ' .. month) .. ']]' cat = cat .. get_time_categories(day, month, year) -- not update namespace, remove cat if title.namespace ~= 112 then cat = '' end local ret = frame:getParent():preprocess(string.format('{{Parentitle override|Update:Patch Notes|(%s %s %s)}}', day, month, year)) .. '__NOEDITSECTION__' .. tostring(div) .. cat .. '<div style="float:right">__TOC__</div>' return ret end --[=[ -- -- CATEGORY FORMATTERS -- --]=] -- [[Category:28 November updates]] etc function p.date_cat(frame) local f = frame:getParent() local d if hc(f.args[1]) then d = f.args[1] else -- assumes 2016 so that leap years work d = string.gsub(title.text, ' ?updates?', '') .. ' 2016' end local ret = 'This category contains updates posted on ' .. lang:formatDate('[[j F]]', d) .. ', sorted chronologically.' -- cats only in category namespace if title.namespace == 14 then --updates by day, sorted by hexmonth,day: B28 (28 November) ret = ret .. '[[Category:Updates by day|' .. hexmonthconv[lang:formatDate('F', d)] .. lang:formatDate('d', d) .. ']]' --updates by month, sorted by [space]day ret = ret .. '[[Category:' .. lang:formatDate('F', d) .. ' updates| ' .. lang:formatDate('d', d) .. ']]' end return ret end -- [[Category:2015 updates]] etc function p.year_cat(frame) local f = frame:getParent() local d if hc(f.args[1]) then d = f.args[1] else d = string.gsub(title.text, ' ?updates?', '') end local ret = 'This category contains updates posted in [[' .. d .. ']], sorted chronologically.' -- cats only in category namespace if title.namespace == 14 then --updates by year, sorted by [space]year ret = ret .. '[[Category:Updates by year| ' .. d .. ']]' end return ret end --[=[ -- -- DATE DPL HANDLERS -- --]=] function p.datedpl(frame) local a = frame:getParent().args if not a or not a['%TITLE%'] then return 'Error: Missing required argument `%TITLE%`.' end local page = a['%TITLE%'] local year local cat if hc(a.year) then year = a.year else year = lang:formatDate('Y', a.date) end -- Get current day and month from system local current_day = tonumber(lang:formatDate('j')) -- 12 local current_month = lang:formatDate('F') -- April -- Get day and month from the provided date local entry_day = tonumber(lang:formatDate('j', a.date)) local entry_month = lang:formatDate('F', a.date) -- Check if day and month match if not (current_day == entry_day and current_month == entry_month) then return '' -- Don't display this entry end -- Set category type if hc(a.category) then local category_key = cat_switch[string.gsub(string.lower(a.category), ' ?updates?', '')] if category_key then cat = category_info[category_key][2] else cat = 'Patch Notes' end else cat = 'Patch Notes' end return string.format("'''%s''' – %s: [[%s|%s]]", year, cat, page, page) end --[=[ -- -- YEAR DPL HANDLERS -- --]=] local function sortFunc(a,b) return a[2] < b[2] end local function lookup(cat) local r = mw.getCurrentFrame():preprocess(string.format([=[ {{#dpl: |namespace=Update |category=%s |include={Update}:date,{Patch Notes}:date,{DevBlog}:date |format=,¦UD¦%%PAGE%%@D@,, |ordermethod=sortkey }} ]=], cat)) local ret = { } local keys = {} for v in mw.text.gsplit(r, '|UD|', true) do if v:find('@') then local u,_d = unpack(mw.text.split(v, '@D@')) u = mw.text.trim(u) u = string.sub(u, 8, -1) _d = mw.text.trim(_d) local y,m,d = unpack(mw.text.split(lang:formatDate('Y-F-j', _d), '-', true)) y = tonumber(y) d = tonumber(d) if not ret[y] then ret[y] = {} end if not ret[y][m] then ret[y][m] = {} end if not ret[y][m][d] then ret[y][m][d] = {u} else table.insert(ret[y][m][d], u) end end end return ret end function p.year(frame) return p._year(frame:getParent().args) end function p._year(args) local year = args[1] or mw.title.getCurrentTitle().text local data = lookup(year..' updates') data = data[tonumber(year)] local gameUpdQ = mw.smw.ask{ '[[Category:' .. year .. ' updates]][[Category:Game updates]]', '?#-'} local gameUpdates = {} if gameUpdQ == nil then return '\n\'\'No updates have been released this year so far. If you believe this is a mistake, leave a message in [[Module talk:Updates|this talk page]].\'\'' end for _,v in ipairs(gameUpdQ) do table.insert(gameUpdates, v[1]) end local ret = {'\'\'\'Note:\'\'\' Titles in bold indicate a [[Game updates|game update]].'} local data_m, data_d contains = require('Module:Array').contains ordinal = require('Module:Ordinal')._main for _,m in ipairs(looporder) do data_m = data[m[1]] if data_m then table.insert(ret, '\n\n=='..m[1]..'==') for d = m[2], 1, -1 do data_d = data_m[d] if data_d then table.sort(data_d) local patchDay = false local addedPatch = false local gameUpdDay = false local otherUpdDay = false local patchNote = 'Patch Notes (' .. d .. ' ' .. m[1] .. ' ' .. year .. ')' local patchLink = string.format('\'\'([[Update:%s|Patch Notes]])\'\'', patchNote) if ( contains(data_d, patchNote) ) then patchDay = true end for _,u in ipairs(data_d) do if( contains(gameUpdates, 'Update:' .. u) ) then gameUpdDay = true elseif( u ~= patchNote ) then otherUpdDay = true end end for _,u in ipairs(data_d) do if( contains(gameUpdates, 'Update:' .. u) ) then -- bold game updates local updBullet = string.format('\'\'\'[[Update:%s|%s]]\'\'\'', u, u) if (patchDay == true and addedPatch == false) then updBullet = updBullet .. ' ' .. patchLink addedPatch = true end table.insert(ret, string.format('\n* %s%s – %s', tostring(d), ordinal(d, {nosup = true, nonum = true}), updBullet)) elseif( u ~= patchNote ) then -- add normal updates local updBullet = string.format('[[Update:%s|%s]]', u, u) if (patchDay == true and addedPatch == false and gameUpdDay == false) then updBullet = updBullet .. ' ' .. patchLink addedPatch = true end table.insert(ret, string.format('\n* %s%s – %s', tostring(d), ordinal(d, {nosup = true, nonum = true}), updBullet)) elseif( u == patchNote and gameUpdDay == false and otherUpdDay == false ) then -- add patches as standalone updates local updBullet = string.format('\'\'([[Update:%s|Patch Notes]])\'\'', u) table.insert(ret, string.format('\n* %s%s – %s', tostring(d), ordinal(d, {nosup = true, nonum = true}), updBullet)) end end end end end end return mw.text.trim(table.concat(ret, '')) end --TODO --p.updatedpl --p.patchnotesdpl --etc return p
Paaiškinimas:
Primename, kad viskas, kas patenka į MCSlime.LT, yra skelbiama pagal GNU Free Documentation licencija 1.3 arba naujesnė versija (plačiau –
MCSlime.LT:Autorinės teisės
). Jei nenorite, kad jūsų indėlis būtų be gailesčio kaitaliojamas ir platinamas, nerašykite čia.
Jūs taip pat pasižadate, kad tai jūsų pačių rašytas turinys arba kopijuotas iš viešų ar panašių nemokamų šaltinių.
Nekopijuokite autorinėmis teisėmis apsaugotų darbų be leidimo!
Atšaukti
Kaip redaguoti
(atsidaro naujame lange)
Šablonų, naudojami puslapyje:
Šablonas:Date page
(
keisti
)
Šablonas:Date page/doc
(
keisti
)
Šablonas:Date page dpl
(
keisti
)
Šablonas:Date page dpl/doc
(
keisti
)
Šablonas:Documentation
(
keisti
)
Šablonas:Extension DPL
(
keisti
)
Šablonas:Invokes
(
keisti
)
Šablonas:T
(
keisti
)
Module:Array
(
keisti
)
Module:DPLlua
(
keisti
)
Module:DependencyList
(
keisti
)
Module:Documentation
(
keisti
)
Module:Paramtest
(
keisti
)
Module:T
(
keisti
)
Module:Tooltip
(
keisti
)
Module:Update
(
keisti
)
Module:Update/doc
(
keisti
)
Module:Yesno
(
keisti
)
Naršymo meniu
Asmeniniai įrankiai
Neprisijungęs
Aptarimas
Indėlis
Sukurti paskyrą
Prisijungti
Vardų sritys
Modulis
Aptarimas
English
Peržiūros
Skaityti
Redaguoti vikitekstą
Istorija
Daugiau
Paieška
Discord
Naršymas
Pagrindinis puslapis
Recent changes
Susisiekite
Paremkite projektą
Atsitiktinis puslapis
Informacija
Serverio taisyklės
Serverio informacija
Administracija
Nuorodos
Gidai
Rezidencijų kūrimas
Teksto formatavimas
Nauji kerėjimai
Naujoko gidas
Visos komandos
Recent changes
Įrankiai
Susiję puslapiai
Susiję keitimai
Specialieji puslapiai
Puslapio informacija