ವಿಕಿಪೀಡಿಯ
tcywiki
https://tcy.wikipedia.org/wiki/%E0%B2%AE%E0%B3%81%E0%B2%96%E0%B3%8D%E0%B2%AF_%E0%B2%AA%E0%B3%81%E0%B2%9F
MediaWiki 1.48.0-wmf.3
first-letter
ಮಾದ್ಯಮೊ
ವಿಸೇಸೊ
ಪಾತೆರ
ಬಳಕೆದಾರೆ
ಬಳಕೆದಾರೆ ಪಾತೆರ
ವಿಕಿಪೀಡಿಯ
ವಿಕಿಪೀಡಿಯ ಪಾತೆರ
ಫೈಲ್
ಫೈಲ್ ಪಾತೆರ
ಮಾದ್ಯಮೊವಿಕಿ
ಮಾದ್ಯಮೊವಿಕಿ ಪಾತೆರ
ಟೆಂಪ್ಲೇಟ್
ಟೆಂಪ್ಲೇಟ್ ಪಾತೆರ
ಸಕಾಯೊ
ಸಕಾಯೊ ಪಾತೆರ
ವರ್ಗೊ
ವರ್ಗೊ ಪಾತೆರ
ತಡ್ಯ
ತಡ್ಯ ಪಾತೆರ
ಕರಡು
ಕರಡು ಪಾತೆರ
TimedText
TimedText talk
ಮೋಡ್ಯೂಲ್
ಮೋಡ್ಯೂಲ್ ಪಾತೆರ
Event
Event talk
ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯ
0
4615
374575
374535
2026-11-06T05:54:01Z
ChiK
1136
374575
wikitext
text/x-wiki
{{Infobox university
| image_name = Mangalore University logo.png
| image_size =
| name = ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯ
| motto = ಜ್ಞಾನವೇ ಬೆಳಕು
| established = {{start date and age|1980}}
| chancellor = [[ಥಾವರ್ ಚಂದ್ ಗೆಹ್ಲೋಟ್]]
| vice_chancellor = ಫ್ರೊ. ಪಿ.ಎಲ್. ಧರ್ಮ<ref>{{cite news |last1=Bureau |first1=The Hindu |title=P.L. Dharma appointed as Mangalore University V-C |url=https://www.thehindu.com/news/cities/Mangalore/pl-dharma-appointed-as-mangalore-university-v-c/article67918413.ece |access-date=4 November 2026 |work=The Hindu |date=5 March 2024 |language=en-IN}}</ref>
| city = [[ಕೊಣಾಜೆ]]
| state = [[ಕರ್ನಾಟಕ]]
| country = [[ಭಾರತ]]
| students =
| coor = {{coord|12|48|56.72|N|74|55|26.67|E|region:IN|display=title}}
| type = [[Public university|ಸಾರ್ವೊಜನಿಕ]]
| campus = [[Urban areas|Urban]]
| affiliations = [[University Grants Commission (India)|UGC]]
| website = {{url|http://www.mangaloreuniversity.ac.in}}
}}
'''ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯ''' ಕುಡ್ಲಡ್ ಉಪ್ಪುನ ವಿಶ್ವವಿದ್ಯಾನಿಲಯ. [[ಮಂಗಳೂರು]] ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯದ ಧ್ಯೇಯ ವಾಕ್ಯ "ಜ್ಞಾನವೇ ಬೆಳಕು" ಪಂಡ್ದ್. ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯದ ಜಾಗೆನ್ `ಮಂಗಳಗಂಗೋತ್ರಿ' ಪಂಡ್ದ್ ಲೆಪ್ಪುವೆರ್, ಈ ವಿಶ್ವವಿದ್ಯಾನಿಲಯಗ್ ಮೈಸೂರುದ ಮಾನಸಗಂಗೋತ್ರಿ ಇತ್ತಿಲೆಕ್ಕನೇ ಕುಡ್ಲದ ಮಂಗಳಗಂಗೋತ್ರಿ ಆಂಡ್. ವಿಶ್ವವಿದ್ಯಾನಿಲಯದ ಜಾಗೆ ಸುಮಾರು ೩೬೦ ಎಕರೆ ಪ್ರದೇಶೊಡು ವಿಸ್ತಾರವಾದ್ ಉಂಡು. [[ಕುಡ್ಲ]] ಬುಕ್ಕ [[ಉಡುಪಿ]] ಜಿಲ್ಲೆದ ಪದವಿ ಬುಕ್ಕೊ ಸ್ನಾತಕೋತ್ತರ ಪದವಿ ಕಾಲೇಜುಲು ಈ ವಿಶ್ವವಿದ್ಯಾಲಯದ ಅಧಿಕಾರ ವ್ಯಾಪ್ತಿದ ಉಲಾಯಿಡ್ ಸೇರುಂಡು.<ref>{{cite news |last1=Network |first1=Daijiworld Media |title=Mangalore University gearing up to hold online examinations, says VC |url=https://www.daijiworld.com/news/newsDisplay?newsID=860193 |access-date=4 November 2026 |work=Daijiworld.com |date=5 August 2021 |language=en}}</ref>
== ಕ್ಯಾಂಪಸ್/ಆವರಣ ==
೬೫೦ ಎಕರೆ ಪ್ರದೇಶಡು ವಿಸ್ತಾರವಾತು. ಸೋಕುತಾ ಪಂತಿಹಾಸ್ ನ ಆಂಗಣ ಉಂಡು. ಸ್ವಚ್ಛವಾಯಿನ ಪರಿಸರ, ಬುಕ್ಕ ಮಲ್ಲ ಲೈಬ್ರರಿ ಉಂಡು.
== ಸಂಯೋಜಿತ ಕಾಲೇಜುಲು ==
# ವಿಶ್ವವಿದ್ಯಾನಿಲಯ ಕಾಲೇಜು, ಹಂಪನಕಟ್ಟ, ಮಂಗಳೂರು
# ಫೀಲ್ಡ್ ಮಾರ್ಷಲ್ ಕೆ ಎಂ ಕಾರ್ಯಪ್ಪ ಕಾಲೇಜು, ಮಡಿಕೇರಿ
# ಸ್ನಾತಕೋತ್ತರ ಅಧ್ಯಯನ ಕೇಂದ್ರ ಚಿಕ್ಕಅಳುವಾರ ಕುಶಾಲನಗರ ಕೊಡಗು.
# ಸ್ನಾತಕೋತ್ತರ ಅಧ್ಯಯನ ಕೇಂದ್ರ ಉಡುಪಿ.
== ಎಸ್. ವಿ. ಪಿ. ಕನ್ನಡ ಅಧ್ಯಯನ ಸಂಸ್ಥೆ ==
[[File:SVP Institute of Kannada Studies, Mangalagangotri, Konaje, Mangalore, Karnataka, India (2014).jpg|thumb|ಕನ್ನಡ ವಿಭಾಗೊ]]
[[File:ವಿಬಾಗದ ಗ್ರಂಥಾಲಯ.jpg|thumb|ಮಂಗಳೂರು ವಿ ವಿ ಕನ್ನಡ ವಿಭಾಗ]]
# ೧೯೬೮ರಲ್ಲಿ ಮೈಸೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯೊದ ಸ್ನಾತಕೋತ್ತರ ಕೇಂದ್ರವಾಗತು ಸುರು ಅಯಿನಾತು ಬುಕ್ಕ ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯ ಸುರು ಆನಗ ಇತ್ತುನಾ ಕೆಲವೇ ವಿಭಾಗೊಡು [[ಕನ್ನಡ ಬಾಸೆ|ಕನ್ನಡ]] ವಿಭಾಗವೂ ಒಂದಾತ್ತುಂಡು.
# ಕನ್ನಡ ಸ್ನಾತಕೋತ್ತರ ಪದವಿ. ಕಲಿಕೆಯ ಭಾಗವಾತು ಕಂಪ್ಯೂಟರ್, ಅನುವಾದ, ಸಮೂಹ ಮಾಧ್ಯಮಗೊಲ ಬುಕ್ಕ ಅಯಿತ್ತಾ ತಿಳುವಳಿಕೆ ಮತ್ತು ತರಭೇತಿ. ಸಾಹಿತ್ಯ ಬರವಣಿಗೆ ಬುಕ್ಕ ಮಾತುಗಾರಿಕೆಯ ಕೌಶಲ. ರಾಷ್ಟೀಯ ವಿಚಾರ ಸಂಕಿರಣ, ಕಾರ್ಯಾಗಾರೊಡು ಭಾಗವಹಿಸುನ ಅವಕಾಶ ಇತ್ತೆ ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾಲಯಡು ಉಂಡು.
=== ಅಧ್ಯಯನ ವಿಷಯೊ ಬುಕ್ಕ ವಿಶೇಷ ಅಧ್ಯಯನ ವಿಷಯಲು ===
* ಕನ್ನಡ ಸಾಹಿತ್ಯ: ಪ್ರಾಚೀನ,ಮಧ್ಯಕಾಲಿನ ಮತ್ತು ಆಧುನಿಕ, ಭಾಷಾವಿಜ್ಞಾನ,ಛಂದಸ್ಸು,ತೌಲನಿಕ ಕಾವ್ಯ ಮೀಮಾಂಸೆ, [[ಕಂಪ್ಯೂಟರ್]], ಕನ್ನಡ ಸಾಹಿತ್ಯ ಮತ್ತು ಸಮೂಹ ಮಾಧ್ಯಮ,ಭಾಷಾಂತರ.
* ತುಳುವ ಅಧ್ಯಯನ,ಪ್ರಾಧೇಶಿಕ ಅಧ್ಯಯನ ಮತ್ತು ಕೊಡವ ಅಧ್ಯಯನ ಐಚ್ಛಿಕ ಪತ್ರಿಕೆಳು.
ಕನ್ನಡ ಅಧ್ಯಯನ ಸಂಸ್ಥೆತಾ ಅನನ್ಯತೆಲು
* ಅನುಭವಿ ತಜ್ಞ ಪ್ರಾಧ್ಯಾಪಕರ ವ್ರಂಧ.
* ವಿದ್ಯಾರ್ಥಿಲೆನಾ ಬಳಕೆಗೆ ಸುಸಜ್ಜಿತ ಅಂತರ್ಜಾಲ ಸೌಲಭ್ಯವುಂಪುನಾ ಕಂಪ್ಯೂಟರ್ ಲ್ಯಾಬ್.
* ಅತ್ಯಾಧುನಿಕ ಸವಲತ್ತುಗಲು ಉಂಪುನಾ ಛಾಯಾಚಿತ್ರ ಕೊಠಡಿ ಮತ್ತು ರೇಕಾರ್ಡಿಂಗ್ ವ್ಯವಸ್ಥೆ,ಆಡಿಯೋ ವೀಡೀಯೋ ವಿಶುವಲ್ ಮಿನಿ ಥಿಯೇಟರ್,ಸೆಮಿನಾರ್ ಹಾಲ್ ಮತ್ತು ಬಯಲು ರಂಗ ಮಂದಿರ.
ವಿಭಾಗೀಯ ಗ್ರಂಥಾಲಯ
[[File:ತಾಡ ಓಲೆ.jpg|thumb|ತಾಳೆ ಗರಿ ಬರಹ]]
[[File:ವಿಭಾಗ ಗ್ರಂಥಾಲಯ.jpg|thumb|ದುಂಬುದ ಪತ್ರೀಕೆಲು]]
* ಪರಾ ತಾಳೆಗರಿ ಸಂಗ್ರಹ ಬುಕ್ಕ ಸಂರಕ್ಷಣೆ ನವಯುಗ, ಸ್ವದೇಶಾಭಿಮಾನಿ. ಇತ್ತಾದಿ ಪರಾ ಪತ್ರಿಕೆಲೆನಾ ಅಪೂರ್ವ ಸಂಗ್ರಹ.
* ಸಾಹಿತ್ಯ,ಸಂಸ್ಕ್ರತಿ ಮತ್ತು ವಿವಿಧ ವಿಷಯಗಳೊನಾ ಉಪ್ಪುನಾ ಅಮೂಲ್ಯ ಕ್ರತಿಲು, ವಿಶೇಷಾಂಕಲು.
* ಎಂ.ಫಿಲ್,ಪಿ.ಎಚ್ಡಿ, ಸಂಶೋಧನ ಮಹಾಪ್ರಬಂಧಳು, ವಿಚಾರ ಸಂಕಿರಣತ ಪ್ರಬಂಧೊಳು,ದಿನ ಪತ್ರಿಕೆ,ನಿಯತಕಾಲಿಕೆ ಮತ್ತು ಸಾಹಿತ್ಯ ಪತ್ರಿಕೆಗಳ್ ಉಂಡು.
'''ವಿಭಾಗಟು ಉಪ್ಪುನ ಪೀಠೊಲು'''
# [[ಕನಕದಾಸ]] ಸಂಶೋಧನಾ ಕೇಂದ್ರ.
# [[ಶಿವರಾಮ ಕಾರಂತ]] ಆಧ್ಯಯನ ಪೀಠ.
# ಶ್ರೀ [[ಧರ್ಮಸ್ಥಳ]] ಮಂಜುನಾಥೇಶ್ವರ ತುಳು ಅಧ್ಯಯನ ಪೀಠ.
# ಅಂಬಿಗರ ಚೌಡಯ್ಯ ಅಧ್ಯಯನ ಕೇಂದ್ರ.
# ಕೊಡವ ಸಾಂಸ್ಕ್ರತಿಕ ಅಧ್ಯಯನ ಕೇಂದ್ರ.
# ಶ್ರೀ ಪಿ.ಸತೀಶ್ ಪೈ ಮತ್ತು ಪಿ.ದಯಾನಂದ ಪೈ ಯಕ್ಷಗಾನ ಅಧ್ಯಯನ ಕೇಂದ್ರ.
# ಜೈನ ಕವಿ ರತ್ನಾಕರವರ್ಣಿ ಅಧ್ಯಯನ ಪೀಠ.
=== ಕನ್ನಡ ಮ್ಯೂಸಿಯಂ ===
* ಕರಾವಳಿತ ಸಾಂಸ್ಕ್ರತಿಕ ಮಹತ್ವೊನ್ ಸಾರುವುನಾ ಅಪೂರ್ವ ವಸ್ತುಗಳೆನಾ ಸಂಗ್ರಹಾಲಯ. ಕೃಷಿ, [[ಭೂತಾರಾಧನೆ]], ಕೌಟುಂಬಿಕ, ದಾರ್ಮಿಕ, ನಿತ್ಯ ಬಳಕೆತ ವಸ್ತುಲು, ಕಾಷ್ಠಶಿಲ್ಪ ಇಂಚಿನ ವಿವಿಧೊ ಕ್ಷೇತ್ರಗಳೆನ ಸಂಬಂಧಿಸಿದ ಅಪೂರ್ವ ವಸ್ತುಳೆನಾ ಸಂಗ್ರಹ.
===ವಿವಿಧ ಸಂಶೋಧನಾ ಯೋಜನೆಲು===
* ಪಶ್ಚಿಮ ಘಟ್ಟಗಳ ಸಸ್ಯ ಜಾನಪದ.
* ಸಾಹಿತ್ಯ ವಿಮರ್ಶೆಯ ಸಿದ್ಧಾಂತಗಳು
* ಕನ್ನಡ ಭಾಷಾಭೀವೃದ್ಧಿ ಯೋಜನೆ(ದಕ್ಷಿಣ ಕನ್ನಡ,ಉಡುಪಿ ಮತ್ತು ಕೊಡಗು ಜಿಲ್ಲೆಗಳ ಸಾಹಿತ್ಯ ಸಂಸ್ಕ್ರತಿ ಮತ್ತು ಸಾಮಾಜಕ ಅಧ್ಯಯನ).
* ಪಿ.ಎಚ್.ಡಿ.ಸಂಶೋಧನೆ ಕನ್ನಡ ಆಧ್ಯಯನ,ತುಳುವ ಅಧ್ಯಯನ,ಜಾನಪದ ಅಧ್ಯಯನ,ಮಹಿಳಾ ಅಧ್ಯಯನ ಮತ್ತು ಸಾಂಸ್ಕ್ರತಿಕ ಅಧ್ಯಯನಕ್ಕ್ ಮಸ್ತು ಅವಕಾಶ ಉಂಡು.
=== ಪ್ರಸ್ತುತ ವಿಭಾಗೊಡು ಬೇಲೆ ಮಾಳ್ಪುನಾ ಪ್ರಾಧ್ಯಾಪಕೆರ್ ===
# ಪ್ರೊ. ಸಬಿಹಾ ಭೂಮಿಗೌಡ - ಪ್ರಾಧ್ಯಾಪಕರು.
# [[ಕೆ.ಅಭಯ್ ಕುಮಾರ್|ಪ್ರೊ.ಕೆ.ಆಭಯ್ ಕುಮಾರ್]] - ಪ್ರಾಧ್ಯಾಪಕರು (ನಿರ್ದೇಶಕರು ಶ್ರೀ [[ಧರ್ಮಸ್ಥಳ]] ಮಂಜುನಾಥೇಶ್ವರ [[ತುಳು]] ಅಧ್ಯಯನ ಪೀಠ)
# ಪ್ರೊ.ಸೋಮಣ್ಣ ಹೊಂಗಳ್ಳಿ- ಪ್ರಾಧ್ಯಾಪಕರು (ನಿರ್ದೇಶಕರು ಜೈನ ಕವಿ ರತ್ನಾಕರವರ್ಣಿ ಅಧ್ಯಯನ ಪೀಠ, ಅಧ್ಯಕ್ಷರು ಎಸ್.ವಿ.ಪಿ ಕನ್ನಡ ಅಧ್ಯಯನ ಸಂಸ್ಥೆ.)
# ಡಾ. ನಾಗಪ್ಪ ಗೌಡ ಆರ್-ಸಹ ಪ್ರಾಧ್ಯಾಪಕರು,ಎಸ್.ವಿ.ಪಿ ಕನ್ನಡ ಅಧ್ಯಯನ ಸಂಸ್ಥೆ, ಮಂಗಳಗಂಗೋತ್ರಿ
# ಡಾ. [[ಧನಂಜಯ ಕುಂಬ್ಳೆ]]- ಸಹ ಪ್ರಾಧ್ಯಾಪಕರು(ಸಹಾಯಕ ನಿರ್ದೇಶಕರು ಪ್ರಸರಾಂಗ ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯ, ನಿರ್ದೇಶಕರು ಶ್ರೀ ಸತೀಶ್ ಪೈ ಮತ್ತು ದಯಾನಂದ ಪೈ ಯಕ್ಷಗಾನ ಅಧ್ಯಯನ ಕೇಂದ್ರ)
== ಉಲ್ಲೇಕೊಲು ==
{{Reflist}}
[[ವರ್ಗೊ:ವಿದ್ಯಾ ಸಂಸ್ಥೆಲು]]
rc5xmbcy9gn0tl1shywj897rprcc6og
ಟೆಂಪ್ಲೇಟ್:Imbox
10
4906
374578
252224
2026-09-30T16:25:20Z
en>RMCD bot
0
Removing notice of move discussion
252223
wikitext
text/x-wiki
{{#invoke:Message box|imbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
90yqkd9klfkh2s7isb6vikemdvm668g
374579
374578
2026-11-06T05:55:12Z
ChiK
1136
1 revision imported from [[:en:Template:Imbox]]
252223
wikitext
text/x-wiki
{{#invoke:Message box|imbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
90yqkd9klfkh2s7isb6vikemdvm668g
ಟೆಂಪ್ಲೇಟ್:Pp-template
10
5542
374588
368373
2026-11-05T08:31:33Z
en>Xqbot
0
Bot: Fixing double redirect from [[Template:Template-protected]] to [[Template:Protected template]]
374588
wikitext
text/x-wiki
#REDIRECT [[Template:Protected template]]
{{Redirect category shell|
{{R from move}}
}}
427ceenmsmduabnoo537aln3f8wpzy6
374589
374588
2026-11-06T05:55:55Z
ChiK
1136
1 revision imported from [[:en:Template:Pp-template]]
374588
wikitext
text/x-wiki
#REDIRECT [[Template:Protected template]]
{{Redirect category shell|
{{R from move}}
}}
427ceenmsmduabnoo537aln3f8wpzy6
ಟೆಂಪ್ಲೇಟ್:Twinkle standard installation
10
5817
374600
373482
2026-11-02T23:52:42Z
en>Andrybak
0
remove unnecessary category sort key
374600
wikitext
text/x-wiki
{{Mbox
| image = [[File:Twinkle logo.svg|50x40px|alt=Logo of Twinkle|link=]]
| text = Any [[Template:Twinkle standard installation#"Breaking changes"|breaking changes]] to this template, including moving it or nominating it for deletion, {{strong|must be communicated in advance}} to [[Wikipedia:Twinkle|Twinkle]]'s users and maintainers at [[Wikipedia talk:Twinkle]]. The standard installation of Twinkle relies on this template.{{#if:{{{1|}}}|<br>
{{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by Twinkle]]}}}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
aunij4dl41pui2txx6wjtquvvwfhz80
374601
374600
2026-11-06T06:36:38Z
ChiK
1136
1 revision imported from [[:en:Template:Twinkle_standard_installation]]
374600
wikitext
text/x-wiki
{{Mbox
| image = [[File:Twinkle logo.svg|50x40px|alt=Logo of Twinkle|link=]]
| text = Any [[Template:Twinkle standard installation#"Breaking changes"|breaking changes]] to this template, including moving it or nominating it for deletion, {{strong|must be communicated in advance}} to [[Wikipedia:Twinkle|Twinkle]]'s users and maintainers at [[Wikipedia talk:Twinkle]]. The standard installation of Twinkle relies on this template.{{#if:{{{1|}}}|<br>
{{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by Twinkle]]}}}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
aunij4dl41pui2txx6wjtquvvwfhz80
ಮಾದ್ಯಮೊವಿಕಿ:Sitenotice
8
6544
374568
373751
2026-11-06T05:24:30Z
ChiK
1136
374568
wikitext
text/x-wiki
{| style="background-color: light-dark(#f7eecd, #333); color: light-dark(#333, #f7eecd); border: 1px solid #d5ac00; border-radius: 8px; border-right: 4px solid #d5ac00; padding: 2px; font-size: 14px; line-height: 1.5; text-align: center; clear: both;"
| style="width:30%; vertical-align: middle; padding: 0.5em; text-align: left;" | [[File:WLTLC_logo_-_tcy.svg|100px|link=|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ]]
| style="vertical-align: middle; padding: 0.5em; text-align: left;" |{{text|[[ವಿಕಿಪೀಡಿಯ:ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ ವಿಕಿಪೀಡಿಯ ಬರವು ಪಂತೊ]]<br/>
20 ಅಕ್ಟೊಬರ್ - 30 ನವಂಬರ್ 2026 ಮುಟ್ಟ ನಡತೊಂಡ್''' ತೂಲೆ.}}
|}
deotgopqj3glmqdd5b1o3keg0804olo
374569
374568
2026-11-06T05:27:07Z
ChiK
1136
374569
wikitext
text/x-wiki
{| style="width:auto; background-color: light-dark(#f7eecd, #333); color: light-dark(#333, #f7eecd); border: 1px solid #d5ac00; border-radius: 8px; border-right: 4px solid #d5ac00; padding: 2px; font-size: 14px; line-height: 1.5; text-align: center; clear: both;"
| style="width:30%; vertical-align: middle; padding: 0.5em; text-align: center;" | [[File:WLTLC_logo_-_tcy.svg|100px|link=|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ]]
| style="vertical-align: middle; padding: 0.5em; text-align: left;" |{{text|[[ವಿಕಿಪೀಡಿಯ:ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ ವಿಕಿಪೀಡಿಯ ಬರವು ಪಂತೊ]]<br/>
20 ಅಕ್ಟೊಬರ್ - 30 ನವಂಬರ್ 2026 ಮುಟ್ಟ ನಡತೊಂಡ್''' ತೂಲೆ.}}
|}
bsga76ll06l5mx8gwmpnn6izym6m8j0
374570
374569
2026-11-06T05:27:29Z
ChiK
1136
374570
wikitext
text/x-wiki
{| style="width:100%; background-color: light-dark(#f7eecd, #333); color: light-dark(#333, #f7eecd); border: 1px solid #d5ac00; border-radius: 8px; border-right: 4px solid #d5ac00; padding: 2px; font-size: 14px; line-height: 1.5; text-align: center; clear: both;"
| style="width:30%; vertical-align: middle; padding: 0.5em; text-align: center;" | [[File:WLTLC_logo_-_tcy.svg|100px|link=|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ]]
| style="vertical-align: middle; padding: 0.5em; text-align: left;" |{{text|[[ವಿಕಿಪೀಡಿಯ:ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ ವಿಕಿಪೀಡಿಯ ಬರವು ಪಂತೊ]]<br/>
20 ಅಕ್ಟೊಬರ್ - 30 ನವಂಬರ್ 2026 ಮುಟ್ಟ ನಡತೊಂಡ್''' ತೂಲೆ.}}
|}
peo3jd73sbxq8en19ptm34q2757ve73
374571
374570
2026-11-06T05:28:19Z
ChiK
1136
374571
wikitext
text/x-wiki
{| style="width:100%; background-color: light-dark(#f7eecd, #333); color: light-dark(#333, #f7eecd); border: 1px solid #d5ac00; border-radius: 8px; border-right: 4px solid #d5ac00; padding: 2px; font-size: 14px; line-height: 1.5; text-align: center; clear: both;"
| style="width:30%; vertical-align: middle; padding: 0.5em; text-align: center;" | [[File:WLTLC_logo_-_tcy.svg|75px|link=|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ]]
| style="vertical-align: middle; padding: 0.5em; text-align: left;" |{{text|[[ವಿಕಿಪೀಡಿಯ:ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ ವಿಕಿಪೀಡಿಯ ಬರವು ಪಂತೊ]]<br/>
20 ಅಕ್ಟೊಬರ್ - 30 ನವಂಬರ್ 2026 ಮುಟ್ಟ ನಡತೊಂಡ್''' ತೂಲೆ.}}
|}
hcvhddhkpfydpwmjfx5s6b9yrv29dy3
374572
374571
2026-11-06T05:30:37Z
ChiK
1136
rd pd
374572
wikitext
text/x-wiki
{| style="width:100%; background-color: light-dark(#f7eecd, #333); color: light-dark(#333, #f7eecd); border: 1px solid #d5ac00; border-radius: 8px; border-right: 4px solid #d5ac00; padding: 1px; font-size: 14px; line-height: 1.5; text-align: center; clear: both;"
| style="width:30%; vertical-align: middle; padding: 0.1em; text-align: center;" | [[File:WLTLC_logo_-_tcy.svg|75px|link=|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ]]
| style="vertical-align: middle; padding: 0.1em; text-align: left;" |{{text|[[ವಿಕಿಪೀಡಿಯ:ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ ವಿಕಿಪೀಡಿಯ ಬರವು ಪಂತೊ]]<br/>
20 ಅಕ್ಟೊಬರ್ - 30 ನವಂಬರ್ 2026 ಮುಟ್ಟ ನಡತೊಂಡ್''' ತೂಲೆ.}}
|}
a85mbx41rdbe4l4q9pvs7rh39089g9v
374573
374572
2026-11-06T05:36:19Z
ChiK
1136
rd pd
374573
wikitext
text/x-wiki
{| style="width:100%; background-color: light-dark(#f7eecd, #333); color: light-dark(#333, #f7eecd); border: 1px solid #d5ac00; border-radius: 8px; border-right: 4px solid #d5ac00; padding: 1px; font-size: 14px; line-height: 1.5; text-align: center; clear: both;"
| style="width:30%; vertical-align: middle; padding: 0.1em; text-align: center;" | [[File:WLTLC_logo_-_tcy.svg|75px|link=|ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ]]
| style="vertical-align: middle; padding: 0.1em; text-align: left;" |{{text|[[ವಿಕಿಪೀಡಿಯ:ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ|'''ತುಳುವೆರೆ ಬದ್ಕ್ ಬುಕ್ಕೊ ಸಾಂಸ್ಕೃತಿಕ ಪರಂಪರೆ ವಿಕಿಪೀಡಿಯ ಬರವು ಪಂತೊ''']]<br/>
20 ಅಕ್ಟೊಬರ್ - 30 ನವಂಬರ್ 2026 ಮುಟ್ಟ ನಡತೊಂಡ್'''}}
|}
mr9ublpg44weyl3o5acagdi1sos8q6c
ಟೆಂಪ್ಲೇಟ್:Support
10
6741
374563
159626
2026-11-06T01:47:28Z
ChiK
1136
/* */
374563
wikitext
text/x-wiki
{{#switch:{{BASEPAGENAME}}|Requests for new languages|Proposals for closing projects|OTRS={{#if:{{{1|}}}||'''}}|[[File:Symbol support vote.svg|15px|link=|class=noviewer|Support]] '''}}{{{1|ಉಮೇದ್}}}{{#switch:{{BASEPAGENAME}}|Requests for new languages|Proposals for closing projects|OTRS={{#if:{{{1|}}}||'''}}|'''}}<noinclude>{{documentation}}</noinclude>
6ujpe6jkzr592sh97zcvum3s03jgfqv
ಟೆಂಪ್ಲೇಟ್:Tracked
10
8386
374556
349980
2026-11-05T17:35:02Z
ChiK
1136
/* */
374556
wikitext
text/x-wiki
<templatestyles src="Tracked/styles.css" /><div role="note" class="tracked plainlinks {{#if:{{{1|}}}|mw-trackedTemplate}}"> [[phabricator:|ಫ್ಯಾಬ್ರಿಕೇಟರ್ಡ್]] ತೂವೊಲಿ<br />{{#if:{{{1|}}}|<span class="tracked-url">[[phabricator:{{ #ifeq: {{padleft: | 1 | {{ uc: {{{1}}} }} }} | T | {{ uc: {{{1}}} }} | T{{ #expr: {{{1}}} + 2000 }} }}|<span class="trakfab-{{ #ifeq: {{padleft: | 1 | {{ uc: {{{1}}} }} }} | T | {{ uc: {{{1}}} }} | T{{ #expr: {{{1}}} + 2000 }} }}"> ಟಾಸ್ಕ್ {{ #ifeq: {{padleft: | 1 | {{ uc: {{{1}}} }} }} | T | {{ uc: {{{1}}} }} | T{{ #expr: {{{1}}} + 2000 }} }}</span>]]</span>}}<br>{{#switch:{{lc:{{{2|}}}}}
|resolved|fixed=<span class="tracked-closure tracked-resolved">ಪರಿಯಾರೊ ಆತ್ಂಡ್</span>
|invalid=<span class="tracked-closure">Invalid</span>
|duplicate=<span class="tracked-closure">Duplicate</span>
|declined|wontfix=<span class="tracked-closure">Declined</span>
|stalled|later=<span class="tracked-closure">Stalled</span>
|open=<span class="tracked-closure">Open</span>
}}</div><noinclude>
{{documentation}}
</noinclude>
gi8t8vtyt3exlrq7xqd5zlw3idanz25
ವಿಕಿಪೀಡಿಯ:ನಿರ್ವಾಹಕೆರ್ ಆವರ ಬಿನೈತ
4
13065
374554
374550
2026-11-05T14:33:49Z
Babitha Shetty
274
/* Discussion */
374554
wikitext
text/x-wiki
{{Skip to section|1=ನಿರ್ವಾಹಕೆರ್ ಆವರ ಇತ್ತೆದ ನಾಮನಿರ್ದೇಶನೊಲು|2=ಈತ್ತೆದ ನಿರ್ವಾಹಕೆರೆ ಬಿನೈತೊದ ನಾಮನಿರ್ದೇಶನೊಲೆಗ್ ಪೋಲೆ}}
{{Info|ನಾಗರಿಕತೆ ಬೊಕ್ಕ ವೈಯಕ್ತಿಕ ದಾಳಿಲೆನ ನೀತಿಲು ಮುಲ್ಪ ಅನ್ವಯ ಆಪುಂಡು. ಸಂಪಾದಕೆರ್ ಸಾಕ್ಷ್ಯ ಇಜ್ಜಂದಿನ ವೈಯಕ್ತಿಕ ವರ್ತನೆದ ಬಗ್ಗೆ ಆರೋಪ ಮಲ್ಪೆರೆ ಬಲ್ಲಿ. ಒಳಗೊಂಡಿಜ್ಜಂದಿನ ಆಡಳಿತಗಾರೆರ್ ಬೊಕ್ಕ ಅಧಿಕಾರಿಲು ನಡತನ ನೀತಿಲೆನ್ ಬೊಕ್ಕ ಮಾರ್ಗಸೂಚಿಲೆನ್ ಜಾರಿ ಮಲ್ಪೆರೆ ಪ್ರೋತ್ಸಾಹಿಸವೆರ್, ಅಯಿಟ್-ಅಗತ್ಯ ಆನಗ-ಬ್ಲಾಕ್ ಲೆನ್ ಸೇರಾದ್.}}
{{Archive box|
{{Search box|root=ವಿಕಿಪೀಡಿಯ:ನಿರ್ವಾಹಕೆರ್ ಆವರ ಬಿನೈತ/ಆರ್ಕೈವ್|search-width=20|search-button-label=ಪತ್ರಾಗಾರೊಡ್ ನಾಡ್ಲೆ|search-break=yes}}
*[[ವಿಕಿಪೀಡಿಯ:ನಿರ್ವಾಹಕೆರ್ ಆವರ ಬಿನೈತ/ಆರ್ಕೈವ್|ಪಿರಾಕ್ತ ನಿರ್ವಾಹಕೆರ್ ಆವರ ಬಿನೈತದ ಆರ್ಕೈವ್]]
}}
{{TOCright|limit=3}}
'''ನಿರ್ವಾಹಕತ್ವೊಗು ವಿನಂತಿಲು (ನಿಆಬಿ) '''ಪಂಡ ವಿಕಿಪೀಡಿಯ ಸಮುದಾಯೊಡು ಏರ್ ನಿರ್ವಾಹಕೆರ್ ಆಪೆರ್ ಪನ್ಪಿನೆನ್ ನಿರ್ಧರಿಸವುನ ಪ್ರಕ್ರಿಯೆ (ಅಡ್ಮಿನ್ ಲೆನ್ ಲೆಪ್ಪುವೆರ್), ಅಕುಲು ನಿರ್ವಹಣೆಗ್ ಸಹಾಯ ಮಲ್ಪುನ ಹೆಚ್ಚುವರಿ ತಾಂತ್ರಿಕ ವೈಶಿಷ್ಟ್ಯೊಲೆನ್ ಪ್ರವೇಶಿಸವುನ ಬಳಕೆದಾರೆರ್. ಬಳಕೆದಾರೆರ್ ಅಕ್ಲೆನ ಸ್ವಂತ ಆಡಳಿತೊಗು (ಸ್ವಯಂ-ನಾಮನಿರ್ದೇಶನ) ವಿನಂತಿಲೆನ್ ಸಲ್ಲಿಸೊಲಿ ಅತ್ತಂದೆ ಬೇತೆ ಬಳಕೆದಾರೆರ್ ನಾಮನಿರ್ದೇಶನ ಮಲ್ಪೊಲಿ. ನಿಕ್ಲೆನ ವಿನಂತಿನ್ ಸಲ್ಲಿಸವುನ ದುಂಬು ಆಡಳಿತಗಾರೆರೆನ ಓದುನ ಪಟ್ಟಿ, ಎಂಚ ಮಲ್ಪುನ ಮಾರ್ಗದರ್ಶನ, ಬೊಕ್ಕ ಆಡಳಿತಗಾರೆರೆನ ವಿನಂತಿಲೆಗ್ ಮಾರ್ಗದರ್ಶನೊನು ತೆರಿಯೊನೊಡು. ಅಂಚನೆ, ಒಂಜಿ ಆರ್ಎಫ್ಎ ಪಾಸ್ ಆಯೆರೆ ನಿಕ್ಲೆನ ಅವಕಾಶೊಲೆನ್ ಸಮುದಾಯೊಗು ಕೇನೆರೆ ಯೋಚನೆ ಮಲ್ಪುಲೆ.
== ನಿರ್ವಾಹಕೆರ್ನ ಬಗ್ಗೆ ==
ಆಡಳಿತಗಾರೆರೆಗ್ ಕೊರ್ಪಿನ ಹೆಚ್ಚುವರಿ ವೈಶಿಷ್ಟ್ಯೊಲು ಸಮುದಾಯೊಡ್ದ್ ಎಚ್ಚಿನ ಮಟ್ಟೊದ ನಂಬಿಕೆನ್ ಅಗತ್ಯೊ ಉಂಡುಂದು ಪರಿಗಣಿಸವೊಂಡುಂಡು. ಆಡಳಿತಾತ್ಮಕ ಕ್ರಮೊಕುಲು ಸಾರ್ವಜನಿಕವಾದ್ ಲಾಗ್ ಆದ್ ಇಪ್ಪುನಗ ಬೇತೆ ನಿರ್ವಾಹಕೆರ್ ಬೇತೆ ಸಂಪಾದನೆಲೆನಲೆಕನೆ ವಾಪಸ್ ಮಲ್ಪೊಲಿ, ಆಡಳಿತಗಾರೆರೆನ ಕ್ರಮೊಕುಲು ಇಡೀ ಸೈಟ್ ನ್ ಪರಿಣಾಮ ಬೀರುನ ವೈಶಿಷ್ಟ್ಯೊಲೆನ್ ಒಳಗೊಂಡಿಪ್ಪುಂಡು. ಬೇತೆ ಕಾರ್ಯೊಲೆಡ್, ನಿರ್ವಾಹಕೆರ್ ಬಳಕೆದಾರೆರೆನ್ ಸಂಪಾದನೆ ಮಲ್ಪುನ, ಪುಟೊತ ರಕ್ಷಣೆನ್ ನಿಯಂತ್ರಣ ಮಲ್ಪುನ ಬೊಕ್ಕ ಪುಟೊಲೆನ್ ಅಳಿಸವುನ ಜವಾಬ್ದಾರಿನ್ ದೆತೊನುವೆರ್. ಆಂಡಲಾ, ಅಕುಲು ವಿಷಯ ವಿವಾದೊಲೆಡ್ ಅಂತಿಮ ಮಧ್ಯವರ್ತಿಲು ಅತ್ತ್ ಬೊಕ್ಕ ವಿಷಯೊಲೆನ್ ನಿರ್ಧರಿಸರೆ ವಿಶೇಷ ಅಧಿಕಾರೊಲು ಇಜ್ಜಿ, ಪುಟೊಲೆನ್ ರಕ್ಷಣೆ ಮಲ್ಪುನ ಅತ್ತಂದೆ ಅಳಿಸವುನ ಬೊಕ್ಕ ಬಳಕೆದಾರೆರೆಗ್ ನಿಷೇಧೊಲೆನ್ ಅನ್ವಯಿಸವುನ ಮೂಲಕ ಸಮುದಾಯ ಒಮ್ಮತ ಬೊಕ್ಕ ಮಧ್ಯಸ್ಥಿಕೆ ಸಮಿತಿ ತೀರ್ಪುಲೆನ್ ಜಾರಿ ಮಲ್ಪುನ ಬುಕ್ಕೊ.
==ನಿರ್ವಾಹಕೆರ್ ಆವರ ಇತ್ತೆದ ನಾಮನಿರ್ದೇಶನೊಲು==
===[[User:Hariprasad Shetty10|Hariprasad Shetty]]===
{{Userlinks|Hariprasad Shetty10}}
ಯಾನ್ ತುಳು ವಿಕಿಪೀಡಿಯೊಡು ಲೇಖನೊಲೆನ್ ಉಂಡು ಮನ್ಪುನ ಬೊಕ್ಕ ಸುಧಾರಿಸುನ ಮೂಲಕ ಅತ್ತುಡ 'ಎಡಿಟ್-ಎ-ಥಾನ್'ನ್ ಆಯೋಜಿಸುನ ಮೂಲಕ ಸಕ್ರಿಯವಾದ್ ಕೊಡುಗೆ ಕೊರ್ತೆ. ಕುಡ್ಲದ ಸೇಂಟ್ ಅಲೋಶಿಯಸ್ (ಡೀಮ್ಡ್ ಟು ಬಿ ಯೂನಿವರ್ಸಿಟಿ) ಡ್ ಉಪ್ಪುನ 'ವಿಕಿ ಕ್ಲಬ್'ದ ಉಪಾಧ್ಯಕ್ಷ ಆದ್, ವಿಕಿಮೀಡಿಯಾ ಯೋಜನೆಲೆನ್ ಉತ್ತೇಜನೆ ಮನ್ಪರೆ ಬೊಕ್ಕ ಜ್ಞಾನ ಪಟ್ಟುನೆಟ್ ಉಪಕ್ರಮೊಟು ವಿದ್ಯಾರ್ಥಿಲು ಭಾಗವಹಿಸುಲೆಕ್ಕ ಪ್ರೋತ್ಸಾಹ ಮನ್ಪರೆ ಯಾನ್ ಅಕುಲುನೆಟ್ಟ್ ಕೆಲಸ ಮಂತೊಂದು ಉಲ್ಲೆ. ಅತ್ತಂದೆ, ಬೇತೆ ಬೇತೆ ವಿಕಿಮೀಡಿಯಾ ಚಟುವಟಿಕೆಡ್ ಸಂಪನ್ಮೂಲ ವ್ಯಕ್ತಿಯಾದ್, ಕಾರ್ಯಕ್ರಮ ಸಂಘಟಕರಾದ್ ಬೊಕ್ಕ ತೀರ್ಪುಗಾರರಾದ್ ಲಾ ಸೇವೆ ಮಂದೆ. ತುಳು ಬೊಕ್ಕ ಕನ್ನಡ ವಿಕಿಮೀಡಿಯಾ ಯೋಜನೆಲೆಡ್ ಕೊರ್ತಿನ ಕೊಡುಗೆಗಾದ್ ಯಾನ್ ಮನ್ನಣೆನ್ ಪಡೆದೆ. ತುಳು ವಿಕಿಪೀಡಿಯಾದ ನಿರ್ವಹಣೆ ಬೊಕ್ಕ ಅಭಿವೃದ್ಧಿಗ್ ಬೆಂಬಲ ಕೊರ್ರೆ, ಆಡಳಿತಾತ್ಮಕ ಕಾರ್ಯೊಡು ಸಮುದಾಯೊಗ್ ಸಹಾಯ ಮನ್ಪರೆ ಬೊಕ್ಕ ಕೊಡುಗೆದಾರೆರೆಗ್ ಸ್ವಾಗತ ಮನ್ಪುನ ವಾತಾವರಣೊನು ಕಲ್ಪಿಸರೆ ಯಾನ್ 'ನಿರ್ವಾಹಕ' ಹಕ್ಕುಲೆನ್ ಭಿನ್ನಪ ಮಂತೊಂದು ಉಲ್ಲೆ. ಈ ಹಕ್ಕುಲೆನ್ ಜವಾಬ್ದಾರಿಯುತವಾದ್, ನಿಷ್ಪಕ್ಷಪಾತವಾದ್ ಬೊಕ್ಕ ಸಮುದಾಯದ ಒಮ್ಮತ ಬೊಕ್ಕ ವಿಕಿಮೀಡಿಯಾ ನೀತಿಲೆಗ್ ಅನುಗುಣವಾದ್ ಬಳಸರೆ ಯಾನ್ ಬದ್ಧ ಆದುಲ್ಲೆ. ಎನ್ನ ಈ ನಿರ್ವಾಹಕ ಹುದ್ದೆದ ಭಿನ್ನಪಗ್ ಸಮುದಾಯೊದ ಬೆಂಬಲೊನ್ ಕೇನೊಂದು ಉಲ್ಲೆ. ಸೊಲ್ಮೇಲು.<br>
I have actively contributed to Tulu Wikipedia by creating and improving articles and organising edit-a-thons. As the Vice President of the Wiki Club at St. Aloysius (Deemed to be University), Mangaluru, I work with students to promote Wikimedia projects and encourage their participation in knowledge-sharing initiatives. I have also served as a resource person, event organiser, and jury member in various Wikimedia activities, and received recognition for my contributions to Tulu and Kannada Wikimedia projects.I am seeking administrator rights to support the maintenance and development of Tulu Wikipedia, assist the community in administrative tasks, and foster a welcoming environment for contributors. I am committed to using these rights responsibly, impartially, and in accordance with community consensus and Wikimedia policies. I kindly request the community’s support for my administrator application. Thank you for your consideration.--[[ಬಳಕೆದಾರೆ:Hariprasad Shetty10|Hariprasad Shetty10]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Hariprasad Shetty10|ಪಾತೆರ್ಲೆ]]) 15:00, 30 ಅಕ್ಟೋಬರ್ 2026 (IST)
==== Discussion ====
# {{support}} Hariprasad Sir is long time wikimedian actively participating, organizing wiki activities on both Kannada and Tulu wiki projects, would be valued addition to Tulu wikipedia admin team, Thanks for volunteering.<span style="border-bottom: 2px solid cyan; border-top: 2px solid cyan; border-radius: 40px 0px 40px 0px; padding: 0px 5px; font-weight:bold;">- [[User:A826|A826]] · [[user_talk:A826|💬]] · [[Special:Contributions/A826|✍️]]</span> 15:21, 30 ಅಕ್ಟೋಬರ್ 2026 (IST)
# {{support}} ಹರಿಪ್ರಸಾದ್ ಶೆಟ್ಟರಿಗೆ ಅನುಭವ ಹುಮ್ಮಸ್ಸು ಮತ್ತು ತಾಂತ್ರಿಕ ನೈಪುಣ್ಯತೆ ಇದೆ. ಅವರಿಗೆ ನಮ್ಮ ಬೆಂಬಲ. [[ಬಳಕೆದಾರೆ:Mallikarjunasj|Mallikarjunasj]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Mallikarjunasj|ಪಾತೆರ್ಲೆ]]) 16:22, 30 ಅಕ್ಟೋಬರ್ 2026 (IST)
#{{support}} Hariprasad Shetty Sir has been actively contributing to both Tulu and Kannada Wikimedia projects from a long time. He will definitely be a good mentor and a member of admin team.[[ಬಳಕೆದಾರೆ:Reema Jalihal|Reema Jalihal]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Reema Jalihal|ಪಾತೆರ್ಲೆ]]) 16:28, 30 ಅಕ್ಟೋಬರ್ 2026 (IST)
# {{support}} ಹರಿಪ್ರಸಾದ್ ತುಳುಟು ಮಸ್ತ್ ಸಂಪಾದನೆ ಮಲ್ತ್ನಾರ್. ತುಳು ವಿಕಿಪೀಡಿಯಾಗ್ ಪೊಸತನೊ ಬುಕ್ಕೊ ನಾನಾತ್ ತಾಂತ್ರಿಕ ಬೇಲೆ ಈರೆಡ್ದ್ ಬರಡ್. ಈರೆಗ್ ಎನ್ನ ಬೆಂಬಲ ಉಂಡು.--[[ಬಳಕೆದಾರೆ:Vishwanatha Badikana|Vishwanatha Badikana]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Vishwanatha Badikana|ಪಾತೆರ್ಲೆ]]) 17:18, 30 ಅಕ್ಟೋಬರ್ 2026 (IST)
# {{support}} - I fully support Hariprasad Shetty’s application for administrator rights on Tulu Wikipedia. Over the last two years, he has been one of the most active contributors, consistently creating hundreds of articles and improving Tulu Wikipedia. He has also organised several Tulu Wikimedia events and competitions and served as a jury member for numerous edit-a-thons. His dedication, consistent contributions, and active involvement in community-building activities demonstrate his commitment to the growth of Tulu Wikipedia. I strongly believe that Tulu Wikipedia needs dedicated contributors like Hariprasad in administrative roles to strengthen the project and support its community. I endorse his application and wish him the very best. --[[ಬಳಕೆದಾರೆ:Santhosh Notagar99|Santhosh Notagar99]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Santhosh Notagar99|ಪಾತೆರ್ಲೆ]]) 17:26, 30 ಅಕ್ಟೋಬರ್ 2026 (IST)
# {{support}} [[ಬಳಕೆದಾರೆ:ChiK|ChiK]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:ChiK|ಪಾತೆರ್ಲೆ]]) 18:03, 30 ಅಕ್ಟೋಬರ್ 2026 (IST)
#{{support}} Hariprasad shetty has been actively contributing to tulu and kannada wikimedia projects --[[ಬಳಕೆದಾರೆ:Vinoda mamatharai|Vinoda mamatharai]] --([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Vinoda mamatharai|ಪಾತೆರ್ಲೆ]]) 23:54, 1 ನವಂಬರ್ 2026 (IST)
# {{support}}[[ಬಳಕೆದಾರೆ:Pragathi. BH|Pragathi. BH]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Pragathi. BH|ಪಾತೆರ್ಲೆ]]) 23:52, 2 ನವಂಬರ್ 2026 (IST)
# {{support}} Hariprasad sir ಈರ್ ಎಡ್ಮಿನ್ ಅಪುನ ಎಡ್ಡೆ ನಿರ್ಧಾರ ದೆತೊಂಡಾರ್. ನನಾತ್ ಎಡ್ಡೆ ಬೇಲೆ ಇರೆರ್ದ್ ಅವಡ್ ಇರೆಗ್ ಎನ್ನ ಬೆಂಬಲ ಉಂಡು.[[ಬಳಕೆದಾರೆ:Kavitha G. Kana|Kavitha G. Kana]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Kavitha G. Kana|ಪಾತೆರ್ಲೆ]]) 11:21, 3 ನವಂಬರ್ 2026 (IST)
#{{support}}Hariprasad Shetty Sir has been actively contributing to Tulu and Kannada Wikimedia projects for many years. His experience and dedication make him an excellent mentor and a valuable member of the admin team.--[[ಬಳಕೆದಾರೆ:VAISHNU|VAISHNU]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:VAISHNU|ಪಾತೆರ್ಲೆ]]) 21:40, 4 ನವಂಬರ್ 2026 (IST)
# {{support}}--[[ಬಳಕೆದಾರೆ:Yakshitha|Yakshitha]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Yakshitha|ಪಾತೆರ್ಲೆ]]) 08:54, 5 ನವಂಬರ್ 2026 (IST)
# {{support}} Hariprasad Shetty is an active contributor in Tulu and Kannada --[[ಬಳಕೆದಾರೆ:Babitha Shetty|Babitha Shetty]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Babitha Shetty|ಪಾತೆರ್ಲೆ]]) 20:03, 5 ನವಂಬರ್ 2026 (IST)
jvzwh7j3wn65fy1cr34f45qtts4ercx
ಟೆಂಪ್ಲೇಟ್:Protection templates
10
18634
374602
370446
2026-11-05T15:54:44Z
en>Axolitl
0
Use piped links as is recommended for navboxes, so selflinks work
374602
wikitext
text/x-wiki
{{Navbox
| state = {{{state|{{{1|<includeonly>{{#ifeq:{{NAMESPACE}}|Module||collapsed}}</includeonly>}}}}}}
| title = {{c|Protection templates}}
| image<!--left--> = <!--[[File:Padlock.svg|40px|link=|alt=]]-->
| tracking = no <!-- keep all the documented templates out of the hlist tracking category -->
| inner-style = table-format:fixed;
| list1 = <div style="overflow:auto">{{Aligned table
|cols=5 |style=table-format:fixed;border:1px solid #aaa;margin:0 auto<!-- 0.2em-->;
|colstyle=vertical-align:middle;padding-left:1.0em;<!--font-family:monospace;-->padding-right:1.0em;
<!--row#-->
|row1header=on |row1style=padding-bottom:0.25em;border-bottom:1px solid #bbf;
<!-- 1 --> | | Edit | Move | [[Wikipedia:Pending changes|Pending changes]] | Upload
<!-- 2 --> | Generic | {{tla|Protected page|pp}} | {{tla|Move-protected|pp-move}} | {{tla|Pending changes–protected|pp-pc}} | {{tla|Upload-protected|pp-upload}}
<!-- 3 --> | [[Wikipedia:Biographies of living persons|BLP]] | {{tla|Protected biography of a living person|pp-blp}} | – | – | –
<!-- 4 --> | Blocked user's talk page | {{tla|Protected talk page of a blocked user|pp-usertalk}} | – | – | –
<!-- 5 --> | Dispute | {{tla|Protected due to a dispute|pp-dispute}} | {{tla|Move-protected due to a dispute|pp-move-dispute}} | – | –
<!-- 6 --> | [[Wikipedia:Protection policy#Extended confirmed protection|Extended confirmed protection]] | {{tla|Extended confirmed–protected|pp-extended}} | – | – | –
<!-- 7 --> | Indefinite | {{tla|Semi-protected indefinitely|pp-semi-indef}} | – | – | –
<!-- 8 --> | [[Main Page]] image | {{tla|Uploaded from Commons|pp-main-page}} | – | – | –
<!-- 9 --> | [[Wikipedia:Office actions|Office]] | {{tla|Office-protected|pp-office}} | – | – | –
<!-- 10--> | [[Wikipedia:Sockpuppetry|Sockpuppetry]] | {{tla|Protected due to sockpuppetry|pp-sock}} | – | – | –
<!-- 11 --> | Templates and images | {{tla|Protected template|pp-template}} | – | – | {{tla|Upload-protected|pp-upload}}
<!-- 12 --> | Vandalism | {{tla|Protected due to vandalism|pp-vandalism}} | {{tla|Move-protected due to vandalism|pp-move-vandalism}} | – | –
<!-- 13 --> | Talk page | {{tla|Talk page semi-protected indefinitely|Indefinitely protected}} | – | – | –
}}</div>
| below = [[Module:Protection banner]]
}}<noinclude>
{{Documentation|content=
{{Collapsible option |statename=optional |default=collapsed}}
{{Sandbox other||
[[Category:Documentation see also templates]]
[[Category:Wikipedia administration templates]]
}}}}<!--(end Documentation)-->
</noinclude>
mqfx71gkcgagugdq2nkj4xxhvtkqqh6
374603
374602
2026-11-06T06:36:39Z
ChiK
1136
1 revision imported from [[:en:Template:Protection_templates]]
374602
wikitext
text/x-wiki
{{Navbox
| state = {{{state|{{{1|<includeonly>{{#ifeq:{{NAMESPACE}}|Module||collapsed}}</includeonly>}}}}}}
| title = {{c|Protection templates}}
| image<!--left--> = <!--[[File:Padlock.svg|40px|link=|alt=]]-->
| tracking = no <!-- keep all the documented templates out of the hlist tracking category -->
| inner-style = table-format:fixed;
| list1 = <div style="overflow:auto">{{Aligned table
|cols=5 |style=table-format:fixed;border:1px solid #aaa;margin:0 auto<!-- 0.2em-->;
|colstyle=vertical-align:middle;padding-left:1.0em;<!--font-family:monospace;-->padding-right:1.0em;
<!--row#-->
|row1header=on |row1style=padding-bottom:0.25em;border-bottom:1px solid #bbf;
<!-- 1 --> | | Edit | Move | [[Wikipedia:Pending changes|Pending changes]] | Upload
<!-- 2 --> | Generic | {{tla|Protected page|pp}} | {{tla|Move-protected|pp-move}} | {{tla|Pending changes–protected|pp-pc}} | {{tla|Upload-protected|pp-upload}}
<!-- 3 --> | [[Wikipedia:Biographies of living persons|BLP]] | {{tla|Protected biography of a living person|pp-blp}} | – | – | –
<!-- 4 --> | Blocked user's talk page | {{tla|Protected talk page of a blocked user|pp-usertalk}} | – | – | –
<!-- 5 --> | Dispute | {{tla|Protected due to a dispute|pp-dispute}} | {{tla|Move-protected due to a dispute|pp-move-dispute}} | – | –
<!-- 6 --> | [[Wikipedia:Protection policy#Extended confirmed protection|Extended confirmed protection]] | {{tla|Extended confirmed–protected|pp-extended}} | – | – | –
<!-- 7 --> | Indefinite | {{tla|Semi-protected indefinitely|pp-semi-indef}} | – | – | –
<!-- 8 --> | [[Main Page]] image | {{tla|Uploaded from Commons|pp-main-page}} | – | – | –
<!-- 9 --> | [[Wikipedia:Office actions|Office]] | {{tla|Office-protected|pp-office}} | – | – | –
<!-- 10--> | [[Wikipedia:Sockpuppetry|Sockpuppetry]] | {{tla|Protected due to sockpuppetry|pp-sock}} | – | – | –
<!-- 11 --> | Templates and images | {{tla|Protected template|pp-template}} | – | – | {{tla|Upload-protected|pp-upload}}
<!-- 12 --> | Vandalism | {{tla|Protected due to vandalism|pp-vandalism}} | {{tla|Move-protected due to vandalism|pp-move-vandalism}} | – | –
<!-- 13 --> | Talk page | {{tla|Talk page semi-protected indefinitely|Indefinitely protected}} | – | – | –
}}</div>
| below = [[Module:Protection banner]]
}}<noinclude>
{{Documentation|content=
{{Collapsible option |statename=optional |default=collapsed}}
{{Sandbox other||
[[Category:Documentation see also templates]]
[[Category:Wikipedia administration templates]]
}}}}<!--(end Documentation)-->
</noinclude>
mqfx71gkcgagugdq2nkj4xxhvtkqqh6
ಮಾದ್ಯಮೊವಿಕಿ:FileUploadWizard.js
8
22084
374598
308262
2026-11-06T06:18:31Z
ChiK
1136
374598
javascript
text/javascript
/*
* ===============================================================
* FileUploadWizard.js
* Script for uploading files through a dynamic questionnaire.
* This is the code to accompany [[ವಿಕಿಪೀಡಿಯ:ಫೈಲ್ ಅಪ್ಲೋಡ್ ವಿಝಾರ್ಡ್]].
* ===============================================================
*/
var fuwTesting = false;
var fuwDefaultTextboxLength = 60;
var fuwDefaultTextareaWidth = '90%';
var fuwDefaultTextareaLines = 3;
// ================================================================
// Constructor function of global fuw (= File Upload Wizard) object
// ================================================================
function fuwGlobal() {
// see if user is logged in, autoconfirmed, experienced etc.
this.getUserStatus();
fuwSetVisible('warningLoggedOut', (this.userStatus == 'anon'));
fuwSetVisible('warningNotConfirmed', (this.userStatus == 'notAutoconfirmed'));
this.disabled = (this.userStatus == 'anon') || (this.userStatus == 'notAutoconfirmed');
if (this.disabled) {
return;
}
fuwSetVisible('fuwStartScriptLink', false);
// create the form element to wrap the main ScriptForm area
// containing input elements of Step2 and Step3
var frm = fuwGet('fuwScriptForm');
if (! frm) {
frm = document.createElement('form');
frm.id = "fuwScriptForm";
var area = fuwGet('placeholderScriptForm');
var parent = area.parentNode;
parent.insertBefore(frm, area);
parent.removeChild(area);
frm.appendChild(area);
}
this.ScriptForm = frm;
// create the TargetForm element that contains the file selector
frm = fuwGet('TargetForm');
if (! frm) {
frm = document.createElement('form');
frm.id = "TargetForm";
var area = fuwGet('placeholderTargetForm');
var parent = area.parentNode;
parent.insertBefore(frm, area);
parent.removeChild(area);
frm.appendChild(area);
}
this.TargetForm = frm;
// For the testing version, create a third form that will display
// the contents to be submitted, at the bottom of the page
if (fuwTesting) {
frm = fuwGet('fuwTestForm');
if (! frm) {
frm = document.createElement('form');
frm.id = "fuwTestForm";
var area = fuwGet('placeholderTestForm');
var parent = area.parentNode;
parent.insertBefore(frm, area);
parent.removeChild(area);
frm.appendChild(area);
}
this.TestForm = frm;
}
// objects to hold cached results during validation and processing
this.opts = { };
this.warn = { };
// create the input filename box
var filebox = document.createElement('input');
filebox.id = 'file';
filebox.name = 'file';
filebox.type = 'file';
filebox.size = fuwDefaultTextboxLength;
filebox.onchange = fuwValidateFile;
filebox.accept = 'image/png,image/jpeg,image/gif,image/svg+xml,image/tiff,image/x-xcf,application/pdf,image/vnd.djvu,audio/ogg,video/ogg,audio/rtp-midi,audio/mp3,image/webp,video/webm,audio/opus,video/mpeg,audio/wav,audio/flac';
fuwAppendInput('file', filebox);
// Default values for API call parameters
this.UploadOptions = {
filename : '',
text : '',
comment : '',
ignorewarnings : 1,
watch : 1
};
if (fuwTesting) {
fuwMakeHiddenfield('title', mw.config.get('wgPageName') + "/sandbox", 'SandboxTitle');
fuwMakeHiddenfield('token', mw.user.tokens.get('csrfToken'), 'SandboxToken');
fuwMakeHiddenfield('recreate', 1, 'SandboxRecreate');
}
if (fuwTesting) {
// create the sandbox submit button
btn = document.createElement('input');
btn.id = 'SandboxButton';
btn.value = 'Sandbox';
btn.name = 'Sandbox';
btn.disabled = true;
btn.type = 'button';
btn.style.width = '12em';
btn.onclick = fuwSubmitSandbox;
fuwAppendInput('SandboxButton', btn);
}
// create the real submit button
btn = document.createElement('input');
btn.id = "SubmitButton";
btn.value = "Upload";
btn.name = "Upload";
btn.disabled = true;
btn.type = "button";
btn.onclick = fuwSubmitUpload;
btn.style.width = '12em';
fuwAppendInput('SubmitButton', btn);
// create the Commons submit button
btn = document.createElement('input');
btn.id = "CommonsButton";
btn.value = "Upload on Commons";
btn.name = "Upload_on_Commons";
btn.disabled = true;
btn.type = "button";
btn.onclick = fuwSubmitCommons;
btn.style.width = '12em';
fuwAppendInput('CommonsButton', btn);
// create reset buttons
for (i = 1; i<=2; i++) {
btn = document.createElement('input');
btn.id = 'ResetButton' + i;
btn.value = "Reset form";
btn.name = "Reset form";
btn.type = "button";
btn.onclick = fuwReset;
btn.style.width = '12em';
fuwAppendInput('ResetButton' + i, btn);
}
// names of radio button fields
var optionRadioButtons = {
// top-level copyright status choice
'FreeOrNonFree' : ['OptionFree','OptionNonFree','OptionNoGood'],
// main subsections under OptionFree
'FreeOptions' : ['OptionOwnWork', 'OptionThirdParty', 'OptionFreeWebsite',
'OptionPDOld', 'OptionPDOther'],
// main subsections under OptionNonFree
'NonFreeOptions': ['OptionNFSubject','OptionNF3D','OptionNFExcerpt',
'OptionNFCover','OptionNFLogo','OptionNFPortrait',
'OptionNFMisc'],
// response options inside warningFileExists
'FileExistsOptions':
['NoOverwrite','OverwriteSame','OverwriteDifferent'],
// choice of evidence in OptionThirdParty subsection
'ThirdPartyEvidenceOptions' :
['ThirdPartyEvidenceOptionLink',
'ThirdPartyEvidenceOptionOTRS',
'ThirdPartyEvidenceOptionOTRSForthcoming',
'ThirdPartyEvidenceOptionNone'],
// choice of PD status in OptionPDOld subsection
'PDOldOptions' : ['PDUSExpired','PDURAA','PDFormality','PDOldOther'],
// choice of PD status in OptionPDOther subsection
'PDOtherOptions': ['PDOtherUSGov','PDOtherOfficial','PDOtherSimple',
'PDOtherOther'],
// whether target article is wholly or only partly dedicated to discussing non-free work:
'NFSubjectCheck': ['NFSubjectCheckDedicated','NFSubjectCheckDiscussed'],
'NF3DCheck' : ['NF3DCheckDedicated','NF3DCheckDiscussed'],
// choice about copyright status of photograph in OptionNF3D
'NF3DOptions' : ['NF3DOptionFree','NF3DOptionSame']
};
for (var group in optionRadioButtons) {
var op = optionRadioButtons[group];
for (i=0; i<op.length; i++) {
fuwMakeRadiobutton(group, op[i]);
}
}
this.ScriptForm.NoOverwrite.checked = true;
// input fields that trigger special
// onchange() event handlers for validation:
fuwMakeTextfield('InputName', fuwValidateFilename);
fuwMakeTextfield('NFArticle', fuwValidateNFArticle);
// names of input fields that trigger normal
// validation event handler
var activeTextfields = [
'Artist3D','Country3D',
'Date','OwnWorkCreation','OwnWorkPublication',
'Author','Source',
'Permission','ThirdPartyOtherLicense',
'ThirdPartyEvidenceLink','ThirdPartyOTRSTicket',
'FreeWebsiteOtherLicense',
'PDOldAuthorLifetime','Publication',
'PDOldCountry','PDOldPermission',
'PDOfficialPermission','PDOtherPermission',
'NFSubjectPurpose', 'NF3DOrigDate', 'NF3DPurpose',
'NF3DCreator',
'NFPortraitDeceased',
'EditSummary'
];
for (i=0; i<activeTextfields.length; i++) {
fuwMakeTextfield(activeTextfields[i]);
}
// names of multiline textareas
var activeTextareas = [
'InputDesc','NF3DPermission',
'NFCommercial','NFPurpose','NFReplaceableText',
'NFReplaceable','NFCommercial','NFMinimality','AnyOther'
];
for (i=0; i<activeTextareas.length; i++) {
fuwMakeTextarea(activeTextareas[i]);
};
var checkboxes = [
'NFCoverCheckDedicated','NFLogoCheckDedicated','NFPortraitCheckDedicated'
];
for (i=0; i<checkboxes.length; i++) {
fuwMakeCheckbox(checkboxes[i]);
};
var licenseLists = {
'OwnWorkLicense' :
// array structure as expected for input to fuwMakeSelection() function.
// any entry that is a two-element array will be turned into an option
// (first element is the value, second element is the display string).
// Entries that are one-element arrays will be the label of an option group.
// Zero-element arrays mark the end of an option group.
[
['Allow all use as long as others credit you and share it under similar conditions'],
['self|GFDL|cc-by-sa-4.0|migration=redundant',
'Creative Commons Attribution-Share Alike 4.0 + GFDL (recommended)',
true],
['self|cc-by-sa-4.0',
'Creative Commons Attribution-Share Alike 4.0'],
[],
['Allow all use as long as others credit you'],
['self|cc-by-4.0',
'Creative Commons Attribution 4.0'],
[],
['Reserve no rights'],
['self|cc0',
'CC0 Universal Public Domain Dedication'],
[]
],
'ThirdPartyLicense' :
[
['', 'please select the correct license...'],
['Freely licensed:'],
['cc-by-sa-4.0', 'Creative Commons Attribution-Share Alike (cc-by-sa-4.0)'],
['cc-by-4.0', 'Creative Commons Attribution (cc-by-4.0)'],
['GFDL', 'GNU Free Documentation License (GFDL)'],
[],
['No rights reserved:'],
['PD-author', 'Public domain'],
[],
['Other (see below)'],
[]
],
'FreeWebsiteLicense' :
[
['', 'please select the correct license...'],
['Freely licensed:'],
['cc-by-sa-4.0', 'Creative Commons Attribution-Share Alike (cc-by-sa-4.0)'],
['cc-by-4.0', 'Creative Commons Attribution (cc-by-4.0)'],
['GFDL', 'GNU Free Documentation License (GFDL)'],
[],
['No rights reserved:'],
['PD-author', 'Public domain'],
[],
['Other (see below)'],
[]
],
'USGovLicense' :
[
['PD-USGov', 'US Federal Government'],
['PD-USGov-NASA','NASA'],
['PD-USGov-Military-Navy','US Navy'],
['PD-USGov-DOC-NOAA','US National Oceanic and Atmospheric Administration'],
['PD-USGov-Military-Air_Force','US Air Force'],
['PD-USGov-Military-Army','US Army'],
['PD-USGov-Interior-USGS','United States Geological Survey']
],
'IneligibleLicense' :
[
['', 'please select one...'],
['PD-shape','Item consists solely of simple geometric shapes'],
['PD-simple','Item consists solely of a few individual words or letters'],
['PD-textlogo','Logo or similar item consisting solely of letters and simple geometric shapes'],
['PD-chem','Chemical structural formula'],
['PD-ineligible','Other kind of item that contains no original authorship']
],
'NFSubjectLicense' :
[
['', 'please select one...'],
['Non-free 2D art', '2-dimensional artwork (painting, drawing etc.)'],
['Non-free historic image', 'Unique historic photograph'],
['Non-free fair use', 'something else (please describe in description field on top)']
],
'NF3DLicense' :
[
[, 'please select one...'],
['Non-free proposed architecture', 'Architectural proposal (not yet completed)'],
['Non-free destroyed architecture', 'Destroyed (or unrecognizably altered) architecture'],
['Non-free 3D art', 'Other 3-dimensional creative work (sculpture etc.)']
],
'NFCoverLicense' :
[
['', 'please select one...'],
['Non-free book cover', 'Cover page of a book'],
['Non-free album cover', 'Cover of a sound recording (album, single, song, CD)'],
['Non-free video game cover', 'Cover of a video/computer game'],
['Non-free magazine cover', 'Cover page of a magazine'],
['Non-free video cover', 'Cover of a video'],
['Non-free software cover', 'Cover of a software product'],
['Non-free product cover', 'Cover of some commercial product'],
['Non-free title-card', 'Title screen of a TV programme'],
['Non-free film poster', 'Film poster'],
['Non-free poster', 'Official poster of an event'],
['Non-free fair use', 'something else (please describe in description field on top)']
],
'NFExcerptLicense' :
[
['', 'please select one...'],
['Non-free television screenshot', 'Television screenshot'],
['Non-free film screenshot', 'Movie screenshot'],
['Non-free video game screenshot', 'Video game screenshot'],
['Non-free video screenshot', 'Video screenshot'],
['Non-free music video screenshot', 'Music video screenshot'],
['Non-free software screenshot', 'Software screenshot'],
['Non-free web screenshot', 'Website screenshot'],
['Non-free speech', 'Audio excerpt from a speech'],
['Non-free audio sample', 'Sound sample of an audio recording'],
['Non-free video sample', 'Sample extract from a video'],
['Non-free sheet music', 'Sheet music representing a musical piece'],
['Non-free comic', 'Panel from a comic, graphic novel, manga etc.'],
['Non-free computer icon', 'Computer icon'],
['Non-free newspaper image', 'Page from a newspaper'],
['Non-free fair use', 'something else (please describe in description field on top)']
],
'NFLogoLicense' :
[
['Non-free logo', 'Logo of a company, organization etc.'],
['Non-free seal', 'Official seal, coat of arms etc'],
['Non-free symbol', 'Other official symbol']
],
'NFMiscLicense' :
[
['Non-free fair use in', 'something else (please describe in description field on top)'],
['Non-free historic image', 'Historic photograph'],
['Non-free 2D art', '2-dimensional artwork (painting, drawing etc.)'],
['Non-free currency', 'Depiction of currency (banknotes, coins etc.)'],
['Non-free architectural work', 'Architectural work'],
['Non-free 3D art', 'Other 3-dimensional creative work (sculpture etc.)'],
['Non-free book cover', 'Cover page of a book'],
['Non-free album cover', 'Cover of a sound recording(album, single, song, CD)'],
['Non-free game cover', 'Cover of a video/computer game'],
['Non-free magazine cover', 'Cover page of a magazine'],
['Non-free video cover', 'Cover of a video'],
['Non-free software cover', 'Cover of a software product'],
['Non-free product cover', 'Cover of some commercial product'],
['Non-free title-card', 'Title screen of a TV programme'],
['Non-free movie poster', 'Movie poster'],
['Non-free poster', 'Official poster of an event'],
['Non-free television screenshot', 'Television screenshot'],
['Non-free film screenshot', 'Movie screenshot'],
['Non-free game screenshot', 'Game screenshot'],
['Non-free video screenshot', 'Video screenshot'],
['Non-free music video screenshot', 'Music video screenshot'],
['Non-free software screenshot', 'Software screenshot'],
['Non-free web screenshot', 'Website screenshot'],
['Non-free speech', 'Audio excerpt from a speech'],
['Non-free audio sample', 'Sound sample of an audio recording'],
['Non-free video sample', 'Sample extract from a video'],
['Non-free sheet music', 'Sheet music representing a musical piece'],
['Non-free comic', 'Panel from a comic, graphic novel, manga etc.'],
['Non-free computer icon', 'Computer icon'],
['Non-free newspaper image', 'Page from a newspaper'],
['Non-free logo', 'Logo of a company, organization etc.'],
['Non-free seal', 'Official seal, coat of arms etc'],
['Non-free symbol', 'Other official symbol'],
['Non-free sports uniform', 'Sports uniform'],
['Non-free stamp', 'Stamp']
],
'NFExtraLicense' :
[
['', 'none'],
['Crown copyright and other governmental sources'],
['Non-free Crown copyright', 'UK Crown Copyright'],
['Non-free New Zealand Crown Copyright', 'NZ Crown Copyright'],
['Non-free Canadian Crown Copyright', 'Canadian Crown Copyright'],
['Non-free AUSPIC', 'AUSPIC (Australian Parliament image database)'],
['Non-free Philippines government', 'Philippines government'],
['Non-free Finnish Defence Forces', 'Finnish Defence Forces'],
[],
['Other individual sources'],
['Non-free Denver Public Library image', 'Denver Public Library'],
['Non-free ESA media', 'ESA (European Space Agency)'],
[],
['Possibly public domain in other countries'],
['Non-free Old-50', 'Author died more than 50 years ago.'],
['Non-free Old-70', 'Author died more than 70 years ago.'],
[],
['Some permissions granted, but not completely free'],
['Non-free promotional', 'From promotional press kit'],
['Non-free file with no commercial use license', 'Permission granted, but only for educational and/or non-commercial purposes'],
['Non-free file with no derivative works license', 'Permission granted, but no derivative works allowed'],
['Non-free with permission', 'Permission granted, but only for Wikipedia'],
[]
]
};
for (var group in licenseLists) {
fuwMakeSelection(group, licenseLists[group]);
}
this.knownCommonsLicenses = {
'self|GFDL|cc-by-sa-all|migration=redundant' : 1,
'self|Cc-zero' : 1,
'PD-self' : 1,
'self|GFDL|cc-by-sa-4.0|migration=redundant' : 1,
'self|GFDL|cc-by-4.0|migration=redundant' : 1,
'self|GFDL|cc-by-sa-3.0|migration=redundant' : 1,
'self|GFDL|cc-by-3.0|migration=redundant' : 1,
'self|cc-by-sa-4.0' : 1,
'self|cc-by-sa-3.0' : 1,
'cc-by-sa-4.0' : 1,
'cc-by-sa-3.0' : 1,
'cc-by-sa-2.5' : 1,
'cc-by-4.0' : 1,
'cc-by-3.0' : 1,
'cc-by-2.5' : 1,
'FAL' : 1,
'PD-old-100' : 1,
'PD-old' : 1,
'PD-Art' : 1,
'PD-US' : 1,
'PD-USGov' : 1,
'PD-USGov-NASA' : 1,
'PD-USGov-Military-Navy' : 1,
'PD-ineligible' : 1,
'Attribution' : 1,
'Copyrighted free use' : 1
};
// textfields that don't react directly
// to user input and are used only for assembling stuff:
if (fuwTesting) {
fuwMakeTextfield('SandboxSummary', function(){void(0);});
fuwMakeTextarea('SandboxText', function(){void(0);});
fuwGet('SandboxSummary').disabled="disabled";
fuwGet('SandboxText').disabled="disabled";
fuwGet('SandboxText').rows = 12;
}
// set links to "_blank" target, so we don't accidentally leave the page,
// because on some browsers that would destroy all the input the user has already entered
$('.fuwOutLink a').each(function() {
this.target = '_blank';
});
// make main area visible
fuwSetVisible('UploadScriptArea', true);
}
// ======================================
// end of fuwGlobal constructor function
// ======================================
function fuwRadioClick(e) {
var ev = e || event;
var src = ev.target || ev.srcElement;
//alert('onclick event from ' + src + ' (' + src.value + ')');
fuwUpdateOptions();
return true;
}
/*
* =============================================================
* function fuwUpdateOptions
* =============================================================
* This is the onchange event handler for most of the input
* elements in the main form. It changes visibility and disabled
* status for the various sections of the input form in response
* to which options are chosen.
*/
function fuwUpdateOptions() {
var fuw = window.fuw;
var warn = fuw.warn;
var opts = fuw.opts = { };
opts.InputFilename = $('#TargetForm input#file').val();
var widgets = fuw.ScriptForm.elements;
for (i = 0; i < widgets.length; i++) {
var w = widgets[i];
if (w.type == "radio") {
var nm = w.name;
var id = w.id;
var vl = w.checked && !w.disabled && fuwIsVisible(w);
opts[id] = vl;
if (vl) opts[nm] = id;
}
else {
var id = w.id;
var active = !w.disabled && fuwIsVisible(w);
if (active) {
var value = ((type == 'checkbox') ? w.checked : w.value);
opts[id] = value;
}
}
};
opts.MainOption = opts.FreeOptions || opts.NonFreeOptions;
// some parts of the input form are re-used across sections
// and must be moved into the currently active input section:
// minimality section is shared between all NF sections
fuwMove('NFMinimalitySection', 'detailsNFSubject', (opts.OptionNFSubject)) ||
fuwMove('NFMinimalitySection', 'detailsNF3D', (opts.OptionNF3D)) ||
fuwMove('NFMinimalitySection', 'detailsNFExcerpt', (opts.OptionNFExcerpt)) ||
fuwMove('NFMinimalitySection', 'detailsNFCover', (opts.OptionNFCover)) ||
fuwMove('NFMinimalitySection', 'detailsNFLogo', (opts.OptionNFLogo)) ||
fuwMove('NFMinimalitySection', 'detailsNFPortrait', (opts.OptionNFPortrait)) ||
fuwMove('NFMinimalitySection', 'detailsNFMisc', true);
// AnyOtherInfo section is shared between all
fuwMove('AnyOtherInfo', 'detailsOwnWork', opts.OptionOwnWork) ||
fuwMove('AnyOtherInfo', 'detailsThirdParty', opts.OptionThirdParty) ||
fuwMove('AnyOtherInfo', 'detailsFreeWebsite', opts.OptionFreeWebsite) ||
fuwMove('AnyOtherInfo', 'detailsPDOld', opts.OptionPDOld) ||
fuwMove('AnyOtherInfo', 'detailsPDOther', opts.OptionPDOther) ||
fuwMove('AnyOtherInfo', 'detailsNFSubject', opts.OptionNFSubject) ||
fuwMove('AnyOtherInfo', 'detailsNF3D', opts.OptionNF3D) ||
fuwMove('AnyOtherInfo', 'detailsNFExcerpt', opts.OptionNFExcerpt) ||
fuwMove('AnyOtherInfo', 'detailsNFCover', opts.OptionNFCover) ||
fuwMove('AnyOtherInfo', 'detailsNFLogo', opts.OptionNFLogo) ||
fuwMove('AnyOtherInfo', 'detailsNFPortrait', opts.OptionNFPortrait) ||
fuwMove('AnyOtherInfo', 'detailsNFMisc', opts.OptionNFMisc);
// author input field is shared between all sections except "Own Work".
// (will serve for the immediate/photographic author, in those cases where there
// are two author fields)
fuwMove('Author', 'placeholderFreeWebsiteAuthor', (opts.OptionFreeWebsite)) ||
fuwMove('Author', 'placeholderPDOldAuthor', (opts.OptionPDOld)) ||
fuwMove('Author', 'placeholderPDOtherAuthor', (opts.OptionPDOther)) ||
fuwMove('Author', 'placeholderNFSubjectAuthor', (opts.OptionNFSubject)) ||
fuwMove('Author', 'placeholderNF3DAuthor', (opts.OptionNF3D)) ||
fuwMove('Author', 'placeholderNFExcerptAuthor', (opts.OptionNFExcerpt)) ||
fuwMove('Author', 'placeholderNFCoverAuthor', (opts.OptionNFCover)) ||
fuwMove('Author', 'placeholderNFPortraitAuthor', (opts.OptionNFPortrait)) ||
fuwMove('Author', 'placeholderNFMiscAuthor', (opts.OptionNFMisc)) ||
fuwMove('Author', 'placeholderAuthor', true);
// source input field is shared between all sections except "Own Work".
// (will serve for immediate/web source, in those cases where there are two
// source fields involved)
fuwMove('Source', 'placeholderFreeWebsiteSource', (opts.OptionFreeWebsite)) ||
fuwMove('Source', 'placeholderPDOldSource', (opts.OptionPDOld)) ||
fuwMove('Source', 'placeholderPDOtherSource', (opts.OptionPDOther)) ||
fuwMove('Source', 'placeholderNFSubjectSource', (opts.OptionNFSubject)) ||
fuwMove('Source', 'placeholderNF3DSource', (opts.OptionNF3D)) ||
fuwMove('Source', 'placeholderNFExcerptSource', (opts.OptionNFExcerpt)) ||
fuwMove('Source', 'placeholderNFCoverSource', (opts.OptionNFCover)) ||
fuwMove('Source', 'placeholderNFLogoSource', (opts.OptionNFLogo)) ||
fuwMove('Source', 'placeholderNFPortraitSource', (opts.OptionNFPortrait)) ||
fuwMove('Source', 'placeholderNFMiscSource', (opts.OptionNFMisc)) ||
fuwMove('Source', 'placeholderSource', true);
// date input field is shared between all sections except "Logo", which doesn't need it.
// will serve for derived/photographic date in the case of 3D items
fuwMove('Date', 'placeholderFreeWebsiteDate', (opts.OptionFreeWebsite)) ||
fuwMove('Date', 'placeholderThirdPartyDate', (opts.OptionThirdParty)) ||
fuwMove('Date', 'placeholderPDOldDate', (opts.OptionPDOld)) ||
fuwMove('Date', 'placeholderPDOtherDate', (opts.OptionPDOther)) ||
fuwMove('Date', 'placeholderNFSubjectDate', (opts.OptionNFSubject)) ||
fuwMove('Date', 'placeholderNF3DDate', (opts.OptionNF3D)) ||
fuwMove('Date', 'placeholderNFExcerptDate', (opts.OptionNFExcerpt)) ||
fuwMove('Date', 'placeholderNFCoverDate', (opts.OptionNFCover)) ||
fuwMove('Date', 'placeholderNFPortraitDate', (opts.OptionNFPortrait)) ||
fuwMove('Date', 'placeholderNFMiscDate', (opts.OptionNFMisc)) ||
fuwMove('Date', 'placeholderDate', true);
// permission field is shared between ThirdParty and FreeWebsite sections
fuwMove('Permission', 'placeholderFreeWebsitePermission', (opts.OptionFreeWebsite)) ||
fuwMove('Permission', 'placeholderPermission', true);
// publication field is shared between PDOld, NFPortrait and NFMisc
fuwMove('Publication', 'placeholderNFPortraitPublication', (opts.OptionNFPortrait)) ||
fuwMove('Publication', 'placeholderNFMiscPublication', (opts.OptionNFMisc)) ||
fuwMove('Publication', 'placeholderPublication', true);
// Purpose, Commercial, Replaceable and ReplaceableText FUR fields are shared
// between some but not all of the non-free sections
fuwMove('NFPurpose', 'placeholderNFExcerptPurpose', (opts.OptionNFExcerpt)) ||
fuwMove('NFPurpose', 'placeholderNFPurpose');
fuwMove('NFCommercial', 'placeholderNFPortraitCommercial', (opts.OptionNFPortrait)) ||
fuwMove('NFCommercial', 'placeholderNFCommercial');
fuwMove('NFReplaceable', 'placeholderNFPortraitReplaceable', (opts.OptionNFPortrait)) ||
fuwMove('NFReplaceable', 'placeholderNFReplaceable');
fuwMove('NFReplaceableText', 'placeholderNFExcerptReplaceable', (opts.OptionNFExcerpt)) ||
fuwMove('NFReplaceableText', 'placeholderNFReplaceableText', true);
// submit button goes to Step1 if user has chosen a plain overwrite of an existing file,
// and to the active section of Step3 if otherwise
fuwMove('fuwSubmit', 'UploadScriptStep1', (warn.ImageExists && opts.OverwriteSame)) ||
fuwMove('fuwSubmit', 'detailsOwnWork', opts.OptionOwnWork) ||
fuwMove('fuwSubmit', 'detailsThirdParty', opts.OptionThirdParty) ||
fuwMove('fuwSubmit', 'detailsFreeWebsite', opts.OptionFreeWebsite) ||
fuwMove('fuwSubmit', 'detailsPDOld', opts.OptionPDOld) ||
fuwMove('fuwSubmit', 'detailsPDOther', opts.OptionPDOther) ||
fuwMove('fuwSubmit', 'detailsNFSubject', opts.OptionNFSubject) ||
fuwMove('fuwSubmit', 'detailsNF3D', opts.OptionNF3D) ||
fuwMove('fuwSubmit', 'detailsNFExcerpt', opts.OptionNFExcerpt) ||
fuwMove('fuwSubmit', 'detailsNFCover', opts.OptionNFCover) ||
fuwMove('fuwSubmit', 'detailsNFLogo', opts.OptionNFLogo) ||
fuwMove('fuwSubmit', 'detailsNFPortrait', opts.OptionNFPortrait) ||
fuwMove('fuwSubmit', 'fuwSubmitHost', true);
// Show and hide warnings:
// filename-related warnings:
fuwSetVisible('warningIllegalChars', warn.IllegalChars);
fuwSetVisible('warningBadFilename', warn.BadFilename);
fuwSetVisible('warningImageOnCommons', warn.ImageOnCommons);
fuwSetVisible('warningImageExists', warn.ImageExists);
fuwMove('warningImageThumb', 'warningImageOnCommons', warn.ImageOnCommons, true) ||
fuwMove('warningImageThumb', 'warningImageExists', true, true);
// notices related to the top-level options:
fuwSetVisible('warningWhyNotCommons', opts.OptionFree);
fuwSetVisible('warningNF', opts.OptionNonFree);
fuwSetVisible('warningNoGood', opts.OptionNoGood);
// warnings related to non-free "used in" article
fuwSetVisible('warningNFArticleNotFound', warn.NFArticleNotFound);
fuwSetVisible('warningNFArticleNotMainspace', warn.NFArticleNotMainspace);
fuwSetVisible('warningUserspaceDraft', warn.UserspaceDraft);
fuwSetVisible('warningNFArticleDab', warn.NFArticleDab);
fuwSetVisible('NFArticleOK', warn.NFArticleOK);
// warnings depending on user status:
if (fuw.userStatus.match(/problem|newbie|notAutoconfirmed/)) {
fuwSetVisible('warningFreeWebsite', opts.OptionFreeWebsite);
fuwSetVisible('warningOwnWork', opts.OptionOwnWork);
fuwSetVisible('warningPDOther', opts.OptionPDOther);
fuwSetVisible('warningNFSubject', opts.OptionNFSubject);
}
// hide main sections in case of intended plain overwrite:
fuwSetVisible('UploadScriptStep2', !(warn.ImageExists && opts.OverwriteSame));
fuwSetVisible('UploadScriptStep3', !(warn.ImageExists && opts.OverwriteSame));
// show/hide top-level options
fuwSetVisible('detailsFreeStatus', opts.OptionFree);
fuwSetVisible('sendToCommons', opts.OptionFree);
// show/hide details sections
fuwSetVisible('detailsNFArticle', opts.OptionNonFree);
fuwSetVisible('detailsNFWorkType', opts.OptionNonFree);
fuwSetVisible('detailsOwnWork', opts.OptionOwnWork);
fuwSetVisible('detailsThirdParty', opts.OptionThirdParty);
fuwSetVisible('detailsFreeWebsite', opts.OptionFreeWebsite);
fuwSetVisible('detailsPDOld', opts.OptionPDOld);
fuwSetVisible('detailsPDOther', opts.OptionPDOther);
fuwSetVisible('detailsNFSubject', opts.OptionNFSubject);
fuwSetVisible('detailsNF3D', opts.OptionNF3D);
fuwSetVisible('detailsNFExcerpt', opts.OptionNFExcerpt);
fuwSetVisible('detailsNFCover', opts.OptionNFCover);
fuwSetVisible('detailsNFLogo', opts.OptionNFLogo);
fuwSetVisible('detailsNFPortrait', opts.OptionNFPortrait);
fuwSetVisible('detailsNFMisc', opts.OptionNFMisc);
fuwSetVisible('EditSummaryDiv', opts.OverwriteSame || opts.OverwriteDifferent);
// set enabled/disabled
// It might be useful to adapt this to be more liberal about
// the order of input, at least for experienced users.
//fuwSetEnabled('Artist3D', opts.PD3D);
//fuwSetEnabled('Country3D', opts.FOP3D);
fuwSetEnabled('ThirdPartyEvidenceLink', opts.ThirdPartyEvidenceOptionLink);
fuwSetEnabled('ThirdPartyOTRSTicket', opts.ThirdPartyEvidenceOptionOTRS);
fuwSetEnabled('NFSubjectPurpose', opts.NFSubjectCheckDiscussed);
fuwSetEnabled('NF3DPurpose', opts.NF3DCheckDiscussed);
fuwSetEnabled('NF3DPermission', opts.NF3DOptionFree);
fuwSetEnabled('USGovLicense', opts.PDOtherUSGov);
fuwSetEnabled('PDOfficialPermission', opts.PDOtherOfficial);
fuwSetEnabled('IneligibleLicense', opts.PDOtherSimple);
fuwSetEnabled('PDOtherPermission', opts.PDOtherOther);
fuwSetEnabled('AnyOther', true);
// need to re-collect the remaining (non-radiobutton) input into the opts object again,
// preparing for validation:
for (i = 0; i < widgets.length; i++) {
var w = widgets[i];
var type = w.type;
if (type != "radio") {
var id = w.id;
var active = !w.disabled && fuwIsVisible(w);
if (active) {
var value = ((type == 'checkbox') ? w.checked : w.value);
opts[id] = value;
}
}
};
// final step of validation: check if input is sufficient for
// setting the submit buttons active
var valid = fuw.validateInput();
var validForCommons = valid && opts.OptionFree && !(opts.OverwriteSame || opts.OverwriteDifferent)
&& !opts.ThirdPartyEvidenceOptionNone;
fuwSetVisible('sendToCommons', opts.OptionFree);
fuwSetEnabled('CommonsButton', validForCommons);
fuwGet('fuwSubmitText').innerHTML = opts.OptionFree ?
("<b>No</b>, I want to upload this file here on this wiki only.<br/>" +
"<small>This way it can be used only on the English Wikipedia. However, somebody " +
"else might still decide to copy it to Commons or use it elsewhere later. If you " +
"do not want your file to be copied to Commons and deleted locally, consider adding " +
"{{tl|Keep local}}.</small>") :
"Upload this file.";
fuwGet('SubmitButton').value = validForCommons ? "Upload locally" : "Upload";
fuwSetEnabled('EditSummary', true);
fuwSetEnabled('SubmitButton', valid && (fuw.userStatus != 'notAutoconfirmed'));
if (fuwTesting) {
fuwSetEnabled('SandboxButton', valid);
}
// if we're in testing mode, update the Sandbox display fields
// after each input change. In normal mode, collectInput() will
// only be needed on submit.
if (fuwTesting) {
fuw.collectInput();
fuw.formatOutput(false);
fuwSetVisible('placeholderTestForm', true);
}
}
// ============================================================
// methods of the global fuw object
// ============================================================
// ============================================================
// report validation status of filename information
// ============================================================
// This is called from within fuw.validateInput(), i.e. every
// time anything in the whole form is changed. It only reports
// results that have previously been cached in the opts and warn
// objects. The actual checking is done in the event handler
// of the file input boxes.
fuwGlobal.prototype.hasValidFilename = function() {
var opts = this.opts;
var warn = this.warn;
var valid =
opts.InputName &&
opts.InputFilename &&
!warn.BadFilename &&
!warn.ImageOnCommons &&
// if image exists on enwiki, accept only if user has confirmed overwrite:
!(warn.ImageExists && !(opts.OverwriteSame || opts.OverwriteDifferent));
//alert("HasValidFilename: " + valid);
return valid;
};
// ============================================================
// validation status for common input elements for all free
// options
// ============================================================
fuwGlobal.prototype.hasValidCommonFreeInput = function() {
var opts = this.opts;
var warn = this.warn;
var valid = opts.InputDesc;
//alert("HasValidCommonFreeInput: " + valid);
return valid;
};
// ============================================================
// validation status for common input elements for all non-free
// options
// ============================================================
fuwGlobal.prototype.hasValidCommonNFInput = function() {
var opts = this.opts;
var warn = this.warn;
var valid =
opts.OptionNonFree &&
opts.InputDesc &&
opts.NFArticle &&
opts.Source &&
opts.NFMinimality &&
!warn.NFArticleNotFound &&
!warn.NFArticleNotMainspace &&
!warn.NFArticleDab;
//alert("hasValidCommonNFInput: " + valid);
return valid;
};
// ============================================================
// Main validation routine. Modify this to tweak which fields
// are to be considered obligatory for each case group
// ============================================================
fuwGlobal.prototype.validateInput = function() {
var opts = this.opts;
var warn = this.warn;
var valid = (
this.hasValidFilename()
&&
(! (opts.OverwriteDifferent && ! opts.EditSummary))
&&
(
( // overwriting is okay if there is an edit summary
opts.OverwriteSame && opts.EditSummary
)
||
( // free options
this.hasValidCommonFreeInput() &&
(
(opts.OptionOwnWork &&
opts.Date &&
opts.OwnWorkLicense)
||
(opts.OptionThirdParty &&
opts.Author &&
opts.Source &&
opts.Permission &&
(opts.ThirdPartyOtherLicense || opts.ThirdPartyLicense) &&
((opts.ThirdPartyEvidenceOptionLink && opts.ThirdPartyEvidenceLink) ||
opts.ThirdPartyEvidenceOptionOTRS ||
opts.ThirdPartyEvidenceOptionOTRSForthcoming ||
opts.ThirdPartyEvidenceOptionNone))
||
(opts.OptionFreeWebsite &&
opts.Author &&
opts.Source &&
(opts.FreeWebsiteOtherLicense || opts.FreeWebsiteLicense) &&
opts.Permission)
||
(opts.OptionPDOld &&
opts.Author &&
opts.PDOldAuthorLifetime &&
opts.Publication &&
opts.Date &&
opts.Source &&
opts.PDOldOptions &&
(! (opts.PDOldOther && ! opts.PDOldPermission)))
||
(opts.OptionPDOther &&
opts.Author &&
opts.Source &&
((opts.PDOtherUSGov && opts.USGovLicense) ||
(opts.PDOtherOfficial && opts.PDOfficialPermission) ||
(opts.PDOtherSimple && opts.IneligibleLicense) ||
(opts.PDOtherOther && opts.PDOtherPermission)))
)
) // end of free options
||
( // non-free options
this.hasValidCommonNFInput() &&
(
(opts.OptionNFSubject &&
opts.NFSubjectLicense &&
opts.Author &&
(opts.NFSubjectCheckDedicated ||
(opts.NFSubjectCheckDiscussed && opts.NFSubjectPurpose)))
||
(opts.OptionNF3D &&
opts.NF3DLicense &&
opts.NF3DCreator &&
opts.Author &&
(opts.NF3DOptionSame ||
(opts.NF3DOptionFree || opts.NF3DPermission)) &&
(opts.NF3DCheckDedicated ||
(opts.NF3DCheckDiscussed && opts.NF3DPurpose)))
||
(opts.OptionNFExcerpt &&
opts.NFExcerptLicense &&
opts.Author &&
opts.NFPurpose)
||
(opts.OptionNFCover &&
opts.NFCoverLicense &&
opts.Author &&
opts.NFCoverCheckDedicated
)
||
(opts.OptionNFLogo &&
opts.NFLogoLicense &&
opts.NFLogoCheckDedicated
)
||
(opts.OptionNFPortrait &&
opts.Publication &&
opts.NFPortraitDeceased &&
opts.Author &&
opts.NFPortraitCheckDedicated &&
opts.NFReplaceable &&
opts.NFCommercial)
||
(opts.OptionNFMisc &&
opts.NFMiscLicense &&
opts.Author &&
opts.Publication &&
opts.NFPurpose &&
opts.NFReplaceableText &&
opts.NFReplaceable &&
opts.NFCommercial)
)
) // end of non-free options
)
);
return valid;
};
// =============================================================
// return which template name will be used as the main
// description template
// =============================================================
fuwGlobal.prototype.getDescriptionTemplateName = function() {
// standard "Information" template for free files:
if (this.opts.OptionFree) return "Information";
// experimental new version of fair-use rationale template,
// designed to fit the fields used in the wizard
else if (this.opts.OptionNonFree) return "Non-free use rationale 2";
return undefined;
};
// =============================================================
// get the license tag code from the appropriate input element
// =============================================================
fuwGlobal.prototype.getStandardLicense = function() {
var opts = this.opts;
}
fuwGlobal.prototype.getLicense = function() {
var opts = this.opts;
// ThirdParty and FreeWebsite have alternative input fields
// for manual entry of other licenses:
var license = {};
if (opts.PDOtherOther || opts.PDOldOther) {
license.special = opts.PDOtherOther ? opts.PDOtherPermission : opts.PDOldPermission;
if (! (license.special.match(/^\s*\{\{.+\}\}\s*$/))) {
license.special = '{{PD-because|' + license.special + '}}';
}
}
else {
license.special =
opts.ThirdPartyOtherLicense ||
opts.FreeWebsiteOtherLicense ||
(opts.PDOtherOfficial ? ('{{PD-because|official item legally exempt from copyright in its country of origin}}') : null) ||
(opts.OptionNFPortrait ? ('{{Non-free biog-pic|' + opts.NFArticle + '}}') : null);
}
if (! license.special) {
// standard, non-parametrized tag licenses from dropdownbox.
var simpleLicense = (opts.OptionOwnWork ? opts.OwnWorkLicense : null) ||
(opts.OptionThirdParty ? opts.ThirdPartyLicense : null) ||
(opts.OptionFreeWebsite ? opts.FreeWebsiteLicense : null) ||
(opts.OptionNFSubject ? opts.NFSubjectLicense : null) ||
(opts.OptionNF3D ? opts.NF3DLicense : null) ||
(opts.OptionNFExcerpt ? opts.NFExcerptLicense : null) ||
(opts.OptionNFCover ? opts.NFCoverLicense : null) ||
(opts.OptionNFLogo ? opts.NFLogoLicense : null) ||
(opts.OptionNFMisc ? opts.NFMiscLicense : null) ||
(opts.PDOtherUSGov ? opts.USGovLicense : null) ||
(opts.PDOtherSimple ? opts.IneligibleLicense : null) ||
(opts.PDUSExpired ? 'PD-US-expired' : null) ||
(opts.PDURAA ? 'PD-URAA' : null) ||
(opts.PDFormality ? 'PD-US' : null);
// "PD-author" needs parameter, at least on Commons
if (simpleLicense == 'PD-author') {
license.special = '{{PD-author|' + opts.Author + '}}';
}
else if (this.knownCommonsLicenses[simpleLicense]) {
// make sure we send only those licenses as "standard" licenses
// that exist in the Commons license dropdown box
license.standard = simpleLicense;
}
else {
license.special = '\{\{' + simpleLicense + '\}\}';
}
}
return license;
};
function fuwSubst(template) {
return '{{subst:' + template + '}}';
}
// ===================================================================
// Produce code for local tracking categories
// ===================================================================
fuwGlobal.prototype.getTrackingCategory = function() {
var opts = this.opts;
var cat = "";
if (opts.OptionFreeWebsite) { cat = "Files from freely licensed external sources"; }
else if (opts.OptionThirdParty) { cat = "Files licensed by third parties"; }
else if (opts.PDOtherOther || opts.PDOldOther) { cat = "Files with non-standard public domain statements"; }
else if (opts.OptionNFSubject || opts.OptionNF3D) { cat = "Non-free files uploaded as object of commentary"; }
if (cat) {
cat = "\n\{\{Category ordered by date|" + cat + "|" +
fuwSubst("CURRENTYEAR") + "|" + fuwSubst("CURRENTMONTH") + "|" + fuwSubst("CURRENTDAY2") + "\}\}";
}
return cat;
};
// ===================================================================
// Get or create an edit summary for the upload
// ===================================================================
// Note: if we work with the api.php interface, we can have separate
// data for the edit summary and the description page, which is far
// better than the way the index.php interface does it.
// TO DO: need to actually define an input element for a manually
// entered edit summary. Must be obligatory when overwriting files.
// In other cases we'll use an automatic edit summary.
// ===================================================================
fuwGlobal.prototype.getEditSummary = function() {
var opts = this.opts;
return (
(opts.EditSummary ? (opts.EditSummary + ' ([[' + mw.config.get('wgPageName') + '|File Upload Wizard]])') : null)||
("Uploading " +
(
(opts.OptionOwnWork ? 'a self-made file ' : false) ||
(opts.OptionThirdParty ? 'a free file from somebody else ' : false) ||
(opts.OptionFreeWebsite ? 'a file from a free published source ' : false) ||
(opts.OptionPDOld ? 'an old public-domain work ' : false) ||
(opts.OptionPDOther ? 'a public-domain item ' : false) ||
(opts.OptionNFSubject ? 'a non-free work, as object of commentary ' : false) ||
(opts.OptionNF3D ? 'a depiction of a non-free 3D artwork ' : false) ||
(opts.OptionNFExcerpt ? 'an excerpt from a non-free work ' : false) ||
(opts.OptionNFCover ? 'a piece of non-free cover art ' : false) ||
(opts.OptionNFLogo ? 'a non-free logo ' : false) ||
(opts.OptionNFPortrait ? 'a non-free historic portrait ' : false) ||
(opts.OptionNFMisc ? 'a non-free file ' : "")
)
+
("using [[" + mw.config.get('wgPageName') + "|File Upload Wizard]]")
));
};
function fuwPackInfo(text, forCommons) {
if (forCommons) {
// reformat wikilinks embedded in description fields to adapt them for Commons
text = text.replace(/\[\[([^\]]+)\]\]/g,
function(str, p1, offset, s) {
// mark File links as local
if (p1.match(/^:(File|Image):/)) {
return "[[:en" + p1 + "]]";
}
// leave prefixed links unchanged:
else if (p1.match(/^:[\w\-]+:/)) {
return str;
}
// if the link is piped, add a prefix only
else if (p1.match(/.+\|/)) {
return "[[:en:" + p1 + "]]";
}
// introduce a pipe
else {
return "[[:en:" + p1 + "|" + p1 + "]]";
}
}
);
return "{{en|" + text + "}}";
} else return text;
}
// ================================================================
// This is the main method called by the event handler for the
// (experimental) submit button. Its main task is to collect the
// input into a single string of wikitext for the description page.
// ================================================================
fuwGlobal.prototype.collectInput = function() {
var opts = this.opts;
// object representing template fields for filling in
// the description template. Pre-loaded with some
// standard settings:
var descFields = this.descFields = {
'Description' : opts.InputDesc,
'Author' : opts.Author,
'Date' : opts.Date,
'Source' : opts.Source
};
// "other information" (outside the template)
this.otherInfo = null;
if (opts.OptionNonFree) {
descFields.Article = opts.NFArticle;
}
// add/modify option-specific fields:
switch (opts.MainOption) {
case 'OptionOwnWork':
// use standard "source" field for optional "how created?" and
// "previously published" input fields.
descFields.Source = fuwAppendLines([
(opts.OwnWorkCreation || "{{own}}"),
"<br/>\n",
fuwSurroundString("'''Previously published:''' ", opts.OwnWorkPublication)]);
var username = mw.user.getName();
descFields.Author = '[[User:' + username + '|' + username + ']]';
break;
case 'OptionThirdParty':
// use standard "permission" field for a compilation of the
// "permission" input field and the various "evidence" options
var evidence = (
opts.ThirdPartyEvidenceOptionLink ?
("The license statement can be found online at: " + opts.ThirdPartyEvidenceLink) :
(opts.ThirdPartyEvidenceOptionOTRS ?
("The license agreement has been forwarded to OTRS." +
fuwSurroundString(" Ticket: ", opts.ThirdPartyOTRSTicket) + "\{\{OTRS pending|year=" + fuwSubst("CURRENTYEAR") +
"|month=" + fuwSubst("CURRENTMONTH") +
"|day=" + fuwSubst("CURRENTDAY2") + "\}\}") :
(opts.ThirdPartyEvidenceOptionOTRSForthcoming ?
"The license agreement will be forwarded to OTRS shortly. \{\{OTRS pending|year=" + fuwSubst("CURRENTYEAR") +
"|month=" + fuwSubst("CURRENTMONTH") +
"|day=" + fuwSubst("CURRENTDAY2") + "\}\}" :
(opts.ThirdPartyEvidenceOptionNone ?
"Will be provided on request." : null))));
descFields.Permission = fuwAppendLines([
opts.ThirdPartyPermission,
"<br/>\n",
fuwSurroundString("'''Evidence:''' ", evidence)]);
break;
case 'OptionFreeWebsite':
descFields.Permission = opts.Permission;
break;
case 'OptionPDOld':
// add "lifetime" input to "author" field
descFields.Author = fuwAppendLines([
opts.Author,
"<br/>\n",
fuwSurroundString("(Life time: ", opts.PDOldAuthorLifetime, ")")
]);
// combine original and direct source into standard "source" field:
descFields.Source = fuwAppendLines([
fuwSurroundString("'''Original publication''': ", opts.Publication),
"<br/>\n",
fuwSurroundString("'''Immediate source''': ", opts.Source)
]);
// no standard tag available for "lack-of-registration" PD-US. Need
// to put this into the "permission" field
if (opts.PDFormality)
descFields.Permission =
"Copyright expired because the work was published without a copyright " +
"notice and/or without the necessary copyright registration.";
// add optional "explanation" input to "permission" field
if (opts.PDOldPermission) {
descFields.Permission = fuwAppendLines([
descFields.Permission,
"\n\n",
opts.PDOldPermission
]);
}
break;
case 'OptionPDOther':
// Need "permission" field in case of "official item" option
if (opts.PDOtherOfficial)
descFields.Permission = opts.PDOfficialPermission;
break;
case 'OptionNFSubject':
// most FUR elements can be automatically provided:
descFields.Purpose = (
opts.NFSubjectCheckDedicated ?
("For visual identification of the object of the article. " +
"The article as a whole is dedicated specifically to a discussion of this work.") :
(opts.NFSubjectCheckDiscussed ?
("To support encyclopedic discussion of this work in this article. " +
"The illustration is specifically needed to support the following point(s): " +
"<br/>\n" + opts.NFSubjectPurpose) : null)
);
descFields.Replaceability = "Any derivative work based upon the artwork would be a copyright violation, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution image of the artwork will not impact the commercial viability of the art.";
break;
case 'OptionNF3D':
// complex case: we need to assemble attribution and FUR both for the
// original 3D work and for the photographic depiction. Both might be
// non-free.
descFields.Author = fuwAppendLines([
fuwSurroundString("'''Original work:''' ", opts.NF3DCreator),
"<br/>\n",
fuwSurroundString("'''Depiction:''' ", opts.Author)
]);
descFields.Date = fuwAppendLines([
fuwSurroundString("'''Original work:''' ", opts.NF3DOrigDate),
"<br/>\n",
fuwSurroundString("'''Depiction:''' ", opts.Date)
]);
descFields.Purpose = (
opts.NF3DCheckDedicated ?
("For visual identification of the object of the article. " +
"The article as a whole is dedicated specifically to a discussion of this work.") :
(opts.NF3DCheckDiscussed ?
("To support encyclopedic discussion of this work in this article. " +
"The illustration is specifically needed to support the following point(s): " +
"<br/>\n" + opts.NF3DPurpose) : null)
);
descFields.Replaceability = "Any derivative work based upon the artwork would be a copyright violation, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution image of the artwork will not impact the commercial viability of the art.";
descFields["Other information"] = (
opts.NF3DOptionSame ?
("The image was created and published by the same author who also " +
"holds the rights to the original object, and no alternative depiction " +
"could be suitably created.") :
("The author of the image has released the photographic work under a " +
"free license, or it is in the public domain: " + opts.NF3DPermission)
);
break;
case 'OptionNFExcerpt':
// FURs for screenshots etc. don't normally need to bother
// about replaceability (with free images) and with commercial role,
// but do need to bother about purpose and about replaceability with text.
descFields.Purpose = opts.NFPurpose;
descFields.Replaceability_text = opts.NFReplaceableText;
descFields.Replaceability = "The software or website from which the screenshot is taken is copyrighted and not released under a free license, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution screenshot from software or a website will not impact the commercial viability of the software or site.";
break;
case 'OptionNFCover':
// cover art gets standard rationales.
descFields.Purpose =
"to serve as the primary means of visual identification " +
"at the top of the article dedicated to the work in question.";
descFields.Replaceability = "Any derivative work based upon the cover art would be a copyright violation, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution image of a work's cover will not impact the commercial viability of the work.";
break;
case 'OptionNFLogo':
// logos get standard rationales.
descFields.Purpose =
"to serve as the primary means of visual identification " +
"at the top of the article dedicated to the entity in question.";
descFields.Replaceability = "Any derivative work based upon the logo would be a copyright violation, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution image of an organization's logo in the article about that organization will not impact the commercial viability of the logo.";
break;
case 'OptionNFPortrait':
// as with other historic photographs, it is useful to have both
// original publication and direct source
descFields.Source = fuwAppendLines([
fuwSurroundString("'''Original publication''': ", opts.Publication),
"<br/>\n",
fuwSurroundString("'''Immediate source''': ", opts.Source)
]);
descFields.Purpose =
"for visual identification of the person in question, " +
"at the top of their biographical article";
descFields.Replaceability = opts.NFReplaceable;
descFields.Commercial = opts.NFCommercial;
descFields['Other information'] =
"The subject of the photograph has been deceased since: " + opts.NFPortraitDeceased;
break;
case 'OptionNFMisc':
descFields.Source = fuwAppendLines([
fuwSurroundString(
"'''Original publication''': ",
opts.Publication,
"<br/>\n'''Immediate source:''' "),
"",
opts.Source
]);
descFields.Purpose = opts.NFPurpose;
descFields.Replaceability = opts.NFReplaceable;
descFields.Replaceability_text = opts.NFReplaceable_text;
descFields.Commercial = opts.NFCommercial;
break;
};
if (opts.OptionNonFree) {
// common stuff for all non-free files:
// Minimality field (same for all NF options):
descFields.Minimality = opts.NFMinimality;
// append optional "extra license" selector and "AnyOther" fields
// to "Other information" field:
descFields['Other information'] = fuwAppendLines([
descFields['Other information'],
"<br/>\n",
fuwSurroundString('\{\{', opts.NFExtraLicense, '\}\}'),
"<br/>\n",
opts.AnyOther
]);
}
else {
// common stuff for all free files:
descFields.Other_versions = ''
this.otherInfo = fuwAppendLines([this.otherInfo, "\n\n", opts.AnyOther]);
}
};
fuwGlobal.prototype.formatOutput = function(forCommons) {
var baseForm = this.ScriptForm;
var targetForm = this.TargetForm;
if (fuwTesting) {
var testForm = this.TestForm;
}
var opts = this.opts;
var otherInfo = this.otherInfo;
var descFields = this.descFields;
var summary = "{{" + this.getDescriptionTemplateName();
// assemble all fields into the wikitext of the description page:
var fieldOrder = [
'Source', 'Date', 'Author', 'Permission', 'Other_versions',
'Article', 'Purpose', 'Replaceability', 'Replaceability_text',
'Minimality', 'Commercial', 'Other information'
];
summary += "\n|Description = " + fuwPackInfo(descFields['Description'], forCommons);
for (var i = 0; i < fieldOrder.length; i++) {
if (descFields[fieldOrder[i]]) {
summary += "\n|" + fieldOrder[i] + " = " + descFields[fieldOrder[i]];
}
}
summary += "\n}}\n";
if (otherInfo) {
summary += "\n;Other information:\n" + fuwPackInfo(otherInfo, forCommons) + "\n";
}
var editSummary = this.getEditSummary();
var license = this.getLicense();
if (forCommons) {
// pack our description info into an url pointing to the
// standard Commons Special:Upload
// with pre-loaded description fields
summary = fuwSubst("Upload marker added by en.wp UW") + "\n" + summary;
summary = summary.replace(/\{\{OTRS pending\}\}/g, fuwSubst("OP"));
if (license.special) {
// manually format the whole description page including the license tag, if it
// isn't one of the bare standard licenses in the dropdown box. Otherwise,
// submit description summary and license as two separate url parameters.
summary = summary + "\n\n" + license.special;
}
return (fuwGetCommonsURL() +
"?title=Special:Upload" +
"&wpUploadDescription=" +
encodeURIComponent(summary) +
(license.standard ?
("&wpLicense=" + encodeURIComponent(license.standard)) : '') +
"&wpDestFile=" +
encodeURIComponent(opts.InputName));
}
else {
// pack all description into a single "text" parameter to be submitted
// to the local api.php upload.
summary = "==ಸಾರಾಂಸೊ==\n" +
summary +
"\n==ಪರವಾನಿಗೆ==\n" +
(license.standard ? ("\{\{" + license.standard + "\}\}") : license.special) +
this.getTrackingCategory();
if (fuwTesting) {
// Testing mode: show our data in the dummy form
// at the bottom of the page.
fuwGet('placeholderSandboxFilename').innerHTML = opts.InputName;
this.TestForm.SandboxSummary.value = editSummary;
this.TestForm.SandboxText.value = summary;
fuwSetVisible('placeholderTestForm', true);
}
// Set up API call parameters
this.UploadOptions.filename = opts.InputName;
this.UploadOptions.text = summary;
this.UploadOptions.comment = editSummary;
}
};
function fuwHasUserGroup(group) {
// workaround because old IE versions don't have array.indexOf :-(
for (i = 0; i < mw.config.get('wgUserGroups').length; i++) {
if (mw.config.get('wgUserGroups')[i] == group) {
return true;
}
}
return false
}
fuwGlobal.prototype.getUserStatus = function() {
// function to determine the experience status and userrights of the current user:
// 'anon': not logged in; can't use script.
// 'notAutoconfirmed': can't use local upload, but may use script to prepare upload for Commons
// 'newbie': autoconfirmed but editcount < 100
// (may be used in future to adapt instructions more to newbie needs)
// 'problem': autoconfirmed but has 3 or more image-related warnings or deletion notifications among recent user talk entries
// (may be used in future to produce more strongly worded instructions)
// 'autoconfirmed': regular user
// 'sysop'
if (mw.config.get('wgUserName')) {
if (fuwHasUserGroup('sysop')) {
this.userStatus = 'sysop';
}
else if (fuwHasUserGroup('autoconfirmed') || fuwHasUserGroup('confirmed')) {
this.userStatus = 'autoconfirmed';
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'GET',
dataType: 'xml',
traditional : true,
data: {
format: 'xml',
action: 'query',
meta : 'userinfo',
uiprop: 'editcount',
prop : 'revisions',
titles: 'User talk' + mw.config.get('wgUserName'),
rvprop: 'comment|user',
rvlimit: 30
},
success: function(data) {
// callback func
var fuw = window.fuw;
if (data) {
var ui = data.getElementsByTagName('userinfo');
if (ui) {
var editcount = ui[0].getAttribute('editcount');
if (editcount < 100) {
fuw.userStatus = 'newbie';
}
}
var revs = data.getElementsByTagName('rev');
var countWarn = 0;
for (i = 0; i < revs.length; i++) {
var rev = revs[i];
var usr = rev.getAttribute('user');
var cmt = rev.getAttribute('comment');
if ((usr == 'ImageTaggingBot') ||
(cmt.search(/(tagging for deletion of \[\[File)|(Uploading files missing)|(File (source and )?copyright licensing problem)|(Speedy deletion nomination of \[\[File)|(Notification: listing at \[\[possibly unfree files)/) >= 0)) {
countWarn += 1;
}
}
if (countWarn >= 3) {
fuw.userStatus = 'problem';
}
}
}
});
}
else {
this.userStatus = 'notAutoconfirmed';
}
}
else {
this.userStatus = 'anon';
}
};
// =================================================================
// Convenience function for getting the regular index.php
// interface of Commons. Not very elegant.
// =================================================================
function fuwGetCommonsURL() {
if (document.URL.match(/^https:/))
return "https://commons.wikimedia.org/w/index.php";
else
return "http://commons.wikimedia.org/w/index.php";
}
// ==================================================================
// functions for building form elements
// ==================================================================
fuwMakeRadiobutton = function(group, option, checked, event) {
// Stupid IE7 doesn't get "value" attribute unless it's created in this convoluted way.
// Annoying.
var node = $('<input type="radio" id="' + option + '" name="' + group + '" value="' + option + '"></input>')[0];
if (checked) node.checked = true;
node.onclick = event || fuwRadioClick;
node.onclick = event || fuwRadioClick;
fuwAppendInput(option, node);
};
fuwMakeTextfield = function(label, event) {
var node = document.createElement('input');
node.type = 'text';
node.name = label;
node.size = fuwDefaultTextboxLength;
node.onchange = event || fuwUpdateOptions;
// only for testing:
//node.value = label;
fuwAppendInput(label, node);
};
fuwMakeTextarea = function(label, event) {
var node = document.createElement('textarea');
node.name = label;
node.rows = fuwDefaultTextareaLines;
node.style.width = fuwDefaultTextareaWidth;
node.onchange = event || fuwUpdateOptions;
//only for testing:
//node.innerHTML = label;
fuwAppendInput(label, node);
};
fuwMakeCheckbox = function(label, checked, event) {
var node = document.createElement('input');
node.name = label;
node.type = 'checkbox';
//only for testing:
//node.title= label;
node.checked = checked;
node.onchange = event || fuwUpdateOptions;
fuwAppendInput(label, node);
}
fuwMakeHiddenfield = function(name, value, id) {
var node = document.createElement('input');
node.name = name;
node.type = 'hidden';
node.value = value;
fuwAppendInput((id || name), node);
};
fuwMakeAnchor = function(label, href, content) {
var node = document.createElement('a');
node.name = label;
node.target= "_blank";
node.href = href;
node.innerHTML = content;
fuwAppendInput(label, node);
};
fuwMakeSelection = function(name, values) {
var root = document.createElement('select');
var current = root;
try {
for (i=0; i<values.length; i++) {
var line = values[i];
var entry;
if (line.length == 0) {
current = root;
}
else if (line.length == 1) {
entry = document.createElement('optgroup');
entry.setAttribute('label', line[0]);
root.appendChild(entry);
current = entry;
}
else {
entry = document.createElement('option');
entry.setAttribute('value', line[0]);
entry.setAttribute('title', '{{' + line[0] + '}}');
entry.innerHTML = line[1];
if (line.length > 2) {
entry.setAttribute('selected', 'selected');
}
current.appendChild(entry);
}
}
} catch (e) { alert("Name: " + name + ", i=" + i); }
root.name = name;
root.onchange = fuwUpdateOptions;
fuwAppendInput(name, root);
};
function fuwMakeWikilink(place, target, redlink, display) {
place = fuwGet(place);
var id = place.id;
var anchor;
if (place.tagName == 'A') {
anchor = place;
}
else {
anchor = document.createElement('a');
place.appendChild(anchor);
}
anchor.href = mw.util.getUrl(target);
anchor.title = target;
anchor.innerHTML = target;
anchor.className = (redlink ? 'new' : null);
}
function fuwAppendInput(label, content) {
// append a newly created input element to an existing
// span element marked as id="placeholderXYZ"
var node = fuwGet('placeholder' + label);
var old = fuwGet(label);
if (old) {
old.parentNode.removeChild(old);
}
content.id = content.id || label;
if (node) {
while (node.hasChildNodes()) {
node.removeChild(node.firstChild);
}
node.appendChild(content);
}
}
// ======================================================
// move an element away from its current position
// and append it to a target element if condition is true
// ======================================================
function fuwMove(mv, tg, condition, toStart) {
if (condition) {
move = fuwGet(mv);
target = fuwGet(tg);
if (move && target) {
var parent = move.parentNode;
if (! (target===parent)) {
parent.removeChild(move);
if (toStart) {
target.insertBefore(move, target.firstChild);
}
else {
target.appendChild(move);
}
}
}
else {
alert("Can't find elements: move=" + mv + "(" + move + "), target=" + tg + "(" + target + ")");
}
}
return condition;
}
// ===================================================
// make an element visible/invisible
// ===================================================
function fuwSetVisible(tg, condition) {
target = fuwGet(tg);
if (target) {
if (condition) {
$(target).show();
}
else {
$(target).hide();
}
}
else {
alert("Element not found: " + (tg.nodeType ? tg.id : tg));
}
}
// ===================================================
// set enabled/disabled status for an element and/or
// all input controls contained in it.
// ===================================================
function fuwSetEnabled(tg, condition) {
target = fuwGet(tg);
try {
var elements = (target.tagName.match(/^(input|textarea|select|button|a)$/i) ?
[target] :
$('#' + target.id + ' *'));
for (i = 0; i<elements.length; i++) {
if (elements[i].tagName.match(/^(input|textarea|select|button|a)$/i)) {
elements[i].disabled = (condition ? null : "disabled");
}
}
} catch (e) { alert("Element not found: " + (tg.nodeType ? tg.id : tg)); }
}
// ===================================================
// convenience function to check whether a given
// element is currenly visible. Needs to check display
// property of the element and its ancestors
// ===================================================
function fuwIsVisible(el) {
element = fuwGet(el);
if (!element) return false;
el = element.id;
var visible = true;
while (! (element === document.body)) {
if (element.style.display == "none") {
visible = false;
break;
}
element = element.parentNode;
}
return visible;
}
// ===================================================
// cleanup filename
// ===================================================
function fuwCleanFilename() {
var nameBox = window.fuw.ScriptForm.InputName;
var oldname = name = $.trim(nameBox.value);
if (name) {
// strip accidentally added [[ ]] or [[: ]] brackets
name = name.replace(/(^\[\[:?)|(\]\]$)/g, "");
// strip accidentally added "File:" prefix
name = name.replace(/^(File|Image):/, "");
// replace underscores with spaces
name = name.replace(/_/g, " ");
// uppercase first letter
name = name[0].toUpperCase() + name.slice(1);
}
if (oldname != name) {
nameBox.value = name;
}
// always return true so the next validation step will proceed:
return true;
}
// ==================================================
// check filename for technically illegal
// characters, trying to fix them automatically
// ==================================================
function fuwCheckLegalFilename() {
var nameBox = window.fuw.ScriptForm.InputName;
var oldname = name = $.trim(nameBox.value);
if (name) {
// resolve accidentally entered html entities and URI-encoded %XX character codes
name = name.replace(/\&[a-z]+;/g, fuwHtmlEntityDecode);
name = name.replace(/(\%[A-F0-9]{2,2})/g, decodeURI);
// remove illegal characters # < > [ ] | { } /:
// using a best guess for an acceptable replacement
name = name.replace(/[<\[\{]/g, "(");
name = name.replace(/[>\]\}]/g, ")");
name = name.replace(/[#:\|]/g, ",");
name = name.replace(/\//g, "-");
// remove sequences of tildes
name = name.replace(/\~{3,}/g, "---");
// remove initial slash
name = name.replace(/^\//, "");
}
if (oldname != name) {
window.fuw.warn.IllegalChars = true;
nameBox.value = name;
return false;
}
else {
window.fuw.warn.IllegalChars = false;
return true;
}
}
function fuwHtmlEntityDecode(str) {
// hack to translate accidentally entered html entity code
// into actual characters
var ta=document.createElement('textarea');
ta.innerHTML=str.replace(/</g,'<').replace(/>/g,'>');
return ta.value;
}
// =======================================================
// Check against various common patterns of poorly chosen
// filenames (too short / too generic)
// =======================================================
function fuwCheckPoorFilename() {
var nameBox = window.fuw.ScriptForm.InputName;
var name = $.trim(nameBox.value);
name = name.replace(/\.(png|gif|jpg|jpeg|xcf|pdf|mid|ogg|ogv|svg|djvu|tiff|tif|oga|mp3|webp|webm|opus|mpg|mpeg|wav|wave|flac)$/i, "");
// name should be at least 10 characters long, excluding file type extension
var tooShort = (name.length < 10);
// common generic filename patterns:
// IMG......jpg
// Image....jpg
// DSC......jpg
// Picture......jpg
// Pic..........jpg
// anything that has fewer than 3 alphabetic letters and then just numbers
var pattern = /^(img|image|dsc|picture|pic)?(\\s*|\\_*|[a-z]{,3})?\\d+$/i;
var auto = name.match(pattern);
window.fuw.warn.BadFilename = (tooShort || auto);
return !tooShort && !auto;
}
// =======================================================
// check if file extensions match between local filename
// and target filename input box. Automatically append
// appropriate extension to target filename if they don't.
// =======================================================
function fuwCheckFileExtension() {
var nameBox = window.fuw.ScriptForm.InputName;
var name = $.trim(nameBox.value);
var fileBox = window.fuw.TargetForm.file;
var file = fileBox.value;
// cancel check if no filename has been provided yet
if (!file || !name) return true;
var extensions = /.+\.(png|gif|jpg|jpeg|xcf|pdf|mid|ogg|ogv|svg|djvu|tiff|tif|oga|mp3|webp|webm|opus|mpg|mpeg|wav|wave|flac)$/i;
var mimetypes = {
"png" : "image/png",
"gif" : "image/gif",
"jpg" : "image/jpeg",
"jpeg" : "image/jpeg",
"xcf" : "image/x-xcf",
"webp" : "image/webp",
"pdf" : "application/pdf",
"mid" : "audio/rtp-midi",
"ogg" : "audio/ogg",
"mp3" : "audio/mp3",
"opus" : "audio/opus",
"wav" : "audio/wav",
"wave" : "audio/wav",
"flac" : "audio/flac",
"ogv" : "video/ogg",
"svg" : "image/svg+xml",
"djvu" : "image/vnd.djvu",
"tiff" : "image/tiff",
"tif" : "image/tiff",
"oga" : "video/ogg",
"webm" : "video/webm",
"mpg" : "video/mpeg",
"mpeg" : "video/mpeg"
};
var found = extensions.exec(file);
var fileExt = found ? found[1].toLowerCase() : "";
found = extensions.exec(name);
var nameExt = found ? found[1].toLowerCase() : "";
var mime = mimetypes[fileExt];
if (fileExt && mime && (mimetypes[nameExt] != mime)) {
nameBox.value = name.replace(/\.?$/, ('.' + fileExt));
}
return true;
}
// ============================================================
// Check if a file under the chosen name already exists,
// either locally or on Commons.
// Store results in the fuw.warn object, so warnings will
// be displayed on the next fuwUpdateOptions() call
// ============================================================
function fuwCheckFileExists() {
// this is an asynchronous AJAX function.
// results won't yet be present when this function returns.
var nameBox = window.fuw.ScriptForm.InputName;
var name = $.trim(nameBox.value);
// using the jQuery wrapper for the Ajax functionality:
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'GET',
dataType: 'xml',
traditional : true,
data: {
format: 'xml',
action: 'query',
titles: 'File:' + name,
prop : 'imageinfo',
iiprop: 'url|user',
iiurlwidth: 120
},
success: function(resp) {
// callback function, called when API query has succeeded:
// see if the request has returned info from an existing image:
var foundlist = resp.getElementsByTagName('ii');
var exists = (foundlist.length >= 1);
var isCommons = false;
if (exists) {
// extract description data from http response.
// see https://www.mediawiki.org/wiki/API:Properties#imageinfo_.2F_ii
// for structure of API response
var foundImg = foundlist[0];
isCommons = (foundImg.parentNode.parentNode.getAttribute('imagerepository')=='shared');
// need this data for creating our own image thumb link
var width = foundImg.getAttribute('thumbwidth');
var height = foundImg.getAttribute('thumbheight');
var thumbURL = foundImg.getAttribute('thumburl');
var lastUser = foundImg.getAttribute('user');
var descURL = foundImg.getAttribute('descriptionurl');
// API returns link to local description page even for Commons images.
// However, we want a direct link to Commons.
if (isCommons) {
descURL = descURL.replace(/en\.wikipedia\.org/, "commons.wikimedia.org");
descURL = descURL.replace(/\/\/secure\.wikimedia\.org\/wikipedia\/en/, "commons.wikimedia.org");
}
// build the image info into the warning section of our page:
thumbDiv = fuwGet('warningImageThumb');
if (thumbDiv) {
// make all links point to description page:
var thumbA = thumbDiv.getElementsByTagName('a');
for (i = 0; i<thumbA.length; i++) {
thumbA[i].setAttribute('href', descURL);
}
// insert the image itself:
var thumbImg = thumbDiv.getElementsByTagName('img');
if (thumbImg.length > 0) {
thumbImg = thumbImg[0];
thumbImg.setAttribute('src', thumbURL);
thumbImg.setAttribute('width', width);
thumbImg.setAttribute('height', height);
}
// insert the name of the last uploader:
var thumbSpan = fuwGet('existingImageUploader');
// TO DO: turn this into a proper link
if (thumbSpan) thumbSpan.innerHTML = lastUser;
}
}
warn = window.fuw.warn;
warn.ImageOnCommons = exists && isCommons;
warn.ImageExists = exists && !isCommons;
fuwUpdateOptions();
}
});
}
// ===========================================================
// onchange event handler for the local filename box
// ===========================================================
fuwValidateFile = function() {
fuwCheckFileExtension();
fuwUpdateOptions();
}
// ===========================================================
// onchange event handler for the name input box
// ===========================================================
fuwValidateFilename = function() {
fuwCleanFilename();
if (
fuwCheckLegalFilename() &&
fuwCheckPoorFilename() &&
fuwCheckFileExtension()) {
// after fuwCheckFileExists(),
// fuwUpdateOptions will be triggered
// by the callback function after Ajax completion
fuwCheckFileExists();
}
else {
// if there's been no Ajax call.
fuwUpdateOptions();
}
};
// ==========================================================
// function fuwValidateNFArticle()
// ==========================================================
// This is the validation routine for the obligatory
// article-to-be-used-in field for non-free files. It queries
// api.php about the target article through an Ajax call.
// It will store error info in the fuw.warn object,
// triggering the following error on the next updateOptions():
// * warningNFArticleNotFound : target page doesn't exist.
// * warningNFArticleNotMainspace : target is not an article.
// * warningNFArticleDab : target is a disambiguation page.
// Redirects will automatically be substituted.
// ==========================================================
fuwValidateNFArticle = function() {
var nameBox = window.fuw.ScriptForm.NFArticle;
oldname = name = nameBox.value;
// cleanup article name:
// automatically fix accidentally added [[ ... ]] and
// regularize underscores
name = $.trim(name);
name = name.replace(/(^\[\[)|(\]\]$)/g, "");
// automatically fix article names entered as full urls:
name = name.replace(/^https?:\/\/en\.wikipedia\.org\/wiki\//, "");
name = name.replace(/^https?:\/\/en\.wikipedia\.org\/w\/index\.php\?title=/, "");
name = name.replace(/_/g, " ");
if (name != oldname) nameBox.value = name;
// do nothing more if field was blank
if (!name) return;
// using the jQuery wrapper for the Ajax functionality:
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'GET',
dataType: 'xml',
traditional : true,
data: {
format: 'xml',
action: 'query',
titles: name,
prop : 'info|categories|links'
},
success: function(resp) {
// callback function, called when API query has succeeded:
var errorType = 0;
var pg = resp.getElementsByTagName('page')[0];
var title = pg.getAttribute('title');
var target = title;
if (pg.getAttribute('missing') != null) {
// no page found under this title.
errorType = 1;
}
else {
var userspace = false;
var ns = pg.getAttribute('ns');
var rd = pg.getAttribute('redirect');
if (ns != 0) {
// not a mainspace page!
errorType = 2;
// try to detect if the target might be a user space draft:
if (title.match(new RegExp("User( talk)?:" + mw.config.get('wgUserName')))) {
userspace = true;
}
}
else if (rd != null) {
// redirect page
// API returns an empty redirect="" attribute if
// the page is a redirect
var targets = pg.getElementsByTagName('pl');
for (i=0; i<targets.length; i++) {
var link = targets[i];
if (link.getAttribute('ns')==0) {
target = link.getAttribute('title');
errorType = 3;
break;
}
}
}
else {
// check for disambiguation categories
var cats = pg.getElementsByTagName('cl');
for (i=0; i<cats.length; i++) {
var cat = cats[i];
if (cat.getAttribute('title') == "Category:All disambiguation pages") {
errorType = 4;
break;
}
}
}
}
warn = window.fuw.warn;
warn.NFArticleNotFound = (errorType==1);
warn.NFArticleNotMainspace = (errorType==2);
warn.UserspaceDraft = ((errorType==2) && userspace);
warn.NFArticleDab = (errorType==4);
warn.NFArticleOK = (errorType==0);
// fix links in error messages:
if (warn.NFArticleNotFound) {
fuwMakeWikilink(fuwGet('warningNFArticleNotFound').getElementsByTagName('A')[0], target, true);
}
else if (warn.NFArticleNotMainspace) {
fuwMakeWikilink(fuwGet('warningNFArticleNotMainspace').getElementsByTagName('A')[0], target);
}
else if (warn.NFArticleDab) {
fuwMakeWikilink(fuwGet('warningNFArticleDab').getElementsByTagName('A')[0], target);
}
else if (warn.NFArticleOK) {
fuwMakeWikilink(fuwGet('NFArticleOK').getElementsByTagName('A')[0], target);
}
if (errorType==3) {
// automatically replace title with redirect target
window.fuw.ScriptForm.NFArticle.value = target;
// need to recursively call validation again now
//if (confirm(name + " is a redirect. Follow it to " + target + "?")) {
fuwValidateNFArticle();
//}
}
else {
fuwUpdateOptions();
}
}
});
};
// ================================================
// manually reload script (just for testing)
// ================================================
function fuwReload() {
mw.loader.load( 'http://localhost/script/uploadscript.js' );
fuwReset();
}
// ================================================
// reset forms
// TO DO: add a button that actually triggers this.
// ================================================
function fuwReset() {
var forms = mw.util.$content[0].getElementsByTagName('form');
for (i = 0; i < forms.length; i++) {
forms[i].reset();
window.fuw.warn = { };
window.fuw.opts = { };
}
fuwSetVisible('UploadScriptArea', true);
fuwSetVisible('fuwSuccess', false);
fuwSetVisible('fuwWaiting', false);
fuwUpdateOptions();
}
// ===============================================
// convenience functions for string handling
// ===============================================
function fuwAppendLines(parts) {
// assemble a string from an array of strings.
// treat every second element as a conditional
// separator that will be included only if
// surrounding elements are non-empty.
var build = "";
for (var i = 0; i < parts.length; i += 2) {
if (parts[i]) {
if (build) build += parts[i - 1];
build += parts[i];
}
}
return build;
}
function fuwSurroundString(prefix, content, suffix) {
// put a prefix and a suffix on a string,
// if the input string is non-empty.
if (content)
return (prefix ? prefix : "") + content + (suffix ? suffix : "");
else return "";
}
// ========================================================
// handler for the API response.
// TO DO: expand stub to add real notification of success,
// link to new file page, instructions about how to include
// file in articles, etc.
// ========================================================
function fuwUploadCompleted(doc) {
if (doc) {
//alert(doc);
fuwSetVisible('successThumb', false);
var fuw = window.fuw;
var name = fuw.opts.InputName;
var uploads = doc.getElementsByTagName('upload');
var success = false;
for (i = uploads.length-1; i>=0; i--) {
if (uploads[i].getAttribute('result') == 'Success') {
success = true;
// need to get the real resulting filename here; might be different from the requested one in some cases.
name = uploads[i].getAttribute('filename');
break;
}
}
if (success) {
// need another ajax call to check the file is actually there,
// and to retrieve its direct thumb img url:
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'GET',
dataType: 'xml',
traditional : true,
data: {
format: 'xml',
action: 'query',
titles: 'File:' + name,
prop : 'imageinfo',
iiprop: 'url',
iiurlwidth: 120
},
success: function(resp) {
// callback function, called when API query has succeeded:
// see if the request has returned info from an existing image:
var foundImg = resp.getElementsByTagName('ii')[0];
if (foundImg) {
// need this data for creating our own image thumb link
var width = foundImg.getAttribute('thumbwidth');
var height = foundImg.getAttribute('thumbheight');
var thumbURL = foundImg.getAttribute('thumburl');
var lastUser = foundImg.getAttribute('user');
var descURL = foundImg.getAttribute('descriptionurl');
// build the thumbnail in the success message:
thumbDiv = fuwGet('successThumb');
// make link point to description page:
var thumbA = thumbDiv.getElementsByTagName('a')[0];
thumbA.href = descURL;
// insert the image itself:
var thumbImg = thumbDiv.getElementsByTagName('img')[0];
thumbImg.setAttribute('src', thumbURL);
thumbImg.setAttribute('width', width);
thumbImg.setAttribute('height', height);
fuwSetVisible(thumbDiv, true);
}
}
});
fuwMakeWikilink(
fuwGet('fuwSuccessLink2').getElementsByTagName('a')[0],
'File:' + name);
fuwGet('placeholderExFilename1').innerHTML = name;
fuwGet('placeholderExFilename2').innerHTML = name;
fuwSetVisible('fuwSuccess', true);
fuwSetVisible('fuwWaiting', false);
}
else {
var err = doc.getElementsByTagName('error');
if (err) {
var info = err[0].getAttribute('info');
var details = err[0].getElementsByTagName('detail');
var add = "";
for (i = 0; i < details.length; i++) {
if (add.length > 0) add += ", ";
add += details[i].textContent;
}
if (add) {
info = info + " (" + add + ")";
}
alert("Upload failed: " + info);
}
else {
alert("Unknown error: upload may have failed.");
}
}
}
}
// ========================================================
// Event handler for the real submit button
// ========================================================
function fuwSubmitUpload() {
var fuw = window.fuw;
fuw.collectInput();
fuw.formatOutput(false);
if (fuwTesting) {
fuwSetVisible('placeholderTestForm', false);
}
fuwSetVisible('UploadScriptArea', false);
fuwMakeWikilink(
fuwGet('fuwSuccessLink').getElementsByTagName('a')[0], 'File:' + fuw.opts.InputName);
fuwSetVisible('fuwWaiting', true);
// Upload the file, then add success notification etc.
// Note that mw.Api doesn't have special support for the XML format, so even when the API
// returns an error, this won't be detected and it will call the success handler.
var api = new mw.Api({
parameters : { format : 'xml' },
ajax : { dataType : 'xml' }
});
api.upload(fuw.TargetForm.file, fuw.UploadOptions).then(fuwUploadCompleted);
var opts = window.fuw.opts;
// the API won't overwrite the description page text while overwriting
// a file, which is really, really, really annoying and stupid.
// So in the opts.OverwriteDifferent scenario, we need to edit
// the description page through a separate ajax call. Dang.
if (opts.OverwriteDifferent) {
$.ajax({
url : mw.util.wikiScript('api'),
type : 'POST',
dataType : 'xml',
data : {
format : 'xml',
action : 'edit',
title : 'File:' + opts.InputName,
token : mw.user.tokens.get('csrfToken'),
summary : opts.EditSummary,
text : fuw.UploadOptions.text
}
});
}
}
// =======================================================
// Event handler for the Commons submit button
// =======================================================
function fuwSubmitCommons() {
var fuw = window.fuw;
fuw.collectInput();
var url = fuw.formatOutput(true);
alert("You will now be redirected to Commons. \nPlease use the Commons upload form to add categories to your file description, and then complete the upload.");
window.location = url;
}
// =======================================================
// Event handler for the test submit button
// (write description string to sandbox only)
// =======================================================
function fuwSubmitSandbox() {
var frm = window.fuw.TestForm;
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'POST',
dataType: 'xml',
data: {
format: 'xml',
action: 'edit',
title : mw.config.get('wgPageName') + "/sandbox",
token : mw.user.tokens.get('csrfToken'),
recreate : 1,
summary : frm.SandboxSummary.value,
text : frm.SandboxText.value
},
success: function(resp) {
alert("Sandbox page edited!");
}
});
}
// ========================================================
// convenience wrapper function to replace calls to
// document.getElementById()
// to avoid browser incompatibility
// ========================================================
function fuwGet(target) {
if (target && target.nodeType) return target;
else {
var found = $('#' + target);
if (found) return found[0];
}
return undefined;
}
// ========================================================
// onload hook function, loading this script
// ========================================================
mw.loader.using(['mediawiki.api']).then(function() {
$(function() {
if (fuwGet('UploadScriptArea')) {
window.fuw = new fuwGlobal();
if (! window.fuw.disabled) {
fuwUpdateOptions();
}
}
});
});
gj6jx1x052grmiulwwnsw1ssw29vk85
374599
374598
2026-11-06T06:31:56Z
ChiK
1136
374599
javascript
text/javascript
/*
* ===============================================================
* FileUploadWizard.js
* Script for uploading files through a dynamic questionnaire.
* This is the code to accompany [[ವಿಕಿಪೀಡಿಯ:ಫೈಲ್ ಅಪ್ಲೋಡ್ ವಿಝಾರ್ಡ್]].
* ===============================================================
*/
var fuwTesting = false;
var fuwDefaultTextboxLength = 60;
var fuwDefaultTextareaWidth = '90%';
var fuwDefaultTextareaLines = 3;
// ================================================================
// Constructor function of global fuw (= File Upload Wizard) object
// ================================================================
function fuwGlobal() {
// see if user is logged in, autoconfirmed, experienced etc.
this.getUserStatus();
fuwSetVisible('warningLoggedOut', (this.userStatus == 'anon'));
fuwSetVisible('warningNotConfirmed', (this.userStatus == 'notAutoconfirmed'));
this.disabled = (this.userStatus == 'anon') || (this.userStatus == 'notAutoconfirmed');
if (this.disabled) {
return;
}
fuwSetVisible('fuwStartScriptLink', false);
// create the form element to wrap the main ScriptForm area
// containing input elements of Step2 and Step3
var frm = fuwGet('fuwScriptForm');
if (! frm) {
frm = document.createElement('form');
frm.id = "fuwScriptForm";
var area = fuwGet('placeholderScriptForm');
var parent = area.parentNode;
parent.insertBefore(frm, area);
parent.removeChild(area);
frm.appendChild(area);
}
this.ScriptForm = frm;
// create the TargetForm element that contains the file selector
frm = fuwGet('TargetForm');
if (! frm) {
frm = document.createElement('form');
frm.id = "TargetForm";
var area = fuwGet('placeholderTargetForm');
var parent = area.parentNode;
parent.insertBefore(frm, area);
parent.removeChild(area);
frm.appendChild(area);
}
this.TargetForm = frm;
// For the testing version, create a third form that will display
// the contents to be submitted, at the bottom of the page
if (fuwTesting) {
frm = fuwGet('fuwTestForm');
if (! frm) {
frm = document.createElement('form');
frm.id = "fuwTestForm";
var area = fuwGet('placeholderTestForm');
var parent = area.parentNode;
parent.insertBefore(frm, area);
parent.removeChild(area);
frm.appendChild(area);
}
this.TestForm = frm;
}
// objects to hold cached results during validation and processing
this.opts = { };
this.warn = { };
// create the input filename box
var filebox = document.createElement('input');
filebox.id = 'file';
filebox.name = 'file';
filebox.type = 'file';
filebox.size = fuwDefaultTextboxLength;
filebox.onchange = fuwValidateFile;
filebox.accept = 'image/png,image/jpeg,image/gif,image/svg+xml,image/tiff,image/x-xcf,application/pdf,image/vnd.djvu,audio/ogg,video/ogg,audio/rtp-midi,audio/mp3,image/webp,video/webm,audio/opus,video/mpeg,audio/wav,audio/flac';
fuwAppendInput('file', filebox);
// Default values for API call parameters
this.UploadOptions = {
filename : '',
text : '',
comment : '',
ignorewarnings : 1,
watch : 1
};
if (fuwTesting) {
fuwMakeHiddenfield('title', mw.config.get('wgPageName') + "/sandbox", 'SandboxTitle');
fuwMakeHiddenfield('token', mw.user.tokens.get('csrfToken'), 'SandboxToken');
fuwMakeHiddenfield('recreate', 1, 'SandboxRecreate');
}
if (fuwTesting) {
// create the sandbox submit button
btn = document.createElement('input');
btn.id = 'SandboxButton';
btn.value = 'Sandbox';
btn.name = 'Sandbox';
btn.disabled = true;
btn.type = 'button';
btn.style.width = '12em';
btn.onclick = fuwSubmitSandbox;
fuwAppendInput('SandboxButton', btn);
}
// create the real submit button
btn = document.createElement('input');
btn.id = "SubmitButton";
btn.value = "Upload";
btn.name = "Upload";
btn.disabled = true;
btn.type = "button";
btn.onclick = fuwSubmitUpload;
btn.style.width = '12em';
fuwAppendInput('SubmitButton', btn);
// create the Commons submit button
btn = document.createElement('input');
btn.id = "CommonsButton";
btn.value = "Upload on Commons";
btn.name = "Upload_on_Commons";
btn.disabled = true;
btn.type = "button";
btn.onclick = fuwSubmitCommons;
btn.style.width = '12em';
fuwAppendInput('CommonsButton', btn);
// create reset buttons
for (i = 1; i<=2; i++) {
btn = document.createElement('input');
btn.id = 'ResetButton' + i;
btn.value = "Reset form";
btn.name = "Reset form";
btn.type = "button";
btn.onclick = fuwReset;
btn.style.width = '12em';
fuwAppendInput('ResetButton' + i, btn);
}
// names of radio button fields
var optionRadioButtons = {
// top-level copyright status choice
'FreeOrNonFree' : ['OptionFree','OptionNonFree','OptionNoGood'],
// main subsections under OptionFree
'FreeOptions' : ['OptionOwnWork', 'OptionThirdParty', 'OptionFreeWebsite',
'OptionPDOld', 'OptionPDOther'],
// main subsections under OptionNonFree
'NonFreeOptions': ['OptionNFSubject','OptionNF3D','OptionNFExcerpt',
'OptionNFCover','OptionNFLogo','OptionNFPortrait',
'OptionNFMisc'],
// response options inside warningFileExists
'FileExistsOptions':
['NoOverwrite','OverwriteSame','OverwriteDifferent'],
// choice of evidence in OptionThirdParty subsection
'ThirdPartyEvidenceOptions' :
['ThirdPartyEvidenceOptionLink',
'ThirdPartyEvidenceOptionOTRS',
'ThirdPartyEvidenceOptionOTRSForthcoming',
'ThirdPartyEvidenceOptionNone'],
// choice of PD status in OptionPDOld subsection
'PDOldOptions' : ['PDUSExpired','PDURAA','PDFormality','PDOldOther'],
// choice of PD status in OptionPDOther subsection
'PDOtherOptions': ['PDOtherUSGov','PDOtherOfficial','PDOtherSimple',
'PDOtherOther'],
// whether target article is wholly or only partly dedicated to discussing non-free work:
'NFSubjectCheck': ['NFSubjectCheckDedicated','NFSubjectCheckDiscussed'],
'NF3DCheck' : ['NF3DCheckDedicated','NF3DCheckDiscussed'],
// choice about copyright status of photograph in OptionNF3D
'NF3DOptions' : ['NF3DOptionFree','NF3DOptionSame']
};
for (var group in optionRadioButtons) {
var op = optionRadioButtons[group];
for (i=0; i<op.length; i++) {
fuwMakeRadiobutton(group, op[i]);
}
}
this.ScriptForm.NoOverwrite.checked = true;
// input fields that trigger special
// onchange() event handlers for validation:
fuwMakeTextfield('InputName', fuwValidateFilename);
fuwMakeTextfield('NFArticle', fuwValidateNFArticle);
// names of input fields that trigger normal
// validation event handler
var activeTextfields = [
'Artist3D','Country3D',
'Date','OwnWorkCreation','OwnWorkPublication',
'Author','Source',
'Permission','ThirdPartyOtherLicense',
'ThirdPartyEvidenceLink','ThirdPartyOTRSTicket',
'FreeWebsiteOtherLicense',
'PDOldAuthorLifetime','Publication',
'PDOldCountry','PDOldPermission',
'PDOfficialPermission','PDOtherPermission',
'NFSubjectPurpose', 'NF3DOrigDate', 'NF3DPurpose',
'NF3DCreator',
'NFPortraitDeceased',
'EditSummary'
];
for (i=0; i<activeTextfields.length; i++) {
fuwMakeTextfield(activeTextfields[i]);
}
// names of multiline textareas
var activeTextareas = [
'InputDesc','NF3DPermission',
'NFCommercial','NFPurpose','NFReplaceableText',
'NFReplaceable','NFCommercial','NFMinimality','AnyOther'
];
for (i=0; i<activeTextareas.length; i++) {
fuwMakeTextarea(activeTextareas[i]);
};
var checkboxes = [
'NFCoverCheckDedicated','NFLogoCheckDedicated','NFPortraitCheckDedicated'
];
for (i=0; i<checkboxes.length; i++) {
fuwMakeCheckbox(checkboxes[i]);
};
var licenseLists = {
'OwnWorkLicense' :
// array structure as expected for input to fuwMakeSelection() function.
// any entry that is a two-element array will be turned into an option
// (first element is the value, second element is the display string).
// Entries that are one-element arrays will be the label of an option group.
// Zero-element arrays mark the end of an option group.
[
['Allow all use as long as others credit you and share it under similar conditions'],
['self|GFDL|cc-by-sa-4.0|migration=redundant',
'Creative Commons Attribution-Share Alike 4.0 + GFDL (recommended)',
true],
['self|cc-by-sa-4.0',
'Creative Commons Attribution-Share Alike 4.0'],
[],
['Allow all use as long as others credit you'],
['self|cc-by-4.0',
'Creative Commons Attribution 4.0'],
[],
['Reserve no rights'],
['self|cc0',
'CC0 Universal Public Domain Dedication'],
[]
],
'ThirdPartyLicense' :
[
['', 'please select the correct license...'],
['Freely licensed:'],
['cc-by-sa-4.0', 'Creative Commons Attribution-Share Alike (cc-by-sa-4.0)'],
['cc-by-4.0', 'Creative Commons Attribution (cc-by-4.0)'],
['GFDL', 'GNU Free Documentation License (GFDL)'],
[],
['No rights reserved:'],
['PD-author', 'Public domain'],
[],
['Other (see below)'],
[]
],
'FreeWebsiteLicense' :
[
['', 'please select the correct license...'],
['Freely licensed:'],
['cc-by-sa-4.0', 'Creative Commons Attribution-Share Alike (cc-by-sa-4.0)'],
['cc-by-4.0', 'Creative Commons Attribution (cc-by-4.0)'],
['GFDL', 'GNU Free Documentation License (GFDL)'],
[],
['No rights reserved:'],
['PD-author', 'Public domain'],
[],
['Other (see below)'],
[]
],
'USGovLicense' :
[
['PD-USGov', 'US Federal Government'],
['PD-USGov-NASA','NASA'],
['PD-USGov-Military-Navy','US Navy'],
['PD-USGov-DOC-NOAA','US National Oceanic and Atmospheric Administration'],
['PD-USGov-Military-Air_Force','US Air Force'],
['PD-USGov-Military-Army','US Army'],
['PD-USGov-Interior-USGS','United States Geological Survey']
],
'IneligibleLicense' :
[
['', 'please select one...'],
['PD-shape','Item consists solely of simple geometric shapes'],
['PD-simple','Item consists solely of a few individual words or letters'],
['PD-textlogo','Logo or similar item consisting solely of letters and simple geometric shapes'],
['PD-chem','Chemical structural formula'],
['PD-ineligible','Other kind of item that contains no original authorship']
],
'NFSubjectLicense' :
[
['', 'please select one...'],
['Non-free 2D art', '2-dimensional artwork (painting, drawing etc.)'],
['Non-free historic image', 'Unique historic photograph'],
['Non-free fair use', 'something else (please describe in description field on top)']
],
'NF3DLicense' :
[
[, 'please select one...'],
['Non-free proposed architecture', 'Architectural proposal (not yet completed)'],
['Non-free destroyed architecture', 'Destroyed (or unrecognizably altered) architecture'],
['Non-free 3D art', 'Other 3-dimensional creative work (sculpture etc.)']
],
'NFCoverLicense' :
[
['', 'please select one...'],
['Non-free book cover', 'Cover page of a book'],
['Non-free album cover', 'Cover of a sound recording (album, single, song, CD)'],
['Non-free video game cover', 'Cover of a video/computer game'],
['Non-free magazine cover', 'Cover page of a magazine'],
['Non-free video cover', 'Cover of a video'],
['Non-free software cover', 'Cover of a software product'],
['Non-free product cover', 'Cover of some commercial product'],
['Non-free title-card', 'Title screen of a TV programme'],
['Non-free film poster', 'Film poster'],
['Non-free poster', 'Official poster of an event'],
['Non-free fair use', 'something else (please describe in description field on top)']
],
'NFExcerptLicense' :
[
['', 'please select one...'],
['Non-free television screenshot', 'Television screenshot'],
['Non-free film screenshot', 'Movie screenshot'],
['Non-free video game screenshot', 'Video game screenshot'],
['Non-free video screenshot', 'Video screenshot'],
['Non-free music video screenshot', 'Music video screenshot'],
['Non-free software screenshot', 'Software screenshot'],
['Non-free web screenshot', 'Website screenshot'],
['Non-free speech', 'Audio excerpt from a speech'],
['Non-free audio sample', 'Sound sample of an audio recording'],
['Non-free video sample', 'Sample extract from a video'],
['Non-free sheet music', 'Sheet music representing a musical piece'],
['Non-free comic', 'Panel from a comic, graphic novel, manga etc.'],
['Non-free computer icon', 'Computer icon'],
['Non-free newspaper image', 'Page from a newspaper'],
['Non-free fair use', 'something else (please describe in description field on top)']
],
'NFLogoLicense' :
[
['Non-free logo', 'Logo of a company, organization etc.'],
['Non-free seal', 'Official seal, coat of arms etc'],
['Non-free symbol', 'Other official symbol']
],
'NFMiscLicense' :
[
['Non-free fair use in', 'something else (please describe in description field on top)'],
['Non-free historic image', 'Historic photograph'],
['Non-free 2D art', '2-dimensional artwork (painting, drawing etc.)'],
['Non-free currency', 'Depiction of currency (banknotes, coins etc.)'],
['Non-free architectural work', 'Architectural work'],
['Non-free 3D art', 'Other 3-dimensional creative work (sculpture etc.)'],
['Non-free book cover', 'Cover page of a book'],
['Non-free album cover', 'Cover of a sound recording(album, single, song, CD)'],
['Non-free game cover', 'Cover of a video/computer game'],
['Non-free magazine cover', 'Cover page of a magazine'],
['Non-free video cover', 'Cover of a video'],
['Non-free software cover', 'Cover of a software product'],
['Non-free product cover', 'Cover of some commercial product'],
['Non-free title-card', 'Title screen of a TV programme'],
['Non-free movie poster', 'Movie poster'],
['Non-free poster', 'Official poster of an event'],
['Non-free television screenshot', 'Television screenshot'],
['Non-free film screenshot', 'Movie screenshot'],
['Non-free game screenshot', 'Game screenshot'],
['Non-free video screenshot', 'Video screenshot'],
['Non-free music video screenshot', 'Music video screenshot'],
['Non-free software screenshot', 'Software screenshot'],
['Non-free web screenshot', 'Website screenshot'],
['Non-free speech', 'Audio excerpt from a speech'],
['Non-free audio sample', 'Sound sample of an audio recording'],
['Non-free video sample', 'Sample extract from a video'],
['Non-free sheet music', 'Sheet music representing a musical piece'],
['Non-free comic', 'Panel from a comic, graphic novel, manga etc.'],
['Non-free computer icon', 'Computer icon'],
['Non-free newspaper image', 'Page from a newspaper'],
['Non-free logo', 'Logo of a company, organization etc.'],
['Non-free seal', 'Official seal, coat of arms etc'],
['Non-free symbol', 'Other official symbol'],
['Non-free sports uniform', 'Sports uniform'],
['Non-free stamp', 'Stamp']
],
'NFExtraLicense' :
[
['', 'none'],
['Crown copyright and other governmental sources'],
['Non-free Crown copyright', 'UK Crown Copyright'],
['Non-free New Zealand Crown Copyright', 'NZ Crown Copyright'],
['Non-free Canadian Crown Copyright', 'Canadian Crown Copyright'],
['Non-free AUSPIC', 'AUSPIC (Australian Parliament image database)'],
['Non-free Philippines government', 'Philippines government'],
['Non-free Finnish Defence Forces', 'Finnish Defence Forces'],
[],
['Other individual sources'],
['Non-free Denver Public Library image', 'Denver Public Library'],
['Non-free ESA media', 'ESA (European Space Agency)'],
[],
['Possibly public domain in other countries'],
['Non-free Old-50', 'Author died more than 50 years ago.'],
['Non-free Old-70', 'Author died more than 70 years ago.'],
[],
['Some permissions granted, but not completely free'],
['Non-free promotional', 'From promotional press kit'],
['Non-free file with no commercial use license', 'Permission granted, but only for educational and/or non-commercial purposes'],
['Non-free file with no derivative works license', 'Permission granted, but no derivative works allowed'],
['Non-free with permission', 'Permission granted, but only for Wikipedia'],
[]
]
};
for (var group in licenseLists) {
fuwMakeSelection(group, licenseLists[group]);
}
this.knownCommonsLicenses = {
'self|GFDL|cc-by-sa-all|migration=redundant' : 1,
'self|Cc-zero' : 1,
'PD-self' : 1,
'self|GFDL|cc-by-sa-4.0|migration=redundant' : 1,
'self|GFDL|cc-by-4.0|migration=redundant' : 1,
'self|GFDL|cc-by-sa-3.0|migration=redundant' : 1,
'self|GFDL|cc-by-3.0|migration=redundant' : 1,
'self|cc-by-sa-4.0' : 1,
'self|cc-by-sa-3.0' : 1,
'cc-by-sa-4.0' : 1,
'cc-by-sa-3.0' : 1,
'cc-by-sa-2.5' : 1,
'cc-by-4.0' : 1,
'cc-by-3.0' : 1,
'cc-by-2.5' : 1,
'FAL' : 1,
'PD-old-100' : 1,
'PD-old' : 1,
'PD-Art' : 1,
'PD-US' : 1,
'PD-USGov' : 1,
'PD-USGov-NASA' : 1,
'PD-USGov-Military-Navy' : 1,
'PD-ineligible' : 1,
'Attribution' : 1,
'Copyrighted free use' : 1
};
// textfields that don't react directly
// to user input and are used only for assembling stuff:
if (fuwTesting) {
fuwMakeTextfield('SandboxSummary', function(){void(0);});
fuwMakeTextarea('SandboxText', function(){void(0);});
fuwGet('SandboxSummary').disabled="disabled";
fuwGet('SandboxText').disabled="disabled";
fuwGet('SandboxText').rows = 12;
}
// set links to "_blank" target, so we don't accidentally leave the page,
// because on some browsers that would destroy all the input the user has already entered
$('.fuwOutLink a').each(function() {
this.target = '_blank';
});
// make main area visible
fuwSetVisible('UploadScriptArea', true);
}
// ======================================
// end of fuwGlobal constructor function
// ======================================
function fuwRadioClick(e) {
var ev = e || event;
var src = ev.target || ev.srcElement;
//alert('onclick event from ' + src + ' (' + src.value + ')');
fuwUpdateOptions();
return true;
}
/*
* =============================================================
* function fuwUpdateOptions
* =============================================================
* This is the onchange event handler for most of the input
* elements in the main form. It changes visibility and disabled
* status for the various sections of the input form in response
* to which options are chosen.
*/
function fuwUpdateOptions() {
var fuw = window.fuw;
var warn = fuw.warn;
var opts = fuw.opts = { };
opts.InputFilename = $('#TargetForm input#file').val();
var widgets = fuw.ScriptForm.elements;
for (i = 0; i < widgets.length; i++) {
var w = widgets[i];
if (w.type == "radio") {
var nm = w.name;
var id = w.id;
var vl = w.checked && !w.disabled && fuwIsVisible(w);
opts[id] = vl;
if (vl) opts[nm] = id;
}
else {
var id = w.id;
var active = !w.disabled && fuwIsVisible(w);
if (active) {
var value = ((type == 'checkbox') ? w.checked : w.value);
opts[id] = value;
}
}
};
opts.MainOption = opts.FreeOptions || opts.NonFreeOptions;
// some parts of the input form are re-used across sections
// and must be moved into the currently active input section:
// minimality section is shared between all NF sections
fuwMove('NFMinimalitySection', 'detailsNFSubject', (opts.OptionNFSubject)) ||
fuwMove('NFMinimalitySection', 'detailsNF3D', (opts.OptionNF3D)) ||
fuwMove('NFMinimalitySection', 'detailsNFExcerpt', (opts.OptionNFExcerpt)) ||
fuwMove('NFMinimalitySection', 'detailsNFCover', (opts.OptionNFCover)) ||
fuwMove('NFMinimalitySection', 'detailsNFLogo', (opts.OptionNFLogo)) ||
fuwMove('NFMinimalitySection', 'detailsNFPortrait', (opts.OptionNFPortrait)) ||
fuwMove('NFMinimalitySection', 'detailsNFMisc', true);
// AnyOtherInfo section is shared between all
fuwMove('AnyOtherInfo', 'detailsOwnWork', opts.OptionOwnWork) ||
fuwMove('AnyOtherInfo', 'detailsThirdParty', opts.OptionThirdParty) ||
fuwMove('AnyOtherInfo', 'detailsFreeWebsite', opts.OptionFreeWebsite) ||
fuwMove('AnyOtherInfo', 'detailsPDOld', opts.OptionPDOld) ||
fuwMove('AnyOtherInfo', 'detailsPDOther', opts.OptionPDOther) ||
fuwMove('AnyOtherInfo', 'detailsNFSubject', opts.OptionNFSubject) ||
fuwMove('AnyOtherInfo', 'detailsNF3D', opts.OptionNF3D) ||
fuwMove('AnyOtherInfo', 'detailsNFExcerpt', opts.OptionNFExcerpt) ||
fuwMove('AnyOtherInfo', 'detailsNFCover', opts.OptionNFCover) ||
fuwMove('AnyOtherInfo', 'detailsNFLogo', opts.OptionNFLogo) ||
fuwMove('AnyOtherInfo', 'detailsNFPortrait', opts.OptionNFPortrait) ||
fuwMove('AnyOtherInfo', 'detailsNFMisc', opts.OptionNFMisc);
// author input field is shared between all sections except "Own Work".
// (will serve for the immediate/photographic author, in those cases where there
// are two author fields)
fuwMove('Author', 'placeholderFreeWebsiteAuthor', (opts.OptionFreeWebsite)) ||
fuwMove('Author', 'placeholderPDOldAuthor', (opts.OptionPDOld)) ||
fuwMove('Author', 'placeholderPDOtherAuthor', (opts.OptionPDOther)) ||
fuwMove('Author', 'placeholderNFSubjectAuthor', (opts.OptionNFSubject)) ||
fuwMove('Author', 'placeholderNF3DAuthor', (opts.OptionNF3D)) ||
fuwMove('Author', 'placeholderNFExcerptAuthor', (opts.OptionNFExcerpt)) ||
fuwMove('Author', 'placeholderNFCoverAuthor', (opts.OptionNFCover)) ||
fuwMove('Author', 'placeholderNFPortraitAuthor', (opts.OptionNFPortrait)) ||
fuwMove('Author', 'placeholderNFMiscAuthor', (opts.OptionNFMisc)) ||
fuwMove('Author', 'placeholderAuthor', true);
// source input field is shared between all sections except "Own Work".
// (will serve for immediate/web source, in those cases where there are two
// source fields involved)
fuwMove('Source', 'placeholderFreeWebsiteSource', (opts.OptionFreeWebsite)) ||
fuwMove('Source', 'placeholderPDOldSource', (opts.OptionPDOld)) ||
fuwMove('Source', 'placeholderPDOtherSource', (opts.OptionPDOther)) ||
fuwMove('Source', 'placeholderNFSubjectSource', (opts.OptionNFSubject)) ||
fuwMove('Source', 'placeholderNF3DSource', (opts.OptionNF3D)) ||
fuwMove('Source', 'placeholderNFExcerptSource', (opts.OptionNFExcerpt)) ||
fuwMove('Source', 'placeholderNFCoverSource', (opts.OptionNFCover)) ||
fuwMove('Source', 'placeholderNFLogoSource', (opts.OptionNFLogo)) ||
fuwMove('Source', 'placeholderNFPortraitSource', (opts.OptionNFPortrait)) ||
fuwMove('Source', 'placeholderNFMiscSource', (opts.OptionNFMisc)) ||
fuwMove('Source', 'placeholderSource', true);
// date input field is shared between all sections except "Logo", which doesn't need it.
// will serve for derived/photographic date in the case of 3D items
fuwMove('Date', 'placeholderFreeWebsiteDate', (opts.OptionFreeWebsite)) ||
fuwMove('Date', 'placeholderThirdPartyDate', (opts.OptionThirdParty)) ||
fuwMove('Date', 'placeholderPDOldDate', (opts.OptionPDOld)) ||
fuwMove('Date', 'placeholderPDOtherDate', (opts.OptionPDOther)) ||
fuwMove('Date', 'placeholderNFSubjectDate', (opts.OptionNFSubject)) ||
fuwMove('Date', 'placeholderNF3DDate', (opts.OptionNF3D)) ||
fuwMove('Date', 'placeholderNFExcerptDate', (opts.OptionNFExcerpt)) ||
fuwMove('Date', 'placeholderNFCoverDate', (opts.OptionNFCover)) ||
fuwMove('Date', 'placeholderNFPortraitDate', (opts.OptionNFPortrait)) ||
fuwMove('Date', 'placeholderNFMiscDate', (opts.OptionNFMisc)) ||
fuwMove('Date', 'placeholderDate', true);
// permission field is shared between ThirdParty and FreeWebsite sections
fuwMove('Permission', 'placeholderFreeWebsitePermission', (opts.OptionFreeWebsite)) ||
fuwMove('Permission', 'placeholderPermission', true);
// publication field is shared between PDOld, NFPortrait and NFMisc
fuwMove('Publication', 'placeholderNFPortraitPublication', (opts.OptionNFPortrait)) ||
fuwMove('Publication', 'placeholderNFMiscPublication', (opts.OptionNFMisc)) ||
fuwMove('Publication', 'placeholderPublication', true);
// Purpose, Commercial, Replaceable and ReplaceableText FUR fields are shared
// between some but not all of the non-free sections
fuwMove('NFPurpose', 'placeholderNFExcerptPurpose', (opts.OptionNFExcerpt)) ||
fuwMove('NFPurpose', 'placeholderNFPurpose');
fuwMove('NFCommercial', 'placeholderNFPortraitCommercial', (opts.OptionNFPortrait)) ||
fuwMove('NFCommercial', 'placeholderNFCommercial');
fuwMove('NFReplaceable', 'placeholderNFPortraitReplaceable', (opts.OptionNFPortrait)) ||
fuwMove('NFReplaceable', 'placeholderNFReplaceable');
fuwMove('NFReplaceableText', 'placeholderNFExcerptReplaceable', (opts.OptionNFExcerpt)) ||
fuwMove('NFReplaceableText', 'placeholderNFReplaceableText', true);
// submit button goes to Step1 if user has chosen a plain overwrite of an existing file,
// and to the active section of Step3 if otherwise
fuwMove('fuwSubmit', 'UploadScriptStep1', (warn.ImageExists && opts.OverwriteSame)) ||
fuwMove('fuwSubmit', 'detailsOwnWork', opts.OptionOwnWork) ||
fuwMove('fuwSubmit', 'detailsThirdParty', opts.OptionThirdParty) ||
fuwMove('fuwSubmit', 'detailsFreeWebsite', opts.OptionFreeWebsite) ||
fuwMove('fuwSubmit', 'detailsPDOld', opts.OptionPDOld) ||
fuwMove('fuwSubmit', 'detailsPDOther', opts.OptionPDOther) ||
fuwMove('fuwSubmit', 'detailsNFSubject', opts.OptionNFSubject) ||
fuwMove('fuwSubmit', 'detailsNF3D', opts.OptionNF3D) ||
fuwMove('fuwSubmit', 'detailsNFExcerpt', opts.OptionNFExcerpt) ||
fuwMove('fuwSubmit', 'detailsNFCover', opts.OptionNFCover) ||
fuwMove('fuwSubmit', 'detailsNFLogo', opts.OptionNFLogo) ||
fuwMove('fuwSubmit', 'detailsNFPortrait', opts.OptionNFPortrait) ||
fuwMove('fuwSubmit', 'fuwSubmitHost', true);
// Show and hide warnings:
// filename-related warnings:
fuwSetVisible('warningIllegalChars', warn.IllegalChars);
fuwSetVisible('warningBadFilename', warn.BadFilename);
fuwSetVisible('warningImageOnCommons', warn.ImageOnCommons);
fuwSetVisible('warningImageExists', warn.ImageExists);
fuwMove('warningImageThumb', 'warningImageOnCommons', warn.ImageOnCommons, true) ||
fuwMove('warningImageThumb', 'warningImageExists', true, true);
// notices related to the top-level options:
fuwSetVisible('warningWhyNotCommons', opts.OptionFree);
fuwSetVisible('warningNF', opts.OptionNonFree);
fuwSetVisible('warningNoGood', opts.OptionNoGood);
// warnings related to non-free "used in" article
fuwSetVisible('warningNFArticleNotFound', warn.NFArticleNotFound);
fuwSetVisible('warningNFArticleNotMainspace', warn.NFArticleNotMainspace);
fuwSetVisible('warningUserspaceDraft', warn.UserspaceDraft);
fuwSetVisible('warningNFArticleDab', warn.NFArticleDab);
fuwSetVisible('NFArticleOK', warn.NFArticleOK);
// warnings depending on user status:
if (fuw.userStatus.match(/problem|newbie|notAutoconfirmed/)) {
fuwSetVisible('warningFreeWebsite', opts.OptionFreeWebsite);
fuwSetVisible('warningOwnWork', opts.OptionOwnWork);
fuwSetVisible('warningPDOther', opts.OptionPDOther);
fuwSetVisible('warningNFSubject', opts.OptionNFSubject);
}
// hide main sections in case of intended plain overwrite:
fuwSetVisible('UploadScriptStep2', !(warn.ImageExists && opts.OverwriteSame));
fuwSetVisible('UploadScriptStep3', !(warn.ImageExists && opts.OverwriteSame));
// show/hide top-level options
fuwSetVisible('detailsFreeStatus', opts.OptionFree);
fuwSetVisible('sendToCommons', opts.OptionFree);
// show/hide details sections
fuwSetVisible('detailsNFArticle', opts.OptionNonFree);
fuwSetVisible('detailsNFWorkType', opts.OptionNonFree);
fuwSetVisible('detailsOwnWork', opts.OptionOwnWork);
fuwSetVisible('detailsThirdParty', opts.OptionThirdParty);
fuwSetVisible('detailsFreeWebsite', opts.OptionFreeWebsite);
fuwSetVisible('detailsPDOld', opts.OptionPDOld);
fuwSetVisible('detailsPDOther', opts.OptionPDOther);
fuwSetVisible('detailsNFSubject', opts.OptionNFSubject);
fuwSetVisible('detailsNF3D', opts.OptionNF3D);
fuwSetVisible('detailsNFExcerpt', opts.OptionNFExcerpt);
fuwSetVisible('detailsNFCover', opts.OptionNFCover);
fuwSetVisible('detailsNFLogo', opts.OptionNFLogo);
fuwSetVisible('detailsNFPortrait', opts.OptionNFPortrait);
fuwSetVisible('detailsNFMisc', opts.OptionNFMisc);
fuwSetVisible('EditSummaryDiv', opts.OverwriteSame || opts.OverwriteDifferent);
// set enabled/disabled
// It might be useful to adapt this to be more liberal about
// the order of input, at least for experienced users.
//fuwSetEnabled('Artist3D', opts.PD3D);
//fuwSetEnabled('Country3D', opts.FOP3D);
fuwSetEnabled('ThirdPartyEvidenceLink', opts.ThirdPartyEvidenceOptionLink);
fuwSetEnabled('ThirdPartyOTRSTicket', opts.ThirdPartyEvidenceOptionOTRS);
fuwSetEnabled('NFSubjectPurpose', opts.NFSubjectCheckDiscussed);
fuwSetEnabled('NF3DPurpose', opts.NF3DCheckDiscussed);
fuwSetEnabled('NF3DPermission', opts.NF3DOptionFree);
fuwSetEnabled('USGovLicense', opts.PDOtherUSGov);
fuwSetEnabled('PDOfficialPermission', opts.PDOtherOfficial);
fuwSetEnabled('IneligibleLicense', opts.PDOtherSimple);
fuwSetEnabled('PDOtherPermission', opts.PDOtherOther);
fuwSetEnabled('AnyOther', true);
// need to re-collect the remaining (non-radiobutton) input into the opts object again,
// preparing for validation:
for (i = 0; i < widgets.length; i++) {
var w = widgets[i];
var type = w.type;
if (type != "radio") {
var id = w.id;
var active = !w.disabled && fuwIsVisible(w);
if (active) {
var value = ((type == 'checkbox') ? w.checked : w.value);
opts[id] = value;
}
}
};
// final step of validation: check if input is sufficient for
// setting the submit buttons active
var valid = fuw.validateInput();
var validForCommons = valid && opts.OptionFree && !(opts.OverwriteSame || opts.OverwriteDifferent)
&& !opts.ThirdPartyEvidenceOptionNone;
fuwSetVisible('sendToCommons', opts.OptionFree);
fuwSetEnabled('CommonsButton', validForCommons);
fuwGet('fuwSubmitText').innerHTML = opts.OptionFree ?
("<b>No</b>, I want to upload this file here on this wiki only.<br/>" +
"<small>This way it can be used only on the English Wikipedia. However, somebody " +
"else might still decide to copy it to Commons or use it elsewhere later. If you " +
"do not want your file to be copied to Commons and deleted locally, consider adding " +
"{{tl|Keep local}}.</small>") :
"Upload this file.";
fuwGet('SubmitButton').value = validForCommons ? "Upload locally" : "Upload";
fuwSetEnabled('EditSummary', true);
fuwSetEnabled('SubmitButton', valid && (fuw.userStatus != 'notAutoconfirmed'));
if (fuwTesting) {
fuwSetEnabled('SandboxButton', valid);
}
// if we're in testing mode, update the Sandbox display fields
// after each input change. In normal mode, collectInput() will
// only be needed on submit.
if (fuwTesting) {
fuw.collectInput();
fuw.formatOutput(false);
fuwSetVisible('placeholderTestForm', true);
}
}
// ============================================================
// methods of the global fuw object
// ============================================================
// ============================================================
// report validation status of filename information
// ============================================================
// This is called from within fuw.validateInput(), i.e. every
// time anything in the whole form is changed. It only reports
// results that have previously been cached in the opts and warn
// objects. The actual checking is done in the event handler
// of the file input boxes.
fuwGlobal.prototype.hasValidFilename = function() {
var opts = this.opts;
var warn = this.warn;
var valid =
opts.InputName &&
opts.InputFilename &&
!warn.BadFilename &&
!warn.ImageOnCommons &&
// if image exists on enwiki, accept only if user has confirmed overwrite:
!(warn.ImageExists && !(opts.OverwriteSame || opts.OverwriteDifferent));
//alert("HasValidFilename: " + valid);
return valid;
};
// ============================================================
// validation status for common input elements for all free
// options
// ============================================================
fuwGlobal.prototype.hasValidCommonFreeInput = function() {
var opts = this.opts;
var warn = this.warn;
var valid = opts.InputDesc;
//alert("HasValidCommonFreeInput: " + valid);
return valid;
};
// ============================================================
// validation status for common input elements for all non-free
// options
// ============================================================
fuwGlobal.prototype.hasValidCommonNFInput = function() {
var opts = this.opts;
var warn = this.warn;
var valid =
opts.OptionNonFree &&
opts.InputDesc &&
opts.NFArticle &&
opts.Source &&
opts.NFMinimality &&
!warn.NFArticleNotFound &&
!warn.NFArticleNotMainspace &&
!warn.NFArticleDab;
//alert("hasValidCommonNFInput: " + valid);
return valid;
};
// ============================================================
// Main validation routine. Modify this to tweak which fields
// are to be considered obligatory for each case group
// ============================================================
fuwGlobal.prototype.validateInput = function() {
var opts = this.opts;
var warn = this.warn;
var valid = (
this.hasValidFilename()
&&
(! (opts.OverwriteDifferent && ! opts.EditSummary))
&&
(
( // overwriting is okay if there is an edit summary
opts.OverwriteSame && opts.EditSummary
)
||
( // free options
this.hasValidCommonFreeInput() &&
(
(opts.OptionOwnWork &&
opts.Date &&
opts.OwnWorkLicense)
||
(opts.OptionThirdParty &&
opts.Author &&
opts.Source &&
opts.Permission &&
(opts.ThirdPartyOtherLicense || opts.ThirdPartyLicense) &&
((opts.ThirdPartyEvidenceOptionLink && opts.ThirdPartyEvidenceLink) ||
opts.ThirdPartyEvidenceOptionOTRS ||
opts.ThirdPartyEvidenceOptionOTRSForthcoming ||
opts.ThirdPartyEvidenceOptionNone))
||
(opts.OptionFreeWebsite &&
opts.Author &&
opts.Source &&
(opts.FreeWebsiteOtherLicense || opts.FreeWebsiteLicense) &&
opts.Permission)
||
(opts.OptionPDOld &&
opts.Author &&
opts.PDOldAuthorLifetime &&
opts.Publication &&
opts.Date &&
opts.Source &&
opts.PDOldOptions &&
(! (opts.PDOldOther && ! opts.PDOldPermission)))
||
(opts.OptionPDOther &&
opts.Author &&
opts.Source &&
((opts.PDOtherUSGov && opts.USGovLicense) ||
(opts.PDOtherOfficial && opts.PDOfficialPermission) ||
(opts.PDOtherSimple && opts.IneligibleLicense) ||
(opts.PDOtherOther && opts.PDOtherPermission)))
)
) // end of free options
||
( // non-free options
this.hasValidCommonNFInput() &&
(
(opts.OptionNFSubject &&
opts.NFSubjectLicense &&
opts.Author &&
(opts.NFSubjectCheckDedicated ||
(opts.NFSubjectCheckDiscussed && opts.NFSubjectPurpose)))
||
(opts.OptionNF3D &&
opts.NF3DLicense &&
opts.NF3DCreator &&
opts.Author &&
(opts.NF3DOptionSame ||
(opts.NF3DOptionFree || opts.NF3DPermission)) &&
(opts.NF3DCheckDedicated ||
(opts.NF3DCheckDiscussed && opts.NF3DPurpose)))
||
(opts.OptionNFExcerpt &&
opts.NFExcerptLicense &&
opts.Author &&
opts.NFPurpose)
||
(opts.OptionNFCover &&
opts.NFCoverLicense &&
opts.Author &&
opts.NFCoverCheckDedicated
)
||
(opts.OptionNFLogo &&
opts.NFLogoLicense &&
opts.NFLogoCheckDedicated
)
||
(opts.OptionNFPortrait &&
opts.Publication &&
opts.NFPortraitDeceased &&
opts.Author &&
opts.NFPortraitCheckDedicated &&
opts.NFReplaceable &&
opts.NFCommercial)
||
(opts.OptionNFMisc &&
opts.NFMiscLicense &&
opts.Author &&
opts.Publication &&
opts.NFPurpose &&
opts.NFReplaceableText &&
opts.NFReplaceable &&
opts.NFCommercial)
)
) // end of non-free options
)
);
return valid;
};
// =============================================================
// return which template name will be used as the main
// description template
// =============================================================
fuwGlobal.prototype.getDescriptionTemplateName = function() {
// standard "Information" template for free files:
if (this.opts.OptionFree) return "Information";
// experimental new version of fair-use rationale template,
// designed to fit the fields used in the wizard
else if (this.opts.OptionNonFree) return "Non-free use rationale 2";
return undefined;
};
// =============================================================
// get the license tag code from the appropriate input element
// =============================================================
fuwGlobal.prototype.getStandardLicense = function() {
var opts = this.opts;
}
fuwGlobal.prototype.getLicense = function() {
var opts = this.opts;
// ThirdParty and FreeWebsite have alternative input fields
// for manual entry of other licenses:
var license = {};
if (opts.PDOtherOther || opts.PDOldOther) {
license.special = opts.PDOtherOther ? opts.PDOtherPermission : opts.PDOldPermission;
if (! (license.special.match(/^\s*\{\{.+\}\}\s*$/))) {
license.special = '{{PD-because|' + license.special + '}}';
}
}
else {
license.special =
opts.ThirdPartyOtherLicense ||
opts.FreeWebsiteOtherLicense ||
(opts.PDOtherOfficial ? ('{{PD-because|official item legally exempt from copyright in its country of origin}}') : null) ||
(opts.OptionNFPortrait ? ('{{Non-free biog-pic|' + opts.NFArticle + '}}') : null);
}
if (! license.special) {
// standard, non-parametrized tag licenses from dropdownbox.
var simpleLicense = (opts.OptionOwnWork ? opts.OwnWorkLicense : null) ||
(opts.OptionThirdParty ? opts.ThirdPartyLicense : null) ||
(opts.OptionFreeWebsite ? opts.FreeWebsiteLicense : null) ||
(opts.OptionNFSubject ? opts.NFSubjectLicense : null) ||
(opts.OptionNF3D ? opts.NF3DLicense : null) ||
(opts.OptionNFExcerpt ? opts.NFExcerptLicense : null) ||
(opts.OptionNFCover ? opts.NFCoverLicense : null) ||
(opts.OptionNFLogo ? opts.NFLogoLicense : null) ||
(opts.OptionNFMisc ? opts.NFMiscLicense : null) ||
(opts.PDOtherUSGov ? opts.USGovLicense : null) ||
(opts.PDOtherSimple ? opts.IneligibleLicense : null) ||
(opts.PDUSExpired ? 'PD-US-expired' : null) ||
(opts.PDURAA ? 'PD-URAA' : null) ||
(opts.PDFormality ? 'PD-US' : null);
// "PD-author" needs parameter, at least on Commons
if (simpleLicense == 'PD-author') {
license.special = '{{PD-author|' + opts.Author + '}}';
}
else if (this.knownCommonsLicenses[simpleLicense]) {
// make sure we send only those licenses as "standard" licenses
// that exist in the Commons license dropdown box
license.standard = simpleLicense;
}
else {
license.special = '\{\{' + simpleLicense + '\}\}';
}
}
return license;
};
function fuwSubst(template) {
return '{{subst:' + template + '}}';
}
// ===================================================================
// Produce code for local tracking categories
// ===================================================================
fuwGlobal.prototype.getTrackingCategory = function() {
var opts = this.opts;
var cat = "";
if (opts.OptionFreeWebsite) { cat = "Files from freely licensed external sources"; }
else if (opts.OptionThirdParty) { cat = "Files licensed by third parties"; }
else if (opts.PDOtherOther || opts.PDOldOther) { cat = "Files with non-standard public domain statements"; }
else if (opts.OptionNFSubject || opts.OptionNF3D) { cat = "Non-free files uploaded as object of commentary"; }
if (cat) {
cat = "\n\{\{Category ordered by date|" + cat + "|" +
fuwSubst("CURRENTYEAR") + "|" + fuwSubst("CURRENTMONTH") + "|" + fuwSubst("CURRENTDAY2") + "\}\}";
}
return cat;
};
// ===================================================================
// Get or create an edit summary for the upload
// ===================================================================
// Note: if we work with the api.php interface, we can have separate
// data for the edit summary and the description page, which is far
// better than the way the index.php interface does it.
// TO DO: need to actually define an input element for a manually
// entered edit summary. Must be obligatory when overwriting files.
// In other cases we'll use an automatic edit summary.
// ===================================================================
fuwGlobal.prototype.getEditSummary = function() {
var opts = this.opts;
return (
(opts.EditSummary ? (opts.EditSummary + ' ([[' + mw.config.get('wgPageName') + '|File Upload Wizard]])') : null)||
("Uploading " +
(
(opts.OptionOwnWork ? 'a self-made file ' : false) ||
(opts.OptionThirdParty ? 'a free file from somebody else ' : false) ||
(opts.OptionFreeWebsite ? 'a file from a free published source ' : false) ||
(opts.OptionPDOld ? 'an old public-domain work ' : false) ||
(opts.OptionPDOther ? 'a public-domain item ' : false) ||
(opts.OptionNFSubject ? 'a non-free work, as object of commentary ' : false) ||
(opts.OptionNF3D ? 'a depiction of a non-free 3D artwork ' : false) ||
(opts.OptionNFExcerpt ? 'an excerpt from a non-free work ' : false) ||
(opts.OptionNFCover ? 'a piece of non-free cover art ' : false) ||
(opts.OptionNFLogo ? 'a non-free logo ' : false) ||
(opts.OptionNFPortrait ? 'a non-free historic portrait ' : false) ||
(opts.OptionNFMisc ? 'a non-free file ' : "")
)
+
("using [[" + mw.config.get('wgPageName') + "|File Upload Wizard]]")
));
};
function fuwPackInfo(text, forCommons) {
if (forCommons) {
// reformat wikilinks embedded in description fields to adapt them for Commons
text = text.replace(/\[\[([^\]]+)\]\]/g,
function(str, p1, offset, s) {
// mark File links as local
if (p1.match(/^:(File|Image):/)) {
return "[[:en" + p1 + "]]";
}
// leave prefixed links unchanged:
else if (p1.match(/^:[\w\-]+:/)) {
return str;
}
// if the link is piped, add a prefix only
else if (p1.match(/.+\|/)) {
return "[[:en:" + p1 + "]]";
}
// introduce a pipe
else {
return "[[:en:" + p1 + "|" + p1 + "]]";
}
}
);
return "{{en|" + text + "}}";
} else return text;
}
// ================================================================
// This is the main method called by the event handler for the
// (experimental) submit button. Its main task is to collect the
// input into a single string of wikitext for the description page.
// ================================================================
fuwGlobal.prototype.collectInput = function() {
var opts = this.opts;
// object representing template fields for filling in
// the description template. Pre-loaded with some
// standard settings:
var descFields = this.descFields = {
'Description' : opts.InputDesc,
'Author' : opts.Author,
'Date' : opts.Date,
'Source' : opts.Source
};
// "other information" (outside the template)
this.otherInfo = null;
if (opts.OptionNonFree) {
descFields.Article = opts.NFArticle;
}
// add/modify option-specific fields:
switch (opts.MainOption) {
case 'OptionOwnWork':
// use standard "source" field for optional "how created?" and
// "previously published" input fields.
descFields.Source = fuwAppendLines([
(opts.OwnWorkCreation || "{{own}}"),
"<br/>\n",
fuwSurroundString("'''Previously published:''' ", opts.OwnWorkPublication)]);
var username = mw.user.getName();
descFields.Author = '[[User:' + username + '|' + username + ']]';
break;
case 'OptionThirdParty':
// use standard "permission" field for a compilation of the
// "permission" input field and the various "evidence" options
var evidence = (
opts.ThirdPartyEvidenceOptionLink ?
("The license statement can be found online at: " + opts.ThirdPartyEvidenceLink) :
(opts.ThirdPartyEvidenceOptionOTRS ?
("The license agreement has been forwarded to OTRS." +
fuwSurroundString(" Ticket: ", opts.ThirdPartyOTRSTicket) + "\{\{OTRS pending|year=" + fuwSubst("CURRENTYEAR") +
"|month=" + fuwSubst("CURRENTMONTH") +
"|day=" + fuwSubst("CURRENTDAY2") + "\}\}") :
(opts.ThirdPartyEvidenceOptionOTRSForthcoming ?
"The license agreement will be forwarded to OTRS shortly. \{\{OTRS pending|year=" + fuwSubst("CURRENTYEAR") +
"|month=" + fuwSubst("CURRENTMONTH") +
"|day=" + fuwSubst("CURRENTDAY2") + "\}\}" :
(opts.ThirdPartyEvidenceOptionNone ?
"Will be provided on request." : null))));
descFields.Permission = fuwAppendLines([
opts.ThirdPartyPermission,
"<br/>\n",
fuwSurroundString("'''Evidence:''' ", evidence)]);
break;
case 'OptionFreeWebsite':
descFields.Permission = opts.Permission;
break;
case 'OptionPDOld':
// add "lifetime" input to "author" field
descFields.Author = fuwAppendLines([
opts.Author,
"<br/>\n",
fuwSurroundString("(Life time: ", opts.PDOldAuthorLifetime, ")")
]);
// combine original and direct source into standard "source" field:
descFields.Source = fuwAppendLines([
fuwSurroundString("'''Original publication''': ", opts.Publication),
"<br/>\n",
fuwSurroundString("'''Immediate source''': ", opts.Source)
]);
// no standard tag available for "lack-of-registration" PD-US. Need
// to put this into the "permission" field
if (opts.PDFormality)
descFields.Permission =
"Copyright expired because the work was published without a copyright " +
"notice and/or without the necessary copyright registration.";
// add optional "explanation" input to "permission" field
if (opts.PDOldPermission) {
descFields.Permission = fuwAppendLines([
descFields.Permission,
"\n\n",
opts.PDOldPermission
]);
}
break;
case 'OptionPDOther':
// Need "permission" field in case of "official item" option
if (opts.PDOtherOfficial)
descFields.Permission = opts.PDOfficialPermission;
break;
case 'OptionNFSubject':
// most FUR elements can be automatically provided:
descFields.Purpose = (
opts.NFSubjectCheckDedicated ?
("For visual identification of the object of the article. " +
"The article as a whole is dedicated specifically to a discussion of this work.") :
(opts.NFSubjectCheckDiscussed ?
("To support encyclopedic discussion of this work in this article. " +
"The illustration is specifically needed to support the following point(s): " +
"<br/>\n" + opts.NFSubjectPurpose) : null)
);
descFields.Replaceability = "Any derivative work based upon the artwork would be a copyright violation, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution image of the artwork will not impact the commercial viability of the art.";
break;
case 'OptionNF3D':
// complex case: we need to assemble attribution and FUR both for the
// original 3D work and for the photographic depiction. Both might be
// non-free.
descFields.Author = fuwAppendLines([
fuwSurroundString("'''Original work:''' ", opts.NF3DCreator),
"<br/>\n",
fuwSurroundString("'''Depiction:''' ", opts.Author)
]);
descFields.Date = fuwAppendLines([
fuwSurroundString("'''Original work:''' ", opts.NF3DOrigDate),
"<br/>\n",
fuwSurroundString("'''Depiction:''' ", opts.Date)
]);
descFields.Purpose = (
opts.NF3DCheckDedicated ?
("For visual identification of the object of the article. " +
"The article as a whole is dedicated specifically to a discussion of this work.") :
(opts.NF3DCheckDiscussed ?
("To support encyclopedic discussion of this work in this article. " +
"The illustration is specifically needed to support the following point(s): " +
"<br/>\n" + opts.NF3DPurpose) : null)
);
descFields.Replaceability = "Any derivative work based upon the artwork would be a copyright violation, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution image of the artwork will not impact the commercial viability of the art.";
descFields["Other information"] = (
opts.NF3DOptionSame ?
("The image was created and published by the same author who also " +
"holds the rights to the original object, and no alternative depiction " +
"could be suitably created.") :
("The author of the image has released the photographic work under a " +
"free license, or it is in the public domain: " + opts.NF3DPermission)
);
break;
case 'OptionNFExcerpt':
// FURs for screenshots etc. don't normally need to bother
// about replaceability (with free images) and with commercial role,
// but do need to bother about purpose and about replaceability with text.
descFields.Purpose = opts.NFPurpose;
descFields.Replaceability_text = opts.NFReplaceableText;
descFields.Replaceability = "The software or website from which the screenshot is taken is copyrighted and not released under a free license, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution screenshot from software or a website will not impact the commercial viability of the software or site.";
break;
case 'OptionNFCover':
// cover art gets standard rationales.
descFields.Purpose =
"to serve as the primary means of visual identification " +
"at the top of the article dedicated to the work in question.";
descFields.Replaceability = "Any derivative work based upon the cover art would be a copyright violation, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution image of a work's cover will not impact the commercial viability of the work.";
break;
case 'OptionNFLogo':
// logos get standard rationales.
descFields.Purpose =
"to serve as the primary means of visual identification " +
"at the top of the article dedicated to the entity in question.";
descFields.Replaceability = "Any derivative work based upon the logo would be a copyright violation, so creation of a free image is not possible.";
descFields.Commercial = "The use of a low resolution image of an organization's logo in the article about that organization will not impact the commercial viability of the logo.";
break;
case 'OptionNFPortrait':
// as with other historic photographs, it is useful to have both
// original publication and direct source
descFields.Source = fuwAppendLines([
fuwSurroundString("'''Original publication''': ", opts.Publication),
"<br/>\n",
fuwSurroundString("'''Immediate source''': ", opts.Source)
]);
descFields.Purpose =
"for visual identification of the person in question, " +
"at the top of their biographical article";
descFields.Replaceability = opts.NFReplaceable;
descFields.Commercial = opts.NFCommercial;
descFields['Other information'] =
"The subject of the photograph has been deceased since: " + opts.NFPortraitDeceased;
break;
case 'OptionNFMisc':
descFields.Source = fuwAppendLines([
fuwSurroundString(
"'''Original publication''': ",
opts.Publication,
"<br/>\n'''Immediate source:''' "),
"",
opts.Source
]);
descFields.Purpose = opts.NFPurpose;
descFields.Replaceability = opts.NFReplaceable;
descFields.Replaceability_text = opts.NFReplaceable_text;
descFields.Commercial = opts.NFCommercial;
break;
};
if (opts.OptionNonFree) {
// common stuff for all non-free files:
// Minimality field (same for all NF options):
descFields.Minimality = opts.NFMinimality;
// append optional "extra license" selector and "AnyOther" fields
// to "Other information" field:
descFields['Other information'] = fuwAppendLines([
descFields['Other information'],
"<br/>\n",
fuwSurroundString('\{\{', opts.NFExtraLicense, '\}\}'),
"<br/>\n",
opts.AnyOther
]);
}
else {
// common stuff for all free files:
descFields.Other_versions = ''
this.otherInfo = fuwAppendLines([this.otherInfo, "\n\n", opts.AnyOther]);
}
};
fuwGlobal.prototype.formatOutput = function(forCommons) {
var baseForm = this.ScriptForm;
var targetForm = this.TargetForm;
if (fuwTesting) {
var testForm = this.TestForm;
}
var opts = this.opts;
var otherInfo = this.otherInfo;
var descFields = this.descFields;
var summary = "{{" + this.getDescriptionTemplateName();
// assemble all fields into the wikitext of the description page:
var fieldOrder = [
'Source', 'Date', 'Author', 'Permission', 'Other_versions',
'Article', 'Purpose', 'Replaceability', 'Replaceability_text',
'Minimality', 'Commercial', 'Other information'
];
summary += "\n|Description = " + fuwPackInfo(descFields['Description'], forCommons);
for (var i = 0; i < fieldOrder.length; i++) {
if (descFields[fieldOrder[i]]) {
summary += "\n|" + fieldOrder[i] + " = " + descFields[fieldOrder[i]];
}
}
summary += "\n}}\n";
if (otherInfo) {
summary += "\n;Other information:\n" + fuwPackInfo(otherInfo, forCommons) + "\n";
}
var editSummary = this.getEditSummary();
var license = this.getLicense();
if (forCommons) {
// pack our description info into an url pointing to the
// standard Commons Special:Upload
// with pre-loaded description fields
summary = fuwSubst("Upload marker added by en.wp UW") + "\n" + summary;
summary = summary.replace(/\{\{OTRS pending\}\}/g, fuwSubst("OP"));
if (license.special) {
// manually format the whole description page including the license tag, if it
// isn't one of the bare standard licenses in the dropdown box. Otherwise,
// submit description summary and license as two separate url parameters.
summary = summary + "\n\n" + license.special;
}
return (fuwGetCommonsURL() +
"?title=Special:Upload" +
"&wpUploadDescription=" +
encodeURIComponent(summary) +
(license.standard ?
("&wpLicense=" + encodeURIComponent(license.standard)) : '') +
"&wpDestFile=" +
encodeURIComponent(opts.InputName));
}
else {
// pack all description into a single "text" parameter to be submitted
// to the local api.php upload.
summary = "==ಸಾರಾಂಸೊ==\n" +
summary +
"\n==ಪರವಾನಿಗೆ==\n" +
(license.standard ? ("\{\{" + license.standard + "\}\}") : license.special) +
this.getTrackingCategory();
if (fuwTesting) {
// Testing mode: show our data in the dummy form
// at the bottom of the page.
fuwGet('placeholderSandboxFilename').innerHTML = opts.InputName;
this.TestForm.SandboxSummary.value = editSummary;
this.TestForm.SandboxText.value = summary;
fuwSetVisible('placeholderTestForm', true);
}
// Set up API call parameters
this.UploadOptions.filename = opts.InputName;
this.UploadOptions.text = summary;
this.UploadOptions.comment = editSummary;
}
};
function fuwHasUserGroup(group) {
// workaround because old IE versions don't have array.indexOf :-(
for (i = 0; i < mw.config.get('wgUserGroups').length; i++) {
if (mw.config.get('wgUserGroups')[i] == group) {
return true;
}
}
return false
}
fuwGlobal.prototype.getUserStatus = function() {
// function to determine the experience status and userrights of the current user:
// 'anon': not logged in; can't use script.
// 'notAutoconfirmed': can't use local upload, but may use script to prepare upload for Commons
// 'newbie': autoconfirmed but editcount < 100
// (may be used in future to adapt instructions more to newbie needs)
// 'problem': autoconfirmed but has 3 or more image-related warnings or deletion notifications among recent user talk entries
// (may be used in future to produce more strongly worded instructions)
// 'autoconfirmed': regular user
// 'sysop'
if (mw.config.get('wgUserName')) {
if (fuwHasUserGroup('sysop')) {
this.userStatus = 'sysop';
}
else if (fuwHasUserGroup('autoconfirmed') || fuwHasUserGroup('confirmed')) {
this.userStatus = 'autoconfirmed';
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'GET',
dataType: 'xml',
traditional : true,
data: {
format: 'xml',
action: 'query',
meta : 'userinfo',
uiprop: 'editcount',
prop : 'revisions',
titles: 'User talk' + mw.config.get('wgUserName'),
rvprop: 'comment|user',
rvlimit: 30
},
success: function(data) {
// callback func
var fuw = window.fuw;
if (data) {
var ui = data.getElementsByTagName('userinfo');
if (ui) {
var editcount = ui[0].getAttribute('editcount');
if (editcount < 100) {
fuw.userStatus = 'newbie';
}
}
var revs = data.getElementsByTagName('rev');
var countWarn = 0;
for (i = 0; i < revs.length; i++) {
var rev = revs[i];
var usr = rev.getAttribute('user');
var cmt = rev.getAttribute('comment');
if ((usr == 'ImageTaggingBot') ||
(cmt.search(/(tagging for deletion of \[\[File)|(Uploading files missing)|(File (source and )?copyright licensing problem)|(Speedy deletion nomination of \[\[File)|(Notification: listing at \[\[possibly unfree files)/) >= 0)) {
countWarn += 1;
}
}
if (countWarn >= 3) {
fuw.userStatus = 'problem';
}
}
}
});
}
else {
this.userStatus = 'notAutoconfirmed';
}
}
else {
this.userStatus = 'anon';
}
};
// =================================================================
// Convenience function for getting the regular index.php
// interface of Commons. Not very elegant.
// =================================================================
function fuwGetCommonsURL() {
if (document.URL.match(/^https:/))
return "https://commons.wikimedia.org/w/index.php";
else
return "http://commons.wikimedia.org/w/index.php";
}
// ==================================================================
// functions for building form elements
// ==================================================================
fuwMakeRadiobutton = function(group, option, checked, event) {
// Stupid IE7 doesn't get "value" attribute unless it's created in this convoluted way.
// Annoying.
var node = $('<input type="radio" id="' + option + '" name="' + group + '" value="' + option + '"></input>')[0];
if (checked) node.checked = true;
node.onclick = event || fuwRadioClick;
node.onclick = event || fuwRadioClick;
fuwAppendInput(option, node);
};
fuwMakeTextfield = function(label, event) {
var node = document.createElement('input');
node.type = 'text';
node.name = label;
node.size = fuwDefaultTextboxLength;
node.onchange = event || fuwUpdateOptions;
// only for testing:
//node.value = label;
fuwAppendInput(label, node);
};
fuwMakeTextarea = function(label, event) {
var node = document.createElement('textarea');
node.name = label;
node.rows = fuwDefaultTextareaLines;
node.style.width = fuwDefaultTextareaWidth;
node.onchange = event || fuwUpdateOptions;
//only for testing:
//node.innerHTML = label;
fuwAppendInput(label, node);
};
fuwMakeCheckbox = function(label, checked, event) {
var node = document.createElement('input');
node.name = label;
node.type = 'checkbox';
//only for testing:
//node.title= label;
node.checked = checked;
node.onchange = event || fuwUpdateOptions;
fuwAppendInput(label, node);
}
fuwMakeHiddenfield = function(name, value, id) {
var node = document.createElement('input');
node.name = name;
node.type = 'hidden';
node.value = value;
fuwAppendInput((id || name), node);
};
fuwMakeAnchor = function(label, href, content) {
var node = document.createElement('a');
node.name = label;
node.target= "_blank";
node.href = href;
node.innerHTML = content;
fuwAppendInput(label, node);
};
fuwMakeSelection = function(name, values) {
var root = document.createElement('select');
var current = root;
try {
for (i=0; i<values.length; i++) {
var line = values[i];
var entry;
if (line.length == 0) {
current = root;
}
else if (line.length == 1) {
entry = document.createElement('optgroup');
entry.setAttribute('label', line[0]);
root.appendChild(entry);
current = entry;
}
else {
entry = document.createElement('option');
entry.setAttribute('value', line[0]);
entry.setAttribute('title', '{{' + line[0] + '}}');
entry.innerHTML = line[1];
if (line.length > 2) {
entry.setAttribute('selected', 'selected');
}
current.appendChild(entry);
}
}
} catch (e) { alert("Name: " + name + ", i=" + i); }
root.name = name;
root.onchange = fuwUpdateOptions;
fuwAppendInput(name, root);
};
function fuwMakeWikilink(place, target, redlink, display) {
place = fuwGet(place);
var id = place.id;
var anchor;
if (place.tagName == 'A') {
anchor = place;
}
else {
anchor = document.createElement('a');
place.appendChild(anchor);
}
anchor.href = mw.util.getUrl(target);
anchor.title = target;
anchor.innerHTML = target;
anchor.className = (redlink ? 'new' : null);
}
function fuwAppendInput(label, content) {
// append a newly created input element to an existing
// span element marked as id="placeholderXYZ"
var node = fuwGet('placeholder' + label);
var old = fuwGet(label);
if (old) {
old.parentNode.removeChild(old);
}
content.id = content.id || label;
if (node) {
while (node.hasChildNodes()) {
node.removeChild(node.firstChild);
}
node.appendChild(content);
}
}
// ======================================================
// move an element away from its current position
// and append it to a target element if condition is true
// ======================================================
function fuwMove(mv, tg, condition, toStart) {
if (condition) {
move = fuwGet(mv);
target = fuwGet(tg);
if (move && target) {
var parent = move.parentNode;
if (! (target===parent)) {
parent.removeChild(move);
if (toStart) {
target.insertBefore(move, target.firstChild);
}
else {
target.appendChild(move);
}
}
}
else {
alert("Can't find elements: move=" + mv + "(" + move + "), target=" + tg + "(" + target + ")");
}
}
return condition;
}
// ===================================================
// make an element visible/invisible
// ===================================================
function fuwSetVisible(tg, condition) {
target = fuwGet(tg);
if (target) {
if (condition) {
$(target).show();
}
else {
$(target).hide();
}
}
else {
alert("Element not found: " + (tg.nodeType ? tg.id : tg));
}
}
// ===================================================
// set enabled/disabled status for an element and/or
// all input controls contained in it.
// ===================================================
function fuwSetEnabled(tg, condition) {
target = fuwGet(tg);
try {
var elements = (target.tagName.match(/^(input|textarea|select|button|a)$/i) ?
[target] :
$('#' + target.id + ' *'));
for (i = 0; i<elements.length; i++) {
if (elements[i].tagName.match(/^(input|textarea|select|button|a)$/i)) {
elements[i].disabled = (condition ? null : "disabled");
}
}
} catch (e) { alert("Element not found: " + (tg.nodeType ? tg.id : tg)); }
}
// ===================================================
// convenience function to check whether a given
// element is currenly visible. Needs to check display
// property of the element and its ancestors
// ===================================================
function fuwIsVisible(el) {
element = fuwGet(el);
if (!element) return false;
el = element.id;
var visible = true;
while (! (element === document.body)) {
if (element.style.display == "none") {
visible = false;
break;
}
element = element.parentNode;
}
return visible;
}
// ===================================================
// cleanup filename
// ===================================================
function fuwCleanFilename() {
var nameBox = window.fuw.ScriptForm.InputName;
var oldname = name = $.trim(nameBox.value);
if (name) {
// strip accidentally added [[ ]] or [[: ]] brackets
name = name.replace(/(^\[\[:?)|(\]\]$)/g, "");
// strip accidentally added "File:" prefix
name = name.replace(/^(File|Image):/, "");
// replace underscores with spaces
name = name.replace(/_/g, " ");
// uppercase first letter
name = name[0].toUpperCase() + name.slice(1);
}
if (oldname != name) {
nameBox.value = name;
}
// always return true so the next validation step will proceed:
return true;
}
// ==================================================
// check filename for technically illegal
// characters, trying to fix them automatically
// ==================================================
function fuwCheckLegalFilename() {
var nameBox = window.fuw.ScriptForm.InputName;
var oldname = name = $.trim(nameBox.value);
if (name) {
// resolve accidentally entered html entities and URI-encoded %XX character codes
name = name.replace(/\&[a-z]+;/g, fuwHtmlEntityDecode);
name = name.replace(/(\%[A-F0-9]{2,2})/g, decodeURI);
// remove illegal characters # < > [ ] | { } /:
// using a best guess for an acceptable replacement
name = name.replace(/[<\[\{]/g, "(");
name = name.replace(/[>\]\}]/g, ")");
name = name.replace(/[#:\|]/g, ",");
name = name.replace(/\//g, "-");
// remove sequences of tildes
name = name.replace(/\~{3,}/g, "---");
// remove initial slash
name = name.replace(/^\//, "");
}
if (oldname != name) {
window.fuw.warn.IllegalChars = true;
nameBox.value = name;
return false;
}
else {
window.fuw.warn.IllegalChars = false;
return true;
}
}
function fuwHtmlEntityDecode(str) {
// hack to translate accidentally entered html entity code
// into actual characters
var ta=document.createElement('textarea');
ta.innerHTML=str.replace(/</g,'<').replace(/>/g,'>');
return ta.value;
}
// =======================================================
// Check against various common patterns of poorly chosen
// filenames (too short / too generic)
// =======================================================
function fuwCheckPoorFilename() {
var nameBox = window.fuw.ScriptForm.InputName;
var name = $.trim(nameBox.value);
name = name.replace(/\.(png|gif|jpg|jpeg|xcf|pdf|mid|ogg|ogv|svg|djvu|tiff|tif|oga|mp3|webp|webm|opus|mpg|mpeg|wav|wave|flac)$/i, "");
// name should be at least 10 characters long, excluding file type extension
var tooShort = (name.length < 10);
// common generic filename patterns:
// IMG......jpg
// Image....jpg
// DSC......jpg
// Picture......jpg
// Pic..........jpg
// anything that has fewer than 3 alphabetic letters and then just numbers
var pattern = /^(img|image|dsc|picture|pic)?(\\s*|\\_*|[a-z]{,3})?\\d+$/i;
var auto = name.match(pattern);
window.fuw.warn.BadFilename = (tooShort || auto);
return !tooShort && !auto;
}
// =======================================================
// check if file extensions match between local filename
// and target filename input box. Automatically append
// appropriate extension to target filename if they don't.
// =======================================================
function fuwCheckFileExtension() {
var nameBox = window.fuw.ScriptForm.InputName;
var name = $.trim(nameBox.value);
var fileBox = window.fuw.TargetForm.file;
var file = fileBox.value;
// cancel check if no filename has been provided yet
if (!file || !name) return true;
var extensions = /.+\.(png|gif|jpg|jpeg|xcf|pdf|mid|ogg|ogv|svg|djvu|tiff|tif|oga|mp3|webp|webm|opus|mpg|mpeg|wav|wave|flac)$/i;
var mimetypes = {
"png" : "image/png",
"gif" : "image/gif",
"jpg" : "image/jpeg",
"jpeg" : "image/jpeg",
"xcf" : "image/x-xcf",
"webp" : "image/webp",
"pdf" : "application/pdf",
"mid" : "audio/rtp-midi",
"ogg" : "audio/ogg",
"mp3" : "audio/mp3",
"opus" : "audio/opus",
"wav" : "audio/wav",
"wave" : "audio/wav",
"flac" : "audio/flac",
"ogv" : "video/ogg",
"svg" : "image/svg+xml",
"djvu" : "image/vnd.djvu",
"tiff" : "image/tiff",
"tif" : "image/tiff",
"oga" : "video/ogg",
"webm" : "video/webm",
"mpg" : "video/mpeg",
"mpeg" : "video/mpeg"
};
var found = extensions.exec(file);
var fileExt = found ? found[1].toLowerCase() : "";
found = extensions.exec(name);
var nameExt = found ? found[1].toLowerCase() : "";
var mime = mimetypes[fileExt];
if (fileExt && mime && (mimetypes[nameExt] != mime)) {
nameBox.value = name.replace(/\.?$/, ('.' + fileExt));
}
return true;
}
// ============================================================
// Check if a file under the chosen name already exists,
// either locally or on Commons.
// Store results in the fuw.warn object, so warnings will
// be displayed on the next fuwUpdateOptions() call
// ============================================================
function fuwCheckFileExists() {
// this is an asynchronous AJAX function.
// results won't yet be present when this function returns.
var nameBox = window.fuw.ScriptForm.InputName;
var name = $.trim(nameBox.value);
// using the jQuery wrapper for the Ajax functionality:
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'GET',
dataType: 'xml',
traditional : true,
data: {
format: 'xml',
action: 'query',
titles: 'File:' + name,
prop : 'imageinfo',
iiprop: 'url|user',
iiurlwidth: 120
},
success: function(resp) {
// callback function, called when API query has succeeded:
// see if the request has returned info from an existing image:
var foundlist = resp.getElementsByTagName('ii');
var exists = (foundlist.length >= 1);
var isCommons = false;
if (exists) {
// extract description data from http response.
// see https://www.mediawiki.org/wiki/API:Properties#imageinfo_.2F_ii
// for structure of API response
var foundImg = foundlist[0];
isCommons = (foundImg.parentNode.parentNode.getAttribute('imagerepository')=='shared');
// need this data for creating our own image thumb link
var width = foundImg.getAttribute('thumbwidth');
var height = foundImg.getAttribute('thumbheight');
var thumbURL = foundImg.getAttribute('thumburl');
var lastUser = foundImg.getAttribute('user');
var descURL = foundImg.getAttribute('descriptionurl');
// API returns link to local description page even for Commons images.
// However, we want a direct link to Commons.
if (isCommons) {
descURL = descURL.replace(/tcy\.wikipedia\.org/, "commons.wikimedia.org");
descURL = descURL.replace(/\/\/secure\.wikimedia\.org\/wikipedia\/tcy/, "commons.wikimedia.org");
}
// build the image info into the warning section of our page:
thumbDiv = fuwGet('warningImageThumb');
if (thumbDiv) {
// make all links point to description page:
var thumbA = thumbDiv.getElementsByTagName('a');
for (i = 0; i<thumbA.length; i++) {
thumbA[i].setAttribute('href', descURL);
}
// insert the image itself:
var thumbImg = thumbDiv.getElementsByTagName('img');
if (thumbImg.length > 0) {
thumbImg = thumbImg[0];
thumbImg.setAttribute('src', thumbURL);
thumbImg.setAttribute('width', width);
thumbImg.setAttribute('height', height);
}
// insert the name of the last uploader:
var thumbSpan = fuwGet('existingImageUploader');
// TO DO: turn this into a proper link
if (thumbSpan) thumbSpan.innerHTML = lastUser;
}
}
warn = window.fuw.warn;
warn.ImageOnCommons = exists && isCommons;
warn.ImageExists = exists && !isCommons;
fuwUpdateOptions();
}
});
}
// ===========================================================
// onchange event handler for the local filename box
// ===========================================================
fuwValidateFile = function() {
fuwCheckFileExtension();
fuwUpdateOptions();
}
// ===========================================================
// onchange event handler for the name input box
// ===========================================================
fuwValidateFilename = function() {
fuwCleanFilename();
if (
fuwCheckLegalFilename() &&
fuwCheckPoorFilename() &&
fuwCheckFileExtension()) {
// after fuwCheckFileExists(),
// fuwUpdateOptions will be triggered
// by the callback function after Ajax completion
fuwCheckFileExists();
}
else {
// if there's been no Ajax call.
fuwUpdateOptions();
}
};
// ==========================================================
// function fuwValidateNFArticle()
// ==========================================================
// This is the validation routine for the obligatory
// article-to-be-used-in field for non-free files. It queries
// api.php about the target article through an Ajax call.
// It will store error info in the fuw.warn object,
// triggering the following error on the next updateOptions():
// * warningNFArticleNotFound : target page doesn't exist.
// * warningNFArticleNotMainspace : target is not an article.
// * warningNFArticleDab : target is a disambiguation page.
// Redirects will automatically be substituted.
// ==========================================================
fuwValidateNFArticle = function() {
var nameBox = window.fuw.ScriptForm.NFArticle;
oldname = name = nameBox.value;
// cleanup article name:
// automatically fix accidentally added [[ ... ]] and
// regularize underscores
name = $.trim(name);
name = name.replace(/(^\[\[)|(\]\]$)/g, "");
// automatically fix article names entered as full urls:
name = name.replace(/^https?:\/\/tcy\.wikipedia\.org\/wiki\//, "");
name = name.replace(/^https?:\/\/tcy\.wikipedia\.org\/w\/index\.php\?title=/, "");
name = name.replace(/_/g, " ");
if (name != oldname) nameBox.value = name;
// do nothing more if field was blank
if (!name) return;
// using the jQuery wrapper for the Ajax functionality:
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'GET',
dataType: 'xml',
traditional : true,
data: {
format: 'xml',
action: 'query',
titles: name,
prop : 'info|categories|links'
},
success: function(resp) {
// callback function, called when API query has succeeded:
var errorType = 0;
var pg = resp.getElementsByTagName('page')[0];
var title = pg.getAttribute('title');
var target = title;
if (pg.getAttribute('missing') != null) {
// no page found under this title.
errorType = 1;
}
else {
var userspace = false;
var ns = pg.getAttribute('ns');
var rd = pg.getAttribute('redirect');
if (ns != 0) {
// not a mainspace page!
errorType = 2;
// try to detect if the target might be a user space draft:
if (title.match(new RegExp("User( talk)?:" + mw.config.get('wgUserName')))) {
userspace = true;
}
}
else if (rd != null) {
// redirect page
// API returns an empty redirect="" attribute if
// the page is a redirect
var targets = pg.getElementsByTagName('pl');
for (i=0; i<targets.length; i++) {
var link = targets[i];
if (link.getAttribute('ns')==0) {
target = link.getAttribute('title');
errorType = 3;
break;
}
}
}
else {
// check for disambiguation categories
var cats = pg.getElementsByTagName('cl');
for (i=0; i<cats.length; i++) {
var cat = cats[i];
if (cat.getAttribute('title') == "Category:All disambiguation pages") {
errorType = 4;
break;
}
}
}
}
warn = window.fuw.warn;
warn.NFArticleNotFound = (errorType==1);
warn.NFArticleNotMainspace = (errorType==2);
warn.UserspaceDraft = ((errorType==2) && userspace);
warn.NFArticleDab = (errorType==4);
warn.NFArticleOK = (errorType==0);
// fix links in error messages:
if (warn.NFArticleNotFound) {
fuwMakeWikilink(fuwGet('warningNFArticleNotFound').getElementsByTagName('A')[0], target, true);
}
else if (warn.NFArticleNotMainspace) {
fuwMakeWikilink(fuwGet('warningNFArticleNotMainspace').getElementsByTagName('A')[0], target);
}
else if (warn.NFArticleDab) {
fuwMakeWikilink(fuwGet('warningNFArticleDab').getElementsByTagName('A')[0], target);
}
else if (warn.NFArticleOK) {
fuwMakeWikilink(fuwGet('NFArticleOK').getElementsByTagName('A')[0], target);
}
if (errorType==3) {
// automatically replace title with redirect target
window.fuw.ScriptForm.NFArticle.value = target;
// need to recursively call validation again now
//if (confirm(name + " is a redirect. Follow it to " + target + "?")) {
fuwValidateNFArticle();
//}
}
else {
fuwUpdateOptions();
}
}
});
};
// ================================================
// manually reload script (just for testing)
// ================================================
function fuwReload() {
mw.loader.load( 'http://localhost/script/uploadscript.js' );
fuwReset();
}
// ================================================
// reset forms
// TO DO: add a button that actually triggers this.
// ================================================
function fuwReset() {
var forms = mw.util.$content[0].getElementsByTagName('form');
for (i = 0; i < forms.length; i++) {
forms[i].reset();
window.fuw.warn = { };
window.fuw.opts = { };
}
fuwSetVisible('UploadScriptArea', true);
fuwSetVisible('fuwSuccess', false);
fuwSetVisible('fuwWaiting', false);
fuwUpdateOptions();
}
// ===============================================
// convenience functions for string handling
// ===============================================
function fuwAppendLines(parts) {
// assemble a string from an array of strings.
// treat every second element as a conditional
// separator that will be included only if
// surrounding elements are non-empty.
var build = "";
for (var i = 0; i < parts.length; i += 2) {
if (parts[i]) {
if (build) build += parts[i - 1];
build += parts[i];
}
}
return build;
}
function fuwSurroundString(prefix, content, suffix) {
// put a prefix and a suffix on a string,
// if the input string is non-empty.
if (content)
return (prefix ? prefix : "") + content + (suffix ? suffix : "");
else return "";
}
// ========================================================
// handler for the API response.
// TO DO: expand stub to add real notification of success,
// link to new file page, instructions about how to include
// file in articles, etc.
// ========================================================
function fuwUploadCompleted(doc) {
if (doc) {
//alert(doc);
fuwSetVisible('successThumb', false);
var fuw = window.fuw;
var name = fuw.opts.InputName;
var uploads = doc.getElementsByTagName('upload');
var success = false;
for (i = uploads.length-1; i>=0; i--) {
if (uploads[i].getAttribute('result') == 'Success') {
success = true;
// need to get the real resulting filename here; might be different from the requested one in some cases.
name = uploads[i].getAttribute('filename');
break;
}
}
if (success) {
// need another ajax call to check the file is actually there,
// and to retrieve its direct thumb img url:
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'GET',
dataType: 'xml',
traditional : true,
data: {
format: 'xml',
action: 'query',
titles: 'File:' + name,
prop : 'imageinfo',
iiprop: 'url',
iiurlwidth: 120
},
success: function(resp) {
// callback function, called when API query has succeeded:
// see if the request has returned info from an existing image:
var foundImg = resp.getElementsByTagName('ii')[0];
if (foundImg) {
// need this data for creating our own image thumb link
var width = foundImg.getAttribute('thumbwidth');
var height = foundImg.getAttribute('thumbheight');
var thumbURL = foundImg.getAttribute('thumburl');
var lastUser = foundImg.getAttribute('user');
var descURL = foundImg.getAttribute('descriptionurl');
// build the thumbnail in the success message:
thumbDiv = fuwGet('successThumb');
// make link point to description page:
var thumbA = thumbDiv.getElementsByTagName('a')[0];
thumbA.href = descURL;
// insert the image itself:
var thumbImg = thumbDiv.getElementsByTagName('img')[0];
thumbImg.setAttribute('src', thumbURL);
thumbImg.setAttribute('width', width);
thumbImg.setAttribute('height', height);
fuwSetVisible(thumbDiv, true);
}
}
});
fuwMakeWikilink(
fuwGet('fuwSuccessLink2').getElementsByTagName('a')[0],
'File:' + name);
fuwGet('placeholderExFilename1').innerHTML = name;
fuwGet('placeholderExFilename2').innerHTML = name;
fuwSetVisible('fuwSuccess', true);
fuwSetVisible('fuwWaiting', false);
}
else {
var err = doc.getElementsByTagName('error');
if (err) {
var info = err[0].getAttribute('info');
var details = err[0].getElementsByTagName('detail');
var add = "";
for (i = 0; i < details.length; i++) {
if (add.length > 0) add += ", ";
add += details[i].textContent;
}
if (add) {
info = info + " (" + add + ")";
}
alert("Upload failed: " + info);
}
else {
alert("Unknown error: upload may have failed.");
}
}
}
}
// ========================================================
// Event handler for the real submit button
// ========================================================
function fuwSubmitUpload() {
var fuw = window.fuw;
fuw.collectInput();
fuw.formatOutput(false);
if (fuwTesting) {
fuwSetVisible('placeholderTestForm', false);
}
fuwSetVisible('UploadScriptArea', false);
fuwMakeWikilink(
fuwGet('fuwSuccessLink').getElementsByTagName('a')[0], 'File:' + fuw.opts.InputName);
fuwSetVisible('fuwWaiting', true);
// Upload the file, then add success notification etc.
// Note that mw.Api doesn't have special support for the XML format, so even when the API
// returns an error, this won't be detected and it will call the success handler.
var api = new mw.Api({
parameters : { format : 'xml' },
ajax : { dataType : 'xml' }
});
api.upload(fuw.TargetForm.file, fuw.UploadOptions).then(fuwUploadCompleted);
var opts = window.fuw.opts;
// the API won't overwrite the description page text while overwriting
// a file, which is really, really, really annoying and stupid.
// So in the opts.OverwriteDifferent scenario, we need to edit
// the description page through a separate ajax call. Dang.
if (opts.OverwriteDifferent) {
$.ajax({
url : mw.util.wikiScript('api'),
type : 'POST',
dataType : 'xml',
data : {
format : 'xml',
action : 'edit',
title : 'File:' + opts.InputName,
token : mw.user.tokens.get('csrfToken'),
summary : opts.EditSummary,
text : fuw.UploadOptions.text
}
});
}
}
// =======================================================
// Event handler for the Commons submit button
// =======================================================
function fuwSubmitCommons() {
var fuw = window.fuw;
fuw.collectInput();
var url = fuw.formatOutput(true);
alert("You will now be redirected to Commons. \nPlease use the Commons upload form to add categories to your file description, and then complete the upload.");
window.location = url;
}
// =======================================================
// Event handler for the test submit button
// (write description string to sandbox only)
// =======================================================
function fuwSubmitSandbox() {
var frm = window.fuw.TestForm;
$.ajax({
url : mw.util.wikiScript( 'api' ),
type : 'POST',
dataType: 'xml',
data: {
format: 'xml',
action: 'edit',
title : mw.config.get('wgPageName') + "/sandbox",
token : mw.user.tokens.get('csrfToken'),
recreate : 1,
summary : frm.SandboxSummary.value,
text : frm.SandboxText.value
},
success: function(resp) {
alert("Sandbox page edited!");
}
});
}
// ========================================================
// convenience wrapper function to replace calls to
// document.getElementById()
// to avoid browser incompatibility
// ========================================================
function fuwGet(target) {
if (target && target.nodeType) return target;
else {
var found = $('#' + target);
if (found) return found[0];
}
return undefined;
}
// ========================================================
// onload hook function, loading this script
// ========================================================
mw.loader.using(['mediawiki.api']).then(function() {
$(function() {
if (fuwGet('UploadScriptArea')) {
window.fuw = new fuwGlobal();
if (! window.fuw.disabled) {
fuwUpdateOptions();
}
}
});
});
ivffu0fotmopsd4w0sw2vp5rrwak3sy
ಮೋಡ್ಯೂಲ್:Protected page/config
828
28292
374584
368298
2026-11-05T15:15:23Z
en>Axolitl
0
Fix wrapper name
374584
Scribunto
text/plain
-- This module provides configuration data for [[Module:Protection banner]].
return {
--------------------------------------------------------------------------------
--
-- BANNER DATA
--
--------------------------------------------------------------------------------
--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
-- banners.
-- * explanation - the text that appears below the main protection text, used
-- to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
-- padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
-- text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
-- icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
-- Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
-- Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
-- if protectionObj.level == 'autoconfirmed' then
-- return 'foo'
-- else
-- return 'bar'
-- end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
-- to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
-- unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
-- of editing the config field used by the function, as it could create an
-- infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
-- protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
-- temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
-- template is incorrect.
--]]
-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
text = '${INTROBLURB}',
explanation = '${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPBLURB}',
link = '${IMAGELINK}',
alt = 'Page ${PROTECTIONLEVEL}'
},
-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
edit = {},
move = {},
autoreview = {
default = {
alt = 'Page protected with pending changes',
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',
image = 'Pending-protection-shackle.svg'
}
},
upload = {}
},
-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
edit = {
blp = {
description = 'For pages protected to promote compliance with the'
.. ' [[Wikipedia:Biographies of living persons'
.. '|biographies of living persons]] policy',
text = '${INTROFRAGMENT} to promote compliance with'
.. ' [[Wikipedia:Biographies of living persons'
.. "|Wikipedia's policy on the biographies"
.. ' of living people]].',
tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'
.. ' biographies of living persons',
},
deceased = {
description = 'For user pages of Wikipedia users who are deceased',
text = '${INTROFRAGMENT} to prevent vandalism of a deceased'
.. ' Wikipedian\'s user page.'
.. ' A family member who wishes to edit this user page can use this'
.. ' user\'s ${TALKPAGE} or submit a request to [[Wikipedia:VRT|the'
.. ' Volunteer Response Team]].',
tooltip = '${TOOLTIPFRAGMENT} because this Wikipedian is deceased'
},
dmca = {
description = 'For pages protected by the Wikimedia Foundation'
.. ' due to [[Digital Millennium Copyright Act]] takedown requests',
explanation = function (protectionObj, args)
local ret = 'Pursuant to a rights owner notice under the Digital'
.. ' Millennium Copyright Act (DMCA) regarding some content'
.. ' in this article, the Wikimedia Foundation acted under'
.. ' applicable law and took down and restricted the content'
.. ' in question.'
if args.notice then
ret = ret .. ' A copy of the received notice can be found here: '
.. args.notice .. '.'
end
ret = ret .. ' For more information, including websites discussing'
.. ' how to file a counter-notice, please see'
.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."
.. "'''Do not remove this template from the article until the"
.. " restrictions are withdrawn'''."
return ret
end,
image = 'Office-protection-shackle.svg',
link = 'Wikipedia:Protection policy#office',
},
dispute = {
description = 'For pages protected due to editing disputes',
text = function (protectionObj, args)
-- Find the value of "disputes".
local display = 'disputes'
local disputes
if args.section then
disputes = string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[protectionObj.title.namespace].talk.name,
protectionObj.title.text,
args.section,
display
)
else
disputes = display
end
-- Make the blurb, depending on the expiry.
local msg
if type(protectionObj.expiry) == 'number' then
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
else
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
end
return string.format(msg, disputes)
end,
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',
},
ecp = {
description = 'For articles in topic areas authorized by'
.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'
.. ' meets the criteria for community use',
alt = 'Extended-protected ${PAGETYPE}',
},
mainpage = {
description = 'For pages protected for being displayed on the [[Main Page]]',
text = 'This file is currently'
.. ' [[Wikipedia:This page is protected|protected]] from'
.. ' editing because it is currently or will soon be displayed'
.. ' on the [[Main Page]].',
explanation = 'Images on the Main Page are protected due to their high'
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'
.. '<br /><span style="font-size:90%;">'
.. "'''Administrators:''' Once this image is definitely off the Main Page,"
.. ' please unprotect this file, or reduce to semi-protection,'
.. ' as appropriate.</span>',
},
office = {
description = 'For pages protected by the Wikimedia Foundation',
text = function (protectionObj, args)
local ret = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.'
if protectionObj.protectionDate then
ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'
end
return ret
end,
explanation = "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"
.. " page unless you are authorized by the Wikimedia Foundation to do"
.. " so.'''",
image = 'Office-protection-shackle.svg',
link = 'Wikipedia:Protection policy#office',
},
reset = {
description = 'For pages protected by the Wikimedia Foundation and'
.. ' "reset" to a bare-bones version',
text = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.protectionDate then
ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'
else
ret = ret .. 'This ${PAGETYPE} has been'
end
ret = ret .. ' reduced to a'
.. ' simplified, "bare bones" version so that it may be completely'
.. ' rewritten to ensure it meets the policies of'
.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'
.. ' Standard Wikipedia policies will apply to its rewriting—which'
.. ' will eventually be open to all editors—and will be strictly'
.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'
.. ' it is being rebuilt.\n\n'
.. 'Any insertion of material directly from'
.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'
.. ' will any material added to the ${PAGETYPE} that is not properly'
.. ' sourced. The associated talk page(s) were also cleared on the'
.. " same date.\n\n"
.. "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not override"
.. " this action, and do not remove protection from this page,"
.. " unless you are authorized by the Wikimedia Foundation"
.. " to do so. No editor may remove this notice.'''"
return ret
end,
image = 'Office-protection-shackle.svg',
link = 'Wikipedia:Protection policy#office',
},
sock = {
description = 'For pages protected due to'
.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
.. ' [[Wikipedia:Blocking policy|blocked]] or'
.. ' [[Wikipedia:Banning policy|banned users]]'
.. ' from editing it.',
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'
.. ' editing it',
},
template = {
description = 'For [[Wikipedia:High-risk templates|high-risk]]'
.. ' templates and Lua modules',
text = 'This is a permanently [[Wikipedia:Protection policy|protected]] ${PAGETYPE},'
.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',
explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] or'
.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by'
.. ' [[Wikipedia:Consensus|consensus]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
.. ' to prevent vandalism',
alt = 'Permanently protected ${PAGETYPE}',
},
usertalk = {
description = 'For pages protected against disruptive edits by a'
.. ' particular user',
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
.. ' such as abusing the'
.. ' {{[[Template:unblock|unblock]]}} template.',
explanation = 'If you cannot edit this user talk page and you need to'
.. ' make a change or leave a message, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for edits to a protected page'
.. '|request an edit]],'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]],'
.. ' [[Special:Userlogin|log in]],'
.. ' or [[Special:UserLogin/signup|create an account]].',
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism|vandalism]]',
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.level == 'sysop' then
ret = ret .. "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. '
end
return ret .. '${EXPLANATIONBLURB}'
end,
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',
}
},
move = {
dispute = {
description = 'For pages protected against page moves due to'
.. ' disputes over the page title',
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
image = 'Move-protection-shackle.svg'
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism#Page-move vandalism'
.. ' |page-move vandalism]]'
}
},
autoreview = {},
upload = {}
},
--------------------------------------------------------------------------------
--
-- GENERAL DATA TABLES
--
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------
-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
edit = {
default = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#full|'
.. 'protected]] from editing',
templateeditor = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#template'
.. '|protected]] from editing',
autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'
.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
.. ' users|unregistered]] users is currently [[Wikipedia:Protection'
.. ' policy#semi|disabled]]',
extendedconfirmed = 'This ${PAGETYPE} is currently under [[Wikipedia:Protection'
.. ' policy#extended|extended confirmed protection]]',
},
move = {
default = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#Move'
.. ' protection|protected]] from [[Help:Moving a page|page moves]]'
},
autoreview = {
default = 'All edits made to this ${PAGETYPE} by'
.. ' [[Wikipedia:User access levels#New users|new]] or'
.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
.. ' users are currently'
.. ' [[Wikipedia:Pending changes|subject to review]]'
},
upload = {
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'
}
},
--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------
-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
edit = {
autoconfirmed = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
},
extendedconfirmed = {
default = 'Extended confirmed protection prevents edits from all unregistered editors'
.. ' and registered users with fewer than 30 days tenure and 500 edits.'
.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'
.. ' specifies that extended confirmed protection can be applied to combat'
.. ' disruption, if semi-protection has proven to be ineffective.'
.. ' Extended confirmed protection may also be applied to enforce'
.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'
.. ' Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'
.. ' [[Wikipedia:Consensus|consensus]].'
},
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]]. You may also [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|request]] that this page be unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' You may [[Wikipedia:Requests for page'
.. ' protection#Current requests for edits to a protected page|request an'
.. ' edit]] to this page, or [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|ask]] for it to be unprotected.'
}
},
move = {
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves on the'
.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves at'
.. ' [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.'
}
},
autoreview = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Edits to this ${PAGETYPE} by new and unregistered users'
.. ' will not be visible to readers until they are accepted by'
.. ' a reviewer. To avoid the need for your edits to be'
.. ' reviewed, you may'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].'
},
},
upload = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but new versions of the file'
.. ' cannot be uploaded until it is unprotected. You can'
.. ' request that a new version be uploaded by using a'
.. ' [[Wikipedia:Edit requests|protected edit request]], or you'
.. ' can [[Wikipedia:Requests for page protection|request]]'
.. ' that the file be unprotected.'
}
}
},
--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
edit = {
default = 'protected',
templateeditor = 'template-protected',
extendedconfirmed = 'extended-confirmed-protected',
autoconfirmed = 'semi-protected',
},
move = {
default = 'move-protected'
},
autoreview = {
},
upload = {
default = 'upload-protected'
}
},
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
edit = {
default = 'Full-protection-shackle.svg',
templateeditor = 'Template-protection-shackle.svg',
extendedconfirmed = 'Extended-protection-shackle.svg',
autoconfirmed = 'Semi-protection-shackle.svg'
},
move = {
default = 'Move-protection-shackle.svg',
},
autoreview = {
default = 'Pending-protection-shackle.svg'
},
upload = {
default = 'Upload-protection-shackle.svg'
}
},
-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
template = true
},
--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------
-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
edit = {
default = 'Wikipedia:Protection policy#full',
templateeditor = 'Wikipedia:Protection policy#template',
extendedconfirmed = 'Wikipedia:Protection policy#extended',
autoconfirmed = 'Wikipedia:Protection policy#semi'
},
move = {
default = 'Wikipedia:Protection policy#move'
},
autoreview = {
default = 'Wikipedia:Protection policy#pending'
},
upload = {
default = 'Wikipedia:Protection policy#upload'
}
},
--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------
-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
autoreview = 'pp-autoreview',
default = 'pp-default'
},
--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------
--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
--
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
-- expiry namespace reason level action
-- order
-- 1 1 1 1 1 1
-- 2 0 1 1 1 1
-- 3 1 0 1 1 1
-- 4 0 0 1 1 1
-- 5 1 1 0 1 1
-- 6 0 1 0 1 1
-- 7 1 0 0 1 1
-- 8 0 0 0 1 1
-- 9 1 1 1 0 1
-- 10 0 1 1 0 1
-- 11 1 0 1 0 1
-- 12 0 0 1 0 1
-- 13 1 1 0 0 1
-- 14 0 1 0 0 1
-- 15 1 0 0 0 1
-- 16 0 0 0 0 1
-- 17 1 1 1 1 0
-- 18 0 1 1 1 0
-- 19 1 0 1 1 0
-- 20 0 0 1 1 0
-- 21 1 1 0 1 0
-- 22 0 1 0 1 0
-- 23 1 0 0 1 0
-- 24 0 0 0 1 0
-- 25 1 1 1 0 0
-- 26 0 1 1 0 0
-- 27 1 0 1 0 0
-- 28 0 0 1 0 0
-- 29 1 1 0 0 0
-- 30 0 1 0 0 0
-- 31 1 0 0 0 0
-- 32 0 0 0 0 0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]
-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
vandalism = true,
},
-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
[ 2] = 'user',
[ 3] = 'user',
[ 4] = 'project',
[ 6] = 'file',
[ 8] = 'mediawiki',
[ 10] = 'template',
[ 12] = 'project',
[ 14] = 'category',
[100] = 'portal',
[828] = 'module',
},
protectionCategories = {
['all|all|all|all|all'] = 'Wikipedia fully protected pages',
['all|all|office|all|all'] = 'Wikipedia Office-protected pages',
['all|all|reset|all|all'] = 'Wikipedia Office-protected pages',
['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages',
['all|all|mainpage|all|all'] = 'Wikipedia fully protected main page files',
['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|template|all|all|edit'] = 'Wikipedia fully protected templates',
['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages',
['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages',
['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people',
['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people',
['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute',
['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users',
['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',
['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories',
['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files',
['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals',
['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages',
['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages',
['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates',
['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages',
['all|all|all|templateeditor|move'] = 'Wikipedia template-protected pages other than templates and modules',
['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules',
['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',
['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates
['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people',
['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people',
['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute',
['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users',
['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism',
['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories',
['all|file|all|sysop|edit'] = 'Wikipedia fully protected files',
['all|project|all|sysop|edit'] = 'Wikipedia fully protected project pages',
['all|talk|all|sysop|edit'] = 'Wikipedia fully protected talk pages',
['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|extendedconfirmed|move'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates',
['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages',
['all|module|all|all|edit'] = 'Wikipedia fully protected modules',
['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules',
['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules',
['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules',
['all|all|all|sysop|move'] = 'Wikipedia move-protected pages',
['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages',
['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute',
['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism',
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',
['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages',
['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages',
['all|template|all|sysop|move'] = 'Wikipedia move-protected templates',
['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages',
['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',
['all|file|all|all|upload'] = 'Wikipedia upload-protected files',
},
--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------
-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
-- an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
-- 1) an expiry parameter is not set, and
-- 2) a reason is provided, and
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
-- table.
expiryCheckActions = {
edit = nil,
move = false,
autoreview = true,
upload = false
},
reasonsWithoutExpiryCheck = {
blp = true,
template = true,
},
--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------
-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
[0] = 'article',
[6] = 'file',
[10] = 'template',
[14] = 'category',
[828] = 'module',
default = 'page'
},
--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------
-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
['indef'] = true,
['indefinite'] = true,
['indefinitely'] = true,
['infinite'] = true,
},
--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------
-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
sysop = {},
reviewer = {'sysop'},
filemover = {'sysop'},
templateeditor = {'sysop'},
extendedconfirmed = {'sysop'},
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
user = {'autoconfirmed'},
['*'] = {'user'}
},
--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------
-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
['Template:Protected page'] = {},
['Template:Extended confirmed–protected'] = {'ecp'},
['Template:Protected biography of a living person'] = {'blp'},
['Template:Protected due to a dispute'] = {'dispute'},
['Template:Move-protected'] = {action = 'move', catonly = 'yes'},
['Template:Move-protected due to a dispute'] = {'dispute', action = 'move', catonly = 'yes'},
['Template:Move-protected due to vandalism'] = {'vandalism', action = 'move', catonly = 'yes'},
['Template:Office-protected'] = {'office'},
['Template:Pending changes–protected'] = {action = 'autoreview', small = true},
['Template:Semi-protected indefinitely'] = {small = true},
['Template:Protected due to sockpuppetry'] = {'sock'},
['Template:Protected template'] = {'template', small = true},
['Template:Upload-protected'] = {action = 'upload'},
['Template:Protected talk page of a blocked user'] = {'usertalk'},
['Template:Protected due to vandalism'] = {'vandalism'},
},
--------------------------------------------------------------------------------
--
-- MESSAGES
--
--------------------------------------------------------------------------------
msg = {
--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]].',
--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',
--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',
--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------
-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'talk page',
--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------
-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'submit an edit request',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------
-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'F j, Y "at" H:i e',
--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------
-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Full-protection-shackle.svg',
['image-filename-default'] = 'Transparent.gif',
--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}
k108n3hntzssp9cyjanrmu01ygggcb9
374585
374584
2026-11-06T05:55:12Z
ChiK
1136
1 revision imported from [[:en:Module:Protected_page/config]]
374584
Scribunto
text/plain
-- This module provides configuration data for [[Module:Protection banner]].
return {
--------------------------------------------------------------------------------
--
-- BANNER DATA
--
--------------------------------------------------------------------------------
--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
-- banners.
-- * explanation - the text that appears below the main protection text, used
-- to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
-- padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
-- text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
-- icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
-- Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
-- Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
-- if protectionObj.level == 'autoconfirmed' then
-- return 'foo'
-- else
-- return 'bar'
-- end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
-- to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
-- unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
-- of editing the config field used by the function, as it could create an
-- infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
-- protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
-- temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
-- template is incorrect.
--]]
-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
text = '${INTROBLURB}',
explanation = '${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPBLURB}',
link = '${IMAGELINK}',
alt = 'Page ${PROTECTIONLEVEL}'
},
-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
edit = {},
move = {},
autoreview = {
default = {
alt = 'Page protected with pending changes',
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',
image = 'Pending-protection-shackle.svg'
}
},
upload = {}
},
-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
edit = {
blp = {
description = 'For pages protected to promote compliance with the'
.. ' [[Wikipedia:Biographies of living persons'
.. '|biographies of living persons]] policy',
text = '${INTROFRAGMENT} to promote compliance with'
.. ' [[Wikipedia:Biographies of living persons'
.. "|Wikipedia's policy on the biographies"
.. ' of living people]].',
tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'
.. ' biographies of living persons',
},
deceased = {
description = 'For user pages of Wikipedia users who are deceased',
text = '${INTROFRAGMENT} to prevent vandalism of a deceased'
.. ' Wikipedian\'s user page.'
.. ' A family member who wishes to edit this user page can use this'
.. ' user\'s ${TALKPAGE} or submit a request to [[Wikipedia:VRT|the'
.. ' Volunteer Response Team]].',
tooltip = '${TOOLTIPFRAGMENT} because this Wikipedian is deceased'
},
dmca = {
description = 'For pages protected by the Wikimedia Foundation'
.. ' due to [[Digital Millennium Copyright Act]] takedown requests',
explanation = function (protectionObj, args)
local ret = 'Pursuant to a rights owner notice under the Digital'
.. ' Millennium Copyright Act (DMCA) regarding some content'
.. ' in this article, the Wikimedia Foundation acted under'
.. ' applicable law and took down and restricted the content'
.. ' in question.'
if args.notice then
ret = ret .. ' A copy of the received notice can be found here: '
.. args.notice .. '.'
end
ret = ret .. ' For more information, including websites discussing'
.. ' how to file a counter-notice, please see'
.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."
.. "'''Do not remove this template from the article until the"
.. " restrictions are withdrawn'''."
return ret
end,
image = 'Office-protection-shackle.svg',
link = 'Wikipedia:Protection policy#office',
},
dispute = {
description = 'For pages protected due to editing disputes',
text = function (protectionObj, args)
-- Find the value of "disputes".
local display = 'disputes'
local disputes
if args.section then
disputes = string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[protectionObj.title.namespace].talk.name,
protectionObj.title.text,
args.section,
display
)
else
disputes = display
end
-- Make the blurb, depending on the expiry.
local msg
if type(protectionObj.expiry) == 'number' then
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
else
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
end
return string.format(msg, disputes)
end,
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',
},
ecp = {
description = 'For articles in topic areas authorized by'
.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'
.. ' meets the criteria for community use',
alt = 'Extended-protected ${PAGETYPE}',
},
mainpage = {
description = 'For pages protected for being displayed on the [[Main Page]]',
text = 'This file is currently'
.. ' [[Wikipedia:This page is protected|protected]] from'
.. ' editing because it is currently or will soon be displayed'
.. ' on the [[Main Page]].',
explanation = 'Images on the Main Page are protected due to their high'
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'
.. '<br /><span style="font-size:90%;">'
.. "'''Administrators:''' Once this image is definitely off the Main Page,"
.. ' please unprotect this file, or reduce to semi-protection,'
.. ' as appropriate.</span>',
},
office = {
description = 'For pages protected by the Wikimedia Foundation',
text = function (protectionObj, args)
local ret = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.'
if protectionObj.protectionDate then
ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'
end
return ret
end,
explanation = "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"
.. " page unless you are authorized by the Wikimedia Foundation to do"
.. " so.'''",
image = 'Office-protection-shackle.svg',
link = 'Wikipedia:Protection policy#office',
},
reset = {
description = 'For pages protected by the Wikimedia Foundation and'
.. ' "reset" to a bare-bones version',
text = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.protectionDate then
ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'
else
ret = ret .. 'This ${PAGETYPE} has been'
end
ret = ret .. ' reduced to a'
.. ' simplified, "bare bones" version so that it may be completely'
.. ' rewritten to ensure it meets the policies of'
.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'
.. ' Standard Wikipedia policies will apply to its rewriting—which'
.. ' will eventually be open to all editors—and will be strictly'
.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'
.. ' it is being rebuilt.\n\n'
.. 'Any insertion of material directly from'
.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'
.. ' will any material added to the ${PAGETYPE} that is not properly'
.. ' sourced. The associated talk page(s) were also cleared on the'
.. " same date.\n\n"
.. "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not override"
.. " this action, and do not remove protection from this page,"
.. " unless you are authorized by the Wikimedia Foundation"
.. " to do so. No editor may remove this notice.'''"
return ret
end,
image = 'Office-protection-shackle.svg',
link = 'Wikipedia:Protection policy#office',
},
sock = {
description = 'For pages protected due to'
.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
.. ' [[Wikipedia:Blocking policy|blocked]] or'
.. ' [[Wikipedia:Banning policy|banned users]]'
.. ' from editing it.',
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'
.. ' editing it',
},
template = {
description = 'For [[Wikipedia:High-risk templates|high-risk]]'
.. ' templates and Lua modules',
text = 'This is a permanently [[Wikipedia:Protection policy|protected]] ${PAGETYPE},'
.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',
explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] or'
.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by'
.. ' [[Wikipedia:Consensus|consensus]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
.. ' to prevent vandalism',
alt = 'Permanently protected ${PAGETYPE}',
},
usertalk = {
description = 'For pages protected against disruptive edits by a'
.. ' particular user',
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
.. ' such as abusing the'
.. ' {{[[Template:unblock|unblock]]}} template.',
explanation = 'If you cannot edit this user talk page and you need to'
.. ' make a change or leave a message, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for edits to a protected page'
.. '|request an edit]],'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]],'
.. ' [[Special:Userlogin|log in]],'
.. ' or [[Special:UserLogin/signup|create an account]].',
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism|vandalism]]',
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.level == 'sysop' then
ret = ret .. "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. '
end
return ret .. '${EXPLANATIONBLURB}'
end,
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',
}
},
move = {
dispute = {
description = 'For pages protected against page moves due to'
.. ' disputes over the page title',
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
image = 'Move-protection-shackle.svg'
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism#Page-move vandalism'
.. ' |page-move vandalism]]'
}
},
autoreview = {},
upload = {}
},
--------------------------------------------------------------------------------
--
-- GENERAL DATA TABLES
--
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------
-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
edit = {
default = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#full|'
.. 'protected]] from editing',
templateeditor = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#template'
.. '|protected]] from editing',
autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'
.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
.. ' users|unregistered]] users is currently [[Wikipedia:Protection'
.. ' policy#semi|disabled]]',
extendedconfirmed = 'This ${PAGETYPE} is currently under [[Wikipedia:Protection'
.. ' policy#extended|extended confirmed protection]]',
},
move = {
default = 'This ${PAGETYPE} is currently [[Wikipedia:Protection policy#Move'
.. ' protection|protected]] from [[Help:Moving a page|page moves]]'
},
autoreview = {
default = 'All edits made to this ${PAGETYPE} by'
.. ' [[Wikipedia:User access levels#New users|new]] or'
.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
.. ' users are currently'
.. ' [[Wikipedia:Pending changes|subject to review]]'
},
upload = {
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'
}
},
--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------
-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
edit = {
autoconfirmed = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
},
extendedconfirmed = {
default = 'Extended confirmed protection prevents edits from all unregistered editors'
.. ' and registered users with fewer than 30 days tenure and 500 edits.'
.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'
.. ' specifies that extended confirmed protection can be applied to combat'
.. ' disruption, if semi-protection has proven to be ineffective.'
.. ' Extended confirmed protection may also be applied to enforce'
.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'
.. ' Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'
.. ' [[Wikipedia:Consensus|consensus]].'
},
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]]. You may also [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|request]] that this page be unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' You may [[Wikipedia:Requests for page'
.. ' protection#Current requests for edits to a protected page|request an'
.. ' edit]] to this page, or [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|ask]] for it to be unprotected.'
}
},
move = {
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves on the'
.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves at'
.. ' [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.'
}
},
autoreview = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Edits to this ${PAGETYPE} by new and unregistered users'
.. ' will not be visible to readers until they are accepted by'
.. ' a reviewer. To avoid the need for your edits to be'
.. ' reviewed, you may'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].'
},
},
upload = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but new versions of the file'
.. ' cannot be uploaded until it is unprotected. You can'
.. ' request that a new version be uploaded by using a'
.. ' [[Wikipedia:Edit requests|protected edit request]], or you'
.. ' can [[Wikipedia:Requests for page protection|request]]'
.. ' that the file be unprotected.'
}
}
},
--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
edit = {
default = 'protected',
templateeditor = 'template-protected',
extendedconfirmed = 'extended-confirmed-protected',
autoconfirmed = 'semi-protected',
},
move = {
default = 'move-protected'
},
autoreview = {
},
upload = {
default = 'upload-protected'
}
},
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
edit = {
default = 'Full-protection-shackle.svg',
templateeditor = 'Template-protection-shackle.svg',
extendedconfirmed = 'Extended-protection-shackle.svg',
autoconfirmed = 'Semi-protection-shackle.svg'
},
move = {
default = 'Move-protection-shackle.svg',
},
autoreview = {
default = 'Pending-protection-shackle.svg'
},
upload = {
default = 'Upload-protection-shackle.svg'
}
},
-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
template = true
},
--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------
-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
edit = {
default = 'Wikipedia:Protection policy#full',
templateeditor = 'Wikipedia:Protection policy#template',
extendedconfirmed = 'Wikipedia:Protection policy#extended',
autoconfirmed = 'Wikipedia:Protection policy#semi'
},
move = {
default = 'Wikipedia:Protection policy#move'
},
autoreview = {
default = 'Wikipedia:Protection policy#pending'
},
upload = {
default = 'Wikipedia:Protection policy#upload'
}
},
--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------
-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
autoreview = 'pp-autoreview',
default = 'pp-default'
},
--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------
--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
--
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
-- expiry namespace reason level action
-- order
-- 1 1 1 1 1 1
-- 2 0 1 1 1 1
-- 3 1 0 1 1 1
-- 4 0 0 1 1 1
-- 5 1 1 0 1 1
-- 6 0 1 0 1 1
-- 7 1 0 0 1 1
-- 8 0 0 0 1 1
-- 9 1 1 1 0 1
-- 10 0 1 1 0 1
-- 11 1 0 1 0 1
-- 12 0 0 1 0 1
-- 13 1 1 0 0 1
-- 14 0 1 0 0 1
-- 15 1 0 0 0 1
-- 16 0 0 0 0 1
-- 17 1 1 1 1 0
-- 18 0 1 1 1 0
-- 19 1 0 1 1 0
-- 20 0 0 1 1 0
-- 21 1 1 0 1 0
-- 22 0 1 0 1 0
-- 23 1 0 0 1 0
-- 24 0 0 0 1 0
-- 25 1 1 1 0 0
-- 26 0 1 1 0 0
-- 27 1 0 1 0 0
-- 28 0 0 1 0 0
-- 29 1 1 0 0 0
-- 30 0 1 0 0 0
-- 31 1 0 0 0 0
-- 32 0 0 0 0 0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]
-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
vandalism = true,
},
-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
[ 2] = 'user',
[ 3] = 'user',
[ 4] = 'project',
[ 6] = 'file',
[ 8] = 'mediawiki',
[ 10] = 'template',
[ 12] = 'project',
[ 14] = 'category',
[100] = 'portal',
[828] = 'module',
},
protectionCategories = {
['all|all|all|all|all'] = 'Wikipedia fully protected pages',
['all|all|office|all|all'] = 'Wikipedia Office-protected pages',
['all|all|reset|all|all'] = 'Wikipedia Office-protected pages',
['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages',
['all|all|mainpage|all|all'] = 'Wikipedia fully protected main page files',
['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|template|all|all|edit'] = 'Wikipedia fully protected templates',
['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages',
['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages',
['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people',
['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people',
['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute',
['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users',
['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',
['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories',
['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files',
['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals',
['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages',
['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages',
['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates',
['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages',
['all|all|all|templateeditor|move'] = 'Wikipedia template-protected pages other than templates and modules',
['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules',
['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',
['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates
['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people',
['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people',
['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute',
['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users',
['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism',
['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories',
['all|file|all|sysop|edit'] = 'Wikipedia fully protected files',
['all|project|all|sysop|edit'] = 'Wikipedia fully protected project pages',
['all|talk|all|sysop|edit'] = 'Wikipedia fully protected talk pages',
['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|extendedconfirmed|move'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates',
['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages',
['all|module|all|all|edit'] = 'Wikipedia fully protected modules',
['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules',
['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules',
['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules',
['all|all|all|sysop|move'] = 'Wikipedia move-protected pages',
['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages',
['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute',
['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism',
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',
['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages',
['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages',
['all|template|all|sysop|move'] = 'Wikipedia move-protected templates',
['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages',
['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',
['all|file|all|all|upload'] = 'Wikipedia upload-protected files',
},
--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------
-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
-- an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
-- 1) an expiry parameter is not set, and
-- 2) a reason is provided, and
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
-- table.
expiryCheckActions = {
edit = nil,
move = false,
autoreview = true,
upload = false
},
reasonsWithoutExpiryCheck = {
blp = true,
template = true,
},
--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------
-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
[0] = 'article',
[6] = 'file',
[10] = 'template',
[14] = 'category',
[828] = 'module',
default = 'page'
},
--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------
-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
['indef'] = true,
['indefinite'] = true,
['indefinitely'] = true,
['infinite'] = true,
},
--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------
-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
sysop = {},
reviewer = {'sysop'},
filemover = {'sysop'},
templateeditor = {'sysop'},
extendedconfirmed = {'sysop'},
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
user = {'autoconfirmed'},
['*'] = {'user'}
},
--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------
-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
['Template:Protected page'] = {},
['Template:Extended confirmed–protected'] = {'ecp'},
['Template:Protected biography of a living person'] = {'blp'},
['Template:Protected due to a dispute'] = {'dispute'},
['Template:Move-protected'] = {action = 'move', catonly = 'yes'},
['Template:Move-protected due to a dispute'] = {'dispute', action = 'move', catonly = 'yes'},
['Template:Move-protected due to vandalism'] = {'vandalism', action = 'move', catonly = 'yes'},
['Template:Office-protected'] = {'office'},
['Template:Pending changes–protected'] = {action = 'autoreview', small = true},
['Template:Semi-protected indefinitely'] = {small = true},
['Template:Protected due to sockpuppetry'] = {'sock'},
['Template:Protected template'] = {'template', small = true},
['Template:Upload-protected'] = {action = 'upload'},
['Template:Protected talk page of a blocked user'] = {'usertalk'},
['Template:Protected due to vandalism'] = {'vandalism'},
},
--------------------------------------------------------------------------------
--
-- MESSAGES
--
--------------------------------------------------------------------------------
msg = {
--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]].',
--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',
--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',
--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------
-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'talk page',
--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------
-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'submit an edit request',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------
-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'F j, Y "at" H:i e',
--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------
-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Full-protection-shackle.svg',
['image-filename-default'] = 'Transparent.gif',
--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}
k108n3hntzssp9cyjanrmu01ygggcb9
ವಿಕಿಪೀಡಿಯ:ಚಾವಡಿ (ಪಾತೆರಕತೆ)
4
28725
374555
374552
2026-11-05T17:02:40Z
ChiK
1136
/* CharInsert: adding to Gadget */
374555
wikitext
text/x-wiki
<noinclude>{{ಚಾವಡಿ ಪುಟೊ header|ಪಾತೆರಕತೆ|alpha=yes|'''ಚಾವಡಿ ಪಾತೆರಕತೆ''' [[ತುಳು ಬಾಸೆ|ತುಳು]] ವಿಕಿಪೀಡಿಯೊದ ಕಾರ್ಯೊನೀತಿಲೆನ ಬಗೆಟ್, ತಾಂತ್ರಿಕ ದೋಸೊಲೆನ ಬಗೆಟ್, ಅಂಚನೆ ಕೆಲಸೊ ಕಾರ್ಯೊಲೆನ ಬಗೆಟ್ ಪಟ್ಟಾಂಗ ಪಾಡುನ ಮೀಚಿಲ್ ಪುಟೊ.
*ಸಾದ್ಯೊ ಆಯಿನಾತ್ ಲೇಕನೊಲೆಗ್ ಸಂಬಂದಿಸಯಿನ ಪಟ್ಟಾಂಗೊಲೆನ್ ಅವ್ವೇ ಲೇಕನೊದ ಪಟ್ಟಾಂಗೊ ಪುಟೊಡು ಸೇರಾಲೆ.}}</noinclude>
[[ವರ್ಗೊ:ವಿಕಿಪೀಡಿಯ ಚಾವಡಿ]]
== CharInsert: adding to Gadget ==
CharInsert: ಎಡಿಟ್ ವಿಂಡೋದ ತಿರ್ತ್ ಒಂಜಿ ಟೂಲ್ಬಾರ್ ಸೇರ್ಸದ್ ವಿಕಿ ಮಾರ್ಕಪ್ ಬುಕ್ಕೊ ವಿಸೆಸೊ ಅಕ್ಷರೊಲೆನ್ ಬೇಗನೆ ಪಾಡರ ಬಾರಿ ಸುಲಬೊಡ್ ಗಲಸುನಂಚಿಡ್ನೆಡ್ದಾದ್, ಯಾನ್ ಉಂದೆನ್ ಮಾತ ಬಳಕೆದಾರರೆಗ್ಲಾ ಸೇರಿಕೆ ಮಲ್ಪುವೆ. [[ಬಳಕೆದಾರೆ:ChiK|ChiK]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:ChiK|ಪಾತೆರ್ಲೆ]]) 11:40, 4 ನವಂಬರ್ 2026 (IST)
# ಮಲ್ಪುಲೆ. ಎನ್ನ ಒಪ್ಪಿಗೆ ಉಂಡು.--[[ಬಳಕೆದಾರೆ:Vishwanatha Badikana|Vishwanatha Badikana]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Vishwanatha Badikana|ಪಾತೆರ್ಲೆ]]) 12:03, 4 ನವಂಬರ್ 2026 (IST)
# ಒಪ್ಪಿಗೆ ಉಂಡು --[[ಬಳಕೆದಾರೆ:Mahaveer Indra|Mahaveer Indra]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:Mahaveer Indra|ಪಾತೆರ್ಲೆ]]) 13:04, 4 ನವಂಬರ್ 2026 (IST)
----
{{Done}} [[ಬಳಕೆದಾರೆ:ChiK|ChiK]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:ChiK|ಪಾತೆರ್ಲೆ]]) 22:32, 5 ನವಂಬರ್ 2026 (IST)
== WikiRefine: A 15-Day Wikipedia Article Improvement Campaign ==
Hello everyone,
The Open Knowledge Initiatives (OKI) team is pleased to announce '''[https://meta.wikimedia.org/wiki/IIITH-OKI/Edit-a-thon/WikiRefine WikiRefine]''', a 15-day article improvement campaign taking place from '''7 to 21 November 2026'''. We invite editors from all participating language communities to take part.
The campaign aims to encourage Wikimedians to improve the overall quality of Wikipedia articles, with a focus on references, article structure, readability, images, internal links and other aspects of content development.
; Article lists
For this campaign, we have prepared lists based on the 100 most-read articles from the last five years for participating language Wikipedias. You can find the article lists and other campaign information here: [https://meta.wikimedia.org/wiki/IIITH-OKI/Edit-a-thon/WikiRefine/List_of_Articles View the article lists]
;Evaluating article improvements
We will be using the [https://wikieval.toolforge.org/ WikiEval tool], developed to support the evaluation of Wikipedia content during campaigns. It will help assess article quality and track improvements made throughout WikiRefine.
;What happens after the campaign?
WikiRefine will also serve as a preparatory activity for a follow-up in-person event focused on qualitative improvements to local-language Wikipedias. We aim to bring together the top two participants (from India only) from each participating community. Their contributions will be assessed by a jury of experienced Wikimedians familiar with the respective languages.
We encourage each community to identify up to three organisers, ensuring diverse representation of genders and both new and experienced Wikimedians. Jury members should be experienced contributors with a good understanding of their respective language Wikipedias.
'''We invite everyone to participate, improve articles and help make knowledge in our languages more comprehensive and accessible.''' ([[m:IIITH-OKI/Edit-a-thon/WikiRefine/Community Sign-up|Community Sign-up page]])
For more information, please visit the [[m:IIITH-OKI/Edit-a-thon/WikiRefine|WikiRefine project page]].
'''Note:''' A few language Wikipedia article lists have not yet been added to the dedicated page due to a technical issue with the tool. We are working to resolve this and aim to add them before the campaign begins. Thank you! [[ಬಳಕೆದಾರೆ:MediaWiki message delivery|MediaWiki message delivery]] ([[ಬಳಕೆದಾರೆ ಪಾತೆರ:MediaWiki message delivery|ಪಾತೆರ್ಲೆ]]) 22:41, 4 ನವಂಬರ್ 2026 (IST)
<!-- Message sent by User:Nitesh (OKI)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Nitesh_(OKI)/lists/Indic_Wikipedia_VPs&oldid=31250414 -->
5o84im03wcqsc4oc62ib3hu91fqc7b8
ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ
0
29295
374565
374466
2026-11-06T02:02:26Z
Mahaveer Indra
1023
/* */
374565
wikitext
text/x-wiki
'''ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ''', ಅತ್ತಂಡ ''''ಮಂಗಳೂರು-೧'''' [[ಕರ್ನಾಟಕ ವಿಧಾನ ಸಭೆ|ಕರ್ನಾಟಕ ವಿಧಾನಸಭೆ]]ತ್ತ ಒಂಜಿ ಪಿರಾಕ್ದ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ ಆದಿತ್ತ್ಂಡ್. ಉಂದು ದಕ್ಷಿಣ ಕನ್ನಡ ಜಿಲ್ಲೆದ ಪ್ರಮುಖ ಕ್ಷೇತ್ರವಾದಿತ್ತ್ಂಡ್. ಬೊಕ್ಕ ದುಂಬುದ ಮಂಗಳೂರು ಲೋಕಸಭಾ ಕ್ಷೇತ್ರದ ಒಂಜಿ ಭಾಗ ಆದಿತ್ತ್ಂಡ್. ಇತ್ತೆ ಈ ಕ್ಷೇತ್ರ ಅಸ್ತಿತ್ವಡ್ ಇಜ್ಜಿ. ದಾಯೆಪಂಡ ೨೦೦೮ನೇ ಇಸವಿಡ್ ನಡತಿನ ಕ್ಷೇತ್ರ ವಿಂಗಡಣೆಡ್ದ್ ಬೊಕ್ಕ ಉಂದೆನ್ [[ಮಂಗಳೂರು ಉತ್ತರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ|ಮಂಗಳೂರು ಉತ್ತರ]] ಬೊಕ್ಕ [[ಮಂಗಳೂರು ದಕ್ಷಿಣ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ|ಮಂಗಳೂರು ದಕ್ಷಿಣ]] ಕ್ಷೇತ್ರೊಲಾದ್ ವಿಭಜನೆ ಮಲ್ತೆರ್.<ref>{{cite web |title=DELIMITATION OF PARLIAMENTARY AND ASSEMBLY CONSTITUENCIES ORDER, 2008 |url=https://www.eci.gov.in/Documents/Delimitation/DelimitationofParliamentaryAssemblyConstituenciesOrder-2008(English).pdf |website=eci.gov.in |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
==ಚುನಾವಣಾ ಇತಿಹಾಸೊ==
ಈ ಕ್ಷೇತ್ರದ ಚುನಾವಣಾ ಇತಿಹಾಸನ್ ತೂಂಡ, ಸುರುತ ದಿನೊಕುಲೆಡ್ ಮುಲ್ಪ ಭಾರತೀಯ ರಾಷ್ಟ್ರೀಯ ಕಾಂಗ್ರೆಸ್ ಪಕ್ಷದ ಮಲ್ಲ ಪ್ರಾಬಲ್ಯ ಇತ್ತ್ಂಡ್. ೧೯೫೭ಡ್ ನಡತಿನ ಸುರುತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆಡ್ (ದುಂಬುದ ಮೈಸೂರು ರಾಜ್ಯ) ಕಾಂಗ್ರೆಸ್ ಪಕ್ಷದ ಬಂಟ್ವಾಳ ವೈಕುಂಠ ಬಾಳಿಗ ಆರ್ ಮುಲ್ಪರ್ದ್ ಶಾಸಕೆರಾದ್ ಆಯ್ಕೆ ಆದಿತ್ತೆರ್. ಆರ್ ಕರ್ನಾಟಕದ ರಾಜಕೀಯಡ್ ಬೊಕ್ಕ ಕಾನೂನು ಕ್ಷೇತ್ರಡ್ ಮಲ್ಲ ಪುದರ್ ಪಡೆಯಿನಾರ್, ಅಂಚನೆ ವಿಧಾನಸಭೆದ ಸಭಾಧ್ಯಕ್ಷೆರ್ (ಸ್ಪೀಕರ್) ಆದ್ಲಾ ಆರ್ ಬೇಲೆ ಮಲ್ತ್ದಿತ್ತೆರ್.<ref>{{cite web |title=Speakers of Karnataka Legislative Assembly since 1949 |url=https://kla.kar.nic.in/assembly/review/previousspeakers.htm |website=kla.kar.nic.in |publisher=Karnataka Legislative Assembly |access-date=3 November 2026}}</ref> ಅವೆರ್ದ್ ಬೊಕ್ಕ ೧೯೬೨, ೧೯೬೭, ಬೊಕ್ಕ ೧೯೭೨ದ ಚುನಾವಣೆಲೆಡ್ಲಾ ಈ ಕ್ಷೇತ್ರಡ್ ಚುನಾವಣೆಲು ನಡತ್ಂಡ್ ಬೊಕ್ಕ ಬೇತೆ ಬೇತೆ ನಾಯಕೆರ್ ಮುಲ್ಪರ್ದು ವಿಧಾನಸಭೆಗ್ ಆಯ್ಕೆ ಆತೆರ್.
ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರೊಡು, ೧೯೫೭ರ್ದ್ ಪತ್ತ್ದ್ ೨೦೦೪ ಮುಟ್ಟ ಒಟ್ಟು ೧೧ ವಿಧಾನಸಭಾ ಚುನಾವಣೆಲು ನಡತ್ತೊ. ೧೯೫೭ಡ್ ಮೈಸೂರು ರಾಜ್ಯದ ಅಡಿಟ್ ಸುರುತ ಚುನಾವಣೆ ನಡತ್ಂಡ, ಅವೆರ್ದ್ ಬೊಕ್ಕ ೧೯೬೨, ೧೯೬೭, ೧೯೭೨, ೧೯೭೮, ೧೯೮೩, ೧೯೮೫, ೧೯೮೯, ೧೯೯೪, ೧೯೯೯ ಬೊಕ್ಕ ೨೦೦೪ಡ್ ಮುಲ್ಪ ಚುನಾವಣೆಲು ನಡತ್ಂಡ್. ೨೦೦೪ಡ್ ನಡತಿನ ಚುನಾವಣೆ ಈ ಅವಿಭಜಿತ ಕ್ಷೇತ್ರದ ಕಡೆತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆ ಆದಿತ್ತ್ಂಡ್. ಈ ೧೧ ಚುನಾವಣೆಲೆಡ್ ಸುರುತ ದಶಕೊಲೆಡ್ ಭಾರತೀಯ ರಾಷ್ಟ್ರೀಯ ಕಾಂಗ್ರೆಸ್ ಮುಲ್ಪ ಮಸ್ತ್ ಸರ್ತಿ- ೭ ಸರ್ತಿ ಗೆಂದ್ದ್ಂಡ್, ೧೯೮೦ರ್ದ್ ಬೊಕ್ಕ(೧೯೮೫ ಬೊಕ್ಕ ೧೯೮೯ನೇ ಇಸವಿ ಬುಡುದು)ದ ಚುನಾವಣೆಲೆಡ್ ಭಾರತೀಯ ಜನತಾ ಪಾರ್ಟಿ ೪ ಸರ್ತಿ ಗೇಲ್ ಪಡೆದ್ಂಡ್.<ref>{{cite web |title=Election Results - Full Statistical Reports |url=https://www.eci.gov.in/statistical-reports |website=eci.gov |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
==ಅಂಕೆಸಂಕೆಲು==
೧೯೫೭ದ ಸುರುತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆದ ಲೆಕ್ಕಾಚಾರದ ಪ್ರಕಾರ, ಈ ಕ್ಷೇತ್ರಡ್ ಒಟ್ಟು ೬೦,೮೪೨ ನೋಂದಾಯಿತ ಮತದಾರೆರ್ ಇತ್ತೆರ್. ಅಯಿಟ್ ಒಟ್ಟು ೩೩,೪೪೦ ಜನಕುಲು ತಮ್ಮ ಮತದಾನ ಮಲ್ತ್ದಿತ್ತೆರ್. ಆ ಕಾಲದ ಲೆಕ್ಕಾಚಾರಡ್ ತೂಂಡ, ಉಂದು ಒಂಜಿ ಎಡ್ಡೆ ಮತದಾನದ ಪ್ರಮಾಣ ಆದಿತ್ತ್ಂಡ್.<ref>{{cite web |title=STATISTICAL REPORT ON GENERAL ELECTION, 1957 TO THE LEGISLATIVE ASSEMBLY OF MYSORE |url=https://old.eci.gov.in/files/file/3772-karnataka-1957/?do=download&r=8886&confirm=1&t=1&csrfKey=d66c5945e54c12b7f222880a5d1ee230 |website=old.eci.gov.in |publisher=ಚುನಾವಣಾ ಅಯೋಗ |access-date=3 November 2026}}</ref> ದಶಕೊಲು ಕರಿನಂಚನೆ ಮಂಗಳೂರು ನಗರದ ಜನಸಂಖ್ಯೆ ಮಸ್ತ್ ಬೇಗ ಏರೊಂದು ಪೋಂಡು, ಅಂಚನೆ ಮುಲ್ಪದ ಮತದಾರೆರೆನ ಸಂಖ್ಯೆಲಾ ಜಾಸ್ತಿಯಾಂಡ್. ೨೦೦೮ರ್ದ್ ಬೊಕ್ಕ ಈ ಕ್ಷೇತ್ರದ ಮತದಾರೆರ್ 'ಮಂಗಳೂರು ನಗರ ದಕ್ಷಿಣ' ಬೊಕ್ಕ 'ಮಂಗಳೂರು ನಗರ ಉತ್ತರ' ಕ್ಷೇತ್ರೊಲೆಗ್ ಹಂಚಿದ್ ಪೋಯೆರ್.
== ಕ್ಷೇತ್ರೊಡು ಓಟು ಗೆಂದಿನಕ್ಲೆನ ಪಟ್ಟಿ==
ಈ ಪಟ್ಟಿಡ್ ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರಡ್ ೧೯೫೭ಡ್ದು ೨೦೦೪ ಮುಟ್ಟ ನಡತಿನ ಓಟುಡು ಗೆಂದಿನಕ್ಲೆನ ಪುದರ್ ಉಂಡು.
{| class="wikitable sortable"
|+ ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರಡ್ ಗೆಂದ್ದಿನ ಅಭ್ಯರ್ಥಿಲೆನ ಪಟ್ಟಿ (೧೯೫೭-೨೦೦೪)<ref>{{cite web |title=Election Results - Full Statistical Reports |url=https://www.eci.gov.in/statistical-reports |website=eci.gov |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
|-
! ಚುನಾವಣಾ ವರ್ಷ
! ಗೆಂದಿನಾರ್
! colspan="2" | ಪಕ್ಷ
|-
| ೧೯೫೭
| ವೈಕುಂಠ ಬಾಳಿಗ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೬೨
| ಎಂ. ಶ್ರೀನಿವಾಸ ನಾಯಕ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೬೭
| ಎಂ. ಶ್ರೀನಿವಾಸ ನಾಯಕ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೭೨
| ಅಡ್ಡಿ ಸಲ್ಡಾನ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೭೮
| ಪಿ. ಎಫ್. ರೊಡ್ರಿಗಸ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್ (ಐ)
|-
| ೧೯೮೩
| ವಿ. ಧನಂಜಯ ಕುಮಾರ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೧೯೮೫
| ಬ್ಲಾಸಿಯಸ್ ಎಂ. ಡಿ'ಸೋಜ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೮೯
| ಬ್ಲಾಸಿಯಸ್ ಎಂ. ಡಿ'ಸೋಜ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೯೪
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೧೯೯೯
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೨೦೦೪
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|}
೨೦೦೮ನೇ ಇಸವಿಡ್ದ್ ಬೊಕ್ಕ ಈ ಕ್ಷೇತ್ರೊ ೨ ಪೊಸ ಕ್ಷೇತ್ರೊಲೆಡ್ ಪಟ್ಟ್ದ್ ಪೋಯಿನೆಡ್ದಾವರ ಐತ ಅಭ್ಯರ್ಥಿಲೆನ ಪುದರ್ದ ಈ ಪಟ್ಟಿಡ್ ಇಜ್ಜಿ.
== ಉಲ್ಲೇಕಲು ==
{{reflist}}
nyck1brw2a69p5ewpfm22m3sy1bffnc
374566
374565
2026-11-06T02:03:05Z
Mahaveer Indra
1023
/* ಚುನಾವಣಾ ಇತಿಹಾಸೊ */
374566
wikitext
text/x-wiki
'''ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ''', ಅತ್ತಂಡ ''''ಮಂಗಳೂರು-೧'''' [[ಕರ್ನಾಟಕ ವಿಧಾನ ಸಭೆ|ಕರ್ನಾಟಕ ವಿಧಾನಸಭೆ]]ತ್ತ ಒಂಜಿ ಪಿರಾಕ್ದ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ ಆದಿತ್ತ್ಂಡ್. ಉಂದು ದಕ್ಷಿಣ ಕನ್ನಡ ಜಿಲ್ಲೆದ ಪ್ರಮುಖ ಕ್ಷೇತ್ರವಾದಿತ್ತ್ಂಡ್. ಬೊಕ್ಕ ದುಂಬುದ ಮಂಗಳೂರು ಲೋಕಸಭಾ ಕ್ಷೇತ್ರದ ಒಂಜಿ ಭಾಗ ಆದಿತ್ತ್ಂಡ್. ಇತ್ತೆ ಈ ಕ್ಷೇತ್ರ ಅಸ್ತಿತ್ವಡ್ ಇಜ್ಜಿ. ದಾಯೆಪಂಡ ೨೦೦೮ನೇ ಇಸವಿಡ್ ನಡತಿನ ಕ್ಷೇತ್ರ ವಿಂಗಡಣೆಡ್ದ್ ಬೊಕ್ಕ ಉಂದೆನ್ [[ಮಂಗಳೂರು ಉತ್ತರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ|ಮಂಗಳೂರು ಉತ್ತರ]] ಬೊಕ್ಕ [[ಮಂಗಳೂರು ದಕ್ಷಿಣ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ|ಮಂಗಳೂರು ದಕ್ಷಿಣ]] ಕ್ಷೇತ್ರೊಲಾದ್ ವಿಭಜನೆ ಮಲ್ತೆರ್.<ref>{{cite web |title=DELIMITATION OF PARLIAMENTARY AND ASSEMBLY CONSTITUENCIES ORDER, 2008 |url=https://www.eci.gov.in/Documents/Delimitation/DelimitationofParliamentaryAssemblyConstituenciesOrder-2008(English).pdf |website=eci.gov.in |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
==ಚುನಾವಣಾ ಇತಿಹಾಸೊ==
ಈ ಕ್ಷೇತ್ರದ ಚುನಾವಣಾ ಇತಿಹಾಸನ್ ತೂಂಡ, ಸುರುತ ದಿನೊಕುಲೆಡ್ ಮುಲ್ಪ [[ಭಾರತೀಯ ರಾಷ್ಟ್ರೀಯ ಕಾಂಗ್ರೆಸ್]] ಪಕ್ಷದ ಮಲ್ಲ ಪ್ರಾಬಲ್ಯ ಇತ್ತ್ಂಡ್. ೧೯೫೭ಡ್ ನಡತಿನ ಸುರುತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆಡ್ (ದುಂಬುದ ಮೈಸೂರು ರಾಜ್ಯ) ಕಾಂಗ್ರೆಸ್ ಪಕ್ಷದ ಬಂಟ್ವಾಳ ವೈಕುಂಠ ಬಾಳಿಗ ಆರ್ ಮುಲ್ಪರ್ದ್ ಶಾಸಕೆರಾದ್ ಆಯ್ಕೆ ಆದಿತ್ತೆರ್. ಆರ್ ಕರ್ನಾಟಕದ ರಾಜಕೀಯಡ್ ಬೊಕ್ಕ ಕಾನೂನು ಕ್ಷೇತ್ರಡ್ ಮಲ್ಲ ಪುದರ್ ಪಡೆಯಿನಾರ್, ಅಂಚನೆ ವಿಧಾನಸಭೆದ ಸಭಾಧ್ಯಕ್ಷೆರ್ (ಸ್ಪೀಕರ್) ಆದ್ಲಾ ಆರ್ ಬೇಲೆ ಮಲ್ತ್ದಿತ್ತೆರ್.<ref>{{cite web |title=Speakers of Karnataka Legislative Assembly since 1949 |url=https://kla.kar.nic.in/assembly/review/previousspeakers.htm |website=kla.kar.nic.in |publisher=Karnataka Legislative Assembly |access-date=3 November 2026}}</ref> ಅವೆರ್ದ್ ಬೊಕ್ಕ ೧೯೬೨, ೧೯೬೭, ಬೊಕ್ಕ ೧೯೭೨ದ ಚುನಾವಣೆಲೆಡ್ಲಾ ಈ ಕ್ಷೇತ್ರಡ್ ಚುನಾವಣೆಲು ನಡತ್ಂಡ್ ಬೊಕ್ಕ ಬೇತೆ ಬೇತೆ ನಾಯಕೆರ್ ಮುಲ್ಪರ್ದು ವಿಧಾನಸಭೆಗ್ ಆಯ್ಕೆ ಆತೆರ್.
ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರೊಡು, ೧೯೫೭ರ್ದ್ ಪತ್ತ್ದ್ ೨೦೦೪ ಮುಟ್ಟ ಒಟ್ಟು ೧೧ ವಿಧಾನಸಭಾ ಚುನಾವಣೆಲು ನಡತ್ತೊ. ೧೯೫೭ಡ್ ಮೈಸೂರು ರಾಜ್ಯದ ಅಡಿಟ್ ಸುರುತ ಚುನಾವಣೆ ನಡತ್ಂಡ, ಅವೆರ್ದ್ ಬೊಕ್ಕ ೧೯೬೨, ೧೯೬೭, ೧೯೭೨, ೧೯೭೮, ೧೯೮೩, ೧೯೮೫, ೧೯೮೯, ೧೯೯೪, ೧೯೯೯ ಬೊಕ್ಕ ೨೦೦೪ಡ್ ಮುಲ್ಪ ಚುನಾವಣೆಲು ನಡತ್ಂಡ್. ೨೦೦೪ಡ್ ನಡತಿನ ಚುನಾವಣೆ ಈ ಅವಿಭಜಿತ ಕ್ಷೇತ್ರದ ಕಡೆತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆ ಆದಿತ್ತ್ಂಡ್. ಈ ೧೧ ಚುನಾವಣೆಲೆಡ್ ಸುರುತ ದಶಕೊಲೆಡ್ ಭಾರತೀಯ ರಾಷ್ಟ್ರೀಯ ಕಾಂಗ್ರೆಸ್ ಮುಲ್ಪ ಮಸ್ತ್ ಸರ್ತಿ- ೭ ಸರ್ತಿ ಗೆಂದ್ದ್ಂಡ್, ೧೯೮೦ರ್ದ್ ಬೊಕ್ಕ(೧೯೮೫ ಬೊಕ್ಕ ೧೯೮೯ನೇ ಇಸವಿ ಬುಡುದು)ದ ಚುನಾವಣೆಲೆಡ್ ಭಾರತೀಯ ಜನತಾ ಪಾರ್ಟಿ ೪ ಸರ್ತಿ ಗೇಲ್ ಪಡೆದ್ಂಡ್.<ref>{{cite web |title=Election Results - Full Statistical Reports |url=https://www.eci.gov.in/statistical-reports |website=eci.gov |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
==ಅಂಕೆಸಂಕೆಲು==
೧೯೫೭ದ ಸುರುತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆದ ಲೆಕ್ಕಾಚಾರದ ಪ್ರಕಾರ, ಈ ಕ್ಷೇತ್ರಡ್ ಒಟ್ಟು ೬೦,೮೪೨ ನೋಂದಾಯಿತ ಮತದಾರೆರ್ ಇತ್ತೆರ್. ಅಯಿಟ್ ಒಟ್ಟು ೩೩,೪೪೦ ಜನಕುಲು ತಮ್ಮ ಮತದಾನ ಮಲ್ತ್ದಿತ್ತೆರ್. ಆ ಕಾಲದ ಲೆಕ್ಕಾಚಾರಡ್ ತೂಂಡ, ಉಂದು ಒಂಜಿ ಎಡ್ಡೆ ಮತದಾನದ ಪ್ರಮಾಣ ಆದಿತ್ತ್ಂಡ್.<ref>{{cite web |title=STATISTICAL REPORT ON GENERAL ELECTION, 1957 TO THE LEGISLATIVE ASSEMBLY OF MYSORE |url=https://old.eci.gov.in/files/file/3772-karnataka-1957/?do=download&r=8886&confirm=1&t=1&csrfKey=d66c5945e54c12b7f222880a5d1ee230 |website=old.eci.gov.in |publisher=ಚುನಾವಣಾ ಅಯೋಗ |access-date=3 November 2026}}</ref> ದಶಕೊಲು ಕರಿನಂಚನೆ ಮಂಗಳೂರು ನಗರದ ಜನಸಂಖ್ಯೆ ಮಸ್ತ್ ಬೇಗ ಏರೊಂದು ಪೋಂಡು, ಅಂಚನೆ ಮುಲ್ಪದ ಮತದಾರೆರೆನ ಸಂಖ್ಯೆಲಾ ಜಾಸ್ತಿಯಾಂಡ್. ೨೦೦೮ರ್ದ್ ಬೊಕ್ಕ ಈ ಕ್ಷೇತ್ರದ ಮತದಾರೆರ್ 'ಮಂಗಳೂರು ನಗರ ದಕ್ಷಿಣ' ಬೊಕ್ಕ 'ಮಂಗಳೂರು ನಗರ ಉತ್ತರ' ಕ್ಷೇತ್ರೊಲೆಗ್ ಹಂಚಿದ್ ಪೋಯೆರ್.
== ಕ್ಷೇತ್ರೊಡು ಓಟು ಗೆಂದಿನಕ್ಲೆನ ಪಟ್ಟಿ==
ಈ ಪಟ್ಟಿಡ್ ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರಡ್ ೧೯೫೭ಡ್ದು ೨೦೦೪ ಮುಟ್ಟ ನಡತಿನ ಓಟುಡು ಗೆಂದಿನಕ್ಲೆನ ಪುದರ್ ಉಂಡು.
{| class="wikitable sortable"
|+ ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರಡ್ ಗೆಂದ್ದಿನ ಅಭ್ಯರ್ಥಿಲೆನ ಪಟ್ಟಿ (೧೯೫೭-೨೦೦೪)<ref>{{cite web |title=Election Results - Full Statistical Reports |url=https://www.eci.gov.in/statistical-reports |website=eci.gov |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
|-
! ಚುನಾವಣಾ ವರ್ಷ
! ಗೆಂದಿನಾರ್
! colspan="2" | ಪಕ್ಷ
|-
| ೧೯೫೭
| ವೈಕುಂಠ ಬಾಳಿಗ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೬೨
| ಎಂ. ಶ್ರೀನಿವಾಸ ನಾಯಕ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೬೭
| ಎಂ. ಶ್ರೀನಿವಾಸ ನಾಯಕ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೭೨
| ಅಡ್ಡಿ ಸಲ್ಡಾನ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೭೮
| ಪಿ. ಎಫ್. ರೊಡ್ರಿಗಸ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್ (ಐ)
|-
| ೧೯೮೩
| ವಿ. ಧನಂಜಯ ಕುಮಾರ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೧೯೮೫
| ಬ್ಲಾಸಿಯಸ್ ಎಂ. ಡಿ'ಸೋಜ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೮೯
| ಬ್ಲಾಸಿಯಸ್ ಎಂ. ಡಿ'ಸೋಜ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೯೪
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೧೯೯೯
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೨೦೦೪
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|}
೨೦೦೮ನೇ ಇಸವಿಡ್ದ್ ಬೊಕ್ಕ ಈ ಕ್ಷೇತ್ರೊ ೨ ಪೊಸ ಕ್ಷೇತ್ರೊಲೆಡ್ ಪಟ್ಟ್ದ್ ಪೋಯಿನೆಡ್ದಾವರ ಐತ ಅಭ್ಯರ್ಥಿಲೆನ ಪುದರ್ದ ಈ ಪಟ್ಟಿಡ್ ಇಜ್ಜಿ.
== ಉಲ್ಲೇಕಲು ==
{{reflist}}
0506zzt7np7onhcx4j6fr8tids8ckdr
374567
374566
2026-11-06T02:04:01Z
Mahaveer Indra
1023
/* ಚುನಾವಣಾ ಇತಿಹಾಸೊ */
374567
wikitext
text/x-wiki
'''ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ''', ಅತ್ತಂಡ ''''ಮಂಗಳೂರು-೧'''' [[ಕರ್ನಾಟಕ ವಿಧಾನ ಸಭೆ|ಕರ್ನಾಟಕ ವಿಧಾನಸಭೆ]]ತ್ತ ಒಂಜಿ ಪಿರಾಕ್ದ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ ಆದಿತ್ತ್ಂಡ್. ಉಂದು ದಕ್ಷಿಣ ಕನ್ನಡ ಜಿಲ್ಲೆದ ಪ್ರಮುಖ ಕ್ಷೇತ್ರವಾದಿತ್ತ್ಂಡ್. ಬೊಕ್ಕ ದುಂಬುದ ಮಂಗಳೂರು ಲೋಕಸಭಾ ಕ್ಷೇತ್ರದ ಒಂಜಿ ಭಾಗ ಆದಿತ್ತ್ಂಡ್. ಇತ್ತೆ ಈ ಕ್ಷೇತ್ರ ಅಸ್ತಿತ್ವಡ್ ಇಜ್ಜಿ. ದಾಯೆಪಂಡ ೨೦೦೮ನೇ ಇಸವಿಡ್ ನಡತಿನ ಕ್ಷೇತ್ರ ವಿಂಗಡಣೆಡ್ದ್ ಬೊಕ್ಕ ಉಂದೆನ್ [[ಮಂಗಳೂರು ಉತ್ತರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ|ಮಂಗಳೂರು ಉತ್ತರ]] ಬೊಕ್ಕ [[ಮಂಗಳೂರು ದಕ್ಷಿಣ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರ|ಮಂಗಳೂರು ದಕ್ಷಿಣ]] ಕ್ಷೇತ್ರೊಲಾದ್ ವಿಭಜನೆ ಮಲ್ತೆರ್.<ref>{{cite web |title=DELIMITATION OF PARLIAMENTARY AND ASSEMBLY CONSTITUENCIES ORDER, 2008 |url=https://www.eci.gov.in/Documents/Delimitation/DelimitationofParliamentaryAssemblyConstituenciesOrder-2008(English).pdf |website=eci.gov.in |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
==ಚುನಾವಣಾ ಇತಿಹಾಸೊ==
ಈ ಕ್ಷೇತ್ರದ ಚುನಾವಣಾ ಇತಿಹಾಸನ್ ತೂಂಡ, ಸುರುತ ದಿನೊಕುಲೆಡ್ ಮುಲ್ಪ [[ಭಾರತೀಯ ರಾಷ್ಟ್ರೀಯ ಕಾಂಗ್ರೆಸ್]] ಪಕ್ಷದ ಮಲ್ಲ ಪ್ರಾಬಲ್ಯ ಇತ್ತ್ಂಡ್. ೧೯೫೭ಡ್ ನಡತಿನ ಸುರುತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆಡ್ (ದುಂಬುದ ಮೈಸೂರು ರಾಜ್ಯ) ಕಾಂಗ್ರೆಸ್ ಪಕ್ಷದ [[ಬಂಟ್ವಾಳ ವೈಕುಂಠ ಬಾಳಿಗಾ]] ಆರ್ ಮುಲ್ಪರ್ದ್ ಶಾಸಕೆರಾದ್ ಆಯ್ಕೆ ಆದಿತ್ತೆರ್. ಆರ್ ಕರ್ನಾಟಕದ ರಾಜಕೀಯಡ್ ಬೊಕ್ಕ ಕಾನೂನು ಕ್ಷೇತ್ರಡ್ ಮಲ್ಲ ಪುದರ್ ಪಡೆಯಿನಾರ್, ಅಂಚನೆ ವಿಧಾನಸಭೆದ ಸಭಾಧ್ಯಕ್ಷೆರ್ (ಸ್ಪೀಕರ್) ಆದ್ಲಾ ಆರ್ ಬೇಲೆ ಮಲ್ತ್ದಿತ್ತೆರ್.<ref>{{cite web |title=Speakers of Karnataka Legislative Assembly since 1949 |url=https://kla.kar.nic.in/assembly/review/previousspeakers.htm |website=kla.kar.nic.in |publisher=Karnataka Legislative Assembly |access-date=3 November 2026}}</ref> ಅವೆರ್ದ್ ಬೊಕ್ಕ ೧೯೬೨, ೧೯೬೭, ಬೊಕ್ಕ ೧೯೭೨ದ ಚುನಾವಣೆಲೆಡ್ಲಾ ಈ ಕ್ಷೇತ್ರಡ್ ಚುನಾವಣೆಲು ನಡತ್ಂಡ್ ಬೊಕ್ಕ ಬೇತೆ ಬೇತೆ ನಾಯಕೆರ್ ಮುಲ್ಪರ್ದು ವಿಧಾನಸಭೆಗ್ ಆಯ್ಕೆ ಆತೆರ್.
ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರೊಡು, ೧೯೫೭ರ್ದ್ ಪತ್ತ್ದ್ ೨೦೦೪ ಮುಟ್ಟ ಒಟ್ಟು ೧೧ ವಿಧಾನಸಭಾ ಚುನಾವಣೆಲು ನಡತ್ತೊ. ೧೯೫೭ಡ್ ಮೈಸೂರು ರಾಜ್ಯದ ಅಡಿಟ್ ಸುರುತ ಚುನಾವಣೆ ನಡತ್ಂಡ, ಅವೆರ್ದ್ ಬೊಕ್ಕ ೧೯೬೨, ೧೯೬೭, ೧೯೭೨, ೧೯೭೮, ೧೯೮೩, ೧೯೮೫, ೧೯೮೯, ೧೯೯೪, ೧೯೯೯ ಬೊಕ್ಕ ೨೦೦೪ಡ್ ಮುಲ್ಪ ಚುನಾವಣೆಲು ನಡತ್ಂಡ್. ೨೦೦೪ಡ್ ನಡತಿನ ಚುನಾವಣೆ ಈ ಅವಿಭಜಿತ ಕ್ಷೇತ್ರದ ಕಡೆತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆ ಆದಿತ್ತ್ಂಡ್. ಈ ೧೧ ಚುನಾವಣೆಲೆಡ್ ಸುರುತ ದಶಕೊಲೆಡ್ ಭಾರತೀಯ ರಾಷ್ಟ್ರೀಯ ಕಾಂಗ್ರೆಸ್ ಮುಲ್ಪ ಮಸ್ತ್ ಸರ್ತಿ- ೭ ಸರ್ತಿ ಗೆಂದ್ದ್ಂಡ್, ೧೯೮೦ರ್ದ್ ಬೊಕ್ಕ(೧೯೮೫ ಬೊಕ್ಕ ೧೯೮೯ನೇ ಇಸವಿ ಬುಡುದು)ದ ಚುನಾವಣೆಲೆಡ್ ಭಾರತೀಯ ಜನತಾ ಪಾರ್ಟಿ ೪ ಸರ್ತಿ ಗೇಲ್ ಪಡೆದ್ಂಡ್.<ref>{{cite web |title=Election Results - Full Statistical Reports |url=https://www.eci.gov.in/statistical-reports |website=eci.gov |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
==ಅಂಕೆಸಂಕೆಲು==
೧೯೫೭ದ ಸುರುತ ವಿಧಾನಸಭಾ ಚುನಾವಣೆದ ಲೆಕ್ಕಾಚಾರದ ಪ್ರಕಾರ, ಈ ಕ್ಷೇತ್ರಡ್ ಒಟ್ಟು ೬೦,೮೪೨ ನೋಂದಾಯಿತ ಮತದಾರೆರ್ ಇತ್ತೆರ್. ಅಯಿಟ್ ಒಟ್ಟು ೩೩,೪೪೦ ಜನಕುಲು ತಮ್ಮ ಮತದಾನ ಮಲ್ತ್ದಿತ್ತೆರ್. ಆ ಕಾಲದ ಲೆಕ್ಕಾಚಾರಡ್ ತೂಂಡ, ಉಂದು ಒಂಜಿ ಎಡ್ಡೆ ಮತದಾನದ ಪ್ರಮಾಣ ಆದಿತ್ತ್ಂಡ್.<ref>{{cite web |title=STATISTICAL REPORT ON GENERAL ELECTION, 1957 TO THE LEGISLATIVE ASSEMBLY OF MYSORE |url=https://old.eci.gov.in/files/file/3772-karnataka-1957/?do=download&r=8886&confirm=1&t=1&csrfKey=d66c5945e54c12b7f222880a5d1ee230 |website=old.eci.gov.in |publisher=ಚುನಾವಣಾ ಅಯೋಗ |access-date=3 November 2026}}</ref> ದಶಕೊಲು ಕರಿನಂಚನೆ ಮಂಗಳೂರು ನಗರದ ಜನಸಂಖ್ಯೆ ಮಸ್ತ್ ಬೇಗ ಏರೊಂದು ಪೋಂಡು, ಅಂಚನೆ ಮುಲ್ಪದ ಮತದಾರೆರೆನ ಸಂಖ್ಯೆಲಾ ಜಾಸ್ತಿಯಾಂಡ್. ೨೦೦೮ರ್ದ್ ಬೊಕ್ಕ ಈ ಕ್ಷೇತ್ರದ ಮತದಾರೆರ್ 'ಮಂಗಳೂರು ನಗರ ದಕ್ಷಿಣ' ಬೊಕ್ಕ 'ಮಂಗಳೂರು ನಗರ ಉತ್ತರ' ಕ್ಷೇತ್ರೊಲೆಗ್ ಹಂಚಿದ್ ಪೋಯೆರ್.
== ಕ್ಷೇತ್ರೊಡು ಓಟು ಗೆಂದಿನಕ್ಲೆನ ಪಟ್ಟಿ==
ಈ ಪಟ್ಟಿಡ್ ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರಡ್ ೧೯೫೭ಡ್ದು ೨೦೦೪ ಮುಟ್ಟ ನಡತಿನ ಓಟುಡು ಗೆಂದಿನಕ್ಲೆನ ಪುದರ್ ಉಂಡು.
{| class="wikitable sortable"
|+ ಮಂಗಳೂರು ನಗರ ವಿಧಾನಸಭಾ ಕ್ಷೇತ್ರಡ್ ಗೆಂದ್ದಿನ ಅಭ್ಯರ್ಥಿಲೆನ ಪಟ್ಟಿ (೧೯೫೭-೨೦೦೪)<ref>{{cite web |title=Election Results - Full Statistical Reports |url=https://www.eci.gov.in/statistical-reports |website=eci.gov |publisher=ಚುನಾವಣಾ ಆಯೋಗ |access-date=3 November 2026}}</ref>
|-
! ಚುನಾವಣಾ ವರ್ಷ
! ಗೆಂದಿನಾರ್
! colspan="2" | ಪಕ್ಷ
|-
| ೧೯೫೭
| ವೈಕುಂಠ ಬಾಳಿಗ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೬೨
| ಎಂ. ಶ್ರೀನಿವಾಸ ನಾಯಕ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೬೭
| ಎಂ. ಶ್ರೀನಿವಾಸ ನಾಯಕ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೭೨
| ಅಡ್ಡಿ ಸಲ್ಡಾನ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೭೮
| ಪಿ. ಎಫ್. ರೊಡ್ರಿಗಸ್
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್ (ಐ)
|-
| ೧೯೮೩
| ವಿ. ಧನಂಜಯ ಕುಮಾರ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೧೯೮೫
| ಬ್ಲಾಸಿಯಸ್ ಎಂ. ಡಿ'ಸೋಜ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೮೯
| ಬ್ಲಾಸಿಯಸ್ ಎಂ. ಡಿ'ಸೋಜ
| style="background-color: #19AAED; width: 5px;" |
| ಕಾಂಗ್ರೆಸ್
|-
| ೧೯೯೪
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೧೯೯೯
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|-
| ೨೦೦೪
| ಎನ್. ಯೋಗೀಶ್ ಭಟ್
| style="background-color: #FF9933; width: 5px;" |
| ಬಿಜೆಪಿ
|}
೨೦೦೮ನೇ ಇಸವಿಡ್ದ್ ಬೊಕ್ಕ ಈ ಕ್ಷೇತ್ರೊ ೨ ಪೊಸ ಕ್ಷೇತ್ರೊಲೆಡ್ ಪಟ್ಟ್ದ್ ಪೋಯಿನೆಡ್ದಾವರ ಐತ ಅಭ್ಯರ್ಥಿಲೆನ ಪುದರ್ದ ಈ ಪಟ್ಟಿಡ್ ಇಜ್ಜಿ.
== ಉಲ್ಲೇಕಲು ==
{{reflist}}
eegzcjw3ut7auo4zfvjibbbn5ksrhup
ಟೆಂಪ್ಲೇಟ್:Tracked in
10
29310
374557
2022-07-31T02:03:12Z
en>Novem Linguae
0
not sure why this is different than {{Tracked}} template. this will be needed to help DiscussionTools identify the template
374557
wikitext
text/x-wiki
<templatestyles src="Tracked/styles.css" /><div role="note" class="tracked plainlinks {{#if:{{{1|}}}|mw-trackedTemplate}}">Tracked in {{#invoke:Tracked in|getDomain|{{{1|<noinclude>https://github.com/exampleUser/exampleRepo/1234</noinclude>}}}}}<br /><span class="tracked-url">[{{{1|<noinclude>https://github.com/exampleUser/exampleRepo/1234</noinclude>}}} {{#invoke:Tracked in|getIssueNumber|{{{1|<noinclude>https://github.com/exampleUser/exampleRepo/1234</noinclude>}}}}}]</span><br />{{#switch:{{lc:{{{2|<noinclude>resolved</noinclude>}}}}}
|resolved|fixed=<span class="tracked-closure tracked-resolved">Resolved</span>
|invalid=<span class="tracked-closure">Invalid</span>
|duplicate=<span class="tracked-closure">Duplicate</span>
|declined|wontfix=<span class="tracked-closure">Declined</span>
|stalled|later=<span class="tracked-closure">Stalled</span>
|open=<span class="tracked-closure">Open</span>
}}</div><noinclude>
{{documentation}}
</noinclude>
7vqf3xp6vlfe6kskokxoykd8y3zjcv4
374558
374557
2026-11-05T17:42:03Z
ChiK
1136
1 revision imported from [[:en:Template:Tracked_in]]
374557
wikitext
text/x-wiki
<templatestyles src="Tracked/styles.css" /><div role="note" class="tracked plainlinks {{#if:{{{1|}}}|mw-trackedTemplate}}">Tracked in {{#invoke:Tracked in|getDomain|{{{1|<noinclude>https://github.com/exampleUser/exampleRepo/1234</noinclude>}}}}}<br /><span class="tracked-url">[{{{1|<noinclude>https://github.com/exampleUser/exampleRepo/1234</noinclude>}}} {{#invoke:Tracked in|getIssueNumber|{{{1|<noinclude>https://github.com/exampleUser/exampleRepo/1234</noinclude>}}}}}]</span><br />{{#switch:{{lc:{{{2|<noinclude>resolved</noinclude>}}}}}
|resolved|fixed=<span class="tracked-closure tracked-resolved">Resolved</span>
|invalid=<span class="tracked-closure">Invalid</span>
|duplicate=<span class="tracked-closure">Duplicate</span>
|declined|wontfix=<span class="tracked-closure">Declined</span>
|stalled|later=<span class="tracked-closure">Stalled</span>
|open=<span class="tracked-closure">Open</span>
}}</div><noinclude>
{{documentation}}
</noinclude>
7vqf3xp6vlfe6kskokxoykd8y3zjcv4
ಮೋಡ್ಯೂಲ್:Tracked in
828
29311
374559
2024-01-25T21:33:01Z
en>Novem Linguae
0
detect issue numbers not at the end of a URL
374559
Scribunto
text/plain
-- Utility functions for {{Tracked in}}, which is a template similar to {{Tracked}}, but lets you link to issues and pull requests that aren't on Phabricator, e.g. GitHub, GitLab, etc.
local p = {}
-- {{#invoke:Tracked in|getDomain|{{{1|}}}}}
function p.getDomain(frame)
local url = frame.args[1]
local domain = string.gsub(url, "www%.", "")
domain = string.match(domain, 'https?:%/%/(.-)%/.*$')
return domain
end
-- {{#invoke:Tracked in|getIssueNumber|{{{1|}}}}}
function p.getIssueNumber(frame)
local url = frame.args[1]
local issueNumber = string.match(url, '/(%d+)')
if tonumber(issueNumber) == nil then
return "ERROR: Issue number not found"
else
return "Issue #" .. issueNumber -- add a # sign in front of the number. can't use #, that creates a numbered list
end
end
return p
qvqi9b66z7is82eiqw909p1h0iz279z
374560
374559
2026-11-05T17:42:03Z
ChiK
1136
1 revision imported from [[:en:Module:Tracked_in]]
374559
Scribunto
text/plain
-- Utility functions for {{Tracked in}}, which is a template similar to {{Tracked}}, but lets you link to issues and pull requests that aren't on Phabricator, e.g. GitHub, GitLab, etc.
local p = {}
-- {{#invoke:Tracked in|getDomain|{{{1|}}}}}
function p.getDomain(frame)
local url = frame.args[1]
local domain = string.gsub(url, "www%.", "")
domain = string.match(domain, 'https?:%/%/(.-)%/.*$')
return domain
end
-- {{#invoke:Tracked in|getIssueNumber|{{{1|}}}}}
function p.getIssueNumber(frame)
local url = frame.args[1]
local issueNumber = string.match(url, '/(%d+)')
if tonumber(issueNumber) == nil then
return "ERROR: Issue number not found"
else
return "Issue #" .. issueNumber -- add a # sign in front of the number. can't use #, that creates a numbered list
end
end
return p
qvqi9b66z7is82eiqw909p1h0iz279z
ಟೆಂಪ್ಲೇಟ್:Tracked in/doc
10
29312
374561
2025-11-29T08:29:57Z
en>Novem Linguae
0
add
374561
wikitext
text/x-wiki
{{Documentation subpage}}
== Usage ==
{{Lua|Module:Tracked in}}
Open source software projects tend to use an issue tracker to track bug reports and feature requests. Each report/request is assigned a URL and a number. This is useful to display on talk pages. This template will create a floating box on the top right of a talk page section. You can provide this template with a URL, and it will parse the issue number from it and display it.
This template is a fork of {{t|Tracked}}. {{t|Tracked}} is similar, but only works on [https://phabricator.wikimedia.org Wikimedia Phabricator] tickets.
Example URLs that this template works with:
* https://github.com/wikimedia-gadgets/twinkle/issues/1476
* https://gitlab.com/redwarn/redwarn-web/-/issues/65
* https://sourceforge.net/p/freeplane/bugs/3073/
* https://bugs.launchpad.net/ubuntu/+source/compiz-plugins-main/+bug/815996
Example template code:
<code><nowiki>{{Tracked in|https://github.com/ms609/citation-bot/issues/4825}}</nowiki></code>
<code><nowiki>{{Tracked in|https://github.com/ms609/citation-bot/issues/4825|resolved}}</nowiki></code>
You can also enter pull request URLs.
<includeonly>{{sandbox other||
<!-- Categories below this line -->
[[Category:Interwiki link sidebar templates]]
}}</includeonly>
d3s9zd9eyp5054n02qrlayig4i90wir
374562
374561
2026-11-05T17:42:03Z
ChiK
1136
1 revision imported from [[:en:Template:Tracked_in/doc]]
374561
wikitext
text/x-wiki
{{Documentation subpage}}
== Usage ==
{{Lua|Module:Tracked in}}
Open source software projects tend to use an issue tracker to track bug reports and feature requests. Each report/request is assigned a URL and a number. This is useful to display on talk pages. This template will create a floating box on the top right of a talk page section. You can provide this template with a URL, and it will parse the issue number from it and display it.
This template is a fork of {{t|Tracked}}. {{t|Tracked}} is similar, but only works on [https://phabricator.wikimedia.org Wikimedia Phabricator] tickets.
Example URLs that this template works with:
* https://github.com/wikimedia-gadgets/twinkle/issues/1476
* https://gitlab.com/redwarn/redwarn-web/-/issues/65
* https://sourceforge.net/p/freeplane/bugs/3073/
* https://bugs.launchpad.net/ubuntu/+source/compiz-plugins-main/+bug/815996
Example template code:
<code><nowiki>{{Tracked in|https://github.com/ms609/citation-bot/issues/4825}}</nowiki></code>
<code><nowiki>{{Tracked in|https://github.com/ms609/citation-bot/issues/4825|resolved}}</nowiki></code>
You can also enter pull request URLs.
<includeonly>{{sandbox other||
<!-- Categories below this line -->
[[Category:Interwiki link sidebar templates]]
}}</includeonly>
d3s9zd9eyp5054n02qrlayig4i90wir
ಟೆಂಪ್ಲೇಟ್:Support/doc
10
29313
374564
2026-11-06T01:57:31Z
ChiK
1136
added content
374564
wikitext
text/x-wiki
{{documentation subpage}}
=== How to use ===
<big><b align="center" style="color: red;">Please do not substitute this template!</b></big><br>
You may make this template say other things by doing the following:
*<code><nowiki>{{support}}</nowiki></code> produces {{support}}
*<code><nowiki>{{support|Strongly}}</nowiki></code> produces {{support|Strongly}}
*<code><nowiki>{{support|Strong}}</nowiki></code> produces {{support|Strong}}
*<code><nowiki>{{support|Regular}}</nowiki></code> produces {{support|Regular}}
*<code><nowiki>{{support|Normal}}</nowiki></code> (or just <code><nowiki>{{support}}</nowiki></code>) produces {{support|Normal}}
*<code><nowiki>{{support|Weak}}</nowiki></code> produces {{support|Weak}}
*<code><nowiki>{{support|Weakly}}</nowiki></code> produces {{support|Weakly}}
<includeonly>
[[Category:Voting templates|Support]]
[[Category:Image with comment templates]]
</includeonly>
1lbbww5ocbgmoi508g7dxyhyajra2ca
ಫೈಲ್:Mangalore University logo.png
6
29314
374574
2026-11-06T05:52:08Z
ChiK
1136
Uploading a non-free logo using [[ವಿಕಿಪೀಡಿಯ:ಫೈಲ್_ಅಪ್ಲೋಡ್_ವಿಝಾರ್ಡ್|File Upload Wizard]]
374574
wikitext
text/x-wiki
==Summary==
{{Non-free use rationale 2
|Description = This is the logo for Mangalore University.
|Source = http://www.mangaloreuniversity.ac.in/index.html
|Article = ಮಂಗಳೂರು ವಿಶ್ವವಿದ್ಯಾನಿಲಯ
|Purpose = to serve as the primary means of visual identification at the top of the article dedicated to the entity in question.
|Replaceability = Any derivative work based upon the logo would be a copyright violation, so creation of a free image is not possible.
|Minimality =
The image is placed in the infobox at the top of the article discussing Mangalore University, a subject of public interest. The significance of the logo is to help the reader identify the organization, assure the readers that they have reached the right article containing critical commentary about the organization, and illustrate the organization's intended branding message in a way that words alone could not convey.
|Commercial = The use of a low resolution image of an organization's logo in the article about that organization will not impact the commercial viability of the logo.
}}
==Licensing==
{{Non-free logo}}
rrp1tt2fnvipi1lrzx64bxivbkn7gmr
ಟೆಂಪ್ಲೇಟ್:Non-free logo
10
29315
374576
2025-03-20T07:54:58Z
en>Paine Ellsworth
0
per edit request on talk page - decap "Copyright"
374576
wikitext
text/x-wiki
{{Imbox
|type = license
|image = {{#ifeq:{{Yesno-no|{{{regtrademark}}}}}|yes
|[[File:NotCommons-emblem-registered-trademark.svg|50px|Registered trademark]]
|{{#ifeq:{{Yesno-no|{{{nonregtrademark}}}}}|yes|[[File:NotCommons-emblem-nonregistered-trademark.svg|50px|Non-registered trademark]]|[[File:NotCommons-emblem-copyrighted.svg|50px|Copyrighted]]}}
}}
|text = This is a '''[[logo]]''' of an organization, item, or event, and is protected by [[copyright]]{{#ifeq:{{Yesno-no|{{{regtrademark}}}}}|yes| and [[trademark]]}}{{#ifeq:{{Yesno-no|{{{nonregtrademark}}}}}|yes| and [[trademark|a nonregistered trademark]]}}. The use of '''low-resolution''' images on the [[Main Page|English-language Wikipedia]], hosted on servers in the United States by the non-profit [[wmf:Home|Wikimedia Foundation]], of logos for certain uses involving identification and critical commentary may qualify as '''[[Wikipedia:Non-free content criteria|non-free use]]''' under the [[copyright law of the United States]]. '''Any other uses of this image, on Wikipedia or elsewhere, may be [[copyright infringement]].''' Certain commercial use of this image may also be trademark infringement. See [[Wikipedia:Non-free content]] and [[Wikipedia:Logos]].
Use of the logo here does not imply endorsement of the organization by Wikipedia or the [[Wikimedia Foundation]], nor vice versa.
<span class="licensetpl_short licensetpl_long" style="display: none">Fair use</span>
<span class="licensetpl_link" style="display: none">{{fullurl:{{FULLPAGENAME}}}}</span>
<span class="licensetpl_nonfree" style="display:none">true</span>
|below={{#ifeq:{{Yesno-no|{{{image_has_rationale|{{{image has rationale}}}}}}}}|yes|
{{file other|[[Category:Wikipedia non-free files with NFUR stated]]{{#ifeq:{{{auto|}}}|yes|[[Category:Wikipedia non-free files with NFUR stated (bot-assessed)]]}}}}
|{{Uploader information|additional notes=
# This tag is only for use on images of logos.
# '''[[Template:Non-free use rationale logo]]''' may be helpful for stating the rationale.
# Please do not use this template to tag non-free icons of computer software. Such items should be tagged with {{tl|Non-free computer icon}} template.
# '''Regarding uses other than in the original article:''' Check the [[Wikipedia:Non-free content criteria|non-free use criteria]] and do not assume that existing rationales can be simply copied and pasted, as they may not necessarily apply.
}} }}
}}
{{Non-free media}}<includeonly>{{file other|[[Category:All non-free logos]]{{#if:{{{1|}}}|[[Category:{{resolve category redirect|{{{1}}}}}]]}}}}</includeonly><noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE; INTERWIKIS GO TO WIKIDATA, THANK YOU! -->
</noinclude>
jeu9dx8z3vbv0ea92dzz4niuuuq9g01
374577
374576
2026-11-06T05:55:11Z
ChiK
1136
1 revision imported from [[:en:Template:Non-free_logo]]
374576
wikitext
text/x-wiki
{{Imbox
|type = license
|image = {{#ifeq:{{Yesno-no|{{{regtrademark}}}}}|yes
|[[File:NotCommons-emblem-registered-trademark.svg|50px|Registered trademark]]
|{{#ifeq:{{Yesno-no|{{{nonregtrademark}}}}}|yes|[[File:NotCommons-emblem-nonregistered-trademark.svg|50px|Non-registered trademark]]|[[File:NotCommons-emblem-copyrighted.svg|50px|Copyrighted]]}}
}}
|text = This is a '''[[logo]]''' of an organization, item, or event, and is protected by [[copyright]]{{#ifeq:{{Yesno-no|{{{regtrademark}}}}}|yes| and [[trademark]]}}{{#ifeq:{{Yesno-no|{{{nonregtrademark}}}}}|yes| and [[trademark|a nonregistered trademark]]}}. The use of '''low-resolution''' images on the [[Main Page|English-language Wikipedia]], hosted on servers in the United States by the non-profit [[wmf:Home|Wikimedia Foundation]], of logos for certain uses involving identification and critical commentary may qualify as '''[[Wikipedia:Non-free content criteria|non-free use]]''' under the [[copyright law of the United States]]. '''Any other uses of this image, on Wikipedia or elsewhere, may be [[copyright infringement]].''' Certain commercial use of this image may also be trademark infringement. See [[Wikipedia:Non-free content]] and [[Wikipedia:Logos]].
Use of the logo here does not imply endorsement of the organization by Wikipedia or the [[Wikimedia Foundation]], nor vice versa.
<span class="licensetpl_short licensetpl_long" style="display: none">Fair use</span>
<span class="licensetpl_link" style="display: none">{{fullurl:{{FULLPAGENAME}}}}</span>
<span class="licensetpl_nonfree" style="display:none">true</span>
|below={{#ifeq:{{Yesno-no|{{{image_has_rationale|{{{image has rationale}}}}}}}}|yes|
{{file other|[[Category:Wikipedia non-free files with NFUR stated]]{{#ifeq:{{{auto|}}}|yes|[[Category:Wikipedia non-free files with NFUR stated (bot-assessed)]]}}}}
|{{Uploader information|additional notes=
# This tag is only for use on images of logos.
# '''[[Template:Non-free use rationale logo]]''' may be helpful for stating the rationale.
# Please do not use this template to tag non-free icons of computer software. Such items should be tagged with {{tl|Non-free computer icon}} template.
# '''Regarding uses other than in the original article:''' Check the [[Wikipedia:Non-free content criteria|non-free use criteria]] and do not assume that existing rationales can be simply copied and pasted, as they may not necessarily apply.
}} }}
}}
{{Non-free media}}<includeonly>{{file other|[[Category:All non-free logos]]{{#if:{{{1|}}}|[[Category:{{resolve category redirect|{{{1}}}}}]]}}}}</includeonly><noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE; INTERWIKIS GO TO WIKIDATA, THANK YOU! -->
</noinclude>
jeu9dx8z3vbv0ea92dzz4niuuuq9g01
ಟೆಂಪ್ಲೇಟ್:Mdash
10
29316
374580
2020-08-11T01:19:29Z
en>Mdaniels5757
0
Modifying [[WP:RCAT|redirect categories]] using [[User:Wugapodes/Capricorn|Capricorn ♑]]
374580
wikitext
text/x-wiki
#REDIRECT [[Template:Em dash]]
{{Redirect category shell|
{{R from short name}}
}}
0zf2wrlu3u2vokjq926t29naowtz117
374581
374580
2026-11-06T05:55:12Z
ChiK
1136
1 revision imported from [[:en:Template:Mdash]]
374580
wikitext
text/x-wiki
#REDIRECT [[Template:Em dash]]
{{Redirect category shell|
{{R from short name}}
}}
0zf2wrlu3u2vokjq926t29naowtz117
ಟೆಂಪ್ಲೇಟ್:Non-free logo/doc
10
29317
374582
2025-05-05T03:59:23Z
en>LlywelynII
0
374582
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-risk}}
Place this template in the file description pages of non-free [[Wikipedia:Logos|logos]]. Do not use this template for [[Wikipedia:Logos#Copyright-free logos|copyright-free logos]].
[[Wikipedia:Transclusion|Transcluding]] this template in a file description page will automatically include the page in [[:Category:All non-free logos]]. It may also be used to add ''one'' other category—see [[:Category:Wikipedia images of logos]] for potential category options—as follows:
:<code><nowiki>{{</nowiki>Non-free logo|''Add category name here and omit the 'Category:' prefix''}}</code>
If the category name is redirected, e.g. after renaming or merging, this template will resolve the redirect i.e. put the image page in the target category rather than the redirected category.
===Registered trademarks===
If the image is also a registered trademark, include the <code>regtrademark=yes</code> parameter as shown below:
:<code><nowiki>{{Non-free logo|regtrademark=yes}}</nowiki></code>
If the image is a non-registered trademark, add <code>nonregtrademark=yes</code> as shown below:
:<code><nowiki>{{Non-free logo|nonregtrademark=yes}}</nowiki></code>
===See also===
*{{tl|Non-free use rationale logo}} {{mdash}} Non-free use media rationale (Non-Free logo)
*{{tl|PD-textlogo}} {{mdash}} A template for tagging copyright-free logos
* {{tl|Trademark}} {{mdash}} A template for tagging logos protected by trademark instead of or in addition to copyright
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:All non-free logos| ]]
[[Category:Wikipedia non-free file copyright templates|Logo]]
}}</includeonly>
1fl6yxnznfe4882l7rlhqkzpf237fjl
374583
374582
2026-11-06T05:55:12Z
ChiK
1136
1 revision imported from [[:en:Template:Non-free_logo/doc]]
374582
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-risk}}
Place this template in the file description pages of non-free [[Wikipedia:Logos|logos]]. Do not use this template for [[Wikipedia:Logos#Copyright-free logos|copyright-free logos]].
[[Wikipedia:Transclusion|Transcluding]] this template in a file description page will automatically include the page in [[:Category:All non-free logos]]. It may also be used to add ''one'' other category—see [[:Category:Wikipedia images of logos]] for potential category options—as follows:
:<code><nowiki>{{</nowiki>Non-free logo|''Add category name here and omit the 'Category:' prefix''}}</code>
If the category name is redirected, e.g. after renaming or merging, this template will resolve the redirect i.e. put the image page in the target category rather than the redirected category.
===Registered trademarks===
If the image is also a registered trademark, include the <code>regtrademark=yes</code> parameter as shown below:
:<code><nowiki>{{Non-free logo|regtrademark=yes}}</nowiki></code>
If the image is a non-registered trademark, add <code>nonregtrademark=yes</code> as shown below:
:<code><nowiki>{{Non-free logo|nonregtrademark=yes}}</nowiki></code>
===See also===
*{{tl|Non-free use rationale logo}} {{mdash}} Non-free use media rationale (Non-Free logo)
*{{tl|PD-textlogo}} {{mdash}} A template for tagging copyright-free logos
* {{tl|Trademark}} {{mdash}} A template for tagging logos protected by trademark instead of or in addition to copyright
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:All non-free logos| ]]
[[Category:Wikipedia non-free file copyright templates|Logo]]
}}</includeonly>
1fl6yxnznfe4882l7rlhqkzpf237fjl
ಟೆಂಪ್ಲೇಟ್:Non-free use rationale 2
10
29318
374586
2024-02-06T17:02:12Z
en>Neveselbert
0
Added {{[[Template:Redirect category shell|Redirect category shell]]}} to redirect
374586
wikitext
text/x-wiki
#REDIRECT [[Template:Non-free use rationale]]
{{Redirect category shell|
{{r from merge}}
}}
2uhcwgv1vstbvf9axj3n8afr3rb9g8y
374587
374586
2026-11-06T05:55:55Z
ChiK
1136
1 revision imported from [[:en:Template:Non-free_use_rationale_2]]
374586
wikitext
text/x-wiki
#REDIRECT [[Template:Non-free use rationale]]
{{Redirect category shell|
{{r from merge}}
}}
2uhcwgv1vstbvf9axj3n8afr3rb9g8y
ಟೆಂಪ್ಲೇಟ್:Protected template
10
29319
374590
2026-11-05T08:41:02Z
en>RMCD bot
0
Removing notice of move discussion
374590
wikitext
text/x-wiki
<includeonly>{{#invoke:Protected page|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
be35s04n7ulj8q1ihft9660mipq8pnb
374591
374590
2026-11-06T05:55:56Z
ChiK
1136
1 revision imported from [[:en:Template:Protected_template]]
374590
wikitext
text/x-wiki
<includeonly>{{#invoke:Protected page|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
be35s04n7ulj8q1ihft9660mipq8pnb
ಟೆಂಪ್ಲೇಟ್:Non-free use rationale
10
29320
374592
2026-10-20T20:28:25Z
en>Paine Ellsworth
0
per edit request on talk page - include lowercase parameter options
374592
wikitext
text/x-wiki
<templatestyles src="Non-free use rationale/styles.css"/>
{| class="licensetpl fileinfotpl fileinfotpl-type-fairuse nfur {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|nfur-2}}"
|+ <div>{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|Media data and [[Wikipedia:Non-free content|Non-free use]] rationale|[[Wikipedia:Non-free content|Non-free]] media information and [[Wikipedia:Non-free use rationale guideline|use rationale]] {{{Special_header|{{{special_header|}}}}}} <span class="licensetpl_nonfree nfur-nonfree">true</span> {{
#if:{{{Article|}}} | {{
#ifexist: {{{Article}}} | for [[{{{Article}}}]] {{file other|
{{#ifeq:{{#invoke:redirect|isRedirect|{{{Article}}}}}|yes
| [[Category:Wikipedia non-free files with redirect backlink]]
}} [[Category:Wikipedia non-free files with valid backlink|{{PAGENAME}}]]
}}
| <span class="nfur-bad-article">– WARNING: <code>{{{Article}}}</code> does not appear to exist!</span><div class="nfur-exact">Check capitalization. Enter only the exact title of a <em>single</em> article with <em>no</em> <nowiki>[[link brackets]]</nowiki> or other formatting. It is also possible the indicated article was deleted.</div>{{file other|[[Category:Wikipedia non-free files with red backlink|{{PAGENAME}}]]|}}
}}
| <span class="nfur-bad-article">– NEEDS ARTICLE NAME</span>{{file other|[[Category:Wikipedia non-free files lacking article backlink|{{PAGENAME}}]]|}}
}}<noinclude><!--
--><div style="font-size:smaller">Please read [[Wikipedia:Non-free use rationale guideline]] before using this template.</div></noinclude>}}</div>
|- id="fileinfotpl_desc"
! scope="row" | Description
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Description|{{{description|<noinclude>{{{Description}}}</noinclude>}}}}}}
|-
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" id="fileinfotpl_aut" {{!}} Author or<br />copyright owner
{{!}} {{{Author|{{{author|}}}}}}
{{!}}-
}}
! scope="row" id="fileinfotpl_src" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="must have been published or publicly displayed outside Wikipedia">Source</span> <small>([[Wikipedia:Non-free content criteria#4|WP:NFCC#4]])</small>|[[Template:Non-free use rationale#note-source|Source]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Source|{{{source|<noinclude>{{{Source}}}</noinclude>}}}}}}|{{{Source|{{{source|<noinclude>{{{Source}}}</noinclude>}}}}}}|{{file other|[[Category:Wikipedia files with unknown source|{{PAGENAME}}]]|}} <span class="nfur-error">No source specified. Please edit this file description and [[Wikipedia:Citing sources#Multimedia|provide a source]]. <small>([[Template:Non-free use rationale 2|get help with syntax]])</small></span>}}
|-
{{#if:{{{Publication|{{{publication|}}}}}}|
! scope="row" {{!}} Publication
{{!}} {{{Publication|{{{publication|}}}}}}
{{!}}-
}}
{{#if:{{{Date|{{{date|}}}}}}|
! scope="row" {{!}} Date of publication
{{!}} {{{Date|{{{date|}}}}}}
{{!}}-
}}
! scope="row" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="must be used in an article, and only in mainspace">Use in article</span> <small>([[Wikipedia:Non-free content criteria#7|WP:NFCC#7]])</small>|[[Template:Non-free use rationale#note-article|Article]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Article|{{{article|<noinclude>{{{Article}}}</noinclude>}}}}}}
| {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|'''}}[[{{{Article|{{{article|<noinclude>{{{Article}}}</noinclude>}}}}}}]]{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|'''}} <includeonly>{{
#ifeq:{{NAMESPACE}} | {{ns:file}} | {{
#ifexist:{{{Article|{{{article}}}}}}
| {{#ifeq:{{#invoke:redirect|isRedirect|{{{Article|{{{article|}}}}}}}}|yes
| [[Category:Wikipedia non-free files with redirect backlink]]}}
| [[Category:Wikipedia non-free files with red backlink|{{PAGENAME}}]]
}}}}</includeonly>
| <includeonly>{{#ifeq: {{NAMESPACE}} | {{ns:file}}
| [[Category:Wikipedia non-free files lacking article backlink|{{PAGENAME}}]]
}}</includeonly> <span class="nfur-error">No article specified. Please edit this file description and add the name of the article the file is used in. <small>([[Template:Non-free use rationale 2|get help with syntax]])</small></span>}}
|-
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-portion|Portion used]]
{{!}} <!--Deliberate line break-->
{{{Portion|{{{portion|<noinclude>{{{Portion}}}</noinclude>}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-resolution|Low resolution?]]
{{!}} <!--Deliberate line break-->
{{{Resolution|{{{Low_resolution|{{{low_resolution|{{{Low resolution|<noinclude>{{{Low resolution}}}</noinclude>}}}}}}}}}}}}
{{!}}-
}}
! scope="row" {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} <span title="must significantly increase readers' understanding of the topic">Purpose of use in article</span> <small>([[Wikipedia:Non-free content criteria#8|WP:NFCC#8]])</small>|class="nowrap" {{!}} [[Template:Non-free use rationale#note-purpose|Purpose of use]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Purpose|{{{purpose|<noinclude>{{{Purpose}}}</noinclude>}}}}}}|{{{Purpose|{{{purpose|<noinclude>{{{Purpose}}}</noinclude>}}}}}}|<span class="nfur-error">No purpose specified. Please edit this image description and provide a purpose.</span>{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale template with no Purpose specified]]|}}}}
|-
! scope="row" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="Why could no free equivalent be found or created that would serve the same encyclopedic purpose?">Not replaceable with<br />free media because</span> <small>([[Wikipedia:Non-free content criteria#1|WP:NFCC#1]])</small>|[[Template:Non-free use rationale#note-replace|Replaceable?]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Replaceability|{{{replaceability|<noinclude>{{{Replaceability}}}</noinclude>}}}}}}
|-
{{#if:{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}|
! scope="row" {{!}} <span title="Why could the topic not be adequately covered by text alone?">Not replaceable with<br />textual coverage because</span> <small>([[Wikipedia:Non-free content criteria#1|WP:NFCC#1]])</small>
{{!}} {{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" {{!}} <span title="No more non-free items than necessary, no larger portions of a work than necessary, no higher resolution than necessary">Minimal use</span> <small>([[Wikipedia:Non-free content criteria#3|WP:NFCC#3]])</small>
{{!}} {{{Minimality|{{{minimality|}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" {{!}} <span title="Must not be used in a manner likely to replace the work's original market role">Respect for <br />commercial opportunities</span> <small>([[Wikipedia:Non-free content criteria#2|WP:NFCC#2]])</small>
{{!}} {{{Commercial|{{{commercial|}}}}}}
{{!}}-
}}
{{#if:{{{Other information|{{{other information|{{{other_information|{{{Other_information|<noinclude>{{{Other information}}}</noinclude>}}}}}}}}}}}}|
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-other|Other information]]
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Other information|{{{other information|{{{other_information|{{{Other_information|<noinclude>{{{Other information}}} (optional)</noinclude>}}}}}}}}}}}}
}}
|- class="nfur-fairuse"
| colspan="2" | <span class="licensetpl_short">Fair use</span><span class="licensetpl_long">[[Wikipedia:Non-free use rationale guideline|Fair use]] of copyrighted material in the context of [[{{{Article}}}]]</span><span class="licensetpl_link">{{fullurl:{{FULLPAGENAME}}}}</span><span class="licensetpl_nonfree nfur-nonfree">true</span>
|}{{Non-free media|metadata=no}}{{#ifexpr:{{#invoke:string2|matchAny|source={{lc:{{{Replaceability|{{{replaceability|}}}}}}{{{Commercial|{{{commercial|}}}}}}}}|n.a.|n/a}}|[[Category:Non-free rationale as na]]}}{{#invoke:Check for unknown parameters|check|unknown=[[Category:Pages using non-free use rationale with unknown parameters|_VALUE_{{PAGENAME}}]]|preview=Page using [[Template:Non-free use rationale]] with unknown parameter "_VALUE_"|ignoreblank=y| Article | article | author | Author | commercial | Commercial | date | Date | description | Description | low_resolution | Low resolution | Low_resolution | minimality | Minimality | other information | Other information | Other_information | other_information | portion | Portion | publication | Publication | Purpose | purpose | replaceability | Replaceability | replaceability text | replaceability_text | Replaceability_text | Resolution | source | Source | special_header | Special_header }}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
i2topt2d83oi939jegteie84am9cn00
374593
374592
2026-11-06T05:56:15Z
ChiK
1136
1 revision imported from [[:en:Template:Non-free_use_rationale]]
374592
wikitext
text/x-wiki
<templatestyles src="Non-free use rationale/styles.css"/>
{| class="licensetpl fileinfotpl fileinfotpl-type-fairuse nfur {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|nfur-2}}"
|+ <div>{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|Media data and [[Wikipedia:Non-free content|Non-free use]] rationale|[[Wikipedia:Non-free content|Non-free]] media information and [[Wikipedia:Non-free use rationale guideline|use rationale]] {{{Special_header|{{{special_header|}}}}}} <span class="licensetpl_nonfree nfur-nonfree">true</span> {{
#if:{{{Article|}}} | {{
#ifexist: {{{Article}}} | for [[{{{Article}}}]] {{file other|
{{#ifeq:{{#invoke:redirect|isRedirect|{{{Article}}}}}|yes
| [[Category:Wikipedia non-free files with redirect backlink]]
}} [[Category:Wikipedia non-free files with valid backlink|{{PAGENAME}}]]
}}
| <span class="nfur-bad-article">– WARNING: <code>{{{Article}}}</code> does not appear to exist!</span><div class="nfur-exact">Check capitalization. Enter only the exact title of a <em>single</em> article with <em>no</em> <nowiki>[[link brackets]]</nowiki> or other formatting. It is also possible the indicated article was deleted.</div>{{file other|[[Category:Wikipedia non-free files with red backlink|{{PAGENAME}}]]|}}
}}
| <span class="nfur-bad-article">– NEEDS ARTICLE NAME</span>{{file other|[[Category:Wikipedia non-free files lacking article backlink|{{PAGENAME}}]]|}}
}}<noinclude><!--
--><div style="font-size:smaller">Please read [[Wikipedia:Non-free use rationale guideline]] before using this template.</div></noinclude>}}</div>
|- id="fileinfotpl_desc"
! scope="row" | Description
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Description|{{{description|<noinclude>{{{Description}}}</noinclude>}}}}}}
|-
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" id="fileinfotpl_aut" {{!}} Author or<br />copyright owner
{{!}} {{{Author|{{{author|}}}}}}
{{!}}-
}}
! scope="row" id="fileinfotpl_src" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="must have been published or publicly displayed outside Wikipedia">Source</span> <small>([[Wikipedia:Non-free content criteria#4|WP:NFCC#4]])</small>|[[Template:Non-free use rationale#note-source|Source]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Source|{{{source|<noinclude>{{{Source}}}</noinclude>}}}}}}|{{{Source|{{{source|<noinclude>{{{Source}}}</noinclude>}}}}}}|{{file other|[[Category:Wikipedia files with unknown source|{{PAGENAME}}]]|}} <span class="nfur-error">No source specified. Please edit this file description and [[Wikipedia:Citing sources#Multimedia|provide a source]]. <small>([[Template:Non-free use rationale 2|get help with syntax]])</small></span>}}
|-
{{#if:{{{Publication|{{{publication|}}}}}}|
! scope="row" {{!}} Publication
{{!}} {{{Publication|{{{publication|}}}}}}
{{!}}-
}}
{{#if:{{{Date|{{{date|}}}}}}|
! scope="row" {{!}} Date of publication
{{!}} {{{Date|{{{date|}}}}}}
{{!}}-
}}
! scope="row" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="must be used in an article, and only in mainspace">Use in article</span> <small>([[Wikipedia:Non-free content criteria#7|WP:NFCC#7]])</small>|[[Template:Non-free use rationale#note-article|Article]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Article|{{{article|<noinclude>{{{Article}}}</noinclude>}}}}}}
| {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|'''}}[[{{{Article|{{{article|<noinclude>{{{Article}}}</noinclude>}}}}}}]]{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|'''}} <includeonly>{{
#ifeq:{{NAMESPACE}} | {{ns:file}} | {{
#ifexist:{{{Article|{{{article}}}}}}
| {{#ifeq:{{#invoke:redirect|isRedirect|{{{Article|{{{article|}}}}}}}}|yes
| [[Category:Wikipedia non-free files with redirect backlink]]}}
| [[Category:Wikipedia non-free files with red backlink|{{PAGENAME}}]]
}}}}</includeonly>
| <includeonly>{{#ifeq: {{NAMESPACE}} | {{ns:file}}
| [[Category:Wikipedia non-free files lacking article backlink|{{PAGENAME}}]]
}}</includeonly> <span class="nfur-error">No article specified. Please edit this file description and add the name of the article the file is used in. <small>([[Template:Non-free use rationale 2|get help with syntax]])</small></span>}}
|-
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-portion|Portion used]]
{{!}} <!--Deliberate line break-->
{{{Portion|{{{portion|<noinclude>{{{Portion}}}</noinclude>}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-resolution|Low resolution?]]
{{!}} <!--Deliberate line break-->
{{{Resolution|{{{Low_resolution|{{{low_resolution|{{{Low resolution|<noinclude>{{{Low resolution}}}</noinclude>}}}}}}}}}}}}
{{!}}-
}}
! scope="row" {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} <span title="must significantly increase readers' understanding of the topic">Purpose of use in article</span> <small>([[Wikipedia:Non-free content criteria#8|WP:NFCC#8]])</small>|class="nowrap" {{!}} [[Template:Non-free use rationale#note-purpose|Purpose of use]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Purpose|{{{purpose|<noinclude>{{{Purpose}}}</noinclude>}}}}}}|{{{Purpose|{{{purpose|<noinclude>{{{Purpose}}}</noinclude>}}}}}}|<span class="nfur-error">No purpose specified. Please edit this image description and provide a purpose.</span>{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale template with no Purpose specified]]|}}}}
|-
! scope="row" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="Why could no free equivalent be found or created that would serve the same encyclopedic purpose?">Not replaceable with<br />free media because</span> <small>([[Wikipedia:Non-free content criteria#1|WP:NFCC#1]])</small>|[[Template:Non-free use rationale#note-replace|Replaceable?]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Replaceability|{{{replaceability|<noinclude>{{{Replaceability}}}</noinclude>}}}}}}
|-
{{#if:{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}|
! scope="row" {{!}} <span title="Why could the topic not be adequately covered by text alone?">Not replaceable with<br />textual coverage because</span> <small>([[Wikipedia:Non-free content criteria#1|WP:NFCC#1]])</small>
{{!}} {{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" {{!}} <span title="No more non-free items than necessary, no larger portions of a work than necessary, no higher resolution than necessary">Minimal use</span> <small>([[Wikipedia:Non-free content criteria#3|WP:NFCC#3]])</small>
{{!}} {{{Minimality|{{{minimality|}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" {{!}} <span title="Must not be used in a manner likely to replace the work's original market role">Respect for <br />commercial opportunities</span> <small>([[Wikipedia:Non-free content criteria#2|WP:NFCC#2]])</small>
{{!}} {{{Commercial|{{{commercial|}}}}}}
{{!}}-
}}
{{#if:{{{Other information|{{{other information|{{{other_information|{{{Other_information|<noinclude>{{{Other information}}}</noinclude>}}}}}}}}}}}}|
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-other|Other information]]
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Other information|{{{other information|{{{other_information|{{{Other_information|<noinclude>{{{Other information}}} (optional)</noinclude>}}}}}}}}}}}}
}}
|- class="nfur-fairuse"
| colspan="2" | <span class="licensetpl_short">Fair use</span><span class="licensetpl_long">[[Wikipedia:Non-free use rationale guideline|Fair use]] of copyrighted material in the context of [[{{{Article}}}]]</span><span class="licensetpl_link">{{fullurl:{{FULLPAGENAME}}}}</span><span class="licensetpl_nonfree nfur-nonfree">true</span>
|}{{Non-free media|metadata=no}}{{#ifexpr:{{#invoke:string2|matchAny|source={{lc:{{{Replaceability|{{{replaceability|}}}}}}{{{Commercial|{{{commercial|}}}}}}}}|n.a.|n/a}}|[[Category:Non-free rationale as na]]}}{{#invoke:Check for unknown parameters|check|unknown=[[Category:Pages using non-free use rationale with unknown parameters|_VALUE_{{PAGENAME}}]]|preview=Page using [[Template:Non-free use rationale]] with unknown parameter "_VALUE_"|ignoreblank=y| Article | article | author | Author | commercial | Commercial | date | Date | description | Description | low_resolution | Low resolution | Low_resolution | minimality | Minimality | other information | Other information | Other_information | other_information | portion | Portion | publication | Publication | Purpose | purpose | replaceability | Replaceability | replaceability text | replaceability_text | Replaceability_text | Resolution | source | Source | special_header | Special_header }}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
i2topt2d83oi939jegteie84am9cn00
374606
374593
2026-11-06T06:40:30Z
ChiK
1136
374606
wikitext
text/x-wiki
<templatestyles src="Non-free use rationale/styles.css"/>
{| class="licensetpl fileinfotpl fileinfotpl-type-fairuse nfur {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|nfur-2}}"
|+ <div>{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|Media data and [[Wikipedia:Non-free content|Non-free use]] rationale|[[Wikipedia:Non-free content|Non-free]] media information and [[Wikipedia:Non-free use rationale guideline|use rationale]] {{{Special_header|{{{special_header|}}}}}} <span class="licensetpl_nonfree nfur-nonfree">true</span> {{
#if:{{{Article|}}} | {{
#ifexist: {{{Article}}} | for [[{{{Article}}}]] {{file other|
{{#ifeq:{{#invoke:redirect|isRedirect|{{{Article}}}}}|yes
| [[Category:Wikipedia non-free files with redirect backlink]]
}} [[Category:Wikipedia non-free files with valid backlink|{{PAGENAME}}]]
}}
| <span class="nfur-bad-article">– WARNING: <code>{{{Article}}}</code> does not appear to exist!</span><div class="nfur-exact">Check capitalization. Enter only the exact title of a <em>single</em> article with <em>no</em> <nowiki>[[link brackets]]</nowiki> or other formatting. It is also possible the indicated article was deleted.</div>{{file other|[[Category:Wikipedia non-free files with red backlink|{{PAGENAME}}]]|}}
}}
| <span class="nfur-bad-article">– NEEDS ARTICLE NAME</span>{{file other|[[Category:Wikipedia non-free files lacking article backlink|{{PAGENAME}}]]|}}
}}<noinclude><!--
--><div style="font-size:smaller">Please read [[Wikipedia:Non-free use rationale guideline]] before using this template.</div></noinclude>}}</div>
|- id="fileinfotpl_desc"
! scope="row" | ವಿವರಣೆ
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Description|{{{description|<noinclude>{{{Description}}}</noinclude>}}}}}}
|-
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" id="fileinfotpl_aut" {{!}} Author or<br />copyright owner
{{!}} {{{Author|{{{author|}}}}}}
{{!}}-
}}
! scope="row" id="fileinfotpl_src" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="must have been published or publicly displayed outside Wikipedia">Source</span> <small>([[Wikipedia:Non-free content criteria#4|WP:NFCC#4]])</small>|[[Template:Non-free use rationale#note-source|Source]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Source|{{{source|<noinclude>{{{Source}}}</noinclude>}}}}}}|{{{Source|{{{source|<noinclude>{{{Source}}}</noinclude>}}}}}}|{{file other|[[Category:Wikipedia files with unknown source|{{PAGENAME}}]]|}} <span class="nfur-error">No source specified. Please edit this file description and [[Wikipedia:Citing sources#Multimedia|provide a source]]. <small>([[Template:Non-free use rationale 2|get help with syntax]])</small></span>}}
|-
{{#if:{{{Publication|{{{publication|}}}}}}|
! scope="row" {{!}} Publication
{{!}} {{{Publication|{{{publication|}}}}}}
{{!}}-
}}
{{#if:{{{Date|{{{date|}}}}}}|
! scope="row" {{!}} Date of publication
{{!}} {{{Date|{{{date|}}}}}}
{{!}}-
}}
! scope="row" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="must be used in an article, and only in mainspace">Use in article</span> <small>([[Wikipedia:Non-free content criteria#7|WP:NFCC#7]])</small>|[[Template:Non-free use rationale#note-article|Article]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Article|{{{article|<noinclude>{{{Article}}}</noinclude>}}}}}}
| {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|'''}}[[{{{Article|{{{article|<noinclude>{{{Article}}}</noinclude>}}}}}}]]{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|'''}} <includeonly>{{
#ifeq:{{NAMESPACE}} | {{ns:file}} | {{
#ifexist:{{{Article|{{{article}}}}}}
| {{#ifeq:{{#invoke:redirect|isRedirect|{{{Article|{{{article|}}}}}}}}|yes
| [[Category:Wikipedia non-free files with redirect backlink]]}}
| [[Category:Wikipedia non-free files with red backlink|{{PAGENAME}}]]
}}}}</includeonly>
| <includeonly>{{#ifeq: {{NAMESPACE}} | {{ns:file}}
| [[Category:Wikipedia non-free files lacking article backlink|{{PAGENAME}}]]
}}</includeonly> <span class="nfur-error">No article specified. Please edit this file description and add the name of the article the file is used in. <small>([[Template:Non-free use rationale 2|get help with syntax]])</small></span>}}
|-
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-portion|Portion used]]
{{!}} <!--Deliberate line break-->
{{{Portion|{{{portion|<noinclude>{{{Portion}}}</noinclude>}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-resolution|Low resolution?]]
{{!}} <!--Deliberate line break-->
{{{Resolution|{{{Low_resolution|{{{low_resolution|{{{Low resolution|<noinclude>{{{Low resolution}}}</noinclude>}}}}}}}}}}}}
{{!}}-
}}
! scope="row" {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} <span title="must significantly increase readers' understanding of the topic">Purpose of use in article</span> <small>([[Wikipedia:Non-free content criteria#8|WP:NFCC#8]])</small>|class="nowrap" {{!}} [[Template:Non-free use rationale#note-purpose|Purpose of use]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{#if:{{{Purpose|{{{purpose|<noinclude>{{{Purpose}}}</noinclude>}}}}}}|{{{Purpose|{{{purpose|<noinclude>{{{Purpose}}}</noinclude>}}}}}}|<span class="nfur-error">No purpose specified. Please edit this image description and provide a purpose.</span>{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale template with no Purpose specified]]|}}}}
|-
! scope="row" | {{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|<span title="Why could no free equivalent be found or created that would serve the same encyclopedic purpose?">Not replaceable with<br />free media because</span> <small>([[Wikipedia:Non-free content criteria#1|WP:NFCC#1]])</small>|[[Template:Non-free use rationale#note-replace|Replaceable?]]}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Replaceability|{{{replaceability|<noinclude>{{{Replaceability}}}</noinclude>}}}}}}
|-
{{#if:{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}|
! scope="row" {{!}} <span title="Why could the topic not be adequately covered by text alone?">Not replaceable with<br />textual coverage because</span> <small>([[Wikipedia:Non-free content criteria#1|WP:NFCC#1]])</small>
{{!}} {{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" {{!}} <span title="No more non-free items than necessary, no larger portions of a work than necessary, no higher resolution than necessary">Minimal use</span> <small>([[Wikipedia:Non-free content criteria#3|WP:NFCC#3]])</small>
{{!}} {{{Minimality|{{{minimality|}}}}}}
{{!}}-
}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|
! scope="row" {{!}} <span title="Must not be used in a manner likely to replace the work's original market role">Respect for <br />commercial opportunities</span> <small>([[Wikipedia:Non-free content criteria#2|WP:NFCC#2]])</small>
{{!}} {{{Commercial|{{{commercial|}}}}}}
{{!}}-
}}
{{#if:{{{Other information|{{{other information|{{{other_information|{{{Other_information|<noinclude>{{{Other information}}}</noinclude>}}}}}}}}}}}}|
! scope="row" class="nowrap" {{!}} [[Template:Non-free use rationale#note-other|Other information]]
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}||{{!}} <!--Deliberate line break-->}}
{{#if:{{{Author|{{{author|}}}}}}{{{Publication|{{{publication|}}}}}}{{{Date|{{{date|}}}}}}{{{Replaceability_text|{{{replaceability_text|{{{replaceability text|}}}}}}}}}{{{Minimality|{{{minimality|}}}}}}{{{Commercial|{{{commercial|}}}}}}|{{!}} }}{{{Other information|{{{other information|{{{other_information|{{{Other_information|<noinclude>{{{Other information}}} (optional)</noinclude>}}}}}}}}}}}}
}}
|- class="nfur-fairuse"
| colspan="2" | <span class="licensetpl_short">Fair use</span><span class="licensetpl_long">[[Wikipedia:Non-free use rationale guideline|Fair use]] of copyrighted material in the context of [[{{{Article}}}]]</span><span class="licensetpl_link">{{fullurl:{{FULLPAGENAME}}}}</span><span class="licensetpl_nonfree nfur-nonfree">true</span>
|}{{Non-free media|metadata=no}}{{#ifexpr:{{#invoke:string2|matchAny|source={{lc:{{{Replaceability|{{{replaceability|}}}}}}{{{Commercial|{{{commercial|}}}}}}}}|n.a.|n/a}}|[[Category:Non-free rationale as na]]}}{{#invoke:Check for unknown parameters|check|unknown=[[Category:Pages using non-free use rationale with unknown parameters|_VALUE_{{PAGENAME}}]]|preview=Page using [[Template:Non-free use rationale]] with unknown parameter "_VALUE_"|ignoreblank=y| Article | article | author | Author | commercial | Commercial | date | Date | description | Description | low_resolution | Low resolution | Low_resolution | minimality | Minimality | other information | Other information | Other_information | other_information | portion | Portion | publication | Publication | Purpose | purpose | replaceability | Replaceability | replaceability text | replaceability_text | Replaceability_text | Resolution | source | Source | special_header | Special_header }}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
5p4kxm3f9ztocl6g003duo41ctzoz2g
ಟೆಂಪ್ಲೇಟ್:Non-free use rationale/doc
10
29321
374594
2026-10-20T20:32:12Z
en>Paine Ellsworth
0
High-use template
374594
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{High-risk}}
{{Lua|Module:Redirect}}
{{Uses TemplateStyles|Template:Non-free use rationale/styles.css}}
This template facilitates creating a non-free or fair use media rationale with the necessary components. Please read [[Wikipedia:Non-free use rationale guideline]] for the relevant policies.
This template is used by the [[Wikipedia:File Upload Wizard]]. Its parameter fields are designed to match the upload questionnaire and to correspond to the criteria defined in [[WP:NFCC]]. The upload wizard will fill in some fields with standard values, but will prompt for specific input in cases where rationale elements are typically not predictable and must be explained individually.
== Usage ==
If you want to use this template manually, you can find its parameters below. Don't forget to add a separate non-free file copyright tag, such as {{tl|Non-free fair use}}, {{tl|Non-free logo}}, {{tl|Non-free book cover}} etc.
<syntaxhighlight lang="wikitext">{{Non-free use rationale
<!--Obligatory fields-->
| Description =
| Author =
| Source =
| Article =
| Portion =
| Low resolution =
| Purpose =
| Replaceability =
| Minimality =
| Commercial =
<!--Optional/expert fields-->
| Date =
| Publication =
| Replaceability_text =
| Other information =
}}</syntaxhighlight>
;Description: A description of the copyrighted material.
;Author: The original author and/or copyright holder of the non-free work.
;Source: The ''immediate source'', i.e. where you found this file.
;Article: The exact name of the Wikipedia article in which the media is to be used (without the <nowiki>[[</nowiki> <nowiki>]]</nowiki> brackets).
;Portion: How much copyrighted material is used? The amount used must not make the work as a whole less valuable to the copyright holder.
;Low resolution: Is the material in a lower resolution that would be unlikely to impact the copyright owner's ability to resell or otherwise profit from the work? For [[raster images]], this would be strictly the [[image resolution|resolution]] (in pixels) of the picture used; for [[vector graphics]], this would involve the level of detail in the image; for audio, this would be the [[bit rate]] and [[sampling (signal processing)|sample resolution]] used.
;Purpose: What function this file will serve in the article. This explanation must make it clear how and why the file will significantly increase the reader's understanding of the topic, in such a way that its absence would be detrimental to the article (cf. [[WP:NFCC#8]]). Do not copy generic rationale verbiage from some templated rationales elsewhere. State in clear, plain words what this particular file will be doing in this particular article. Be specific and concrete.
;Replaceability: Why there couldn't be a freely licensed replacement that would adequately serve the same purpose (cf. [[WP:NFCC#1]]). Please bear in mind that this is not merely about replacements that actually exist and are readily available, but also about the mere possibility that such a replacement could realistically be created.
;Minimality: Add any necessary explanation how there won't be more non-free content used than necessary. Minimality means: Use low-resolution files rather than high-resolution files; don't use a larger portion of a work than necessary or an entire work if only a small portion would be sufficient; don't use more non-free items if a single one would be sufficient.
;Commercial: i.e. "Respect for commercial opportunities": explain why our use of the file will not unduly infringe on any commercial interests of its copyright holders, by competing with the work's original market role.
;Date: (optional) The date of publication.
;Publication: (optional) The ''original source'', i.e. where and how this non-free work was first published. Important in some cases where parts of the non-free use justification may depend on this information, e.g. in the case of some historical photographs.
;Replaceability_text: (optional) ''Note that though this template field has been implemented as optional, Wikipedia policy requires that its consideration is satisfied (see [[WP:NFCC#1]]).''<br/>If necessary,<ref>If in doubt, specific queries should be raised at [[Wikipedia talk:Non-free content]].</ref> explain why it wouldn't be possible to adequately treat the encyclopedic content with freely licensed files alone.
;Other information: (optional) any other information that is relevant to the sourcing, copyright information and non-free use justification.
{{reflist}}
== Example ==
<syntaxhighlight lang="wikitext" style="white-space:pre-wrap">
{{Non-free use rationale
| Description = Book cover of ''[[Strong Poison]]''.
| Source = Derived from a digital capture (photo/scan) of the book cover (creator of this digital version is irrelevant as the copyright in all equivalent images is still held by the same party). Copyright held by the publisher or the artist. Claimed as fair use regardless.
| Article = Strong Poison
| Portion = Book cover only, a small portion of the commercial product.
| Low resolution = Yes
| Purpose = The image serves as the primary means of visual identification of the subject (the book). It illustrates educational articles about the book from which the cover illustration was taken.
| Replaceability = There is no free equivalent of this book cover, so the image cannot be replaced by a free image.
| Other information = The use of the cover will not affect the value of the original work or limit the copyright holder's rights or ability to distribute the original. In particular, copies could not be used to make illegal copies of the book.
}}
</syntaxhighlight>
{{Non-free use rationale{{sandbox other|/sandbox}}
| Description = Book cover of ''[[Strong Poison]]''.
| Source = Derived from a digital capture (photo/scan) of the book cover (creator of this digital version is irrelevant as the copyright in all equivalent images is still held by the same party). Copyright held by the publisher or the artist. Claimed as fair use regardless.
| Article = Strong Poison
| Portion = Book cover only, a small portion of the commercial product.
| Low resolution = Yes
| Purpose = The image serves as the primary means of visual identification of the subject (the book). It illustrates educational articles about the book from which the cover illustration was taken.
| Replaceability = There is no free equivalent of this book cover, so the image cannot be replaced by a free image.
| Other information = The use of the cover will not affect the value of the original work or limit the copyright holder's rights or ability to distribute the original. In particular, copies could not be used to make illegal copies of the book.
}}
== See also ==
* For more specific rationale templates, look in [[:Category:Non-free use rationale templates]].
* A different approach is to use {{tl|Non-free media data}} combined with {{tl|Non-free media rationale}}, which is less clumsy in situations where an image is used in multiple articles.
* A derivation of this template, optimized for use on copyrighted logos, is {{tl|Non-free use rationale logo}} which automatically includes rationale text relevant to that use case.
* For free images, you may use {{tl|Information}}.
==Maintenance categories==
*{{clc|Pages using non-free use rationale with unknown parameters}}
== Tracking categories ==
This template uses the following tracking categories:
* [[:Category:Wikipedia files with unknown source]] - set if both the {{para|Source}} and {{para|source}} parameters are missing.
* [[:Category:Wikipedia non-free files lacking article backlink]] - set if both the {{para|Article}} and {{para|article}} parameters are missing.
* [[:Category:Wikipedia non-free files with red backlink]] - set if the title specified in {{para|Article}} is a redlink.
* [[:Category:Wikipedia non-free files with redirect backlink]] - set if the title specified in {{para|Article}} is a redirect.
==TemplateData==
{{TemplateDataHeader}}
<templatedata>
{
"description": "Template for images or content that can be uploaded via Wikipedia's fair use policy, meant to facilitate creating non-free use rationales with the necessary components. Please read Wikipedia:Non-free content for the relevant policies.\n\nThis template is used by the Wikipedia:File Upload Wizard. Its parameter fields are designed to match the data produced by the upload questionnaire. They are also designed to correspond to the original criteria as defined in WP:NFCC. The wizard will fill in some fields with standard values, but will prompt for specific input in those cases where rationale elements are typically not predictable and must be explained individually.",
"params": {
"Special_header": {},
"Description": {
"label": "Description",
"type": "string",
"required": true,
"description": "A description of the copyrighted material.",
"aliases": [
"description"
]
},
"Author": {
"label": "Author",
"type": "string",
"required": false,
"description": "The original author and/or copyright holder of the non-free work.",
"aliases": [
"author"
]
},
"Source": {
"label": "Source",
"type": "string",
"required": true,
"description": "The immediate source, i.e. where you found this file.",
"aliases": [
"source"
]
},
"Publication": {
"label": "Publication",
"type": "string",
"required": false,
"description": "The original source, i.e. where and how this non-free work was first published. Important in some cases where parts of the non-free use justification may depend on this information, e.g. in the case of some historical photographs.",
"aliases": [
"publication"
]
},
"Date": {
"label": "Date",
"type": "string",
"required": false,
"description": "The date of publication.",
"aliases": [
"date"
]
},
"Article": {
"label": "Article",
"type": "string",
"required": true,
"description": "The exact name of the Wikipedia article in which the media is to be used (without the [[ ]] brackets).",
"aliases": [
"article"
]
},
"Purpose": {
"label": "Purpose",
"type": "string",
"required": true,
"example": "This non-free art will be the primary form of identification of the subject of the article in the infobox used in the article.",
"description": "What function this file will serve in the article. This explanation must make it clear how and why the file will significantly increase the reader's understanding of the topic, in such a way that its absence would be detrimental to the article (cf. WP:NFCC#8). Do not copy generic rationale verbiage from some templated rationales elsewhere. State in clear, plain words what this particular file will be doing in this particular article. Be specific and concrete.",
"aliases": [
"purpose"
]
},
"Replaceability": {
"label": "Replaceability - Why not free image?",
"type": "string",
"required": true,
"example": "Because this work is non-free, any free substitute would either be a copyright violation or misinterpret the work.",
"description": "Why there couldn't be a freely licensed replacement that would adequately serve the same purpose (cf. WP:NFCC#1). Please bear in mind that this is not merely about replacements that actually exist and are readily available, but also about the mere possibility that such a replacement could realistically be created.",
"aliases": [
"replaceability"
]
},
"Replaceability_text": {
"label": "Replaceability - Why not just text?",
"type": "string",
"required": false,
"description": "If necessary, explain why it wouldn't be possible to adequately treat the encyclopedic content with freely licensed text alone. Note that though this template field has been implemented as optional, Wikipedia policy requires that its consideration is satisfied (see WP:NFCC#1).",
"aliases": [
"replaceability_text",
"replaceability text"
]
},
"Minimality": {
"label": "Minimal use",
"type": "string",
"required": true,
"description": "Add any necessary explanation how there won't be more non-free content used than necessary. Minimality means: Use low-resolution files rather than high-resolution files; don't use a larger portion of a work than necessary or an entire work if only a small portion would be sufficient; don't use more non-free items if a single one would be sufficient.",
"aliases": [
"minimality"
]
},
"Portion": {
"description": "The portion of the non-free file used",
"example": "The whole work is used to prevent misinterpreting the work",
"suggested": false
},
"Low resolution": {
"aliases": [
"Low_resolution",
"Resolution"
],
"description": "Indicate that this file has low resolution.",
"example": "This image's size and resolution is sufficient enough to provide identification of the work. But the low resolution would make it unsuitable for stolen versions and reproduction/replication elsewhere.",
"suggested": false
},
"Commercial": {
"label": "Respect for commercial opportunities",
"type": "string",
"required": true,
"description": "Explain why our use of the file will not unduly infringe on any commercial interests of its copyright holders, by competing with the work's original market role.",
"aliases": [
"commercial"
]
},
"Other information": {
"label": "Other info",
"type": "string",
"required": false,
"description": "Anything else that needs to be added?",
"aliases": [
"other information",
"Other_information",
"other_information"
]
}
},
"format": "block"
}
</templatedata>
<includeonly>{{Sandbox other|
| <!-- ADD CATEGORIES BELOW THIS LINE, PLEASE: -->
[[Category:Non-free use rationale templates]]
}}</includeonly>
03wldywpsk1fkjb3pspurhiz62abr4w
374595
374594
2026-11-06T05:56:16Z
ChiK
1136
1 revision imported from [[:en:Template:Non-free_use_rationale/doc]]
374594
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{High-risk}}
{{Lua|Module:Redirect}}
{{Uses TemplateStyles|Template:Non-free use rationale/styles.css}}
This template facilitates creating a non-free or fair use media rationale with the necessary components. Please read [[Wikipedia:Non-free use rationale guideline]] for the relevant policies.
This template is used by the [[Wikipedia:File Upload Wizard]]. Its parameter fields are designed to match the upload questionnaire and to correspond to the criteria defined in [[WP:NFCC]]. The upload wizard will fill in some fields with standard values, but will prompt for specific input in cases where rationale elements are typically not predictable and must be explained individually.
== Usage ==
If you want to use this template manually, you can find its parameters below. Don't forget to add a separate non-free file copyright tag, such as {{tl|Non-free fair use}}, {{tl|Non-free logo}}, {{tl|Non-free book cover}} etc.
<syntaxhighlight lang="wikitext">{{Non-free use rationale
<!--Obligatory fields-->
| Description =
| Author =
| Source =
| Article =
| Portion =
| Low resolution =
| Purpose =
| Replaceability =
| Minimality =
| Commercial =
<!--Optional/expert fields-->
| Date =
| Publication =
| Replaceability_text =
| Other information =
}}</syntaxhighlight>
;Description: A description of the copyrighted material.
;Author: The original author and/or copyright holder of the non-free work.
;Source: The ''immediate source'', i.e. where you found this file.
;Article: The exact name of the Wikipedia article in which the media is to be used (without the <nowiki>[[</nowiki> <nowiki>]]</nowiki> brackets).
;Portion: How much copyrighted material is used? The amount used must not make the work as a whole less valuable to the copyright holder.
;Low resolution: Is the material in a lower resolution that would be unlikely to impact the copyright owner's ability to resell or otherwise profit from the work? For [[raster images]], this would be strictly the [[image resolution|resolution]] (in pixels) of the picture used; for [[vector graphics]], this would involve the level of detail in the image; for audio, this would be the [[bit rate]] and [[sampling (signal processing)|sample resolution]] used.
;Purpose: What function this file will serve in the article. This explanation must make it clear how and why the file will significantly increase the reader's understanding of the topic, in such a way that its absence would be detrimental to the article (cf. [[WP:NFCC#8]]). Do not copy generic rationale verbiage from some templated rationales elsewhere. State in clear, plain words what this particular file will be doing in this particular article. Be specific and concrete.
;Replaceability: Why there couldn't be a freely licensed replacement that would adequately serve the same purpose (cf. [[WP:NFCC#1]]). Please bear in mind that this is not merely about replacements that actually exist and are readily available, but also about the mere possibility that such a replacement could realistically be created.
;Minimality: Add any necessary explanation how there won't be more non-free content used than necessary. Minimality means: Use low-resolution files rather than high-resolution files; don't use a larger portion of a work than necessary or an entire work if only a small portion would be sufficient; don't use more non-free items if a single one would be sufficient.
;Commercial: i.e. "Respect for commercial opportunities": explain why our use of the file will not unduly infringe on any commercial interests of its copyright holders, by competing with the work's original market role.
;Date: (optional) The date of publication.
;Publication: (optional) The ''original source'', i.e. where and how this non-free work was first published. Important in some cases where parts of the non-free use justification may depend on this information, e.g. in the case of some historical photographs.
;Replaceability_text: (optional) ''Note that though this template field has been implemented as optional, Wikipedia policy requires that its consideration is satisfied (see [[WP:NFCC#1]]).''<br/>If necessary,<ref>If in doubt, specific queries should be raised at [[Wikipedia talk:Non-free content]].</ref> explain why it wouldn't be possible to adequately treat the encyclopedic content with freely licensed files alone.
;Other information: (optional) any other information that is relevant to the sourcing, copyright information and non-free use justification.
{{reflist}}
== Example ==
<syntaxhighlight lang="wikitext" style="white-space:pre-wrap">
{{Non-free use rationale
| Description = Book cover of ''[[Strong Poison]]''.
| Source = Derived from a digital capture (photo/scan) of the book cover (creator of this digital version is irrelevant as the copyright in all equivalent images is still held by the same party). Copyright held by the publisher or the artist. Claimed as fair use regardless.
| Article = Strong Poison
| Portion = Book cover only, a small portion of the commercial product.
| Low resolution = Yes
| Purpose = The image serves as the primary means of visual identification of the subject (the book). It illustrates educational articles about the book from which the cover illustration was taken.
| Replaceability = There is no free equivalent of this book cover, so the image cannot be replaced by a free image.
| Other information = The use of the cover will not affect the value of the original work or limit the copyright holder's rights or ability to distribute the original. In particular, copies could not be used to make illegal copies of the book.
}}
</syntaxhighlight>
{{Non-free use rationale{{sandbox other|/sandbox}}
| Description = Book cover of ''[[Strong Poison]]''.
| Source = Derived from a digital capture (photo/scan) of the book cover (creator of this digital version is irrelevant as the copyright in all equivalent images is still held by the same party). Copyright held by the publisher or the artist. Claimed as fair use regardless.
| Article = Strong Poison
| Portion = Book cover only, a small portion of the commercial product.
| Low resolution = Yes
| Purpose = The image serves as the primary means of visual identification of the subject (the book). It illustrates educational articles about the book from which the cover illustration was taken.
| Replaceability = There is no free equivalent of this book cover, so the image cannot be replaced by a free image.
| Other information = The use of the cover will not affect the value of the original work or limit the copyright holder's rights or ability to distribute the original. In particular, copies could not be used to make illegal copies of the book.
}}
== See also ==
* For more specific rationale templates, look in [[:Category:Non-free use rationale templates]].
* A different approach is to use {{tl|Non-free media data}} combined with {{tl|Non-free media rationale}}, which is less clumsy in situations where an image is used in multiple articles.
* A derivation of this template, optimized for use on copyrighted logos, is {{tl|Non-free use rationale logo}} which automatically includes rationale text relevant to that use case.
* For free images, you may use {{tl|Information}}.
==Maintenance categories==
*{{clc|Pages using non-free use rationale with unknown parameters}}
== Tracking categories ==
This template uses the following tracking categories:
* [[:Category:Wikipedia files with unknown source]] - set if both the {{para|Source}} and {{para|source}} parameters are missing.
* [[:Category:Wikipedia non-free files lacking article backlink]] - set if both the {{para|Article}} and {{para|article}} parameters are missing.
* [[:Category:Wikipedia non-free files with red backlink]] - set if the title specified in {{para|Article}} is a redlink.
* [[:Category:Wikipedia non-free files with redirect backlink]] - set if the title specified in {{para|Article}} is a redirect.
==TemplateData==
{{TemplateDataHeader}}
<templatedata>
{
"description": "Template for images or content that can be uploaded via Wikipedia's fair use policy, meant to facilitate creating non-free use rationales with the necessary components. Please read Wikipedia:Non-free content for the relevant policies.\n\nThis template is used by the Wikipedia:File Upload Wizard. Its parameter fields are designed to match the data produced by the upload questionnaire. They are also designed to correspond to the original criteria as defined in WP:NFCC. The wizard will fill in some fields with standard values, but will prompt for specific input in those cases where rationale elements are typically not predictable and must be explained individually.",
"params": {
"Special_header": {},
"Description": {
"label": "Description",
"type": "string",
"required": true,
"description": "A description of the copyrighted material.",
"aliases": [
"description"
]
},
"Author": {
"label": "Author",
"type": "string",
"required": false,
"description": "The original author and/or copyright holder of the non-free work.",
"aliases": [
"author"
]
},
"Source": {
"label": "Source",
"type": "string",
"required": true,
"description": "The immediate source, i.e. where you found this file.",
"aliases": [
"source"
]
},
"Publication": {
"label": "Publication",
"type": "string",
"required": false,
"description": "The original source, i.e. where and how this non-free work was first published. Important in some cases where parts of the non-free use justification may depend on this information, e.g. in the case of some historical photographs.",
"aliases": [
"publication"
]
},
"Date": {
"label": "Date",
"type": "string",
"required": false,
"description": "The date of publication.",
"aliases": [
"date"
]
},
"Article": {
"label": "Article",
"type": "string",
"required": true,
"description": "The exact name of the Wikipedia article in which the media is to be used (without the [[ ]] brackets).",
"aliases": [
"article"
]
},
"Purpose": {
"label": "Purpose",
"type": "string",
"required": true,
"example": "This non-free art will be the primary form of identification of the subject of the article in the infobox used in the article.",
"description": "What function this file will serve in the article. This explanation must make it clear how and why the file will significantly increase the reader's understanding of the topic, in such a way that its absence would be detrimental to the article (cf. WP:NFCC#8). Do not copy generic rationale verbiage from some templated rationales elsewhere. State in clear, plain words what this particular file will be doing in this particular article. Be specific and concrete.",
"aliases": [
"purpose"
]
},
"Replaceability": {
"label": "Replaceability - Why not free image?",
"type": "string",
"required": true,
"example": "Because this work is non-free, any free substitute would either be a copyright violation or misinterpret the work.",
"description": "Why there couldn't be a freely licensed replacement that would adequately serve the same purpose (cf. WP:NFCC#1). Please bear in mind that this is not merely about replacements that actually exist and are readily available, but also about the mere possibility that such a replacement could realistically be created.",
"aliases": [
"replaceability"
]
},
"Replaceability_text": {
"label": "Replaceability - Why not just text?",
"type": "string",
"required": false,
"description": "If necessary, explain why it wouldn't be possible to adequately treat the encyclopedic content with freely licensed text alone. Note that though this template field has been implemented as optional, Wikipedia policy requires that its consideration is satisfied (see WP:NFCC#1).",
"aliases": [
"replaceability_text",
"replaceability text"
]
},
"Minimality": {
"label": "Minimal use",
"type": "string",
"required": true,
"description": "Add any necessary explanation how there won't be more non-free content used than necessary. Minimality means: Use low-resolution files rather than high-resolution files; don't use a larger portion of a work than necessary or an entire work if only a small portion would be sufficient; don't use more non-free items if a single one would be sufficient.",
"aliases": [
"minimality"
]
},
"Portion": {
"description": "The portion of the non-free file used",
"example": "The whole work is used to prevent misinterpreting the work",
"suggested": false
},
"Low resolution": {
"aliases": [
"Low_resolution",
"Resolution"
],
"description": "Indicate that this file has low resolution.",
"example": "This image's size and resolution is sufficient enough to provide identification of the work. But the low resolution would make it unsuitable for stolen versions and reproduction/replication elsewhere.",
"suggested": false
},
"Commercial": {
"label": "Respect for commercial opportunities",
"type": "string",
"required": true,
"description": "Explain why our use of the file will not unduly infringe on any commercial interests of its copyright holders, by competing with the work's original market role.",
"aliases": [
"commercial"
]
},
"Other information": {
"label": "Other info",
"type": "string",
"required": false,
"description": "Anything else that needs to be added?",
"aliases": [
"other information",
"Other_information",
"other_information"
]
}
},
"format": "block"
}
</templatedata>
<includeonly>{{Sandbox other|
| <!-- ADD CATEGORIES BELOW THIS LINE, PLEASE: -->
[[Category:Non-free use rationale templates]]
}}</includeonly>
03wldywpsk1fkjb3pspurhiz62abr4w
ಟೆಂಪ್ಲೇಟ್:Non-free use rationale/styles.css
10
29322
374596
2026-10-22T03:44:25Z
en>Axolitl
0
Use variables for border and error color for dark mode
374596
sanitized-css
text/css
/* {{pp-template|small=yes}} */
.nfur {
background-color: var(--background-color-neutral-subtle, #f8f9fa);
border-collapse: separate; /* explicit setting of user agent styles */
border-spacing: 2px;
border: 1px solid var(--border-color-base, #a2a9b1);
box-sizing: border-box;
font-size: 95%;
padding: 5px;
width: 100%;
/* Keep the offsets in place from when the caption was still a th */
border-top: 0;
padding-top: 0;
}
/* Simulate the tableheading cell (5px padding+ 2px border spacing) */
.nfur caption {
background-color: var(--background-color-neutral-subtle, #f8f9fa);
border: 1px solid var(--border-color-base, #a2a9b1);
border-bottom: none;
box-sizing: border-box;
padding: 7px 7px 0 7px;
}
.nfur caption > div {
background-color: #d8e0ff;
color: #202122;
font-size: 120%;
font-weight: bold;
padding: 2px 0;
}
.nfur-2 caption > div {
background-color: #ccf;
color: #202122;
font-size: 100%;
}
.nfmd caption > div {
background-color: #B7CEFF;
color: #202122;
}
.nfmr caption > div {
background-color: pink;
}
.nfur-2 p {
margin: 2px 0;
}
.nfur td {
padding: 0 2px;
}
.nfur th {
background: #ccf;
padding: 2px .4em;
text-align: right;
}
.nfmd th {
background: #DFEFFF;
color: #202122;
}
.nfmr th {
background: #D8BFD8;
color: #202122;
}
.nfur-bad-article {
font-style: italic;
}
.nfur-error {
color: var(--color-error, red);
font-weight: bold;
}
.nfur-exact {
font-size: 90%;
}
.nfur-fairuse,
.nfur-nonfree {
display: none;
}
@media (min-width: 720px) {
.nfur th {
width: 15%;
}
.nfur-2 th {
width: 15em;
}
}
/* Vector 2022 rules */
body.skin-vector-2022 .nfur p {
margin: 10px 0;
}
/* stack with additional adjacent templates */
table.nfur + * + table.nfur caption {
border-top: 0;
padding-top: 0;
margin-top: -1px;
}
html.skin-theme-clientpref-night .nfur caption > div {
background-color: #202040;
color: inherit;
}
html.skin-theme-clientpref-night .nfur-2 caption > div,
html.skin-theme-clientpref-night .nfur th {
background-color: #2a2a5c;
color: inherit;
}
html.skin-theme-clientpref-night .nfmd th {
background: #003061;
}
html.skin-theme-clientpref-night .nfmd caption > div {
background: #003CBD;
color: inherit;
}
html.skin-theme-clientpref-night .nfmr caption > div {
background-color: #700000;
color: inherit;
}
html.skin-theme-clientpref-night .nfmr th {
background: #553555;
color: inherit;
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .nfur caption > div {
background-color: #202040;
color: inherit;
}
html.skin-theme-clientpref-os .nfur-2 caption > div,
html.skin-theme-clientpref-os .nfur th {
background-color: #2a2a5c;
color: inherit;
}
html.skin-theme-clientpref-os .nfmd th {
background: #003061;
}
html.skin-theme-clientpref-os .nfmd caption > div {
background: #003CBD;
color: inherit;
}
html.skin-theme-clientpref-os .nfmr caption > div {
background-color: #700000;
color: inherit;
}
html.skin-theme-clientpref-os .nfmr th {
background: #553555;
color: inherit;
}
}
ny7ya362yruoajrwhnpvr747qrxryna
374597
374596
2026-11-06T05:56:16Z
ChiK
1136
1 revision imported from [[:en:Template:Non-free_use_rationale/styles.css]]
374596
sanitized-css
text/css
/* {{pp-template|small=yes}} */
.nfur {
background-color: var(--background-color-neutral-subtle, #f8f9fa);
border-collapse: separate; /* explicit setting of user agent styles */
border-spacing: 2px;
border: 1px solid var(--border-color-base, #a2a9b1);
box-sizing: border-box;
font-size: 95%;
padding: 5px;
width: 100%;
/* Keep the offsets in place from when the caption was still a th */
border-top: 0;
padding-top: 0;
}
/* Simulate the tableheading cell (5px padding+ 2px border spacing) */
.nfur caption {
background-color: var(--background-color-neutral-subtle, #f8f9fa);
border: 1px solid var(--border-color-base, #a2a9b1);
border-bottom: none;
box-sizing: border-box;
padding: 7px 7px 0 7px;
}
.nfur caption > div {
background-color: #d8e0ff;
color: #202122;
font-size: 120%;
font-weight: bold;
padding: 2px 0;
}
.nfur-2 caption > div {
background-color: #ccf;
color: #202122;
font-size: 100%;
}
.nfmd caption > div {
background-color: #B7CEFF;
color: #202122;
}
.nfmr caption > div {
background-color: pink;
}
.nfur-2 p {
margin: 2px 0;
}
.nfur td {
padding: 0 2px;
}
.nfur th {
background: #ccf;
padding: 2px .4em;
text-align: right;
}
.nfmd th {
background: #DFEFFF;
color: #202122;
}
.nfmr th {
background: #D8BFD8;
color: #202122;
}
.nfur-bad-article {
font-style: italic;
}
.nfur-error {
color: var(--color-error, red);
font-weight: bold;
}
.nfur-exact {
font-size: 90%;
}
.nfur-fairuse,
.nfur-nonfree {
display: none;
}
@media (min-width: 720px) {
.nfur th {
width: 15%;
}
.nfur-2 th {
width: 15em;
}
}
/* Vector 2022 rules */
body.skin-vector-2022 .nfur p {
margin: 10px 0;
}
/* stack with additional adjacent templates */
table.nfur + * + table.nfur caption {
border-top: 0;
padding-top: 0;
margin-top: -1px;
}
html.skin-theme-clientpref-night .nfur caption > div {
background-color: #202040;
color: inherit;
}
html.skin-theme-clientpref-night .nfur-2 caption > div,
html.skin-theme-clientpref-night .nfur th {
background-color: #2a2a5c;
color: inherit;
}
html.skin-theme-clientpref-night .nfmd th {
background: #003061;
}
html.skin-theme-clientpref-night .nfmd caption > div {
background: #003CBD;
color: inherit;
}
html.skin-theme-clientpref-night .nfmr caption > div {
background-color: #700000;
color: inherit;
}
html.skin-theme-clientpref-night .nfmr th {
background: #553555;
color: inherit;
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .nfur caption > div {
background-color: #202040;
color: inherit;
}
html.skin-theme-clientpref-os .nfur-2 caption > div,
html.skin-theme-clientpref-os .nfur th {
background-color: #2a2a5c;
color: inherit;
}
html.skin-theme-clientpref-os .nfmd th {
background: #003061;
}
html.skin-theme-clientpref-os .nfmd caption > div {
background: #003CBD;
color: inherit;
}
html.skin-theme-clientpref-os .nfmr caption > div {
background-color: #700000;
color: inherit;
}
html.skin-theme-clientpref-os .nfmr th {
background: #553555;
color: inherit;
}
}
ny7ya362yruoajrwhnpvr747qrxryna
ಟೆಂಪ್ಲೇಟ್:Protected template/doc
10
29323
374604
2026-11-05T15:33:30Z
en>Axolitl
0
Update name
374604
wikitext
text/x-wiki
{{Documentation subpage}}
{{Template shortcut|pp-template}}
{{High-use}}
{{Lua|Module:Protected page}}
{{Twinkle standard installation}}
{{User:MusikBot II/Config notice}}
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE. -->
This is the {{tl|Protected template}} protection notice.
== Usage ==
It is used on protected templates and on protected files.
This template does not show on pages that are not protected; instead, it reports an error. Please note that only [[Wikipedia:Administrators|administrators]] can protect pages; this template only informs about the protection status of the page.
This template should usually not be manually placed on template pages, since it is automatically loaded by the {{tl|Documentation}} template of protected template pages. Protected templates should preferably have a documentation subpage (/doc) so that any editor can update the documentation, categories and interwiki links of the template. See [[Wikipedia:Template documentation]] for more on that.
This template automatically detects the edit protection level of a page, and whether it is on a template or file page, and modifies its appearance and how it categorizes the page.
* Use {{tlc|Protected template}} for the normal appearance (a small icon at the top).
* Use {{tlc|Protected template|small=no}} for the large message box. On file pages we recommend using the large box. (It is usually a good idea to also add the {{tl|nocommons}} box on protected image pages, to remind people that protected images should not be deleted even if there is a backup copy on Commons.)
When {{tl|Protected template}} is added to a protected template, it should be placed inside {{tag|noinclude}} tags (otherwise, every page which uses the template will load the protection notice, which will result in an error message). On file (image) pages the <noinclude></noinclude> tags are not necessary.
{{Protection templates}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES HERE, THANKS -->
[[Category:Top icon protection templates]]
}}</includeonly>
95p60m366vb2jmw39gxjqfjaxp7i7qx
374605
374604
2026-11-06T06:36:39Z
ChiK
1136
1 revision imported from [[:en:Template:Protected_template/doc]]
374604
wikitext
text/x-wiki
{{Documentation subpage}}
{{Template shortcut|pp-template}}
{{High-use}}
{{Lua|Module:Protected page}}
{{Twinkle standard installation}}
{{User:MusikBot II/Config notice}}
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE. -->
This is the {{tl|Protected template}} protection notice.
== Usage ==
It is used on protected templates and on protected files.
This template does not show on pages that are not protected; instead, it reports an error. Please note that only [[Wikipedia:Administrators|administrators]] can protect pages; this template only informs about the protection status of the page.
This template should usually not be manually placed on template pages, since it is automatically loaded by the {{tl|Documentation}} template of protected template pages. Protected templates should preferably have a documentation subpage (/doc) so that any editor can update the documentation, categories and interwiki links of the template. See [[Wikipedia:Template documentation]] for more on that.
This template automatically detects the edit protection level of a page, and whether it is on a template or file page, and modifies its appearance and how it categorizes the page.
* Use {{tlc|Protected template}} for the normal appearance (a small icon at the top).
* Use {{tlc|Protected template|small=no}} for the large message box. On file pages we recommend using the large box. (It is usually a good idea to also add the {{tl|nocommons}} box on protected image pages, to remind people that protected images should not be deleted even if there is a backup copy on Commons.)
When {{tl|Protected template}} is added to a protected template, it should be placed inside {{tag|noinclude}} tags (otherwise, every page which uses the template will load the protection notice, which will result in an error message). On file (image) pages the <noinclude></noinclude> tags are not necessary.
{{Protection templates}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES HERE, THANKS -->
[[Category:Top icon protection templates]]
}}</includeonly>
95p60m366vb2jmw39gxjqfjaxp7i7qx
ಟೆಂಪ್ಲೇಟ್:Non-free use rationale logo
10
29324
374607
2021-08-08T17:24:40Z
en>IceWelder
0
Better format for when a citation format is used
374607
wikitext
text/x-wiki
{{Non-free use rationale
|Special_header= – non-free {{{Type|logo}}}
|Article={{#if:{{{Article<includeonly>|</includeonly>}}}|{{{Article}}}|<!--{{error|message=Must include parameter: ''Article=xxxxx''}}-->}}
|Description=This is the {{{Type|logo}}} {{#if:{{{Owner|}}}
|owned by {{{Owner}}}
}} for {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}. {{#if:{{{History|}}}
|It is a historical {{{Type|logo}}}. Its historical usage is as follows: {{{History}}}.
}} {{#if:{{{Description|}}}
|Further details: {{{Description}}}
}}
|Source={{#if:{{{Website|}}}
|The {{{Type|logo}}} is from the following website: {{{Website}}}
}} {{#if:{{{Source|}}}
|{{{Source}}}
|{{#if:{{{Website|}}}|
|The {{{Type|logo}}} may be obtained from {{#if:{{{Owner|}}}
|{{{Owner}}}
|{{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}
}}.
}}
}}
|Portion={{#if:{{{Portion|}}}
|{{{Portion}}}
|The entire {{{Type|logo}}} is used to convey the meaning intended and avoid tarnishing or misrepresenting the intended image.
}}
|Low_resolution={{#if:{{{Low_resolution|{{{Low resolution|}}}}}}
|{{{Low_resolution|{{{Low resolution|}}}}}}
|{{#ifeq: {{lc:{{#invoke:string|sub|{{PAGENAME}}|i=-3}}}} | svg | {{SVG-Res}} | The {{{type|logo}}} is of a size and resolution sufficient to maintain the quality intended by the company or organization, without being unnecessarily high resolution. }}
}}
|Purpose=<noinclude>''Choose from:'' <kbd>Infobox / Org / Brand / Product / Public facility / Other</kbd></noinclude>{{#switch:{{{Use|}}}
|={{#if:{{{Purpose|}}}
|{{{Purpose|}}}<br />{{error|message=Purpose was stated, but Use parameter of the template was not set. Choose "Use=" Infobox / Org / Brand / Product / Public facility / Other}}{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale logo template with Purpose, but no Use specified]]}}
|{{error|1=No Use specified. Choose "Use=" Infobox / Org / Brand / Product / Public facility / Other}}{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale logo template with no Use specified]]}}
}}
|Infobox=The image is placed in the infobox at the top of the article discussing {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}, a subject of public interest. The significance of the {{{Type|logo}}} is to help the reader identify the organization, assure the readers that they have reached the right article containing critical commentary about the organization, and illustrate the organization's intended branding message in a way that words alone could not convey.
|Org=The image is used to identify the organization {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}, a subject of public interest. The significance of the {{{Type|logo}}} is to help the reader identify the organization, assure the readers that they have reached the right article containing critical commentary about the organization, and illustrate the organization's intended branding message in a way that words alone could not convey.
|Brand=The image is used to identify the brand {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}, a subject of public interest. The significance of the {{{type|logo}}} is to help the reader identify the brand, assure the readers that they have reached the right article containing critical commentary about the brand, and illustrate the nature of the brand in a way that words alone could not convey.
|Product= The image is used to identify {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}, a notable product or service. The significance of the {{{Type|logo}}} is to help the reader identify the product or service, assure the readers that they have reached the right article containing critical commentary about that product or service, and illustrate branding associations of the product or service in a way that words alone could not convey.
|Public facility=The image is used to identify the following notable public facility: {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}. The significance of the {{{Type|logo}}} is to help the reader identify a facility (such as a road, airport, station, city, neighborhood, or the like), and assure the readers that they have reached the right article containing critical commentary about the facility.
|Public authority=
The image is used to identify the following notable public authority or agency: {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}. The significance of the {{{Type|logo}}} is to help the reader identify the agency or public authority, and assure the readers that they have reached the right article containing critical commentary about that body.
|Other={{{Purpose|}}}
|#default={{{Purpose|}}}<br />{{error|1=Invalid Use: {{{Use}}} – ''Choose "Use=" Infobox / Org / Brand / Product / Public facility / Other ''}}{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale logo template with invalid Use specified]]}}
}} {{#if:{{{Commentary|}}}
|''There is commentary in the article about the {{{type|logo}}} itself as follows:'' "{{{Commentary}}}"
}}
|Replaceability={{#if:{{{Replaceability|}}}
|{{{Replaceability}}}
|Because it is a non-free {{{Type|logo}}}, there is almost certainly no free representation. Any substitute that is not a derivative work would fail to convey the meaning intended, would tarnish or misrepresent its image, or would fail its purpose of identification or commentary.
}}
|other_information={{#if:{{{other_information|{{{Other information|}}}}}}
|{{{other_information|{{{Other information|}}}}}}
|Use of the {{{Type|logo}}} in the article complies with Wikipedia [[Wikipedia:Non-free content criteria|non-free content policy]], [[Wikipedia:Logos|logo guidelines]], and [[fair use]] under [[Copyright law of the United States|United States copyright law]] as described above.
}}
}}{{#if:{{{Article|}}}|{{#if:{{{Use|}}}|[[Category:Completed non-free use rationale logo transclusions]]|}}|}}<noinclude>
{{Documentation}}
</noinclude>
nnxxa4rdj0lse3e9h6rzt2liirlurrc
374608
374607
2026-11-06T06:42:42Z
ChiK
1136
1 revision imported from [[:en:Template:Non-free_use_rationale_logo]]
374607
wikitext
text/x-wiki
{{Non-free use rationale
|Special_header= – non-free {{{Type|logo}}}
|Article={{#if:{{{Article<includeonly>|</includeonly>}}}|{{{Article}}}|<!--{{error|message=Must include parameter: ''Article=xxxxx''}}-->}}
|Description=This is the {{{Type|logo}}} {{#if:{{{Owner|}}}
|owned by {{{Owner}}}
}} for {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}. {{#if:{{{History|}}}
|It is a historical {{{Type|logo}}}. Its historical usage is as follows: {{{History}}}.
}} {{#if:{{{Description|}}}
|Further details: {{{Description}}}
}}
|Source={{#if:{{{Website|}}}
|The {{{Type|logo}}} is from the following website: {{{Website}}}
}} {{#if:{{{Source|}}}
|{{{Source}}}
|{{#if:{{{Website|}}}|
|The {{{Type|logo}}} may be obtained from {{#if:{{{Owner|}}}
|{{{Owner}}}
|{{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}
}}.
}}
}}
|Portion={{#if:{{{Portion|}}}
|{{{Portion}}}
|The entire {{{Type|logo}}} is used to convey the meaning intended and avoid tarnishing or misrepresenting the intended image.
}}
|Low_resolution={{#if:{{{Low_resolution|{{{Low resolution|}}}}}}
|{{{Low_resolution|{{{Low resolution|}}}}}}
|{{#ifeq: {{lc:{{#invoke:string|sub|{{PAGENAME}}|i=-3}}}} | svg | {{SVG-Res}} | The {{{type|logo}}} is of a size and resolution sufficient to maintain the quality intended by the company or organization, without being unnecessarily high resolution. }}
}}
|Purpose=<noinclude>''Choose from:'' <kbd>Infobox / Org / Brand / Product / Public facility / Other</kbd></noinclude>{{#switch:{{{Use|}}}
|={{#if:{{{Purpose|}}}
|{{{Purpose|}}}<br />{{error|message=Purpose was stated, but Use parameter of the template was not set. Choose "Use=" Infobox / Org / Brand / Product / Public facility / Other}}{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale logo template with Purpose, but no Use specified]]}}
|{{error|1=No Use specified. Choose "Use=" Infobox / Org / Brand / Product / Public facility / Other}}{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale logo template with no Use specified]]}}
}}
|Infobox=The image is placed in the infobox at the top of the article discussing {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}, a subject of public interest. The significance of the {{{Type|logo}}} is to help the reader identify the organization, assure the readers that they have reached the right article containing critical commentary about the organization, and illustrate the organization's intended branding message in a way that words alone could not convey.
|Org=The image is used to identify the organization {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}, a subject of public interest. The significance of the {{{Type|logo}}} is to help the reader identify the organization, assure the readers that they have reached the right article containing critical commentary about the organization, and illustrate the organization's intended branding message in a way that words alone could not convey.
|Brand=The image is used to identify the brand {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}, a subject of public interest. The significance of the {{{type|logo}}} is to help the reader identify the brand, assure the readers that they have reached the right article containing critical commentary about the brand, and illustrate the nature of the brand in a way that words alone could not convey.
|Product= The image is used to identify {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}, a notable product or service. The significance of the {{{Type|logo}}} is to help the reader identify the product or service, assure the readers that they have reached the right article containing critical commentary about that product or service, and illustrate branding associations of the product or service in a way that words alone could not convey.
|Public facility=The image is used to identify the following notable public facility: {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}. The significance of the {{{Type|logo}}} is to help the reader identify a facility (such as a road, airport, station, city, neighborhood, or the like), and assure the readers that they have reached the right article containing critical commentary about the facility.
|Public authority=
The image is used to identify the following notable public authority or agency: {{#if:{{{Used for|}}}
|{{{Used for}}}
|{{{Article}}}
}}. The significance of the {{{Type|logo}}} is to help the reader identify the agency or public authority, and assure the readers that they have reached the right article containing critical commentary about that body.
|Other={{{Purpose|}}}
|#default={{{Purpose|}}}<br />{{error|1=Invalid Use: {{{Use}}} – ''Choose "Use=" Infobox / Org / Brand / Product / Public facility / Other ''}}{{file other|[[Category:Wikipedia files that transclude the Non-free use rationale logo template with invalid Use specified]]}}
}} {{#if:{{{Commentary|}}}
|''There is commentary in the article about the {{{type|logo}}} itself as follows:'' "{{{Commentary}}}"
}}
|Replaceability={{#if:{{{Replaceability|}}}
|{{{Replaceability}}}
|Because it is a non-free {{{Type|logo}}}, there is almost certainly no free representation. Any substitute that is not a derivative work would fail to convey the meaning intended, would tarnish or misrepresent its image, or would fail its purpose of identification or commentary.
}}
|other_information={{#if:{{{other_information|{{{Other information|}}}}}}
|{{{other_information|{{{Other information|}}}}}}
|Use of the {{{Type|logo}}} in the article complies with Wikipedia [[Wikipedia:Non-free content criteria|non-free content policy]], [[Wikipedia:Logos|logo guidelines]], and [[fair use]] under [[Copyright law of the United States|United States copyright law]] as described above.
}}
}}{{#if:{{{Article|}}}|{{#if:{{{Use|}}}|[[Category:Completed non-free use rationale logo transclusions]]|}}|}}<noinclude>
{{Documentation}}
</noinclude>
nnxxa4rdj0lse3e9h6rzt2liirlurrc
ಟೆಂಪ್ಲೇಟ್:Non-free use rationale logo/doc
10
29325
374609
2025-05-04T04:32:52Z
en>Paine Ellsworth
0
High-use template
374609
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{high-use}}
== Summary ==
This template is to help users write non-free use rationales for non-free logos as required by [[WP:NFC]], [[WP:LOGO]], and [[WP:NFURG]]. Include this in the ''Summary'' section of the [[Help:Image page | image file]] once for each article in which the image is inserted.
This template automatically inserts standard rationale text. For a "dumb" template with manually-added fields, see {{tl|Non-free use rationale}} or a pair of {{tl|Non-free media data}} and {{tl|Non-free media rationale}}.
== Considerations ==
Please use copyrighted content responsibly and in accordance with Wikipedia policy. A template alone does not make a logo fair to use. It merely helps you state why you think it is appropriate. On the other hand, simple logos may fall under public domain. See [[commons:Commons:Threshold of originality]] for more information.
This template is optimized for logos of brands/organizations used in the article about that brand/organization. It may or may not work in other contexts. Before saving, try the "preview" feature to review the text produced by this template. Be sure the language is true and complete. If not, consider using the override fields, a different template, or a hand-written justification.
== Syntax ==
You may copy the following to your page in the [[WP:File namespace|File namespace]].
<syntaxhighlight lang="wikitext">
{{Non-free use rationale logo
| Article =
| Use = <!-- Choose: Infobox / Org / Brand / Product / Public facility / Other -->
| Purpose = <!-- Must be specified when Use is set to "Other"; otherwise, disregard -->
<!-- ADDITIONAL INFORMATION -->
| Used for =
| Owner =
| Description =
| Website =
| History =
| Commentary =
<!-- OVERRIDE FIELDS -->
| Source =
| Portion =
| Low resolution =
| Replaceability =
| Other information =
}}
</syntaxhighlight>
===Mandatory fields===
*'''Article''': Article name, without brackets
*'''Use''': Specifies how the image is used in the article and automatically modifies text in the ''Purpose'' field. Choose one of the following:
*:''Infobox'': Use when the logo is placed in a company infobox to represent the company. Do not use for other types of infoboxes.
*:''Org'': Use when logo identifies an organization in an article or section about the organization
*:''Brand'': Use when logo identifies a brand in an article or section about the brand
*:''Product'': Use when logo identifies a product or service in an article or section about that product or service
*:''Public facility'': Use when logo is used to identify a road, airport, station, route, city, neighborhood, government service, etc.
*:''Other'': Use when none of the above applies. In this case, you must fill the "Purpose" field.
*'''Purpose''': If use is not one of the above categories, explain how you use it and why.
===Optional fields===
Use of these fields are optional. Most of the times they are used only when condition dictates.
*'''Used for''': Specifies what is the name of the entity that the logo identifies, if different from the article name
*'''Owner''': Specifies who owns the logo, if different from the article name. Full legal name is best.
*'''Description''': Specifies additional details that are to be appended to the logo description.
*'''Website''': If taken from a website, this field specifies the location. Please include the full URL of the webpage on which the image is displayed; do not link directly to the image. Also please do not include anything else except the URL. You may use {{tl|URL}} template if you wish.
*'''Commentary''': Use if it is necessary to discuss any commentary in the article about the logo itself. This field, if used, is appended to the logo's purpose of use, following the text: "''There is commentary in the article about the logo itself as follows:''"
*'''History''': If logo is discontinued or modified, use this field if it is necessary to explain when and how was it used historically by the organization, item, or event. This field, if used, is appended to the logo's description, following the text: "It is a historical logo. Its historical usage is as follows:"
===Override fields===
Although this template is used to help automatically generate a well-written fair-use rationale text, sometimes the situation dictates that part of the automatically generated text must be overridden. These fields help you insert your own text instead of the automatically generated ones.
*'''Source''': Used to specify where and how you obtained this image. Overrides the automatically generated source information from ''Article'', ''Used for'' and ''Website'' fields.
*'''Portion''': Used to specify whether the entire logo or part of it is used and why. Overrides the automatically generated text.
*'''Low resolution''': Used to specify whether the image is unusually large or small, and why. For [[Scalable Vector Graphics|SVG]] logos, use {{tl|SVG-Res}}.
*'''Replaceability''': Used to explain why the image cannot be replaced with a [[free content|free image]], if the default explanations are not accurate
*'''Other information''': Used to supply any other information you think helps the image's non-free use case. Overrides default text.
=== See Also ===
* {{tl|Non-free logo}}
<includeonly>{{sandbox other||
<!-- ADD CATEGORIES BELOW THIS LINE -->
[[Category:Non-free use rationale templates|Logo]]
}}</includeonly>
<templatedata>
{
"params": {
"Article": {
"description": "Article name, without brackets",
"type": "wiki-page-name",
"required": true
},
"Owner": {
"description": "Specifies who owns the logo, if different from the article name. Full legal name is best."
},
"Used for": {
"description": "Specifies what is the name of the entity that the logo identifies, if different from the article name",
"type": "string"
},
"History": {
"description": "If logo is discontinued or modified, use this field if it is necessary to explain when and how was it used historically by the organization, item, or event. This field, if used, is appended to the logo's description, following the text: \"It is a historical logo. Its historical usage is as follows:\"",
"type": "string"
},
"Description": {
"description": "Specifies additional details that are to be appended to the logo description.",
"type": "string"
},
"Website": {
"description": "If taken from a website, this field specifies the location. Please include the full URL of the webpage on which the image is displayed; do not link directly to the image. Also please do not include anything else except the URL. You may use {{URL}} template if you wish.",
"type": "string"
},
"Source": {
"description": "Used to specify where and how you obtained this image. Overrides the automatically generated source information from Article, Used for and Website fields."
},
"Portion": {
"description": "Used to specify whether the entire logo or part of it is used and why. Overrides the automatically generated text.",
"type": "string"
},
"Use": {
"description": "Specifies how the image is used in the article and automatically modifies text in the Purpose field.",
"type": "string",
"suggestedvalues": [
"Infobox",
"Org",
"Brand",
"Product",
"Public facility",
"Other"
],
"required": true
},
"Purpose": {
"description": "If use is not one of the above categories, explain how you use it and why.",
"type": "string"
},
"Commentary": {
"description": "Use if it is necessary to discuss any commentary in the article about the logo itself. This field, if used, is appended to the logo's purpose of use, following the text: \"There is commentary in the article about the logo itself as follows:\"",
"type": "string"
},
"Replaceability": {
"description": "Used to explain why the image cannot be replaced with a free image, if the default explanations are not accurate",
"type": "string"
},
"Other information": {
"label": "Other information",
"description": "Used to supply any other information you think helps the image's non-free use case. Overrides default text.",
"type": "string",
"aliases": [
"other_information"
]
},
"Low resolution": {
"label": "Low resolution",
"description": "Used to specify whether the image is unusually large or small, and why. For SVG logos, use {{SVG-Res}}.",
"type": "string",
"aliases": [
"Low_resolution"
]
}
},
"paramOrder": [
"Article",
"Use",
"Purpose",
"Used for",
"Owner",
"Description",
"Website",
"Commentary",
"History",
"Source",
"Portion",
"Low resolution",
"Replaceability",
"Other information"
]
}
</templatedata>
g1jp6hxsomv6wp2105md1866hr2b7kz
374610
374609
2026-11-06T06:42:43Z
ChiK
1136
1 revision imported from [[:en:Template:Non-free_use_rationale_logo/doc]]
374609
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{high-use}}
== Summary ==
This template is to help users write non-free use rationales for non-free logos as required by [[WP:NFC]], [[WP:LOGO]], and [[WP:NFURG]]. Include this in the ''Summary'' section of the [[Help:Image page | image file]] once for each article in which the image is inserted.
This template automatically inserts standard rationale text. For a "dumb" template with manually-added fields, see {{tl|Non-free use rationale}} or a pair of {{tl|Non-free media data}} and {{tl|Non-free media rationale}}.
== Considerations ==
Please use copyrighted content responsibly and in accordance with Wikipedia policy. A template alone does not make a logo fair to use. It merely helps you state why you think it is appropriate. On the other hand, simple logos may fall under public domain. See [[commons:Commons:Threshold of originality]] for more information.
This template is optimized for logos of brands/organizations used in the article about that brand/organization. It may or may not work in other contexts. Before saving, try the "preview" feature to review the text produced by this template. Be sure the language is true and complete. If not, consider using the override fields, a different template, or a hand-written justification.
== Syntax ==
You may copy the following to your page in the [[WP:File namespace|File namespace]].
<syntaxhighlight lang="wikitext">
{{Non-free use rationale logo
| Article =
| Use = <!-- Choose: Infobox / Org / Brand / Product / Public facility / Other -->
| Purpose = <!-- Must be specified when Use is set to "Other"; otherwise, disregard -->
<!-- ADDITIONAL INFORMATION -->
| Used for =
| Owner =
| Description =
| Website =
| History =
| Commentary =
<!-- OVERRIDE FIELDS -->
| Source =
| Portion =
| Low resolution =
| Replaceability =
| Other information =
}}
</syntaxhighlight>
===Mandatory fields===
*'''Article''': Article name, without brackets
*'''Use''': Specifies how the image is used in the article and automatically modifies text in the ''Purpose'' field. Choose one of the following:
*:''Infobox'': Use when the logo is placed in a company infobox to represent the company. Do not use for other types of infoboxes.
*:''Org'': Use when logo identifies an organization in an article or section about the organization
*:''Brand'': Use when logo identifies a brand in an article or section about the brand
*:''Product'': Use when logo identifies a product or service in an article or section about that product or service
*:''Public facility'': Use when logo is used to identify a road, airport, station, route, city, neighborhood, government service, etc.
*:''Other'': Use when none of the above applies. In this case, you must fill the "Purpose" field.
*'''Purpose''': If use is not one of the above categories, explain how you use it and why.
===Optional fields===
Use of these fields are optional. Most of the times they are used only when condition dictates.
*'''Used for''': Specifies what is the name of the entity that the logo identifies, if different from the article name
*'''Owner''': Specifies who owns the logo, if different from the article name. Full legal name is best.
*'''Description''': Specifies additional details that are to be appended to the logo description.
*'''Website''': If taken from a website, this field specifies the location. Please include the full URL of the webpage on which the image is displayed; do not link directly to the image. Also please do not include anything else except the URL. You may use {{tl|URL}} template if you wish.
*'''Commentary''': Use if it is necessary to discuss any commentary in the article about the logo itself. This field, if used, is appended to the logo's purpose of use, following the text: "''There is commentary in the article about the logo itself as follows:''"
*'''History''': If logo is discontinued or modified, use this field if it is necessary to explain when and how was it used historically by the organization, item, or event. This field, if used, is appended to the logo's description, following the text: "It is a historical logo. Its historical usage is as follows:"
===Override fields===
Although this template is used to help automatically generate a well-written fair-use rationale text, sometimes the situation dictates that part of the automatically generated text must be overridden. These fields help you insert your own text instead of the automatically generated ones.
*'''Source''': Used to specify where and how you obtained this image. Overrides the automatically generated source information from ''Article'', ''Used for'' and ''Website'' fields.
*'''Portion''': Used to specify whether the entire logo or part of it is used and why. Overrides the automatically generated text.
*'''Low resolution''': Used to specify whether the image is unusually large or small, and why. For [[Scalable Vector Graphics|SVG]] logos, use {{tl|SVG-Res}}.
*'''Replaceability''': Used to explain why the image cannot be replaced with a [[free content|free image]], if the default explanations are not accurate
*'''Other information''': Used to supply any other information you think helps the image's non-free use case. Overrides default text.
=== See Also ===
* {{tl|Non-free logo}}
<includeonly>{{sandbox other||
<!-- ADD CATEGORIES BELOW THIS LINE -->
[[Category:Non-free use rationale templates|Logo]]
}}</includeonly>
<templatedata>
{
"params": {
"Article": {
"description": "Article name, without brackets",
"type": "wiki-page-name",
"required": true
},
"Owner": {
"description": "Specifies who owns the logo, if different from the article name. Full legal name is best."
},
"Used for": {
"description": "Specifies what is the name of the entity that the logo identifies, if different from the article name",
"type": "string"
},
"History": {
"description": "If logo is discontinued or modified, use this field if it is necessary to explain when and how was it used historically by the organization, item, or event. This field, if used, is appended to the logo's description, following the text: \"It is a historical logo. Its historical usage is as follows:\"",
"type": "string"
},
"Description": {
"description": "Specifies additional details that are to be appended to the logo description.",
"type": "string"
},
"Website": {
"description": "If taken from a website, this field specifies the location. Please include the full URL of the webpage on which the image is displayed; do not link directly to the image. Also please do not include anything else except the URL. You may use {{URL}} template if you wish.",
"type": "string"
},
"Source": {
"description": "Used to specify where and how you obtained this image. Overrides the automatically generated source information from Article, Used for and Website fields."
},
"Portion": {
"description": "Used to specify whether the entire logo or part of it is used and why. Overrides the automatically generated text.",
"type": "string"
},
"Use": {
"description": "Specifies how the image is used in the article and automatically modifies text in the Purpose field.",
"type": "string",
"suggestedvalues": [
"Infobox",
"Org",
"Brand",
"Product",
"Public facility",
"Other"
],
"required": true
},
"Purpose": {
"description": "If use is not one of the above categories, explain how you use it and why.",
"type": "string"
},
"Commentary": {
"description": "Use if it is necessary to discuss any commentary in the article about the logo itself. This field, if used, is appended to the logo's purpose of use, following the text: \"There is commentary in the article about the logo itself as follows:\"",
"type": "string"
},
"Replaceability": {
"description": "Used to explain why the image cannot be replaced with a free image, if the default explanations are not accurate",
"type": "string"
},
"Other information": {
"label": "Other information",
"description": "Used to supply any other information you think helps the image's non-free use case. Overrides default text.",
"type": "string",
"aliases": [
"other_information"
]
},
"Low resolution": {
"label": "Low resolution",
"description": "Used to specify whether the image is unusually large or small, and why. For SVG logos, use {{SVG-Res}}.",
"type": "string",
"aliases": [
"Low_resolution"
]
}
},
"paramOrder": [
"Article",
"Use",
"Purpose",
"Used for",
"Owner",
"Description",
"Website",
"Commentary",
"History",
"Source",
"Portion",
"Low resolution",
"Replaceability",
"Other information"
]
}
</templatedata>
g1jp6hxsomv6wp2105md1866hr2b7kz