Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Editors have more control over editorial team display #4068

Merged
merged 19 commits into from
Apr 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
6caf3ff
#2433 #3146 update settings and models.
ajrbyers Mar 28, 2024
fb09a40
#2433 #3146 add display_profile_images to admin
ajrbyers Mar 28, 2024
8e3df23
#2433 #3146 update forms and settings tempaltes
ajrbyers Mar 28, 2024
25be714
#2433 #3146 remove enable_editorial_images from group_styling template
ajrbyers Mar 28, 2024
c73a04a
#2433 #3146 move <img> output to common template and update theme tem…
ajrbyers Mar 28, 2024
29b2569
#2433 #3146 Add new image to image docs.
ajrbyers Mar 28, 2024
59d478e
Merge journal_defaults.json
ajrbyers Apr 15, 2024
b89ba96
#908 update the editorial team pages to work with new settings
ajrbyers Mar 28, 2024
d476538
#908 complete previous commit
ajrbyers Mar 28, 2024
3521cd3
#908 update journal nav to use new editorial group page name setting
ajrbyers Mar 28, 2024
fe3769b
#908 use the editorial group page name setting on the CMS nav element.
ajrbyers Mar 28, 2024
f79dbdf
Sets FR, DE, NL and CY values for editorial_group_page_name setting.
ajrbyers Apr 2, 2024
352d534
Update model to reflect new usage of this file (default_profile_image)
ajrbyers Apr 2, 2024
ec0c6b6
Update templates with new usage.
ajrbyers Apr 2, 2024
30a18c5
Tweaked docs.
ajrbyers Apr 2, 2024
b2eb676
Fixes comma splice.
ajrbyers Apr 15, 2024
0073e86
Changes default alt text for profile image.
ajrbyers Apr 15, 2024
79c1de8
Group names are now H2 in the OLH theme
ajrbyers Apr 15, 2024
d719990
Editing editorial team settings will now clear Janeway's cache ensuri…
ajrbyers Apr 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion docs/source/manager/journal/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Carousel

- Latest articles
- Latest news
- A combonation of both
- A combination of both

You can select the number of items to display as well as select the items you want to include or exclude.

Expand Down Expand Up @@ -105,6 +105,8 @@ Default thumbnail
Favicon
The tiny little image you often see in the browser tab before the name of a webpage. Use a very small image of equal width and height. If not set, no Favicon will appear.

Default Profile Image
The default image used when editorial team groups have "Display profile images" enabled. The image is also used on the public profile page when a user has enabled it.

Styling
-------
Expand Down
3 changes: 2 additions & 1 deletion src/core/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,8 @@ def _journal(self, obj):


class EditorialGroupAdmin(admin.ModelAdmin):
list_display = ('name', 'journal', 'press', 'sequence')
list_display = ('name', 'journal', 'press', 'sequence',
'display_profile_images')
list_filter = ('journal', 'press')
search_fields = ('name',)

Expand Down
8 changes: 4 additions & 4 deletions src/core/forms/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ class Meta:

class EditorialGroupForm(JanewayTranslationModelForm):


def __init__(self, *args, **kwargs):
next_sequence = kwargs.pop('next_sequence', None)
super(EditorialGroupForm, self).__init__(*args, **kwargs)
Expand All @@ -96,7 +95,7 @@ def __init__(self, *args, **kwargs):

class Meta:
model = models.EditorialGroup
fields = ('name', 'description', 'sequence',)
fields = ('name', 'description', 'sequence', 'display_profile_images')
exclude = ('journal', 'press')


Expand Down Expand Up @@ -370,8 +369,9 @@ class JournalImageForm(forms.ModelForm):
class Meta:
model = journal_models.Journal
fields = (
'header_image', 'default_cover_image',
'default_large_image', 'favicon', 'press_image_override',
'header_image', 'default_cover_image',
'default_large_image', 'favicon', 'press_image_override',
'default_profile_image',
)


Expand Down
23 changes: 17 additions & 6 deletions src/core/logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -500,25 +500,36 @@ def get_settings_to_edit(display_group, journal, user):
elif display_group == 'styling':
group_of_settings = [
{
'name': 'enable_editorial_images',
'name': 'display_journal_title',
'object': setting_handler.get_setting('styling',
'enable_editorial_images',
'display_journal_title',
journal),
},
]
setting_group = 'styling'
elif display_group == 'editorial':
group_of_settings = [
{
'name': 'multi_page_editorial',
'name': 'editorial_group_page_name',
'object': setting_handler.get_setting('styling',
'multi_page_editorial',
'editorial_group_page_name',
journal),
},
{
'name': 'display_journal_title',
'name': 'hide_editorial_group_names',
'object': setting_handler.get_setting('styling',
'display_journal_title',
'hide_editorial_group_names',
journal),
},
{
'name': 'multi_page_editorial',
'object': setting_handler.get_setting('styling',
'multi_page_editorial',
journal),
}
]
setting_group = 'styling'

elif display_group == 'news':
group_of_settings = [
{
Expand Down
38 changes: 38 additions & 0 deletions src/core/migrations/0089_auto_20240328_1213.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Generated by Django 3.2.20 on 2024-03-28 12:13

from django.db import migrations, models


def set_editorial_group_image_dispay(apps, schema):
EditorialGroup = apps.get_model("core", "EditorialGroup")
SettingValue = apps.get_model("core", "SettingValue")

setting_values = SettingValue.objects.filter(
setting__name='enable_editorial_images',
)
for sv in setting_values:
if sv.journal and sv.value in ['on', 'On']:
EditorialGroup.objects.filter(
journal=sv.journal,
).update(
display_profile_images=True,
)


class Migration(migrations.Migration):

dependencies = [
('core', '0088_merge_20240327_1910'),
]

operations = [
migrations.AddField(
model_name='editorialgroup',
name='display_profile_images',
field=models.BooleanField(default=False, help_text='Enable to display profile images for this group.'),
),
migrations.RunPython(
set_editorial_group_image_dispay,
reverse_code=migrations.RunPython.noop,
),
]
30 changes: 30 additions & 0 deletions src/core/migrations/0090_editorial_team_page_i18n.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Generated by Django 3.2.20 on 2024-04-02 14:23

from django.db import migrations


def add_translations_to_db(apps, schema_editor):
SettingValue = apps.get_model('core', 'SettingValue')
svs_to_update = SettingValue.objects.filter(
setting__name='editorial_group_page_name',
)
for sv in svs_to_update:
sv.value_fr = 'Équipe éditoriale'
sv.value_de = 'Redaktionsteam'
sv.value_nl = 'Redactie'
sv.value_cy = 'Tîm Golygyddol'
sv.save()


class Migration(migrations.Migration):

dependencies = [
('core', '0089_auto_20240328_1213'),
]

operations = [
migrations.RunPython(
add_translations_to_db,
migrations.RunPython.noop,
),
]
4 changes: 4 additions & 0 deletions src/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1445,6 +1445,10 @@ class EditorialGroup(models.Model):
null=True,
)
sequence = models.PositiveIntegerField()
display_profile_images = models.BooleanField(
default=False,
help_text="Enable to display profile images for this group.",
)

class Meta:
ordering = ('sequence',)
Expand Down
54 changes: 41 additions & 13 deletions src/core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@
from utils import models as util_models, setting_handler, orcid
from utils.logger import get_logger
from utils.decorators import GET_language_override
from utils.shared import language_override_redirect
from utils.logic import get_janeway_version
from utils.shared import language_override_redirect, clear_cache
from repository import models as rm
from events import logic as events_logic

Expand Down Expand Up @@ -1639,26 +1638,55 @@ def contacts_order(request):


@editor_user_required
@GET_language_override
def editorial_team(request):
"""
Displays a list of EditorialGroup objects, allows them to be deleted and created,
:param request: HttpRequest object
:return: HttpResponse object
"""
editorial_groups = models.EditorialGroup.objects.filter(journal=request.journal)
with translation.override(request.override_language):
editorial_groups = models.EditorialGroup.objects.filter(
journal=request.journal,
)
settings, setting_group = logic.get_settings_to_edit(
'editorial',
request.journal,
request.user,
)
edit_form = forms.GeneratedSettingForm(settings=settings)
if request.POST:
edit_form = forms.GeneratedSettingForm(
request.POST,
settings=settings,
)

if 'delete' in request.POST:
delete_id = request.POST.get('delete')
group = get_object_or_404(models.EditorialGroup, pk=delete_id, journal=request.journal)
group.delete()
return redirect(reverse('core_editorial_team'))
if edit_form.is_valid():
edit_form.save(
group=setting_group,
journal=request.journal,
)
# clear cache to ensure changes display immediately
clear_cache()
return language_override_redirect(
request,
'core_editorial_team',
kwargs={},
)

template = 'core/manager/editorial/index.html'
context = {
'editorial_groups': editorial_groups,
}
if 'delete' in request.POST:
delete_id = request.POST.get('delete')
group = get_object_or_404(models.EditorialGroup, pk=delete_id, journal=request.journal)
group.delete()
return redirect(reverse('core_editorial_team'))

return render(request, template, context)
template = 'core/manager/editorial/index.html'
context = {
'editorial_groups': editorial_groups,
'edit_form': edit_form,
}

return render(request, template, context)


@editor_user_required
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 3.2.20 on 2024-03-28 11:40

import core.file_system
import core.model_utils
from django.db import migrations
import journal.models


class Migration(migrations.Migration):

dependencies = [
('journal', '0063_merge_20240327_1910'),
('core', '0089_auto_20240328_1213')
]

operations = [
migrations.AddField(
model_name='journal',
name='default_profile_image',
field=core.model_utils.SVGImageField(blank=True, help_text='A default image displayed on the profile and editorial team pages when the user has no set profile image.', null=True, storage=core.file_system.JanewayFileSystemStorage(), upload_to=journal.models.cover_images_upload_path),
),
]
9 changes: 9 additions & 0 deletions src/journal/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,15 @@ class Journal(AbstractSiteModel):
help_text=gettext('The tiny round or square image appearing in browser '
'tabs before the webpage title'),
)
default_profile_image = SVGImageField(
upload_to=cover_images_upload_path,
null=True,
blank=True,
storage=fs,
help_text=gettext('A default image displayed on the profile and '
'editorial team pages when the user has no set '
'profile image.'),
)
# DEPRECATED "description" in favour of "journal_description" setting
description = JanewayBleachField(null=True, blank=True, verbose_name="Journal Description")
contact_info = JanewayBleachField(null=True, blank=True, verbose_name="Contact Information")
Expand Down
13 changes: 12 additions & 1 deletion src/templates/admin/core/manager/editorial/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@
{% block body %}
<div class="large-12 columns">
<div class="box">
{% include "admin/elements/translations/form_tabs.html" with object=request.journal %}
<div class="title-area">
<h2>Editorial Groups</h2>
<a class="button" href="{% url 'core_add_editorial_team' %}"><i class="fa fa-plus">&nbsp;</i>Add New Group</a>
<a class="button" href="{% url 'editorial_team' %}" target="_blank"><i class="fa fa-eye">&nbsp;</i>View Editorial Team Page</a>
</div>
<div class="box">
<div class="content">
<p>
Editorial team groups are listed below. You can change the order by dragging and dropping table rows into the order you want them to appear.
</p>
Expand Down Expand Up @@ -50,6 +51,16 @@ <h2>Editorial Groups</h2>
</table>
</form>
</div>
<div class="title-area">
<h2>Display Settings</h2>
</div>
<div class="content">
<form method="POST">
{% csrf_token %}
{% include "admin/elements/forms/group_editorial.html" with edit_form=edit_form %}
<button name="save" class="success button">Save Settings</button>
</form>
</div>
</div>
</div>
{% endblock body %}
Expand Down
2 changes: 1 addition & 1 deletion src/templates/admin/elements/cms_nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@
{% endif %}
</button>
</li>
<li class="list-group-item">Editorial Team
<li class="list-group-item">{{ journal_settings.styling.editorial_group_page_name }}
<button name="editorial_team" value="editorial_team"
class="tiny button float-right
{% if enable_editorial_display %}
Expand Down
4 changes: 4 additions & 0 deletions src/templates/admin/elements/forms/group_editorial.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{% include "admin/elements/forms/field.html" with field=edit_form.editorial_group_page_name %}
{% include "admin/elements/forms/field.html" with field=edit_form.hide_editorial_group_names %}
{% include "admin/elements/forms/field.html" with field=edit_form.multi_page_editorial %}

13 changes: 13 additions & 0 deletions src/templates/admin/elements/forms/group_journal_images.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{% load svg from press_url %}
{% load svg_or_image from press_url %}
{% load static %}

<div class="title-area">
<h2>Journal Images</h2>
Expand Down Expand Up @@ -79,5 +80,17 @@ <h2>Journal Images</h2>
</div>
<hr/>

<div class="large-8 columns">
{% include "admin/elements/forms/field.html" with field=attr_form.default_profile_image %}
</div>
<div class="large-4 columns">
{% if request.journal.default_editorial_team_image %}
<img src="{{ request.journal.default_editorial_team_image.url }}" class="thumbnail float-right">
{% else %}
<img src="{% static "common/img/icons/users.png" %}" class="thumbnail float-right"/>
{% endif %}
</div>
<hr/>

</div>
</div>
1 change: 0 additions & 1 deletion src/templates/admin/elements/forms/group_styling.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<div class="content">
{% include "admin/elements/forms/field.html" with field=attr_form.full_width_navbar %}
<p class="help-text">{% trans 'Full Width Navbar only applies to the Material theme' %}.</p>
{% include "admin/elements/forms/field.html" with field=edit_form.enable_editorial_images %}
{% include "admin/elements/forms/field.html" with field=edit_form.multi_page_editorial %}
{% include "admin/elements/forms/field.html" with field=edit_form.display_journal_title %}
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% if group.display_profile_images %}
{% if card_wrapper %}<div class="card-image">{% endif %}
{% include "common/elements/profile_image.html" with classes=classes user=member.user %}
{% if card_wrapper %}</div>{% endif %}
{% endif %}
6 changes: 6 additions & 0 deletions src/templates/common/elements/profile_image.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{% load static %}
<img
class="{{ classes }}"
src="{% if user.profile_image %}{{ user.profile_image.url }}{% elif request.journal.default_profile_image %}{{ request.journal.default_profile_image.url }}{% else %}{% static "common/img/icons/users.png" %}{% endif %}"
alt="{% if user.profile_image %}Profile picture for {{ user.full_name }}{% else %}A generic headshot photograph of a person{% endif %}"
/>
2 changes: 1 addition & 1 deletion src/themes/OLH/templates/core/accounts/public_profile.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<section id="content">
<div class="row column">
<div class="large-3 columns">
<img class="thumbnail editorial-image" src="{% if user.profile_image %}{{ user.profile_image.url }}{% else %}{% static "common/img/icons/users.png" %}{% endif %}" alt="Profile photo.">
{% include "common/elements/profile_image.html" with classes="thumbnail editorial-image" user=user %}
<h3>{{ user.full_name }}</h3>
{% if roles %}
<p>
Expand Down
Loading