คุณอาจจะต้องการสร้างคู่มือการใช้งานของนี้ ผู้เขียนสามารถทำการทดลองได้ที่(กระบะทราย) (แก้ | ดูความแตกต่าง) และชุดทดสอบ (สร้าง) ของมอดูลนี้ โปรดเพิ่มหมวดหมู่ไปที่หน้าย่อย |
--[[ This module was created by User:CodeHydro (Alexander Zhikun He). User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main() p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287 p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ https://en.wikipedia.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791 Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages. --]] local WRAPPER_TEMPLATE, args = 'Template:Asbox' local templatestyles = 'Asbox/styles.css' local p, Buffer, stubCats = { -- Prevents dupli-cats... get it? Maybe not? cats = setmetatable({}, { __newindex = function(t, i, v) if not rawget(t, i) then rawset(t, i, v) table.insert(t, i) end end }), -- initializes variables required by both p.main and p.templatepage init = function(self, frame, page) args, page = args or require('Module:Arguments').getArgs(frame, { wrappers = WRAPPER_TEMPLATE }), page or mw.title.getCurrentTitle() -- Ensures demo parameter will never affect category() output for articles self.demo = self.demo or page.namespace ~= 0 and args.demo return args, page end }, require('Module:Buffer') --[[ Formats category links. Stores them until called with cat.done=true Takes multiple or single categories in the form of 'cat' or a table of strings and/or tables containing parts. (See below) ]] local attention, catTag, catKey = Buffer 'แม่แบบสารโครงต้องการความสนใจ', '[[หมวดหมู่:%s]]', '%s|%s%s' local function category(cat) for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do --[[ If v is a table: [1] = full category name; defaults to local attention if blank k = Category sort key. Prefix before v.t t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t ]] if v and v ~= true then -- reject v = nil, false, or true p.cats[catTag:format(tostring(v) == v and v or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|'))] = true end end return cat.done and table.concat(p.cats, p.demo and ', ' or nil) or '' end --[[ Makes an ombox warning; Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}} Will return an empty string instead when ifNot evaluates to true ]] local function ombox(v) if v.ifNot then return end p.ombox = p.ombox or require('Module:Message box').ombox category {v[2]} return p.ombox { type = 'content', text = v[1] } end --[[ Unlike original template, module now takes unlimited cats! This function also performs most stub category error checks except for the ombox for when main |category= is omitted (See p.template()) ]] local function catStub(page, pageDoc) stubCats = { missing = {}, v = {} } -- zwj and zwnj have semantical use in other other wikis, don't remove them local zwj = '\226\128\141' -- U+200D, E2 80 8D local zwnj = '\226\128\140' -- U+200C, E2 80 8C local thai = 'ก-๛' local disallowedUnicodeChars = '[^%w%p%s' .. zwj .. zwnj .. thai .. ']' -- for i18n we make this a separate string local code for k, _ in pairs(args) do -- Find category parameters and store the number (main cat = '') table.insert(stubCats, string.match(k, '^category(%d*)$')) end table.sort(stubCats) for k, v in ipairs(stubCats) do -- Get category names and, if called by p.templatepage, the optional sort key local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], disallowedUnicodeChars, '') -- remove all hidden unicode chars -- Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category. table.insert(stubCats.v, page and ( -- p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys. v == '' and tsort == 'no' -- if true, inserts 'true' in table, which category() will reject or tsort and { cat, k = ' ', t = tsort } or { cat, k = ' *', t = page.text } -- note space in front of sort key ) or cat) -- Check category existance only if on the template page (i.e. stub documentation) if page then if not mw.title.new('category:' .. cat).exists then code = code or mw.html.create 'code':wikitext '|category' table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v))) end --[[ Checks non-demo stub template for documentation and flags if doc is present. All stub cats names are checked and flagged if it does not match 'Category: [] stub'. The main stub cat is exempt from the name check if the stub template has its own doc (presumably, this doc would have an explanation as to why the main stub cat is non-conforming). ]] table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and 'Stub message templates with documentation subpages' or not (cat:match ' stubs$' or cat:match 'บทความเกี่ยวกับ (.+) ที่ยังไม่สมบูรณ์$' or cat:match '^โครง') and { k = 'S', t = page.text }) end end -- Add category names after loop is completed category(stubCats.v) return #stubCats.missing > 0 and ombox { -- Changed, original msg: -- One or more of the stub categories defined in this template do not seem to exist! -- Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}. 'พารามิเตอร์ต่อไปนี้มีชื่อหมวดหมู่ที่หน้าหมวดหมู่ยังไม่ถูกสร้าง' .. mw.text.listToText(stubCats.missing), { k = 'N', t = page.text }} end -- Shows population of categories found by catStub(). Outputs demo values if none local function population() local wikitext, base = {}, '* [[:หมวดหมู่:%s]] (จำนวนหน้า: %s)\n' if not args.category and stubCats[1] ~= false then table.insert(stubCats, 1, false) end for _, v in ipairs(stubCats) do table.insert(wikitext, base:format(v and args['category' .. v] or '{{{category}}}', v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0)) end return table.concat(wikitext) end -- Includes standard stub documention and flags stub templates with bad parameter values. function p.templatepage(frame, page) args, page = p:init(frame, page) local tStubDoc = mw.title.new 'แม่แบบ:คู่มือการใช้งานโครง' local pageDoc = page:subPageTitle('doc') -- Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=. -- Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub() return Buffer(ombox { -- Show ombox warnings for missing args. ifNot = args.category, 'พารามิเตอร์ <code>|category</code> ยังไม่ได้กำหนด โปรดเพิ่มหมวดหมู่ที่ถูกต้อง', { k = 'C', t = page.text } }):_(ombox { ifNot = args.subject or args.article or args.qualifier, 'แม่แบบโครงนี้ไม่มีคำอธิบาย หรือไม่ได้กำหนดพารามิเตอร์ต่อไปนี้อย่างน้อย 1 อัน: <code>|subject</code>, <code>|article</code> หรือ <code>|qualifier</code>', { k = 'D', t = page.text } }):_(catStub(page, pageDoc)) -- catStub() may also return an ombox if there are non-existing categories :_(category { done = p.demo ~= 'doc', -- Outputs categories if not doc demo 'แม่แบบสารโครง', args.icon and 'แม่แบบสารโครงที่ใช้พารามิเตอร์ icon' or args.image and (mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists -- do nothing if exists. category() will reject true or { k = 'B', t = page.text }) or 'แม่แบบสารโครงที่ไม่มีภาพ', args.imagealt and { k = 'I', t = page.text } }):_((not p.demo or p.demo == 'doc') and -- Add standard stub template documentation require('Module:Documentation').main { content = Buffer( page.text ~= 'Stub' and -- This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree require('Module:Asbox stubtree').subtree { args = { pagename = page.text } }):_in '\n== เกี่ยวกับแม่แบบนี้ ==\nแม่แบบนี้ใช้เพื่อระบุ' :_(args.subject):_ 'stub':_(args.qualifier):_out ' ' -- space :_ ' โดยใช้ {{[[Template:Asbox|asbox]]}} ซึ่งเป็นแม่แบบหลักสำหรับการสร้างและบำรุงรักษาแม่แบบโครง\n=== การใช้งาน ===\nพิมพ์ ' :_(mw.html.create 'code':wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}')) :_ ' จะแสดงผลข้อความที่แสดงด้านบน และเพิ่มบทความเข้าไปในหมวดหมู่ต่อไปนี้' :_ ':\n':_(population()):_(pageDoc.exists and -- transclusion of /doc if it exists frame:expandTemplate{ title = pageDoc.text }):_ '\n== ข้อมูลทั่วไป ==\n':_(frame:expandTemplate{ title = tStubDoc.text }):_ '\n\n'(), ['link box'] = Buffer 'เอกสารกำกับการใช้งานนี้สร้างขึ้นอัตโนมัติโดย [[มอดูล:Asbox]].':_in 'ข้อมูลทั่วไปนำมาจาก[[แม่แบบ:Stub documentation]]' :_(mw.html.create 'span':cssText 'font-size:smaller;font-style:normal;line-height:130%':node( ('([%s แก้] | [%s ประวัติ])'):format(tStubDoc:fullUrl('action=edit', 'relative'), tStubDoc:fullUrl('action=history', 'relative')))):_out():_( page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and "แม่แบบนี้ถูก[[WP:PROTECT|ป้องกัน]]และ[[WP:CAT|หมวดหมู่ใน ๆ]]ควรเพิ่มที่หน้ารอง[" .. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative') .. '| /doc] ซึ่งไม่ได้ถูกป้องกัน') ' <br/>' })() end function p.main(frame, page) args, page = p:init(frame, page) local output = mw.html.create 'div':attr{ role = 'note' }:addClass 'metadata plainlinks asbox stub':tag 'table':attr{ role = 'presentation' }:tag 'tr':addClass 'noresize':node((args.icon or args.image) and mw.html.create 'td':wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format( args.image or '', args.pix or '40x30', args.imagealt or 'Stub icon'))):tag 'td':tag 'p' :addClass 'asbox-body':wikitext(Buffer ' ':_((args.article or 'บทความ') .. (args.subject or '')):_(args.qualifier) '', 'นี้ยังเป็น[[วิกิพีเดีย:โครง|โครง]] คุณสามารถช่วยวิกิพีเดียได้โดยการ[', page:fullUrl('action=edit', 'relative'), ' เพิ่มเติมข้อมูล]'):done():node( args.note and mw.html.create():tag 'p':addClass 'asbox-note':wikitext(args.note):done()):allDone():node( args.name and require'Module:Navbar'._navbar { args.name, mini = 'yes' }) --[[ Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories. Articles using the template do not need a sort key since they have unique names. When p.demo equals 'doc', the demo stub categories will appear as those for a stub template. Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art') ]] if page.namespace == 0 then -- Main namespace category 'บทความทั้งหมดที่ยังไม่สมบูรณ์' catStub() elseif p.demo then if p.demo ~= 'doc' then catStub() end -- Unless p.demo is set to 'art', it will also include error categories normally only shown on -- the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space. p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page) output = mw.html.create():node(output):tag 'small':wikitext( 'หมวดหมู่ที่จะเพิ่ม: ', (category { done = true }:gsub('(%[%[)(หมวดหมู่:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub( '(%[%[)(หมวดหมู่:)', '%1:%2'))):done():wikitext(p.demo == 'doc' and p.demodoc or nil) else -- Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}} local normalizedName = mw.title.new(args.name or '') if normalizedName and normalizedName.fullText == page.fullText then output = mw.html.create():node(output):wikitext(p.templatepage(frame, page)) elseif not page.isSubpage and page.namespace == 10 then -- Template namespace and not a subpage category {{ k = args.name and 'E' or 'W', t = page.text }} end end return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } .. tostring(output:wikitext(not p.demo and category { done = true } or nil)) end return p
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
khumuxkarichnganmxdul srang khunxaccatxngkarsrangkhumuxkarichngankhxngmxdulni phuekhiynsamarththakarthdlxngidthikrabathray aek dukhwamaetktang aelachudthdsxb srang khxngmxdulni oprdephimhmwdhmuipthihnayxy hnayxykhxngmxdulni This module was created by User CodeHydro Alexander Zhikun He User Jackmcbarn and User Mr Stradivarius provided a great deal of assistance in writting p main p main draw heavily from the following version of Template Asbox of the English Wikipedia authored primarily by User Rich Farmbrough https en wikipedia org w index php title Template Asbox amp oldid 619510287 p templatepage is derived from the following revision of Template Asbox templatepage authored primarily by User MSGJ https en wikipedia org w index php title Template Asbox templatepage amp oldid 632914791 Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages local WRAPPER TEMPLATE args Template Asbox local templatestyles Asbox styles css local p Buffer stubCats Prevents dupli cats get it Maybe not cats setmetatable newindex function t i v if not rawget t i then rawset t i v table insert t i end end initializes variables required by both p main and p templatepage init function self frame page args page args or require Module Arguments getArgs frame wrappers WRAPPER TEMPLATE page or mw title getCurrentTitle Ensures demo parameter will never affect category output for articles self demo self demo or page namespace 0 and args demo return args page end require Module Buffer Formats category links Stores them until called with cat done true Takes multiple or single categories in the form of cat or a table of strings and or tables containing parts See below local attention catTag catKey Buffer aemaebbsarokhrngtxngkarkhwamsnic hmwdhmu s s s s local function category cat for v in ipairs tostring cat cat or cat t and cat or cat do If v is a table 1 full category name defaults to local attention if blank k Category sort key Prefix before v t t page text or args tempsort appended after k or in its place if omitted Required if v is not a string Basically the same as v v 1 or attention v k or v t if v and v true then reject v nil false or true p cats catTag format tostring v v and v or v 1 and Buffer v 1 or attention in v k v t str 2 nil nil true end end return cat done and table concat p cats p demo and or nil or end Makes an ombox warning Takes table ifNot Boolean text cat sort key cat sort name Will return an empty string instead when ifNot evaluates to true local function ombox v if v ifNot then return end p ombox p ombox or require Module Message box ombox category v 2 return p ombox type content text v 1 end Unlike original template module now takes unlimited cats This function also performs most stub category error checks except for the ombox for when main category is omitted See p template local function catStub page pageDoc stubCats missing v zwj and zwnj have semantical use in other other wikis don t remove them local zwj 226 128 141 U 200D E2 80 8D local zwnj 226 128 140 U 200C E2 80 8C local thai k local disallowedUnicodeChars w p s zwj zwnj thai for i18n we make this a separate string local code for k in pairs args do Find category parameters and store the number main cat table insert stubCats string match k category d end table sort stubCats for k v in ipairs stubCats do Get category names and if called by p templatepage the optional sort key local tsort cat args tempsort v mw ustring gsub args category v disallowedUnicodeChars remove all hidden unicode chars Do not place template in main category if tempsort no However DO place articles of that template in the main category table insert stubCats v page and p templatepage passes page p main does not i e articles are categorized without sort keys v and tsort no if true inserts true in table which category will reject or tsort and cat k t tsort or cat k t page text note space in front of sort key or cat Check category existance only if on the template page i e stub documentation if page then if not mw title new category cat exists then code code or mw html create code wikitext category table insert stubCats missing tostring mw clone code wikitext v end Checks non demo stub template for documentation and flags if doc is present All stub cats names are checked and flagged if it does not match Category stub The main stub cat is exempt from the name check if the stub template has its own doc presumably this doc would have an explanation as to why the main stub cat is non conforming table insert stubCats v v and not p demo and pageDoc exists and Stub message templates with documentation subpages or not cat match stubs or cat match bthkhwamekiywkb thiyngimsmburn or cat match okhrng and k S t page text end end Add category names after loop is completed category stubCats v return stubCats missing gt 0 and ombox Changed original msg One or more of the stub categories defined in this template do not seem to exist Please double check the parameters para category para category1 and para category2 pharamietxrtxipnimichuxhmwdhmuthihnahmwdhmuyngimthuksrang mw text listToText stubCats missing k N t page text end Shows population of categories found by catStub Outputs demo values if none local function population local wikitext base hmwdhmu s canwnhna s n if not args category and stubCats 1 false then table insert stubCats 1 false end for v in ipairs stubCats do table insert wikitext base format v and args category v or category v and mw site stats pagesInCategory args category v all or 0 end return table concat wikitext end Includes standard stub documention and flags stub templates with bad parameter values function p templatepage frame page args page p init frame page local tStubDoc mw title new aemaebb khumuxkarichnganokhrng local pageDoc page subPageTitle doc Reorganization note Original Asbox alternates between outputting categories and checking on params category Rather than checking multiple times and switching tasks all stub category param operations have been rolled into catStub return Buffer ombox Show ombox warnings for missing args ifNot args category pharamietxr lt code gt category lt code gt yngimidkahnd oprdephimhmwdhmuthithuktxng k C t page text ombox ifNot args subject or args article or args qualifier aemaebbokhrngniimmikhaxthibay hruximidkahndpharamietxrtxipnixyangnxy 1 xn lt code gt subject lt code gt lt code gt article lt code gt hrux lt code gt qualifier lt code gt k D t page text catStub page pageDoc catStub may also return an ombox if there are non existing categories category done p demo doc Outputs categories if not doc demo aemaebbsarokhrng args icon and aemaebbsarokhrngthiichpharamietxr icon or args image and mw title new Media mw text split args image 1 exists do nothing if exists category will reject true or k B t page text or aemaebbsarokhrngthiimmiphaph args imagealt and k I t page text not p demo or p demo doc and Add standard stub template documentation require Module Documentation main content Buffer page text Stub and This comparison performed in Asbox stubtree before it invokes Module Asbox stubtree require Module Asbox stubtree subtree args pagename page text in n ekiywkbaemaebbni n aemaebbniichephuxrabu args subject stub args qualifier out space odyich Template Asbox asbox sungepnaemaebbhlksahrbkarsrangaelabarungrksaaemaebbokhrng n karichngan n phimph mw html create code wikitext page text Stub and stub or page text caaesdngphlkhxkhwamthiaesdngdanbn aelaephimbthkhwamekhaipinhmwdhmutxipni n population pageDoc exists and transclusion of doc if it exists frame expandTemplate title pageDoc text n khxmulthwip n frame expandTemplate title tStubDoc text n n link box Buffer exksarkakbkarichngannisrangkhunxtonmtiody mxdul Asbox in khxmulthwipnamacak aemaebb Stub documentation mw html create span cssText font size smaller font style normal line height 130 node s aek s prawti format tStubDoc fullUrl action edit relative tStubDoc fullUrl action history relative out page protectionLevels edit and page protectionLevels edit 1 sysop and aemaebbnithuk WP PROTECT pxngkn aela WP CAT hmwdhmuin khwrephimthihnarxng pageDoc fullUrl action edit amp preload Template Category interwiki preload relative doc sungimidthukpxngkn lt br gt end function p main frame page args page p init frame page local output mw html create div attr role note addClass metadata plainlinks asbox stub tag table attr role presentation tag tr addClass noresize node args icon or args image and mw html create td wikitext args icon or File s spx alt s format args image or args pix or 40x30 args imagealt or Stub icon tag td tag p addClass asbox body wikitext Buffer args article or bthkhwam args subject or args qualifier niyngepn wikiphiediy okhrng okhrng khunsamarthchwywikiphiediyidodykar page fullUrl action edit relative ephimetimkhxmul done node args note and mw html create tag p addClass asbox note wikitext args note done allDone node args name and require Module Navbar navbar args name mini yes Stub categories for templates include a sort key this ensures that all stub tags appear at the beginning of their respective categories Articles using the template do not need a sort key since they have unique names When p demo equals doc the demo stub categories will appear as those for a stub template Otherwise any non nil p demo will emulate article space categories plus any error cats unless set to art if page namespace 0 then Main namespace category bthkhwamthnghmdthiyngimsmburn catStub elseif p demo then if p demo doc then catStub end Unless p demo is set to art it will also include error categories normally only shown on the template but not in the article The elseif after namespace 0 means demo cats will never show in article space p demodoc p demo art and p templatepage frame page output mw html create node output tag small wikitext hmwdhmuthicaephim category done true gsub hmwdhmu 1 2 3 2 3 4 gsub hmwdhmu 1 2 done wikitext p demo doc and p demodoc or nil else Checks for valid name emulates original template s check using FULLPAGENAME name local normalizedName mw title new args name or if normalizedName and normalizedName fullText page fullText then output mw html create node output wikitext p templatepage frame page elseif not page isSubpage and page namespace 10 then Template namespace and not a subpage category k args name and E or W t page text end end return frame extensionTag name templatestyles args src templatestyles tostring output wikitext not p demo and category done true or nil end return p