Skip to content

Commit 3cfb621

Browse files
committed
Upgrade protocol to version 22.
1 parent ed21306 commit 3cfb621

20 files changed

Lines changed: 236 additions & 339 deletions

kitsune/sumo/jinja2/base.html

Lines changed: 54 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,9 @@ <h4 class="sumo-page-heading-xl">{{ _('Search Support') }}</h4>
232232
<footer class="mzp-c-footer">
233233
<div class="mzp-l-content">
234234
<nav class="mzp-c-footer-primary">
235-
<div class="mzp-c-footer-cols">
236-
<section class="mzp-c-footer-col">
235+
<div class="mzp-c-footer-primary-logo"><a href="https://www.mozilla.org/">{{ _('Mozilla') }}</a></div>
236+
<div class="mzp-c-footer-sections">
237+
<section class="mzp-c-footer-section">
237238
<h5 class="mzp-c-footer-heading">{{ _('Mozilla') }}</h5>
238239
<ul class="mzp-c-footer-list">
239240
<li><a href="https://www.mozilla.org/about/legal/defend-mozilla-trademarks/">{{ _('Report Trademark Abuse') }}</a></li>
@@ -256,7 +257,7 @@ <h5 class="mzp-c-footer-heading">{{ _('Mozilla') }}</h5>
256257
</ul>
257258
</section>
258259

259-
<section class="mzp-c-footer-col">
260+
<section class="mzp-c-footer-section">
260261
<h5 class="mzp-c-footer-heading">{{ _('Firefox') }}</h5>
261262
<ul class="mzp-c-footer-list">
262263
<li><a href="https://www.firefox.com/thanks/?utm_source=support.mozilla.org&utm_campaign=footer&utm_medium=referral">{{ _('Download') }}</a></li>
@@ -267,7 +268,7 @@ <h5 class="mzp-c-footer-heading">{{ _('Firefox') }}</h5>
267268
</ul>
268269
</section>
269270

270-
<section class="mzp-c-footer-col">
271+
<section class="mzp-c-footer-section">
271272
<h5 class="mzp-c-footer-heading">{{ _('Firefox for Developers') }}</h5>
272273
<ul class="mzp-c-footer-list">
273274
<li><a href="https://www.firefox.com/channel/desktop/developer/?utm_source=support.mozilla.org&utm_campaign=footer&utm_medium=referral">{{ _('Developer Edition') }}</a></li>
@@ -278,7 +279,7 @@ <h5 class="mzp-c-footer-heading">{{ _('Firefox for Developers') }}</h5>
278279
</ul>
279280
</section>
280281

281-
<section class="mzp-c-footer-col">
282+
<section class="mzp-c-footer-section">
282283
<h5 class="mzp-c-footer-heading">{{ _('Mozilla Account') }}</h5>
283284
<ul class="mzp-c-footer-list">
284285
{% if not request.user.is_authenticated %}
@@ -311,64 +312,59 @@ <h5 class="mzp-c-footer-heading">{{ _('Mozilla Account') }}</h5>
311312
</li>
312313
</ul>
313314
</section>
314-
315-
<section class="mzp-c-footer-col lang-col">
316-
<form class="mzp-c-language-switcher" method="get" action="#">
317-
<a class="mzp-c-language-switcher-link" href="{{ locale_picker_url }}">{{ _('Language') }}</a>
318-
<label for="mzp-c-language-switcher-select">{{ _('Language') }}</label>
319-
<select id="mzp-c-language-switcher-select" class="mzp-js-language-switcher-select"
320-
name="lang">
321-
{% for locale in settings.LANGUAGE_CHOICES %}
322-
<option value="{{ locale[0] }}" {% if locale[0] == request.LANGUAGE_CODE %}selected{% endif %}>{{ locale[1] }}</option>
323-
{% endfor %}
324-
</select>
325-
<!-- form submit button is shown when JavaScript is not enabled -->
326-
<button type="submit">{{ _('Go') }}</button>
327-
</form>
328-
<ul class="mzp-c-footer-links-social">
329-
<li><a class="twitter" href="https://twitter.com/firefox">Twitter<span>(@firefox)</span></a></li>
330-
<li><a class="youtube" href="https://www.youtube.com/firefoxchannel">YouTube<span> (firefoxchannel)</span></a></li>
331-
<li><a class="instagram" href="https://www.instagram.com/firefox">Instagram<span> (firefox)</span></a></li>
332-
</ul>
333-
</section>
334-
335315
</div>
336316
</nav>
337317

338318
<nav class="mzp-c-footer-secondary">
339-
<div class="mzp-c-footer-link-col">
340-
<div class="mzp-c-footer-primary-logo"><a href="https://www.mozilla.org/">{{ _('Mozilla') }}</a></div>
341-
<div class="mzp-c-footer-legal">
342-
<ul>
343-
<li><a href="https://www.mozilla.org/">{{ _('mozilla.org') }}</a></li>
344-
<li><a href="https://www.mozilla.org/about/legal/terms/mozilla/">{{ _('Terms of Service') }}</a></li>
345-
<li><a href="https://www.mozilla.org/privacy/websites/">{{ _('Privacy') }}</a></li>
346-
<li><a href="https://www.mozilla.org/privacy/websites/#user-choices">{{ _('Cookies') }}</a></li>
347-
<li><a href="https://www.mozilla.org/contact/">{{ _('Contact') }}</a></li>
348-
</ul>
349-
</div>
319+
<div class="mzp-c-footer-language">
320+
<form class="mzp-c-language-switcher" method="get" action="#">
321+
<a class="mzp-c-language-switcher-link" href="{{ locale_picker_url }}">{{ _('Language') }}</a>
322+
<label for="mzp-c-language-switcher-select">{{ _('Language') }}</label>
323+
<select id="mzp-c-language-switcher-select" class="mzp-js-language-switcher-select"
324+
name="lang">
325+
{% for locale in settings.LANGUAGE_CHOICES %}
326+
<option value="{{ locale[0] }}" {% if locale[0] == request.LANGUAGE_CODE %}selected{% endif %}>{{ locale[1] }}</option>
327+
{% endfor %}
328+
</select>
329+
<!-- form submit button is shown when JavaScript is not enabled -->
330+
<button type="submit">{{ _('Go') }}</button>
331+
</form>
350332
</div>
351-
<div class="mzp-c-footer-legal-col">
352-
<p>
353-
{% trans
354-
moco_link_open='<a href="https://www.mozilla.org" rel="external noopener" data-link-type="footer" data-link-name="Mozilla Corporation">'|safe,
355-
mofo_link_open='<a href="https://foundation.mozilla.org" rel="external noopener" data-link-type="footer" data-link-name="Mozilla Foundation">'|safe,
356-
link_close='</a>'|safe
357-
%}
358-
Visit {{ moco_link_open }}Mozilla Corporation’s{{ link_close }}
359-
not-for-profit parent, the {{ mofo_link_open }}Mozilla Foundation{{ link_close }}.
360-
{% endtrans %}
361-
</p>
362-
<p>
363-
{% trans
364-
year=CURRENT_YEAR,
365-
link_open='<a rel="external noopener" href="https://www.mozilla.org/foundation/licensing/website-content/">'|safe,
366-
link_close='</a>'|safe
367-
%}
368-
Portions of this content are ©1998–{{ year }} by individual mozilla.org contributors. Content available under a
369-
{{ link_open }}Creative Commons license{{ link_close }}.
370-
{% endtrans %}
371-
</p>
333+
<ul class="mzp-c-footer-links-social">
334+
<li><a class="twitter" href="https://twitter.com/firefox">Twitter<span>(@firefox)</span></a></li>
335+
<li><a class="youtube" href="https://www.youtube.com/firefoxchannel">YouTube<span> (firefoxchannel)</span></a></li>
336+
<li><a class="instagram" href="https://www.instagram.com/firefox">Instagram<span> (firefox)</span></a></li>
337+
</ul>
338+
<div class="mzp-c-footer-legal">
339+
<div class="mzp-c-footer-license">
340+
<p>
341+
{% trans
342+
moco_link_open='<a href="https://www.mozilla.org" rel="external noopener" data-link-type="footer" data-link-name="Mozilla Corporation">'|safe,
343+
mofo_link_open='<a href="https://foundation.mozilla.org" rel="external noopener" data-link-type="footer" data-link-name="Mozilla Foundation">'|safe,
344+
link_close='</a>'|safe
345+
%}
346+
Visit {{ moco_link_open }}Mozilla Corporation's{{ link_close }}
347+
not-for-profit parent, the {{ mofo_link_open }}Mozilla Foundation{{ link_close }}.
348+
{% endtrans %}
349+
</p>
350+
<p>
351+
{% trans
352+
year=CURRENT_YEAR,
353+
link_open='<a rel="external noopener" href="https://www.mozilla.org/foundation/licensing/website-content/">'|safe,
354+
link_close='</a>'|safe
355+
%}
356+
Portions of this content are ©1998–{{ year }} by individual mozilla.org contributors. Content available under a
357+
{{ link_open }}Creative Commons license{{ link_close }}.
358+
{% endtrans %}
359+
</p>
360+
</div>
361+
<ul class="mzp-c-footer-terms">
362+
<li><a href="https://www.mozilla.org/">{{ _('mozilla.org') }}</a></li>
363+
<li><a href="https://www.mozilla.org/about/legal/terms/mozilla/">{{ _('Terms of Service') }}</a></li>
364+
<li><a href="https://www.mozilla.org/privacy/websites/">{{ _('Privacy') }}</a></li>
365+
<li><a href="https://www.mozilla.org/privacy/websites/#user-choices">{{ _('Cookies') }}</a></li>
366+
<li><a href="https://www.mozilla.org/contact/">{{ _('Contact') }}</a></li>
367+
</ul>
372368
</div>
373369
</nav>
374370
</div>

kitsune/sumo/static/sumo/js/protocol-details-init.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import "sumo/js/protocol";
2+
import Details from "protocol/js/details";
23

34

45
export function collapsibleAccordionInit() {
@@ -7,7 +8,7 @@ export function collapsibleAccordionInit() {
78
// element (which is generated from the Wiki syntax "{for ...}{/for}") that
89
// are direct children of an element with the "mzp-c-details" class.
910
for (let hdr of ['h2', 'h3', 'h4', 'h5', 'h6']) {
10-
window.Mzp.Details.init(`.mzp-c-details > ${hdr}, .mzp-c-details > div.for > ${hdr}`);
11+
Details.init(`.mzp-c-details > ${hdr}, .mzp-c-details > div.for > ${hdr}`);
1112
}
1213
}
1314

@@ -33,23 +34,23 @@ export default function detailsInit() {
3334
}
3435

3536
if (sidebarList && _mqWide.matches) {
36-
window.Mzp.Details.init('.details-heading');
37+
Details.init('.details-heading');
3738
swapMobileSubnavText();
3839
}
3940
_mqWide.addListener(function(mq) {
4041
if (sidebarList && mq.matches) {
41-
window.Mzp.Details.init('.details-heading');
42+
Details.init('.details-heading');
4243
swapMobileSubnavText();
4344
} else {
44-
window.Mzp.Details.destroy('.details-heading');
45+
Details.destroy('.details-heading');
4546
}
4647
});
4748

4849
// built for quote dropdowns in forum pages –
4950
// this is a global selector to always show dropdowns
5051
var forumDropdown = document.querySelector('[data-has-dropdown]');
5152
if ( forumDropdown ) {
52-
window.Mzp.Details.init('[data-has-dropdown]');
53+
Details.init('[data-has-dropdown]');
5354
}
5455

5556
collapsibleAccordionInit();
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
import "sumo/js/protocol";
1+
import LangSwitcher from "protocol/js/lang-switcher";
22
import trackEvent from "sumo/js/analytics";
33

44
(function() {
55
'use strict';
6-
// a custom callback can be passed to the lang switcher for analytics purposes.
7-
Mzp.LangSwitcher.init(function(previousLanguage, newLanguage) {
6+
LangSwitcher.init(function(previousLanguage, newLanguage) {
87
trackEvent("footer.language-switcher", {
98
"old_language": previousLanguage,
109
"new_language": newLanguage,
1110
});
12-
})
11+
});
1312
})();

kitsune/sumo/static/sumo/js/protocol-modal-init.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import "sumo/js/protocol";
2+
import Modal from "protocol/js/modal";
23

34
(function () {
45
'use strict';
@@ -8,7 +9,7 @@ import "sumo/js/protocol";
89
var dialogLink = e.dataset.sumoModal;
910
var content = document.getElementById(dialogLink);
1011
function openThisDialog(e) {
11-
Mzp.Modal.createModal(e.target, content, {
12+
Modal.createModal(e.target, content, {
1213
closeText: 'Close modal',
1314
content: document.getElementById(e.target.dataset.sumoModal),
1415
});
@@ -21,7 +22,7 @@ import "sumo/js/protocol";
2122
var closeButtons = document.querySelectorAll('[data-sumo-modal-close]');
2223
if (closeButtons) {
2324
closeButtons.forEach((button) => {
24-
button.addEventListener("click", () => Mzp.Modal.closeModal());
25+
button.addEventListener("click", () => Modal.closeModal());
2526
});
2627
}
2728
})();

kitsune/sumo/static/sumo/js/protocol-nav.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import "sumo/js/protocol";
1+
import Navigation from "protocol/js/navigation";
2+
import Menu from "protocol/js/menu";
23

34
(function () {
45
'use strict';
5-
Mzp.Navigation.init();
6-
Mzp.Menu.init();
6+
Navigation.init();
7+
Menu.init();
78
})();
89

910
var toggleNavButtons = document.querySelectorAll('[data-sumo-toggle-nav]');
@@ -60,4 +61,4 @@ window.addEventListener('resize', function () {
6061
resetNavs();
6162
}
6263
}, 250);
63-
});
64+
});

kitsune/sumo/static/sumo/js/protocol-notification-init.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import "sumo/js/protocol";
2+
import Notification from "protocol/js/notification-bar";
23

34
(function() {
45
'use strict';
@@ -15,7 +16,7 @@ import "sumo/js/protocol";
1516
if (notificationButton) {
1617
notificationButton.addEventListener('click', function(e) {
1718
e.preventDefault();
18-
Mzp.Notification.init(e.target, {
19+
Notification.init(e.target, {
1920
closeText: 'Close notification',
2021
hasDismiss: true,
2122
});
Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
1-
import "protocol/js/protocol-base";
2-
import "protocol/js/protocol-utils";
3-
import "protocol/js/protocol-supports";
4-
import "protocol/js/protocol-details";
5-
import "protocol/js/protocol-footer";
6-
import "protocol/js/protocol-menu";
7-
import "protocol/js/protocol-modal";
8-
import "protocol/js/protocol-navigation";
9-
import "protocol/js/protocol-newsletter";
10-
import "protocol/js/protocol-notification-bar";
11-
import "protocol/js/protocol-lang-switcher";
1+
import MzpBase from "protocol/js/base";
2+
import MzpSupports from "protocol/js/supports";
3+
import "protocol/js/utils";
4+
import "protocol/js/details";
5+
import "protocol/js/footer";
6+
import "protocol/js/menu";
7+
import "protocol/js/modal";
8+
import "protocol/js/navigation";
9+
import "protocol/js/newsletter";
10+
import "protocol/js/notification-bar";
11+
import "protocol/js/lang-switcher";
12+
13+
// In webpack's CommonJS context, UMD modules don't set browser globals.
14+
// Protocol checks window.MzpSupports before initializing JS-enhanced components,
15+
// so we expose it manually. Also fix the matchMedia check: Protocol uses
16+
// addListener() which was removed in Chrome 127+ (2024).
17+
MzpSupports.matchMedia = typeof window.matchMedia !== 'undefined';
18+
window.MzpSupports = MzpSupports;
19+
20+
MzpBase.init();

kitsune/sumo/static/sumo/js/users.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* users.js
33
* Make public emails clickable.
44
*/
5+
import Modal from "protocol/js/modal";
56

67
(function ($) {
78
function makeEmailsClickable() {
@@ -33,9 +34,7 @@
3334
var $form = $(this).closest('form');
3435

3536
// Close modals - keep both systems for compatibility
36-
if (typeof Mzp !== 'undefined' && Mzp.Modal) {
37-
Mzp.Modal.closeModal();
38-
}
37+
Modal.closeModal();
3938

4039
if ($.kbox) {
4140
$.kbox.close();

kitsune/sumo/static/sumo/js/wiki.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import "sumo/js/libs/django/prepopulate";
99
import "sumo/js/codemirror.sumo-hint";
1010
import "sumo/js/codemirror.sumo-mode";
1111
import "sumo/js/protocol";
12+
import Modal from "protocol/js/modal";
1213
import AjaxPreview from "sumo/js/ajaxpreview";
1314
import { initDiff } from "sumo/js/diff";
1415
import Marky from "sumo/js/markup";
@@ -425,10 +426,10 @@ import collapsibleAccordionInit from "sumo/js/protocol-details-init";
425426
success: function (response) {
426427
$('#' + checkbox_id).removeClass('markasready').addClass('yes');
427428
$('#' + checkbox_id).off('click');
428-
Mzp.Modal.closeModal()
429+
Modal.closeModal()
429430
},
430431
error: function () {
431-
Mzp.Modal.closeModal()
432+
Modal.closeModal()
432433
}
433434
});
434435
}

0 commit comments

Comments
 (0)