зеркало из https://github.com/mozilla/kitsune.git
Merge pull request #5763 from mikeconley/device-migration-3.0-sync
Device migration 3.0 branch sync with main branch
This commit is contained in:
Коммит
41bf3412c1
|
@ -1,19 +1,5 @@
|
|||
{
|
||||
"python.defaultInterpreterPath": "/venv/bin/python",
|
||||
"python.formatting.provider": "none",
|
||||
"python.formatting.blackPath": "/venv/bin/black",
|
||||
"python.formatting.blackArgs": [
|
||||
"--config=/app/pyproject.toml"
|
||||
],
|
||||
"python.linting.enabled": true,
|
||||
"python.linting.flake8Enabled": false,
|
||||
"python.linting.pylintEnabled": true,
|
||||
"python.linting.pylintArgs": [
|
||||
"--disable=C0111",
|
||||
"--enable=W0614",
|
||||
"--load-plugins=pylint_django",
|
||||
"--django-settings-module=kitsune.settings"
|
||||
],
|
||||
"python.autoComplete.extraPaths": [
|
||||
"/vendor"
|
||||
],
|
||||
|
@ -35,7 +21,7 @@
|
|||
]
|
||||
},
|
||||
"[jinja-html]": {
|
||||
"editor.formatOnSave": true,
|
||||
"editor.formatOnSave": false,
|
||||
"editor.defaultFormatter": "HookyQR.beautify"
|
||||
},
|
||||
"[jsonc]": {
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
|
||||
<p>
|
||||
{% trans %}
|
||||
Mozilla support is fully powered by our volunteer community that is
|
||||
helping hundreds of users everyday. This community is formed by
|
||||
Mozilla support forum is fully powered by our volunteer community that helps
|
||||
hundreds of users every day. This community is formed by
|
||||
passionate Firefox and Thunderbird users who take some of their
|
||||
spare time to help others. We couldn't do it without your passion
|
||||
and enthusiasm. Your contribution, as minor as it might seem, has
|
||||
|
@ -23,30 +23,23 @@
|
|||
<p><strong>{{ _('Tell us about yourself!') }}</strong></p>
|
||||
|
||||
<p>
|
||||
{% trans intro_url='/forums/contributors', irc_url='https://client01.chat.mibbit.com/?server=irc.mozilla.org&channel=#sumo' %}
|
||||
{% trans intro_url='/forums/contributors', matrix_url='https://chat.mozilla.org/#/room/#SUMO:mozilla.org' %}
|
||||
We are always very happy to hear from new people who like helping
|
||||
on the forums so if you haven’t met our community yet
|
||||
<a href="{{ intro_url }}">
|
||||
please take a minute to introduce yourself
|
||||
</a>.
|
||||
on the forums so if you haven’t met our community yet,
|
||||
<a href="{{ intro_url }}">please take a minute to introduce yourself</a>.
|
||||
If you want to stay low-profile, that’s also ok :). You can also
|
||||
find us all hanging out on IRC, on the
|
||||
<a href="{{ irc_url }}">
|
||||
#sumo channel
|
||||
</a>.
|
||||
find us all hanging out on Matrix, on the <a href="{{ matrix_url }}">#sumo channel</a>.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
|
||||
<p><strong>{{ _('Learn new things') }}</strong></p>
|
||||
|
||||
<p>
|
||||
{% trans training_url='/kb/introduction-contributor-quality-training?utm_source=training&utm_medium=1intro&utm_term=cqt&utm_campaign=Contributorqualitytraining' %}
|
||||
{% trans onboarding_url='/kb/how-contribute-support-forum?utm_source=onboardingemail&utm_medium=1intro&utm_term=cqt&utm_campaign=ContribOnboarding' %}
|
||||
If you are interested in learning more about how this whole support
|
||||
thing works, check out our
|
||||
<a href="{{ training_url }}">
|
||||
contributor training
|
||||
</a>.
|
||||
This includes some cool troubleshooting info, guidelines, how-to
|
||||
<a href="{{ onboarding_url }}">contributor guidelines</a>.
|
||||
This includes some cool troubleshooting info, how-to
|
||||
questions, and info about where to find more help if stuck.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
|
@ -54,16 +47,14 @@
|
|||
<p><strong>{{ _('Stay in touch') }}</strong></p>
|
||||
|
||||
<p>
|
||||
{% trans forums_url='/forums/contributors', blog_url='https://blog.mozilla.org/sumo/', twitter_url='https://twitter.com/sumo_mozilla', meetings_url='https://wiki.mozilla.org/Support/Weekly_Meetings' %}
|
||||
{% trans forums_url='/forums/contributors', blog_url='https://blog.mozilla.org/sumo/', twitter_url='https://twitter.com/sumo_mozilla', meetings_url='https://wiki.mozilla.org/Support/Weekly_Meetings', participate_url='/kb/how-participate-sumo-contributor-meetings' %}
|
||||
Finally, if you want to follow all news related to SUMO, don’t
|
||||
forget about our
|
||||
<a href="{{ forums_url }}">community forums</a>,
|
||||
<a href="{{ blog_url }}">official blog</a> and
|
||||
<a href="{{ twitter_url }}">Twitter account</a>.
|
||||
We also
|
||||
<a href="{{ meetings_url }}">
|
||||
meet almost every Monday
|
||||
</a> - and you can join us.
|
||||
<a href="{{ meetings_url }}">meet every month</a> - and you can <a href="{{ participate_url }}">join us</a>.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
|
||||
|
|
|
@ -6,12 +6,13 @@ made somebody's day!
|
|||
{% endtrans %}
|
||||
|
||||
{% trans %}
|
||||
Mozilla support is fully powered by our volunteer community that is helping
|
||||
hundreds of users everyday. This community is formed by passionate Firefox and
|
||||
Thunderbird users who take some of their spare time to help others. We couldn't
|
||||
do it without your passion and enthusiasm. Your contribution, as minor as it
|
||||
might seem, has tremendous value. Solving one issue in the support forums can
|
||||
help up to 1000 users a day!
|
||||
Mozilla support forum is fully powered by our volunteer community that helps
|
||||
hundreds of users every day. This community is formed by
|
||||
passionate Firefox and Thunderbird users who take some of their
|
||||
spare time to help others. We couldn't do it without your passion
|
||||
and enthusiasm. Your contribution, as minor as it might seem, has
|
||||
tremendous value. Solving one issue in the support forums can help
|
||||
up to 1000 users a day!
|
||||
{% endtrans %}
|
||||
|
||||
---
|
||||
|
@ -19,16 +20,16 @@ help up to 1000 users a day!
|
|||
|
||||
{% trans %}
|
||||
We are always very happy to hear from new people who like helping on the forums
|
||||
so if you haven’t met our community yet please take a minute to introduce
|
||||
so if you haven’t met our community yet, please take a minute to introduce
|
||||
yourself. If you want to stay low-profile, that’s also ok :). You can also find
|
||||
us all hanging out on IRC, on the #sumo channel on irc.mozilla.org.
|
||||
us all hanging out on Matrix, on the #sumo channel.
|
||||
{% endtrans %}
|
||||
|
||||
* Introductions - https://{{ host }}/forums/contributors
|
||||
* IRC - https://www.mibbit.com/?server=irc.mozilla.org&channel=#sumo
|
||||
* Matrix - https://chat.mozilla.org/#/room/#SUMO:mozilla.org
|
||||
|
||||
{% trans url='https://' + host + '/forums/contributors' %}
|
||||
The community forum is at {{ url }} .
|
||||
The community forum is at {{ url }}.
|
||||
{% endtrans %}
|
||||
|
||||
---
|
||||
|
@ -36,11 +37,11 @@ The community forum is at {{ url }} .
|
|||
|
||||
{% trans %}
|
||||
If you are interested in learning more about how this whole support thing
|
||||
works, check out our contributor training. This includes some cool
|
||||
troubleshooting info, guidelines, how-to questions, and info about where to
|
||||
works, check out our contributor guidelines. This includes some cool
|
||||
troubleshooting info, how-to questions, and info about where to
|
||||
find more help if stuck.
|
||||
{% endtrans %}
|
||||
https://{{ host }}/kb/introduction-contributor-quality-training
|
||||
https://{{ host }}/kb/how-contribute-support-forum?utm_source=onboardingemail&utm_medium=1intro&utm_term=cqt&utm_campaign=ContribOnboarding
|
||||
|
||||
---
|
||||
{{ _('Stay in touch') }}
|
||||
|
@ -54,8 +55,13 @@ Finally, if you want to follow all news related to SUMO, don’t forget about ou
|
|||
* {{ _('Twitter account') }} - https://twitter.com/sumo_mozilla
|
||||
* {{ _('Weekly meetings') }} - https://wiki.mozilla.org/Support/Weekly_Meetings
|
||||
|
||||
{% trans %}
|
||||
We also meet every month and you can join us.
|
||||
{% endtrans %}
|
||||
* {{ _('Contributor meetings') }} - https://{{ host }}/kb/how-participate-sumo-contributor-meetings
|
||||
|
||||
{% trans %}
|
||||
Thank you once more. We are looking forward to seeing you more often around
|
||||
SUMO! Keep rocking!
|
||||
{% endtrans %}
|
||||
{% endautoescape %}
|
||||
{% endautoescape %}
|
|
@ -29,25 +29,19 @@
|
|||
|
||||
<p>
|
||||
If you want to get in touch with other people localizing SUMO in your
|
||||
language,
|
||||
<a href="/forums/l10n-forum/711196?last=64679">
|
||||
go to our l10n forums
|
||||
language, go to our
|
||||
<a href="/forums/l10n-forum/">
|
||||
l10n forum
|
||||
</a>.
|
||||
You can also find people hanging out on IRC at
|
||||
<a href="https://www.mibbit.com/?server=irc.mozilla.org&channel=%23sumo-l10ns">
|
||||
#sumo-l10ns
|
||||
</a>
|
||||
and
|
||||
<a href="https://www.mibbit.com/?server=irc.mozilla.org&channel=%23sumo">
|
||||
#sumo.
|
||||
</a>
|
||||
You can also find people hanging out on Matrix at
|
||||
<a href="https://chat.mozilla.org/#/room/#SUMO:mozilla.org">#sumo channel</a>.
|
||||
</p>
|
||||
|
||||
<p><strong>Stay in touch</strong></p>
|
||||
<p>
|
||||
Finally, if you want to follow all news related to SUMO, don’t forget about
|
||||
Finally, if you want to follow all news related to SUMO, don’t forget about our
|
||||
<a href="/forums/contributors">
|
||||
our community forums
|
||||
community forums
|
||||
</a>,
|
||||
<a href="https://blog.mozilla.org/sumo/">
|
||||
official blog
|
||||
|
@ -58,9 +52,9 @@
|
|||
</a>.
|
||||
We also
|
||||
<a href="https://wiki.mozilla.org/Support/Weekly_Meetings">
|
||||
meet almost every Monday
|
||||
meet every month
|
||||
</a>
|
||||
- and you can join us.
|
||||
- and you can <a href="/kb/how-participate-sumo-contributor-meetings">join us</a>.
|
||||
</p>
|
||||
|
||||
<p><strong>Keep rocking</strong></p>
|
||||
|
|
|
@ -22,11 +22,10 @@ localizing skills!
|
|||
* Locale Page - https://{{ host }}/kb/locales
|
||||
|
||||
If you want to get in touch with other people localizing SUMO in your language
|
||||
you can check out the forums or our IRC channels.
|
||||
you can check out the forums or Matrix.
|
||||
|
||||
* L10n forums - https://{{ host }}/forums/l10n-forum/711196?last=64679
|
||||
* L10n IRC channel - https://www.mibbit.com/?server=irc.mozilla.org&channel=%23sumo-l10ns
|
||||
* General SUMO IRC channel - https://www.mibbit.com/?server=irc.mozilla.org&channel=%23sumo
|
||||
* Matrix sumo channel - https://chat.mozilla.org/#/room/#SUMO:mozilla.org
|
||||
|
||||
---
|
||||
Stay in touch
|
||||
|
@ -37,6 +36,7 @@ Finally, if you want to follow all news related to SUMO, don’t forget about ou
|
|||
* Official blog - https://blog.mozilla.org/sumo/
|
||||
* Twitter account - https://twitter.com/sumo_mozilla
|
||||
* Weekly meetings - https://wiki.mozilla.org/Support/Weekly_Meetings
|
||||
* Join contributor meetings - https://{{ host }}/kb/how-participate-sumo-contributor-meetings
|
||||
|
||||
---
|
||||
Keep rocking
|
||||
|
|
|
@ -49,7 +49,7 @@ class WelcomeEmailsTests(TestCase):
|
|||
# Check that one link used the right host.
|
||||
assert "https://testserver/forums/contributors" in mail.outbox[0].body
|
||||
assert (
|
||||
"The community forum is at https://testserver/forums/contributors ."
|
||||
"The community forum is at https://testserver/forums/contributors."
|
||||
in mail.outbox[0].body
|
||||
)
|
||||
# Assumption: links will be done consistently, and so this is enough testing.
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<td>
|
||||
{{ number(row.num_visits) }}
|
||||
{% if row.visits_ratio %}
|
||||
<div class="absolute-graph" data-absolute-graph={{ row.visits_ratio * 100 }}></div>
|
||||
<div class="absolute-graph" data-absolute-graph="{{ row.visits_ratio * 100 }}%"></div>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="status {% if not row.latest_revision %}needs-review{% endif %}">
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
{{ number(row.visits) }}
|
||||
</td>
|
||||
<td>
|
||||
<div class="absolute-graph" data-absolute-graph="{{ row.percent }}"></div>
|
||||
<div class="absolute-graph" data-absolute-graph="{{ row.percent }}%"></div>
|
||||
</td>
|
||||
<td class="status">
|
||||
{% if row.updated is defined %}
|
||||
|
@ -28,14 +28,14 @@
|
|||
{% elif row.custom %}
|
||||
<div class="custom">{{ row.column4_data }}</div>
|
||||
{% else %}
|
||||
{% if row.status %}
|
||||
{% if row.status and row.status_class != "ok" %}
|
||||
<a href="{{ row.status_url }}">
|
||||
{{ row.status }}
|
||||
{% if row.status_class %}<span class="{{ row.status_class }}"></span>{% endif %}
|
||||
</a>
|
||||
{% else %}
|
||||
{# For having a bullet char without a link #}
|
||||
<span class="{{ row.status_class }}"></span>
|
||||
<span class="{{ row.status_class }}">{{ row.status }}</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
|
|
@ -41,16 +41,15 @@
|
|||
{{ row.title }}
|
||||
<div>{{ row.description }}</div>
|
||||
</td>
|
||||
<td colspan="2">
|
||||
<td>
|
||||
{% trans numerator=number(row.numerator), denominator=number(row.denominator) %}
|
||||
{{ numerator }} of {{ denominator }}
|
||||
{{ numerator }}
|
||||
<small>of {{ denominator }}</small>
|
||||
{% endtrans %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<td>
|
||||
{{ row.percent }}%
|
||||
<div class="percent-graph">
|
||||
<span>{{ row.percent }}%</span>
|
||||
<div style="width: {{ row.percent }}%"{% if should_color %} class="{{ 'best' if row.percent == 100 else ('better' if row.percent >= 20 else 'bad') }}"{% endif %}></div>
|
||||
</div>
|
||||
</td>
|
||||
|
|
|
@ -74,7 +74,7 @@ most_visited_translation_from = (
|
|||
|
||||
REVIEW_STATUSES = {
|
||||
1: (_lazy("Review Needed"), "wiki.document_revisions", "review"),
|
||||
0: ("", "", "ok"),
|
||||
0: ("Updated", "", "ok"),
|
||||
}
|
||||
SIGNIFICANCE_STATUSES = {
|
||||
MEDIUM_SIGNIFICANCE: (_lazy("Update Needed"), "wiki.edit_document", "update"),
|
||||
|
@ -710,7 +710,7 @@ class CategoryReadout(Readout):
|
|||
def _format_row(self, row):
|
||||
(slug, title, visits, needs_changes, needs_review, unready_for_l10n) = row
|
||||
if needs_review:
|
||||
status, view_name, dummy = REVIEW_STATUSES[needs_review]
|
||||
status, view_name, _ = REVIEW_STATUSES[needs_review]
|
||||
elif needs_changes:
|
||||
status = _lazy("Changes Needed")
|
||||
view_name = "wiki.document_revisions"
|
||||
|
@ -718,7 +718,7 @@ class CategoryReadout(Readout):
|
|||
status = _lazy("Changes Not Ready For Localization")
|
||||
view_name = "wiki.document_revisions"
|
||||
else:
|
||||
status, view_name, dummy = REVIEW_STATUSES[0]
|
||||
status, view_name, _ = REVIEW_STATUSES[0]
|
||||
|
||||
return dict(
|
||||
title=title,
|
||||
|
|
|
@ -395,7 +395,7 @@ class TemplateTests(ReadoutTestCase):
|
|||
|
||||
self.assertEqual(1, len(self.rows(locale=locale, product=p)))
|
||||
self.assertEqual(t.title, self.row(locale=locale, product=p)["title"])
|
||||
self.assertEqual("", self.row(locale=locale, product=p)["status"])
|
||||
self.assertEqual("Updated", self.row(locale=locale, product=p)["status"])
|
||||
|
||||
def test_needs_changes(self):
|
||||
"""Test status for article that needs changes"""
|
||||
|
@ -450,7 +450,7 @@ class HowToContributeTests(ReadoutTestCase):
|
|||
|
||||
self.assertEqual(1, len(self.rows(locale=locale, product=p)))
|
||||
self.assertEqual(d2.title, self.row(locale=locale, product=p)["title"])
|
||||
self.assertEqual("", self.row(locale=locale, product=p)["status"])
|
||||
self.assertEqual("Updated", self.row(locale=locale, product=p)["status"])
|
||||
|
||||
|
||||
class AdministrationTests(ReadoutTestCase):
|
||||
|
@ -469,7 +469,7 @@ class AdministrationTests(ReadoutTestCase):
|
|||
|
||||
self.assertEqual(1, len(self.rows(locale=locale, product=p)))
|
||||
self.assertEqual(d2.title, self.row(locale=locale, product=p)["title"])
|
||||
self.assertEqual("", self.row(locale=locale, product=p)["status"])
|
||||
self.assertEqual("Updated", self.row(locale=locale, product=p)["status"])
|
||||
|
||||
|
||||
class MostVisitedTranslationsTests(ReadoutTestCase):
|
||||
|
@ -533,7 +533,7 @@ class MostVisitedTranslationsTests(ReadoutTestCase):
|
|||
translation = TranslatedRevisionFactory(document__locale="de", is_approved=True)
|
||||
row = self.row()
|
||||
self.assertEqual(row["title"], translation.document.title)
|
||||
self.assertEqual(str(row["status"]), "")
|
||||
self.assertEqual(str(row["status"]), "Updated")
|
||||
self.assertEqual(row["status_class"], "ok")
|
||||
|
||||
def test_one_rejected_revision(self):
|
||||
|
|
|
@ -1,13 +1,185 @@
|
|||
/* L10n and Contributor Dashboards */
|
||||
@use '../config' as c;
|
||||
@use 'protocol/css/includes/lib' as p;
|
||||
|
||||
.absolute-graph {
|
||||
.dashboards table {
|
||||
border-collapse: collapse;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.dashboards tr:nth-child(even) {
|
||||
background-color: var(--color-shade-bg);
|
||||
}
|
||||
|
||||
.dashboards td,
|
||||
.dashboards th {
|
||||
padding: p.$spacing-sm p.$spacing-xs;
|
||||
}
|
||||
|
||||
.dashboards td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dashboards table.overview small {
|
||||
font-size: 80%;
|
||||
color: #999;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.dashboards div.percent-graph {
|
||||
background-color: #f3f3f3;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.dashboards div.percent-graph div {
|
||||
background-color: #dfdfdf;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.dashboards div.absolute-graph {
|
||||
display: block;
|
||||
background-color: p.$color-green-60;
|
||||
height: 1em;
|
||||
}
|
||||
|
||||
.dashboards #overview-options,
|
||||
.dashboards .table-footer {
|
||||
margin: 0;
|
||||
padding: p.$spacing-md 0;
|
||||
}
|
||||
|
||||
.dashboards #overview-options label {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.dashboards .table-footer {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
.dashboards table.documents .users {
|
||||
font-size: 90%;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.dashboards table.overview td:nth-child(2) {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.dashboards table.overview td:nth-child(4) {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.dashboards table.documents td:nth-child(1) {
|
||||
width: p.$content-xs;
|
||||
}
|
||||
|
||||
.dashboards table.documents td:nth-child(2) {
|
||||
padding-right: p.$spacing-xs;
|
||||
text-align: right;
|
||||
width: p.$layout-xl;
|
||||
}
|
||||
|
||||
.dashboards table.documents td:nth-child(3),
|
||||
.dashboards table.documents th:nth-child(3) {
|
||||
padding-left: 0;
|
||||
width: p.$layout-2xl;
|
||||
}
|
||||
|
||||
.dashboards table.documents td:nth-child(4),
|
||||
.dashboards table.documents th:nth-child(4) {
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
width: p.$content-xs;
|
||||
}
|
||||
|
||||
.dashboards table.busy {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.dashboards ul.readout-modes {
|
||||
padding: p.$spacing-xs 0px;
|
||||
}
|
||||
|
||||
.dashboards ul.readout-modes li {
|
||||
display: inline-block;
|
||||
background: var(--color-marketing-gray-02);
|
||||
border-radius: p.$border-radius-sm;
|
||||
cursor: pointer;
|
||||
list-style: none;
|
||||
margin: p.$spacing-sm p.$spacing-xs;
|
||||
padding: p.$spacing-xs;
|
||||
width: calc(25% - p.$spacing-md);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dashboards ul.readout-modes li:hover {
|
||||
background: var(--color-marketing-gray-01);
|
||||
}
|
||||
|
||||
.dashboards ul.readout-modes li.active {
|
||||
background: var(--color-click);
|
||||
}
|
||||
|
||||
.dashboards ul.readout-modes li.active:hover {
|
||||
background: #4978bc;
|
||||
}
|
||||
|
||||
.dashboards ul.readout-modes li.active a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.dashboards-detail h1 {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.dashboards summary.with-mode-selectors {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.dashboards details table {
|
||||
display: block; /* Makes collapse animation work */
|
||||
}
|
||||
|
||||
/* Status badges */
|
||||
.dashboards td.status:has(.review),
|
||||
.dashboards td.status:has(.out-of-date) {
|
||||
.dashboards td.status:has(.out-of-date){
|
||||
background-color: var(--color-warning);
|
||||
}
|
||||
|
||||
.dashboards td.status {
|
||||
.update:after {
|
||||
content: '\25C6';
|
||||
color: #f8e687;
|
||||
}
|
||||
.out-of-date:after {
|
||||
content: '\25C6';
|
||||
color: orange;
|
||||
|
||||
}
|
||||
.untranslated:after {
|
||||
content: '\25B2';
|
||||
color: red;
|
||||
|
||||
}
|
||||
.ok:after {
|
||||
content: '\25CF';
|
||||
color: #add575;
|
||||
margin-left: p.$spacing-xs;
|
||||
}
|
||||
}
|
||||
.dashboards td a {
|
||||
text-decoration:none;
|
||||
&:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
}
|
||||
|
||||
.dashboards td a:has(span.ok) {
|
||||
&:hover {
|
||||
text-decoration:none;
|
||||
cursor: initial;
|
||||
}
|
||||
&:visited {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
|
@ -27,11 +27,11 @@
|
|||
<li {{ active|class_selected('edit') }}>
|
||||
<a href="{{ url('wiki.edit_document', document.slug) }}">{{ _('Edit Article') }}</a>
|
||||
</li>
|
||||
{% if document.allows(user, 'edit') %}
|
||||
<li {{ active|class_selected('edit_metadata') }}>
|
||||
<a href="{{ url('wiki.edit_document_metadata', document.slug) }}">{{ _('Edit Article Metadata') }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if document and document.allows(user, 'edit') and document.allows(user, 'create_revision') %}
|
||||
<li {{ active|class_selected('edit_metadata') }}>
|
||||
<a href="{{ url('wiki.edit_document_metadata', document.slug) }}">{{ _('Edit Article Metadata') }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if document and not document.is_archived and document.is_localizable %}
|
||||
<li {{ active|class_selected('localize') }}>
|
||||
|
|
|
@ -851,13 +851,13 @@ Django = ">=3.2"
|
|||
|
||||
[[package]]
|
||||
name = "django"
|
||||
version = "4.1.12"
|
||||
version = "4.1.13"
|
||||
description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "Django-4.1.12-py3-none-any.whl", hash = "sha256:e92ce8f240a856615e96d8b955707f824c29ea0f51dff4f76777caa5e113ec72"},
|
||||
{file = "Django-4.1.12.tar.gz", hash = "sha256:d02483ad49872238fa59875c1269293fe4f17ecee13c121893607cc0b284696b"},
|
||||
{file = "Django-4.1.13-py3-none-any.whl", hash = "sha256:04ab3f6f46d084a0bba5a2c9a93a3a2eb3fe81589512367a75f79ee8acf790ce"},
|
||||
{file = "Django-4.1.13.tar.gz", hash = "sha256:94a3f471e833c8f124ee7a2de11e92f633991d975e3fa5bdd91e8abd66426318"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
@ -4506,4 +4506,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.11"
|
||||
content-hash = "6e78d397c9b65561674e927b2ee6b92753741d0cfa05cc943c3214544847f239"
|
||||
content-hash = "9704ab7a7599dee4b0f9a90ea5250680d4c2475f15c0e6a73f4e836be66faa45"
|
||||
|
|
|
@ -16,7 +16,7 @@ license = "BSD 3-Clause"
|
|||
[tool.poetry.dependencies]
|
||||
python = "^3.11"
|
||||
APScheduler = "^3.10.0"
|
||||
Django = "4.1.12"
|
||||
Django = "4.1.13"
|
||||
babis = "^0.2.4"
|
||||
Pillow = "^9.4.0"
|
||||
bleach = {version = "^6.0.0", extras = ["css"]}
|
||||
|
|
Загрузка…
Ссылка в новой задаче