MediaWiki:Centralnotice-template-B2021 113016 en6C m p1 lg twin1 and Community Wishlist Survey 2021/Bots and gadgets: Difference between pages

From Meta, a Wikimedia project coordination wiki
(Difference between pages)
Content deleted Content added
No edit summary
Tag: Central Notice
 
Shuffling proposals to ensure fair visibility
 
Line 1:
{{:Community Wishlist Survey/Category header|Anti-harassment|Categories|year=2021|phase=voting}}
<!-- Large mobile banner. Must be used with "Large banner limit and switch" mixin -->
<style>
#mw-mf-page-center {
background-color: #fff;
}
 
{{:Community Wishlist Survey 2021/Bots and gadgets/Improve Auto-wiki-browser}}
.banner-container {
{{:Community Wishlist Survey 2021/Bots and gadgets/Lightroom gadget}}
max-width: none;
{{:Community Wishlist Survey 2021/Bots and gadgets/Allow loading gadgets from wikitext}}
}
{{:Community Wishlist Survey 2021/Bots and gadgets/Talk page archiving bot updating incoming links}}
 
{{:Community Wishlist Survey 2021/Bots and gadgets/ListeriaBot to add alias meta-column}}
/* Resets */
{{:Community Wishlist Survey 2021/Bots and gadgets/Importing data from IMDb}}
.frb * {
{{:Community Wishlist Survey 2021/Bots and gadgets/Automatically import}}
margin: 0;
{{:Community Wishlist Survey 2021/Bots and gadgets/Revive the death anomalies project}}
padding: 0;
{{:Community Wishlist Survey 2021/Bots and gadgets/Bot to input the proper class for all wiki projects}}
}
{{:Community Wishlist Survey 2021/Bots and gadgets/DabFix}}
 
{{:Community Wishlist Survey 2021/Bots and gadgets/API for deleted title search}}
/* Box-sizing */
{{:Community Wishlist Survey 2021/Bots and gadgets/InternetArchiveBot for Wikidata}}
.frb,
{{:Community Wishlist Survey 2021/Bots and gadgets/Inform gadget developers of errors in their gadgets/scripts}}
.frb *,
{{:Community Wishlist Survey 2021/Bots and gadgets/Gadgets improvements}}
.frb *:before,
{{:Community Wishlist Survey 2021/Bots and gadgets/Bibliographic bot for Wikidata}}
.frb *:after,
{{:Community Wishlist Survey 2021/Bots and gadgets/Artificial Intelligence Spam hunter}}
.frb-nag {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
 
.frb input[type="radio"],
.frb input[type="text"],
.frb input[type="email"] {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
 
.frb input[type="radio"]:focus,
.frb input[type="text"]:focus,
.frb-radio:focus + .frb-label,
.frb-submit:focus,
.frb-rml-email:focus,
.frb-submit-rml:focus,
.frb-label:focus {
outline: 0;
}
 
.frb-ptf-checkbox,
.frb input[type="radio"],
.frb-visually-hidden {
position: absolute;
overflow: hidden;
clip: rect(0 0 0 0);
margin: -1px;
height: 1px;
width: 1px;
border: 0;
padding: 0;
}
 
.frb frb-amt {
white-space: nowrap;
}
 
@media (prefers-reduced-motion: reduce) {
.frb,
.frb * {
transition: none !important;
}
}
 
/* Font sizes and line heights */
.frb-options,
.frb-footer {
font-size: 12px;
}
 
.frb-footer {
line-height: 1.5;
}
 
.frb,
.frb input,
.frb-form button {
font-size: 17px;
line-height: 1;
}
 
.frb-ptf {
font-size: 16px;
}
 
.frb-message,
.frb-ptf,
.frb-error {
line-height: 1.3529411765; /*23px @17px*/
}
 
/* Styles */
/* Hide banner when Wikipedia site search is enabled */
.overlay-enabled .frb {
display: none !important;
}
 
.frb-main {
background-color: #fff;
}
 
.frb-top {
font-family: -apple-system, 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Lato', 'Helvetica', 'Arial', sans-serif;
}
 
.frb-footer {
display: none;
margin: 0 14px;
padding-top: 20px;
padding-bottom: 20px;
color: #54595d;
}
 
.frb-footer a {
color: #54595d;
text-decoration: underline;
}
 
.frb-footer a:hover {
color: #000;
}
 
.frb-separator {
display: block;
border: none;
margin-top: 16px;
height: 1px;
background-color: #eaecf0; /*same border as #page-actions*/
}
 
.frb-header-inside,
.frb-conversation,
.frb-footer,
.frb-separator {
margin-left: 16px;
margin-right: 16px;
}
 
@media screen and (min-width: 720px) {
.frb-header-inside,
.frb-conversation,
.frb-footer,
.frb-separator {
max-width: 993px;
margin-left: 53.6px;
margin-right: 53.6px;
}
}
 
@media screen and (min-width: 1000px) {
.frb-header-inside,
.frb-conversation,
.frb-footer,
.frb-separator {
margin-left: auto;
margin-right: auto;
}
}
 
.frb-message {
position: relative;
clear: both;
margin-bottom: 12px;
padding: 10px 18px;
background-color: #2e5cb8;
color: #fff;
border-radius: 1.5em;
font-size: 16px;
line-height: 1.5; /* 24px @16px */
}
 
.frb-message.frb-cta {
color: #ad0000;
}
 
@media all and (min-width: 720px) {
.frb-message {
padding: 12px 20px;
font-size: 17px;
line-height: 1.5294117647; /*26px @17px*/
}
}
 
.frb-greeting {
display: block;
padding-bottom: 12px;
}
 
.frb-greeting svg {
vertical-align: top;
}
 
.frb-message--typing {
max-width: 82px;
padding: 6px 20px 8px;
}
 
.is-hidden {
display: none;
}
 
/* Typing indicator */
@keyframes blink {
50% {
fill: #a2a9b1;
}
}
.type-indicator__circle {
fill: #c8ccd1;
}
.type-indicator__circle {
animation: 1s blink infinite;
}
.type-indicator__circle:nth-child(2) {
animation-delay: 250ms;
}
.type-indicator__circle:nth-child(3) {
animation-delay: 500ms;
}
 
.form-monthly .no-monthly {
opacity: 0.4 !important;
}
 
.form-monthly .no-monthly .frb-label {
cursor: default;
}
 
/* 4px tweak to visually align buttons with chat bubbles*/
.frb-buttons-wrapper {
display: table;
margin: 0 0 0 -4px;
width: calc(100% + 8px);
}
 
.frb-button {
display: table;
float: left;
padding: 4px;
cursor: pointer;
}
 
body.rtl .frb-button {
float: right;
}
 
.frb-payment-options {
display: table;
table-layout: fixed;
}
 
body .frb-methods .frb-button {
display: table-cell;
float: none;
vertical-align: top;
}
 
.frb-button-table {
display: table;
width: 100%;
}
 
.frb-frequency .frb-button {
width: 50%;
}
 
#frb-frequency-monthly:disabled + label {
opacity: 0.4 !important;
cursor: default;
}
 
.frb-amounts .frb-button {
width: 33.333333333%;
}
 
.frb-amounts .frb-button.frb-button--other {
width: 66.666666666%;
}
 
.frb-payment-options .frb-button {
width: 100%;
}
 
.frb-payment-options .frb-button:first-child:nth-last-child(4),
.frb-payment-options .frb-button:first-child:nth-last-child(4) ~ .frb-button {
float: left;
width: 50%;
}
 
/* Other amount field */
.frb-other-txt,
.frb-other-input {
line-height: 1;
text-align: left;
}
 
.frb-other-txt {
font-size: 14px;
display: block;
text-align: center;
margin-bottom: 2px;
}
 
@media all and (min-width: 375px) {
.frb-other-txt {
font-size: 16px;
}
}
 
@media all and (min-width: 720px) {
.frb-other-txt {
font-size: inherit;
}
}
 
.frb-other-input {
width: 100% !important;
border: none;
text-align: center !important;
font-weight: bold;
color: #36c;
box-shadow: 0 2px 0 0 #36c;
text-align: right;
border-radius: 0; /* Needed for iOS */
}
 
.frb-button--other .frb-label {
padding: 2px 8px 4px;
}
 
.frb-radio:checked + .frb-label .frb-other-input {
color: #fff;
box-shadow: 0 2px 0 0 #fff;
}
 
.frb-label,
.frb-submit {
padding: 3px 6px 5px;
line-height: 1; /* 19px @19px */
}
 
.frb-label {
display: table-cell; /* To vertical align content */
vertical-align: middle;
width: 100%;
height: 54px;
color: #36c;
background-color: #f8f9fa;
border-radius: 10px;
border: 1px solid #a2a9b1;
text-align: center;
cursor: pointer;
transition: all 0.2s ease;
font-weight: bold;
}
 
.frb-label:hover,
.frb-rml-email:hover,
.frb-submit-rml:hover {
background-color: #eaf3ff;
}
 
.frb-radio:checked + .frb-label {
background-color: #2a4b8d;
border-color: #2a4b8d;
color: #fff;
font-weight: bold;
}
 
.frb-radio:checked + .frb-label .frb-logo-payments--paypal path,
.frb-radio:checked + .frb-label .frb-logo-payments--paypal-usd path,
.frb-radio:checked + .frb-label .frb-logo-payments--amazon path {
fill: #fff;
}
 
.frb-ptf-checkbox:focus + .frb-ptf-label .frb-ptf-img {
box-shadow: inset 0 0 0 2px #36c;
}
 
.frb-radio:focus:checked + .frb-label,
.frb-button--is-focused .frb-label,
.frb-ptf-checkbox:focus:checked + .frb-ptf-label .frb-ptf-img {
border-color: #2a4b8d;
box-shadow: inset 0 0 0 1px #2a4b8d, inset 0 0 0 3px #fff;
}
 
.frb-submit:focus {
box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 3px #fff;
}
 
.frb-ptf-checkbox:focus + .frb-ptf-label .frb-ptf-img {
border-radius: 5px;
}
 
.frb-radio:focus + .frb-label,
.frb-label:focus,
.frb-submit-rml:focus,
.frb-rml-email:focus,
.frb-submit {
border-color: #36c;
}
 
.frb-radio:focus + .frb-label,
.frb-label:focus,
.frb-rml-email:focus,
.frb-submit-rml:focus {
box-shadow: inset 0 0 0 1px #36c;
}
 
.frb-logo-payments {
float: left;
width: 100%;
height: 100%;
max-height: 34px;
margin-top: -3px; /* Visual tweak */
}
 
.frb-logo-payments--paypal {
margin-top: -3px; /* Visual tweak */
margin-left: 1px;
}
 
.frb-logo-payments--paypal-usd {
margin-top: 3px; /* Visual tweak */
}
 
.frb-form fieldset legend {
width: 100%;
margin-bottom: 8px;
}
 
.frb-form fieldset {
margin-top: 20px;
}
 
.frb-form fieldset.frb-haserror .error-highlight {
color: #FEFD34;
font-weight: bold;
}
 
.frb-submit {
height: 64px;
display: inline-block;
cursor: pointer;
margin: 12px 0 8px;
width: 100%;
background-color: #36c;
border: 1px solid #36c;
border-radius: 10px;
color: #fff;
font-weight: bold;
text-transform: uppercase;
transition: background-color 0.2s ease;
}
 
.frb-submit:hover {
background-color: #447ff5;
border-color: #447ff5;
}
 
.frb-submit-amount {
display: none;
}
 
.frb-submit-label-monthly {
display: none;
}
 
.frb-submit-label-now {
display: inline;
}
 
.form-monthly .frb-submit-label-monthly {
display: inline;
}
 
.form-monthly .frb-submit-label-now {
display: none;
}
 
.frb-icon-lock {
margin-bottom: -2px;
margin-right: 2px;
}
 
.frb-icon-lock path {
fill: #fff;
}
 
/* Remind me later (RML) */
.frb-options {
margin: 0 4px;
text-align: center;
color: #000;
font-weight: bold;
text-transform: uppercase;
}
 
.frb-rml-link {
display: block;
margin: 8px auto 0 auto;
padding: 16px;
color: #36c;
transition: color 0.2s ease;
font-size: 14px;
line-height: 1.1428571429; /*16px @14px*/
font-weight: bold;
text-transform: uppercase;
}
 
.frb-rml-link:hover {
text-decoration: underline;
}
 
.frb-rml-disabled .js-rml {
display: none;
}
 
.frb-rml-email,
.frb-submit-rml {
height: 54px;
padding: 16px 18px;
}
 
.frb-rml-email {
margin: 4px 0 0 0;
width: 100%;
color: #000;
background-color: #f8f9fa;
border-radius: 10px;
border: 1px solid #a2a9b1;
box-shadow: none;
transition: background-color 0.2s ease;
cursor: pointer;
font-weight: normal;
}
 
.frb-rml-email.frb-haserror {
border-color: #d33;
box-shadow: inset 0 0 0 1px #d33;
}
 
.frb-submit-rml {
display: block;
margin: 8px auto;
min-width: 200px;
cursor: pointer;
color: #36c;
background-color: #f8f9fa;
border-radius: 10px;
border: 1px solid #a2a9b1;
transition: background-color 0.2s ease;
cursor: pointer;
}
 
/* -- Credit card logos -- */
 
/* Countries with 4 card types */
.frb-cc-logo-wrapper {
display: block;
margin: 0 auto;
width: 80px;
font-size: 0; /* Remove spacing between icons */
}
 
.frb-pm-cc svg {
width: 30px;
height: 18px;
margin: 2px;
display: none;
}
 
/* Countries with 3 card types */
.frb-cctypes-vma .frb-cc-logo-wrapper {
width: 100%;
}
.frb-cctypes-vma svg {
width: 30%;
max-height: 34px;
}
 
.frb-cctypes-vmad .frb-cc-logo-wrapper,
.frb-cctypes-vmaj .frb-cc-logo-wrapper,
.frb-cctypes-vma .frb-cc-logo-wrapper,
.frb-cctypes-vm .frb-cc-logo-wrapper {
display: block;
}
 
.frb-cctypes-vmad .frb-pm-cc-label,
.frb-cctypes-vmaj .frb-pm-cc-label,
.frb-cctypes-vma .frb-pm-cc-label,
.frb-cctypes-vm .frb-pm-cc-label {
display: none;
}
 
.frb-cctypes-vmad .frb-cc-logo-visa,
.frb-cctypes-vmad .frb-cc-logo-mastercard,
.frb-cctypes-vmad .frb-cc-logo-amex,
.frb-cctypes-vmad .frb-cc-logo-discover,
 
.frb-cctypes-vmaj .frb-cc-logo-visa,
.frb-cctypes-vmaj .frb-cc-logo-mastercard,
.frb-cctypes-vmaj .frb-cc-logo-amex,
.frb-cctypes-vmaj .frb-cc-logo-jcb,
 
.frb-cctypes-vma .frb-cc-logo-visa,
.frb-cctypes-vma .frb-cc-logo-mastercard,
.frb-cctypes-vma .frb-cc-logo-amex,
 
.frb-cctypes-vm .frb-cc-logo-visa,
.frb-cctypes-vm .frb-cc-logo-mastercard {
display: inline-block;
}
 
/* -- Pay the fee -- */
.frb-ptf {
margin: 12px 0 0px -2px;
}
.frb-ptf-fee {
white-space: nowrap;
}
 
.frb-ptf-checkbox + .frb-ptf-label .frb-ptf-img {
display: inline-block;
margin-bottom: -4px;
width: 32px;
height: 32px;
background-image: url('https://upload.wikimedia.org/wikipedia/donate/b/b7/Frb-checkbox-ooui.png');
background-size: 64px;
background-repeat: no-repeat;
background-position: 0 0;
}
 
.frb-ptf-checkbox:checked + .frb-ptf-label .frb-ptf-img {
background-position: -32px 0;
}
 
.frb-ptf-label {
display: table;
cursor: pointer;
}
 
.frb-ptf-cell {
display: table-cell;
vertical-align: middle;
}
 
.frb-ptf-cell:first-child {
padding-left: 2px;
}
 
body.rtl .frb-ptf-cell:first-child {
padding-left: 8px;
}
 
.frb-ptf-cell:nth-child(2) {
padding-left: 14px;
}
 
/* --- Header --- */
 
.frb-header {
top: 0;
z-index: 999;
width: 100%;
overflow: hidden;
background-color: #fff;
}
 
/* The sticky class is added to the toolbar with JS when it reaches its scroll position */
.frb-header--sticky {
position: fixed;
top: 0;
left: 0;
border-bottom: 1px solid #c8ccd1;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
}
 
.frb-header-inside {
display: flex;
margin: 0 auto;
padding: 0 8px; /*padding needed to make focus outlines visible at edges*/
width: 100%;
min-height: 42px;
height: 1px; /*needed for FF*/
}
 
.frb-header-action {
flex: 1 0 0;
margin: 10px 0;
text-align: center;
font-size: 12px;
line-height: 1;
font-weight: normal;
color: #36c;
border-right: 1px solid #a2a9b1;
}
.frb-header-action:hover {
text-decoration: underline;
}
 
@media all and (min-width: 375px) {
.frb-header-action {
font-size: 14px;
}
}
 
.frb-header-action:last-child {
border-right: none;
}
 
.frb-header-action--donate {
font-weight: bold;
}
 
.frb-header-action:hover span {
text-decoration: underline;
}
 
/* Error messages */
.frb-error {
display: none;
margin: 8px 0;
color: #d33;
font-size: 15px;
font-weight: 500;
}
 
/* Opt-in */
.frb-optin .frb-button {
width: 50%;
}
 
.frb-message--optin {
margin-top: 8px;
}
 
.frb-optin-no-prompt__yes {
display: none;
}
 
.frb-optin-no-prompt__no {
display: block;
}
 
.frb-optin-no-prompt.is-positive .frb-optin-no-prompt__yes {
display: block;
}
 
.frb-optin-no-prompt.is-positive .frb-optin-no-prompt__no {
display: none;
}
 
.frb-optin-legal {
margin-top: 10px;
font-size: 14px;
line-height: 1.3;
font-weight: normal;
color: #54595d;
}
.frb-optin-legal a {
color: #54595d;
text-decoration: underline;
}
.frb-optin-legal a:hover {
color: #000;
text-decoration: underline;
}
 
 
.frb-cta {
margin-top: 8px;
background-color: #ffc9c9;
color: #b32424;
}
 
/* UPSELL */
 
.frb-upsell,
.frb-monthly-diff-amt .frb-amt-monthly,
.frb-upsell-ty {
width: calc(100% + 8px) !important;
transition: background-color 0.5s ease;
padding: 10px 4px;
text-align: center;
}
 
.frb-upsell { padding-top: 40px; }
 
.frb-monthly-diff-amt .frb-amt-monthly {
display: block;
padding: 0 4px 10px 4px;
}
 
.frb-upsell-cta,
.frb-upsell-ty {
font-size: 17px;
line-height: 1.3;
font-weight: bold;
text-align: center;
}
 
.frb-upsell-color,
.frb-monthly-diff-amt .frb-amt-monthly label {
display: block;
font-size: 15px;
line-height: 1.3;
font-weight: normal;
padding: 0 5%;
margin: .5em 0;
}
 
.frb .frb-monthly-diff-amt-link {
display: block;
font-size: 15px;
line-height: 1.3;
color: #36c;
margin: 8px auto;
padding: 12px;
text-align: center;
cursor: pointer;
font-weight: bold;
}
.frb .frb-monthly-diff-amt-link:hover {
text-decoration: underline;
}
 
.frb-back-step, .frb-back {
display: none;
position: absolute;
margin-top: 10px;
cursor: pointer;
}
 
.frb-monthly-diff-amt { display: none; }
 
#frb-amt-monthly-other-input {
position: relative;
width: 30%;
height: 54px;
padding: 16px 18px;
text-align: center;
font-size: 18px;
color: #000;
background-color: #f8f9fa;
border-radius: 10px;
border: 1px solid #a2a9b1;
box-shadow: none;
transition: background-color 0.2s ease;
cursor: pointer;
font-weight: normal;
}
#frb-amt-monthly-other-input:hover {
background-color: #eaf3ff;
}
 
/* Overlay */
.frb-mask {
display: none;
position: absolute;
z-index: 1000;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: black;
opacity: 0.8;
touch-action: none;
}
 
.frb-step-upsell {
position: fixed;
z-index: 1001;
top: 0;
left: 0;
right: 0;
width: 90%;
max-width: 800px;
margin: 5% auto;
padding: 5%;
color: #000;
background: #fff;
}
</style>
 
<div class="frb frb-top" id="{{{banner}}}" style="display: none;"><!-- hidden by default until have checked the cookies -->
<h1 class="frb-visually-hidden">Fundraising banner</h1>
<div class="frb-main">
<aside class="frb-header">
<h2 class="frb-visually-hidden">Fundraising banner navigation</h2>
<div class="frb-header-inside">
<button class="frb-header-action js-rml">
{{{FR2015_translations,maybe-later}}}
</button>
<button class="frb-header-action frb-header-action--donate js-donate">
{{{FR2015_translations,donate-now}}}
</button>
<button class="frb-header-action js-close">
{{{FR2015_translations,no-thanks}}}
</button>
</div>
</aside>
<div class="frb-conversation">
<h2 class="frb-visually-hidden">Fundraising banner message</h2>
<p class="frb-message frb-message--standard">
<span class="frb-greeting">
<svg class="frb-message-icon" role="img" aria-hidden="true" width="20" height="20" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero" fill="none"><circle fill="#FEFD34" cx="10.492" cy="14.492" r="10.492"></circle><path d="M12.681 11.754l-2.267 7.864c-.125.45-.188.745-.188.885 0 .08.033.156.1.226.066.07.136.105.21.105.125 0 .25-.055.376-.165.332-.273.73-.767 1.194-1.482l.376.22c-1.113 1.94-2.296 2.91-3.55 2.91-.48 0-.86-.135-1.144-.404a1.349 1.349 0 0 1-.426-1.023c0-.273.062-.62.188-1.04l1.537-5.286c.147-.51.221-.892.221-1.15a.566.566 0 0 0-.21-.432c-.14-.125-.332-.188-.575-.188-.11 0-.243.004-.398.011l.144-.442 3.749-.609h.663zm-.685-5.087c.457 0 .842.159 1.156.475.313.318.47.701.47 1.15 0 .45-.16.834-.476 1.15-.317.318-.7.476-1.15.476-.443 0-.822-.158-1.14-.475a1.566 1.566 0 0 1-.475-1.15c0-.45.157-.833.47-1.15a1.549 1.549 0 0 1 1.145-.476z" fill="#000"></path></g></svg>
{{{FR2015_translations,mob-lg-greeting}}}
</span>
This is the <span class="frb-replace-seenCount-ordinalNum">1st</span> time we've asked recently, so we'll get straight to the point: this <span class="frb-replace-dayofweek"></span> we need you to make a donation to protect Wikipedia's independence. 98% of our readers don't give; they simply look the other way. If you are an exceptional reader who has already donated, we sincerely thank you.
</p>
<p class="frb-message frb-message--standard">
If everyone reading this donated %MINIMUM%, we could keep Wikipedia thriving for years. It's a little awkward for us to ask you this <span class="frb-replace-dayofweek"></span>, as we're sure you are busy and we don't mean to interrupt you.
</p>
<p class="frb-message frb-message--standard">
People told us we'd regret making Wikipedia a non-profit. But Wikipedia is a place to learn, not a place for advertising. It unites all of us who love knowledge: contributors, readers and the donors who keep us thriving. Show the volunteers working to bring you access to reliable, neutral information that their work matters to you.
</p>
<p class="frb-message frb-message--standard">
We know most people will ignore this message. But our hope is that you'll think about how valuable it is to have access to a source of open knowledge that doesn't charge you anything, doesn't sell you anything, and would never show you ads.
</p>
<p class="frb-message frb-message--standard">
If Wikipedia provided you %MINIMUM% worth of knowledge this year, please take a minute to help keep it growing. Thank you.
</p>
 
<form id="frb-form" class="frb-form">
<h2 class="frb-visually-hidden">Fundraising payment form</h2>
<fieldset class="frb-amounts">
<legend class="frb-message frb-message-amount error-highlight">
{{{FR2015_translations,please-select-amount}}} (<span class="frb-replace-currencycode">USD</span>)
</legend>
<div class="frb-buttons-wrapper">
<div class="frb-button">
<input class="frb-radio frb-radio-amount" id="frb-amt-ps1" type="radio" name="amount" value="2.75" />
<label for="frb-amt-ps1" class="frb-label">$2.75</label>
</div>
<div class="frb-button">
<input class="frb-radio frb-radio-amount" id="frb-amt-ps2" type="radio" name="amount" value="5" />
<label for="frb-amt-ps2" class="frb-label">$5</label>
</div>
<div class="frb-button">
<input class="frb-radio frb-radio-amount" id="frb-amt-ps3" type="radio" name="amount" value="10" />
<label for="frb-amt-ps3" class="frb-label">$10</label>
</div>
<div class="frb-button">
<input class="frb-radio frb-radio-amount" id="frb-amt-ps4" type="radio" name="amount" value="20" />
<label for="frb-amt-ps4" class="frb-label">$20</label>
</div>
<div class="frb-button">
<input class="frb-radio frb-radio-amount" id="frb-amt-ps5" type="radio" name="amount" value="30" />
<label for="frb-amt-ps5" class="frb-label">$30</label>
</div>
<div class="frb-button">
<input class="frb-radio frb-radio-amount" id="frb-amt-ps6" type="radio" name="amount" value="50" />
<label for="frb-amt-ps6" class="frb-label">$100</label>
</div>
<div class="frb-button">
<input class="frb-radio frb-radio-amount" id="frb-amt-ps7" type="radio" name="amount" value="50" />
<label for="frb-amt-ps7" class="frb-label">$100</label>
</div>
<div class="frb-button frb-button--other">
<input id="frb-input-other" class="frb-radio" type="radio" name="amount" value="Other" />
<label class="frb-label">
<span class="frb-other-txt">{{{FR2015_translations,other}}} (<span class="frb-replace-currencysymbol">$</span>)</span>
<input name="otherAmount" id="frb-amt-other-input" class="frb-other-input" type="text" inputmode="decimal" value="" tabindex="-1" dir="ltr" />
</label>
</div>
</div>
<div class="frb-ptf" style="display:none;">
<input class="frb-ptf-checkbox" type="checkbox" name="ptf" id="frb-ptf-checkbox" value="true">
<label class="frb-ptf-label" for="frb-ptf-checkbox">
<span class="frb-ptf-cell"><span class="frb-ptf-img"></span></span>
<span class="frb-ptf-cell">{{{FR2015_translations,generously-add}}}</span>
</label>
</div>
</fieldset>
 
<p class="frb-message frb-message--standard frb-cta">
We ask you, humbly: don't scroll away.
</p>
 
<div class="frb-step-2" style="display: none;">
 
<fieldset class="frb-frequency">
<legend class="frb-message error-highlight">
{{{FR2015_translations,how-often}}}
</legend>
<div class="frb-buttons-wrapper">
<div class="frb-button frb-button--frequency">
<input class="frb-radio" id="frb-frequency-onetime" type="radio" name="frequency" value="onetime" checked onclick="frb.toggleMonthly(false);" />
<label for="frb-frequency-onetime" class="frb-label">{{{FR2015_translations,just-once}}}</label>
</div>
<div class="frb-button frb-button--frequency">
<input class="frb-radio" id="frb-frequency-monthly" type="radio" name="frequency" value="monthly" onclick="frb.toggleMonthly(true);" />
<label for="frb-frequency-monthly" class="frb-label">{{{FR2015_translations,give-monthly}}}</label>
</div>
</div>
</fieldset>
 
<fieldset class="frb-methods">
<legend class="frb-message error-highlight">
{{{FR2015_translations,select-payment-method-please}}} 👇
</legend>
<div class="frb-buttons-wrapper frb-payment-options">
<div class="frb-button frb-pm-cc">
<div class="frb-button-table">
<input id="frb-pm-cc" type="radio" name="frb-methods" class="frb-radio" />
<label for="frb-pm-cc" class="frb-label" onclick="frb.setMethod({ method:'cc' }); ">
<span class="frb-pm-cc-label">{{{FR2015_translations,pm-creditcard}}}</span>
<span class="frb-cc-logo-wrapper">
<svg class="frb-cc-logo-visa" xmlns="http://www.w3.org/2000/svg" aria-labelledby="frb-cc-logo-visa-title" viewBox="0 0 200 120" height="18" width="30"><title id="frb-cc-logo-visa-title">Visa</title><path fill="#FFFFFF" d="M7.7 0h184.6c4.2 0 7.7 3.3 7.7 7.5v105c0 4.1-3.4 7.5-7.7 7.5H7.7c-4.2 0-7.7-3.3-7.7-7.5V7.5C0 3.3 3.4 0 7.7 0z"/><path fill="#F7B600" d="M0 98v14.3c0 4.2 3.4 7.7 7.7 7.7h184.6c4.2 0 7.7-3.4 7.7-7.7V98H0z"/><path fill="#1A1F71" d="M200 22V7.7c0-4.2-3.4-7.7-7.7-7.7H7.7C3.4 0 0 3.4 0 7.7V22h200zM81.9 36.9L62.3 83.4H49.4l-9.6-37.2c-.6-2.3-1.1-3.1-2.8-4.1-3.8-1.8-7.8-3.1-12-3.9l.2-1.4h20.6c2.8 0 5.1 2 5.6 4.8l5.1 26.9 12.6-31.7h12.8zm50.3 31.3c0-12.3-17-13-16.9-18.4 0-1.7 1.6-3.4 5.2-3.9 4.1-.4 8.2.3 12 2.1l2.1-9.8c-3.6-1.4-7.5-2.1-11.4-2.1-12 0-20.4 6.4-20.5 15.3-.1 6.8 6 10.4 10.6 12.6s6.3 3.8 6.3 5.8c0 3.1-3.8 4.5-7.3 4.5-4.3.1-8.6-.9-12.5-2.9l-2.2 10.2c4.3 1.7 8.9 2.5 13.5 2.5 12.7 0 20.9-6.2 21.1-15.9m31.6 15.2H175l-9.8-46.5h-10.4c-2.3 0-4.3 1.3-5.2 3.4l-18.3 43.1H144l2.5-7h15.6l1.7 7zm-13.6-16.5l6.4-17.4 3.7 17.4h-10.1zm-51-30l-10 46.5H77.1l10-46.5h12.1z"/></svg>
<svg class="frb-cc-logo-mastercard" xmlns="http://www.w3.org/2000/svg" aria-labelledby="frb-cc-logo-mastercard-title" viewBox="0 0 200 120" height="18" width="30"><title id="frb-cc-logo-mastercard-title">MasterCard</title><path d="M192.3 120H7.7c-4.2 0-7.7-3.4-7.7-7.5V7.5C0 3.4 3.5 0 7.7 0h184.6c4.2 0 7.7 3.4 7.7 7.5v105c0 4.1-3.5 7.5-7.7 7.5z"/><g id="Layer_1-2"><path id="_Compound_Path_" fill="#FFFFFF" d="M61.9 106.5v-6.2c.2-2-1.3-3.7-3.3-3.9h-.5c-1.4-.1-2.7.6-3.5 1.8-.7-1.1-1.9-1.8-3.3-1.8-1.2-.1-2.3.5-3 1.5v-1.2h-2v9.9h2v-5.7c-.1-1.3.8-2.5 2.1-2.6h.4c1.4 0 2.2.9 2.2 2.6v5.7h2v-5.7c-.1-1.3.8-2.5 2.1-2.6h.4c1.5 0 2.2.9 2.2 2.6v5.7l2.2-.1zm32.1-10h-3.6v-3h-2v3h-2.1v1.8h2.1v4.7c0 2.3.8 3.7 3.3 3.7.9 0 1.9-.3 2.7-.8l-.6-1.8c-.6.3-1.2.5-1.9.6-1 0-1.5-.7-1.5-1.7v-4.8H94v-1.7zm18.3-.2c-1.1 0-2.1.5-2.7 1.5v-1.2h-2v9.9h2v-5.6c0-1.6.8-2.7 2.2-2.7.5 0 .9.1 1.3.2l.7-1.9c-.5-.1-1-.2-1.5-.2zm-27.7 1c-1.2-.7-2.6-1.1-4-1-2.5 0-4 1.2-4 3.1 0 1.6 1.1 2.6 3.3 2.9l1 .1c1.2.2 1.8.6 1.8 1.1 0 .8-.9 1.3-2.3 1.3-1.2 0-2.3-.3-3.3-1l-1 1.6c1.3.9 2.7 1.3 4.3 1.3 2.8 0 4.4-1.3 4.4-3.2 0-1.9-1.2-2.6-3.3-2.9l-1-.1c-.9-.1-1.8-.4-1.8-1s.8-1.2 2-1.2c1.1 0 2.1.3 3.1.9l.8-1.9zm29.9 4.2c-.1 2.7 2 5.1 4.7 5.2h.5c1.3.1 2.6-.4 3.5-1.2l-1-1.6c-.7.6-1.6.9-2.6.9-1.8-.2-3.2-1.8-3-3.7.2-1.6 1.4-2.9 3-3 .9 0 1.8.3 2.6.9l1-1.6c-1-.8-2.3-1.2-3.5-1.2-2.7-.1-5 2-5.2 4.7v.6zm-13.9-5.2c-2.9 0-4.9 2.1-4.9 5.2-.2 2.7 1.9 5 4.5 5.2h.5c1.5.1 2.9-.4 4-1.4l-1-1.5c-.8.7-1.8 1-2.9 1-1.5.1-2.8-1-3-2.5h7.4v-.8c.1-3.1-1.8-5.2-4.6-5.2zm0 1.8c1.4 0 2.5 1 2.6 2.4v.1h-5.3c.1-1.4 1.3-2.5 2.7-2.5zm-26.7 3.4v-4.9h-2v1.2c-.8-1-2-1.5-3.2-1.5-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2 1.2.1 2.4-.5 3.2-1.5v1.2h2v-4.9zm-7.9 0c-.1-1.7 1.1-3.2 2.8-3.4h.3c1.8.2 3.2 1.8 3 3.7-.2 1.6-1.4 2.9-3 3-1.7 0-3.1-1.4-3.1-3.1-.1 0-.1-.1 0-.2zm76.1-5.2c-1.1 0-2.1.5-2.7 1.5v-1.2h-2v9.9h2v-5.6c0-1.6.8-2.7 2.2-2.7.5 0 .9.1 1.3.2l.7-1.9c-.5-.1-1-.2-1.5-.2zm15.8 8.7c.1 0 .3 0 .4.1.1 0 .2.1.3.2.1.1.2.2.2.3.1.2.1.5 0 .8-.1.1-.1.2-.2.3-.1.1-.2.2-.3.2-.1.1-.3.1-.4.1-.4 0-.8-.2-.9-.6-.1-.2-.1-.5 0-.8.1-.1.1-.2.2-.3.1-.1.2-.2.3-.2.2 0 .3-.1.4-.1zm0 1.8c.1 0 .2 0 .3-.1.1 0 .2-.1.2-.2.3-.3.3-.7 0-1l-.2-.2c-.1 0-.2-.1-.3-.1-.1 0-.2 0-.3.1-.1 0-.2.1-.2.2-.3.3-.3.7 0 1 .1.1.2.1.2.2.1.1.2.1.3.1zm.1-1.2c.1 0 .2 0 .3.1.1.1.1.1.1.2s0 .1-.1.2-.1.1-.2.1l.3.3h-.2l-.3-.3h-.1v.3h-.2v-.9h.4zm-.2.1v.2h.3v-.2h-.3zm-23.3-4.2v-5h-2v1.2c-.8-1-2-1.5-3.2-1.5-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2 1.2.1 2.4-.5 3.2-1.5v1.2h2v-4.8zm-8 0c-.1-1.7 1.1-3.2 2.8-3.4h.3c1.8.2 3.2 1.8 3 3.7-.2 1.6-1.4 2.9-3 3-1.7 0-3.1-1.4-3.1-3.1v-.2zm27.9 0v-9h-2v5.2c-.8-1-2-1.5-3.2-1.5-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2 1.2.1 2.4-.5 3.2-1.5v1.2h2v-4.8zm-8 0c-.1-1.7 1.1-3.2 2.8-3.4h.3c1.8.3 3.1 2 2.8 3.9-.2 1.5-1.4 2.6-2.8 2.8-1.7 0-3.1-1.4-3.1-3.1-.1 0-.1-.1 0-.2z"/><g id="_Group_"><path fill="#FF5F00" d="M83.9 21h32.4v58.7H83.9z"/><path id="_Path_2" fill="#EB001B" d="M86 50.3C86 38.8 91.2 28 100.2 21c-16.1-12.7-39.4-9.9-52.1 6.3S38.2 67 54.3 79.7c13.4 10.6 32.4 10.6 45.8 0C91.2 72.6 86 61.8 86 50.3z"/><path fill="#F79E1B" d="M156.6 73.5v-1.2h.5V72h-1.2v.2h.5v1.2h.2zm2.4 0V72h-.4l-.4 1-.4-1h-.4v1.5h.3v-1.1l.4.9h.3l.4-.9v1.1h.2zm1.2-23.2c0 20.6-16.6 37.3-37.1 37.3-8.3 0-16.4-2.8-22.9-8 16.1-12.7 18.9-36.2 6.2-52.4-1.8-2.3-3.9-4.4-6.2-6.3 16.1-12.7 39.4-9.9 52.1 6.3 5.1 6.6 7.9 14.8 7.9 23.1z"/></g></g></svg>
<svg class="frb-cc-logo-amex" xmlns="http://www.w3.org/2000/svg" aria-labelledby="frb-cc-logo-amex-title" viewBox="0 0 200 120" height="18" width="30"><title id="frb-cc-logo-amex-title">Amex</title><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="187.342" y1="3564.816" x2="13.247" y2="3503.596" gradientTransform="translate(0 -3474.102)"><stop offset="0" stop-color="#51BCEA"/><stop offset="1" stop-color="#3078BC"/></linearGradient><path fill="url(#SVGID_1_)" d="M192.3 120H7.7c-4.2 0-7.7-3.5-7.7-7.7V7.7C0 3.5 3.5 0 7.7 0h184.6c4.2 0 7.7 3.5 7.7 7.7v104.7c0 4.1-3.5 7.6-7.7 7.6z"/><path fill="#FFFFFF" d="M162.8 60.1L179 42.5h-11L157.4 54l-10.2-11.5h-33.4v35h32.9l10.6-11.6 10.2 11.6h10.8l-15.5-17.4zm-20.3 10.1H122v-7h18.2V56H122v-6.4h20.8l9.1 10.2-9.4 10.4zm-95-7.7l-5.6-13.9-5.6 13.9m74.4 15h-8.5V50.1L90.1 77.5h-7.3L70.7 50.1v27.4h-17l-3.2-7.8H33.2L30 77.5h-9l14.9-35h12.3l14.1 33.1V42.5H76l10.9 23.7 10-23.7h13.8v35z"/></svg>
<svg class="frb-cc-logo-jcb" xmlns="http://www.w3.org/2000/svg" aria-labelledby="frb-cc-logo-jcb-title" viewBox="0 0 200 120" height="18" width="30"><title id="frb-cc-logo-jcb-title">JCB</title><path fill="#FFFFFF" d="M193.1 0H7.7C3.4 0 0 3.3 0 7.5v105c0 3.9 3.1 7.1 6.9 7.5h185.4c4.3 0 7.7-3.4 7.7-7.5V7.5c0-3.9-3.1-7.1-6.9-7.5z"/><linearGradient id="path6338_1_" gradientUnits="userSpaceOnUse" x1="-227.894" y1="959.936" x2="-209.808" y2="959.936" gradientTransform="matrix(2.0492 0 0 -2.0492 590.04 2032.794)"><stop offset="0" stop-color="#007940"/><stop offset=".229" stop-color="#00873F"/><stop offset=".743" stop-color="#40A737"/><stop offset="1" stop-color="#5CB531"/></linearGradient><path id="path6338" fill="url(#path6338_1_)" d="M130.4 69.6h8.7c.2 0 .8-.1 1.1-.1 1.6-.3 3.1-1.8 3.1-3.9 0-2-1.4-3.5-3.1-3.9-.2-.1-.7-.1-1.1-.1h-8.7v8z"/><linearGradient id="path6349_1_" gradientUnits="userSpaceOnUse" x1="-227.894" y1="962.732" x2="-209.823" y2="962.732" gradientTransform="matrix(2.0492 0 0 -2.0492 590.04 2032.794)"><stop offset="0" stop-color="#007940"/><stop offset=".229" stop-color="#00873F"/><stop offset=".743" stop-color="#40A737"/><stop offset="1" stop-color="#5CB531"/></linearGradient><path id="path6349" fill="url(#path6349_1_)" d="M138.1 15c-8.2 0-15 6.7-15 15v15.6h21.2c.5 0 1.1 0 1.5.1 4.8.2 8.3 2.7 8.3 7 0 3.4-2.4 6.3-6.8 6.8v.2c4.9.3 8.6 3 8.6 7.3 0 4.5-4.1 7.5-9.6 7.5H123V105h22c8.2 0 15-6.7 15-15V15h-21.9z"/><linearGradient id="path6360_1_" gradientUnits="userSpaceOnUse" x1="-227.894" y1="965.808" x2="-209.807" y2="965.808" gradientTransform="matrix(2.0492 0 0 -2.0492 590.04 2032.794)"><stop offset="0" stop-color="#007940"/><stop offset=".229" stop-color="#00873F"/><stop offset=".743" stop-color="#40A737"/><stop offset="1" stop-color="#5CB531"/></linearGradient><path id="path6360" fill="url(#path6360_1_)" d="M142.1 53.7c0-2-1.4-3.3-3.1-3.5-.2 0-.6-.1-.8-.1h-7.8v7.3h7.8c.2 0 .7 0 .8-.1 1.7-.3 3.1-1.7 3.1-3.6z"/><linearGradient id="path6371_1_" gradientUnits="userSpaceOnUse" x1="-268.384" y1="962.752" x2="-250.018" y2="962.752" gradientTransform="matrix(2.0492 0 0 -2.0492 590.04 2032.794)"><stop offset="0" stop-color="#1F286F"/><stop offset=".475" stop-color="#004E94"/><stop offset=".826" stop-color="#0066B1"/><stop offset="1" stop-color="#006FBC"/></linearGradient><path id="path6371" fill="url(#path6371_1_)" d="M55.1 15c-8.2 0-15 6.7-15 15v37c4.2 2.1 8.6 3.4 12.9 3.4 5.2 0 8-3.1 8-7.4V45.5h12.9v17.4c0 6.8-4.2 12.3-18.5 12.3-8.7 0-15.4-1.9-15.4-1.9v31.6h22c8.2 0 15-6.7 15-15V15H55.1z"/><linearGradient id="path6384_1_" gradientUnits="userSpaceOnUse" x1="-248.235" y1="962.712" x2="-230.398" y2="962.712" gradientTransform="matrix(2.0492 0 0 -2.0492 590.04 2032.794)"><stop offset="0" stop-color="#6C2C2F"/><stop offset=".173" stop-color="#882730"/><stop offset=".573" stop-color="#BE1833"/><stop offset=".859" stop-color="#DC0436"/><stop offset="1" stop-color="#E60039"/></linearGradient><path id="path6384" fill="url(#path6384_1_)" d="M96.6 15c-8.2 0-15 6.7-15 15v19.6c3.8-3.2 10.4-5.3 21-4.8 5.7.2 11.8 1.8 11.8 1.8V53c-3.1-1.6-6.7-3-11.4-3.3-8.1-.6-12.9 3.4-12.9 10.3 0 7 4.9 11 12.9 10.3 4.7-.3 8.3-1.8 11.4-3.3v6.3s-6 1.6-11.8 1.8c-10.6.5-17.2-1.6-21-4.8V105h22c8.2 0 15-6.7 15-15V15h-22z"/></svg>
<svg class="frb-cc-logo-discover" xmlns="http://www.w3.org/2000/svg" aria-labelledby="frb-cc-logo-discover-title" viewBox="0 0 200 120" height="18" width="30"><title id="frb-cc-logo-discover-title">Discover</title><path fill="#FFFFFF" d="M192.3 120H7.7c-4.2 0-7.7-3.5-7.7-7.7V7.7C0 3.5 3.5 0 7.7 0h184.6c4.2 0 7.7 3.5 7.7 7.7v104.7c0 4.1-3.5 7.6-7.7 7.6z"/><path fill="#E77730" d="M47.5 120h144.8c4.2 0 7.7-3.5 7.7-7.7V64.6s-21.5 15.4-61.9 31C104 108.9 57 118.2 47.5 120z"/><path fill="#211E1E" d="M26.6 54.2c-1.8 1.6-4 2.3-7.6 2.3h-1.5V37.8H19c3.6 0 5.8.6 7.6 2.3 1.9 1.7 3.1 4.4 3.1 7 0 2.7-1.2 5.4-3.1 7.1m-6.5-21.3h-8.2v28.2H20c4.3 0 7.4-1 10.2-3.3 3.3-2.7 5.2-6.7 5.2-10.8 0-8.2-6.3-14.1-15.3-14.1M38 61.3h5.6V32.9H38v28.4zm19.1-17.5c-3.3-1.2-4.3-2-4.3-3.6 0-1.8 1.8-3.2 4.1-3.2 1.7 0 3 .7 4.5 2.3l2.9-3.8c-2.4-2.1-5.3-3.2-8.4-3.2-5.1 0-8.9 3.5-8.9 8.1 0 3.9 1.8 5.9 7 7.7 2.2.8 3.3 1.3 3.8 1.6 1.1.7 1.7 1.8 1.7 2.9 0 2.3-1.9 4-4.3 4-2.7 0-4.8-1.3-6.1-3.8l-3.6 3.5c2.6 3.8 5.6 5.3 9.9 5.3 5.8 0 9.8-3.8 9.8-9.2.2-4.3-1.7-6.3-8.1-8.6m10 3.3c0 8.3 6.6 14.8 15.1 14.8 2.4 0 4.5-.5 7-1.7v-6.5c-2.2 2.2-4.2 3.1-6.7 3.1-5.6 0-9.6-4.1-9.6-9.7 0-5.4 4.1-9.7 9.3-9.7 2.7 0 4.7 1 7 3.2V34c-2.4-1.2-4.5-1.8-6.9-1.8-8.4.1-15.2 6.7-15.2 14.9m66.2 4.9l-7.6-19h-6.1l12.1 29h3l12.4-29h-6l-7.8 19m16.3 9.3h15.8v-4.8h-10.2v-7.7h9.8V44h-9.8v-6.2h10.2v-4.9h-15.8M176.3 46h-1.6v-8.5h1.7c3.5 0 5.4 1.4 5.4 4.2-.1 2.7-2 4.3-5.5 4.3m11.1-4.6c0-5.2-3.7-8.3-10.1-8.3H169v28.2h5.6V49.9h.7l7.7 11.4h6.9l-9-11.9c4.2-.9 6.5-3.8 6.5-8"/><path fill="#E77731" d="M121.2 47.1c0 8.2-6.8 15-15.1 15S91 55.3 91 47.1s6.8-15 15.1-15c8.4 0 15.1 6.8 15.1 15"/><path fill="none" d="M106.3 32c-.6 0-1.2 0-1.8.1.2 0 .4 0 .6-.1.5.1.9.1 1.2 0h.8-.8M91.4 43.6c-.1.5-.2 1.1-.3 1.6 0 .2 0 .4-.1.5.1-.5.1-1 .2-1.5.1-.1.1-.3.2-.6"/></svg>
</span>
</label>
</div>
</div>
<div class="frb-button frb-pm-pp" onclick="frb.setMethod({ method:'paypal' });">
<div class="frb-button-table">
<input id="frb-pm-pp" type="radio" name="frb-methods" class="frb-radio" />
<label for="frb-pm-pp" class="frb-label">
<svg class="frb-logo-payments frb-logo-payments--paypal" role="img" aria-labelledby="frb-logo-paypal-title" width="80" height="24" viewBox="0 0 80 24" xmlns="http://www.w3.org/2000/svg"><title id="frb-logo-paypal-title">{{{FR2015_translations,pm-paypal}}}</title><g fill-rule="nonzero" fill="none"><path d="M12.444 5.085H6.97a.763.763 0 0 0-.752.648L4.006 19.891c-.044.279.17.53.451.53H7.07a.762.762 0 0 0 .751-.647l.597-3.819a.762.762 0 0 1 .75-.648h1.733c3.606 0 5.686-1.76 6.23-5.248.245-1.526.01-2.724-.698-3.564-.778-.922-2.158-1.41-3.99-1.41zm.631 5.171c-.3 1.981-1.8 1.981-3.25 1.981h-.826l.579-3.7a.457.457 0 0 1 .45-.388h.379c.988 0 1.92 0 2.402.569.288.339.376.842.266 1.538zM28.803 10.193h-2.62a.458.458 0 0 0-.451.388l-.116.74-.184-.269c-.567-.83-1.832-1.108-3.095-1.108-2.896 0-5.37 2.213-5.851 5.317-.25 1.548.105 3.029.976 4.061.799.95 1.941 1.345 3.301 1.345 2.334 0 3.628-1.513 3.628-1.513l-.117.734c-.044.281.17.533.45.533h2.36a.763.763 0 0 0 .752-.648l1.416-9.05a.457.457 0 0 0-.449-.53zm-3.653 5.145c-.253 1.51-1.441 2.525-2.957 2.525-.76 0-1.37-.246-1.76-.713-.387-.464-.534-1.123-.411-1.858.236-1.497 1.444-2.544 2.937-2.544.744 0 1.35.25 1.748.72.399.475.557 1.139.443 1.87zM42.761 10.193h-2.634a.761.761 0 0 0-.63.336l-3.632 5.398-1.54-5.187a.764.764 0 0 0-.73-.547h-2.587a.46.46 0 0 0-.433.608l2.9 8.588-2.726 3.884a.46.46 0 0 0 .372.727h2.63c.25 0 .483-.123.625-.33l8.76-12.755a.46.46 0 0 0-.375-.722" fill="#283B82"/><path d="M51.48 5.085h-5.473a.762.762 0 0 0-.75.648l-2.214 14.158c-.044.279.17.53.45.53H46.3c.261 0 .485-.191.525-.453l.628-4.013a.762.762 0 0 1 .751-.648h1.732c3.606 0 5.686-1.76 6.23-5.248.246-1.526.01-2.724-.699-3.564-.777-.922-2.156-1.41-3.987-1.41zm.632 5.171c-.299 1.981-1.799 1.981-3.25 1.981h-.826l.58-3.7a.456.456 0 0 1 .45-.388h.379c.987 0 1.92 0 2.402.569.287.339.375.842.265 1.538zM67.84 10.193h-2.62a.455.455 0 0 0-.45.388l-.116.74-.184-.269c-.567-.83-1.832-1.108-3.094-1.108-2.897 0-5.37 2.213-5.851 5.317-.25 1.548.105 3.029.976 4.061.8.95 1.94 1.345 3.3 1.345 2.334 0 3.628-1.513 3.628-1.513l-.117.734c-.044.281.17.533.452.533h2.36a.762.762 0 0 0 .75-.648l1.417-9.05a.46.46 0 0 0-.452-.53zm-3.654 5.145c-.251 1.51-1.441 2.525-2.957 2.525-.76 0-1.37-.246-1.76-.713-.387-.464-.533-1.123-.41-1.858.237-1.497 1.444-2.544 2.936-2.544.744 0 1.35.25 1.748.72.4.475.56 1.139.443 1.87zM70.929 5.474L68.683 19.89c-.044.279.17.53.45.53h2.258a.761.761 0 0 0 .751-.647l2.215-14.157a.459.459 0 0 0-.45-.532H71.38a.458.458 0 0 0-.45.389" fill="#469BDB"/></g></svg>
</label>
</div>
</div>
<div class="frb-button frb-pm-amazon no-monthly">
<div class="frb-button-table">
<input id="frb-pm-amazon" type="radio" name="frb-methods" class="frb-radio" onclick="frb.setMethod({ method:'amazon' }, 'no-monthly');" />
<label for="frb-pm-amazon" class="frb-label">
<svg class="frb-logo-payments frb-logo-payments--amazon" role="img" aria-labelledby="frb-logo-amazon-pay-title" width="80" height="24" viewBox="0 0 80 24" xmlns="http://www.w3.org/2000/svg"><title id="frb-logo-amazon-pay-title">{{{FR2015_translations,pm-amazon}}}</title><g fill-rule="nonzero" fill="none"><path d="M17.33 9.035c.278.07.56.125.82.26.655.349 1.01.895 1.097 1.63.03.27.038.542.038.814 0 1.896-.004 3.793-.007 5.689 0 .31-.097.407-.404.407H17.5c-.275 0-.38-.104-.38-.38v-5.08c0-.167-.003-.334-.027-.504-.094-.675-.675-1.01-1.305-.738-.46.195-.63.585-.686 1.051a7.11 7.11 0 0 0-.038.818v4.42c0 .32-.094.417-.41.417h-1.358c-.289 0-.386-.101-.386-.387 0-1.61 0-3.225.003-4.837 0-.31-.013-.612-.104-.911-.122-.4-.376-.623-.745-.65-.497-.036-.814.128-1.002.521-.16.33-.198.689-.202 1.05-.007 1.591-.007 3.178-.007 4.768 0 .359-.083.446-.435.446h-1.34c-.274 0-.379-.105-.379-.376V9.599c0-.293.094-.39.38-.39H10.4c.244 0 .348.108.352.348 0 .316 0 .633.024.957.062-.133.122-.268.195-.394.323-.58.804-.946 1.468-1.047.025-.003.045-.007.052-.035h.696c.007.007.014.025.021.025.752.097 1.222.556 1.552 1.2.038.077.08.157.132.254a5.77 5.77 0 0 1 .074-.163c.295-.627.775-1.04 1.444-1.229.097-.028.205-.02.292-.083.209-.007.417-.007.626-.007zM4.28 9.035c.209.08.435.08.65.139.384.104.746.25 1.066.487.584.435.824 1.044.86 1.744.051 1.113.01 2.223.02 3.337 0 .114 0 .233.004.348.01.344.11.657.302.946.06.087.119.17.181.254.268.366.261.418-.083.71-.317.271-.63.546-.947.818-.223.195-.355.195-.574.003a3.175 3.175 0 0 1-.672-.79c-.076-.128-.121-.153-.243-.031-.425.431-.901.786-1.503.919-.56.125-1.128.153-1.688 0-.93-.254-1.42-.902-1.583-1.827-.007-.038.014-.084-.039-.105v-.835c.049-.02.032-.07.039-.104.1-.574.344-1.075.769-1.483.55-.525 1.238-.748 1.966-.883a17.19 17.19 0 0 1 1.687-.21c.126-.01.185-.04.174-.184-.014-.191 0-.382-.01-.574-.024-.508-.254-.828-.686-.96a1.376 1.376 0 0 0-1.06.104c-.314.16-.495.421-.582.762-.056.226-.15.317-.317.303a51.272 51.272 0 0 1-1.45-.153c-.213-.024-.297-.16-.255-.372.045-.234.115-.46.216-.676.39-.824 1.075-1.273 1.924-1.52.258-.077.533-.077.787-.174.351.007.7.007 1.047.007zm.386 5.317c0-.223-.003-.372 0-.526.004-.08-.02-.11-.107-.107a4.925 4.925 0 0 0-.933.09c-.919.202-1.364.766-1.288 1.646.032.386.167.73.554.898.393.17.758.08 1.092-.17.178-.136.307-.314.414-.509.237-.435.275-.908.268-1.322zM24.88 9.035c.223.049.45.087.668.142.453.115.874.303 1.229.62.532.48.696 1.11.706 1.788.014 1.062.021 2.123.004 3.184-.01.585.139 1.097.511 1.545.049.056.09.122.126.188.07.14.059.265-.07.373-.376.32-.745.643-1.12.967-.206.174-.342.167-.55-.01a3.517 3.517 0 0 1-.703-.835c-.063-.101-.101-.105-.188-.021-.435.438-.912.81-1.531.946-.651.14-1.302.17-1.935-.076-.793-.31-1.214-.923-1.333-1.744-.153-1.047.084-1.97.926-2.676.466-.39 1.023-.577 1.607-.7.613-.128 1.236-.19 1.859-.243.15-.014.219-.052.202-.215-.018-.185-.01-.37-.018-.557-.042-.87-.717-1.076-1.294-.989-.536.08-.895.376-1.034.92-.066.253-.15.305-.414.281-.445-.045-.887-.09-1.33-.143-.232-.027-.32-.17-.27-.407.257-1.169 1.019-1.844 2.136-2.157.275-.077.56-.119.839-.178.327-.003.654-.003.977-.003zm.404 5.296c0-.157-.003-.313 0-.47.004-.097-.017-.146-.132-.142-.296.01-.588.027-.88.083-.958.188-1.41.783-1.312 1.723.08.772.803 1.148 1.478.762.254-.147.435-.362.575-.613.23-.417.268-.877.271-1.343zM48.89 9.035c.178.059.37.073.547.142.766.3 1.159.884 1.302 1.667.07.383.1.77.1 1.159.004 1.827.004 3.654.004 5.48 0 .24-.108.349-.351.352-.488.004-.975.004-1.462 0-.233 0-.344-.118-.344-.358V12.57c0-.278-.021-.557-.094-.824-.101-.376-.31-.648-.717-.707-.418-.062-.738.105-.968.446-.24.354-.327.769-.34 1.186-.05 1.496-.011 2.993-.022 4.49 0 .114.004.232 0 .347-.007.212-.114.327-.323.33-.505.008-1.01.008-1.514 0-.216-.003-.313-.121-.313-.368v-2.906c0-1.646 0-3.292-.004-4.941 0-.327.084-.41.408-.41h1.27c.26 0 .358.097.358.354v1.086c.077-.021.077-.09.098-.136.118-.264.257-.518.438-.748a1.859 1.859 0 0 1 1.187-.692c.03-.007.073.007.087-.035.212-.007.435-.007.654-.007zM40.017 9.035c.126.062.265.055.397.087 1.086.254 1.84.932 2.269 1.928.706 1.635.748 3.302-.004 4.934-.494 1.068-1.322 1.768-2.515 1.976a3.242 3.242 0 0 1-3.428-1.652c-.49-.895-.665-1.855-.661-2.86.007-.94.17-1.845.63-2.677.536-.967 1.336-1.566 2.45-1.705.024-.003.045-.007.055-.031h.807zm-1.597 4.363c0 .314-.017.627.004.94.034.49.1.981.33 1.427.174.337.432.56.825.574.4.01.703-.164.915-.501.122-.192.198-.404.25-.627.182-.8.157-1.61.119-2.422-.024-.48-.08-.956-.247-1.416-.16-.442-.473-.671-.943-.689-.432-.017-.741.181-.95.553a1.894 1.894 0 0 0-.174.435c-.153.564-.15 1.145-.129 1.726z" fill="#343F48"/><path d="M19.626 24.346c-.188-.07-.386-.045-.578-.06a19.687 19.687 0 0 1-9.18-3.058 20.499 20.499 0 0 1-2.543-1.935.514.514 0 0 1-.094-.1c-.066-.091-.09-.189-.02-.29.069-.1.177-.114.281-.08.087.028.167.077.247.122a26.22 26.22 0 0 0 6.994 2.732c1.632.383 3.289.616 4.966.692 3.918.181 7.676-.515 11.299-2 .1-.042.202-.091.313-.095.184-.006.351.084.414.23.066.15.031.324-.129.449-.23.177-.466.345-.71.501-1.304.846-2.714 1.469-4.196 1.935a20.6 20.6 0 0 1-5.008.922c-.038.003-.083-.017-.107.035h-1.95z" fill="#FE9901"/><path d="M56.72 10.176c.192-.136.37-.282.564-.403 1.05-.662 2.175-.884 3.368-.484.989.33 1.605 1.061 1.939 2.022.49 1.423.49 2.86-.032 4.273-.435 1.18-1.245 1.994-2.516 2.23-1.127.21-2.164-.038-3.065-.772-.045-.035-.087-.07-.16-.126v3.742c0 .368-.077.441-.453.445-.268 0-.532.003-.8 0-.282-.004-.38-.098-.38-.376V9.713c0-.271.098-.365.37-.365.233 0 .462-.004.696 0 .212.003.32.094.361.3.021.09.025.184.05.274.027.084.006.174.058.254zm.105 3.296v2.174c0 .07-.007.13.066.181.633.453 1.322.738 2.109.738 1.023 0 1.712-.445 2.025-1.399a5.297 5.297 0 0 0-.01-3.379c-.303-.908-.947-1.336-1.904-1.36-.8-.021-1.514.226-2.168.668-.087.059-.122.118-.118.223.003.716 0 1.433 0 2.154zM32.397 10.917h-2.614c-.292 0-.379-.09-.379-.386V9.54c0-.25.101-.358.345-.358 1.687-.004 3.375-.004 5.063 0 .247 0 .348.1.351.348.004.289 0 .581.004.87.003.23-.126.407-.247.581-.519.748-1.044 1.49-1.566 2.234-.411.588-.825 1.176-1.26 1.796h.296c.898.007 1.76.17 2.568.58.26.133.372.328.365.613-.007.348 0 .696-.003 1.044-.004.317-.185.432-.467.3-1.764-.832-3.528-.836-5.292.006-.265.126-.45.021-.453-.275-.007-.424 0-.845.004-1.27.003-.282.1-.529.264-.758.968-1.382 1.932-2.767 2.895-4.148.039-.049.073-.105.126-.185zM69.4 16.847a4.976 4.976 0 0 1-.876.591c-.905.46-1.852.64-2.84.331-.905-.285-1.416-.926-1.552-1.862-.094-.643-.02-1.263.341-1.82.453-.696 1.128-1.044 1.921-1.186.919-.167 1.823-.042 2.721.153.223.049.223.052.223-.174-.004-.376.01-.755-.014-1.131-.06-.853-.46-1.253-1.308-1.322-1.003-.084-1.973.083-2.93.372-.33.101-.428.035-.432-.306 0-.14.004-.279 0-.418-.007-.226.098-.365.303-.452.466-.198.953-.32 1.451-.4.793-.129 1.59-.178 2.387-.042.741.125 1.392.404 1.775 1.107.209.382.306.803.306 1.235.01 1.949.007 3.897.007 5.842 0 .24-.097.338-.338.341-.226.004-.452.004-.678 0-.237-.003-.338-.087-.38-.316-.03-.17-.052-.338-.086-.543zm-.062-1.844c0-.244-.004-.488 0-.731 0-.084-.024-.118-.111-.14-.717-.149-1.438-.246-2.172-.156-.925.111-1.381.654-1.322 1.576.038.571.372.968.926 1.086.174.038.354.049.535.035.742-.052 1.403-.32 2.008-.741.094-.066.143-.133.136-.254-.007-.223 0-.45 0-.675zM76.05 16.175c.547-1.566 1.083-3.107 1.619-4.645.198-.574.396-1.149.598-1.72.146-.417.216-.462.658-.462.271 0 .546-.004.817 0 .202.003.272.087.23.289-.042.205-.136.393-.212.588a4131.2 4131.2 0 0 1-3.588 9.12 4.17 4.17 0 0 1-.706 1.208c-.407.47-.93.696-1.538.73-.39.021-.776.008-1.155-.1-.265-.073-.352-.181-.359-.456a8.131 8.131 0 0 1 0-.505c.007-.215.094-.296.31-.268.271.035.54.063.814.046.466-.032.828-.23 1.068-.64.282-.477.425-1.013.63-1.521.032-.073-.01-.136-.038-.199-1.037-2.56-2.078-5.122-3.114-7.683a2.001 2.001 0 0 1-.115-.345c-.035-.167.038-.26.205-.264.372-.007.741-.004 1.114 0 .236 0 .344.157.417.355.22.602.439 1.207.658 1.81.54 1.489 1.075 2.982 1.61 4.47.018.057.043.109.077.192z" fill="#343F48"/><path d="M31.36 19.328c-.661 0-1.32.083-1.973.153-.108.01-.237.045-.29-.083-.055-.14.05-.23.15-.303a4.104 4.104 0 0 1 1.504-.647c.94-.213 1.879-.247 2.822-.021.045.01.087.028.132.038.292.07.418.261.425.553a4.896 4.896 0 0 1-.213 1.49c-.247.866-.626 1.666-1.245 2.338a2.283 2.283 0 0 1-.373.338c-.083.059-.184.1-.275.03-.097-.072-.059-.177-.024-.27.25-.64.505-1.281.689-1.946.097-.358.191-.717.164-1.092-.018-.268-.108-.383-.362-.467-.366-.121-.749-.111-1.131-.111z" fill="#FE9901"/></g></svg>
</label>
</div>
</div>
</div>
</fieldset>
 
<fieldset class="frb-fieldset frb-optin" style="display: none;">
<legend class="frb-message">
{{{FR2015_translations,optin-can-we-follow}}}
</legend>
<div class="frb-buttons-wrapper">
<div class="frb-button">
<input class="frb-radio" type="radio" name="opt_in" id="frb-optin-yes" value="1">
<label class="frb-label" for="frb-optin-yes">{{{FR2015_translations,optin-yes}}}</label>
</div>
<div class="frb-button">
<input class="frb-radio" type="radio" name="opt_in" id="frb-optin-no" value="0">
<label class="frb-label" for="frb-optin-no">{{{FR2015_translations,optin-no}}}</label>
</div>
</div>
<p class="frb-message frb-message--typing frb-message--optin is-hidden">
<svg class="type-indicator" aria-hidden="true" width="42" height="10" viewBox="0 0 42 10" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle class="type-indicator__circle" fill="#B3D1FF" style="/*mix-blend-mode:multiply*/" cx="5" cy="5" r="5"/><circle class="type-indicator__circle" fill="#B3D1FF" style="/*mix-blend-mode:multiply*/" cx="21" cy="5" r="5"/><circle class="type-indicator__circle" fill="#80B3FF" style="/*mix-blend-mode:multiply*/" cx="37" cy="5" r="5"/></g></svg>
</p>
<p class="frb-message is-hidden frb-optin-no-prompt frb-message--optin">
<span class="frb-optin-no-prompt__no">😔 {{{FR2015_translations,optin-we-sorry}}}</span>
<span class="frb-optin-no-prompt__yes">😍 {{{FR2015_translations,optin-thanks-changing}}}</span>
</p>
<p class="frb-optin-legal">{{{FR2015_translations,optin-info-handled}}}</p>
</fieldset>
 
<button id="frb-donate" class="frb-submit" onclick="return false;">
<svg class="frb-icon frb-icon-lock" role="img" aria-labelledby="frb-icon-lock-title" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title id="frb-icon-lock-title">{{{FR2015_translations,secure-transaction}}}</title><path d="M16.07 8H15V5s0-5-5-5-5 5-5 5v3H3.93A1.93 1.93 0 0 0 2 9.93v8.15A1.93 1.93 0 0 0 3.93 20h12.14A1.93 1.93 0 0 0 18 18.07V9.93A1.93 1.93 0 0 0 16.07 8zM10 16a2 2 0 1 1 2-2 2 2 0 0 1-2 2zm3-8H7V5.5C7 4 7 2 10 2s3 2 3 3.5z"/></svg>
<span class="frb-submit-txt">{{{FR2015_translations,donate-now}}}</span>
</button>
 
<div class="frb-error frb-error-smallamount">{{{FR2015_translations,smallamount-error}}}</div>
<div class="frb-error frb-error-bigamount">{{{FR2015_translations,bigamount-error}}}</div>
<div class="frb-error frb-error-method">{{{FR2015_translations,select-payment-method-please}}}</div>
<div class="frb-error frb-error-optin">{{{FR2015_translations,optin-please-select-email-option}}}</div>
 
</div><!--frb-step-2-->
 
<div class="frb-mask"></div>
<div class="frb-step-upsell" style="display: none;">
<button class="frb-back-step">
<svg class="frb-icon frb-icon-back" aria-labelledby="frb-icon-back-title" xmlns="http://www.w3.org/2000/svg" width="20" height="16" viewBox="0 0 20 16"><title id="frb-icon-back-title">{{{FR2015_translations,back}}}</title><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><path stroke="#72777D" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.778" d="M7.181 13.285L.753 7 7.181.715"/><rect width="18.182" height="1.778" x=".818" y="6.111" fill="#72777D" rx=".889"/></g></svg>
</button>
<button class="frb-back">
<svg class="frb-icon frb-icon-back" aria-labelledby="frb-icon-back-title" xmlns="http://www.w3.org/2000/svg" width="20" height="16" viewBox="0 0 20 16"><title id="frb-icon-back-title">{{{FR2015_translations,back}}}</title><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><path stroke="#72777D" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.778" d="M7.181 13.285L.753 7 7.181.715"/><rect width="18.182" height="1.778" x=".818" y="6.111" fill="#72777D" rx=".889"/></g></svg>
</button>
 
<div class="frb-upsell">
<p class="frb-upsell-cta">{{{FR2015_translations,why-not-make}}}</p>
<p class="frb-upsell-color">{{{FR2015_translations,monthly-best}}}</p>
</div>
 
<div class="frb-monthly-buttons">
 
<button id="frb-monthly-donate-no" class="frb-submit active" onclick="return false;">
<span class="frb-submit-txt">{{{FR2015_translations,no-thanks-one}}}</span>
</button>
 
<button id="frb-monthly-donate-yes" class="frb-submit active" onclick="return false;">
<span class="frb-submit-txt">{{{FR2015_translations,yes-each-month}}}</span>
</button>
 
<button class="frb-monthly-diff-amt-link">{{{FR2015_translations,yes-but-different}}}</button>
 
</div>
 
<div class="frb-monthly-diff-amt">
<p class="frb-upsell-ty">{{{FR2015_translations,thank-you-support}}}</p>
<div class="frb-amt-monthly">
<label for="frb-amt-monthly-other-input">{{{FR2015_translations,enter-monthly-amt}}}</label>
<input name="otherMonthlyAmount" type="text" inputmode="decimal" id="frb-amt-monthly-other-input" size="3" autocomplete="off" value="" />
</div>
<div class="frb-error frb-error-smallamount">{{{FR2015_translations,smallamount-error}}}</div>
<div class="frb-error frb-error-bigamount">{{{FR2015_translations,bigamount-error}}}</div>
<button id="frb-donate-monthly-other" class="frb-submit" onclick="return false;">
<span class="frb-submit-secure-transaction">
<svg class="frb-icon frb-icon-lock" role="img" aria-labelledby="frb-icon-lock-title" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><title id="frb-icon-lock-title">{{{FR2015_translations,secure-transaction}}}</title><path d="M16.07 8H15V5s0-5-5-5-5 5-5 5v3H3.93A1.93 1.93 0 0 0 2 9.93v8.15A1.93 1.93 0 0 0 3.93 20h12.14A1.93 1.93 0 0 0 18 18.07V9.93A1.93 1.93 0 0 0 16.07 8zM10 16a2 2 0 1 1 2-2 2 2 0 0 1-2 2zm3-8H7V5.5C7 4 7 2 10 2s3 2 3 3.5z"/></svg>
</span>
<span class="frb-submit-txt">{{{FR2015_translations,donate}}} <span class="frb-monthly-total"></span> <span class="frb-submit-label-now">{{{FR2015_translations,now}}}</span><span class="frb-submit-label-monthly">{{{FR2015_translations,monthly}}}</span></span>
</button>
</div>
 
</div><!--frb-step-upsell-->
 
</form><!--frb-form-->
 
<div class="frb-rml-wrapper">
<h2 class="frb-visually-hidden">Fundraising remind me later form</h2>
<button class="frb-rml-link js-rml">
{{{FR2015_translations,maybe-later}}}
</button>
 
<p class="frb-message frb-message--typing is-hidden">
<svg class="type-indicator" aria-hidden="true" width="42" height="10" viewBox="0 0 42 10" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle class="type-indicator__circle" fill="#B3D1FF" style="/*mix-blend-mode:multiply*/" cx="5" cy="5" r="5"/><circle class="type-indicator__circle" fill="#B3D1FF" style="/*mix-blend-mode:multiply*/" cx="21" cy="5" r="5"/><circle class="type-indicator__circle" fill="#80B3FF" style="/*mix-blend-mode:multiply*/" cx="37" cy="5" r="5"/></g></svg>
</p>
 
<form class="frb-rml-form is-hidden" id="frb-rml-form" method="post" action="https://www.pages04.net/wikimedia/remind/Form?sp_source={{{banner}}}">
<p class="frb-message frb-message--standard">
{{{FR2015_translations,remind-me-please-enter}}}
</p>
<input type="hidden" name="formSourceName" value="StandardForm" />
<!-- DO NOT REMOVE HIDDEN FIELD sp_exp -->
<input type="hidden" name="sp_exp" value="yes" />
<input type="hidden" name="rml_source" value="{{{banner}}}" />
<input type="hidden" name="rml_country" value="" />
<input type="hidden" name="rml_language" value="" />
<input type="hidden" name="rml_submitDate" value="" />
<input type="hidden" name="rml_segment" value="" />
<input type="email" name="Email" class="frb-rml-email" id="frb-rml-email" placeholder="{{{FR2015_translations,remind-me-donor-email}}}" dir="ltr" autocomplete="email" />
<div class="frb-error frb-error-invalidemail">
{{{FR2015_translations,remind-me-error-msg-invalid}}}
</div>
<button class="frb-submit-rml" id="frb-rml-submit" type="submit">{{{FR2015_translations,remind-me-submit}}}</button>
</form>
 
<p class="frb-message frb-message--standard frb-rml-ty is-hidden">
{{{FR2015_translations,remind-me-thankyou}}}
</p>
</div><!--end frb-rml-wrapper-->
 
</div><!--frb-conversation-->
 
<div class="frb-footer">
<h2 class="frb-visually-hidden">Fundraising legal footer</h2>
{{MediaWiki:FundraisingBanners/SmallPrint-2017}}
</div><!--end frb-footer-->
<hr class="frb-separator" />
 
</div><!--frb-main-->
</div><!--end frb-->
 
<script>
var frb = frb || {};
 
frb.show = function() {
$('.banner-container').insertBefore('#content');
$('.frb').css('display', 'block');
$('.frb').addClass('frb-country-' + mw.centralNotice.data.country);
};
 
frb.toggleMonthly = function(monthly) {
// TODO: why is this so complicated?
if( monthly.type === 'checkbox' ) {
monthly = monthly.checked;
}
if ( monthly ) {
$('#frb-frequency-monthly').prop("checked", true);
$('#frb-monthly-checkbox').prop("checked", true);
$('#frb-form').addClass('form-monthly');
$('.no-monthly input[type=radio]').attr('disabled', true);
$('#frb-form').addClass('form-monthly');
if( $( '.form-monthly .no-monthly input[type=radio]' ).is(':checked') ) {
$('.form-monthly .no-monthly input[type=radio]').removeAttr('checked');
frb.setMethod({});
}
} else {
$('#frb-frequency-onetime').prop("checked", true);
$('#frb-monthly-checkbox').prop("checked", false);
$('#frb-form').removeClass('form-monthly');
$('.no-monthly input[type=radio]').attr('disabled', false);
$('.no-monthly').prop('disabled', false);
}
};
 
{{MediaWiki:FundraisingBanners/LocalizeData-2017.js}}
{{MediaWiki:FundraisingBanners/CoreJS-2018.js}}
{{MediaWiki:FundraisingBanners/LocalizeJS-2017.js}}
 
frb.rml = {
 
post: function() {
/* Create the iframe for the form and use it as the form's target */
var frameName = 'remindFrame';
var $form = $('#frb-rml-form');
if ( $("iframe[name=" + frameName + "]").length === 0 ) {
var $iframe = $('<iframe style="display: none;" name="' + frameName + '"></iframe>');
$form.attr("target", $iframe.attr("name"));
$form.after($iframe);
}
$form[0].submit();
},
 
getCurrentDate: function() {
/* Get current date in correct format for Silverpop */
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; // January is 0!
var yyyy = today.getFullYear();
 
if( dd < 10 ) {
dd = '0' + dd;
}
if( mm < 10 ) {
mm = '0' + mm;
}
 
return mm+'/'+dd+'/'+yyyy;
},
 
init: function() {
/* Prep the reminder form */
 
var form = document.getElementById('frb-rml-form');
if ( !form ) return;
 
form.rml_country.value = mw.centralNotice.data.country;
form.rml_language.value = mw.centralNotice.data.uselang;
form.rml_submitDate.value = frb.rml.getCurrentDate();
form.rml_segment.value = Math.floor((Math.random() * 100) + 1);
 
$('#frb-rml-submit').click(function() {
if ( mw.util.validateEmail( form.Email.value ) ) {
frb.rml.post();
$('.frb-rml-form, .frb-rml-link').hide();
$('.frb-rml-ty').show();
mw.centralNotice.internal.hide.setHideWithCloseButtonCookies(); // Hide future banners for 7 days
return false;
} else {
$('#frb-rml-email').addClass('frb-haserror').focus();
$('.frb-error-invalidemail').show();
return false;
}
});
}
 
};
 
frb.initToolbar = function() {
/* --- Code for sticky toolbar --- */
 
$(window).scroll(function() {
var articleLocation = $('.mw-body').offset().top;
var headerContainerHeight = $('.header-container').height();
var donateFormLocation = $('.frb-form').offset().top;
 
// Handle .frb-header stickyness
if ( $(window).scrollTop() >= headerContainerHeight ) {
$('.frb-header').addClass('frb-header--sticky');
$('.frb-conversation').css('padding-top', $('.frb-header').outerHeight() )
} else {
$('.frb-header').removeClass('frb-header--sticky');
$('.frb-conversation').css('padding-top', 0);
}
 
// Handle .frb-header visibility
if ( $(window).scrollTop() > donateFormLocation && $('.frb-header' ).css('visibility') == 'visible' ) {
$('.frb-header').css('visibility', 'hidden');
} else if ( $(window).scrollTop() <= donateFormLocation && $('.frb-header' ).css('visibility') == 'hidden' ) {
$('.frb-header').css('visibility', 'visible');
}
});
 
};
 
$(function() {
 
if ( mw.centralNotice.adminUi ) { // T262693
return;
}
 
var language = mw.centralNotice.data.uselang;
var country = mw.centralNotice.data.country;
var currency = frb.getCurrency(country);
var minAmount = frb.amounts.minimums[ currency ];
var form = document.getElementById('frb-form');
var donateFormLocation;
 
mw.loader.using(['mediawiki.util']).then(function() {
frb.rml.init();
});
 
frb.initAmountOptions();
frb.localizeAmountOptions(frb.amounts.options7, currency, country, language, true);
frb.localizeErrors();
 
frb.storedOptions = {};
frb.extraData = {};
 
// TODO - make these all the same?
frb.scrollDuration = frb.reduceMotion ? 0 : 600;
frb.fadeDuration = frb.reduceMotion ? 0 : 400;
frb.messageDelay = frb.reduceMotion ? 0 : 500; // Chat animation speed, for RML interaction
 
frb.setMethod = function(options, frequency) {
if( frequency === 'no-monthly' ) {
$('#frb-frequency-monthly').attr('disabled', true);
} else {
$('#frb-frequency-monthly').attr('disabled', false);
}
frb.storedOptions = options; // Default to credit card
};
 
$('.frb-amounts').on('input change', function() {
frb.validateAmount();
frb.updateFeeDisplay();
if ( frb.optinRequired ) {
$('.frb-optin').show();
}
$('.frb-cta').fadeOut( frb.fadeDuration, function() {
$('.frb-step-2, .frb-footer').fadeIn( frb.fadeDuration );
});
});
 
$('.frb-methods').on('change', function() {
$('.frb-methods').removeClass('frb-haserror');
$('.frb-error-method').hide();
});
 
// Opt-in interaction
$('.frb-optin .frb-radio').on('click', function() {
$('.frb-optin').removeClass('frb-haserror');
$('.frb-error-optin').hide();
if ( $('#frb-optin-no').is(':checked') ) {
$('.frb-optin-no-prompt').removeClass('is-positive');
if ( !$('.frb-optin-no-prompt').is(':visible') ) {
$('.frb-optin .frb-message--typing')
.show()
.delay( frb.messageDelay )
.fadeOut( frb.fadeDuration, function() {
$('.frb-optin-no-prompt').fadeIn( frb.fadeDuration );
});
}
} else {
$('.frb-optin-no-prompt').addClass('is-positive');
}
});
 
/* Scroll to article option */
$('.js-close').on('click', function(e) {
var articleLocation = $('.mw-body').offset().top;
$('html, body').animate( { scrollTop: articleLocation }, frb.scrollDuration );
return false;
});
 
/* Scroll to donate option */
$('.js-donate').on('click', function(e) {
donateFormLocation = $('.frb-amounts').offset().top - $('.frb-header').outerHeight();
$('html, body').animate( { scrollTop: donateFormLocation }, frb.scrollDuration );
return false;
});
 
var $rmlButtonParent = $('.frb-options');
 
/* Remind me later (RML) form */
/* Reveal the RML form after clicking 'Donate Later' */
$('.js-rml').on('click', function(e) {
var rmlLocation = $('.frb-rml-wrapper').offset().top;
 
e.stopPropagation();
$('.frb-footer').show();
 
if ( $(this).parent().parent().hasClass('frb-header') ) {
$('html, body').animate( { scrollTop: rmlLocation }, frb.scrollDuration );
}
 
if ( $('.frb-rml-form').css('display') === 'none' ) {
$('.frb-rml-wrapper .frb-message--typing')
.show()
.delay( frb.messageDelay )
.fadeOut( frb.fadeDuration, function () {
$('.frb-rml-form').fadeIn(function () {
$('#frb-rml-email').focus();
});
});
}
 
return false;
});
 
/* Hide banner and nag after RML submit. */
$('.frb-submit-rml').on('click', function(e){
if ( mw.util.validateEmail( $('#frb-rml-email').val() ) ) {
$('.frb-inline-rml-form').hide();
$('.frb').delay(3000).fadeOut( frb.fadeDuration, function() {
$('.frb').hide();
});
mw.centralNotice.internal.hide.setHideWithCloseButtonCookies(); // Hide future banners for 7 days
return false;
}
});
 
/* Other amount field */
$('.frb-button--other').on('click keypress', function(e) {
if ( e.which === 13 || e.type === 'click' ) {
document.getElementById('frb-input-other').checked = true;
frb.updateFeeDisplay();
$('.frb-other-input').focus();
}
});
 
/* Other amount field focus styles */
$('.frb-other-input')
.focus(function() {
$('.frb-button--other').addClass('frb-button--is-focused');
})
.blur(function() {
$('.frb-button--other').removeClass('frb-button--is-focused');
});
 
frb.updateUpsellAsk = function(isOtherAmountStep) {
var amount, feeAmount, upsellAmount,
list = frb.amounts.monthlySuggest[currency] || frb.amounts.monthlySuggest.USD;
 
// If user is on third step (write a different amount) then get monthly amount if not, the the first form amount
if (isOtherAmountStep !== undefined) {
amount = frb.getMonthlyAmount();
} else {
amount = frb.getAmount(form);
}
 
// If PTF is checked when we need to calculate the fee for that amount
if ( $('#frb-ptf-checkbox').prop('checked') ) {
amount = amount + frb.calculateFee(amount);
}
 
for (var i = list.length - 1; i >= 0; i--) {
if ( amount <= list[i][0] ) {
upsellAmount = list[i][1];
}
}
 
// If user is in the upsell (second step) then the form.otherMonthlyAmount.value will be updated with the upsellAmount calculated
if (isOtherAmountStep === undefined) {
form.otherMonthlyAmount.value = upsellAmount;
}
 
// A formatted value will be returned
var upsellAmountFormatted = frb.formatCurrency(currency, upsellAmount, language);
 
// The value of the amount will be updated only if the user is in the upsell (second step)
if (isOtherAmountStep === undefined) {
$('.frb-upsell-ask').text(upsellAmountFormatted);
}
};
 
// Pre-upsell submit button
$('#frb-donate').on('click', function(e) {
frb.updateUpsellAsk();
 
// Only do monthly convert if initial selection is one-time, payment method supports monthly, upsell value is not 0 (meaning skip), and payment method isn't credit card.
if ( frb.getRecurring(document.getElementById('frb-form')) ||
!frb.shouldShowRecurring( frb.storedOptions, mw.centralNotice.data.country ) ||
form.otherMonthlyAmount.value == 0 ||
frb.storedOptions.method == 'cc' ) {
frb.submitForm(frb.storedOptions);
} else if ( frb.validateForm(frb.storedOptions) ) {
$('.frb-step-upsell, .frb-back-step, .frb-mask').fadeIn( frb.fadeDuration );
} else {
frb.extraData.validateError = 1;
}
return false;
});
 
// Go back to main step
$('.frb-back-step, .frb-mask').on('click', function(e) {
$('.frb-mask, .frb-step-upsell').fadeOut( frb.fadeDuration );
return false;
});
 
// Donate monthly other amount
$('.frb-monthly-diff-amt-link').on('click', function(e) {
form.otherMonthlyAmount.value = '';
validAmount = 0;
frb.toggleMonthly(true);
$('.frb-upsell, .frb-monthly-buttons').hide();
$('.frb-monthly-diff-amt, .frb-back').show();
return false;
});
 
// Go back from diff amount
$('.frb-back').on('click', function(e) {
form.otherMonthlyAmount.value = '';
frb.updateUpsellAsk();
validAmount = 1;
frb.toggleMonthly(false);
$('.frb-monthly-diff-amt, .frb-back').hide();
$('.frb-upsell, .frb-monthly-buttons').show();
return false;
});
 
// Validate monthly other amount
$('#frb-amt-monthly-other-input').on('input change', function(e) {
if ( frb.validateMonthlyAmount() ) {
validAmount = 1;
frb.updateUpsellAsk(true);
} else {
validAmount = 0;
}
});
 
frb.getMonthlyAmount = function() {
var amount = null;
 
// Check the "monthly other" amount box
if (form.otherMonthlyAmount.value !== '') {
var otherMonthlyAmount = form.otherMonthlyAmount.value;
otherMonthlyAmount = otherMonthlyAmount.replace(/[,.](\d)$/, ':$10');
otherMonthlyAmount = otherMonthlyAmount.replace(/[,.](\d)(\d)$/, ':$1$2');
otherMonthlyAmount = otherMonthlyAmount.replace(/[$£€¥,.]/g, '');
otherMonthlyAmount = otherMonthlyAmount.replace(/:/, '.');
amount = otherMonthlyAmount;
}
 
amount = parseFloat(amount);
 
if ( isNaN(amount) ) {
return 0;
} else {
var totalMonthlyAmountFormatted = frb.formatCurrency(currency, amount, language);
$('.frb-monthly-total').text(totalMonthlyAmountFormatted);
 
return amount;
}
};
 
frb.validateMonthlyAmount = function() {
var amount = frb.getMonthlyAmount();
var currency = frb.getCurrency( mw.centralNotice.data.country );
var minAmount = frb.amounts.minimums[ currency ];
 
if ( amount === null || isNaN(amount) || amount <= 0 || amount < minAmount ) {
$('.frb-error-bigamount').hide();
$('.frb-error-smallamount').show();
return false;
} else if ( amount > frb.maxUSD * minAmount ) {
$('.frb-error-bigamount').show();
return false;
} else {
$('.frb-error-smallamount, .frb-error-bigamount').hide();
return true;
}
};
 
frb.submitMonthly = function() {
frb.extraData.monthlyUpsell = 1;
frb.extraData.originalAmt = frb.getAmount().toString();
 
frb.toggleMonthly(true);
document.getElementById('frb-input-other').checked = true;
document.getElementById('frb-ptf-checkbox').checked = false;
form.otherAmount.value = form.otherMonthlyAmount.value;
frb.submitForm(frb.storedOptions);
}
 
// Submit form
$('#frb-monthly-donate-yes').on('click', function(e) {
frb.submitMonthly();
return false;
});
 
$('#frb-monthly-donate-no').on('click', function(e) {
frb.submitForm(frb.storedOptions);
return false;
});
 
$('#frb-donate-monthly-other').on('click', function (e) {
if (frb.validateMonthlyAmount()) {
frb.submitMonthly();
}
return false;
});
 
if ( frb.shouldShowBanner() ) {
frb.show();
frb.initToolbar();
}
 
});
</script>

Revision as of 23:50, 8 December 2020

Bots and gadgets
15 proposals, 296 contributors, 514 support votes
The survey has closed. Thanks for your participation :)



Improve Auto-wiki-browser

  • Problem: Auto-wiki-browser's resolution is very low and cannot display pages in visual diff mode.
  • Who would benefit: AWB users
  • Proposed solution: Add support for visual diff mode and visual editor in AWB and improve it's resolution. It would also be great if a web-app version is available.
  • More comments:
  • Phabricator tickets:
  • Proposer: WikiAviator (talk) 06:25, 17 November 2020 (UTC)

Discussion

  • Isn't that maintained by users, not MediaWiki/WMF? DemonDays64 (talk) 09:07, 17 November 2020 (UTC)
    It is, however it has never been an obstacle for CommTech. A more serious problem is that AWB is developed on Windows while WMF engineers only use Mac/Linux. Max Semenik (talk) 10:29, 17 November 2020 (UTC)
    Oh come on, I'm sure we can fund some cloud instances with Windows from an external provider.
    Although I remember seeing a web port at some point. Don't remember where I saw it and if it shares some codebase with the Windows app. Maybe working on that would be helpful?--Strainu (talk) 11:43, 17 November 2020 (UTC)
    Yeah I think so. For working on CommTech, I don't see it as a problem because WMF can always modify it (assuming it is released on an open license) and make an officially-maintained version of it. Also, it would be better if more users could use AWB.WikiAviator (talk) 13:36, 17 November 2020 (UTC)
    AWB is a community maintained, yes. I have been trying to rework it, but its codebase is so outdated, and there's a huge lack of comments in general in the code which makes it hard to see what does what. However, I am trying to swap out the Internet Explorer elements with Chromium (CEFSharp), but I can't make any promises with how feasible it is, and whether or not it'd just be better for somebody to start it all again from scratch. Ed6767 (talk) 14:46, 17 November 2020 (UTC)
    I think we can start this from scratch as a Web-based application (for easier access) based on Auto-Ed, that would be easier for the developers in the community as well as the WMF. WikiAviator (talk) 06:14, 18 November 2020 (UTC)
    .NET 5 is open source and can now be downloaded for Mac and Linux.[1]. I assume there is a compiler available for Mac/Linux development. (And why does WMF only use Mac/Linux? Is that even relevant if we have at least one volunteer compiling to Windows? Completely offtopic, I know. :) --Izno (talk) 05:48, 18 November 2020 (UTC)
    Historically Windows is not a very developer-friendly OS (considering everything we deploy to is Linux-based). But times have changed, as I understand it. Windows can now do Linux-y things too, and I know several WMF and WMDE devs who use Windows. Regardless, I don't think we should perpetuate AWB as a Windows application by adding more features to it. If it's true .NET can be used cross-platform, as you say, getting that working is step #1, but it sounds like a complete rewrite is the better long-term option which is surely out of scope :(
    That said, @WikiAviator have you tried JWB, as Fastily mentions below? That is a web-based version that I think would be much easier for us to contribute to (if the maintainer is open to outside contributions). MusikAnimal (WMF) (talk) 22:03, 21 November 2020 (UTC)
    I've tried it lately and it has problems making lists (can't make list for new pages), but the foundation is solid (it works smoothly overall). I think we can collaborate with the maintainer so we can revamp and publicly release it as official commtech (like Huggle and AWB). I agree that the web version would be easier for us compared to the Windows version (running discontinued IE). If JWB is stable enough, we can abandon AWB altogether. WikiAviator (talk) 13:29, 23 November 2020 (UTC)
    The core of .NET 5 is open-source and cross-platform, but this doesn’t mean everything built on this core is as well. Windows Forms, used by AWB, is still Windows-only in .NET 5. Although it’s possible in theory to get current AWB work on Linux (with Mono and some other additional software), I haven’t been able to do so yet. GTK# is an open-source GUI alternative, but it looks like a dead project at a glance. As far as I understand, .NET MAUI is truly cross-platform and under heavy development, but this heavy development means that its general availability is planned in a year, so while porting AWB to it may be the way to go, it probably won’t happen in 2021. —Tacsipacsi (talk) 00:24, 26 November 2020 (UTC)
  • There is a browser based version of AWB: w:User:Joeytje50/JWB -FASTILY 05:11, 18 November 2020 (UTC)
Tracked in Phabricator:
Task T157271

Voting

Lightroom gadget

Withdrawn by proposer

  • Problem: Simplify image contributions, by being able to directly upload to Wikimedia Commons from Adobe Lightroom,
  • Who would benefit: All photographers
  • Proposed solution: create a plugin that lets us directly upload to Commons from Adobe Lightroom (as is available for Flickr and other sites)
  • More comments:
  • Phabricator tickets:
  • Proposer: Gnangarra (talk) 04:42, 29 November 2020 (UTC)

Discussion

Voting

Allow loading gadgets from wikitext

  • Problem: Some templates depend on JavaScript gadgets: enhanced search fields, flyout menus, and so on. Currently, if an interface administrator wants to get the gadget loaded on pages that use this template, the only option is to run a small amount of JavaScript (determining whether the full gadget should be loaded) on each and every page load, for everyone. Maybe the template is used only on one or two pages out of the tens or hundreds of thousands of pages on the wiki, yet all page loads are slowed down by it.
  • Who would benefit: Readers by not having unnecessary JavaScript slowing page loads, interface admins (and even other tech-savvy users without IA right) having more straightforward way of controlling gadget loading.
  • Proposed solution: Have a parser tag similar to TemplateStyles that includes a ResourceLoader module indicated in its argument.
  • More comments: Care should be taken in order not to allow arbitrary code to be loaded by untrusted users (the parser tag in wikitext can be added and edited even by anonymous users). While the contents of ResourceLoader modules can be changed by only select people, probably the safest solution is to create a “namespace” (e.g. ext.gadget.includeable.*) for this purpose within gadgets, and disallow loading any other RL module. Disallowed modules can be loaded by making them dependencies of allowed gadgets. (Dependency is safe, as gadget dependencies can be edited only by trusted interface admins.)
  • Phabricator tickets: phab:T17075 from 2008, T241524
  • Proposer: Tacsipacsi (talk) 00:49, 26 November 2020 (UTC)

Discussion

  • An alternative could be to have one default hidden gadget with the classnames/criteria -> script loading sequences... —TheDJ (talkcontribs) 12:53, 26 November 2020 (UTC)
    • @TheDJ: Do you mean a gadget that decides on client side whether it should load other gadgets? This is exactly the small amount of JavaScript I mentioned and that I’d like to eliminate. (To be exact, I meant whatever way that small amount of JS is run: one default gadget, many default gadgets, Common.js etc.) This may be a small amount per gadget, but it’s not zero, and especially on Wikibooks and Wiktionaries can be many different such gadgets. —Tacsipacsi (talk) 23:51, 26 November 2020 (UTC)
  • Comment Comment I think as proposed this would make security and performance very difficult to uphold. However the idea of allowing a gadget to be enabled "by default" but limited to a subset of pages makes sense. We already support narrowing the default by skin, platform, and user rights. We could for example add support for limiting to categories. Then to initiate it from a template one would add the article to a (hidden) category. This would place the security control with the gadget configuration (the gadget definition specifies its categories, the page does not directly require a gadget), and would also encourage more re-usable logic with less effort (e.g. many articles and templates already have existing categories that you can make use of). It also means gadgets can be merged, split or renamed without their loading breaking as there would not be a direct connection between the two. Perhaps the proposal could be edited to focus more focussed on the problem and use case, and leave the implementation details to be decided by developers and other stakeholders if/when it is worked on. --Krinkle (talk) 20:30, 11 December 2020 (UTC)
    Adding a ResourceLoader module from a parser function doesn't seem problematic to me performance-wise; a number of parser hooks already do that. In terms of security, the only issue I can think of is that it must not allowed to work on "safe" pages like login (via a system message; probably it shouldn't work in system messages at all).
    Categories would be nice for tracking where a script is used, but we could also just (ab)use the templatelinks table like we do for TemplateStyles. Tgr (talk) 08:51, 13 December 2020 (UTC)
    @Krinkle: If we were to use categories to decide whether or not to load a gadget, renaming gadgets would be easier, but renaming categories would be more difficult—and the consequences are far less obvious, fixing a typo in a category name would stop the gadget from working for no apparent reason. Furthermore, if one renames a category, they probably won’t be able to adjust the gadget configuration afterwards (as they’re not necessarily an interface admin). Also, gadget naming is an internal detail completely transparent for users, while category names are user-visible, so they’re much more likely needed to be changed. I think gadget renaming is already mostly impossible, as there’s no other permanent identifier for gadgets, so renaming a gadget would likely revert it back to its initial state for everyone (i.e. turn it on in case of default gadget, turn it off otherwise). I see your concerns (although I agree with Tgr in that they’re unlikely to be actual issues), but the point of easing renames is simply false IMO. Split and merger is probably really more convenient with the category-based system, but it still doesn’t outweigh the renaming issues. Also, I don’t like polluting the categories with such technicalities.
    Security-wise: what issue do you think would appear that isn’t handled by the proposed tag-based system, but would be handled by your category-based one? IAs are already in control of what could be possibly loaded (with the namespace system), while what’s actually loaded can be controlled by anyone anyway (through adding either the parser tag or the category).
    @Tgr: Entirely disabling it in messages could be the way to go, but Common.js is also disabled in these contexts, so there should be a way in MW core to determine whether risky RL modules can be loaded. (There are some MediaWiki messages like s:MediaWiki:proofreadpage_index_template that are practically templates stored in the MediaWiki namespace, and may benefit from this feature. I don’t know if these can be programmatically distinguished from the cookie prompt on the login page, which should certainly not have anything like this.) —Tacsipacsi (talk) 21:43, 14 December 2020 (UTC)
  • I think it would be better to implement phab:T204201.
    • That has much broader capabilities and gives more benefit at various circumstances.
    • The common approach is to look for elements with certain classes after DOM has been loaded, then proceed. If that could be narrowed to a particular namespace it would save a lot of client execution time already.
    • Using a category, even a hidden maintenance category, might distract attention of editors. Equipping some elements with a class is very silent.
    • However, the improvements suggested in phab:T204201 may introduce more Cirrus filters like incategory and hastemplate (actually: transcludes). They should use underscore page titles and leave spaces as separators.
    • The target is to reduce the amount of gadgets to be loaded in a page but could never be useful under predictable and easily detectable conditions.
    • I don’t think it is promising to introduce new Wikisyntax, new elements, new parser functions for making page contents triggering gadget execution. There are page properties and various criteria in T204201 which will deliver the same result but with less efforts and wider applicability.
      --PerfektesChaos (talk) 14:21, 18 March 2021 (UTC)

Voting

Talk page archiving bot updating incoming links

  • Problem: When a talk page thread gets archived, all incoming links into the thread get broken, making it very difficult to follow old threads, which often contain useful information for current discussions. In the English Wikipedia we have ClueBot III which claims to fix up links while archiving (en:User:ClueBot_III#Keeping_linked), but in reality it unfortunately does this only to a very limited extent (links from other pages). The more important links from the same page (from other threads or from inside the very thread to be archived, as well as links from threads already archived) don't get updated.
  • Who would benefit: All Wikipedians participating in talk page discussions
  • Proposed solution: Enhance ClueBot III or provide a new universal archiving bot fixing up all links while archiving automatically. While detecting links from the same page might be more difficult than to detect links from other pages, it certainly isn't impossible.
  • More comments:

Discussion

Yeah, thanks for providing the link. Unfortunately, scripts like this cannot be used by people who (must) have JavaScript disabled for security reasons (or are using browsers not supporting it). So, a more general solution is still needed, ideally one which fixes the problem at its root (that is, in the moment when the problem is created), not at a later point in time when it may be difficult to put the pieces together reliably.
--Matthiaspaul (talk) 14:52, 26 November 2020 (UTC) (updated 12:59, 13 December 2020 (UTC))
Thanks for the link, had no idea this existed. — Bilorv (talk) 00:44, 11 December 2020 (UTC)

Voting

Yes, this is exactly what this proposal is about. --Matthiaspaul (talk) 12:53, 13 December 2020 (UTC)

ListeriaBot to add alias meta-column

  • Problem : Wikidata Query and ListeriBot currently only knows "label", and "description" as standard item columns; "alias" is not recognised yet as a valid item header variable.
  • Who would benefit: Everyone that automatically generates (Wikipedia) tables based on a Wikidata Query.
  • Proposed solution: Add a pseudo-column "alias" that is automatically and transparently available for any individual query.
  • More comments: Currently this can be simulated by explicitly adding a SPARQL variable ?alias as:
 OPTIONAL {
   ?item skos:altLabel ?alias.
   FILTER((LANG(?alias)) = "nl")
 }

This makes the Wikidata Query unnecessary complex, and leads to redundant user code in all Wikidata/LysteriaBot queries.

Actually, instead of enhancing Listeria, this alias could better be made available in Wikidata Query; just like itemLabel and itemDescription are a variable, itemAlias could be created as another default variable.

Discussion

Done. --Magnus Manske (talk) 15:46, 9 December 2020 (UTC)

Voting

Importing data from IMDb

  • Problem: When creating new pages for actors, directors, etc. much of the information is available in a structuring format on their IMDb page but it is time-consuming to transfer manually to Wikipedia.
  • Who would benefit: Editors creating, improving, or updating pages that use IMDb for information.
  • Proposed solution: A tool that can auto-import IMDb fields (e.g. year, title of movie/show, role, etc.) and a bot that will update articles when there is an addition to their IMDb page.
  • More comments:
  • Phabricator tickets:
  • Proposer: GeneralBelly (talk) 22:23, 24 November 2020 (UTC)

Discussion

  • @GeneralBelly: There are already Mix-n-match catalogues for IMDb (for example, for actors; find them all by searching 'imdb' in the catalogue search form), to help with the importing part of this. Is that sufficient? The work then is to integrate this data into Wikipedia articles, the technical functionality for which already exists. —Sam Wilson 03:18, 25 November 2020 (UTC)
Hi Samwilson, I'm not familiar with Mix-n-match but I had a look at it and couldn't figure out a way to use it. Basically, I was hoping for a tool where I could identify an IMDb entry for an actor, e.g. Michelle Yeoh https://www.imdb.com/name/nm0000706/ and it would give me a table of her work in wiki markup which I could add directly to the article. Is that possible? --GeneralBelly (talk) 16:27, 30 November 2020 (UTC)
  • @GeneralBelly: Sounds good. Mix-n-match helps with getting the actors' and movies' details into Wikidata, from where they can be added to Wikipedia articles. This can be done dynamically with Lua in some cases (for individual items) or en masse via a bot such as {{Wikidata list}}, or via wikitext exports. The details can be figured out after voting. —Sam Wilson 04:03, 1 December 2020 (UTC)

Voting

Automatically import

  • Problem: Some projects often use sites with compatible Creative Commons licenses. Usually these projects use a bot, but this takes time, some stop operating, new sites start using the Creative Commons license and others stop using it. In addition, there are many smaller wikis that are abandoned or forgotten.
  • Who would benefit: Mainly Wikiquote and Wikinews, I think. But the tool would not be available to everyone, to avoid vandalism.
  • Proposed solution: I am proposing the creation of a tool that allows users (not all obviously) to automatically copy content from other sites. This would help many projects to grow.
  • More comments: I don't know if it has been proposed before, I await comments…
  • Phabricator tickets:
  • Proposer: Edu! (talk) 15:51, 18 November 2020 (UTC)

Discussion

  • I think this will be highly useful. I know several compatible wikis that are used as sources of content. However, not being currently able to do the import as described in the proposal mean we can't get the best attribution for the content. We rely on third parties to track the individual work on the article. If I recall correctly, there was a problem with non-Wikimedia wikis due to different user bases (if you import edition ABCD done by User:XYWZ, the software considers the user:XYWZ in the end wiki instead of the source wiki). However, I think it should be technically feasible to adapt to wikis using a different repository of users.--FAR (talk) 10:04, 29 November 2020 (UTC)
  • How is this different from Special:Export/Import and related functionality? --Tgr (talk) 06:53, 14 December 2020 (UTC)

Voting

Revive the death anomalies project

  • Problem: When people die we don't always notice and update all language versions of the article on them
  • Who would benefit: All Wikipedias. When this used to run lots of articles were improved.
  • Proposed solution: Revive the death anomalies project. Until the bot operator retired, we had a bot that produced regular lists for 11 language versions of Wikipedia of people who were alive on their version of Wikipedia, but dead according to another language. People would then check sources, usually mark the person as dead in their language, sometimes as not dead in the other language.
  • More comments:
  • Phabricator tickets:
  • Proposer: WereSpielChequers (talk) 22:20, 29 November 2020 (UTC)

Discussion

  • It seems like this could be done through Wikidata, where the datum about a person being alive or dead could be centrally stored and then displayed in any Wikipedia. Silver hr (talk) 18:04, 30 November 2020 (UTC)
    Yes, it is technically possible to do this, it just needs programing resource. WereSpielChequers (talk) 06:56, 2 December 2020 (UTC)
  • Wikidata is already the necessary ready-4-use no-code solution. Sagivrash (talk) 18:50, 8 December 2020 (UTC)
  • Here is the PetScan query for German Wikipedia, all biographical articles without a death date category but where the Wikidata item has a death date. Some false positives, can be refined further. Categories have to be adjusted for other language editions. --Magnus Manske (talk) 15:53, 9 December 2020 (UTC)
  • This can be done using Wikidata. Some Wikipedias event have it in the main page. -Theklan (talk) 17:45, 11 December 2020 (UTC)
  • Related: A while ago I noted that a featured article was badly outdated. I updated with more recent scholarship, but there are, as I recall, literally dozens of featured articles on the same subject in other languages. I'd like a way to push a notification that those articles may not be of featured quality anymore, especially if they have no/few references published in the past decade or two. A cross-language way to tag topics as "significant new info in reliable sources published during [timespan]", cited, would work. I expect this problem will become more common as Wikipedia matures. HLHJ (talk) 00:08, 20 December 2020 (UTC)
  • German Wikipedia is observing mismatches in liveliness at Wikidata, but our investigators will check sources for reliability. A hoax can be made easily on Wikidata, even with fake sources. We will not display automatically what anybody is editing at Wikidata. Wikidata changes without good citation are pointless. If we get a hint that someone might have died we will look for a proof, change German Wikipedia or revert Wikidata. --PerfektesChaos (talk) 13:15, 18 March 2021 (UTC)

Voting

Bot to input the proper class for all wiki projects

  • Problem: That most wikiprojects aren’t put in their proper class or importance
  • Who would benefit: Editors who want to know what needs improving upon, in addition to users who search through projects
  • Proposed solution: A bot should be created in order to fill out the classes and importance of all wikiprojects, mainly the classes because it can be read off other wikiprojects and it is already automated in.
  • More comments:
  • Phabricator tickets:
  • Proposer: Bigmike2346 02:30, 17 November 2020 (UTC)

Discussion

  • @Bigmike2346: Hello and thanks for participating in the survey! I have corrected the formatting of your proposal. If you could, please fill in the "Problem" and "Who would benefit" questions. Thanks! MusikAnimal (WMF) (talk) 03:28, 17 November 2020 (UTC)
  • I believe this is a matter for specific projects to discuss on a case-by-case basis, as each WikiProject has a different purpose. If the proposal is to automatically assess class then many editors would object, thinking that only a human can properly assess each class criterion. If the proposal is just to copy over classes/importances where they occur for other projects on the same talk page then this again is flawed, as importances can vary across projects and WikiProjects may even have different levels of strictness for different classes. A user-maintained bot could serve whatever action is required, rather than WMF involvement. — Bilorv (talk) 17:55, 17 November 2020 (UTC)
    Class at least is pretty universal for most pages. In that regard we used to have a bot on en.WP at least that would duplicate classes from one banner to another. (So I agree with the final comment.) --Izno (talk) 19:25, 17 November 2020 (UTC)

Voting

DabFix

  • Problem: The DabFix tool for rapidly populating disambiguation pages is no longer available.
  • Who would benefit: Editors who create disambiguation pages.
  • Proposed solution: Create an in-house version of DabFix capable of populating disambiguation pages with appropriate information (e.g., birth and death dates of human subjects, and short descriptions of their significance).
  • More comments:
  • Phabricator tickets:
  • Proposer: BD2412 T 00:24, 25 November 2020 (UTC)

Discussion

Yes, none of these tools seem to work anymore, and they have always been erratic. Too bad, because they were very helpful tools: Dabfix, Dabsolver, Commonfixes.
Vmavanti (talk) 18:39, 8 December 2020 (UTC)

I'd add Dablinks, which is the tool I use most. (Example page: [2].) Certes (talk) 16:45, 9 December 2020 (UTC)
Code for Dablinks could be reused to warn when linking to disambiguation pages. Certes (talk) 17:11, 9 December 2020 (UTC)

The tools are not currently available via their usual IP address. Even if they return, they may be unstable, which increases the priority of this wish. I have a backup of the source code, but no licence to use or deploy it. Certes (talk) 18:21, 25 December 2020 (UTC)

Voting

API for deleted title search

  • Problem: Some time ago, it became possible to search the archive table for titles of deleted pages - https://en.wikipedia.org/w/index.php?prefix=%28company%29&title=Special%3AUndelete&fuzzy=1 (admins only). This functionality is not accessible through the API and therefore cannot be incorporated into bots and gadgets used by administrators. As a consequence, this limits the discoverability of reposts under a slightly different title (a very common abuse tactic).
  • Who would benefit: Admins, patrollers, bot operators
  • Proposed solution: See above. A module is added to the Action API that allows searching for deleted titles.
  • More comments:
  • Phabricator tickets: T192023
  • Proposer: MER-C (talk) 17:47, 21 November 2020 (UTC)

Discussion

Voting

InternetArchiveBot for Wikidata

  • Problem: Dead links are not managed in an automated way in Wikidata
  • Who would benefit: Wikidata and all projects using it
  • Proposed solution: Adapt InternetArchiveBot to Wikidata and add archival URLs to dead links for URL and external identifiers datatypes.
  • More comments:
  • Phabricator tickets:
  • Proposer: Ayack (talk) 10:29, 26 November 2020 (UTC)

Discussion

Voting

Inform gadget developers of errors in their gadgets/scripts

Discussion

Voting

Gadgets improvements

  • Problem: Gadgets are hard to develop and maintain, even more so for smaller communities and non-English wikis
  • Who would benefit: Anyone who uses or develops gadgets
  • Proposed solution: See below
  • More comments:
  • Phabricator tickets: a bunch
  • Proposer: DannyS712 (talk) 06:39, 23 November 2020 (UTC)

Work on Gadgets 2.0 is stalled, and the Gadget and Gadget definition namespaces are registered and reserved, but not used for anything. The following parts of the old roadmap (mw:Extension:Gadgets/Roadmap#Gadgets 2.0) and tracking task (phab:T31272) should be prioritized

  • "No more manual editing of gadgets definition, everything should have its GUI to change the underlying JSON definition" - add an interface to manage the gadget definitions (rights required, scripts and styles to load, messages, default enabled, whether the gadget is hidden, etc.)
  • Gadget code and definitions should move out of the mediawiki namespace to the dedicated gadget and gadget definitions namespace (see the example use of the gadget definitions namespace at mw:Extension:Gadgets#Using Gadget Definition Namespace, though as noted above it shouldn't need to be edited manually as json, but rather via a GUI)
  • "Structured localization framework for gadgets" - phab:T238386

Discussion

Is this complete and deploy Gadgets 2.0? "Gadgets improvements" suggests broader topic but the proposal seems limited to the extension. – Ammarpad (talk) 04:36, 24 November 2020 (UTC)

Essentially, yes, but since its not very clear how "Gadgets 2.0" is currently scoped/defined, I listed the key issues that I thought should be addressed DannyS712 (talk) 04:58, 24 November 2020 (UTC)
Much wanted. It had promising development in the past but then it silenced.
For localization improvements, Community Wishlist Survey 2021/Bots and gadgets/Easy and effective way to translate gadgets and userscripts was also proposed. --Matěj Suchánek (talk) 08:32, 24 November 2020 (UTC)
Gadgets 2.0 includes a real localization and translation system. Kaldari (talk) 18:38, 8 December 2020 (UTC)
The Gadgets 2.0 code is pretty much complete. The main part that needed to be finished was the code for migrating old gadgets to Gadgets 2.0, and also just more testing and polish to make sure such a big feature change goes smoothly. Since Gadgets 2.0 never had a Product Manager or QA Engineer those last steps never happened. I bet CommTech could get it finished though! Kaldari (talk) 18:38, 8 December 2020 (UTC)

Voting

Bibliographic bot for Wikidata

  • Problem: Many references on Wikidata only consist of an URL (P854).
  • Who would benefit: Wikidata and all projects using its data
  • Proposed solution: Based on reference URL, retrieve (with a bot?) related information (title, language, publication date, author, page, ISBN/ISSN, etc.) and add them to the reference. Data to be added will depend on the source type (book, article, website, etc.).
  • More comments:
  • Phabricator tickets: task T285498
  • Proposer: Ayack (talk) 18:01, 27 November 2020 (UTC)

Discussion

Voting

Artificial Intelligence Spam hunter

  • Problem: Spam is replacing vandalism as our biggest problem
  • Who would benefit: Everyone. But probably first the English Wikipedia
  • Proposed solution: Use the articles and edits that have been deleted as spam to train an Artificial Intelligence bot to identify spam, tag it for deletion or revert it where it is certain it is spam and bring it to human attention where it is less confident
  • More comments:
  • Phabricator tickets:
  • Proposer: WereSpielChequers (talk) 22:07, 29 November 2020 (UTC)

Discussion

Voting