mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-11 04:19:25 +00:00
rework news form
This commit is contained in:
@ -25,10 +25,10 @@
|
||||
</div>
|
||||
<h4>{{ news.title }}</h4>
|
||||
<p class="date">
|
||||
<span>{{ news.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
|
||||
{{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }}</span> -
|
||||
<span>{{ news.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
|
||||
{{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}</span>
|
||||
<span>{{ date.start_date|localtime|date(DATETIME_FORMAT) }}
|
||||
{{ date.start_date|localtime|time(DATETIME_FORMAT) }}</span> -
|
||||
<span>{{ date.end_date|localtime|date(DATETIME_FORMAT) }}
|
||||
{{ date.end_date|localtime|time(DATETIME_FORMAT) }}</span>
|
||||
</p>
|
||||
<div class="news_content">
|
||||
<div><em>{{ news.summary|markdown }}</em></div>
|
||||
|
@ -10,21 +10,6 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if 'preview' in request.POST.keys() %}
|
||||
<section class="news_event">
|
||||
<h4>{{ form.instance.title }}</h4>
|
||||
<p class="date">
|
||||
<span>{{ form.instance.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
|
||||
{{ form.instance.dates.first().start_date|localtime|time(DATETIME_FORMAT) }}</span> -
|
||||
<span>{{ form.instance.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
|
||||
{{ form.instance.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}</span>
|
||||
</p>
|
||||
<p><a href="#">{{ form.instance.club or "Club" }}</a></p>
|
||||
<div>{{ form.instance.summary|markdown }}</div>
|
||||
<div>{{ form.instance.content|markdown }}</div>
|
||||
<p>{% trans %}Author: {% endtrans %} {{ user_profile_link(form.instance.author) }}</p>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% if object %}
|
||||
<h2>{% trans %}Edit news{% endtrans %}</h2>
|
||||
{% else %}
|
||||
@ -33,103 +18,73 @@
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.non_field_errors() }}
|
||||
{{ form.author }}
|
||||
<p>
|
||||
{{ form.type.errors }}
|
||||
<label for="{{ form.type.name }}" class="required">{{ form.type.label }}</label>
|
||||
<ul>
|
||||
<li>{% trans %}Notice: Information, election result - no date{% endtrans %}</li>
|
||||
<li>{% trans %}Event: punctual event, associated with one date{% endtrans %}</li>
|
||||
<li>
|
||||
{% trans trimmed%}
|
||||
Weekly: recurrent event, associated with many dates
|
||||
(specify the first one, and a deadline)
|
||||
{% endtrans %}
|
||||
</li>
|
||||
<li>
|
||||
{% trans trimmed %}
|
||||
Call: long time event, associated with a long date (like election appliance)
|
||||
{% endtrans %}
|
||||
</li>
|
||||
</ul>
|
||||
{{ form.type }}
|
||||
</p>
|
||||
<p class="date">
|
||||
{{ form.start_date.errors }}
|
||||
<label for="{{ form.start_date.name }}">{{ form.start_date.label }}</label>
|
||||
{{ form.start_date }}
|
||||
</p>
|
||||
<p class="date">
|
||||
{{ form.end_date.errors }}
|
||||
<label for="{{ form.end_date.name }}">{{ form.end_date.label }}</label>
|
||||
{{ form.end_date }}
|
||||
</p>
|
||||
<p class="until">
|
||||
{{ form.until.errors }}
|
||||
<label for="{{ form.until.name }}">{{ form.until.label }}</label>
|
||||
{{ form.until }}
|
||||
</p>
|
||||
<p>
|
||||
<fieldset>
|
||||
{{ form.title.errors }}
|
||||
<label for="{{ form.title.name }}" class="required">{{ form.title.label }}</label>
|
||||
{{ form.title.label_tag() }}
|
||||
{{ form.title }}
|
||||
</p>
|
||||
<p>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
{{ form.club.errors }}
|
||||
<label for="{{ form.club.name }}" class="required">{{ form.club.label }}</label>
|
||||
{{ form.club.label_tag() }}
|
||||
<span class="helptext">{{ form.club.help_text }}</span>
|
||||
{{ form.club }}
|
||||
</p>
|
||||
<p>
|
||||
</fieldset>
|
||||
{{ form.date_form.non_field_errors() }}
|
||||
<div
|
||||
class="row gap-2x"
|
||||
x-data="{startDate: '{{ form.date_form.start_date.value() }}'}"
|
||||
>
|
||||
{# startDate is used to dynamically ensure end_date >= start_date,
|
||||
whatever the value of start_date #}
|
||||
<fieldset>
|
||||
{{ form.date_form.start_date.errors }}
|
||||
{{ form.date_form.start_date.label_tag() }}
|
||||
<span class="helptext">{{ form.date_form.start_date.help_text }}</span>
|
||||
{{ form.date_form.start_date|add_attr("x-model=startDate") }}
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
{{ form.date_form.end_date.errors }}
|
||||
{{ form.date_form.end_date.label_tag() }}
|
||||
<span class="helptext">{{ form.date_form.end_date.help_text }}</span>
|
||||
{{ form.date_form.end_date|add_attr(":min=startDate") }}
|
||||
</fieldset>
|
||||
</div>
|
||||
{# lower to convert True and False to true and false #}
|
||||
<div x-data="{isWeekly: {{ form.date_form.is_weekly.value()|lower }}}">
|
||||
<fieldset>
|
||||
<div class="row gap">
|
||||
{{ form.date_form.is_weekly|add_attr("x-model=isWeekly") }}
|
||||
<div>
|
||||
{{ form.date_form.is_weekly.label_tag() }}
|
||||
<span class="helptext">{{ form.date_form.is_weekly.help_text }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset x-show="isWeekly" x-transition x-cloak>
|
||||
{{ form.date_form.occurrences.label_tag() }}
|
||||
<span class="helptext">{{ form.date_form.occurrences.help_text }}</span>
|
||||
{{ form.date_form.occurrences }}
|
||||
</fieldset>
|
||||
</div>
|
||||
<fieldset>
|
||||
{{ form.summary.errors }}
|
||||
<label for="{{ form.summary.name }}" class="required">{{ form.summary.label }}</label>
|
||||
{{ form.summary.label_tag() }}
|
||||
<span class="helptext">{{ form.summary.help_text }}</span>
|
||||
{{ form.summary }}
|
||||
</p>
|
||||
<p>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
{{ form.content.errors }}
|
||||
<label for="{{ form.content.name }}">{{ form.content.label }}</label>
|
||||
{{ form.content.label_tag() }}
|
||||
<span class="helptext">{{ form.content.help_text }}</span>
|
||||
{{ form.content }}
|
||||
</p>
|
||||
{% if user.is_com_admin %}
|
||||
<p>
|
||||
{{ form.automoderation.errors }}
|
||||
<label for="{{ form.automoderation.name }}">{{ form.automoderation.label }}</label>
|
||||
{{ form.automoderation }}
|
||||
</p>
|
||||
</fieldset>
|
||||
{% if user.is_root or user.is_com_admin %}
|
||||
<fieldset>
|
||||
{{ form.auto_moderate.errors }}
|
||||
{{ form.auto_moderate }}
|
||||
{{ form.auto_moderate.label_tag() }}
|
||||
</fieldset>
|
||||
{% endif %}
|
||||
<p><input type="submit" name="preview" value="{% trans %}Preview{% endtrans %}"/></p>
|
||||
<p><input type="submit" value="{% trans %}Save{% endtrans %}"/></p>
|
||||
<p><input type="submit" value="{% trans %}Save{% endtrans %}" class="btn btn-blue"/></p>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block script %}
|
||||
{{ super() }}
|
||||
<script>
|
||||
$(function () {
|
||||
let type = $('input[name=type]');
|
||||
let dates = $('.date');
|
||||
let until = $('.until');
|
||||
|
||||
function update_targets() {
|
||||
const type_checked = $('input[name=type]:checked');
|
||||
if (["CALL", "EVENT"].includes(type_checked.val())) {
|
||||
dates.show();
|
||||
until.hide();
|
||||
} else if (type_checked.val() === "WEEKLY") {
|
||||
dates.show();
|
||||
until.show();
|
||||
} else {
|
||||
dates.hide();
|
||||
until.hide();
|
||||
}
|
||||
}
|
||||
|
||||
update_targets();
|
||||
type.change(update_targets);
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
@ -15,37 +15,21 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if user.is_com_admin %}
|
||||
<div id="news_admin">
|
||||
<a class="button" href="{{ url('com:news_admin_list') }}">{% trans %}Administrate news{% endtrans %}</a>
|
||||
</div>
|
||||
<br>
|
||||
{% endif %}
|
||||
|
||||
<div id="news">
|
||||
<div id="left_column" class="news_column">
|
||||
{% for news in object_list.filter(type="NOTICE") %}
|
||||
<section class="news_notice">
|
||||
<h4><a href="{{ url('com:news_detail', news_id=news.id) }}">{{ news.title }}</a></h4>
|
||||
<div class="news_content">{{ news.summary|markdown }}</div>
|
||||
</section>
|
||||
{% endfor %}
|
||||
|
||||
{% for news in object_list.filter(dates__start_date__lte=timezone.now(), dates__end_date__gte=timezone.now(), type="CALL") %}
|
||||
<section class="news_call">
|
||||
<h4> <a href="{{ url('com:news_detail', news_id=news.id) }}">{{ news.title }}</a></h4>
|
||||
<div class="news_date">
|
||||
<span>{{ news.dates.first().start_date|localtime|date(DATETIME_FORMAT) }}
|
||||
{{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }}</span> -
|
||||
<span>{{ news.dates.first().end_date|localtime|date(DATETIME_FORMAT) }}
|
||||
{{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}</span>
|
||||
</div>
|
||||
<div class="news_content">{{ news.summary|markdown }}</div>
|
||||
</section>
|
||||
{% endfor %}
|
||||
|
||||
{% set events_dates = NewsDate.objects.filter(end_date__gte=timezone.now(), start_date__lte=timezone.now()+timedelta(days=5), news__type="EVENT", news__is_moderated=True).datetimes('start_date', 'day') %}
|
||||
{% set events_dates = NewsDate.objects.filter(end_date__gte=timezone.now(), start_date__lte=timezone.now()+timedelta(days=5), news__is_moderated=True).datetimes('start_date', 'day') %}
|
||||
<h3>{% trans %}Events today and the next few days{% endtrans %}</h3>
|
||||
{% if user.is_authenticated and (user.is_com_admin or user.memberships.board().ongoing().exists()) %}
|
||||
<a class="btn btn-blue margin-bottom" href="{{ url("com:news_new") }}">
|
||||
<i class="fa fa-plus"></i>
|
||||
{% trans %}Create news{% endtrans %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if user.is_com_admin %}
|
||||
<a class="btn btn-blue" href="{{ url('com:news_admin_list') }}">{% trans %}Administrate news{% endtrans %}</a>
|
||||
<br>
|
||||
{% endif %}
|
||||
{% if events_dates %}
|
||||
{% for d in events_dates %}
|
||||
<div class="news_events_group">
|
||||
@ -57,113 +41,104 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="news_events_group_items">
|
||||
{% for news in object_list.filter(dates__start_date__gte=d,
|
||||
dates__start_date__lte=d+timedelta(days=1),
|
||||
type="EVENT").exclude(dates__end_date__lt=timezone.now())
|
||||
.order_by('dates__start_date') %}
|
||||
<section class="news_event">
|
||||
<div class="club_logo">
|
||||
{% if news.club.logo %}
|
||||
<img src="{{ news.club.logo.url }}" alt="{{ news.club }}" />
|
||||
{% else %}
|
||||
<img src="{{ static("com/img/news.png") }}" alt="{{ news.club }}" />
|
||||
{% endif %}
|
||||
</div>
|
||||
<h4> <a href="{{ url('com:news_detail', news_id=news.id) }}">{{ news.title }}</a></h4>
|
||||
<div><a href="{{ news.club.get_absolute_url() }}">{{ news.club }}</a></div>
|
||||
<div class="news_date">
|
||||
<span>{{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }}</span> -
|
||||
<span>{{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}</span>
|
||||
</div>
|
||||
<div class="news_content">{{ news.summary|markdown }}
|
||||
<div class="button_bar">
|
||||
{{ fb_quick(news) }}
|
||||
{{ tweet_quick(news) }}
|
||||
{% for news in object_list.filter(dates__start_date__gte=d,dates__start_date__lte=d+timedelta(days=1)).exclude(dates__end_date__lt=timezone.now()).order_by('dates__start_date') %}
|
||||
<section class="news_event">
|
||||
<div class="club_logo">
|
||||
{% if news.club.logo %}
|
||||
<img src="{{ news.club.logo.url }}" alt="{{ news.club }}" />
|
||||
{% else %}
|
||||
<img src="{{ static("com/img/news.png") }}" alt="{{ news.club }}" />
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<h4> <a href="{{ url('com:news_detail', news_id=news.id) }}">{{ news.title }}</a></h4>
|
||||
<div><a href="{{ news.club.get_absolute_url() }}">{{ news.club }}</a></div>
|
||||
<div class="news_date">
|
||||
<span>{{ news.dates.first().start_date|localtime|time(DATETIME_FORMAT) }}</span> -
|
||||
<span>{{ news.dates.first().end_date|localtime|time(DATETIME_FORMAT) }}</span>
|
||||
</div>
|
||||
<div class="news_content">{{ news.summary|markdown }}
|
||||
<div class="button_bar">
|
||||
{{ fb_quick(news) }}
|
||||
{{ tweet_quick(news) }}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="news_empty">
|
||||
<em>{% trans %}Nothing to come...{% endtrans %}</em>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="news_empty">
|
||||
<em>{% trans %}Nothing to come...{% endtrans %}</em>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
<h3>{% trans %}All coming events{% endtrans %}</h3>
|
||||
<ics-calendar locale="{{ get_language() }}"></ics-calendar>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="right_column">
|
||||
<div id="links">
|
||||
<h3>{% trans %}Links{% endtrans %}</h3>
|
||||
<div id="links_content">
|
||||
<h4>{% trans %}Our services{% endtrans %}</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<i class="fa-solid fa-graduation-cap fa-xl"></i>
|
||||
<a href="{{ url("pedagogy:guide") }}">{% trans %}UV Guide{% endtrans %}</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa-solid fa-magnifying-glass fa-xl"></i>
|
||||
<a href="{{ url("matmat:search_clear") }}">{% trans %}Matmatronch{% endtrans %}</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa-solid fa-check-to-slot fa-xl"></i>
|
||||
<a href="{{ url("election:list") }}">{% trans %}Elections{% endtrans %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<h4>{% trans %}Social media{% endtrans %}</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<i class="fa-brands fa-discord fa-xl"></i>
|
||||
<a rel="nofollow" target="#" href="https://discord.gg/QvTm3XJrHR">{% trans %}Discord AE{% endtrans %}</a>
|
||||
{% if user.was_subscribed %}
|
||||
- <a rel="nofollow" target="#" href="https://discord.gg/u6EuMfyGaJ">{% trans %}Dev Team{% endtrans %}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa-brands fa-facebook fa-xl"></i>
|
||||
<a rel="nofollow" target="#" href="https://www.facebook.com/@AEUTBM/">{% trans %}Facebook{% endtrans %}</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa-brands fa-square-instagram fa-xl"></i>
|
||||
<a rel="nofollow" target="#" href="https://www.instagram.com/ae_utbm">{% trans %}Instagram{% endtrans %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<h3>{% trans %}All coming events{% endtrans %}</h3>
|
||||
<ics-calendar locale="{{ get_language() }}"></ics-calendar>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="birthdays">
|
||||
<h3>{% trans %}Birthdays{% endtrans %}</h3>
|
||||
<div id="birthdays_content">
|
||||
{%- if user.was_subscribed -%}
|
||||
<ul class="birthdays_year">
|
||||
{%- for year, users in birthdays -%}
|
||||
<div id="right_column">
|
||||
<div id="links">
|
||||
<h3>{% trans %}Links{% endtrans %}</h3>
|
||||
<div id="links_content">
|
||||
<h4>{% trans %}Our services{% endtrans %}</h4>
|
||||
<ul>
|
||||
<li>
|
||||
{% trans age=timezone.now().year - year %}{{ age }} year old{% endtrans %}
|
||||
<ul>
|
||||
{%- for u in users -%}
|
||||
<li><a href="{{ u.get_absolute_url() }}">{{ u.get_short_name() }}</a></li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
<i class="fa-solid fa-graduation-cap fa-xl"></i>
|
||||
<a href="{{ url("pedagogy:guide") }}">{% trans %}UV Guide{% endtrans %}</a>
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- else -%}
|
||||
<p>{% trans %}You need to subscribe to access this content{% endtrans %}</p>
|
||||
{%- endif -%}
|
||||
<li>
|
||||
<i class="fa-solid fa-magnifying-glass fa-xl"></i>
|
||||
<a href="{{ url("matmat:search_clear") }}">{% trans %}Matmatronch{% endtrans %}</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa-solid fa-check-to-slot fa-xl"></i>
|
||||
<a href="{{ url("election:list") }}">{% trans %}Elections{% endtrans %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<h4>{% trans %}Social media{% endtrans %}</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<i class="fa-brands fa-discord fa-xl"></i>
|
||||
<a rel="nofollow" target="#" href="https://discord.gg/QvTm3XJrHR">{% trans %}Discord AE{% endtrans %}</a>
|
||||
{% if user.was_subscribed %}
|
||||
- <a rel="nofollow" target="#" href="https://discord.gg/u6EuMfyGaJ">{% trans %}Dev Team{% endtrans %}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa-brands fa-facebook fa-xl"></i>
|
||||
<a rel="nofollow" target="#" href="https://www.facebook.com/@AEUTBM/">{% trans %}Facebook{% endtrans %}</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa-brands fa-square-instagram fa-xl"></i>
|
||||
<a rel="nofollow" target="#" href="https://www.instagram.com/ae_utbm">{% trans %}Instagram{% endtrans %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="birthdays">
|
||||
<h3>{% trans %}Birthdays{% endtrans %}</h3>
|
||||
<div id="birthdays_content">
|
||||
{%- if user.was_subscribed -%}
|
||||
<ul class="birthdays_year">
|
||||
{%- for year, users in birthdays -%}
|
||||
<li>
|
||||
{% trans age=timezone.now().year - year %}{{ age }} year old{% endtrans %}
|
||||
<ul>
|
||||
{%- for u in users -%}
|
||||
<li><a href="{{ u.get_absolute_url() }}">{{ u.get_short_name() }}</a></li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- else -%}
|
||||
<p>{% trans %}You need to subscribe to access this content{% endtrans %}</p>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
Reference in New Issue
Block a user