 this module implements theu800 uses templatestyles template. local yesno require 'module yesno' local mlist require 'module list' local mtabletools require 'module tabletools local mmessagebox require 'module message boxu800' local pu800 function pu800u82emain frame local origargs frame getparent .args local args foru800 ku800 vu800 inu800 pairs origargs dou800 vu800 vu800 match ' su800* . su800* ' ifu800 vu800   then args ku800 vu800 endu800 endu800 return pu800u82e_main args endu800 function pu800u82e_main args local tstyles mtabletoolsu82ecompresssparsearray args local boxu800 pu800u82erenderbox tstyles local trackingcategories pu800u82erendertrackingcategories args tstyles return boxu800 .. trackingcategories endu800 function pu800u82erenderbox tstyles local boxargs ifu800 #tstyles 1u800 then boxargsu82etext ' u8d8aeu8d8b7u8d8a7 u8d987u8db8cu8da86 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9u8db8c u8d985u8d8b4u8d8aeu8d8b5 u8d986u8d8b4u8d8afu8d987 ' else local tstyleslinks foru800 iu800 tsu800 inu800 ipairs tstyles dou800 local sandboxlink nilu800 local tstitle mwu800u82etitleu82enewu800 tsu800 ifu800 tstitle then local tssandboxtitle mwu800u82etitleu82enewu800 stringu82eformat ' su800 su800 u8d8aau8d985u8d8b1u8db8cu8d986 su800' tstitleu82enstext tstitleu82ebasetext tstitleu82esubpagetext ifu800 tssandboxtitle andu800 tssandboxtitleu82eexists then sandboxlink stringu82eformat ' su800 u8d8aau8d985u8d8b1u8db8cu8d986 ' tssandboxtitleu82eprefixedtext endu800 endu800 tstyleslinks iu800 stringu82eformat ' su800 su800' tsu800 sandboxlink oru800   endu800 local tstyleslist mlistu82emakelist 'bulleted' tstyleslinks boxargsu82etext 'u8d8a7u8db8cu8d986 ' .. mwu800u82etitleu82egetcurrenttitle innamespaces 828u800 829u800 andu800 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986' oru800 'u8d8a7u8d984u8daafu8d988' .. ' u8d8a7u8d8b2 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d8af nu800' .. tstyleslist endu800 boxargsu82etype 'notice' boxargsu82esmall true boxargsu82eimage ' file farm fresh cssu800 addu800u82esvgu800 32px altu800 cssu800 ' return mmessageboxu82emain 'mbox' boxargs endu800 function pu800u82erendertrackingcategories args tstyles titleobj ifu800 yesno argsu82enocat then return   endu800 local cats error category ifu800 #tstyles 1u800 then cats #cats 1u800 'u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8c u8d8a7u8d8b2 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d8af u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8aeu8d8b7u8d8a7' endu800 templatestyles category titleobj titleobj oru800 mwu800u82etitleu82egetcurrenttitle local subpageblacklist docu800 true sandbox true sandbox2 true testcases true ifu800 titleobju82enamespace 10u800 oru800 titleobju82enamespace 828u800 andu800 notu800 subpageblacklist titleobju82esubpagetext then local category argsu82ecategory ifu800 notu800 category then category category oru800 'u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af' endu800 cats #cats 1u800 category ifu800 notu800 yesno argsu82enoprotcat then local currentprot titleobju82eprotectionlevels "edit" andu800 titleobju82eprotectionlevels "edit" 1u800 oru800 nilu800 local addedlevelcat false local addedpadlockcat false foru800 iu800 tsu800 inu800 ipairs tstyles dou800 local tstitleobj mwu800u82etitleu82enewu800 tsu800 local tsprot tstitleobju82eprotectionlevels "edit" andu800 tstitleobju82eprotectionlevels "edit" 1u800 oru800 nilu800 ifu800 tsprot currentprot andu800 notu800 addedlevelcat then cats #cats 1u800 "u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a8u8d8a7 u8d8b3u8d8b7u8d8ad u8d8adu8d981u8d8a7u8d8b8u8d8aa u8d985u8d8aau8d981u8d8a7u8d988u8d8aa u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af" endu800 ifu800 tsprot andu800 notu800 addedpadlockcat then local content tstitleobj getcontent ifu800 notu800 content find " ppu800 " then cats #cats 1u800 "u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a8u8d8afu8d988u8d986 u8d8a2u8db8cu8daa9u8d988u8d986 u8d982u8d981u8d984 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af" addedpadlockcat true endu800 endu800 endu800 endu800 endu800 foru800 iu800 catu800 inu800 ipairs cats dou800 cats iu800 stringu82eformat ' u8d8b1u8d8afu8d987 su800 ' catu800 endu800 return tableu82econcat cats endu800 return pu800 