Wikipedia testwiki https://test.wikipedia.org/wiki/Main_Page MediaWiki 1.39.0-wmf.22 first-letter Media Special Talk User User talk Wikipedia Wikipedia talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Thread Thread talk Summary Summary talk Test namespace 1 Test namespace 1 talk Test namespace 2 Test namespace 2 talk Draft Draft talk Campaign Campaign talk TimedText TimedText talk Module Module talk SecurePoll SecurePoll talk CNBanner CNBanner talk Translations Translations talk Gadget Gadget talk Gadget definition Gadget definition talk Topic Newsletter Newsletter talk Wikipedia:Requests/Tools 4 31626 519277 519211 2022-07-30T05:00:28Z Matttest 49083 Per announcement at https://fortestwiki.myht.org/index.php?title=TestWiki:Community_portal&diff=697&oldid=692 wikitext text/x-wiki <languages/> {{Requests}} <translate><!--T:1--> This page lists sites for users to test administrative tools and the [[mw:|MediaWiki]] software in general. However, each site will have its own rules for testing adminship.</translate> <hr width="86%"/> <div class="plainlinks"> {| class="wikitable" style="text-align:center; background:none;" |- ! bgcolor="grey"| <translate><!--T:2--> Name</translate> ! bgcolor="grey"| <translate><!--T:3--> MediaWiki version</translate> ! bgcolor="grey"| <translate><!--T:4--> IRC channel(s)</translate> ! bgcolor="grey"| <translate><!--T:6--> CheckUser</translate> ! bgcolor="grey"| <translate><!--T:8--> Privacy policy</translate> ! bgcolor="grey"| <translate><!--T:9--> Bug Tracker/Requests site</translate> ! bgcolor="grey"| <translate><!--T:10--> VisualEditor</translate> |- | [https://publictestwiki.com/ <translate><!--T:21--> '''Public Test Wiki''' (Miraheze)</translate>] |bgcolor="#3E7"| 1.38.2<ref name="mhTestWiki">[https://publictestwiki.com/wiki/Special:Version <translate><!--T:22--> Public Test Wiki version page</translate>]</ref><br>(latest) | [ircs://chat.freenode.net/miraheze-testwiki #miraheze-testwiki] <translate><!--T:23--> on libera</translate> | bgcolor="yellow"| <translate><!--T:25--> Restricted</translate> | bgcolor="#3E7"| [https://publictestwiki.com/wiki/TestWiki:Privacy_policy <translate><!--T:27--> Yes</translate>] | bgcolor="#3E7"| [https://phabricator.miraheze.org/ Miraheze Phabricator] | bgcolor="#3E7"| <translate><!--T:28--> Yes</translate> |- | [https://testwiki.wiki/ '''<translate><!--T:12--> Test Wiki</translate>'''] |bgcolor="#3E7"|1.38.2<ref>[https://testwiki.wiki/wiki/Special:Version <translate><!--T:13--> Test Wiki's Special:Version</translate>]</ref><br>(latest) | [irc://chat.freenode.net/testadminwiki #testadminwiki] <translate><!--T:14--> on libera</translate> | bgcolor="#3E7"| <translate><!--T:16--> Yes (only for self)</translate> | bgcolor="#3E7"| [https://testwiki.wiki/wiki/Test_Wiki:Privacy_policy <translate><!--T:18--> Yes</translate>] | bgcolor="#3E7"| [https://phabricator.testwiki.wiki/ Testwiki Phabricator] | bgcolor="#3E7"| <translate><!--T:19--> Yes</translate> |- | [https://www.thetestwiki.org/ '''<translate><!--T:48--> The Test Wiki</translate>'''] |bgcolor="yellow"| 1.35.1<ref name="ttw-version">[https://www.thetestwiki.org/wiki/Special:Version <translate><!--T:49--> The Test Wiki's Special:Version</translate>]</ref><br>(legacy) | [irc://chat.freenode.net/thetestwiki #thetestwiki] <translate><!--T:50--> on freenode</translate> | bgcolor="#3E7"| <translate><!--T:52--> Yes (only for self)</translate> | bgcolor="#3E7"| [https://www.thetestwiki.org/wiki/The_Test_Wiki:Privacy_policy <translate><!--T:54--> Yes, for non-vandals</translate>] | bgcolor="#3E7"| <translate><!--T:55--> [[<tvar name="1">mw:User talk:Skizzerz</tvar>|Skizzerz’s talk page]]</translate> | bgcolor="red"| <translate><!--T:56--> No</translate> |- | [http://testmw.fandom.com/ '''<translate><!--T:39--> Fandom Test Wiki</translate>'''] |bgcolor="yellow"|1.37.3<ref name="Wikia">[http://testmw.fandom.com/wiki/Special:Version <translate><!--T:40--> Test Wiki version page</translate>]</ref><br>(legacy) | None for now | bgcolor=Yellow|<translate><!--T:43--> Restricted</translate> | bgcolor=#33EE77|[http://www.fandom.com/privacy-policy <translate><!--T:45--> Yes</translate>] | bgcolor=#33EE77|[https://community.wikia.com/wiki/Special:Contact/bug <translate><!--T:59--> Fandom Support - Bug Report</translate>] | bgcolor=#33EE77|<translate><!--T:46--> Yes</translate> |- | [http://fortestwiki.myht.org/ '''<translate> <!--T:60--> For-Test Wiki</translate>'''] |bgcolor=#3E7|1.38.2<ref>[https://fortestwiki.myht.org/index.php/Special:Version <translate><!--T:13--> For-Test Wiki's Special:Version</translate>]</ref><br>(latest) | [irc://irc.libera.chat/fortestwiki #fortestwiki] on Libera | bgcolor=#3E7|<translate> <!--T:61--> Yes (only for self)</translate> | bgcolor=#33EE77|[http://fortestwiki.myht.org/index.php/TestWiki:Privacy_policy <translate> <!--T:62--> Yes, no-log policy</translate>] | bgcolor=#33EE77|[http://fortestwiki.myht.org/index.php/TestWiki:Community_portal <translate> <!--T:63--> The Community portal</translate>] | bgcolor=#33EE77|<translate> <!--T:64--> Yes</translate> |} </div> <translate> == Notes == <!--T:58--> </translate> <references /> gnt0v2szzeewo9gzel7a0x2weouspcu Wikipedia:Administrator intervention against vandalism 4 36309 519276 514253 2022-07-30T01:40:29Z 2600:6C40:5400:2F5:795D:664C:C0D3:DEB2 wikitext text/x-wiki {{good article}} <!--- Unless you can find a reputable source for the episode list (not IMDb or Fandom), please do not add an episode list.---> {{Infobox television | genre = [[Children's television series|Children's show]]<br />[[Educational television|Educational]]<br />[[Puppet show]]<br />Segment | writer = [[Judy Freudberg]] (1998-2009) | presenter = [[Kevin Clash]]<br />[[Ryan Dillon]] | starring = [[Bill Irwin]]<br />[[Michael Jeter]]<br />[[Kristin Chenoweth]]<br />[[Sarah Jones (stage actress)|Sarah Jones]]<br />[[Daniel Koren]]<br />[[Daveed Diggs]]<br />[[Ilana Glazer]] | runtime = 15 minutes (1998–2009)<br />5 minutes (2017-2021) | opentheme = "Elmo's World Theme Song" (sung to "Elmo's Song" prior to 2017) | endtheme = "The Close Song" (usually sung to the tune of "[[Jingle Bells]]") (1998–2009)<br />"The Happy Dance" (2017–2021) | company = [[Sesame Workshop]] (Formerly known as Children's Television Workshop) | distributor = Sesame Workshop | country = United States | language = English | picture_format = [[NTSC]] (1998–2007)<br />[[HDTV]] [[720p]] & [[1080i]] (2008–2021) | audio_format = [[Stereo]] (1998–2001)<br />[[Dolby Surround]] (2002–2006)<br />[[Dolby Digital]] (2007–2021) | first_aired = '''Original series:'''<br />{{Start date|1998|11|16}} – {{Start date|2009|11|10}}<br />'''Revived series:'''<br />{{Start date|2017|1|7}} | last_aired = {{End date|2021|7|1|}} | num_episodes = 127 (including specials) | image = }} '''''Elmo's World''''' is a segment that is shown at the end of the American children's television program ''[[Sesame Street]]''. It premiered on November 16, 1998, as part of the show's structural change and originally lasted fifteen minutes at the end of each episode until 2009. However it was then rebooted in 2017. The show was designed to appeal to younger viewers and to increase ratings, which had fallen in the past decade. The segment is presented from the perspective of a three-year-old child as represented by its host, the Muppet [[Elmo]], performed by [[Kevin Clash]] in the original series and [[Ryan Dillon]] in the 2017 reboot. "La-la-la-la, la-la-la-la, Elmo's World!" 8a8zv0yxkaog2rxv7zvtzvlzv119gy7 519279 519276 2022-07-30T07:38:22Z Jeff G. 3855 Reverted edits by [[Special:Contributions/2600:6C40:5400:2F5:795D:664C:C0D3:DEB2|2600:6C40:5400:2F5:795D:664C:C0D3:DEB2]] ([[User talk:2600:6C40:5400:2F5:795D:664C:C0D3:DEB2|talk]]) to last revision by [[User:Interstatefive|Interstatefive]] wikitext text/x-wiki <!-- Adds protection template automatically if page is semi-protected, inside the noinclude, because this page is transcluded. --><noinclude>{{#ifeq:|autoconfirmed|}}</noinclude><!-- Categories --><noinclude>[[Category:Wikipedia noticeboards]]{{Redirect|WP:RVAN|information on how to respond to vandalism|Wikipedia:Vandalism#How to respond to vandalism}}{{/Header}}{{Floating link|Administrator instructions|Administrator instructions}} __NEWSECTIONLINK__<!-- __NEWSECTIONLINK__ causes a + button to appear on the edit page. This is a useful feature, as it allows editors to add reports without edit conflicts; edit conflicts are very common on this page. --> <!-- The backlog tag is automatically changed to enabled ({{adminbacklog}}) or disabled ({{noadminbacklog}}) by a bot. There is usually no need to manually edit the following line. Please see the talk page for more details if you wish to manually force the removal of the back-log indicator, rather than removing it. --> {{noadminbacklog}}<!-- v2.0.15 RemoveBlocked=On MergeDuplicates=On AutoMark=On FixInstructions=Off AutoBacklog=On AddLimit=5 RemoveLimit=2 --></noinclude> <!-- Do not remove adminbacklog/noadminbacklog template above! --> ==Reports== {{Wikipedia:Administrator intervention against vandalism/TB2}} === User-reported === 70z7g6jbng5q41lovl56y9kpdi64zdp File:MP sounds-pwb.png 6 78320 519258 519224 2022-07-29T16:52:18Z Pywikibot-test 23124 Pywikibot-test uploaded a new version of [[File:MP sounds-pwb.png]] wikitext text/x-wiki pywikibot test mvex885are6ahaz42kwh4kn9swdrp8i 519259 519258 2022-07-29T16:54:23Z Pywikibot-test 23124 Pywikibot-test uploaded a new version of [[File:MP sounds-pwb.png]] wikitext text/x-wiki pywikibot test mvex885are6ahaz42kwh4kn9swdrp8i User:John Vandenberg/async test write 2 81547 519252 519217 2022-07-29T16:22:34Z Pywikibot-test 23124 Pywikibot 7.6.0.dev2 wikitext text/x-wiki 1659111745.1096778 aa5kh1a8ppk5do53mh4wtuu51rf4xzw User:John Vandenberg/appendtext test 2 81788 519251 519216 2022-07-29T16:22:24Z Pywikibot-test 23124 wikitext text/x-wiki 1433650768.531433650922.331433651729.111433670166.311433675620.231434189298.391434190713.181434466819.82218051434544025.22135851434556196.60172341435173199.59346151435175699.59451271435227022.74044541435528701.75742911435530425.45590261435603389.080081437231694.72999551437247968.58793571437249806.3797741437298795.05681351437299498.54262071437301447.66920381437302227.7655441437303194.27986031437304101.72397661437310188.7074311437310950.0167771437312161.48824671437313010.34581731437313729.64502261437508795.02368621437509778.81783961437516631.40031891438256915.00195531438380338.75435851438383980.68647171438454064.30758831438457192.55998851438473558.4497151438475370.52737021438888563.82252121439048615.09364531439242551.86522051439284878.94054751439567068.00147221439645869.40761881439653355.34343361439892097.89366271439893989.92894151439937872.74017361439942911.25551271440071096.08264111440280762.25626281440718001.3262011440893319.42683861441040710.94389411441045094.56088661441367039.71286131441492543.00856571441494238.9647241443131370.03606581443212814.54482251454969098.621455143085.01455479939.331458010578.141646415352.6267931646418236.303551646419108.5554141646480673.1255151646486361.30947541646489252.55788281646497776.8472891646500951.96962931646503090.90285371646508464.6270851646557704.72482941646560644.88797711646568704.91856581646573733.00244281646576832.29534481646608917.34515641646654969.60378361646656319.4402261646656560.3573951646667875.37336181646669840.47606131646671473.95034121646674984.85814431646826562.7642131646830600.84946161646833174.90316631646834856.9354641646836733.8114731646848463.33862281646854361.6220061646921244.61630941646929392.52481341646933478.7709891646989628.14013271646993317.0693991647006535.8758381647010068.79893281647067797.81312181647070228.9538041647088146.43666861647129259.68616061647160403.20344641647161418.68453741647165213.34464841647182471.8682351647203984.8648061647204146.85476951647205856.08880071647229928.91692161647232863.2489111647244837.81863951647253131.60572861647253341.66492151647257374.36275241647261586.3715681647328114.68083791647328863.86457971647338369.03202411647345322.46875211647352352.98292641647362207.4400921647376689.68484851647377054.13237741647507817.3071141647520722.49061581647537658.91502861647537706.9929851647537724.92751151647537734.26552411647537734.81241751647537796.29433751647600884.78828861647603345.3407491647607378.26923131647607451.39406541647610335.08369161647619863.80975681647636713.9665881647684938.94061331647686327.2922681647690808.45028761647692744.59212851647732431.32598611647772952.28326751647781284.95441991647800669.47089581647849904.41088181647854192.1383851647860875.18231251647874602.63781051647879297.1874931647883065.4647961647924265.03851251647936769.8719151647951966.8961621648054226.68201351648059130.80152961648060298.43086981648069938.0877581648125306.6112961648143342.68760181648143650.04991751648188528.68711191648196925.6356741648203876.69900561648211369.0150091648230332.54617121648281987.22994761648283693.56241941648285224.71328661648286447.91258651648291573.67376261648291846.70330291648294060.07191231648296246.83941861648298801.97048331648305016.80210021648334644.85586831648379305.4112821648389448.81566381648405605.99447971648411133.04927181648412522.24783181648422117.89680721648446617.8572281648450264.77608821648454199.90044761648467787.75208971648467856.83117841648718888.7086471648726868.34113621648731002.50412491648735298.12991521649690895.66212321649691467.9696281649743553.52938491649755873.90303251649763327.8892521649774138.0124031649777526.37097861649778489.48823021649784790.27565621649860160.37698861649936556.74318031649955430.38933971650002447.5759611650006360.23943541650028605.97354981650039495.475341650041154.52726721650041204.27767731650043469.9524181650182871.47858071650185429.33433821650203503.7359421650214109.96521881650231719.77891951650281824.2778291650288925.13755371650295721.33825951650295882.12538961650300339.22233131650341815.28370641650380832.94509431650402613.69048711650518905.2356281650522569.2941071650530608.544891650531430.3989611650533914.10076831650542738.41888791650546175.9846881650568044.03694751650631023.97239781650632899.72227331650634830.3925491650637007.66384821650640862.5720661650689309.4054381650701657.98250581650703185.78357031650703771.5033541650735123.8095531650738484.06956341650776192.5568211650813066.8977991650848683.918771650861187.31198121650876020.82570171650880474.35385231650881868.45988561650883153.22984271650884549.92777321650886892.40727421650897830.36771461650949494.34935431650949911.4991251650954397.3235271650990281.23737171650995523.8559241651056953.48302131651058845.9713631651060365.91917781651065711.69361521651066891.44208121651068680.67229721651068949.30104371651068950.86070821651069866.21405341651077973.48218511651150569.5798041651150701.53431841651159306.89410231651163972.5414571651207135.13229251651314580.08892971651323639.1569731651335350.97018341651337464.3604491651343671.43810871651358144.34414821651358991.73634841651403991.80600071651408466.43860861651410629.6915031651424095.3323751651424215.430631651424217.16175171651424260.61668921651435316.36143421651477433.62521861651497967.4008731651570956.43188331651571040.13904711651574112.83837941651576178.2236351651585370.21917181651635290.6039241651635576.97641251651635655.45832421651635743.04751161651652652.44804481651673300.35671471651690999.9594171651756658.2204551651756671.9024541651780115.29231761651804123.6068891651841232.36630061651872084.1808571651914696.15967461651915185.17890741651924981.59495141651924985.67764931651947461.11864161652010451.4397451652013169.15126091652018291.04681441652101981.57916931652102144.73755261652205259.24803381652228263.38625721652241111.3187991652241991.0605551652246545.13976341652249133.80611011652345322.74670461652349556.01237941652349776.2655691652350144.64992761652353480.50348451652355561.35055181652355572.5898951652363359.53054261652423597.3604321652425345.54388571652434442.67079141652466898.8122741652467998.09214571652481119.60053971652515900.4313781652516491.8247921652517245.8858371652517458.95822791652523536.91254641652525004.91378931652529117.52156421652530351.27152131652549586.46723871652562013.24319481652614409.32601761652616114.78897861652640389.54013231652701163.91744661652701218.71869951652704583.73101121652736636.34235531652809358.14918331652809500.2787851652885818.32253531652895677.120911652946764.21459771652958152.14900661653025900.08983161653065810.43916341653077663.07969381653095577.50154731653096778.42144161653097676.23765561653097888.80603721653116153.01087381653117420.85944841653118936.11491161653125313.7796781653126335.42993711653134067.09842161653139182.64564281653140672.3829011653154587.25496341653199373.6701311653226953.91169641653231963.08484821653232304.7106561653232554.38019971653232554.62967321653232677.8029061653256433.89535141653299432.4922731653306400.6730731653306472.8736611653393355.7553971653418909.73856261653565475.12498951653565552.10120181653644012.96268871653661508.7837781653661589.44294881653680694.40217831653757986.47126131653758797.5201131653758875.8009641653759516.43632131653815204.55978871653824578.46436481653842638.63208631653842909.72020081653892126.12672331653892420.81626921653892767.61418631653902922.38997861653910982.26115511653911098.50605081653912234.13429621653924819.25348691653941654.93242031653982713.13638191654003151.13523241654003174.6005821654264812.17732931654266724.5675461654268127.23252031654270160.76145861654301043.6971021654301072.0992181654301079.82639071654301896.66440531654334439.6818731654371822.44146631654428936.93347531654437095.0085341654508132.13094881654508335.43588731654520334.84838561654524063.79315451654525364.53509121654534180.4449181654953821.0468051654961938.94488381655036873.3743951655057492.40380381655057801.47854161655062300.50764231655129886.96682861655141011.99076751655166294.6540651655166301.61901331655216132.3208221655223573.8453581655225751.37171321655246178.10818171655296810.23211931655301828.3813591655368778.396751655379956.18857221655380431.36770651655472945.27423521655484574.08949831655507527.0224681655537627.60304521655558615.17976361655563633.72554421655569614.23738551655634387.11088251655645988.83602711655657438.1813961655713626.63884621655721946.37590861655722438.1599561655723778.13386921655725062.77537751655725269.6044051655728370.88312841655752608.5468571655809347.31652141655821992.57788371655831959.40542841655832768.65955691655843607.9513691655847927.774761655910557.06128741655930286.04162761655984718.1677731655984784.72391371656084284.91802841656091464.9171381656108569.03781821656144910.73668431656237464.9551931656238061.17135551656238140.40173581656238882.40057641656238919.37414531656239293.42675191656242411.12083081656246784.30946971656260465.50201821656261907.03887151656263294.21785121656264857.22691631656268330.1211061656268437.60271121656301508.07333091656330302.93307041656330502.12784811656356829.9017161656385974.7934371656387732.02068971656483270.8206721656596673.7715261656635713.02665231656667311.15519761656667757.71407681656693761.8080651656705954.52436731656753744.37684461656763015.42648551656767146.81630661656841740.58635851656845713.36385511656846091.09794041656928094.63535641656948795.61005121656950066.0852351656964699.3929741657002316.55603961657010505.2748941657013544.80798841657015413.77136021657025003.4560941657038750.15809251657039417.24476391657043605.9258891657044407.42733961657051733.92174651657088120.63696361657104460.7448131657108288.86261561657121273.51174641657125154.85219221657140234.29372531657192424.43024661657197439.27889011657198301.67318251657201269.89470821657211198.80976871657271744.8218321657281300.4610831657374150.77523261657476775.62064481657481255.09343081657482599.06296831657497382.093291657539578.63450741657539781.1762681657558369.09502081657799038.87918231657799116.29259251657859471.084171657859516.10439011657962545.19483261657962787.59437661657967228.37440181657974597.18307661658049488.68201351658060577.18078541658064128.90686661658064263.8123631658069341.93958781658077026.34067771658078706.88455961658079600.63347741658081221.23908161658081285.91025161658085023.94248371658128817.5476131658136214.41560361658152834.47753431658166801.45076581658196924.6985691658234310.5858651658247533.30726621658296567.73139791658300378.65953061658303756.00198131658305698.39711261658382887.724681658383856.37543231658384121.3366351658390189.93443231658392025.1128251658412468.54568721658412797.65880041658438616.3758981658471521.65448121658472954.71186351658474751.5916821658474776.28065591658486284.59899661658486319.77809761658486383.9840391658490944.0040541658491220.88122321658494083.36627481658572911.5845361658577899.82729891658587022.79079221658591743.12070351658599637.18309741658603076.26439361658607840.53604631658608068.95690061658632322.36042521658663105.38651751658665771.35931851658667025.4637931658668018.09719041658669787.80982111658691321.1552461658692788.99276071658694425.02418141658719342.8613571658719344.900981658736094.62209821658744041.35345391658748345.99290781658749553.6679561658749620.34319641658764308.11469481658819039.0050441658824812.17245531658842921.14167791658862950.05908541658866951.6806491658867535.5773941658877498.26109531658877516.4155781658896342.94982431658896469.47555181658939089.75173661658940109.93389181658940199.76201341658944478.1677931658949832.38372451658975346.1412181658988816.19879631659008462.91326981659008575.73063641659012991.48196961659082566.04576251659111734.5913854 gpegsgy63nolnujrxx0ovl56rdgw8bw User:Unicodesnowman/DeleteMark 2 82252 519249 519215 2022-07-29T16:22:07Z Pywikibot-test 23124 pywikibot unit test. Do NOT actually delete. wikitext text/x-wiki {{delete|1=pywikibot unit test. Do NOT actually delete.}} foo cymfz8u3wtlps4m6nlzq7086mgmr0cz 519250 519249 2022-07-29T16:22:12Z Pywikibot-test 23124 unit test wikitext text/x-wiki foo 1e6gpc3ehk0mu2jqu8cg42g009s796b User:Patsagorn Y./sandbox 2 105710 519278 484756 2022-07-30T07:07:10Z Patsagorn Y. 42891 wikitext text/x-wiki <div class="center er-container"><span class="er-not-supported" style="display:none;">This client is not support javascript or you cannot run the script</span><span class="er-please-wait" style="display: none;">Your browser support JavaScript. Please wait while loading ER</span><div class="er-start-button mw-ui-button mw-ui-progressive" style="width: 100%;">Start an Edit Request (ER)</div></div> >< ข้อความในปุ่มที่ถูกใช้ คือ * [[MediaWiki:publishchanges/th]] ({{int:publishchanges}}) - กรณีแก้ไขหน้าที่มีอยู่แล้ว * [[MediaWiki:publishpage/th]] ({{int:publishpage}}) - กรณีสร้างหน้าใหม่ ถ้าอยากให้มันเปลี่ยนแปลงตามภาษา Interface ของผู้ใช้ ก็สามารถใช้ <code><nowiki>{{int:publishpage}}</nowiki></code> ได้ครับ (ตัวอย่าง: [{{fullurl:{{FULLPAGENAME}}#ข้อเสนอปรับปรุงข้อความ กรกฎาคม 2565|uselang=uk}} uselang=uk], [{{fullurl:{{FULLPAGENAME}}#ข้อเสนอปรับปรุงข้อความ กรกฎาคม 2565|uselang=ja}} uselang=ja]) huevuvuhcv3n3oew6qheqqpd7qjiuz5 Wikipedia:Sandbox 4 107092 519273 519231 2022-07-29T21:00:29Z Cewbot 33876 Clear the sandbox. If you want to keep it longer, please test it in [[Special:MyPage/Sandbox|personal sandbox]], you can also check the revision history of the sandbox. wikitext text/x-wiki <noinclude>{{Sandbox}}</noinclude> == Please start your testing below this line == 9v37rcaxoiwjar8n3q9n7dcsjdvcyin User:Hamish/Twinkle/modules/twinklewarn.js 2 112058 519275 501280 2022-07-30T00:04:34Z Hamish 40220 Initialise to 4a5c761b2826d5fad04c247fc8c67babf38dcb54 at xi-plus/master javascript text/javascript // <nowiki> (function($) { /* **************************************** *** twinklewarn.js: Warn module **************************************** * Mode of invocation: Tab ("Warn") * Active on: Any page with relevant user name (userspace, contribs, * etc.), as well as the rollback success page */ Twinkle.warn = function twinklewarn() { if (Morebits.wiki.flow.relevantUserName()) { Twinkle.addPortletLink(Twinkle.warn.callback, '警告', 'tw-warn', wgULS('警告或提醒用户', '警告或提醒使用者')); if (Twinkle.getPref('autoMenuAfterRollback') && mw.config.get('wgNamespaceNumber') === 3 && mw.util.getParamValue('vanarticle') && !mw.util.getParamValue('friendlywelcome') && !mw.util.getParamValue('noautowarn')) { Twinkle.warn.callback(); } } // Modify URL of talk page on rollback success pages, makes use of a // custom message box in [[MediaWiki:Rollback-success]] if (mw.config.get('wgAction') === 'rollback') { var $vandalTalkLink = $('#mw-rollback-success').find('.mw-usertoollinks a').first(); if ($vandalTalkLink.length) { Twinkle.warn.makeVandalTalkLink($vandalTalkLink, Morebits.pageNameNorm); $vandalTalkLink.css('font-weight', 'bold'); } } if (mw.config.get('wgCanonicalSpecialPageName') === 'AbuseLog' && mw.config.get('wgAbuseFilterVariables') !== null) { var afTalkLink = $('.mw-usertoollinks-talk').first(); if (afTalkLink.length) { Twinkle.warn.makeVandalTalkLink(afTalkLink, mw.config.get('wgAbuseFilterVariables').page_prefixedtitle); afTalkLink.css('font-weight', 'bold'); } } // Override the mw.notify function to allow us to inject a link into the // rollback success popup. Only users with the 'rollback' right need this, // but we have no nice way of knowing who has that right (what with global // groups and the like) /* else if( mw.config.get('wgAction') === 'history' ) { mw.notifyOriginal = mw.notify; mw.notify = function mwNotifyTwinkleOverride(message, options) { // This is a horrible, awful hack to add a link to the rollback success // popup. All other notification popups should be left untouched. // It won't work for people whose user language is not English. // As it's a hack, it's liable to stop working or break sometimes, // particularly if the text or format of the confirmation message // (MediaWiki:Rollback-success-notify) changes. var regexMatch; if ( options && options.title && mw.msg && options.title === mw.msg('actioncomplete') && message && $.isArray(message) && message[0] instanceof HTMLParagraphElement && (regexMatch = /^(?:回退|還原|取消|撤销|撤銷)(.+)(?:编辑|編輯|做出的編輯|做出的编辑|做出的修订版本|做出的修訂版本)/.exec(message[0].innerText)) ) { // Create a nicely-styled paragraph to place the link in var $p = $('<p/>'); $p.css("margin", "0.5em -1.5em -1.5em"); $p.css("padding", "0.5em 1.5em 0.8em"); $p.css("border-top", "1px #666 solid"); $p.css("cursor", "default"); $p.click(function(e) { e.stopPropagation(); }); // Create the new talk link and append it to the end of the message var $vandalTalkLink = $('<a/>'); $vandalTalkLink.text("用Twinkle警告用户"); //$vandalTalkLink.css("display", "block"); $vandalTalkLink.attr("href", mw.util.getUrl("User talk:" + regexMatch[1])); Twinkle.warn.makeVandalTalkLink($vandalTalkLink); $p.append($vandalTalkLink); message[0].appendChild($p.get()[0]); // Don't auto-hide the notification. It only stays around for 5 seconds by // default, which might not be enough time for the user to read it and // click the link options.autoHide = false; } mw.notifyOriginal.apply(mw, arguments); }; } */ // for testing, use: // mw.notify([ $("<p>Reverted edits by foo; changed</p>")[0] ], { title: mw.msg('actioncomplete') } ); }; Twinkle.warn.makeVandalTalkLink = function($vandalTalkLink, pagename) { $vandalTalkLink.wrapInner($('<span/>').attr('title', wgULS('如果合适,您可以用Twinkle在该用户讨论页上做出警告。', '如果合適,您可以用Twinkle在該使用者討論頁上做出警告。'))); var extraParam = 'vanarticle=' + mw.util.rawurlencode(pagename); var href = $vandalTalkLink.attr('href'); if (href.indexOf('?') === -1) { $vandalTalkLink.attr('href', href + '?' + extraParam); } else { $vandalTalkLink.attr('href', href + '&' + extraParam); } }; // Used to close window when switching to ARV in autolevel Twinkle.warn.dialog = null; Twinkle.warn.callback = function twinklewarnCallback() { if (Morebits.wiki.flow.relevantUserName() === mw.config.get('wgUserName') && !confirm(wgULS('您将要警告自己!您确定要继续吗?', '您將要警告自己!您確定要繼續嗎?'))) { return; } var dialog; Twinkle.warn.dialog = new Morebits.simpleWindow(600, 440); dialog = Twinkle.warn.dialog; dialog.setTitle(wgULS('警告、提醒用户', '警告、提醒使用者')); dialog.setScriptName('Twinkle'); dialog.addFooterLink(wgULS('选择警告级别', '選擇警告級別'), 'WP:WARN'); dialog.addFooterLink(wgULS('警告设置', '警告設定'), 'WP:TW/PREF#warn'); dialog.addFooterLink(wgULS('Twinkle帮助', 'Twinkle說明'), 'WP:TW/DOC#warn'); var form = new Morebits.quickForm(Twinkle.warn.callback.evaluate); var main_select = form.append({ type: 'field', label: wgULS('选择要发送的警告或提醒类型', '選擇要傳送的警告或提醒類別'), tooltip: wgULS('首先选择一组,再选择具体的警告模板。', '首先選擇一組,再選擇具體的警告模板。') }); var main_group = main_select.append({ type: 'select', name: 'main_group', tooltip: wgULS('您可在Twinkle参数设置中设置默认选择的选项', '您可在Twinkle偏好設定中設定預設選擇的選項'), event: Twinkle.warn.callback.change_category }); var defaultGroup = parseInt(Twinkle.getPref('defaultWarningGroup'), 10); main_group.append({ type: 'option', label: wgULS('自动选择层级(1-4)', '自動選擇層級(1-4)'), value: 'autolevel', selected: defaultGroup === 11 }); main_group.append({ type: 'option', label: '1:提醒', value: 'level1', selected: defaultGroup === 1 }); main_group.append({ type: 'option', label: '2:注意', value: 'level2', selected: defaultGroup === 2 }); main_group.append({ type: 'option', label: '3:警告', value: 'level3', selected: defaultGroup === 3 }); main_group.append({ type: 'option', label: wgULS('4:最后警告', '4:最後警告'), value: 'level4', selected: defaultGroup === 4 }); main_group.append({ type: 'option', label: '4im:唯一警告', value: 'level4im', selected: defaultGroup === 5 }); if (Twinkle.getPref('combinedSingletMenus')) { main_group.append({ type: 'option', label: wgULS('单层级消息', '單層級訊息'), value: 'singlecombined', selected: defaultGroup === 6 || defaultGroup === 7 }); } else { main_group.append({ type: 'option', label: wgULS('单层级提醒', '單層級提醒'), value: 'singlenotice', selected: defaultGroup === 6 }); main_group.append({ type: 'option', label: wgULS('单层级警告', '單層級警告'), value: 'singlewarn', selected: defaultGroup === 7 }); } if (Twinkle.getPref('customWarningList').length) { main_group.append({ type: 'option', label: wgULS('自定义警告', '自訂警告'), value: 'custom', selected: defaultGroup === 9 }); } main_group.append({ type: 'option', label: '所有警告模板', value: 'kitchensink', selected: defaultGroup === 10 }); main_select.append({ type: 'select', name: 'sub_group', event: Twinkle.warn.callback.change_subcategory }); // Will be empty to begin with. form.append({ type: 'input', name: 'article', label: wgULS('页面链接', '頁面連結'), value: mw.util.getParamValue('vanarticle') || '', size: 50, tooltip: wgULS('给模板中加入一页面链接,可留空。', '給模板中加入一頁面連結,可留空。'), placeholder: wgULS('仅限一个,勿使用网址、[[ ]],可使用Special:Diff', '僅限一個,勿使用網址、[[ ]],可使用Special:Diff') }); form.append({ type: 'div', label: '', style: 'color: red', id: 'twinkle-warn-warning-messages' }); var more = form.append({ type: 'field', name: 'reasonGroup', label: wgULS('警告信息', '警告資訊') }); more.append({ type: 'textarea', label: wgULS('可选信息:', '可選資訊:'), name: 'reason', tooltip: wgULS('理由或是附加信息', '理由或是附加資訊') }); var previewlink = document.createElement('a'); $(previewlink).click(function() { Twinkle.warn.callbacks.preview(result); // |result| is defined below }); previewlink.style.cursor = 'pointer'; previewlink.textContent = wgULS('预览', '預覽'); more.append({ type: 'div', id: 'warningpreview', label: [ previewlink ] }); more.append({ type: 'div', id: 'twinklewarn-previewbox', style: 'display: none' }); more.append({ type: 'submit', label: '提交' }); var result = form.render(); dialog.setContent(result); dialog.display(); result.main_group.root = result; result.previewer = new Morebits.wiki.preview($(result).find('div#twinklewarn-previewbox').last()[0]); // Potential notices for staleness and missed reverts var message = ''; var query = {}; var vanrevid = mw.util.getParamValue('vanarticlerevid'); if (vanrevid) { // If you tried reverting, check if *you* actually reverted if (!mw.util.getParamValue('noautowarn') && mw.util.getParamValue('vanarticle')) { // Via fluff link query = { action: 'query', titles: mw.util.getParamValue('vanarticle'), prop: 'revisions', rvstartid: vanrevid, rvlimit: 2, rvdir: 'newer', rvprop: 'user' }; new Morebits.wiki.api(wgULS('检查您是否成功回退该页面', '檢查您是否成功回退該頁面'), query, function(apiobj) { var revertUser = $(apiobj.getResponse()).find('revisions rev')[1].getAttribute('user'); if (revertUser && revertUser !== mw.config.get('wgUserName')) { message += wgULS('其他人回退了该页面,并可能已经警告该用户。', '其他人回退了該頁面,並可能已經警告該使用者。'); $('#twinkle-warn-warning-messages').text('注意:' + message); } }).post(); } // Confirm edit wasn't too old for a warning var checkStale = function(vantimestamp) { var revDate = new Morebits.date(vantimestamp); if (vantimestamp && revDate.isValid()) { if (revDate.add(24, 'hours').isBefore(new Date())) { message += wgULS('这笔编辑是在24小时前做出的,现在警告可能已过时。', '這筆編輯是在24小時前做出的,現在警告可能已過時。'); $('#twinkle-warn-warning-messages').text('注意:' + message); } } }; var vantimestamp = mw.util.getParamValue('vantimestamp'); // Provided from a fluff module-based revert, no API lookup necessary if (vantimestamp) { checkStale(vantimestamp); } else { query = { action: 'query', prop: 'revisions', rvprop: 'timestamp', revids: vanrevid }; new Morebits.wiki.api(wgULS('获取版本时间戳', '取得版本時間戳'), query, function(apiobj) { vantimestamp = $(apiobj.getResponse()).find('revisions rev').attr('timestamp'); checkStale(vantimestamp); }).post(); } } if (mw.util.isIPAddress(Morebits.wiki.flow.relevantUserName())) { query = { format: 'json', action: 'query', list: 'usercontribs', uclimit: 1, ucend: new Morebits.date().subtract(30, 'days').format('YYYY-MM-DDTHH:MM:ssZ', 'utc'), ucuser: Morebits.wiki.flow.relevantUserName() }; new Morebits.wiki.api(wgULS('检查该IP用户上一笔贡献时间', '檢查該IP使用者上一筆貢獻時間'), query, function(apiobj) { if (apiobj.getResponse().query.usercontribs.length === 0) { message += wgULS('此IP用户上一次编辑在30日之前,现在警告可能已过时。', '此IP使用者上一次編輯在30日之前,現在警告可能已過時。'); $('#twinkle-warn-warning-messages').text('注意:' + message); } }).post(); } var init = function() { // We must init the first choice (General Note); var evt = document.createEvent('Event'); evt.initEvent('change', true, true); result.main_group.dispatchEvent(evt); }; Morebits.wiki.flow.check('User_talk:' + Morebits.wiki.flow.relevantUserName(), function () { Twinkle.warn.isFlow = true; init(); }, function () { Twinkle.warn.isFlow = false; init(); }); }; // This is all the messages that might be dispatched by the code // Each of the individual templates require the following information: // label (required): A short description displayed in the dialog // summary (required): The edit summary used. If an article name is entered, the summary is postfixed with "on [[article]]", and it is always postfixed with ". $summaryAd" // suppressArticleInSummary (optional): Set to true to suppress showing the article name in the edit summary. Useful if the warning relates to attack pages, or some such. // 警告:警告消息有简体和繁体两个版本,请注意同时维护! Twinkle.warn.messages = wgULS({ levels: { '不同类型的非建设编辑': { 'uw-vandalism': { level1: { label: '明显的破坏', summary: '提醒:明显破坏' }, level2: { label: '明显的破坏', summary: '注意:明显破坏' }, level3: { label: '恶意破坏', summary: '警告:恶意破坏' }, level4: { label: '恶意破坏', summary: '最后警告:恶意破坏' }, level4im: { label: '恶意破坏', summary: '唯一警告:恶意破坏' } }, 'uw-test': { level1: { label: '进行编辑测试而未及时清理', summary: '提醒:进行编辑测试而未及时清理' }, level2: { label: '进行损毁性的编辑测试', summary: '注意:进行编辑测试' }, level3: { label: '编辑测试', summary: '警告:编辑测试' }, level4: { label: '编辑测试', summary: '最后警告:编辑测试' } }, 'uw-delete': { level1: { label: '不恰当地移除页面内容、模板或资料', summary: '提醒:不恰当地移除页面内容、模板或资料' }, level2: { label: '不恰当地移除页面内容、模板或资料', summary: '注意:不恰当地移除页面内容、模板或资料' }, level3: { label: '不恰当地移除页面内容、模板或资料', summary: '警告:不恰当地移除页面内容、模板或资料' }, level4: { label: '移除页面、移除内容或模板', summary: '最后警告:移除页面、移除内容或模板' }, level4im: { label: '移除页面内容、模板或资料', summary: '唯一警告:移除页面内容、模板或资料' } }, 'uw-redirect': { level1: { label: '创建破坏性的重定向', summary: '提醒:创建破坏性的重定向' }, level2: { label: '创建恶意重定向', summary: '注意:创建恶意重定向' }, level3: { label: '创建恶意重定向', summary: '警告:创建恶意重定向' }, level4: { label: '创建恶意重定向', summary: '最后警告:创建恶意重定向' }, level4im: { label: '创建恶意重定向', summary: '唯一警告:创建恶意重定向' } }, 'uw-tdel': { level1: { label: '在问题仍未解决的情况下移除维护性模板', summary: '提醒:移除维护性模板' }, level2: { label: '在问题仍未解决的情况下移除维护性模板', summary: '注意:移除维护性模板' }, level3: { label: '移除维护性模板', summary: '警告:移除维护性模板' }, level4: { label: '移除维护性模板', summary: '最后警告:移除维护性模板' } }, 'uw-joke': { level1: { label: '在百科全书内容中加入玩笑', summary: '提醒:加入不当玩笑' }, level2: { label: '在百科全书内容中加入玩笑', summary: '注意:加入不当玩笑' }, level3: { label: '在百科全书内容中加入不当玩笑', summary: '警告:在百科全书内容中加入不当玩笑' }, level4: { label: '在百科全书内容中加入不当玩笑', summary: '最后警告:在百科全书内容中加入不当玩笑' }, level4im: { label: '加入不当玩笑', summary: '唯一警告:加入不当玩笑' } }, 'uw-create': { level1: { label: '创建不当页面', summary: '提醒:创建不当页面' }, level2: { label: '创建不当页面', summary: '注意:创建不当页面' }, level3: { label: '创建不当页面', summary: '警告:创建不当页面' }, level4: { label: '创建不当页面', summary: '最后警告:创建不当页面' }, level4im: { label: '创建不当页面', summary: '唯一警告:创建不当页面' } }, 'uw-upload': { level1: { label: '上传不当图像', summary: '提醒:上传不当图像' }, level2: { label: '上传不当图像', summary: '注意:上传不当图像' }, level3: { label: '上传不当图像', summary: '警告:上传不当图像' }, level4: { label: '上传不当图像', summary: '最后警告:上传不当图像' }, level4im: { label: '上传不当图像', summary: '唯一警告:上传不当图像' } }, 'uw-image': { level1: { label: '在页面中加入不当图片', summary: '提醒:在页面中加入不当图片' }, level2: { label: '在页面中加入不当图片', summary: '注意:在页面中加入不当图片' }, level3: { label: '在页面中加入不当图片', summary: '警告:在页面中加入不当图片' }, level4: { label: '在页面中加入不当图片', summary: '最后警告:在页面中加入不当图片' }, level4im: { label: '加入不恰当的图片', summary: '唯一警告:加入不恰当的图片' } }, 'uw-nor': { level1: { label: '在条目中加入原创研究', summary: '提醒:在条目中加入原创研究' }, level2: { label: '在条目中加入原创研究', summary: '注意:在条目中加入原创研究' }, level3: { label: '在条目中加入原创研究', summary: '警告:在条目中加入原创研究' } }, 'uw-politicalbias': { level1: { label: '违反两岸四地用语、朝鲜半岛用语等相关规定', summary: '提醒:违反两岸四地用语、朝鲜半岛用语等相关规定' }, level2: { label: '违反两岸四地用语、朝鲜半岛用语等相关规定', summary: '注意:违反两岸四地用语、朝鲜半岛用语等相关规定' }, level3: { label: '违反两岸四地用语、朝鲜半岛用语等相关规定', summary: '警告:违反两岸四地用语、朝鲜半岛用语等相关规定' }, level4: { label: '违反两岸四地用语、朝鲜半岛用语等相关规定', summary: '最后警告:违反两岸四地用语、朝鲜半岛用语等相关规定' }, level4im: { label: '违反两岸四地用语、朝鲜半岛用语等相关规定', summary: '唯一警告:违反两岸四地用语、朝鲜半岛用语等相关规定' } } }, '增加商品或政治广告': { 'uw-spam': { level1: { label: '增加不合适的外部链接', summary: '提醒:增加不合适的外部链接' }, level2: { label: '增加垃圾链接', summary: '注意:增加垃圾链接' }, level3: { label: '增加垃圾链接', summary: '警告:增加垃圾链接' }, level4: { label: '增加垃圾链接', summary: '最后警告:增加垃圾链接' }, level4im: { label: '增加垃圾连结', summary: '唯一警告:增加垃圾连结' } }, 'uw-advert': { level1: { label: '利用维基百科来发布广告或推广', summary: '提醒:利用维基百科来发布广告或推广' }, level2: { label: '利用维基百科来发布广告或推广', summary: '注意:利用维基百科来发布广告或推广' }, level3: { label: '利用维基百科来发布广告或推广', summary: '警告:利用维基百科来发布广告或推广' }, level4: { label: '利用维基百科来发布广告或推广', summary: '最后警告:利用维基百科来发布广告或推广' } }, 'uw-npov': { level1: { label: '不遵守中立的观点方针', summary: '提醒:不遵守中立的观点方针' }, level2: { label: '不遵守中立的观点方针', summary: '注意:不遵守中立的观点方针' }, level3: { label: '违反中立的观点方针', summary: '警告:违反中立的观点方针' }, level4: { label: '违反中立的观点方针', summary: '最后警告:违反中立的观点方针' } } }, '加插不实及/或诽谤文字': { 'uw-unsourced': { level1: { label: '加入没有可靠来源佐证的内容', summary: '提醒:加入没有可靠来源佐证的内容' }, level2: { label: '加入没有可靠来源佐证的内容', summary: '注意:加入没有可靠来源佐证的内容' }, level3: { label: '加入没有可靠来源佐证的内容', summary: '警告:加入没有可靠来源佐证的内容' } }, 'uw-error': { level1: { label: '故意加入不实内容', summary: '提醒:故意加入不实内容' }, level2: { label: '故意加入不实内容', summary: '注意:故意加入不实内容' }, level3: { label: '故意加入不实内容', summary: '警告:故意加入不实内容' } }, 'uw-biog': { level1: { label: '在生者传记中加入没有可靠来源佐证而且可能引发争议的内容', summary: '提醒:在生者传记中加入没有可靠来源佐证而且可能引发争议的内容' }, level2: { label: '在生者传记中加入没有可靠来源佐证而且可能引发争议的内容', summary: '注意:在生者传记中加入没有可靠来源佐证而且可能引发争议的内容' }, level3: { label: '在生者传记中加入没有可靠来源佐证而且带有争议的内容', summary: '警告:在生者传记中加入没有可靠来源佐证而且可能引发争议的内容' }, level4: { label: '加入有关在生人物而又缺乏来源的资料', summary: '最后警告:加入有关在生人物而又缺乏来源的资料' }, level4im: { label: '加入有关在生人物而又缺乏来源的资料', summary: '唯一警告:加入有关在生人物而又缺乏来源的资料' } }, 'uw-defamatory': { level1: { label: '加入诽谤内容', summary: '提醒:加入诽谤内容' }, level2: { label: '加入诽谤内容', summary: '注意:加入诽谤内容' }, level3: { label: '加入诽谤内容', summary: '警告:加入诽谤内容' }, level4: { label: '加入诽谤内容', summary: '最后警告:加入诽谤内容' }, level4im: { label: '加入诽谤内容', summary: '唯一警告:加入诽谤内容' } } }, '翻译品质': { 'uw-roughtranslation': { level1: { label: '您翻译的质量有待改善', summary: '提醒:您翻译的质量有待改善' }, level2: { label: '粗劣翻译', summary: '注意:粗劣翻译' }, level3: { label: '粗劣翻译', summary: '警告:粗劣翻译' } } }, '非能接受且违反方针或指引的单方面行为或操作': { 'uw-notcensored': { level1: { label: '因为“内容使人反感”而删除条目内容', summary: '提醒:审查条目内容' }, level2: { label: '内容审查', summary: '注意:内容审查' }, level3: { label: '审查内容', summary: '警告:审查内容' } }, 'uw-mos': { level1: { label: '不恰当的条目格式、日期、语言等', summary: '提醒:不恰当的条目格式、日期、语言等' }, level2: { label: '不恰当的条目格式、日期、语言等', summary: '注意:不恰当的条目格式、日期、语言等' }, level3: { label: '违反格式、日期、语言等规定', summary: '警告:违反格式、日期、语言等规定' }, level4: { label: '违反格式、日期、语言等相关规定', summary: '最后警告:违反格式、日期、语言等相关规定' } }, 'uw-move': { level1: { label: '无故移动条目/新名称不符合命名规范', summary: '提醒:不恰当地移动页面' }, level2: { label: '把页面移动到不恰当、违反命名常规或违反共识的标题', summary: '注意:不恰当地移动页面' }, level3: { label: '不恰当地移动页面', summary: '警告:不恰当地移动页面' }, level4: { label: '不恰当地移动页面', summary: '最后警告:不恰当地移动页面' }, level4im: { label: '不恰当地移动页面', summary: '唯一警告:不恰当地移动页面' } }, 'uw-cd': { level1: { label: '清空讨论页', summary: '提醒:清空讨论页' }, level2: { label: '清空讨论页', summary: '注意:清空讨论页' }, level3: { label: '清空讨论页', summary: '警告:清空讨论页' } }, 'uw-chat': { level1: { label: '在讨论页发表与改善条目无关的内容', summary: '提醒:在讨论页发表与改善条目无关的内容' }, level2: { label: '在讨论页发表与改善条目无关的内容', summary: '注意:在讨论页发表与改善条目无关的内容' }, level3: { label: '在讨论页发表无关内容', summary: '警告:在讨论页发表无关内容' }, level4: { label: '在讨论页进行不当讨论', summary: '最后警告:在讨论页进行不当讨论' } }, 'uw-tpv': { level1: { label: '修改他人留言', summary: '提醒:修改他人留言' }, level2: { label: '修改他人留言', summary: '注意:修改他人留言' }, level3: { label: '修改他人留言', summary: '警告:修改他人留言' } }, 'uw-afd': { level1: { label: '移除{{afd}}(页面存废讨论)模板', summary: '提醒:移除{{afd}}(页面存废讨论)模板' }, level2: { label: '移除{{afd}}(页面存废讨论)模板', summary: '注意:移除{{afd}}(页面存废讨论)模板' }, level3: { label: '移除{{afd}}(页面存废讨论)模板', summary: '警告:移除{{afd}}(页面存废讨论)模板' }, level4: { label: '移除{{afd}}模板', summary: '最后警告:移除{{afd}}模板' } }, 'uw-speedy': { level1: { label: '移除{{delete}}(快速删除)模板', summary: '提醒:移除{{delete}}(快速删除)模板' }, level2: { label: '移除{{delete}}(快速删除)模板', summary: '注意:移除{{delete}}(快速删除)模板' }, level3: { label: '移除{{delete}}(快速删除)模板', summary: '警告:移除{{delete}}(快速删除)模板' }, level4: { label: '移除{{delete}}模板', summary: '最后警告:移除{{delete}}模板' } } }, '对其他用户和条目的态度': { 'uw-npa': { level1: { label: '针对用户的人身攻击', summary: '提醒:针对用户的人身攻击' }, level2: { label: '针对用户的人身攻击', summary: '注意:针对用户的人身攻击' }, level3: { label: '针对用户的人身攻击', summary: '警告:针对用户的人身攻击' }, level4: { label: '针对用户的人身攻击', summary: '最后警告:针对用户的人身攻击' }, level4im: { label: '针对用户的人身攻击', summary: '唯一警告:针对用户的人身攻击' } }, 'uw-agf': { level1: { label: '没有假定善意', summary: '提醒:没有假定善意' }, level2: { label: '没有假定善意', summary: '注意:没有假定善意' }, level3: { label: '没有假定善意', summary: '警告:没有假定善意' } }, 'uw-own': { level1: { label: '主张条目所有权', summary: '提醒:主张条目所有权' }, level2: { label: '主张条目的所有权', summary: '注意:主张条目的所有权' }, level3: { label: '主张条目的所有权', summary: '警告:主张条目的所有权' } }, 'uw-tempabuse': { level1: { label: '不当使用警告或封禁模板', summary: '提醒:不当使用警告或封禁模板' }, level2: { label: '不当使用警告或封禁模板', summary: '注意:不当使用警告或封禁模板' }, level3: { label: '不当使用警告或封禁模板', summary: '警告:不当使用警告或封禁模板' }, level4: { label: '不当使用警告或封禁模板', summary: '最后警告:不当使用警告或封禁模板' }, level4im: { label: '不当使用警告或封禁模板', summary: '唯一警告:不当使用警告或封禁模板' } } } }, singlenotice: { 'uw-2redirect': { label: '在移动页面后应该修复双重重定向', summary: '提醒:在移动页面后应该修复双重重定向' }, 'uw-aiv': { label: '举报的并不是破坏者,或者举报破坏前未进行警告', summary: '提醒:不恰当地举报破坏' }, 'uw-articlesig': { label: '在条目中签名', summary: '提醒:在条目中签名' }, 'uw-autobiography': { label: '建立自传', summary: '提醒:建立自传' }, 'uw-badcat': { label: '加入错误的页面分类', summary: '提醒:加入错误的页面分类' }, 'uw-bite': { label: '伤害新手', summary: '提醒:伤害新手' }, 'uw-booktitle': { label: '没有使用书名号来标示书籍、电影、音乐专辑等', summary: '提醒:没有使用书名号来标示书籍、电影、音乐专辑等' }, 'uw-c&pmove': { label: '剪贴移动', summary: '提醒:剪贴移动' }, 'uw-chinese': { label: '请使用标准汉语沟通', summary: '提醒:请使用标准汉语沟通' }, 'uw-coi': { label: '利益冲突', summary: '提醒:利益冲突' }, 'uw-concovid19': { label: '违反COVID-19条目共识', summary: '提醒:违反COVID-19条目共识' }, 'uw-copyright-friendly': { label: '初次加入侵犯版权的内容', summary: '提醒:初次加入侵犯版权的内容' }, 'uw-copyviorewrite': { label: '在侵权页面直接重写条目', summary: '提醒:在侵权页面直接重写条目' }, 'uw-crystal': { label: '加入臆测或未确认的讯息', summary: '提醒:加入臆测或未确认的讯息' }, 'uw-csd': { label: '快速删除理由不当', summary: '提醒:快速删除理由不当' }, 'uw-dab': { label: '消歧义页格式错误', summary: '提醒:消歧义页格式错误' }, 'uw-editsummary': { label: '没有使用编辑摘要', summary: '提醒:没有使用编辑摘要' }, 'uw-hangon': { label: '没有在讨论页说明暂缓快速删除理由', summary: '提醒:没有在讨论页说明暂缓快速删除理由' }, 'uw-lang': { label: '不必要地将文字换成简体或繁体中文', summary: '提醒:不必要地将文字换成简体或繁体中文' }, 'uw-langmove': { label: '不必要地将标题换成简体或繁体中文', summary: '提醒:不必要地将标题换成简体或繁体中文' }, 'uw-linking': { label: '过度加入红字连结或重复蓝字连结', summary: '提醒:过度加入红字连结或重复蓝字连结' }, 'uw-minor': { label: '不适当地使用小修改选项', summary: '提醒:不适当地使用小修改选项' }, 'uw-notaiv': { label: '向“当前的破坏”中报告的是用户纷争而不是破坏', summary: '提醒:向“当前的破坏”中报告的是用户纷争而不是破坏' }, 'uw-notvote': { label: '我们以共识处事,而不仅仅是投票', summary: '提醒:我们以共识处事,而不仅仅是投票' }, 'uw-preview': { label: '请使用预览按钮来避免不必要的错误', summary: '提醒:请使用预览按钮来避免不必要的错误' }, 'uw-sandbox': { label: '移除沙盒的置顶模板{{sandbox}}', summary: '提醒:移除沙盒的置顶模板{{sandbox}}' }, 'uw-selfrevert': { label: '感谢您自行回退自己的测试,以后不要再这样做了', summary: '提醒:回退个人的测试' }, 'uw-subst': { label: '谨记要替代模板(subst)', summary: '提醒:谨记要替代模板' }, 'uw-talkinarticle': { label: '在条目页中留下意见', summary: '提醒:在条目页中留下意见' }, 'uw-tilde': { label: '没有在讨论页上签名', summary: '提醒:没有在讨论页上签名' }, 'uw-translated': { label: '翻译条目未标注原作者', summary: '提醒:翻译条目未标注原作者' }, 'uw-uaa': { label: '向需要管理员注意的用户名报告的用户名称并不违反方针', summary: '提醒:向需要管理员注意的用户名报告的用户名称并不违反方针' }, 'uw-warn': { label: '警告破坏用户', summary: '提醒:警告破坏用户' }, 'uw-mosiw': { label: '不要使用跨语言链接', summary: '提醒:不要使用跨语言链接' }, 'uw-badtwinkle': { label: '不恰当地使用Twinkle警告别人', summary: '提醒:不恰当地使用Twinkle警告别人' } }, singlewarn: { 'uw-3rr': { label: '用户潜在违反回退不过三原则的可能性', summary: '警告:用户潜在违反回退不过三原则的可能性' }, 'uw-attack': { label: '建立人身攻击页面', summary: '警告:建立人身攻击页面', suppressArticleInSummary: true }, 'uw-bv': { label: '公然地破坏', summary: '警告:公然地破坏' }, 'uw-canvass': { label: '不恰当地拉票', summary: '警告:不恰当地拉票' }, 'uw-copyright': { label: '侵犯版权', summary: '警告:侵犯版权' }, 'uw-copyright-link': { label: '连结到有版权的材料', summary: '警告:连结到有版权的材料' }, 'uw-fakesource': { label: '虚构资料来源或引文', summary: '警告:虚构资料来源或引文' }, 'uw-hoax': { label: '建立恶作剧', summary: '警告:建立恶作剧' }, 'uw-incompletecite': { label: '列出的资料来源欠缺若干详情而不易查找', summary: '警告:列出的资料来源欠缺若干详情而不易查找' }, 'uw-legal': { label: '诉诸法律威胁', summary: '警告:诉诸法律威胁' }, 'uw-longterm': { label: '长期的破坏', summary: '警告:长期的破坏' }, 'uw-multipleIPs': { label: '使用多个IP地址进行破坏', summary: '警告:使用多个IP地址进行破坏' }, 'uw-npov-tvd': { label: '在剧集条目中加入奸角等非中立描述', summary: '警告:在剧集条目中加入奸角等非中立描述' }, 'uw-owntalk': { label: '匿名用户移除自己讨论页上7日内的讨论', summary: '警告:匿名用户移除自己讨论页上7日内的讨论' }, 'uw-pinfo': { label: '张贴他人隐私', summary: '警告:张贴他人隐私' }, 'uw-upv': { label: '破坏他人用户页', summary: '警告:破坏他人用户页' }, 'uw-selfinventedname': { label: '不适当地自创新名词、新译名', summary: '警告:不适当地自创新名词、新译名' }, 'uw-substub': { label: '创建小小作品', summary: '警告:创建小小作品' }, 'uw-username': { label: '使用不恰当的用户名', summary: '警告:使用不恰当的用户名', suppressArticleInSummary: true }, 'uw-wrongsummary': { label: '在编辑摘要制造不适当的内容', summary: '警告:在编辑摘要制造不适当的内容' } } }, { levels: { '不同類別的非建設編輯': { 'uw-vandalism': { level1: { label: '明顯的破壞', summary: '提醒:明顯破壞' }, level2: { label: '明顯的破壞', summary: '注意:明顯破壞' }, level3: { label: '惡意破壞', summary: '警告:惡意破壞' }, level4: { label: '惡意破壞', summary: '最後警告:惡意破壞' }, level4im: { label: '惡意破壞', summary: '唯一警告:惡意破壞' } }, 'uw-test': { level1: { label: '進行編輯測試而未及時清理', summary: '提醒:進行編輯測試而未及時清理' }, level2: { label: '進行損毀性的編輯測試', summary: '注意:進行編輯測試' }, level3: { label: '編輯測試', summary: '警告:編輯測試' }, level4: { label: '編輯測試', summary: '最後警告:編輯測試' } }, 'uw-delete': { level1: { label: '不恰當地移除頁面內容、模板或資料', summary: '提醒:不恰當地移除頁面內容、模板或資料' }, level2: { label: '不恰當地移除頁面內容、模板或資料', summary: '注意:不恰當地移除頁面內容、模板或資料' }, level3: { label: '不恰當地移除頁面內容、模板或資料', summary: '警告:不恰當地移除頁面內容、模板或資料' }, level4: { label: '移除頁面、移除內容或模板', summary: '最後警告:移除頁面、移除內容或模板' }, level4im: { label: '移除頁面內容、模板或資料', summary: '唯一警告:移除頁面內容、模板或資料' } }, 'uw-redirect': { level1: { label: '建立破壞性的重定向', summary: '提醒:建立破壞性的重定向' }, level2: { label: '建立惡意重定向', summary: '注意:建立惡意重定向' }, level3: { label: '建立惡意重定向', summary: '警告:建立惡意重定向' }, level4: { label: '建立惡意重定向', summary: '最後警告:建立惡意重定向' }, level4im: { label: '建立惡意重定向', summary: '唯一警告:建立惡意重定向' } }, 'uw-tdel': { level1: { label: '在問題仍未解決的情況下移除維護性模板', summary: '提醒:移除維護性模板' }, level2: { label: '在問題仍未解決的情況下移除維護性模板', summary: '注意:移除維護性模板' }, level3: { label: '移除維護性模板', summary: '警告:移除維護性模板' }, level4: { label: '移除維護性模板', summary: '最後警告:移除維護性模板' } }, 'uw-joke': { level1: { label: '在百科全書內容中加入玩笑', summary: '提醒:加入不當玩笑' }, level2: { label: '在百科全書內容中加入玩笑', summary: '注意:加入不當玩笑' }, level3: { label: '在百科全書內容中加入不當玩笑', summary: '警告:在百科全書內容中加入不當玩笑' }, level4: { label: '在百科全書內容中加入不當玩笑', summary: '最後警告:在百科全書內容中加入不當玩笑' }, level4im: { label: '加入不當玩笑', summary: '唯一警告:加入不當玩笑' } }, 'uw-create': { level1: { label: '建立不當頁面', summary: '提醒:建立不當頁面' }, level2: { label: '建立不當頁面', summary: '注意:建立不當頁面' }, level3: { label: '建立不當頁面', summary: '警告:建立不當頁面' }, level4: { label: '建立不當頁面', summary: '最後警告:建立不當頁面' }, level4im: { label: '建立不當頁面', summary: '唯一警告:建立不當頁面' } }, 'uw-upload': { level1: { label: '上傳不當圖像', summary: '提醒:上傳不當圖像' }, level2: { label: '上傳不當圖像', summary: '注意:上傳不當圖像' }, level3: { label: '上傳不當圖像', summary: '警告:上傳不當圖像' }, level4: { label: '上傳不當圖像', summary: '最後警告:上傳不當圖像' }, level4im: { label: '上傳不當圖像', summary: '唯一警告:上傳不當圖像' } }, 'uw-image': { level1: { label: '在頁面中加入不當圖片', summary: '提醒:在頁面中加入不當圖片' }, level2: { label: '在頁面中加入不當圖片', summary: '注意:在頁面中加入不當圖片' }, level3: { label: '在頁面中加入不當圖片', summary: '警告:在頁面中加入不當圖片' }, level4: { label: '在頁面中加入不當圖片', summary: '最後警告:在頁面中加入不當圖片' }, level4im: { label: '加入不恰當的圖片', summary: '唯一警告:加入不恰當的圖片' } }, 'uw-nor': { level1: { label: '在條目中加入原創研究', summary: '提醒:在條目中加入原創研究' }, level2: { label: '在條目中加入原創研究', summary: '注意:在條目中加入原創研究' }, level3: { label: '在條目中加入原創研究', summary: '警告:在條目中加入原創研究' } }, 'uw-politicalbias': { level1: { label: '違反兩岸四地用語、朝鮮半島用語等相關規定', summary: '提醒:違反兩岸四地用語、朝鮮半島用語等相關規定' }, level2: { label: '違反兩岸四地用語、朝鮮半島用語等相關規定', summary: '注意:違反兩岸四地用語、朝鮮半島用語等相關規定' }, level3: { label: '違反兩岸四地用語、朝鮮半島用語等相關規定', summary: '警告:違反兩岸四地用語、朝鮮半島用語等相關規定' }, level4: { label: '違反兩岸四地用語、朝鮮半島用語等相關規定', summary: '最後警告:違反兩岸四地用語、朝鮮半島用語等相關規定' }, level4im: { label: '違反兩岸四地用語、朝鮮半島用語等相關規定', summary: '唯一警告:違反兩岸四地用語、朝鮮半島用語等相關規定' } } }, '增加商品或政治廣告': { 'uw-spam': { level1: { label: '增加不合適的外部連結', summary: '提醒:增加不合適的外部連結' }, level2: { label: '增加垃圾連結', summary: '注意:增加垃圾連結' }, level3: { label: '增加垃圾連結', summary: '警告:增加垃圾連結' }, level4: { label: '增加垃圾連結', summary: '最後警告:增加垃圾連結' }, level4im: { label: '增加垃圾連結', summary: '唯一警告:增加垃圾連結' } }, 'uw-advert': { level1: { label: '利用維基百科來發布廣告或推廣', summary: '提醒:利用維基百科來發布廣告或推廣' }, level2: { label: '利用維基百科來發布廣告或推廣', summary: '注意:利用維基百科來發布廣告或推廣' }, level3: { label: '利用維基百科來發布廣告或推廣', summary: '警告:利用維基百科來發布廣告或推廣' }, level4: { label: '利用維基百科來發布廣告或推廣', summary: '最後警告:利用維基百科來發布廣告或推廣' } }, 'uw-npov': { level1: { label: '不遵守中立的觀點方針', summary: '提醒:不遵守中立的觀點方針' }, level2: { label: '不遵守中立的觀點方針', summary: '注意:不遵守中立的觀點方針' }, level3: { label: '違反中立的觀點方針', summary: '警告:違反中立的觀點方針' }, level4: { label: '違反中立的觀點方針', summary: '最後警告:違反中立的觀點方針' } } }, '加插不實及/或誹謗文字': { 'uw-unsourced': { level1: { label: '加入沒有可靠來源佐證的內容', summary: '提醒:加入沒有可靠來源佐證的內容' }, level2: { label: '加入沒有可靠來源佐證的內容', summary: '注意:加入沒有可靠來源佐證的內容' }, level3: { label: '加入沒有可靠來源佐證的內容', summary: '警告:加入沒有可靠來源佐證的內容' } }, 'uw-error': { level1: { label: '故意加入不實內容', summary: '提醒:故意加入不實內容' }, level2: { label: '故意加入不實內容', summary: '注意:故意加入不實內容' }, level3: { label: '故意加入不實內容', summary: '警告:故意加入不實內容' } }, 'uw-biog': { level1: { label: '在生者傳記中加入沒有可靠來源佐證而且可能引發爭議的內容', summary: '提醒:在生者傳記中加入沒有可靠來源佐證而且可能引發爭議的內容' }, level2: { label: '在生者傳記中加入沒有可靠來源佐證而且可能引發爭議的內容', summary: '注意:在生者傳記中加入沒有可靠來源佐證而且可能引發爭議的內容' }, level3: { label: '在生者傳記中加入沒有可靠來源佐證而且帶有爭議的內容', summary: '警告:在生者傳記中加入沒有可靠來源佐證而且可能引發爭議的內容' }, level4: { label: '加入有關在生人物而又缺乏來源的資料', summary: '最後警告:加入有關在生人物而又缺乏來源的資料' }, level4im: { label: '加入有關在生人物而又缺乏來源的資料', summary: '唯一警告:加入有關在生人物而又缺乏來源的資料' } }, 'uw-defamatory': { level1: { label: '加入誹謗內容', summary: '提醒:加入誹謗內容' }, level2: { label: '加入誹謗內容', summary: '注意:加入誹謗內容' }, level3: { label: '加入誹謗內容', summary: '警告:加入誹謗內容' }, level4: { label: '加入誹謗內容', summary: '最後警告:加入誹謗內容' }, level4im: { label: '加入誹謗內容', summary: '唯一警告:加入誹謗內容' } } }, '翻譯品質': { 'uw-roughtranslation': { level1: { label: '您翻譯的質量有待改善', summary: '提醒:您翻譯的質量有待改善' }, level2: { label: '粗劣翻譯', summary: '注意:粗劣翻譯' }, level3: { label: '粗劣翻譯', summary: '警告:粗劣翻譯' } } }, '非能接受且違反方針或指引的單方面行為或操作': { 'uw-notcensored': { level1: { label: '因為「內容使人反感」而刪除條目內容', summary: '提醒:審查條目內容' }, level2: { label: '內容審查', summary: '注意:內容審查' }, level3: { label: '審查內容', summary: '警告:審查內容' } }, 'uw-mos': { level1: { label: '不恰當的條目格式、日期、語言等', summary: '提醒:不恰當的條目格式、日期、語言等' }, level2: { label: '不恰當的條目格式、日期、語言等', summary: '注意:不恰當的條目格式、日期、語言等' }, level3: { label: '違反格式、日期、語言等規定', summary: '警告:違反格式、日期、語言等規定' }, level4: { label: '違反格式、日期、語言等相關規定', summary: '最後警告:違反格式、日期、語言等相關規定' } }, 'uw-move': { level1: { label: '無故移動條目/新名稱不符合命名規範', summary: '提醒:不恰當地移動頁面' }, level2: { label: '把頁面移動到不恰當、違反命名常規或違反共識的標題', summary: '注意:不恰當地移動頁面' }, level3: { label: '不恰當地移動頁面', summary: '警告:不恰當地移動頁面' }, level4: { label: '不恰當地移動頁面', summary: '最後警告:不恰當地移動頁面' }, level4im: { label: '不恰當地移動頁面', summary: '唯一警告:不恰當地移動頁面' } }, 'uw-cd': { level1: { label: '清空討論頁', summary: '提醒:清空討論頁' }, level2: { label: '清空討論頁', summary: '注意:清空討論頁' }, level3: { label: '清空討論頁', summary: '警告:清空討論頁' } }, 'uw-chat': { level1: { label: '在討論頁發表與改善條目無關的內容', summary: '提醒:在討論頁發表與改善條目無關的內容' }, level2: { label: '在討論頁發表與改善條目無關的內容', summary: '注意:在討論頁發表與改善條目無關的內容' }, level3: { label: '在討論頁發表無關內容', summary: '警告:在討論頁發表無關內容' }, level4: { label: '在討論頁進行不當討論', summary: '最後警告:在討論頁進行不當討論' } }, 'uw-tpv': { level1: { label: '修改他人留言', summary: '提醒:修改他人留言' }, level2: { label: '修改他人留言', summary: '注意:修改他人留言' }, level3: { label: '修改他人留言', summary: '警告:修改他人留言' } }, 'uw-afd': { level1: { label: '移除{{afd}}(頁面存廢討論)模板', summary: '提醒:移除{{afd}}(頁面存廢討論)模板' }, level2: { label: '移除{{afd}}(頁面存廢討論)模板', summary: '注意:移除{{afd}}(頁面存廢討論)模板' }, level3: { label: '移除{{afd}}(頁面存廢討論)模板', summary: '警告:移除{{afd}}(頁面存廢討論)模板' }, level4: { label: '移除{{afd}}模板', summary: '最後警告:移除{{afd}}模板' } }, 'uw-speedy': { level1: { label: '移除{{delete}}(快速刪除)模板', summary: '提醒:移除{{delete}}(快速刪除)模板' }, level2: { label: '移除{{delete}}(快速刪除)模板', summary: '注意:移除{{delete}}(快速刪除)模板' }, level3: { label: '移除{{delete}}(快速刪除)模板', summary: '警告:移除{{delete}}(快速刪除)模板' }, level4: { label: '移除{{delete}}模板', summary: '最後警告:移除{{delete}}模板' } } }, '對其他用戶和條目的態度': { 'uw-npa': { level1: { label: '針對用戶的人身攻擊', summary: '提醒:針對用戶的人身攻擊' }, level2: { label: '針對用戶的人身攻擊', summary: '注意:針對用戶的人身攻擊' }, level3: { label: '針對用戶的人身攻擊', summary: '警告:針對用戶的人身攻擊' }, level4: { label: '針對用戶的人身攻擊', summary: '最後警告:針對用戶的人身攻擊' }, level4im: { label: '針對用戶的人身攻擊', summary: '唯一警告:針對用戶的人身攻擊' } }, 'uw-agf': { level1: { label: '沒有假定善意', summary: '提醒:沒有假定善意' }, level2: { label: '沒有假定善意', summary: '注意:沒有假定善意' }, level3: { label: '沒有假定善意', summary: '警告:沒有假定善意' } }, 'uw-own': { level1: { label: '主張條目所有權', summary: '提醒:主張條目所有權' }, level2: { label: '主張條目的所有權', summary: '注意:主張條目的所有權' }, level3: { label: '主張條目的所有權', summary: '警告:主張條目的所有權' } }, 'uw-tempabuse': { level1: { label: '不當使用警告或封禁模板', summary: '提醒:不當使用警告或封禁模板' }, level2: { label: '不當使用警告或封禁模板', summary: '注意:不當使用警告或封禁模板' }, level3: { label: '不當使用警告或封禁模板', summary: '警告:不當使用警告或封禁模板' }, level4: { label: '不當使用警告或封禁模板', summary: '最後警告:不當使用警告或封禁模板' }, level4im: { label: '不當使用警告或封禁模板', summary: '唯一警告:不當使用警告或封禁模板' } } } }, singlenotice: { 'uw-2redirect': { label: '在移動頁面後應該修復雙重重定向', summary: '提醒:在移動頁面後應該修復雙重重定向' }, 'uw-aiv': { label: '舉報的並不是破壞者,或者舉報破壞前未進行警告', summary: '提醒:不恰當地舉報破壞' }, 'uw-articlesig': { label: '在條目中簽名', summary: '提醒:在條目中簽名' }, 'uw-autobiography': { label: '建立自傳', summary: '提醒:建立自傳' }, 'uw-badcat': { label: '加入錯誤的頁面分類', summary: '提醒:加入錯誤的頁面分類' }, 'uw-bite': { label: '傷害新手', summary: '提醒:傷害新手' }, 'uw-booktitle': { label: '沒有使用書名號來標示書籍、電影、音樂專輯等', summary: '提醒:沒有使用書名號來標示書籍、電影、音樂專輯等' }, 'uw-c&pmove': { label: '剪貼移動', summary: '提醒:剪貼移動' }, 'uw-chinese': { label: '請使用標準漢語溝通', summary: '提醒:請使用標準漢語溝通' }, 'uw-coi': { label: '利益衝突', summary: '提醒:利益衝突' }, 'uw-concovid19': { label: '違反COVID-19條目共識', summary: '提醒:違反COVID-19條目共識' }, 'uw-copyright-friendly': { label: '初次加入侵犯版權的內容', summary: '提醒:初次加入侵犯版權的內容' }, 'uw-copyviorewrite': { label: '在侵權頁面直接重寫條目', summary: '提醒:在侵權頁面直接重寫條目' }, 'uw-crystal': { label: '加入臆測或未確認的訊息', summary: '提醒:加入臆測或未確認的訊息' }, 'uw-csd': { label: '快速刪除理由不當', summary: '提醒:快速刪除理由不當' }, 'uw-dab': { label: '消歧義頁格式錯誤', summary: '提醒:消歧義頁格式錯誤' }, 'uw-editsummary': { label: '沒有使用編輯摘要', summary: '提醒:沒有使用編輯摘要' }, 'uw-hangon': { label: '沒有在討論頁說明暫緩快速刪除理由', summary: '提醒:沒有在討論頁說明暫緩快速刪除理由' }, 'uw-lang': { label: '不必要地將文字換成簡體或繁體中文', summary: '提醒:不必要地將文字換成簡體或繁體中文' }, 'uw-langmove': { label: '不必要地將標題換成簡體或繁體中文', summary: '提醒:不必要地將標題換成簡體或繁體中文' }, 'uw-linking': { label: '過度加入紅字連結或重複藍字連結', summary: '提醒:過度加入紅字連結或重複藍字連結' }, 'uw-minor': { label: '不適當地使用小修改選項', summary: '提醒:不適當地使用小修改選項' }, 'uw-notaiv': { label: '向「當前的破壞」中報告的是用戶紛爭而不是破壞', summary: '提醒:向「當前的破壞」中報告的是用戶紛爭而不是破壞' }, 'uw-notvote': { label: '我們以共識處事,而不僅僅是投票', summary: '提醒:我們以共識處事,而不僅僅是投票' }, 'uw-preview': { label: '請使用預覽按鈕來避免不必要的錯誤', summary: '提醒:請使用預覽按鈕來避免不必要的錯誤' }, 'uw-sandbox': { label: '移除沙盒的置頂模板{{sandbox}}', summary: '提醒:移除沙盒的置頂模板{{sandbox}}' }, 'uw-selfrevert': { label: '感謝您自行回退自己的測試,以後不要再這樣做了', summary: '提醒:回退個人的測試' }, 'uw-subst': { label: '謹記要替代模板(subst)', summary: '提醒:謹記要替代模板' }, 'uw-talkinarticle': { label: '在條目頁中留下意見', summary: '提醒:在條目頁中留下意見' }, 'uw-tilde': { label: '沒有在討論頁上簽名', summary: '提醒:沒有在討論頁上簽名' }, 'uw-translated': { label: '翻譯條目未標註原作者', summary: '提醒:翻譯條目未標註原作者' }, 'uw-uaa': { label: '向需要管理員注意的用戶名報告的用戶名稱並不違反方針', summary: '提醒:向需要管理員注意的用戶名報告的用戶名稱並不違反方針' }, 'uw-warn': { label: '警告破壞用戶', summary: '提醒:警告破壞用戶' }, 'uw-mosiw': { label: '不要使用跨語言連結', summary: '提醒:不要使用跨語言連結' }, 'uw-badtwinkle': { label: '不恰當地使用Twinkle警告別人', summary: '提醒:不恰當地使用Twinkle警告別人' } }, singlewarn: { 'uw-3rr': { label: '用戶潛在違反回退不過三原則的可能性', summary: '警告:用戶潛在違反回退不過三原則的可能性' }, 'uw-attack': { label: '建立人身攻擊頁面', summary: '警告:建立人身攻擊頁面', suppressArticleInSummary: true }, 'uw-bv': { label: '公然地破壞', summary: '警告:公然地破壞' }, 'uw-canvass': { label: '不恰當地拉票', summary: '警告:不恰當地拉票' }, 'uw-copyright': { label: '侵犯版權', summary: '警告:侵犯版權' }, 'uw-copyright-link': { label: '連結到有版權的材料', summary: '警告:連結到有版權的材料' }, 'uw-fakesource': { label: '虛構資料來源或引文', summary: '警告:虛構資料來源或引文' }, 'uw-hoax': { label: '建立惡作劇', summary: '警告:建立惡作劇' }, 'uw-incompletecite': { label: '列出的資料來源欠缺若干詳情而不易查找', summary: '警告:列出的資料來源欠缺若干詳情而不易查找' }, 'uw-legal': { label: '訴諸法律威脅', summary: '警告:訴諸法律威脅' }, 'uw-longterm': { label: '長期的破壞', summary: '警告:長期的破壞' }, 'uw-multipleIPs': { label: '使用多個IP地址進行破壞', summary: '警告:使用多個IP地址進行破壞' }, 'uw-npov-tvd': { label: '在劇集條目中加入奸角等非中立描述', summary: '警告:在劇集條目中加入奸角等非中立描述' }, 'uw-owntalk': { label: '匿名使用者移除自己討論頁上7日內的討論', summary: '警告:匿名使用者移除自己討論頁上7日內的討論' }, 'uw-pinfo': { label: '張貼他人隱私', summary: '警告:張貼他人隱私' }, 'uw-upv': { label: '破壞他人用戶頁', summary: '警告:破壞他人用戶頁' }, 'uw-selfinventedname': { label: '不適當地自創新名詞、新譯名', summary: '警告:不適當地自創新名詞、新譯名' }, 'uw-substub': { label: '建立小小作品', summary: '警告:建立小小作品' }, 'uw-username': { label: '使用不恰當的用戶名', summary: '警告:使用不恰當的用戶名', suppressArticleInSummary: true }, 'uw-wrongsummary': { label: '在編輯摘要製造不適當的內容', summary: '警告:在編輯摘要製造不適當的內容' } } }); // Used repeatedly below across menu rebuilds Twinkle.warn.prev_article = null; Twinkle.warn.prev_reason = null; Twinkle.warn.talkpageObj = null; Twinkle.warn.callback.change_category = function twinklewarnCallbackChangeCategory(e) { var value = e.target.value; var sub_group = e.target.root.sub_group; sub_group.main_group = value; var old_subvalue = sub_group.value; var old_subvalue_re; if (old_subvalue) { if (value === 'kitchensink') { // Exact match possible in kitchensink menu old_subvalue_re = new RegExp(mw.util.escapeRegExp(old_subvalue)); } else { old_subvalue = old_subvalue.replace(/\d*(im)?$/, ''); old_subvalue_re = new RegExp(mw.util.escapeRegExp(old_subvalue) + '(\\d*(?:im)?)$'); } } while (sub_group.hasChildNodes()) { sub_group.removeChild(sub_group.firstChild); } var selected = false; // worker function to create the combo box entries var createEntries = function(contents, container, wrapInOptgroup, val) { val = typeof val !== 'undefined' ? val : value; // IE doesn't support default parameters // level2->2, singlewarn->''; also used to distinguish the // scaled levels from singlenotice, singlewarn, and custom var level = val.replace(/^\D+/g, ''); // due to an apparent iOS bug, we have to add an option-group to prevent truncation of text // (search WT:TW archives for "Problem selecting warnings on an iPhone") if (wrapInOptgroup && $.client.profile().platform === 'iphone') { var wrapperOptgroup = new Morebits.quickForm.element({ type: 'optgroup', label: '可用模板' }); wrapperOptgroup = wrapperOptgroup.render(); container.appendChild(wrapperOptgroup); container = wrapperOptgroup; } $.each(contents, function(itemKey, itemProperties) { // Skip if the current template doesn't have a version for the current level if (!!level && !itemProperties[val]) { return; } var key = typeof itemKey === 'string' ? itemKey : itemProperties.value; var template = key + level; var elem = new Morebits.quickForm.element({ type: 'option', label: '{{' + template + '}}: ' + (level ? itemProperties[val].label : itemProperties.label), value: template }); // Select item best corresponding to previous selection if (!selected && old_subvalue && old_subvalue_re.test(template)) { elem.data.selected = selected = true; } var elemRendered = container.appendChild(elem.render()); $(elemRendered).data('messageData', itemProperties); }); }; switch (value) { case 'singlenotice': case 'singlewarn': createEntries(Twinkle.warn.messages[value], sub_group, true); break; case 'singlecombined': var unSortedSinglets = $.extend({}, Twinkle.warn.messages.singlenotice, Twinkle.warn.messages.singlewarn); var sortedSingletMessages = {}; Object.keys(unSortedSinglets).sort().forEach(function(key) { sortedSingletMessages[key] = unSortedSinglets[key]; }); createEntries(sortedSingletMessages, sub_group, true); break; case 'custom': createEntries(Twinkle.getPref('customWarningList'), sub_group, true); break; case 'kitchensink': ['level1', 'level2', 'level3', 'level4', 'level4im'].forEach(function(lvl) { $.each(Twinkle.warn.messages.levels, function(_, levelGroup) { createEntries(levelGroup, sub_group, true, lvl); }); }); createEntries(Twinkle.warn.messages.singlenotice, sub_group, true); createEntries(Twinkle.warn.messages.singlewarn, sub_group, true); createEntries(Twinkle.getPref('customWarningList'), sub_group, true); break; case 'level1': case 'level2': case 'level3': case 'level4': case 'level4im': // Creates subgroup regardless of whether there is anything to place in it; // leaves "Removal of deletion tags" empty for 4im $.each(Twinkle.warn.messages.levels, function(groupLabel, groupContents) { var optgroup = new Morebits.quickForm.element({ type: 'optgroup', label: groupLabel }); optgroup = optgroup.render(); sub_group.appendChild(optgroup); // create the options createEntries(groupContents, optgroup, false); }); break; case 'autolevel': // Check user page to determine appropriate level var autolevelProc = function() { var wikitext = Twinkle.warn.talkpageObj.getPageText(); // history not needed for autolevel var latest = Twinkle.warn.callbacks.dateProcessing(wikitext)[0]; // Pseudo-params with only what's needed to parse the level i.e. no messageData var params = { sub_group: old_subvalue, article: e.target.root.article.value }; var lvl = 'level' + Twinkle.warn.callbacks.autolevelParseWikitext(wikitext, params, latest)[1]; // Identical to level1, etc. above but explicitly provides the level $.each(Twinkle.warn.messages.levels, function(groupLabel, groupContents) { var optgroup = new Morebits.quickForm.element({ type: 'optgroup', label: groupLabel }); optgroup = optgroup.render(); sub_group.appendChild(optgroup); // create the options createEntries(groupContents, optgroup, false, lvl); }); // Trigger subcategory change, add select menu, etc. Twinkle.warn.callback.postCategoryCleanup(e); }; if (Twinkle.warn.talkpageObj) { autolevelProc(); } else { if (Twinkle.warn.isFlow) { var $noTalkPageNode = $('<strong/>', { text: wgULS('结构式讨论(Flow)不支持自动选择警告层级,请手动选择层级。', '結構式討論(Flow)不支援自動選擇警告層級,請手動選擇層級。'), id: 'twinkle-warn-autolevel-message', css: {color: 'red' } }); $noTalkPageNode.insertBefore($('#twinkle-warn-warning-messages')); // If a preview was opened while in a different mode, close it // Should nullify the need to catch the error in preview callback e.target.root.previewer.closePreview(); } else { var usertalk_page = new Morebits.wiki.page('User_talk:' + Morebits.wiki.flow.relevantUserName(), wgULS('加载上次警告', '載入上次警告')); usertalk_page.setFollowRedirect(true, false); usertalk_page.load(function(pageobj) { Twinkle.warn.talkpageObj = pageobj; // Update talkpageObj autolevelProc(); }, function() { // Catch and warn if the talkpage can't load, // most likely because it's a cross-namespace redirect // Supersedes the typical $autolevelMessage added in autolevelParseWikitext var $noTalkPageNode = $('<strong/>', { text: wgULS('无法加载用户讨论页,这可能是因为它是跨命名空间重定向,自动选择警告级别将不会运作。', '無法載入使用者討論頁,這可能是因為它是跨命名空間重新導向,自動選擇警告級別將不會運作。'), id: 'twinkle-warn-autolevel-message', css: {color: 'red' } }); $noTalkPageNode.insertBefore($('#twinkle-warn-warning-messages')); // If a preview was opened while in a different mode, close it // Should nullify the need to catch the error in preview callback e.target.root.previewer.closePreview(); }); } } break; default: alert(wgULS('twinklewarn中未知的警告组', 'twinklewarn中未知的警告組')); break; } // Trigger subcategory change, add select menu, etc. // Here because of the async load for autolevel if (value !== 'autolevel') { // reset any autolevel-specific messages while we're here $('#twinkle-warn-autolevel-message').remove(); Twinkle.warn.callback.postCategoryCleanup(e); } }; Twinkle.warn.callback.postCategoryCleanup = function twinklewarnCallbackPostCategoryCleanup(e) { // clear overridden label on article textbox Morebits.quickForm.setElementTooltipVisibility(e.target.root.article, true); Morebits.quickForm.resetElementLabel(e.target.root.article); // Trigger custom label/change on main category change Twinkle.warn.callback.change_subcategory(e); // Use select2 to make the select menu searchable if (!Twinkle.getPref('oldSelect')) { $('select[name=sub_group]') .select2({ width: '100%', matcher: Morebits.select2.matchers.optgroupFull, templateResult: Morebits.select2.highlightSearchMatches, language: { searching: Morebits.select2.queryInterceptor } }) .change(Twinkle.warn.callback.change_subcategory); $('.select2-selection').keydown(Morebits.select2.autoStart).focus(); mw.util.addCSS( // Increase height '.select2-container .select2-dropdown .select2-results > .select2-results__options { max-height: 350px; }' + // Reduce padding '.select2-results .select2-results__option { padding-top: 1px; padding-bottom: 1px; }' + '.select2-results .select2-results__group { padding-top: 1px; padding-bottom: 1px; } ' + // Adjust font size '.select2-container .select2-dropdown .select2-results { font-size: 13px; }' + '.select2-container .selection .select2-selection__rendered { font-size: 13px; }' ); } }; Twinkle.warn.callback.change_subcategory = function twinklewarnCallbackChangeSubcategory(e) { var main_group = e.target.form.main_group.value; var value = e.target.form.sub_group.value; // Tags that don't take a linked article, but something else (often a username). // The value of each tag is the label next to the input field var notLinkedArticle = { 'uw-bite': wgULS('被“咬到”的用户(不含User:) ', '被「咬到」的使用者(不含User:) '), 'uw-username': wgULS('用户名违反方针,因为… ', '使用者名稱違反方針,因為… '), 'uw-aiv': wgULS('可选输入被警告的用户名(不含User:) ', '可選輸入被警告的使用者名稱(不含User:) ') }; if (['singlenotice', 'singlewarn', 'singlecombined', 'kitchensink'].indexOf(main_group) !== -1) { if (notLinkedArticle[value]) { if (Twinkle.warn.prev_article === null) { Twinkle.warn.prev_article = e.target.form.article.value; } e.target.form.article.notArticle = true; e.target.form.article.value = ''; // change form labels according to the warning selected Morebits.quickForm.setElementTooltipVisibility(e.target.form.article, false); Morebits.quickForm.overrideElementLabel(e.target.form.article, notLinkedArticle[value]); } else if (e.target.form.article.notArticle) { if (Twinkle.warn.prev_article !== null) { e.target.form.article.value = Twinkle.warn.prev_article; Twinkle.warn.prev_article = null; } e.target.form.article.notArticle = false; Morebits.quickForm.setElementTooltipVisibility(e.target.form.article, true); Morebits.quickForm.resetElementLabel(e.target.form.article); } } // add big red notice, warning users about how to use {{uw-[coi-]username}} appropriately $('#tw-warn-red-notice').remove(); var $redWarning; if (value === 'uw-username') { $redWarning = $(wgULS("<div style='color: red;' id='tw-warn-red-notice'>{{uw-username}}<b>不应</b>被用于<b>明显</b>违反用户名方针的用户。" + '明显的违反方针应被报告给UAA。' + '{{uw-username}}应只被用在边界情况下需要与用户讨论时。</div>', "<div style='color: red;' id='tw-warn-red-notice'>{{uw-username}}<b>不應</b>被用於<b>明顯</b>違反用戶名方針的用戶。" + '明顯的違反方針應被報告給UAA。' + '{{uw-username}}應只被用在邊界情況下需要與用戶討論時。</div>')); $redWarning.insertAfter(Morebits.quickForm.getElementLabelObject(e.target.form.reasonGroup)); } }; Twinkle.warn.callbacks = { getWarningWikitext: function(templateName, article, reason, isCustom, noSign) { var text = '{{subst:' + templateName; // add linked article for user warnings if (article) { text += '|1=' + article; } if (reason) { // add extra message if (templateName === 'uw-csd') { text += '|3=' + reason; } else { text += '|2=' + reason; } } text += '|subst=subst:}}'; if (!noSign) { text += ' ~~~~'; } return text; }, showPreview: function(form, templatename) { var input = Morebits.quickForm.getInputData(form); // Provided on autolevel, not otherwise templatename = templatename || input.sub_group; var linkedarticle = input.article; var templatetext; templatetext = Twinkle.warn.callbacks.getWarningWikitext(templatename, linkedarticle, input.reason, input.main_group === 'custom'); form.previewer.beginRender(templatetext, 'User_talk:' + Morebits.wiki.flow.relevantUserName() + (Twinkle.warn.isFlow ? '/Wikitext' : '')); // Force wikitext/correct username }, // Just a pass-through unless the autolevel option was selected preview: function(form) { if (form.main_group.value === 'autolevel') { // Always get a new, updated talkpage for autolevel processing var usertalk_page = new Morebits.wiki.page('User_talk:' + Morebits.wiki.flow.relevantUserName(), wgULS('加载上次警告', '載入上次警告')); usertalk_page.setFollowRedirect(true, false); // Will fail silently if the talk page is a cross-ns redirect, // removal of the preview box handled when loading the menu usertalk_page.load(function(pageobj) { Twinkle.warn.talkpageObj = pageobj; // Update talkpageObj var wikitext = pageobj.getPageText(); // history not needed for autolevel var latest = Twinkle.warn.callbacks.dateProcessing(wikitext)[0]; var params = { sub_group: form.sub_group.value, article: form.article.value, messageData: $(form.sub_group).find('option[value="' + $(form.sub_group).val() + '"]').data('messageData') }; var template = Twinkle.warn.callbacks.autolevelParseWikitext(wikitext, params, latest)[0]; Twinkle.warn.callbacks.showPreview(form, template); // If the templates have diverged, fake a change event // to reload the menu with the updated pageobj if (form.sub_group.value !== template) { var evt = document.createEvent('Event'); evt.initEvent('change', true, true); form.main_group.dispatchEvent(evt); } }); } else { Twinkle.warn.callbacks.showPreview(form); } }, /** * Used in the main and autolevel loops to determine when to warn * about excessively recent, stale, or identical warnings. * @param {string} wikitext The text of a user's talk page, from getPageText() * @returns {Object[]} - Array of objects: latest contains most recent * warning and date; history lists all prior warnings */ dateProcessing: function(wikitext) { var history_re = /<!--\s?Template:([uU]w-.*?)\s?-->.*?(\d{4})年(\d{1,2})月(\d{1,2})日 \([日一二三四五六]\) (\d{1,2}):(\d{1,2}) \(UTC\)/g; var history = {}; var latest = { date: new Morebits.date(0), type: '' }; var current; while ((current = history_re.exec(wikitext)) !== null) { var template = current[1]; var current_date = new Morebits.date(current[2] + '-' + current[3] + '-' + current[4] + ' ' + current[5] + ':' + current[6] + ' UTC'); if (!(template in history) || history[template].isBefore(current_date)) { history[template] = current_date; } if (!latest.date.isAfter(current_date)) { latest.date = current_date; latest.type = template; } } return [latest, history]; }, /** * Main loop for deciding what the level should increment to. Most of * this is really just error catching and updating the subsequent data. * May produce up to two notices in a twinkle-warn-autolevel-messages div * * @param {string} wikitext The text of a user's talk page, from getPageText() (required) * @param {Object} params Params object: sub_group is the template (required); * article is the user-provided article (form.article) used to link ARV on recent level4 warnings; * messageData is only necessary if getting the full template, as it's * used to ensure a valid template of that level exists * @param {Object} latest First element of the array returned from * dateProcessing. Provided here rather than processed within to avoid * repeated call to dateProcessing * @param {(Date|Morebits.date)} date Date from which staleness is determined * @param {Morebits.status} statelem Status element, only used for handling error in final execution * * @returns {Array} - Array that contains the full template and just the warning level */ autolevelParseWikitext: function(wikitext, params, latest, date, statelem) { var level; // undefined rather than '' means the isNaN below will return true if (/\d(?:im)?$/.test(latest.type)) { // level1-4im level = parseInt(latest.type.replace(/.*(\d)(?:im)?$/, '$1'), 10); } else if (latest.type) { // Non-numbered warning // Try to leverage existing categorization of // warnings, all but one are universally lowercased var loweredType = /uw-multipleIPs/i.test(latest.type) ? 'uw-multipleIPs' : latest.type.toLowerCase(); // It would be nice to account for blocks, but in most // cases the hidden message is terminal, not the sig if (Twinkle.warn.messages.singlewarn[loweredType]) { level = 3; } else { level = 1; // singlenotice or not found } } var $autolevelMessage = $('<div/>', {id: 'twinkle-warn-autolevel-message'}); if (isNaN(level)) { // No prior warnings found, this is the first level = 1; } else if (level > 4 || level < 1) { // Shouldn't happen var message = wgULS('无法解析上次的警告层级,请手动选择一个警告层级。', '無法解析上次的警告層級,請手動選擇一個警告層級。'); if (statelem) { statelem.error(message); } else { alert(message); } return; } else { date = date || new Date(); var autoTimeout = new Morebits.date(latest.date.getTime()).add(parseInt(Twinkle.getPref('autolevelStaleDays'), 10), 'day'); if (autoTimeout.isAfter(date)) { if (level === 4) { level = 4; // Basically indicates whether we're in the final Main evaluation or not, // and thus whether we can continue or need to display the warning and link if (!statelem) { var $link = $('<a/>', { href: '#', text: wgULS('单击此处打开告状工具', '點擊此處打開告狀工具'), css: { fontWeight: 'bold' }, click: function() { Morebits.wiki.actionCompleted.redirect = null; Twinkle.warn.dialog.close(); Twinkle.arv.callback(Morebits.wiki.flow.relevantUserName()); $('input[name=page]').val(params.article); // Target page $('input[value=final]').prop('checked', true); // Vandalism after final } }); var statusNode = $('<div/>', { text: Morebits.wiki.flow.relevantUserName() + wgULS('最后收到了一个层级4警告(', '最後收到了一個層級4警告(') + latest.type + wgULS('),所以将其报告给管理人员会比较好;', '),所以將其報告給管理人員會比較好;'), css: {color: 'red' } }); statusNode.append($link[0]); $autolevelMessage.append(statusNode); } } else { // Automatically increase severity level += 1; } } else { // Reset warning level if most-recent warning is too old level = 1; } } $autolevelMessage.prepend($('<div>' + wgULS('将发送', '將發送') + '<span style="font-weight: bold;">' + wgULS('层级', '層級') + level + '</span>' + '警告模板' + '。</div>')); // Place after the stale and other-user-reverted (text-only) messages $('#twinkle-warn-autolevel-message').remove(); // clean slate $autolevelMessage.insertAfter($('#twinkle-warn-warning-messages')); var template = params.sub_group.replace(/(.*)\d$/, '$1'); // Validate warning level, falling back to the uw-generic series. // Only a few items are missing a level, and in all but a handful // of cases, the uw-generic series is explicitly used elsewhere per WP:UTM. if (params.messageData && !params.messageData['level' + level]) { template = 'uw-generic'; } template += level; return [template, level]; }, main: function(pageobj) { var text = pageobj.getPageText(); var statelem = pageobj.getStatusElement(); var params = pageobj.getCallbackParameters(); var messageData = params.messageData; // JS somehow didn't get destructured assignment until ES6 so of course IE doesn't support it var warningHistory = Twinkle.warn.callbacks.dateProcessing(text); var latest = warningHistory[0]; var history = warningHistory[1]; var now = new Morebits.date(pageobj.getLoadTime()); Twinkle.warn.talkpageObj = pageobj; // Update talkpageObj, just in case if (params.main_group === 'autolevel') { // [template, level] var templateAndLevel = Twinkle.warn.callbacks.autolevelParseWikitext(text, params, latest, now, statelem); // Only if there's a change from the prior display/load if (params.sub_group !== templateAndLevel[0] && !confirm(wgULS('将发送给用户{{', '將發送給使用者{{') + templateAndLevel[0] + wgULS('}}模板,好吗?', '}}模板,好嗎?'))) { statelem.error(wgULS('用户取消', '使用者取消')); return; } // Update params now that we've selected a warning params.sub_group = templateAndLevel[0]; messageData = params.messageData['level' + templateAndLevel[1]]; } else if (params.sub_group in history) { if (new Morebits.date(history[params.sub_group]).add(1, 'day').isAfter(now)) { if (!confirm(wgULS('近24小时内一个同样的 ', '近24小時內一個同樣的 ') + params.sub_group + wgULS(' 模板已被发出。\n是否继续?', ' 模板已被發出。\n是否繼續?'))) { statelem.error(wgULS('用户取消', '使用者取消')); return; } } } latest.date.add(1, 'minute'); // after long debate, one minute is max if (latest.date.isAfter(now)) { if (!confirm(wgULS('近1分钟内 ', '近1分鐘內 ') + latest.type + wgULS(' 模板已被发出。\n是否继续?', ' 模板已被發出。\n是否繼續?'))) { statelem.error(wgULS('用户取消', '使用者取消')); return; } } // build the edit summary // Function to handle generation of summary prefix for custom templates var customProcess = function(template) { template = template.split('|')[0]; var prefix; switch (template.substr(-1)) { case '1': prefix = '提醒'; break; case '2': prefix = '注意'; break; case '3': prefix = '警告'; break; case '4': prefix = wgULS('最后警告', '最後警告'); break; case 'm': if (template.substr(-3) === '4im') { prefix = '唯一警告'; break; } // falls through default: prefix = '提醒'; break; } return prefix + ':' + Morebits.string.toUpperCaseFirstChar(messageData.label); }; var summary; if (params.main_group === 'custom') { summary = customProcess(params.sub_group); } else { // Normalize kitchensink to the 1-4im style if (params.main_group === 'kitchensink' && !/^D+$/.test(params.sub_group)) { var sub = params.sub_group.substr(-1); if (sub === 'm') { sub = params.sub_group.substr(-3); } // Don't overwrite uw-3rr, technically unnecessary if (/\d/.test(sub)) { params.main_group = 'level' + sub; } } // singlet || level1-4im, no need to /^\D+$/.test(params.main_group) summary = messageData.summary || (messageData[params.main_group] && messageData[params.main_group].summary); // Not in Twinkle.warn.messages, assume custom template if (!summary) { summary = customProcess(params.sub_group); } if (messageData.suppressArticleInSummary !== true && params.article) { if (params.sub_group === 'uw-aiv') { // these templates require a username summary += '(' + wgULS('对于', '對於') + '[[User:' + params.article + ']])'; } else if (params.sub_group === 'uw-bite') { // this template requires a username summary += ',' + wgULS('于', '於') + '[[User talk:' + params.article + ']]'; } else { summary += wgULS(',于[[', ',於[[') + params.article + ']]'; } } } pageobj.setEditSummary(summary); pageobj.setChangeTags(Twinkle.changeTags); pageobj.setWatchlist(Twinkle.getPref('watchWarnings')); // Get actual warning text var warningText = Twinkle.warn.callbacks.getWarningWikitext(params.sub_group, params.article, params.reason, params.main_group === 'custom'); if (Twinkle.getPref('showSharedIPNotice') && mw.util.isIPAddress(mw.config.get('wgTitle'))) { Morebits.status.info(wgULS('信息', '資訊'), wgULS('加入共享IP说明', '加入共享IP說明')); warningText += '\n{{subst:SharedIPAdvice}}'; } var sectionExists = false, sectionNumber = 0; // Only check sections if there are sections or there's a chance we won't create our own if (!messageData.heading && text.length) { // Get all sections var sections = text.match(/^(==*).+\1/gm); if (sections && sections.length !== 0) { // Find the index of the section header in question var dateHeaderRegex = now.monthHeaderRegex(); sectionNumber = 0; // Find this month's section among L2 sections, preferring the bottom-most sectionExists = sections.reverse().some(function(sec, idx) { return /^(==)[^=].+\1/m.test(sec) && dateHeaderRegex.test(sec) && typeof (sectionNumber = sections.length - 1 - idx) === 'number'; }); } } if (sectionExists) { // append to existing section pageobj.setPageSection(sectionNumber + 1); pageobj.setAppendText('\n\n' + warningText); pageobj.append(); } else { if (messageData.heading) { // create new section pageobj.setNewSectionTitle(messageData.heading); } else { Morebits.status.info(wgULS('信息', '資訊'), wgULS('未找到当月的二级标题,将创建新的', '未找到當月的二級標題,將建立新的')); pageobj.setNewSectionTitle(now.monthHeader(0)); } pageobj.setNewSectionText(warningText); pageobj.newSection(); } }, main_flow: function (flowobj) { var params = flowobj.getCallbackParameters(); var messageData = params.messageData; // build the edit summary // Function to handle generation of summary prefix for custom templates var customProcess = function(template) { template = template.split('|')[0]; var prefix; switch (template.substr(-1)) { case '1': prefix = '提醒'; break; case '2': prefix = '注意'; break; case '3': prefix = '警告'; break; case '4': prefix = wgULS('最后警告', '最後警告'); break; case 'm': if (template.substr(-3) === '4im') { prefix = '唯一警告'; break; } // falls through default: prefix = '提醒'; break; } return prefix + ':' + Morebits.string.toUpperCaseFirstChar(messageData.label); }; var topic; if (messageData.heading) { topic = messageData.heading; } else { // Normalize kitchensink to the 1-4im style if (params.main_group === 'kitchensink' && !/^D+$/.test(params.sub_group)) { var sub = params.sub_group.substr(-1); if (sub === 'm') { sub = params.sub_group.substr(-3); } // Don't overwrite uw-3rr, technically unnecessary if (/\d/.test(sub)) { params.main_group = 'level' + sub; } } // singlet || level1-4im, no need to /^\D+$/.test(params.main_group) topic = messageData.summary || (messageData[params.main_group] && messageData[params.main_group].summary); // Not in Twinkle.warn.messages, assume custom template if (!topic) { topic = customProcess(params.sub_group); } } var content = Twinkle.warn.callbacks.getWarningWikitext(params.sub_group, params.article, params.reason, params.main_group === 'custom', true); flowobj.setTopic(topic); flowobj.setContent(content); flowobj.newTopic(); } }; Twinkle.warn.callback.evaluate = function twinklewarnCallbackEvaluate(e) { var userTalkPage = 'User_talk:' + Morebits.wiki.flow.relevantUserName(); // reason, main_group, sub_group, article var params = Morebits.quickForm.getInputData(e.target); // Check that a reason was filled in if uw-username was selected if (params.sub_group === 'uw-username' && !params.article) { alert(wgULS('必须给{{uw-username}}提供理由。', '必須給{{uw-username}}提供理由。')); return; } if (params.article) { if (/https?:\/\//.test(params.article)) { alert(wgULS('“页面链接”不能使用网址。', '「頁面連結」不能使用網址。')); return; } try { var article = new mw.Title(params.article); params.article = article.getPrefixedText(); if (article.getFragment()) { params.article += '#' + article.getFragment(); } } catch (error) { alert(wgULS('“页面链接”不合法,仅能输入一个页面名称,勿使用网址、[[ ]],可使用Special:Diff。', '「頁面連結」不合法,僅能輸入一個頁面名稱,勿使用網址、[[ ]],可使用Special:Diff。')); return; } } // The autolevel option will already know by now if a user talk page // is a cross-namespace redirect (via !!Twinkle.warn.talkpageObj), so // technically we could alert an error here, but the user will have // already ignored the bold red error above. Moreover, they probably // *don't* want to actually issue a warning, so the error handling // after the form is submitted is probably preferable // Find the selected <option> element so we can fetch the data structure var $selectedEl = $(e.target.sub_group).find('option[value="' + $(e.target.sub_group).val() + '"]'); params.messageData = $selectedEl.data('messageData'); if (typeof params.messageData === 'undefined') { alert(wgULS('请选择警告模板。', '請選擇警告模板。')); return; } Morebits.simpleWindow.setButtonsEnabled(false); Morebits.status.init(e.target); Morebits.wiki.actionCompleted.redirect = userTalkPage; Morebits.wiki.actionCompleted.notice = wgULS('警告完成,将在几秒后刷新', '警告完成,將在幾秒後重新整理'); if (Twinkle.warn.isFlow) { var flow_page = new Morebits.wiki.flow(userTalkPage, wgULS('用户Flow讨论页留言', '使用者Flow討論頁留言')); flow_page.setCallbackParameters(params); Twinkle.warn.callbacks.main_flow(flow_page); } else { var wikipedia_page = new Morebits.wiki.page(userTalkPage, wgULS('用户讨论页修改', '使用者討論頁修改')); wikipedia_page.setCallbackParameters(params); wikipedia_page.setFollowRedirect(true, false); wikipedia_page.load(Twinkle.warn.callbacks.main); } }; Twinkle.addInitCallback(Twinkle.warn, 'warn'); })(jQuery); // </nowiki> ddxn7sqia04iashkq760wsgqsez96zq User:JohanahoJ/sandbox.css 2 112884 519238 519191 2022-07-29T14:18:22Z JohanahoJ 37147 css text/css .script_mlangbabel_separator { filter: opacity(40%); margin: 7px 40px 7px 0; } .script_mlangbabel_error { color: #d33; margin-left: 1em; } .script_mlangbabel_info { text-decoration: underline !important; } 6i5k7kqty87ej49p400iahsaw17bf7a 519242 519238 2022-07-29T14:54:20Z JohanahoJ 37147 css text/css .script_mlangbabel_error { color: #d33; margin-left: 1em; } .script_mlangbabel_info { text-decoration: underline !important; } 4y0iiv2f719sot8d1g89x25za73d0in 519243 519242 2022-07-29T14:59:27Z JohanahoJ 37147 css text/css .script_mlangbabel_langul { margin-top: 1em; } .script_mlangbabel_error { color: #d33; margin-left: 1em; } .script_mlangbabel_info { text-decoration: underline !important; } agcc2r0d7odx666dv1pojvhdzvwseh4 519245 519243 2022-07-29T15:06:31Z JohanahoJ 37147 css text/css .script_mlangbabel_langul { margin-top: .5em; } .script_mlangbabel_error { color: #d33; /* margin-left: 1em; */ } .script_mlangbabel_info { text-decoration: underline !important; } e6f62bpurloihu8s5lms4bwat73g9p3 519246 519245 2022-07-29T15:11:04Z JohanahoJ 37147 css text/css .script_mlangbabel_langul { margin-top: .5em; } .script_mlangbabel_error { color: #d33; } .script_mlangbabel_info { text-decoration: underline !important; } 5stdmblb60qd6w5quauxvkpqir1t8dh 519267 519246 2022-07-29T18:45:10Z JohanahoJ 37147 Blanked the page css text/css phoiac9h4m842xq45sp7s6u21eteeq1 User:JohanahoJ/sandbox.js 2 112889 519240 519237 2022-07-29T14:45:05Z JohanahoJ 37147 javascript text/javascript // Nödvändig modul: 'mediawiki.user' function main() { 'use strict'; if ( mw.config.get( 'skin' ) !== 'minerva' ) return; window.addEventListener('hashchange', function() { if ( location.hash.indexOf( '#/languages' ) > -1 ) { location.reload(); } }); setTimeout( function() { var babelLang = mw.config.get( 'wgULSBabelLanguages' ); if ( !babelLang ) return; var anyCurrLangList = document.getElementsByClassName( 'all-languages' )[0] ?? document.getElementsByClassName( 'suggested-languages' )[0]; if ( !anyCurrLangList ) return; var langUl = document.createElement( 'ul' ); var langListParent = anyCurrLangList.parentNode; if ( !langListParent ) return; langListParent.prepend( langUl ); langUl.classList.add( 'site-link-list' ); if ( !babelLang.length ) { var errorText, infoUrl; if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) { errorText = 'Hittar inte Babel-inställningar.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language/sv'; } else { errorText = 'Can\'t find Babel settings.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language'; } var errorDiv = document.createElement( 'div' ); errorDiv.textContent = errorText; errorDiv.classList.add( 'script_mlangbabel_error' ); var babelInfoLink = document.createElement( 'a' ); errorDiv.appendChild( babelInfoLink ); babelInfoLink.textContent = 'Info'; babelInfoLink.classList.add( 'script_mlangbabel_info' ); babelInfoLink.setAttribute( 'href', infoUrl ); langUl.prepend( errorDiv ); return; } babelLang.reverse(); babelLang.forEach( function ( prLang ) { var langA = langListParent.getElementsByClassName( prLang )[0]; if ( !langA ) return; var langLi = langA.parentElement.closest('li'); if ( !langLi ) { langLi = langA } langLi.classList.add( 'script_mlangbabel_items' ); langUl.prepend( langLi ); }); }, 200); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } 83fid32287piobg5yvnyc4mt6up7soz 519241 519240 2022-07-29T14:52:46Z JohanahoJ 37147 javascript text/javascript // Nödvändig modul: 'mediawiki.user' function main() { 'use strict'; if ( mw.config.get( 'skin' ) !== 'minerva' ) return; window.addEventListener('hashchange', function() { if ( location.hash.indexOf( '#/languages' ) > -1 ) { location.reload(); } }); setTimeout( function() { var langA, langLi; var babelLang = mw.config.get( 'wgULSBabelLanguages' ); if ( !babelLang ) return; var anyCurrLangList = document.getElementsByClassName( 'all-languages' )[0] ?? document.getElementsByClassName( 'suggested-languages' )[0]; if ( !anyCurrLangList ) return; var langUl = document.createElement( 'ul' ); var langListParent = anyCurrLangList.parentNode; if ( !langListParent ) return; langListParent.prepend( langUl ); langUl.classList.add( 'site-link-list' ); if ( !babelLang.length ) { var errorText, infoUrl; if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) { errorText = 'Hittar inte Babel-inställningar.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language/sv'; } else { errorText = 'Can\'t find Babel settings.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language'; } var errorDiv = document.createElement( 'div' ); errorDiv.textContent = errorText; errorDiv.classList.add( 'script_mlangbabel_error' ); var babelInfoLink = document.createElement( 'a' ); errorDiv.appendChild( babelInfoLink ); babelInfoLink.textContent = 'Info'; babelInfoLink.classList.add( 'script_mlangbabel_info' ); babelInfoLink.setAttribute( 'href', infoUrl ); langUl.prepend( errorDiv ); return; } babelLang.reverse(); babelLang.forEach( function ( prLang ) { langA = langListParent.getElementsByClassName( prLang )[0]; if ( !langA ) return; langLi = langA.parentElement.closest('li'); if ( !langLi ) langLi = langA; langUl.prepend( langLi ); }); }, 200); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } 4oiop23j0g2dzd7ncrxq6tg8eanrjw4 519244 519241 2022-07-29T15:05:22Z JohanahoJ 37147 javascript text/javascript // Nödvändig modul: 'mediawiki.user' function main() { 'use strict'; if ( mw.config.get( 'skin' ) !== 'minerva' ) return; window.addEventListener('hashchange', function() { if ( location.hash.indexOf( '#/languages' ) > -1 ) { location.reload(); } }); setTimeout( function() { var langA, langLi; var babelLang = mw.config.get( 'wgULSBabelLanguages' ); if ( !babelLang ) return; var anyCurrLangList = document.getElementsByClassName( 'all-languages' )[0] ?? document.getElementsByClassName( 'suggested-languages' )[0]; if ( !anyCurrLangList ) return; var langUl = document.createElement( 'ul' ); var langListParent = anyCurrLangList.parentNode; if ( !langListParent ) return; langListParent.prepend( langUl ); langUl.classList.add( 'site-link-list', 'script_mlangbabel_langul' ); if ( !babelLang.length ) { var errorText, infoUrl; if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) { errorText = 'Hittar inte Babel-inställningar.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language/sv'; } else { errorText = 'Can\'t find Babel settings.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language'; } var errorDiv = document.createElement( 'div' ); errorDiv.textContent = errorText; errorDiv.classList.add( 'list-header', 'script_mlangbabel_error' ); var babelInfoLink = document.createElement( 'a' ); errorDiv.appendChild( babelInfoLink ); babelInfoLink.textContent = 'Info'; babelInfoLink.classList.add( 'script_mlangbabel_info' ); babelInfoLink.setAttribute( 'href', infoUrl ); langUl.prepend( errorDiv ); return; } babelLang.reverse(); babelLang.forEach( function ( prLang ) { langA = langListParent.getElementsByClassName( prLang )[0]; if ( !langA ) return; langLi = langA.parentElement.closest('li'); if ( !langLi ) langLi = langA; langUl.prepend( langLi ); }); }, 200); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } 44p2299vmi0sexdmtzo20qm94o1xy81 519247 519244 2022-07-29T15:20:06Z JohanahoJ 37147 javascript text/javascript // Nödvändig modul: 'mediawiki.user' function main() { 'use strict'; if ( mw.config.get( 'skin' ) !== 'minerva' ) return; window.addEventListener('hashchange', function() { if ( location.hash.indexOf( '#/languages' ) > -1 ) { location.reload(); } }); setTimeout( function() { var langA, langLi; var babelLang = mw.config.get( 'wgULSBabelLanguages' ); if ( !babelLang ) return; var anyCurrLangList = document.getElementsByClassName( 'all-languages' )[0] ?? document.getElementsByClassName( 'suggested-languages' )[0]; if ( !anyCurrLangList ) return; var langUl = document.createElement( 'ul' ); var langListParent = anyCurrLangList.parentNode; if ( !langListParent ) return; langListParent.prepend( langUl ); langUl.setAttribute( 'id', 'script_mlangbabel_langul' ); langUl.classList.add( 'site-link-list', 'script_mlangbabel_langul' ); if ( !babelLang.length ) { var errorText, infoUrl; if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) { errorText = 'Hittar inte Babel-inställningar.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language/sv'; } else { errorText = 'Can\'t find Babel settings.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language'; } var errorDiv = document.createElement( 'div' ); errorDiv.textContent = errorText; errorDiv.classList.add( 'list-header', 'script_mlangbabel_error' ); var babelInfoLink = document.createElement( 'a' ); errorDiv.appendChild( babelInfoLink ); babelInfoLink.textContent = 'Info'; babelInfoLink.classList.add( 'script_mlangbabel_info' ); babelInfoLink.setAttribute( 'href', infoUrl ); langUl.prepend( errorDiv ); return; } babelLang.reverse(); babelLang.forEach( function ( prLang ) { langA = langListParent.getElementsByClassName( prLang )[0]; if ( !langA ) return; langLi = langA.parentElement.closest('li'); if ( !langLi ) langLi = langA; langUl.prepend( langLi ); }); }, 200); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } 0nf6jet0lorw0137roc5s0ih5px0wmm 519248 519247 2022-07-29T15:36:46Z JohanahoJ 37147 javascript text/javascript /* För sidornas språklänkar i mobilvyn (Minerva). Ett urval språklänkar placeras överst i listan. Urvalet definieras av wgULSBabelLanguages (Extension:Babel), vilket kräver att "{{#Babel:...}}" finns på den egna användarhuvudsidan, antingen på det aktuella projektet eller på meta, vilket täcker även andra projekt. Nödvändig modul: 'mediawiki.user' (för ev. felmeddelande och dess länk). */ function main() { 'use strict'; if ( mw.config.get( 'skin' ) !== 'minerva' ) return; window.addEventListener('hashchange', function() { if ( location.hash.indexOf( '#/languages' ) > -1 ) { location.reload(); } }); setTimeout( function() { var langA, langLi; var babelLang = mw.config.get( 'wgULSBabelLanguages' ); if ( !babelLang ) return; var anyCurrLangList = document.getElementsByClassName( 'all-languages' )[0] ?? document.getElementsByClassName( 'suggested-languages' )[0]; if ( !anyCurrLangList ) return; var langUl = document.createElement( 'ul' ); var langListParent = anyCurrLangList.parentNode; if ( !langListParent ) return; langListParent.prepend( langUl ); langUl.setAttribute( 'id', 'script_mlangbabel_langul' ); langUl.classList.add( 'site-link-list', 'script_mlangbabel_langul' ); if ( !babelLang.length ) { var errorText, infoUrl; if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) { errorText = 'Hittar inte Babel-inställningar.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language/sv'; } else { errorText = 'Can\'t find Babel settings.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language'; } var errorDiv = document.createElement( 'div' ); errorDiv.textContent = errorText; errorDiv.classList.add( 'list-header', 'script_mlangbabel_error' ); var babelInfoLink = document.createElement( 'a' ); errorDiv.appendChild( babelInfoLink ); babelInfoLink.textContent = 'Info'; babelInfoLink.classList.add( 'script_mlangbabel_info' ); babelInfoLink.setAttribute( 'href', infoUrl ); langUl.prepend( errorDiv ); return; } babelLang.reverse(); babelLang.forEach( function ( prLang ) { langA = langListParent.getElementsByClassName( prLang )[0]; if ( !langA ) return; langLi = langA.parentElement.closest('li'); if ( !langLi ) langLi = langA; langUl.prepend( langLi ); }); }, 200); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } p4vkpkh8bd2qte96g79eut7w9g9w8j4 519255 519248 2022-07-29T16:38:42Z JohanahoJ 37147 javascript text/javascript /* För sidornas språklänkar i mobilvyn (Minerva). Ett urval språklänkar placeras överst i listan. Urvalet definieras av wgULSBabelLanguages (Extension:Babel), vilket kräver att "{{#Babel:...}}" finns på den egna användarhuvudsidan, antingen på det aktuella projektet eller på meta, vilket täcker även andra projekt. Nödvändig modul: 'mediawiki.user' (för ev. felmeddelande och dess länk). */ function main() { 'use strict'; if ( mw.config.get( 'skin' ) !== 'minerva' ) return; window.addEventListener('hashchange', function() { if ( location.hash.indexOf( '#/languages' ) > -1 ) { location.reload(); } }); setTimeout( function() { var langA, langLi, anyCurrLangList; var babelLang = mw.config.get( 'wgULSBabelLanguages' ); if ( !babelLang ) return; anyCurrLangList = document.getElementsByClassName( 'all-languages' )[0]; if ( !anyCurrLangList ) { anyCurrLangList = document.getElementsByClassName( 'suggested-languages' )[0]; } if ( !anyCurrLangList ) return; var langUl = document.createElement( 'ul' ); var langListParent = anyCurrLangList.parentNode; if ( !langListParent ) return; langListParent.prepend( langUl ); langUl.setAttribute( 'id', 'script_mlangbabel_langul' ); langUl.classList.add( 'site-link-list', 'script_mlangbabel_langul' ); if ( !babelLang.length ) { var errorText, infoUrl; if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) { errorText = 'Hittar inte Babel-inställningar.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language/sv'; } else { errorText = 'Can\'t find Babel settings.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language'; } var errorDiv = document.createElement( 'div' ); errorDiv.textContent = errorText; errorDiv.classList.add( 'list-header', 'script_mlangbabel_error' ); var babelInfoLink = document.createElement( 'a' ); errorDiv.appendChild( babelInfoLink ); babelInfoLink.textContent = 'Info'; babelInfoLink.classList.add( 'script_mlangbabel_info' ); babelInfoLink.setAttribute( 'href', infoUrl ); langUl.prepend( errorDiv ); return; } babelLang.reverse(); babelLang.forEach( function ( prLang ) { langA = langListParent.getElementsByClassName( prLang )[0]; if ( !langA ) return; langLi = langA.parentElement.closest('li'); if ( !langLi ) langLi = langA; langUl.prepend( langLi ); }); }, 200); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } p6rjb9maw6bhfeas2hb05w98jajoryf 519256 519255 2022-07-29T16:40:44Z JohanahoJ 37147 javascript text/javascript /* För sidornas språklänkar i mobilvyn (Minerva). Ett urval språklänkar placeras överst i listan. Urvalet definieras av wgULSBabelLanguages (Extension:Babel), vilket kräver att "{{#Babel:...}}" finns på den egna användarhuvudsidan, antingen på det aktuella projektet eller på meta, vilket täcker även andra projekt. Nödvändig modul: 'mediawiki.user' (för ev. felmeddelande och dess länk). */ function main() { 'use strict'; if ( mw.config.get( 'skin' ) !== 'minerva' ) return; window.addEventListener('hashchange', function() { if ( location.hash.indexOf( '#/languages' ) > -1 ) { location.reload(); } }); setTimeout( function() { var langA, langLi, anyCurrLangList; var babelLang = mw.config.get( 'wgULSBabelLanguages' ); if ( !babelLang ) return; anyCurrLangList = document.getElementsByClassName( 'all-languages' )[0]; if ( !anyCurrLangList ) { anyCurrLangList = document.getElementsByClassName( 'suggested-languages' )[0]; } if ( !anyCurrLangList ) return; var langUl = document.createElement( 'ul' ); var langListParent = anyCurrLangList.parentNode; if ( !langListParent ) return; langListParent.prepend( langUl ); langUl.setAttribute( 'id', 'script_mlangbabel_langul' ); langUl.classList.add( 'site-link-list', 'script_mlangbabel_langul' ); if ( !babelLang.length ) { var errorText, infoUrl; if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) { errorText = 'Hittar inte Babel-inställningar.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language/sv'; } else { errorText = 'Can\'t find Babel settings.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language'; } var errorDiv = document.createElement( 'div' ); errorDiv.textContent = errorText; errorDiv.classList.add( 'list-header', 'script_mlangbabel_error' ); var babelInfoLink = document.createElement( 'a' ); errorDiv.appendChild( babelInfoLink ); babelInfoLink.textContent = 'Info'; babelInfoLink.classList.add( 'script_mlangbabel_info' ); babelInfoLink.setAttribute( 'href', infoUrl ); langUl.prepend( errorDiv ); return; } babelLang.reverse(); babelLang.forEach( function ( prLang ) { langA = langListParent.getElementsByClassName( prLang )[0]; if ( !langA ) return; langLi = langA.parentElement.closest('li'); if ( !langLi ) langLi = langA; langUl.prepend( langLi ); }); }, 200); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } 84xcf7lndtwbm9dl3wv707x6csknnsw 519257 519256 2022-07-29T16:42:00Z JohanahoJ 37147 javascript text/javascript /* För sidornas språklänkar i mobilvyn (Minerva). Ett urval språklänkar placeras överst i listan. Urvalet definieras av wgULSBabelLanguages (Extension:Babel), vilket kräver att "{{#Babel:...}}" finns på den egna användarhuvudsidan, antingen på det aktuella projektet eller på meta, vilket täcker även andra projekt. Nödvändig modul: 'mediawiki.user' (för ev. felmeddelande och dess länk). */ function main() { 'use strict'; if ( mw.config.get( 'skin' ) !== 'minerva' ) return; window.addEventListener('hashchange', function() { if ( location.hash.indexOf( '#/languages' ) > -1 ) { location.reload(); } }); setTimeout( function() { var langA, langLi, anyCurrLangList; var babelLang = mw.config.get( 'wgULSBabelLanguages' ); if ( !babelLang ) return; anyCurrLangList = document.getElementsByClassName( 'all-languages' )[0]; if ( !anyCurrLangList ) { anyCurrLangList = document .getElementsByClassName( 'suggested-languages' )[0]; } if ( !anyCurrLangList ) return; var langUl = document.createElement( 'ul' ); var langListParent = anyCurrLangList.parentNode; if ( !langListParent ) return; langListParent.prepend( langUl ); langUl.setAttribute( 'id', 'script_mlangbabel_langul' ); langUl.classList.add( 'site-link-list', 'script_mlangbabel_langul' ); if ( !babelLang.length ) { var errorText, infoUrl; if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) { errorText = 'Hittar inte Babel-inställningar.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language/sv'; } else { errorText = 'Can\'t find Babel settings.\xa0'; infoUrl = 'https://meta.wikimedia.org/wiki/User_language'; } var errorDiv = document.createElement( 'div' ); errorDiv.textContent = errorText; errorDiv.classList.add( 'list-header', 'script_mlangbabel_error' ); var babelInfoLink = document.createElement( 'a' ); errorDiv.appendChild( babelInfoLink ); babelInfoLink.textContent = 'Info'; babelInfoLink.classList.add( 'script_mlangbabel_info' ); babelInfoLink.setAttribute( 'href', infoUrl ); langUl.prepend( errorDiv ); return; } babelLang.reverse(); babelLang.forEach( function ( prLang ) { langA = langListParent.getElementsByClassName( prLang )[0]; if ( !langA ) return; langLi = langA.parentElement.closest('li'); if ( !langLi ) langLi = langA; langUl.prepend( langLi ); }); }, 200); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } sj83v1dh4ri3hxk78uq1vqo23rd28hy 519266 519257 2022-07-29T18:44:16Z JohanahoJ 37147 Replaced content with "function main() { 'use strict'; } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); }" javascript text/javascript function main() { 'use strict'; } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', main ); } else { main(); } q0qcluf46dcal489h0fxu7iyy70lcqt User:Sunpriat/sandbox 2 121235 519282 518425 2022-07-30T09:58:34Z Sunpriat 6604 wikitext text/x-wiki text [[PageImages]] text "{{{1|}}️}" 3uexcgb0lg33ixh4045az4u1cgge0jv User:Nardog/sandbox4.js 2 121661 519281 514890 2022-07-30T09:28:44Z Nardog 40946 javascript text/javascript // jshint maxerr:999,strict:implied,shadow:outer,undef:true,unused:true /* globals $,mw,OO,ve */ (function ipaInputCore() { if (window.ipaInputDialog) { window.ipaInputDialog.open(); return; } mw.loader.addStyleTag('.ipainput-config{padding:0 1em 1em} .ipainput-input{position:sticky;top:0;left:0;opacity:0.8;font-size:200%;z-index:999} .ipainput-input > input{text-align:center} .ipainput .ipainput-input.oo-ui-indicatorElement > input{padding-right:56px} .ipainput .ipainput-input > .oo-ui-indicator-clear, .ipainput-symbol{cursor:pointer} .ipainput-undo, .ipainput-diaonly{font-size:50%;position:absolute;right:0;margin:0} .ipainput-diaonly{top:150%} .ipainput-status{text-align:center;font-size:120%;padding:1em 0 0.5em} .ipainput-status > a{font-weight:bold} .ipainput .mw-parser-output{margin:auto;width:max-content;max-width:100%;padding:0 0.5em;overflow:auto} .ipainput-symbol:hover{background-color:#fff} .ipainput-symbol:active{background-color:#c8ccd1} .ipainput-symbol:focus{outline:solid 2px #36c} .ipainput-symbol-disabled, .ipainput-symbol-disabled:hover, .ipainput-symbol-disabled:active, .ipainput-symbol-disabled:focus{cursor:auto;background-color:#c8ccd1 !important;outline:0} .ipainput-symbol-disabled, .ipainput-symbol-disabled a{color:#fff}'); let keyToTemplates = { '(Full IPA chart)': ['IPA-all', 'IPA'], 'English': ['IPAc-en'], 'Adyghe': ['IPA-ady'], 'Afrikaans': ['IPA-af'], 'Albanian': ['IPA-sq'], 'Alemannic German': ['IPA-gsw', 'IPA-gct', 'IPA-swg', 'IPA-wae'], 'Amharic': ['IPA-am'], 'Arabic': ['IPA-ar'], 'Armenian': ['IPA-hy'], 'Assamese': ['IPA-as'], 'Astur-Leonese': ['IPA-ast', 'IPA-ext', 'IPA-le', 'IPA-mwl'], 'Australian languages': ['IPA-aus'], 'Azerbaijani': ['IPA-az'], 'Basque': ['IPA-eu'], 'Belarusian': ['IPA-be'], 'Bengali': ['IPA-bn'], 'Berber': ['IPA-ber'], 'Breton': ['IPA-br'], 'Bulgarian': ['IPA-bg'], 'Burmese': ['IPA-my'], 'Cantonese': ['IPA-yue'], 'Catalan': ['IPA-ca', 'IPA-va'], 'Colognian': ['IPA-ksh'], 'Corsican': ['IPA-co'], 'Czech': ['IPA-cs'], 'Danish': ['IPA-da'], 'Dutch': ['IPA-nl'], 'Egyptian Arabic': ['IPA-arz'], 'Emilian-Romagnol': ['IPA-egl', 'IPA-rgn'], 'Esperanto': ['IPA-eo'], 'Estonian': ['IPA-et'], 'Fijian': ['IPA-fj'], 'Finnish': ['IPA-fi'], 'Franco-Provençal': ['IPA-frp'], 'French': ['IPA-fr'], 'Galician': ['IPA-gl'], 'Georgian': ['IPA-ka'], 'Greek': ['IPA-el', 'IPA-grc'], 'Greenlandic': ['IPA-kl'], 'Gujarati': ['IPA-gu'], 'Haitian Creole': ['IPA-ht'], 'Hawaiian': ['IPA-haw'], 'Hebrew': ['IPA-he'], 'Hejazi Arabic': ['IPA-acw'], 'Hindi and Urdu': ['IPA-hns', 'IPA-hi', 'IPA-ur'], 'Hmong': ['IPA-hmn'], 'Hungarian': ['IPA-hu'], 'Icelandic': ['IPA-is'], 'Igbo': ['IPA-ig'], 'Insular Catalan': ['IPA-cadia'], 'Inuktitut': ['IPA-iu'], 'Inupiaq': ['IPA-ik'], 'Irish': ['IPA-ga'], 'Italian': ['IPA-it'], 'Italian dialects': ['IPA-itdia'], 'Japanese': ['IPA-ja'], 'Kazakh': ['IPA-kk'], 'Khmer': ['IPA-km'], 'Korean': ['IPA-ko'], 'Kurdish': ['IPA-ku', 'IPA-kmr', 'IPA-ckb', 'IPA-sdh'], 'Kyrgyz': ['IPA-ky'], 'Lakota': ['IPA-lkt'], 'Lao': ['IPA-lo'], 'Latin': ['IPA-la'], 'Latvian': ['IPA-lv'], 'Lebanese Arabic': ['IPA-apc'], 'Ligurian': ['IPA-lij'], 'Lithuanian': ['IPA-lt'], 'Lombard': ['IPA-lmo'], 'Luxembourgish': ['IPA-lb'], 'Macedonian': ['IPA-mk'], 'Malagasy': ['IPA-mg'], 'Malay': ['IPA-ms', 'IPA-id'], 'Malayalam': ['IPA-ml'], 'Maltese': ['IPA-mt'], 'Mandarin': ['IPA-cmn'], 'Manx': ['IPA-gv'], 'Maithili': ['IPA-mai'], 'Māori': ['IPA-mi'], 'Marathi': ['IPA-mr'], 'Marshallese': ['IPA-mh'], 'Mauritian Creole': ['IPA-mfe'], 'Mayan': ['IPA-myn'], 'Mongolian': ['IPA-mn'], 'Nahuatl': ['IPA-nah'], 'Navajo': ['IPA-nv'], 'Neapolitan': ['IPA-nap'], 'Nepali': ['IPA-ne'], 'Nguni': ['IPA-ss', 'IPA-xh', 'IPA-zu'], 'Northern Thai': ['IPA-nod'], 'Norwegian': ['IPA-no'], 'Occitan': ['IPA-oc'], 'Odia': ['IPA-or'], 'Old English': ['IPA-ang'], 'Persian': ['IPA-fa'], 'Piedmontese': ['IPA-pms'], 'Polish': ['IPA-pl'], 'Portuguese': ['IPA-pt'], 'Punjabi': ['IPA-pa'], 'Quechua': ['IPA-qu'], 'Romanian': ['IPA-ro'], 'Romansh': ['IPA-rm'], 'Russian': ['IPA-ru'], 'Sanskrit': ['IPA-sa'], 'Sardinian': ['IPA-sc'], 'Scottish Gaelic': ['IPA-gd'], 'Serbo-Croatian': ['IPA-sh', 'IPA-hr', 'IPA-sr'], 'Shan and Tai Lue': ['IPA-shn', 'IPA-khb'], 'Sicilian': ['IPA-scn'], 'Slovak': ['IPA-sk'], 'Slovene': ['IPA-sl'], 'Spanish': ['IPA-es'], 'Standard German': ['IPA-de'], 'Swahili': ['IPA-sw'], 'Swedish': ['IPA-sv'], 'Sylheti': ['IPA-syl'], 'Tagalog': ['IPA-tl'], 'Taiwanese Hokkien': ['IPA-taiwan'], 'Tamil': ['IPA-ta'], 'Tatar': ['IPA-tt', 'IPA-crh'], 'Telugu': ['IPA-te'], 'Thai': ['IPA-th', 'IPA-sou'], 'Tibetan': ['IPA-bo'], 'Tigrinya': ['IPA-ti'], 'Tunisian Arabic': ['IPA-aeb'], 'Turkish': ['IPA-tr'], 'Turkmen': ['IPA-tk'], 'Ukrainian': ['IPA-uk'], 'Uzbek': ['IPA-uz'], 'Venetian': ['IPA-vec'], 'Vietnamese': ['IPA-vi'], 'Walloon': ['IPA-wa'], 'Welsh': ['IPA-cy'], 'West Frisian': ['IPA-fy'], 'Wu Chinese': ['IPA-wuu'], 'Yiddish': ['IPA-yi'], 'Yoruba': ['IPA-yo'], 'Zhuang': ['IPA-za'] }; let isLocal = mw.config.get('wgWikiID') === 'enwiki'; mw.loader.using([ isLocal ? 'mediawiki.api' : 'mediawiki.ForeignApi', 'mediawiki.storage', 'jquery.textSelection', 'oojs-ui-windows', 'oojs-ui-widgets', 'oojs-ui.styles.icons-interactions', 'oojs-ui.styles.icons-editing-core', 'oojs-ui.styles.icons-editing-advanced' ], () => { function IpaInputDialog(config) { IpaInputDialog.parent.call(this, config); this.$element.addClass('ipainput'); } OO.inheritClass(IpaInputDialog, OO.ui.ProcessDialog); IpaInputDialog.static.name = 'ipaInputDialog'; IpaInputDialog.static.title = 'IPAInput'; IpaInputDialog.static.actions = [ { modes: 'config', flags: ['safe', 'close'] }, { action: 'transcribe', label: 'Transcribe', modes: 'config', flags: ['primary', 'progressive'] }, { action: 'goBack', modes: 'transcription', flags: ['safe', 'back'] }, { action: 'insert', label: 'Insert', modes: 'transcription', disabled: true, flags: ['primary', 'progressive'] } ]; IpaInputDialog.prototype.initialize = function () { IpaInputDialog.parent.prototype.initialize.apply(this, arguments); this.setTemplateOptions = (value, update) => { let options = []; if (keyToTemplates.hasOwnProperty(value)) { options.push( ...keyToTemplates[value].map(t => ({ data: t })) ); if (update && this.templateInput.getMenu() .findItemFromData(this.templateInput.getValue()) ) { this.templateInput.setValue(options[0].data); } } options.push({ label: '(None)', data: '' }); this.templateInput.setOptions(options); return options[0].data; }; this.keyDropdown = new OO.ui.DropdownWidget({ $overlay: this.$overlay, menu: { items: Object.keys(keyToTemplates) .map(k => new OO.ui.MenuOptionWidget({ label: k })) } }); this.keyDropdown.getMenu().on('select', item => { this.setTemplateOptions(item.getLabel(), true); }); this.templateInput = new OO.ui.ComboBoxInputWidget({ $overlay: this.$overlay }); this.rememberCheckbox = new OO.ui.CheckboxInputWidget(); this.form = new OO.ui.FormLayout({ items: [ new OO.ui.FieldLayout(this.keyDropdown, { label: 'Key:', align: 'top' }), new OO.ui.FieldLayout(this.templateInput, { label: 'Template:', align: 'top' }), new OO.ui.FieldLayout(this.rememberCheckbox, { label: 'Remember these for next time', align: 'inline' }) ], content: [ $('<input>').attr({ type: 'submit', hidden: '' }) ], classes: ['ipainput-config'] }).on('submit', () => { this.executeAction('transcribe'); }); this.$body.append(this.form.$element); this.keyHandler = e => { if (e.shiftKey || e.altKey) return; if ([e.ctrlKey, e.metaKey].filter(Boolean).length === 1 && e.which === 90 ) { this.undoButton.emit('click'); e.preventDefault(); } }; this.finishTranscription = () => { $(document).on('keydown.ipaInput', this.keyHandler); this.actions.get()[3].setDisabled(false); this.setSize('larger'); this.input.toggle(true).focus(); }; this.input = new OO.ui.TextInputWidget({ spellcheck: false, classes: ['ipainput-input', 'IPA'] }).on('change', value => { this.input.setIndicator(value ? 'clear' : null); }).on('enter', () => { this.executeAction('insert'); }); this.input.$input.on('keydown', e => { if (e.which !== 27 || !this.input.getValue()) return; e.stopPropagation(); this.input.setValue(''); }); this.input.$indicator.on('click', () => { this.input.setValue('').focus(); }); this.$status = $('<div>').addClass('ipainput-status'); this.$parserOutput = $('<div>').attr({ class: 'mw-parser-output mw-body-content', lang: 'en', tabindex: -1 }).on('click', '.ipainput-symbol:not(.ipainput-symbol-disabled)', e => { let $target = $(e.currentTarget).clone().find('.IPA'); if (!$target.length) $target = $target.end(); $target.find('.reference').remove(); let ins = $target.text().trim() .replace(/◌|^[\(\/\[]+\s*(?=\S)|(\S)\s*[\)\/\]]+$/g, '$1'); if (e.currentTarget.classList.contains('ipainput-symbol-dia') && this.diaOnlyButton.getValue() ) { let match = ins.normalize('NFD').match(/[^̧\P{Mn}]+/u); if (match) ins = match[0]; } let start = this.input.$input.prop('selectionStart'); let end = this.input.$input.prop('selectionEnd'); let text = this.input.getValue(); let pos = start + ins.length; let newText = text.slice(0, start) + ins + text.slice(end); this.input.setValue(newText).selectRange(pos).focus(); if (this.undoCache.length ? text !== this.undoCache[this.undoCache.length - 1][0] : text ) { this.undoCache.push([text, end]); } this.undoCache.push([newText, pos]); this.undoCache = this.undoCache.slice(-500); return false; }).on('keydown', '.ipainput-symbol', function (e) { if (e.ctrlKey || e.shiftKey || e.metaKey || e.altKey) return; if (e.which === 13 || e.which === 32) { e.preventDefault(); this.click(); this.focus(); } }).on('click', 'a', e => { if (e.ctrlKey || e.shiftKey || e.metaKey || e.altKey) return; e.preventDefault(); }); this.undoButton = new OO.ui.ButtonWidget({ icon: 'undo', title: 'Undo', classes: ['ipainput-undo'] }).on('click', () => { let arr = this.undoCache.pop(); if (!arr) { this.input.setValue('').focus(); return; } if (this.undoCache.length && this.input.getValue() === arr[0]) { arr = this.undoCache.pop(); } this.input.setValue(arr[0]).selectRange(arr[1]).focus(); }); this.diaOnlyButton = new OO.ui.ToggleButtonWidget({ icon: 'searchDiacritics', title: 'Insert diacrtics only', classes: ['ipainput-diaonly'] }).on('change', enabled => { this.$parserOutput.find('.ipainput-symbol:not(.ipainput-symbol-dia)') .attr({ tabindex: enabled ? -1 : 0, 'aria-disabled': enabled ? 'true' : null }) .toggleClass('ipainput-symbol-disabled', enabled); }); this.input.$element.append( this.undoButton.$element, this.diaOnlyButton.$element ); this.$transcription = this.input.$element .add(this.$status).add(this.$parserOutput); }; IpaInputDialog.prototype.getSetupProcess = function (data) { return IpaInputDialog.super.prototype.getSetupProcess.call(this, data) .next(function () { this.actions.setMode('config'); this.keyName = mw.storage.get('IpaInput-keyName') || 'English'; this.keyDropdown.getMenu().selectItemByLabel(this.keyName); this.template = mw.storage.get('IpaInput-template'); let defTemplate = this.setTemplateOptions(this.keyName); this.templateInput.setValue( this.template === null ? defTemplate : this.template ); }, this); }; IpaInputDialog.prototype.getKey = function () { let isGeneric = this.keyName === '(Full IPA chart)'; let pageName = isGeneric ? 'International Phonetic Alphabet chart' : 'Help:IPA/' + this.keyName; let pageUrl = mw.util.getUrl(pageName); if (!isLocal) pageUrl = '//en.wikipedia.org' + pageUrl; this.pushPending(); this.$status.empty().append( 'Loading ', $('<a>').attr({ href: pageUrl, target: '_blank' }).text(pageName), '...' ); let api = isLocal ? new mw.Api() : new mw.ForeignApi('//en.wikipedia.org/w/api.php'); api.get({ action: 'parse', page: pageName, prop: 'text', redirects: 1, wrapoutputclass: '', disablelimitreport: 1, disableeditsection: 1, disablestylededuplication: 1, disabletoc: 1, formatversion: 2 }).always((response, errorObj) => { this.popPending(); let text = ((response || {}).parse || {}).text; let errorMsg = ((errorObj || {}).error || {}).info; if (!text || typeof response === 'string' || errorMsg) { this.$status.text(errorMsg ? 'Error: ' + errorMsg : 'Unknown error'); return; } this.curKeyName = this.keyName; let $tables = $($.parseHTML(text)); if (isGeneric) { $tables = $tables.find('#Vowels.mw-headline').parent() .nextUntil($tables.find('#See_also').parent()) .addBack(); } else { $tables = $tables.filter(function () { return this.nodeType === 1 && ( this.classList.contains('wikitable') || this.querySelector('.wikitable') ); }); if ($tables.length > 1) { $tables = $tables.first().nextUntil($tables.last()) .addBack().add($tables.last()); } } $tables.find('.IPA').filter(function () { return /[\s,~]/.test(this.textContent.trim()) || this.querySelector('br'); }).find('*').addBack().contents().filter(function () { return this.nodeType === 3; }).replaceWith(function () { return this.textContent.split(/([\s,~]+)/).reduce((acc, s, i) => { if (s) { acc.push(i % 2 ? s : $('<span>').attr({ class: 'ipainput-symbol', tabindex: 0, role: 'button' }).text(s)); } return acc; }, []); }); $tables.find('td, th').filter(function () { if (this.querySelector('.ipainput-symbol, .IPA-vowels-container')) return; return this.classList.contains('IPA') || this.querySelector('.IPA') && !this.querySelector('br, p') && !$(this).find(':not(.IPA, .IPA *, .reference, .reference *)').addBack().contents().get() .some(n => n.nodeType === 3 && /\S/.test(n.textContent)); }).addClass('ipainput-symbol').attr({ tabindex: 0, role: 'button' }); let $spans = $tables.find('.IPA:not(.ipainput-symbol, .ipainput-symbol .IPA)').filter(function () { return !this.querySelector('.ipainput-symbol'); }); let consec = []; $spans.filter(function (i) { if ($spans[i + 1] === this.nextSibling) { consec.push(this); } else if (consec.length) { consec.push(this); $(consec).wrapAll('<span>').parent() .addClass('ipainput-symbol').attr({ tabindex: 0, role: 'button' }); consec.length = 0; } else { return true; } }).addClass('ipainput-symbol').attr({ tabindex: 0, role: 'button' }); $tables.find('a').attr('tabindex', -1); $tables.find('a[href^="#"]').attr('href', function () { return pageUrl + this.hash; }); if (!isLocal) { $tables.find('a[href]').prop('host', 'en.wikipedia.org'); } let hasDia = $tables.find('.ipainput-symbol').filter(function () { return /[^̧\P{Mn}]/u.test(this.textContent.normalize('NFD')); }).addClass('ipainput-symbol-dia').length && true; this.diaOnlyButton.setValue().toggle(hasDia); this.$status.html(this.$status.children()); this.$parserOutput.append($tables); this.finishTranscription(); }); }; IpaInputDialog.prototype.getActionProcess = function (action) { if (action === 'transcribe') { this.template = this.templateInput.getValue(); this.keyName = this.keyDropdown.getMenu().findSelectedItem().getLabel(); if (this.rememberCheckbox.isSelected()) { if (this.keyName === 'English' && this.template === keyToTemplates[this.keyName][0] ) { mw.storage.remove('IpaInput-keyName'); mw.storage.remove('IpaInput-template'); } else { mw.storage.set('IpaInput-keyName', this.keyName); mw.storage.set('IpaInput-template', this.template); } } this.actions.setMode('transcription'); this.form.toggle(false).$element.after(this.$transcription); if (this.keyName === this.curKeyName) { this.finishTranscription(); } else { this.actions.get()[3].setDisabled(true); this.input.toggle(false).setValue(''); this.undoCache = []; this.$parserOutput.empty(); this.getKey(); } } else { $(document).off('keydown.ipaInput'); this.actions.setMode('config'); this.$transcription.detach(); this.form.toggle(true); this.setSize('medium'); if (action === 'insert') { let text = this.input.getValue().trim(); if (this.keyName === 'English') { text = text .replace(/\s+/g, '_') .replace(/a[ɪʊ]ər|ɔɪər|[ɛɪʊ]ə[ˈˌ]r|\.\.\.|[ɑɔɜ]ːr|[ɛɪʊ]ər|!!|,_|a[ɪʊ]|[dlnstzθ]j(?=u|ʊə)|dʒ|eɪ|hw|[iuɑɔɜ]ː|oʊ|tʃ|[æɒɛɪʊʌ]r|[æɒ]̃|ɔɪ|(?:(?<=[bdfkprstvxzðɡʃʒʔθ]\.?)ə[ln]|(?<=[fsvzðʃʒθ]\.?)əm|ər)(?![aeæɑɒɔɛɜʊʌˈˌ]|[iu]ː|ɪə)|[!#\(\)\-\._bdfhijklmnprstuvwxzæðŋɒəɛɡɪʃʊʌʒʔˈˌθ]/g, '$&|') .replace(/\|$/, ''); } if (document.documentElement.classList.contains('ve-active')) { if (this.template) { text = [{ type: 'mwTransclusionInline', attributes: { mw: { parts: [{ template: { target: { wt: this.template }, params: text.split('|').reduce((acc, s, i) => { acc[i + 1] = { wt: s }; return acc; }, {}) } }] } } }]; } ve.init.target.getSurface().getModel().getFragment().collapseToEnd() .insertContent(text).collapseToEnd().select(); } else { if (this.template) text = `{{${this.template}|${text}}}`; $('#wpTextbox1').textSelection('encapsulateSelection', { peri: text, replace: true }); } this.input.setValue(''); this.undoCache = []; this.close(); } } return IpaInputDialog.super.prototype.getActionProcess.call(this, action); }; let winMan = new OO.ui.WindowManager(); winMan.$element.appendTo(document.body); window.ipaInputDialog = new IpaInputDialog(); winMan.addWindows([window.ipaInputDialog]); window.ipaInputDialog.open(); }); })(); lo9v942t3s0qj3tq9c1rqmm7dndnnx5 Mwbot-rs/Save 0 122864 519261 519196 2022-07-29T18:12:44Z Mwbot-rs test 52001 Test suite edit wikitext text/x-wiki It has been 1659118363 seconds since the epoch. ousx36hi2678mb527dicwbpt0a1vo5w 519262 519261 2022-07-29T18:14:13Z Mwbot-rs test 52001 Test suite edit wikitext text/x-wiki It has been 1659118453 seconds since the epoch. hzcj9k0fy7c9uvc51ur1ykkrnf88xcq 519263 519262 2022-07-29T18:14:33Z Mwbot-rs test 52001 Test suite edit wikitext text/x-wiki It has been 1659118473 seconds since the epoch. lqn996j2p0lbjxhhlpysejqpb1bigps 519264 519263 2022-07-29T18:16:16Z Mwbot-rs test 52001 Test suite edit wikitext text/x-wiki It has been 1659118575 seconds since the epoch. g04bgbgnqz9xgbqwz3h44mfk20m9go6 User:SongVĩ.Bot II 2 124239 519260 519192 2022-07-29T17:00:10Z SongVĩ.Bot II 52414 [[User:SongVĩ.Bot II|Task 0]]: Đã 214 ngày... wikitext text/x-wiki Cập nhật lần cuối: 29-07-2022 Đã 214 ngày... smxnamoj39tqwax3bvzjsm13tnt9fnx User:Ankit18gupta/Editwizard.js 2 126974 519239 518547 2022-07-29T14:23:07Z Ankit18gupta 52763 javascript text/javascript // <nowiki> $(document).ready(function () { //CSS loader mw.loader.addStyleTag( '.heading { font-size: 18px; text-align: center; margin: 5px; width:100% }'); mw.loader.addStyleTag( '.help { font: 13px cursive; font-style: italic }'); mw.loader.addStyleTag( '.status { font: 13px sans-serif; margin: 5px; width: 70%; font-style: italic; width: 100% }'); mw.loader.addStyleTag( '.messageStatus { font: 12px sans-serif; margin-left: 1rem; margin: 5px; width: 70%; font-style: italic; width: 100% }'); mw.loader.addStyleTag( '.button { display: inline-block; text-align: center; margin-top: 10px; margin-bottom: 10px }' ); mw.loader.addStyleTag( '.container { width: 415px; height:200px }'); mw.loader.addStyleTag( '.status:empty { display: none }'); // It is important to make sure that OOUI is loaded before we can make use of it. mw.loader.using("oojs-ui", "mediawiki.api").done(function () { var linkfieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT REQUEST WIZARD", }), linkheading = new OO.ui.LabelWidget({ label: "Give a source for your fact", classes: ["label"], }), linkhelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $( "<p>This is the link of the source of your quote.\u200e</p>" ), padded: true, align: "center", width: "300px", autoFlip: true, }, }), linkinput = new OO.ui.TextInputWidget({ placeholder: "Enter the URL", classes: ["box"], }), linkstatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), linkverifybutton = new OO.ui.ButtonWidget({ label: "Verify", classes: ["button"], flags: ["primary", "progressive"], }), linkbutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), linkpanel = new OO.ui.PanelLayout({ content: [ linkfieldset, linkheading, linkhelp, linkinput, linkstatus, linkverifybutton, linkbutton, ], padded: true, }), selectfieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), selectfieldsetcontent = new OO.ui.FieldsetLayout({ label: "Select the sentence in the article that your text should go after and click Next", classes: ["label"], }), selectstatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), selectbutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), selectbackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), selectpanel = new OO.ui.PanelLayout({ content: [ selectfieldset, selectfieldsetcontent, selectstatus, selectbackbutton, selectbutton, ], padded: true, }), quotefieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), quoteheading = new OO.ui.LabelWidget({ label: "Quote from your source that supports your fact", classes: ["label"], }), quotehelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $( "<p>Type the quote text from the above-mentioned source you want to edit.\u200e</p>" ), padded: true, align: "backwards", autoFlip: true, }, }), quoteinput = new OO.ui.MultilineTextInputWidget({ autosize: false, classes: ["box"], rows: 3, placeholder: "Enter the Quote from the source", }), quotestatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), quotebutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), quotebackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), quotepanel = new OO.ui.PanelLayout({ content: [ quotefieldset, quoteheading, quotehelp, quoteinput, quotestatus, quotebackbutton, quotebutton, ], padded: true, }), requotefieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), requoteheading = new OO.ui.LabelWidget({ label: "Rewrite the quote in your own words", classes: ["label"], }), requotehelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $("<p>Rephrase the quote in your own words.\u200e</p>"), padded: true, width: "280px", align: "center", autoFlip: true, }, }), requoteinput = new OO.ui.MultilineTextInputWidget({ autosize: false, classes: ["box"], rows: 3, placeholder: "Enter the rephrased Quote", }), requotestatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), requotebutton = new OO.ui.ButtonWidget({ label: "Publish", classes: ["button"], flags: ["primary", "progressive"], }), requotebackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), requotepanel = new OO.ui.PanelLayout({ content: [ requotefieldset, requoteheading, requotehelp, requoteinput, requotestatus, requotebackbutton, requotebutton, ], padded: true, }); var stack = new OO.ui.StackLayout({ classes: ["container"], items: [linkpanel, selectpanel, quotepanel, requotepanel], }); //all the functional buttons linkverifybutton.on('click', handlelinkVerify); linkbutton.on('click', handlelinkNext); quotebutton.on('click', handlequoteNext); selectbutton.on('click', handleselectNext); quotebackbutton.on('click', handlequoteBack); requotebackbutton.on('click', handlerequoteBack); selectbackbutton.on('click', handleselectBack); requotebutton.on('click', handlePublish); selectbutton.on('click', getSelectionText); let check = 0; async function handlelinkVerify(){ const linkValue = linkinput.getValue(); linkstatus.setType("none"); linkstatus.setIcon("null"); linkstatus.setLabel("Loading..."); if (linkValue === "") { linkstatus.setType("warning"); linkstatus.setLabel("The input cannot be left empty"); } //Making an API call to the backend to verify if the quote comes from the source const host = window.ERW_DEV_MODE ? 'https://edit-wizard.toolforge.org' : 'http://localhost:3000'; const response = await fetch(`http://localhost:3000/api/v1/verifySource`, { method: "POST", body: JSON.stringify({ linkValue}), headers: { 'Content-Type': 'application/json'}, }) const { comment, flag, kind } = await response.json() if(flag==2){ check = 3; linkstatus.setType("error"); linkstatus.setLabel("This is not a valid URL"); } if (flag==1) { check = 1; linkstatus.setType("warning"); linkstatus.setLabel(comment); } if (kind == "blacklisted" || kind == "unreliable") { check = 2; linkstatus.setType("error"); linkstatus.setLabel(comment); } if (flag==0 && check!=3){ check = 1; linkstatus.setType("success"); linkstatus.setLabel("Source probably OK"); } } let linkurl, website, selected=0; async function handlelinkNext(){ const linkValue = linkinput.getValue(); const query= encodeURIComponent(linkValue); //API call to make a request from Citoid if (linkValue!= "") { fetch(`https://en.wikipedia.org/api/rest_v1/data/citation/mediawiki/${query}`, { headers: { 'Content-Type': 'application/json', 'Api-User-Agent': 'w:en:User:Ankit18gupta/MyScript.js' } }) .then(response => response.json()) .then(citationArray => { linkurl = citationArray[0].url; website = citationArray[0].title; }) .catch((error) => { console.log("Error: ",error); }); } // If the linkValue is empty, prompt a warning if (linkValue === "") { linkstatus.setType("warning"); linkstatus.setLabel("The input cannot be left empty"); } else if(check == 0){ linkstatus.setType("warning"); linkstatus.setLabel("Please verify the quote first"); } else if(check == 2){ linkstatus.setType("error"); linkstatus.setLabel("This is a unreliable source, we cannot proceed"); } else if(check == 3){ linkstatus.setType("error"); linkstatus.setLabel("This is not a valid URL, we cannot proceed"); } else if(check == 1){ stack.setItem( selectpanel ); $("#edit-wizard-link span").html("Done selecting"); $( 'body' ).css( 'background-color', '#b8b9ba' ); $( '#mw-head' ).css( 'background-color', '#b8b9ba' ); selected = 1; } } function doneSelecting(){ // if(selected){ // popUp.toggle(false); // } if(selected){ selectValue = getSelectionText(); selectionSection = getSelectionSection(); // If the selectValue is empty, prompt a warning if (selectValue === "") { selectstatus.setType("warning"); selectstatus.setLabel("Please select the text before continuing"); } else{ stack.setItem( quotepanel ); $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); selected = 0; } } } // Function to get the Selected Text function getSelectionText() { var text = ""; if (window.getSelection) { text = window.getSelection().toString(); } else if (document.selection && document.selection.type !== "Control") { text = document.selection.createRange().text; } return text; } // Funtion to get the target Section function getSelectionSection(){ var e = window.getSelection().anchorNode.parentElement.closest('p'); var found_it = false; while (e.tagName.toLowerCase() !== 'body') { if (e.tagName.toLowerCase() === 'h2') { found_it = true; break; } if (e.previousElementSibling) { e = e.previousElementSibling; } else { e = e.parentNode; } } return e.firstChild.textContent; } let selectValue, selectionSection; function handleselectNext(){ selectValue = getSelectionText(); // If the selectValue is empty, prompt a warning if (selectValue === "") { selectstatus.setType("warning"); selectstatus.setLabel("Please select the text before continuing"); } else{ selectionSection = getSelectionSection(); stack.setItem( quotepanel ); selected = 0; $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); } } async function handlequoteNext(){ const quoteValue = quoteinput.getValue(); const linkValue = linkinput.getValue(); quotestatus.setType("none"); quotestatus.setIcon("null"); quotestatus.setLabel("Loading..."); //Making an API call to the backend to verify if the quote comes from the source const host = window.ERW_DEV_MODE ? 'https://edit-wizard.toolforge.org' : 'http://localhost:3000'; const response = await fetch(`http://localhost:3000/api/v1/verifyQuote`, { method: "POST", body: JSON.stringify({ linkValue, quoteValue }), headers: { 'Content-Type': 'application/json' }, }) const { isParagraphTextOnPage } = await response.json() if (quoteValue === "") { quotestatus.setType("warning"); quotestatus.setLabel("The input cannot be left empty"); } else if(!isParagraphTextOnPage) { quotestatus.setType("error"); quotestatus.setLabel("The quote does not match"); } else if (isParagraphTextOnPage) { quotestatus.setType("success"); quotestatus.setLabel("Verified!"); stack.setItem( requotepanel ); } } function handleselectBack(){ stack.setItem( linkpanel ); $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); } function handlequoteBack(){ stack.setItem( selectpanel ); selected = 1; $("#edit-wizard-link span").html("Done selecting"); $( 'body' ).css( 'background-color', '#b8b9ba' ); $( '#mw-head' ).css( 'background-color', '#b8b9ba' ); } function handlerequoteBack(){ stack.setItem( quotepanel ); selected = 0; } // Function to send request to the edit page function editPage( info ) { var api = new mw.Api(); api.postWithToken("csrf", { action: 'edit', title: info.title, appendtext: info.text, summary: info.summary } ).then(function( data ) { OO.ui.alert( 'Edit Request sent to talk page..!' ); } ).catch( function(code, data) { console.log( api.getErrorMessage( data ).text()); } ); } function handlePublish(){ const linkValue = linkinput.getValue(); const quoteValue = quoteinput.getValue(); const requoteValue = requoteinput.getValue(); const firstthree = quoteValue.split(' ').slice(0,3).join(' '); const array = quoteValue.split(' '); const len = array.length - 3; const lastthree = quoteValue.split(' ').slice(len).join(' '); if (requoteValue === "") { requotestatus.$element.show(); requotestatus.setType("warning"); requotestatus.setLabel("The input cannot be left empty"); } else{ requotestatus.$element.hide(); // API calls code goes here editPage({ title: (new mw.Title(mw.config.get("wgPageName"))).getTalkPage().toText(), text: '\n== Edit Request made by {{subst:REVISIONUSER}} ~~~~~ == \n' + '<br><b>Citation:</b> ' + `[${linkValue} ${website}]` + '<br><b>Section to Edit:</b> ' + selectionSection + '<br><b>Spot where to add the fact:</b> ' + selectValue + '<br><b>Quote:</b> ' + 'Quote starts here - ' + firstthree + '... ' + lastthree + '<br><b>Rephrased Quote:</b> ' + requoteValue + '<br> ~~~~', summary: 'Edit Request to add a fact' }); } } var node = mw.util.addPortletLink( 'p-views', "#", 'Edit Wizard', 'edit-wizard-link', 'Edit Wizard', "", "#ca-history", ); // A popup widget is instantiated var popUp = new OO.ui.PopupWidget({ align: "forwards", $floatableContainer: $(node), $content: stack.$element, padded: true, popup: false, width: 440, height: 260, head: true, // autoClose: false, hideCloseButton: false, }); //If we are done selecting the text it automatically moves to the next panel // $(node).on('click', doneSelecting); $(node).on('click', function(e){ popUp.toggle(); e.preventDefault(); }) $(document.body).append(popUp.$element); }); }); // </nowiki> 48y1t3nsgwx6yguxutzyk52fwe3fzka 519268 519239 2022-07-29T19:18:30Z Ankit18gupta 52763 javascript text/javascript // <nowiki> $(document).ready(function () { //CSS loader mw.loader.addStyleTag( '.heading { font-size: 18px; text-align: center; margin: 5px; width:100% }'); mw.loader.addStyleTag( '.help { font: 13px cursive; font-style: italic }'); mw.loader.addStyleTag( '.status { font: 13px sans-serif; margin: 5px; width: 70%; font-style: italic; width: 100% }'); mw.loader.addStyleTag( '.messageStatus { font: 12px sans-serif; margin-left: 1rem; margin: 5px; width: 70%; font-style: italic; width: 100% }'); mw.loader.addStyleTag( '.button { display: inline-block; text-align: center; margin-top: 10px; margin-bottom: 10px }' ); mw.loader.addStyleTag( '.container { width: 415px; height:200px }'); mw.loader.addStyleTag( '.status:empty { display: none }'); // It is important to make sure that OOUI is loaded before we can make use of it. mw.loader.using("oojs-ui", "mediawiki.api").done(function () { var linkfieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT REQUEST WIZARD", }), linkheading = new OO.ui.LabelWidget({ label: "Give a source for your fact", classes: ["label"], }), linkhelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $( "<p>This is the link of the source of your quote.\u200e</p>" ), padded: true, align: "center", width: "300px", autoFlip: true, }, }), linkinput = new OO.ui.TextInputWidget({ placeholder: "Enter the URL", classes: ["box"], }), linkstatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), linkverifybutton = new OO.ui.ButtonWidget({ label: "Verify", classes: ["button"], flags: ["primary", "progressive"], }), linkbutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), linkpanel = new OO.ui.PanelLayout({ content: [ linkfieldset, linkheading, linkhelp, linkinput, linkstatus, linkverifybutton, linkbutton, ], padded: true, }), selectfieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), selectfieldsetcontent = new OO.ui.FieldsetLayout({ label: "Select the sentence in the article that your text should go after and click Next", classes: ["label"], }), selectstatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), selectbutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), selectbackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), selectpanel = new OO.ui.PanelLayout({ content: [ selectfieldset, selectfieldsetcontent, selectstatus, selectbackbutton, selectbutton, ], padded: true, }), quotefieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), quoteheading = new OO.ui.LabelWidget({ label: "Quote from your source that supports your fact", classes: ["label"], }), quotehelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $( "<p>Type the quote text from the above-mentioned source you want to edit.\u200e</p>" ), padded: true, align: "backwards", autoFlip: true, }, }), quoteinput = new OO.ui.MultilineTextInputWidget({ autosize: false, classes: ["box"], rows: 3, placeholder: "Enter the Quote from the source", }), quotestatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), quotebutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), quotebackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), quotepanel = new OO.ui.PanelLayout({ content: [ quotefieldset, quoteheading, quotehelp, quoteinput, quotestatus, quotebackbutton, quotebutton, ], padded: true, }), requotefieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), requoteheading = new OO.ui.LabelWidget({ label: "Rewrite the quote in your own words", classes: ["label"], }), requotehelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $("<p>Rephrase the quote in your own words.\u200e</p>"), padded: true, width: "280px", align: "center", autoFlip: true, }, }), requoteinput = new OO.ui.MultilineTextInputWidget({ autosize: false, classes: ["box"], rows: 3, placeholder: "Enter the rephrased Quote", }), requotestatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), requotebutton = new OO.ui.ButtonWidget({ label: "Publish", classes: ["button"], flags: ["primary", "progressive"], }), requotebackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), requotepanel = new OO.ui.PanelLayout({ content: [ requotefieldset, requoteheading, requotehelp, requoteinput, requotestatus, requotebackbutton, requotebutton, ], padded: true, }); var stack = new OO.ui.StackLayout({ classes: ["container"], items: [linkpanel, selectpanel, quotepanel, requotepanel], }); //all the functional buttons linkverifybutton.on('click', handlelinkVerify); linkbutton.on('click', handlelinkNext); quotebutton.on('click', handlequoteNext); selectbutton.on('click', handleselectNext); quotebackbutton.on('click', handlequoteBack); requotebackbutton.on('click', handlerequoteBack); selectbackbutton.on('click', handleselectBack); requotebutton.on('click', handlePublish); selectbutton.on('click', getSelectionText); let check = 0; async function handlelinkVerify(){ const linkValue = linkinput.getValue(); linkstatus.setType("none"); linkstatus.setIcon("null"); linkstatus.setLabel("Loading..."); if (linkValue === "") { linkstatus.setType("warning"); linkstatus.setLabel("The input cannot be left empty"); } //Making an API call to the backend to verify if the quote comes from the source const host = window.ERW_DEV_MODE ? 'https://edit-wizard.toolforge.org' : 'http://localhost:3000'; const response = await fetch(`https://edit-wizard.toolforge.org/api/v1/verifySource`, { method: "POST", body: JSON.stringify({ linkValue}), headers: { 'Content-Type': 'application/json'}, }) const { comment, flag, kind } = await response.json() if(flag==2){ check = 3; linkstatus.setType("error"); linkstatus.setLabel("This is not a valid URL"); } if (flag==1) { check = 1; linkstatus.setType("warning"); linkstatus.setLabel(comment); } if (kind == "blacklisted" || kind == "unreliable") { check = 2; linkstatus.setType("error"); linkstatus.setLabel(comment); } if (flag==0 && check!=3){ check = 1; linkstatus.setType("success"); linkstatus.setLabel("Source probably OK"); } } let linkurl, website, selected=0; async function handlelinkNext(){ const linkValue = linkinput.getValue(); const query= encodeURIComponent(linkValue); //API call to make a request from Citoid if (linkValue!= "") { fetch(`https://en.wikipedia.org/api/rest_v1/data/citation/mediawiki/${query}`, { headers: { 'Content-Type': 'application/json', 'Api-User-Agent': 'w:en:User:Ankit18gupta/MyScript.js' } }) .then(response => response.json()) .then(citationArray => { linkurl = citationArray[0].url; website = citationArray[0].title; }) .catch((error) => { console.log("Error: ",error); }); } // If the linkValue is empty, prompt a warning if (linkValue === "") { linkstatus.setType("warning"); linkstatus.setLabel("The input cannot be left empty"); } else if(check == 0){ linkstatus.setType("warning"); linkstatus.setLabel("Please verify the quote first"); } else if(check == 2){ linkstatus.setType("error"); linkstatus.setLabel("This is a unreliable source, we cannot proceed"); } else if(check == 3){ linkstatus.setType("error"); linkstatus.setLabel("This is not a valid URL, we cannot proceed"); } else if(check == 1){ stack.setItem( selectpanel ); $("#edit-wizard-link span").html("Done selecting"); $( 'body' ).css( 'background-color', '#b8b9ba' ); $( '#mw-head' ).css( 'background-color', '#b8b9ba' ); selected = 1; } } function doneSelecting(){ // if(selected){ // popUp.toggle(false); // } if(selected){ selectValue = getSelectionText(); selectionSection = getSelectionSection(); // If the selectValue is empty, prompt a warning if (selectValue === "") { selectstatus.setType("warning"); selectstatus.setLabel("Please select the text before continuing"); } else{ stack.setItem( quotepanel ); $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); selected = 0; } } } // Function to get the Selected Text function getSelectionText() { var text = ""; if (window.getSelection) { text = window.getSelection().toString(); } else if (document.selection && document.selection.type !== "Control") { text = document.selection.createRange().text; } return text; } // Funtion to get the target Section function getSelectionSection(){ var e = window.getSelection().anchorNode.parentElement.closest('p'); var found_it = false; while (e.tagName.toLowerCase() !== 'body') { if (e.tagName.toLowerCase() === 'h2') { found_it = true; break; } if (e.previousElementSibling) { e = e.previousElementSibling; } else { e = e.parentNode; } } return e.firstChild.textContent; } let selectValue, selectionSection; function handleselectNext(){ selectValue = getSelectionText(); // If the selectValue is empty, prompt a warning if (selectValue === "") { selectstatus.setType("warning"); selectstatus.setLabel("Please select the text before continuing"); } else{ selectionSection = getSelectionSection(); stack.setItem( quotepanel ); selected = 0; $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); } } async function handlequoteNext(){ const quoteValue = quoteinput.getValue(); const linkValue = linkinput.getValue(); quotestatus.setType("none"); quotestatus.setIcon("null"); quotestatus.setLabel("Loading..."); //Making an API call to the backend to verify if the quote comes from the source const host = window.ERW_DEV_MODE ? 'https://edit-wizard.toolforge.org' : 'http://localhost:3000'; const response = await fetch(`https://edit-wizard.toolforge.org/api/v1/verifyQuote`, { method: "POST", body: JSON.stringify({ linkValue, quoteValue }), headers: { 'Content-Type': 'application/json' }, }) const { isParagraphTextOnPage } = await response.json() if (quoteValue === "") { quotestatus.setType("warning"); quotestatus.setLabel("The input cannot be left empty"); } else if(!isParagraphTextOnPage) { quotestatus.setType("error"); quotestatus.setLabel("The quote does not match"); } else if (isParagraphTextOnPage) { quotestatus.setType("success"); quotestatus.setLabel("Verified!"); stack.setItem( requotepanel ); } } function handleselectBack(){ stack.setItem( linkpanel ); $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); } function handlequoteBack(){ stack.setItem( selectpanel ); selected = 1; $("#edit-wizard-link span").html("Done selecting"); $( 'body' ).css( 'background-color', '#b8b9ba' ); $( '#mw-head' ).css( 'background-color', '#b8b9ba' ); } function handlerequoteBack(){ stack.setItem( quotepanel ); selected = 0; } // Function to send request to the edit page function editPage( info ) { var api = new mw.Api(); api.postWithToken("csrf", { action: 'edit', title: info.title, appendtext: info.text, summary: info.summary } ).then(function( data ) { OO.ui.alert( 'Edit Request sent to talk page..!' ); } ).catch( function(code, data) { console.log( api.getErrorMessage( data ).text()); } ); } function handlePublish(){ const linkValue = linkinput.getValue(); const quoteValue = quoteinput.getValue(); const requoteValue = requoteinput.getValue(); const firstthree = quoteValue.split(' ').slice(0,3).join(' '); const array = quoteValue.split(' '); const len = array.length - 3; const lastthree = quoteValue.split(' ').slice(len).join(' '); if (requoteValue === "") { requotestatus.$element.show(); requotestatus.setType("warning"); requotestatus.setLabel("The input cannot be left empty"); } else{ requotestatus.$element.hide(); // API calls code goes here editPage({ title: (new mw.Title(mw.config.get("wgPageName"))).getTalkPage().toText(), text: '\n== Edit Request made by {{subst:REVISIONUSER}} ~~~~~ == \n' + '<br><b>Citation:</b> ' + `[${linkValue} ${website}]` + '<br><b>Section to Edit:</b> ' + selectionSection + '<br><b>Spot where to add the fact:</b> ' + selectValue + '<br><b>Quote:</b> ' + 'Quote starts here - ' + firstthree + '... ' + lastthree + '<br><b>Rephrased Quote:</b> ' + requoteValue + '<br> ~~~~', summary: 'Edit Request to add a fact' }); } } var node = mw.util.addPortletLink( 'p-views', "#", 'Edit Wizard', 'edit-wizard-link', 'Edit Wizard', "", "#ca-history", ); // A popup widget is instantiated var popUp = new OO.ui.PopupWidget({ align: "forwards", $floatableContainer: $(node), $content: stack.$element, padded: true, popup: false, width: 440, height: 260, head: true, // autoClose: false, hideCloseButton: false, }); //If we are done selecting the text it automatically moves to the next panel // $(node).on('click', doneSelecting); $(node).on('click', function(e){ popUp.toggle(); e.preventDefault(); }) $(document.body).append(popUp.$element); }); }); // </nowiki> 97p1unv3k4euse5w3bdxbztocc7lx7t 519271 519268 2022-07-29T20:12:33Z Ankit18gupta 52763 javascript text/javascript // <nowiki> $(document).ready(function () { //CSS loader mw.loader.addStyleTag( '.heading { font-size: 18px; text-align: center; margin: 5px; width:100% }'); mw.loader.addStyleTag( '.help { font: 13px cursive; font-style: italic }'); mw.loader.addStyleTag( '.status { font: 13px sans-serif; margin: 5px; width: 70%; font-style: italic; width: 100% }'); mw.loader.addStyleTag( '.messageStatus { font: 12px sans-serif; margin-left: 1rem; margin: 5px; width: 70%; font-style: italic; width: 100% }'); mw.loader.addStyleTag( '.button { display: inline-block; text-align: center; margin-top: 10px; margin-bottom: 10px }' ); mw.loader.addStyleTag( '.container { width: 415px; height:200px }'); mw.loader.addStyleTag( '.status:empty { display: none }'); // It is important to make sure that OOUI is loaded before we can make use of it. mw.loader.using("oojs-ui", "mediawiki.api").done(function () { var linkfieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT REQUEST WIZARD", }), linkheading = new OO.ui.LabelWidget({ label: "Give a source for your fact", classes: ["label"], }), linkhelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $( "<p>This is the link of the source of your quote.\u200e</p>" ), padded: true, align: "center", width: "300px", autoFlip: true, }, }), linkinput = new OO.ui.TextInputWidget({ placeholder: "Enter the URL", classes: ["box"], }), linkstatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), linkverifybutton = new OO.ui.ButtonWidget({ label: "Verify", classes: ["button"], flags: ["primary", "progressive"], }), linkbutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), linkpanel = new OO.ui.PanelLayout({ content: [ linkfieldset, linkheading, linkhelp, linkinput, linkstatus, linkverifybutton, linkbutton, ], padded: true, }), selectfieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), selectfieldsetcontent = new OO.ui.FieldsetLayout({ label: "Select the sentence in the article that your text should go after and click Next", classes: ["label"], }), selectstatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), selectbutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), selectbackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), selectpanel = new OO.ui.PanelLayout({ content: [ selectfieldset, selectfieldsetcontent, selectstatus, selectbackbutton, selectbutton, ], padded: true, }), quotefieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), quoteheading = new OO.ui.LabelWidget({ label: "Quote from your source that supports your fact", classes: ["label"], }), quotehelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $( "<p>Type the quote text from the above-mentioned source you want to edit.\u200e</p>" ), padded: true, align: "backwards", autoFlip: true, }, }), quoteinput = new OO.ui.MultilineTextInputWidget({ autosize: false, classes: ["box"], rows: 3, placeholder: "Enter the Quote from the source", }), quotestatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), quotebutton = new OO.ui.ButtonWidget({ label: "Next", classes: ["button"], flags: ["primary", "progressive"], }), quotebackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), quotepanel = new OO.ui.PanelLayout({ content: [ quotefieldset, quoteheading, quotehelp, quoteinput, quotestatus, quotebackbutton, quotebutton, ], padded: true, }), requotefieldset = new OO.ui.FieldsetLayout({ classes: ["heading"], label: "EDIT WIZARD", }), requoteheading = new OO.ui.LabelWidget({ label: "Rewrite the quote in your own words", classes: ["label"], }), requotehelp = new OO.ui.PopupButtonWidget({ icon: "info", classes: ["help"], framed: false, label: "More information", invisibleLabel: true, popup: { head: true, icon: "infoFilled", label: "More information", $content: $("<p>Rephrase the quote in your own words.\u200e</p>"), padded: true, width: "280px", align: "center", autoFlip: true, }, }), requoteinput = new OO.ui.MultilineTextInputWidget({ autosize: false, classes: ["box"], rows: 3, placeholder: "Enter the rephrased Quote", }), requotestatus = new OO.ui.MessageWidget({ inline: true, classes: ["status"], showClose: true, icon:"none", }), requotebutton = new OO.ui.ButtonWidget({ label: "Publish", classes: ["button"], flags: ["primary", "progressive"], }), requotebackbutton = new OO.ui.ButtonWidget({ label: "Back", classes: ["button"], flags: ["primary", "progressive"], }), requotepanel = new OO.ui.PanelLayout({ content: [ requotefieldset, requoteheading, requotehelp, requoteinput, requotestatus, requotebackbutton, requotebutton, ], padded: true, }); var stack = new OO.ui.StackLayout({ classes: ["container"], items: [linkpanel, selectpanel, quotepanel, requotepanel], }); //all the functional buttons linkverifybutton.on('click', handlelinkVerify); linkbutton.on('click', handlelinkNext); quotebutton.on('click', handlequoteNext); selectbutton.on('click', handleselectNext); quotebackbutton.on('click', handlequoteBack); requotebackbutton.on('click', handlerequoteBack); selectbackbutton.on('click', handleselectBack); requotebutton.on('click', handlePublish); selectbutton.on('click', getSelectionText); let check = 0; async function handlelinkVerify(){ const linkValue = linkinput.getValue(); linkstatus.setType("none"); linkstatus.setIcon("null"); linkstatus.setLabel("Loading..."); if (linkValue === "") { linkstatus.setType("warning"); linkstatus.setLabel("The input cannot be left empty"); } //Making an API call to the backend to verify if the quote comes from the source const host = window.ERW_DEV_MODE ? 'https://edit-wizard.toolforge.org' : 'http://localhost:3000'; const response = await fetch(`https://edit-wizard.toolforge.org/api/v1/verifySource`, { method: "POST", body: JSON.stringify({ linkValue}), headers: { 'Content-Type': 'application/json'}, }) const { comment, flag, kind } = await response.json() if(flag==2){ check = 3; linkstatus.setType("error"); linkstatus.setLabel("This is not a valid URL"); } if (flag==1) { check = 1; linkstatus.setType("warning"); linkstatus.setLabel(comment); } if (kind == "blacklisted" || kind == "unreliable") { check = 2; linkstatus.setType("error"); linkstatus.setLabel(comment); } if (flag==0 && check!=3){ check = 1; linkstatus.setType("success"); linkstatus.setLabel("Source probably OK"); } } let linkurl, website, selected=0; async function handlelinkNext(){ const linkValue = linkinput.getValue(); const query= encodeURIComponent(linkValue); //API call to make a request from Citoid if (linkValue!= "") { fetch(`https://en.wikipedia.org/api/rest_v1/data/citation/mediawiki/${query}`, { headers: { 'Content-Type': 'application/json', 'Api-User-Agent': 'w:en:User:Ankit18gupta/MyScript.js' } }) .then(response => response.json()) .then(citationArray => { linkurl = citationArray[0].url; website = citationArray[0].title; }) .catch((error) => { console.log("Error: ",error); }); } // If the linkValue is empty, prompt a warning if (linkValue === "") { linkstatus.setType("warning"); linkstatus.setLabel("The input cannot be left empty"); } else if(check == 0){ linkstatus.setType("warning"); linkstatus.setLabel("Please verify the quote first"); } else if(check == 2){ linkstatus.setType("error"); linkstatus.setLabel("This is a unreliable source, we cannot proceed"); } else if(check == 3){ linkstatus.setType("error"); linkstatus.setLabel("This is not a valid URL, we cannot proceed"); } else if(check == 1){ stack.setItem( selectpanel ); $("#edit-wizard-link span").html("Done selecting"); $( 'body' ).css( 'background-color', '#b8b9ba' ); $( '#mw-head' ).css( 'background-color', '#b8b9ba' ); selected = 1; } } function doneSelecting(){ // if(selected){ // popUp.toggle(false); // } if(selected){ selectValue = getSelectionText(); selectionSection = getSelectionSection(); // If the selectValue is empty, prompt a warning if (selectValue === "") { selectstatus.setType("warning"); selectstatus.setLabel("Please select the text before continuing"); } else{ stack.setItem( quotepanel ); $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); selected = 0; } } } // Function to get the Selected Text function getSelectionText() { var text = ""; if (window.getSelection) { text = window.getSelection().toString(); } else if (document.selection && document.selection.type !== "Control") { text = document.selection.createRange().text; } return text; } // Funtion to get the target Section function getSelectionSection(){ var e = window.getSelection().anchorNode.parentElement; var found_it = false; while (e.tagName.toLowerCase() !== 'body') { if (e.tagName.toLowerCase() === 'h2') { found_it = true; break; } if (e.previousElementSibling) { e = e.previousElementSibling; } else { e = e.parentNode; } } return e.firstChild.textContent; } let selectValue, selectionSection; function handleselectNext(){ selectValue = getSelectionText(); // If the selectValue is empty, prompt a warning if (selectValue === "") { selectstatus.setType("warning"); selectstatus.setLabel("Please select the text before continuing"); } else{ selectionSection = getSelectionSection(); stack.setItem( quotepanel ); selected = 0; $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); } } async function handlequoteNext(){ const quoteValue = quoteinput.getValue(); const linkValue = linkinput.getValue(); quotestatus.setType("none"); quotestatus.setIcon("null"); quotestatus.setLabel("Loading..."); //Making an API call to the backend to verify if the quote comes from the source const host = window.ERW_DEV_MODE ? 'https://edit-wizard.toolforge.org' : 'http://localhost:3000'; const response = await fetch(`https://edit-wizard.toolforge.org/api/v1/verifyQuote`, { method: "POST", body: JSON.stringify({ linkValue, quoteValue }), headers: { 'Content-Type': 'application/json' }, }) const { isParagraphTextOnPage } = await response.json() if (quoteValue === "") { quotestatus.setType("warning"); quotestatus.setLabel("The input cannot be left empty"); } else if(!isParagraphTextOnPage) { quotestatus.setType("error"); quotestatus.setLabel("The quote does not match"); } else if (isParagraphTextOnPage) { quotestatus.setType("success"); quotestatus.setLabel("Verified!"); stack.setItem( requotepanel ); } } function handleselectBack(){ stack.setItem( linkpanel ); $("#edit-wizard-link span").html("Edit Wizard"); $( 'body' ).css( 'background-color', '#f6f6f6' ); $( '#mw-head' ).css( 'background-color', '#f6f6f6' ); } function handlequoteBack(){ stack.setItem( selectpanel ); selected = 1; $("#edit-wizard-link span").html("Done selecting"); $( 'body' ).css( 'background-color', '#b8b9ba' ); $( '#mw-head' ).css( 'background-color', '#b8b9ba' ); } function handlerequoteBack(){ stack.setItem( quotepanel ); selected = 0; } // Function to send request to the edit page function editPage( info ) { var api = new mw.Api(); api.postWithToken("csrf", { action: 'edit', title: info.title, appendtext: info.text, summary: info.summary } ).then(function( data ) { OO.ui.alert( 'Edit Request sent to talk page..!' ); } ).catch( function(code, data) { console.log( api.getErrorMessage( data ).text()); } ); } function handlePublish(){ const linkValue = linkinput.getValue(); const quoteValue = quoteinput.getValue(); const requoteValue = requoteinput.getValue(); const firstthree = quoteValue.split(' ').slice(0,3).join(' '); const array = quoteValue.split(' '); const len = array.length - 3; const lastthree = quoteValue.split(' ').slice(len).join(' '); if (requoteValue === "") { requotestatus.$element.show(); requotestatus.setType("warning"); requotestatus.setLabel("The input cannot be left empty"); } else{ requotestatus.$element.hide(); // API calls code goes here editPage({ title: (new mw.Title(mw.config.get("wgPageName"))).getTalkPage().toText(), text: '\n== Edit Request made by {{subst:REVISIONUSER}} ~~~~~ == \n' + '<br><b>Citation:</b> ' + `[${linkValue} ${website}]` + '<br><b>Section to Edit:</b> ' + selectionSection + '<br><b>Spot where to add the fact:</b> ' + selectValue + '<br><b>Quote:</b> ' + 'Quote starts here - ' + firstthree + '... ' + lastthree + '<br><b>Rephrased Quote:</b> ' + requoteValue + '<br> ~~~~', summary: 'Edit Request to add a fact' }); } } var node = mw.util.addPortletLink( 'p-views', "#", 'Edit Wizard', 'edit-wizard-link', 'Edit Wizard', "", "#ca-history", ); // A popup widget is instantiated var popUp = new OO.ui.PopupWidget({ align: "forwards", $floatableContainer: $(node), $content: stack.$element, padded: true, popup: false, width: 440, height: 260, head: true, // autoClose: false, hideCloseButton: false, }); //If we are done selecting the text it automatically moves to the next panel // $(node).on('click', doneSelecting); $(node).on('click', function(e){ popUp.toggle(); e.preventDefault(); }) $(document.body).append(popUp.$element); }); }); // </nowiki> f8miqcy1dg6pmwo0gta9v5gyo45hk09 Talk:Blockchain 1 127009 519265 518548 2022-07-29T18:36:01Z Ankit18gupta 52763 Edit Request to add a fact wikitext text/x-wiki <b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 05:06, 22 June 2022 (UTC)<br><b>Source URL:</b> tgrtg<br><b>Spot where to add the fact:</b> d click<br><b>Quote:</b> ty45t<br><b>Rephrased Quote:</b> 5ty45<br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:00, 22 June 2022 (UTC)<br><b>Source URL:</b> btrhtyh<br><b>Spot where to add the fact:</b> You've followed a link to a page that doesn't exist yet. To create the page, start typing in the box below (see the help page for more info). If you are here by mistake, just click your browser's back button. <br><b>Quote:</b> thge5tg5e<br><b>Rephrased Quote:</b> 5tg5g56<br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:06, 22 June 2022 (UTC)<br><b>Source URL:</b> t<br><b>Spot where to add the fact:</b> ct the te<br><b>Quote:</b> trg<br><b>Rephrased Quote:</b> gtw45<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:07, 22 June 2022 (UTC)<br><b>Source URL:</b> etgr<br><b>Spot where to add the fact:</b> Please select the text from the article and click Next button<br><b>Quote:</b> rtg<br><b>Rephrased Quote:</b> g<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:09, 22 June 2022 (UTC)<br><b>Source URL:</b> etrg<br><b>Spot where to add the fact:</b> Please <br><b>Quote:</b> t5g5<br><b>Rephrased Quote:</b> 5y54<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 17:28, 1 July 2022 (UTC)<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> her work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with.<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party. One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are clos<br><br>==<b>Edit Request made by</b> ~~ ~~==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> ed, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampere<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of <br><br>== Edit Request made by 17:41, 1 July 2022 (UTC) ==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> the size had grown to almost 30 GB, and from January 2016 to January 2017, the bitcoin blockchain grew from 50 GB to 100 GB in size. The ledger size had exceeded 200 GB by early 2020.[12] The words block and chain were used separately i<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of <br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br><br>== Edit Request made on 17:50, 1 July 2022 (UTC) ==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> 91 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency b<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br>== Edit Request made on 18:00, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> d in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorpora<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br>== Edit Request made on 19:04, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> r work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br> == Edit Request made on 19:06, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> tained, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a syst<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br> == Edit Request made on 19:09, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency by allowing several document certificates to be collected into <br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compiled<br> == Edit Request made on 19:09, 1 July 2022 (UTC) by ~~ == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> orm a chain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data becau<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made on 19:09, 1 July 2022 (UTC) by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:23, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> n of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent b<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:23, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> ain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data becaus<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:46, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer inc<br><b>Quote:</b> f a computer network. As a database, a blockchain stores information electro<br><b>Rephrased Quote:</b> f a computer network. As a database, a blockchain stores information electro<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:41, 11 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> es are represented by leafs). The timestamp proves that the transaction data existed when the block was published to get into its hash. As blocks each contain information about the block previous to it, they form a chain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks. Blockchains are typically managed by a peer-to-peer network for use as a publicly distributed ledger, where nodes collectively adhere to a protocol to communicate and validate new blocks. Although blockchain records ar<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized reco<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized reco<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:41, 11 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> ained, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency by allowing several document certificates to be collected into one block.[2][10] Under their company Surety, their document certificate hashes have been published in The New York Times every week since 1995.[4] The first decentralized blockchain was conceptualized by a person (o<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the f<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the f<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 04:27, 24 July 2022 (UTC) == <br><b>Citation:</b> [https://www.facebook.com/watch/?v=966431404225278&extid=NS-UNK-UNK-UNK-IOS_GK0T-GK1C&ref=sharing undefined]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> the block was published to get into its hash. As blocks each contain information about the block previous to it, they form a chain,<br><b>Quote:</b> Listen to this<br><b>Rephrased Quote:</b> kjdbhd hhdyud igdkyb yugdkyvhv dywgdyg ygdyuegd<br> == Edit Request made by Ankit18gupta 18:36, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://builtin.com/blockchain What Is Blockchain Technology? How Does It Work? | Built In]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> Therefore, blockchains are resistant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks<br><b>Quote:</b> Quote starts here - A simple analogy... copied or transferred.<br><b>Rephrased Quote:</b> A simple analogy for how blockchain technology operates can be compared to how a Google Docs document works. When you create a Google Doc and share it with a group of people, the document is simply distributed instead of copied or transferred.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 18:36, 29 July 2022 (UTC) razw95rjc8f5dkx8rwz3wiauhprfy8u 519269 519265 2022-07-29T19:33:29Z Ankit18gupta 52763 Edit Request to add a fact wikitext text/x-wiki <b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 05:06, 22 June 2022 (UTC)<br><b>Source URL:</b> tgrtg<br><b>Spot where to add the fact:</b> d click<br><b>Quote:</b> ty45t<br><b>Rephrased Quote:</b> 5ty45<br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:00, 22 June 2022 (UTC)<br><b>Source URL:</b> btrhtyh<br><b>Spot where to add the fact:</b> You've followed a link to a page that doesn't exist yet. To create the page, start typing in the box below (see the help page for more info). If you are here by mistake, just click your browser's back button. <br><b>Quote:</b> thge5tg5e<br><b>Rephrased Quote:</b> 5tg5g56<br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:06, 22 June 2022 (UTC)<br><b>Source URL:</b> t<br><b>Spot where to add the fact:</b> ct the te<br><b>Quote:</b> trg<br><b>Rephrased Quote:</b> gtw45<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:07, 22 June 2022 (UTC)<br><b>Source URL:</b> etgr<br><b>Spot where to add the fact:</b> Please select the text from the article and click Next button<br><b>Quote:</b> rtg<br><b>Rephrased Quote:</b> g<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:09, 22 June 2022 (UTC)<br><b>Source URL:</b> etrg<br><b>Spot where to add the fact:</b> Please <br><b>Quote:</b> t5g5<br><b>Rephrased Quote:</b> 5y54<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 17:28, 1 July 2022 (UTC)<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> her work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with.<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party. One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are clos<br><br>==<b>Edit Request made by</b> ~~ ~~==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> ed, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampere<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of <br><br>== Edit Request made by 17:41, 1 July 2022 (UTC) ==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> the size had grown to almost 30 GB, and from January 2016 to January 2017, the bitcoin blockchain grew from 50 GB to 100 GB in size. The ledger size had exceeded 200 GB by early 2020.[12] The words block and chain were used separately i<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of <br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br><br>== Edit Request made on 17:50, 1 July 2022 (UTC) ==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> 91 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency b<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br>== Edit Request made on 18:00, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> d in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorpora<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br>== Edit Request made on 19:04, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> r work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br> == Edit Request made on 19:06, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> tained, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a syst<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br> == Edit Request made on 19:09, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency by allowing several document certificates to be collected into <br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compiled<br> == Edit Request made on 19:09, 1 July 2022 (UTC) by ~~ == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> orm a chain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data becau<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made on 19:09, 1 July 2022 (UTC) by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:23, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> n of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent b<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:23, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> ain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data becaus<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:46, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer inc<br><b>Quote:</b> f a computer network. As a database, a blockchain stores information electro<br><b>Rephrased Quote:</b> f a computer network. As a database, a blockchain stores information electro<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:41, 11 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> es are represented by leafs). The timestamp proves that the transaction data existed when the block was published to get into its hash. As blocks each contain information about the block previous to it, they form a chain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks. Blockchains are typically managed by a peer-to-peer network for use as a publicly distributed ledger, where nodes collectively adhere to a protocol to communicate and validate new blocks. Although blockchain records ar<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized reco<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized reco<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:41, 11 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> ained, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency by allowing several document certificates to be collected into one block.[2][10] Under their company Surety, their document certificate hashes have been published in The New York Times every week since 1995.[4] The first decentralized blockchain was conceptualized by a person (o<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the f<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the f<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 04:27, 24 July 2022 (UTC) == <br><b>Citation:</b> [https://www.facebook.com/watch/?v=966431404225278&extid=NS-UNK-UNK-UNK-IOS_GK0T-GK1C&ref=sharing undefined]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> the block was published to get into its hash. As blocks each contain information about the block previous to it, they form a chain,<br><b>Quote:</b> Listen to this<br><b>Rephrased Quote:</b> kjdbhd hhdyud igdkyb yugdkyvhv dywgdyg ygdyuegd<br> == Edit Request made by Ankit18gupta 18:36, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://builtin.com/blockchain What Is Blockchain Technology? How Does It Work? | Built In]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> Therefore, blockchains are resistant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks<br><b>Quote:</b> Quote starts here - A simple analogy... copied or transferred.<br><b>Rephrased Quote:</b> A simple analogy for how blockchain technology operates can be compared to how a Google Docs document works. When you create a Google Doc and share it with a group of people, the document is simply distributed instead of copied or transferred.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 18:36, 29 July 2022 (UTC) == Edit Request made by Ankit18gupta 19:33, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Blockchain Explained]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> stant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks.<br><b>Quote:</b> Quote starts here - A blockchain is... trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:33, 29 July 2022 (UTC) 30cubtqe1k0hpnuchg4y203r565quo1 519270 519269 2022-07-29T19:33:50Z Ankit18gupta 52763 Edit Request to add a fact wikitext text/x-wiki <b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 05:06, 22 June 2022 (UTC)<br><b>Source URL:</b> tgrtg<br><b>Spot where to add the fact:</b> d click<br><b>Quote:</b> ty45t<br><b>Rephrased Quote:</b> 5ty45<br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:00, 22 June 2022 (UTC)<br><b>Source URL:</b> btrhtyh<br><b>Spot where to add the fact:</b> You've followed a link to a page that doesn't exist yet. To create the page, start typing in the box below (see the help page for more info). If you are here by mistake, just click your browser's back button. <br><b>Quote:</b> thge5tg5e<br><b>Rephrased Quote:</b> 5tg5g56<br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:06, 22 June 2022 (UTC)<br><b>Source URL:</b> t<br><b>Spot where to add the fact:</b> ct the te<br><b>Quote:</b> trg<br><b>Rephrased Quote:</b> gtw45<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:07, 22 June 2022 (UTC)<br><b>Source URL:</b> etgr<br><b>Spot where to add the fact:</b> Please select the text from the article and click Next button<br><b>Quote:</b> rtg<br><b>Rephrased Quote:</b> g<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:09, 22 June 2022 (UTC)<br><b>Source URL:</b> etrg<br><b>Spot where to add the fact:</b> Please <br><b>Quote:</b> t5g5<br><b>Rephrased Quote:</b> 5y54<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 17:28, 1 July 2022 (UTC)<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> her work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with.<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party. One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are clos<br><br>==<b>Edit Request made by</b> ~~ ~~==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> ed, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampere<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of <br><br>== Edit Request made by 17:41, 1 July 2022 (UTC) ==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> the size had grown to almost 30 GB, and from January 2016 to January 2017, the bitcoin blockchain grew from 50 GB to 100 GB in size. The ledger size had exceeded 200 GB by early 2020.[12] The words block and chain were used separately i<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of <br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br><br>== Edit Request made on 17:50, 1 July 2022 (UTC) ==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> 91 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency b<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br>== Edit Request made on 18:00, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> d in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorpora<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br>== Edit Request made on 19:04, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> r work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br> == Edit Request made on 19:06, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> tained, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a syst<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br> == Edit Request made on 19:09, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency by allowing several document certificates to be collected into <br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compiled<br> == Edit Request made on 19:09, 1 July 2022 (UTC) by ~~ == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> orm a chain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data becau<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made on 19:09, 1 July 2022 (UTC) by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:23, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> n of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent b<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:23, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> ain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data becaus<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:46, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer inc<br><b>Quote:</b> f a computer network. As a database, a blockchain stores information electro<br><b>Rephrased Quote:</b> f a computer network. As a database, a blockchain stores information electro<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:41, 11 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> es are represented by leafs). The timestamp proves that the transaction data existed when the block was published to get into its hash. As blocks each contain information about the block previous to it, they form a chain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks. Blockchains are typically managed by a peer-to-peer network for use as a publicly distributed ledger, where nodes collectively adhere to a protocol to communicate and validate new blocks. Although blockchain records ar<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized reco<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized reco<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:41, 11 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> ained, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency by allowing several document certificates to be collected into one block.[2][10] Under their company Surety, their document certificate hashes have been published in The New York Times every week since 1995.[4] The first decentralized blockchain was conceptualized by a person (o<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the f<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the f<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 04:27, 24 July 2022 (UTC) == <br><b>Citation:</b> [https://www.facebook.com/watch/?v=966431404225278&extid=NS-UNK-UNK-UNK-IOS_GK0T-GK1C&ref=sharing undefined]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> the block was published to get into its hash. As blocks each contain information about the block previous to it, they form a chain,<br><b>Quote:</b> Listen to this<br><b>Rephrased Quote:</b> kjdbhd hhdyud igdkyb yugdkyvhv dywgdyg ygdyuegd<br> == Edit Request made by Ankit18gupta 18:36, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://builtin.com/blockchain What Is Blockchain Technology? How Does It Work? | Built In]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> Therefore, blockchains are resistant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks<br><b>Quote:</b> Quote starts here - A simple analogy... copied or transferred.<br><b>Rephrased Quote:</b> A simple analogy for how blockchain technology operates can be compared to how a Google Docs document works. When you create a Google Doc and share it with a group of people, the document is simply distributed instead of copied or transferred.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 18:36, 29 July 2022 (UTC) == Edit Request made by Ankit18gupta 19:33, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Blockchain Explained]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> stant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks.<br><b>Quote:</b> Quote starts here - A blockchain is... trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:33, 29 July 2022 (UTC) == Edit Request made by Ankit18gupta 19:33, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Blockchain Explained]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> its efficiency by allowing several document certificates to be collected into one block.[2][10] Under their company Surety, their document certificate hashes h<br><b>Quote:</b> Quote starts here - A blockchain is... trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:33, 29 July 2022 (UTC) dcao1eugefisn0mx38nwzj0npoabyjw 519272 519270 2022-07-29T20:14:25Z Ankit18gupta 52763 Edit Request to add a fact wikitext text/x-wiki <b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 05:06, 22 June 2022 (UTC)<br><b>Source URL:</b> tgrtg<br><b>Spot where to add the fact:</b> d click<br><b>Quote:</b> ty45t<br><b>Rephrased Quote:</b> 5ty45<br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:00, 22 June 2022 (UTC)<br><b>Source URL:</b> btrhtyh<br><b>Spot where to add the fact:</b> You've followed a link to a page that doesn't exist yet. To create the page, start typing in the box below (see the help page for more info). If you are here by mistake, just click your browser's back button. <br><b>Quote:</b> thge5tg5e<br><b>Rephrased Quote:</b> 5tg5g56<br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:06, 22 June 2022 (UTC)<br><b>Source URL:</b> t<br><b>Spot where to add the fact:</b> ct the te<br><b>Quote:</b> trg<br><b>Rephrased Quote:</b> gtw45<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:07, 22 June 2022 (UTC)<br><b>Source URL:</b> etgr<br><b>Spot where to add the fact:</b> Please select the text from the article and click Next button<br><b>Quote:</b> rtg<br><b>Rephrased Quote:</b> g<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 07:09, 22 June 2022 (UTC)<br><b>Source URL:</b> etrg<br><b>Spot where to add the fact:</b> Please <br><b>Quote:</b> t5g5<br><b>Rephrased Quote:</b> 5y54<br><br><b>Edit Request made by</b> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 17:28, 1 July 2022 (UTC)<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> her work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with.<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party. One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are clos<br><br>==<b>Edit Request made by</b> ~~ ~~==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> ed, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampere<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of <br><br>== Edit Request made by 17:41, 1 July 2022 (UTC) ==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> the size had grown to almost 30 GB, and from January 2016 to January 2017, the bitcoin blockchain grew from 50 GB to 100 GB in size. The ledger size had exceeded 200 GB by early 2020.[12] The words block and chain were used separately i<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of <br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br><br>== Edit Request made on 17:50, 1 July 2022 (UTC) ==<br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> 91 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency b<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br>== Edit Request made on 18:00, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> d in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorpora<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><br>== Edit Request made on 19:04, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> r work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br> == Edit Request made on 19:06, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> tained, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a syst<br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br> == Edit Request made on 19:09, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency by allowing several document certificates to be collected into <br><b>Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compil<br><b>Rephrased Quote:</b> One key difference between a typical database and a blockchain is how the data is structured. A blockchain collects information together in groups, known as blocks, that hold sets of information. Blocks have certain storage capacities and, when filled, are closed and linked to the previously filled block, forming a chain of data known as the blockchain. All new information that follows that freshly added block is compiled<br> == Edit Request made on 19:09, 1 July 2022 (UTC) by ~~ == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> orm a chain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data becau<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made on 19:09, 1 July 2022 (UTC) by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:23, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> n of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent b<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:23, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> ain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data becaus<br><b>Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br><b>Rephrased Quote:</b> odes of a computer network. As a database, a blockchain stores information electronically in d<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:46, 1 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer inc<br><b>Quote:</b> f a computer network. As a database, a blockchain stores information electro<br><b>Rephrased Quote:</b> f a computer network. As a database, a blockchain stores information electro<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:41, 11 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> es are represented by leafs). The timestamp proves that the transaction data existed when the block was published to get into its hash. As blocks each contain information about the block previous to it, they form a chain, with each additional block reinforcing the ones before it. Therefore, blockchains are resistant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks. Blockchains are typically managed by a peer-to-peer network for use as a publicly distributed ledger, where nodes collectively adhere to a protocol to communicate and validate new blocks. Although blockchain records ar<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized reco<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized reco<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 06:41, 11 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Investopedia]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> ained, and Trusted by Mutually Suspicious Groups."[8] Further work on a cryptographically secured chain of blocks was described in 1991 by Stuart Haber and W. Scott Stornetta.[2][9] They wanted to implement a system wherein document timestamps could not be tampered with. In 1992, Haber, Stornetta, and Dave Bayer incorporated Merkle trees into the design, which improved its efficiency by allowing several document certificates to be collected into one block.[2][10] Under their company Surety, their document certificate hashes have been published in The New York Times every week since 1995.[4] The first decentralized blockchain was conceptualized by a person (o<br><b>Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the f<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the f<br> == Edit Request made by [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 04:27, 24 July 2022 (UTC) == <br><b>Citation:</b> [https://www.facebook.com/watch/?v=966431404225278&extid=NS-UNK-UNK-UNK-IOS_GK0T-GK1C&ref=sharing undefined]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> the block was published to get into its hash. As blocks each contain information about the block previous to it, they form a chain,<br><b>Quote:</b> Listen to this<br><b>Rephrased Quote:</b> kjdbhd hhdyud igdkyb yugdkyvhv dywgdyg ygdyuegd<br> == Edit Request made by Ankit18gupta 18:36, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://builtin.com/blockchain What Is Blockchain Technology? How Does It Work? | Built In]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> Therefore, blockchains are resistant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks<br><b>Quote:</b> Quote starts here - A simple analogy... copied or transferred.<br><b>Rephrased Quote:</b> A simple analogy for how blockchain technology operates can be compared to how a Google Docs document works. When you create a Google Doc and share it with a group of people, the document is simply distributed instead of copied or transferred.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 18:36, 29 July 2022 (UTC) == Edit Request made by Ankit18gupta 19:33, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Blockchain Explained]<br><b>Section to Edit:</b> <br><b>Spot where to add the fact:</b> stant to modification of their data because once recorded, the data in any given block cannot be altered retroactively without altering all subsequent blocks.<br><b>Quote:</b> Quote starts here - A blockchain is... trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:33, 29 July 2022 (UTC) == Edit Request made by Ankit18gupta 19:33, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Blockchain Explained]<br><b>Section to Edit:</b> History<br><b>Spot where to add the fact:</b> its efficiency by allowing several document certificates to be collected into one block.[2][10] Under their company Surety, their document certificate hashes h<br><b>Quote:</b> Quote starts here - A blockchain is... trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 19:33, 29 July 2022 (UTC) == Edit Request made by Ankit18gupta 20:14, 29 July 2022 (UTC) == <br><b>Citation:</b> [https://www.investopedia.com/terms/b/blockchain.asp Blockchain Explained]<br><b>Section to Edit:</b> Uses<br><b>Spot where to add the fact:</b> Blockchain technology has been used for tracking the origins of gemstones and other precious commodities. In 2016, The Wall Street Journal reported that the blockchain technology company Everledger was partnering with IBM's blockchain-based tracking service to trace the origin of diamonds to ensure that they were ethically mined.[95] As of 2019, the Diamond Trading Company (DTC) has been involved in building a diamond trading supply chain product called Tracr.[96]<br><b>Quote:</b> Quote starts here - A blockchain is... trusted third party.<br><b>Rephrased Quote:</b> A blockchain is a distributed database or ledger that is shared among the nodes of a computer network. As a database, a blockchain stores information electronically in digital format. Blockchains are best known for their crucial role in cryptocurrency systems, such as Bitcoin, for maintaining a secure and decentralized record of transactions. The innovation with a blockchain is that it guarantees the fidelity and security of a record of data and generates trust without the need for a trusted third party.<br> [[User:Ankit18gupta|Ankit18gupta]] ([[User talk:Ankit18gupta|talk]]) 20:14, 29 July 2022 (UTC) n2uham4n6v76gka0h7on03dt1r0l4lb User:PhantomTech/sandbox 2 127427 519280 518415 2022-07-30T08:13:25Z PhantomTech 27808 wikitext text/x-wiki test test 5nqoj84v2w4p4nsakd1nx8u65eow280 User:John Vandenberg/createonly/1659111755.017861 2 127541 519253 2022-07-29T16:22:44Z Pywikibot-test 23124 Pywikibot 7.6.0.dev2 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 Topic:X089v55oni1y1tbh 2600 127542 519254 2022-07-29T16:22:54Z Flow talk page manager 26836 /* This page has been converted into a Structured Discussions board */ flow-board application/json {"flow-workflow":"x089v55oni1y1tbh"} bnfct57ac4u7zoc5u8xq6e2jbsge8ou User:PotsdamLamb/common.js 2 127543 519274 2022-07-29T22:36:41Z PotsdamLamb 50452 Created page with "mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Ankit18gupta/Editwizard.js&action=raw&ctype=text/javascript');" javascript text/javascript mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Ankit18gupta/Editwizard.js&action=raw&ctype=text/javascript'); 89fjvjfgv82oymkawpssdvppus19g6w