From 2d0c2f4e6ac696df1213fc8a5529f03ace2b1f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org> Date: Sat, 18 Feb 2023 02:03:41 +0900 Subject: [PATCH] basic UI - base, header --- .gitignore | 4 +- contracts/templates/contracts/index.html | 5 + contracts/urls.py | 4 +- contracts/views.py | 14 +++ env.example | 2 +- oidc/templates/oidc/login.html | 10 +- package.json | 1 + registry/settings/base.py | 3 + registry/urls.py | 2 +- shared/static/shared/favicon.png | Bin 0 -> 9781 bytes shared/templates/shared/includes/base.html | 121 +++++++++++++++++++++ static_src/base.js | 3 + 12 files changed, 156 insertions(+), 13 deletions(-) create mode 100644 contracts/templates/contracts/index.html create mode 100644 shared/static/shared/favicon.png create mode 100644 shared/templates/shared/includes/base.html diff --git a/.gitignore b/.gitignore index 2f272e7..19bda59 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,9 @@ __pycache__/ staticfiles node_modules/* -shared/static/* +shared/static/shared/*.js +shared/static/shared/*.txt +shared/static/shared/*.css webpack-stats.json package-lock.json .venv diff --git a/contracts/templates/contracts/index.html b/contracts/templates/contracts/index.html new file mode 100644 index 0000000..79cce94 --- /dev/null +++ b/contracts/templates/contracts/index.html @@ -0,0 +1,5 @@ +{% extends "shared/includes/base.html" %} + +{% block content %} + +{% endblock %} diff --git a/contracts/urls.py b/contracts/urls.py index b837598..3d6e452 100644 --- a/contracts/urls.py +++ b/contracts/urls.py @@ -3,4 +3,6 @@ from django.urls import path from . import views app_name = "contracts" -urlpatterns = [] +urlpatterns = [ + path("", views.index, name="index"), +] diff --git a/contracts/views.py b/contracts/views.py index 91ea44a..36fa1cc 100644 --- a/contracts/views.py +++ b/contracts/views.py @@ -1,3 +1,17 @@ +from django.conf import settings from django.shortcuts import render # Create your views here. + + +def index(request): + return render( + request, + "contracts/index.html", + { + "site_url": settings.SITE_URL, + "user": request.user, + "title": "Title", + "description": "Description", + } + ) diff --git a/env.example b/env.example index 94d1434..2ca58dd 100644 --- a/env.example +++ b/env.example @@ -2,7 +2,7 @@ DATABASE_URL="postgresql://contracts:contracts@localhost:5432/contracts" SECRET_KEY=supersecret -SITE_URL="http://localhost:8006" +SITE_URL="http://localhost:8013" OIDC_RP_REALM_URL="http://localhost:8080/realms/master/" OIDC_RP_CLIENT_ID=contracts diff --git a/oidc/templates/oidc/login.html b/oidc/templates/oidc/login.html index f00d86a..f31980a 100644 --- a/oidc/templates/oidc/login.html +++ b/oidc/templates/oidc/login.html @@ -1,13 +1,5 @@ {% extends "oidc/base.html" %} {% block content %} - {% if user.is_authenticated %} - <p>Current user: {{ user.email }}</p> - <form action="{% url "oidc_logout" %}" method="POST"> - {% csrf_token %} - <input type="submit" value="logout"> - </form> - {% else %} - <a href="{% url "oidc_authentication_init" %}">Přihlásit se</a> - {% endif %} + <a href="{% url "oidc_authentication_init" %}">Přihlásit se</a> {% endblock %} diff --git a/package.json b/package.json index 5675a2e..b6d5d92 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "css-loader": "^6.7.3", "jquery": "^3.6.3", "tailwindcss": "^3.2.4", + "vue": "v2-latest", "webpack": "^5.75.0", "webpack-bundle-tracker": "^1.8.0", "webpack-cli": "^5.0.1" diff --git a/registry/settings/base.py b/registry/settings/base.py index 5f69f70..0495288 100644 --- a/registry/settings/base.py +++ b/registry/settings/base.py @@ -23,6 +23,7 @@ BASE_DIR = pathlib.Path(__file__).parents[2] env = environ.Env() environ.Env.read_env(os.path.join(BASE_DIR, ".env")) + # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ @@ -35,6 +36,8 @@ ALLOWED_HOSTS = [] STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") +SITE_URL = env.str("SITE_URL") + ## Application definition diff --git a/registry/urls.py b/registry/urls.py index b80111c..2a4013e 100644 --- a/registry/urls.py +++ b/registry/urls.py @@ -18,8 +18,8 @@ from django.urls import include, path from pirates.urls import urlpatterns as pirates_urlpatterns urlpatterns = [ + path("", include("contracts.urls")), path("markdownx/", include("markdownx.urls")), - path("contracts/", include("contracts.urls")), path("oidc/", include("oidc.urls")), path("admin/", admin.site.urls), ] + pirates_urlpatterns diff --git a/shared/static/shared/favicon.png b/shared/static/shared/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..819126c749b3335134893d13561fd74a007e8f2a GIT binary patch literal 9781 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 I=akR{0K8|&eE<Le literal 0 HcmV?d00001 diff --git a/shared/templates/shared/includes/base.html b/shared/templates/shared/includes/base.html new file mode 100644 index 0000000..a10c433 --- /dev/null +++ b/shared/templates/shared/includes/base.html @@ -0,0 +1,121 @@ +{% load static %} +{% load render_bundle from webpack_loader %} + +<!DOCTYPE html> +<html lang="cs"> + <head> + <meta charset="utf-8"> + + <meta name="title" content="{{ title }}"> + <meta name="description" content="{{ description }}"> + + {% comment %}Open Graph / Facebook{% endcomment %} + <meta property="og:type" content="website"> + <meta property="og:url" content="{{ site_url }}"> + <meta property="og:title" content="{{ title }}"> + <meta property="og:description" content="{{ description }}"> + {% comment %}<meta property="og:image" content="">{% endcomment %} + + {% comment %}Twitter{% endcomment %} + <meta property="twitter:card" content="app"> + <meta property="twitter:url" content="{{ site_url }}"> + <meta property="twitter:title" content="{{ title }}"> + <meta property="twitter:description" content="{{ description }}"> + {% comment %}<meta property="twitter:image" content="">{% endcomment %} + + <link + rel="icon" + type="image/png" + href="{% static "shared/favicon.png" %}" + > + + <link + href="https://styleguide.pirati.cz/2.11.x/css/styles.css" + rel="stylesheet" + media="all" + > + <link + href="https://styleguide.pirati.cz/2.11.x/css/pattern-scaffolding.css" + rel="stylesheet" + media="all" + > + + {% render_bundle "shared" %} + {% render_bundle "base" %} + + <title>{{ title }}</title> + </head> + <body> + <header> + <nav class="navbar navbar--simple __js-root"> + <ui-app inline-template> + <ui-navbar inline-template> + <div> + <div class="container container--default navbar__content" :class="{'navbar__content--initialized': true}"> + <div class="navbar__brand my-4 flex items-center lg:pr-8 lg:my-0"> + <a href="/"> + <img src="https://styleguide.pirati.cz/2.11.x/images/logo-round-white.svg" class="w-8" /> + </a> + <a href="/" class="pl-4 font-bold text-xl lg:border-r lg:border-grey-300 lg:pr-8">Registr smluv</a> + </div> + + <div class="navbar__menutoggle my-4 flex justify-end lg:hidden"> + <a href="#" @click="show = !show" class="no-underline hover:no-underline"> + <i class="ico--menu text-3xl"></i> + </a> + </div> + + <div v-if="show || isLgScreenSize" class="navbar__main navbar__section navbar__section--expandable container-padding--zero lg:container-padding--auto"> + <ul class="navbar-menu text-white"> + <li class="navbar-menu__item"> + <a href="#TODO" data-href="#TODO" class="navbar-menu__link">Všechny smlouvy</a> + </li> + <li class="navbar-menu__item"> + <a href="#TODO" data-href="#TODO" class="navbar-menu__link">Hledání</a> + </li> + </ul> + </div> + + <div v-if="show || isLgScreenSize" class="navbar__actions navbar__section navbar__section--expandable container-padding--zero lg:container-padding--auto self-start flex flex-col sm:flex-row lg:flex-col sm:space-x-4 space-y-2 sm:space-y-0 lg:space-y-2 xl:flex-row xl:space-x-2 xl:space-y-0"> + {% if user %} + <div class="flex items-center space-x-4"> + <span class="head-heavy-2xs">{{ user.get_username }}</span> + <div class="avatar avatar--2xs"> + <img + src="https://randomuser.me/api/portraits/women/83.jpg" + alt="Tvůj profilový obrázek" + > + </div> + <form action="{% url "oidc_logout" %}" method="POST"> + {% csrf_token %} + <button + class="text-grey-200 hover:text-white" + type="submit" + ><i class="ico--log-out"></i></button> + </form> + </div> + {% else %} + <a + class="btn btn--white btn--hoveractive cursor-pointer" + href="{% url "oidc:login" %}" + > + <div class="btn__body">Přihlásit se</div> + </a> + {% endif %} + </div> + </div> + </div> + </ui-navbar> + </ui-app> + </nav> + </header> + + <main> + {% block content %}{% endblock %} + </main> + + <script + src="https://styleguide.pirati.cz/2.11.x/js/main.bundle.js" + ></script> + </body> +</html> diff --git a/static_src/base.js b/static_src/base.js index e69de29..156d4b7 100644 --- a/static_src/base.js +++ b/static_src/base.js @@ -0,0 +1,3 @@ +import Vue from "vue/dist/vue.esm.browser.min"; + +window["Vue"] = Vue; -- GitLab