| Modul Lua ini digunakan di pesan sistem. Perubahan pada templat atau modul ini dapat mengubah antarmuka pengguna Wikipedia secara serentak. Untuk mencegah suntingan mengganggu skala besar, setiap perubahan harus diuji di subhalaman /bak pasir atau /kasus uji Modul:Submit an edit request, atau bak pasir modul Anda. Perubahan yang telah diuji kemudian dapat ditambahkan ke halaman ini dalam satu suntingan. Harap diskusikan perubahan di halaman pembicaraan sebelum mengimplementasikannya. |
| Modul ini menggunakan Lua: |
Dokumentasi di atas ditransklusikan dari Modul:Submit an edit request/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
-- This module implements {{Submit an edit request}}. localCONFIG_MODULE='Module:Submit an edit request/config' -- Load necessary modules localmRedirect=require('Module:Redirect') localcfg=mw.loadData(CONFIG_MODULE) localeffectiveProtectionLevel=require('Module:Effective protection level')._main localescape=require("Module:String")._escapePattern locallang=mw.language.getContentLanguage() localp={} localvalidLevels={ semi='semi', extended='extended', template='template', full='full', interface='interface', manual='manual' } localfunctionmessage(key,...) localparams={...} localmsg=cfg[key] if#params<1then returnmsg else returnmw.message.newRawMessage(msg):params(params):plain() end end localfunctionvalidateLevel(level) returnlevelandvalidLevels[level]or'full' end localfunctiongetLevelInfo(level,field) returncfg.protectionLevels[level][field] end localfunctionresolveRedirect(page) returnmRedirect.luaMain(page) end localfunctionisProtected(page) localaction=mw.title.new(page).existsand'edit'or'create' returneffectiveProtectionLevel(action,page)~='*' end functionp.makeRequestUrl(level,titleObj) titleObj=titleObjormw.title.getCurrentTitle() localbasePage=titleObj.basePageTitle.fullText ifcfg['main-page-content'][basePage]then returntostring(mw.uri.fullUrl(message('main-page-request-page'))) end localtalkPageName=titleObj.talkPageTitle iftalkPageName==nilthen returntostring(mw.uri.fullUrl(message('protected-talk-page-request-page'))) end talkPageName=resolveRedirect(talkPageName.prefixedText) ifisProtected(talkPageName)then returntostring(mw.uri.fullUrl(message('protected-talk-page-request-page'))) end level=validateLevel(level) iflevel=='manual'then returntostring(mw.uri.fullUrl(talkPageName,{ action='edit', section='new' })) end localsectionname=message( 'preload-title-text', getLevelInfo(level,'levelText'), lang:formatDate(message('preload-title-date-format')) ) localcontent=mw.title.new(talkPageName):getContent() ifcontentandcontent:find("== *"..escape(sectionname).." *==")then localdedup=2 whiletruedo localnewname=message("preload-title-dedup-suffix",sectionname,dedup) ifnotcontent:find("== *"..escape(newname).." *==")then sectionname=newname break end dedup=dedup+1 end end localurl=mw.uri.fullUrl(talkPageName,{ action='edit', editintro=getLevelInfo(level,'editintro'), preload=message('preload-template'), preloadtitle=sectionname, section='new' }) url=tostring(url) -- Add the preload parameters. @TODO: merge this into the mw.uri.fullUrl -- query table once [[phab:T93059]] is fixed. localfunctionencodeParam(key,val) returnstring.format('&%s=%s',mw.uri.encode(key),mw.uri.encode(val)) end url=url..encodeParam('preloadparams[]',getLevelInfo(level,'requestTemplate')) url=url..encodeParam('preloadparams[]',titleObj.prefixedText) returnurl end functionp._link(args) returnstring.format( '<span class="plainlinks">[%s %s]</span>', p.makeRequestUrl(args.type), args.displayormessage('default-display-value') ) end functionp._button(args) returnrequire('Module:Clickable button').main{ [1]=args.displayormessage('default-display-value'), url=p.makeRequestUrl(args.type), class='mw-ui-progressive' } end localfunctionmakeInvokeFunc(func,wrapper) returnfunction(frame) localargs=require('Module:Arguments').getArgs(frame,{ wrappers={wrapper} }) returnfunc(args) end end p.link=makeInvokeFunc(p._link,message('link-wrapper-template')) p.button=makeInvokeFunc(p._button,message('button-wrapper-template')) returnp