diff --git a/apps/cms/migrations/0008_homepage_background_image.py b/apps/cms/migrations/0008_homepage_background_image.py new file mode 100644 index 000000000..5091b89b1 --- /dev/null +++ b/apps/cms/migrations/0008_homepage_background_image.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.25 on 2024-10-14 17:20 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailimages", "0025_alter_image_file_alter_rendition_file"), + ("cms", "0007_homepage_featured_video"), + ] + + operations = [ + migrations.AddField( + model_name="homepage", + name="background_image", + field=models.ForeignKey( + blank=True, + help_text="Optional background image for the site header", + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + ), + ), + ] diff --git a/apps/cms/models.py b/apps/cms/models.py index 9306d333b..08f6bdea2 100644 --- a/apps/cms/models.py +++ b/apps/cms/models.py @@ -257,6 +257,15 @@ class HomePage(Page): collections = Collection.objects.all()[:8] volumes = Manifest.objects.all()[:8] + background_image = models.ForeignKey( + 'wagtailimages.Image', + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name='+', + help_text="Optional background image for the site header", + ) + featured_story_title = models.CharField( help_text="Title of the featured story", blank=True, max_length=255 ) @@ -286,6 +295,7 @@ class HomePage(Page): content_panels = Page.content_panels + [ FieldPanel('tagline', classname="full"), + FieldPanel('background_image', classname="full"), FieldPanel('content_display', classname="full"), AutocompletePanel('featured_collections', target_model="kollections.Collection"), FieldPanel('featured_collections_sort_order', classname="full"), diff --git a/apps/readux/forms.py b/apps/readux/forms.py index 74bdf68f5..1179f59d7 100644 --- a/apps/readux/forms.py +++ b/apps/readux/forms.py @@ -111,8 +111,8 @@ class ManifestSearchForm(forms.Form): ("created_at", "Date added (oldest first)"), ("-date_sort_descending", "Date published (newest first)"), ("date_sort_ascending", "Date published (oldest first)"), - ("label_alphabetical", "Label (A-Z)"), - ("-label_alphabetical", "Label (Z-A)"), + ("label_alphabetical", "Title (A-Z)"), + ("-label_alphabetical", "Title (Z-A)"), ("_score", "Relevance"), ), widget=forms.Select( diff --git a/apps/static/css/readux2/main.scss b/apps/static/css/readux2/main.scss index aae8ea4c7..ee842f743 100644 --- a/apps/static/css/readux2/main.scss +++ b/apps/static/css/readux2/main.scss @@ -1,4 +1,21 @@ /* base.html */ +html, body { + height: 100%; + margin: 0; + display: flex; + flex-direction: column; +} + +#v-readux { + flex-grow: 1; + display: flex; + flex-direction: column; +} + +main { + flex-grow: 1; +} + .landing { margin: 0; padding: 0; @@ -21,6 +38,15 @@ .content { position: relative; z-index: 2; + min-height: 100vh; + display: flex; + flex-flow: column; + .space { + flex-grow: 1; + } + .uk-section-default:empty { + background-color: transparent; + } } .paragraph { @@ -598,6 +624,20 @@ iframe { color: white; } +.description-button { + transition: ease 0.1s; + &:hover { + background-color: darken(#E60000, 10%); + } + &:active { + background-color: darken(#E60000, 25%); + } +} + +.justify-content-normal { + justify-content: normal !important; +} + .unset-min-height { min-height: unset !important; } diff --git a/apps/static/css/readux2/search.scss b/apps/static/css/readux2/search.scss index 7e34daf2f..7a7bf2dc9 100644 --- a/apps/static/css/readux2/search.scss +++ b/apps/static/css/readux2/search.scss @@ -127,10 +127,6 @@ form#search-form input[type="search"][name="q"] { width: 100%; } -// .uk-button-default { -// font-size: 1.25rem; -// } - #search-grid { gap: 1.5rem; } @@ -243,4 +239,20 @@ ol#search-results dl { .selectize-control.plugin-clear_button .clear { height: 85%; +} + +.search-button { + background-color: #E60000; + color: white; + padding: 0 9px; + border:none; + height: 40px; + font-size: 1.25rem; + transition: ease 0.1s; + &:hover { + background-color: darken(#E60000, 10%); + } + &:active { + background-color: darken(#E60000, 25%); + } } \ No newline at end of file diff --git a/apps/templates/_home/_nav.html b/apps/templates/_home/_nav.html index 1eeb153a3..c8557c224 100644 --- a/apps/templates/_home/_nav.html +++ b/apps/templates/_home/_nav.html @@ -6,7 +6,7 @@
{% main_menu add_sub_menus_inline=True %} diff --git a/apps/templates/account/password_reset.html b/apps/templates/account/password_reset.html index 845bbda73..70897e45a 100644 --- a/apps/templates/account/password_reset.html +++ b/apps/templates/account/password_reset.html @@ -1,26 +1,68 @@ {% extends "account/base.html" %} - +{% load sass_tags %} {% load i18n %} {% load account %} {% load crispy_forms_tags %} {% block head_title %}{% trans "Password Reset" %}{% endblock %} +{% block extra_javascript %} + +{% endblock %} + {% block inner %} + + {% include '_home/_nav.html' %} + +
+ + + + +

{% trans "Password Reset" %}

-

{% trans "Password Reset" %}

{% if user.is_authenticated %} {% include "account/snippets/already_logged_in.html" %} {% endif %}

{% trans "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it." %}

-
+ {% csrf_token %} - {{ form|crispy }} - -
+ +
+ + +
+ + +
+ + +
+ + +
+

{% blocktrans %}Please contact us if you have any trouble resetting your password.{% endblocktrans %}

+
+ -

{% blocktrans %}Please contact us if you have any trouble resetting your password.{% endblocktrans %}

+
{% endblock %} diff --git a/apps/templates/account/password_reset_done.html b/apps/templates/account/password_reset_done.html index c59534afc..0af22bc97 100644 --- a/apps/templates/account/password_reset_done.html +++ b/apps/templates/account/password_reset_done.html @@ -1,4 +1,5 @@ {% extends "account/base.html" %} +{% load sass_tags %} {% load i18n %} {% load account %} @@ -6,12 +7,28 @@ {% block head_title %}{% trans "Password Reset" %}{% endblock %} {% block inner %} -

{% trans "Password Reset" %}

+ + +{% include '_home/_nav.html' %} + +
+ + + + + +

{% trans "Password Reset" %}

{% if user.is_authenticated %} {% include "account/snippets/already_logged_in.html" %} {% endif %} -

{% blocktrans %}We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.{% endblocktrans %}

+

{% blocktrans %}We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.{% endblocktrans %}

+
+ +
{% endblock %} diff --git a/apps/templates/account/password_set.html b/apps/templates/account/password_set.html index 7786e9e53..336a2fed6 100644 --- a/apps/templates/account/password_set.html +++ b/apps/templates/account/password_set.html @@ -1,4 +1,5 @@ {% extends "account/base.html" %} +{% load sass_tags %} {% load i18n %} {% load crispy_forms_tags %} @@ -6,12 +7,26 @@ {% block head_title %}{% trans "Set Password" %}{% endblock %} {% block inner %} -

{% trans "Set Password" %}

+ +{% include '_home/_nav.html' %} + +
+ + + + + +

{% trans "Set Password" %}

{% csrf_token %} {{ form|crispy }}
+ +
{% endblock %} diff --git a/apps/templates/account/signup.html b/apps/templates/account/signup.html index 6a2954eb7..5228cc6d4 100644 --- a/apps/templates/account/signup.html +++ b/apps/templates/account/signup.html @@ -1,23 +1,93 @@ {% extends "account/base.html" %} - +{% load sass_tags %} {% load i18n %} {% load crispy_forms_tags %} -{% block head_title %}{% trans "Signup" %}{% endblock %} +{% block head_title %}{% trans "Readux - Sign up" %}{% endblock %} + +{% block extra_javascript %} + + +{% endblock %} {% block inner %} -

{% trans "Sign Up" %}

+ +{% include '_home/_nav.html' %} -

{% blocktrans %}Already have an account? Then please sign in.{% endblocktrans %}

+
-
- {% csrf_token %} - {{ form|crispy }} - {% if redirect_field_value %} - - {% endif %} - -
+ + + +

{% trans "Sign Up" %}

-{% endblock %} +

{% blocktrans %}Already have an account? Then please sign in.{% endblocktrans %}

+ +
+ {% csrf_token %} + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + {% if redirect_field_value %} + + {% endif %} + + +
+ + +
+ + + +
+ + +
+{% endblock %} \ No newline at end of file diff --git a/apps/templates/base.html b/apps/templates/base.html index 8d4a9ae28..aa503d597 100644 --- a/apps/templates/base.html +++ b/apps/templates/base.html @@ -95,7 +95,7 @@ Jump to main content {# Primary container; host for Vue application #} -
+
{% comment %} TODO: Remove existing nav and replace with the following partial. It seems it may be added elsewhere; vue? needs investigation. @@ -124,6 +124,10 @@ {% block viewer %}{% endblock viewer %} + {# prevent duplicate footer on homepage bug #} + {% if request.path != '/'%} + {% include '_home/_footer.html' %} + {% endif %}
diff --git a/apps/templates/cms/collections_page.html b/apps/templates/cms/collections_page.html index 4c6c5b7cb..6019d6770 100644 --- a/apps/templates/cms/collections_page.html +++ b/apps/templates/cms/collections_page.html @@ -67,8 +67,6 @@

{{ collection.label|default:"[no title]"|truncatechars:200 }}

-{% include '_home/_footer.html' %} - {% include_block page.body %} - - - -{% endblock %} -{% block extra_css %} - - -{% endblock %} -{% block body_class %}template-homepage{% endblock %} - -{% block content %} -
- -
-
- {{ form.scope }} -
-
- - -
-
- -
-
- {{ form.sort }} - -
-
- -
-
- -
-
- -
- {{ form.collection }} -
- -
-
- -
- {{ form.author }} -
- -
-
- -
- {{ form.language }} -
- -
-
- - -
-
- -
- - {% for key in CUSTOM_METADATA_KEYS %} -
- {% with form|dict_item:key as field %} -
- -
- {{ field }} - {% endwith %} -
- {% endfor %} - -
- - -
-
- -
-
-
{{ volumes.count }} result{{ volumes.count|pluralize }}
-
{% include "snippets/pagination.html" %}
-
-
    - {% for volume in volumes %} - {% include "snippets/volume_result.html" %} - {% endfor %} -
-
- {% include "snippets/pagination.html" %} -
-
- -
-
-{% endblock content %} \ No newline at end of file diff --git a/apps/templates/snippets/volume_result.html b/apps/templates/snippets/volume_result.html index 136e48bd6..e5ae0fb74 100644 --- a/apps/templates/snippets/volume_result.html +++ b/apps/templates/snippets/volume_result.html @@ -1,10 +1,7 @@ {% load readux_extras %}
  • -

    - +

    {% if volume.pid %} {% else %} @@ -25,31 +22,15 @@ {{ fragment|safe }} {% endfor %} {% else %} - {{ volume.label }} + {{ volume.label|default:"[no title]" }} {% endif %} {% endif %}

    -
    -
    - {% if volume.summary %} -
    Summary
    -
    - {% if 'highlight' in volume.meta and volume.meta.highlight.summary %} - {% for fragment in volume.meta.highlight.summary %} - {{ fragment|safe }} - {% endfor %} - {% else %} - {{ volume.summary|safe }} - {% endif %} -
    - {% endif %} -
    +
    {% if volume.authors and "[no author]" not in volume.authors %} -
    Author{{volume.authors|pluralize}}
    +
    Author{{volume.authors|pluralize}}
      @@ -88,13 +69,8 @@
      Published
      {{volume.published_date}}
      {% endif %} - - {% if volume.created_at %} -
      Added
      -
      {{volume.created_at}}
      - {% endif %} {% if volume.languages and "[no language]" not in volume.languages %} -
      Language{{volume.languages|pluralize}}
      +
      Language{{volume.languages|pluralize}}
        {% for lang in volume.languages %} @@ -103,6 +79,20 @@
      {% endif %} - + {% if volume.collections %} +
      Collection{{volume.collections|pluralize}}
      +
      +
        + {% for collection in volume.collections %} +
      • {{ collection.label }}
      • + {% endfor %} +
      +
      + {% endif %} + {# only show date added if it is the sort field #} + {% if "created_at" in request.GET.sort and volume.created_at %} +
      Added
      +
      {{volume.created_at}}
      + {% endif %}