diff --git a/.gitignore b/.gitignore index 2aca97a9..8bdee8f0 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ __pycache__/ *.so .Python env/ +myvenv/ build/ develop-eggs/ dist/ diff --git a/hknweb/academics/migrations/0003_alter_icsr_course_name.py b/hknweb/academics/migrations/0003_alter_icsr_course_name.py new file mode 100644 index 00000000..7b757ce7 --- /dev/null +++ b/hknweb/academics/migrations/0003_alter_icsr_course_name.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.5 on 2024-10-26 00:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("academics", "0002_auto_20211223_1902"), + ] + + operations = [ + migrations.AlterField( + model_name="icsr", + name="course_name", + field=models.TextField(default="", max_length=500), + ), + ] diff --git a/hknweb/events/forms/event/create.py b/hknweb/events/forms/event/create.py index 7688ee35..e8fa9760 100644 --- a/hknweb/events/forms/event/create.py +++ b/hknweb/events/forms/event/create.py @@ -30,6 +30,7 @@ class Meta: model = Event fields = ( "name", + "point_of_contact", "location", "description", "event_type", diff --git a/hknweb/events/migrations/0013_alter_icalview_options_event_point_of_contact_and_more.py b/hknweb/events/migrations/0013_alter_icalview_options_event_point_of_contact_and_more.py new file mode 100644 index 00000000..37f19e94 --- /dev/null +++ b/hknweb/events/migrations/0013_alter_icalview_options_event_point_of_contact_and_more.py @@ -0,0 +1,27 @@ +# Generated by Django 4.2.5 on 2024-10-26 00:05 + +from django.db import migrations, models +import markdownx.models + + +class Migration(migrations.Migration): + dependencies = [ + ("events", "0012_icalview"), + ] + + operations = [ + migrations.AlterModelOptions( + name="icalview", + options={"verbose_name": "iCal view"}, + ), + migrations.AddField( + model_name="event", + name="point_of_contact", + field=models.CharField(default="N/A", max_length=255), + ), + migrations.AlterField( + model_name="event", + name="description", + field=markdownx.models.MarkdownxField(max_length=2000), + ), + ] diff --git a/hknweb/events/models/event.py b/hknweb/events/models/event.py index 2e4bf181..ae8cc1d9 100644 --- a/hknweb/events/models/event.py +++ b/hknweb/events/models/event.py @@ -14,6 +14,7 @@ class Event(models.Model): name = models.CharField(max_length=255) start_time = models.DateTimeField() + point_of_contact = models.CharField(max_length=255, default="N/A") end_time = models.DateTimeField() location = models.CharField(max_length=255) event_type = models.ForeignKey(EventType, models.CASCADE) diff --git a/hknweb/events/views/event_transactions/show_event.py b/hknweb/events/views/event_transactions/show_event.py index e26f329c..a0079e3f 100644 --- a/hknweb/events/views/event_transactions/show_event.py +++ b/hknweb/events/views/event_transactions/show_event.py @@ -30,6 +30,7 @@ def show_details_helper(request, id, back_link: str, can_edit: bool): context = { "event": event, + "event_point_of_contact": markdownify(event.point_of_contact), "event_description": markdownify(event.description), "event_location": format_url(event.location), "user_access_level": ACCESSLEVEL_TO_DESCRIPTION[get_access_level(request.user)], diff --git a/hknweb/static/css/base.css b/hknweb/static/css/base.css index fece690f..968aaabc 100644 --- a/hknweb/static/css/base.css +++ b/hknweb/static/css/base.css @@ -70,10 +70,13 @@ body { cursor: pointer; } @media screen and (min-width: 710px) { /* Desktop display */ + .dropdown-container { + display: inline-block; + } .navi-menu > label { padding-right: 24px; } - .navi-menu > label[for="toggle-account"] { + .dropdown-container > label[for="toggle-account"] { padding-right: 0; padding-left: 24px; } @@ -95,6 +98,12 @@ body { } } @media screen and (max-width: 710px) { /* Mobile display */ + .dropdown-container { + display: none; + } + .navi-menu-button { + display: block; + } .navi-menu > label { display: none; } @@ -162,8 +171,6 @@ body { #toggle-account:not(:checked) ~ #toggle-about:checked ~ #about-nav-bar, #toggle-account:not(:checked) ~ #toggle-candidate-admin:checked ~ #candidate-admin-nav-bar, #toggle-account:checked ~ #account-nav-bar { - opacity: 1; - z-index: 1; } #toggle-account:not(:checked) ~ #toggle-student:checked ~ #student-nav-bar *, #toggle-account:not(:checked) ~ #toggle-industry:checked ~ #industry-nav-bar *, @@ -172,7 +179,7 @@ body { #toggle-account:not(:checked) ~ #toggle-about:checked ~ #about-nav-bar *, #toggle-account:not(:checked) ~ #toggle-candidate-admin:checked ~ #candidate-admin-nav-bar *, #toggle-account:checked ~ #account-nav-bar * { - display: inline; + display: none; } @media screen and (max-width: 710px) { #toggle-mobile:checked ~ #toggle-account:not(:checked) ~ #toggle-student:checked ~ #student-nav-bar, @@ -183,6 +190,8 @@ body { #toggle-mobile:checked ~ #toggle-account:not(:checked) ~ #toggle-candidate-admin:checked ~ #candidate-admin-nav-bar, #toggle-mobile:checked ~ #toggle-account:checked ~ #account-nav-bar { display: block; + opacity: 1; + z-index: 1; } #toggle-mobile:not(:checked) ~ .sub-nav-bar, #toggle-mobile:not(:checked) ~ .mobile-nav-bar { @@ -199,7 +208,7 @@ body { transform: rotate(45deg); transition: transform 0.4s ease-out; } -#toggle-account:checked ~ .navi-container #carrot { +.dropdown-container:hover #carrot { transform: rotate(225deg); transition: transform 0.4s ease-out; } @@ -229,6 +238,47 @@ body { text-decoration: underline; } + + + +/* DROPDOWN MENU */ +.navi-menu { + position: relative; +} +.navi-menu label { + position: relative; +} +.dropdown-container { + position: relative; + padding-right: 24px; +} +.dropdown-content { + display: none; + position: absolute; + background-color: white; + min-width: 160px; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + z-index: 1; + flex-direction: column; + top: 100%; /* Position the dropdown below the label */ + left: 0; /* Align the dropdown with the left edge of the label */ +} +.dropdown-content a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} +.dropdown-content a:hover { + background-color: #ddd; +} +.dropdown-container:hover .dropdown-content { + display: flex; +} +.navi-menu label:hover + .dropdown-content { + display: flex; +} + /* HEADING (which has the page's title) */ .heading { font-size: 3em; diff --git a/hknweb/templates/base.html b/hknweb/templates/base.html index 5eabe9d4..3e1d6d36 100644 --- a/hknweb/templates/base.html +++ b/hknweb/templates/base.html @@ -58,22 +58,63 @@ + -