diff --git a/.editorconfig b/.editorconfig index faab56453f05d522b0fd5c705eb539e04521b19c..ccf9ddf54360b30c5b258db8ee01c2c4ea5ab354 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,6 +10,9 @@ trim_trailing_whitespace = true [*.md] indent_style = undef +[*.html] +indent_style = undef + [*.py] indent_style = spaces indent_size = 4 diff --git a/envri-hub/deployments/envri-hub.yaml b/envri-hub/deployments/envri-hub.yaml index 779550e15cbd3edfcc1ad2b6523c903ca246f1ac..7d653e428236efe5db531bc2951636d5a761aab7 100644 --- a/envri-hub/deployments/envri-hub.yaml +++ b/envri-hub/deployments/envri-hub.yaml @@ -101,24 +101,14 @@ hub: c.JupyterHub.default_url = "/welcome" c.JupyterHub.extra_handlers = [(r'/welcome', WelcomeHandler)] templatePaths: - - /egi-notebooks-hub/egi-templates + - /egi-notebooks-hub/templates extraFiles: - welcome.html: - mountPath: /usr/local/share/jupyterhub/templates/welcome.html + envri-logo: + mountPath: /usr/local/share/jupyterhub/static/images/envri-hub-next-color@4x.png + binaryData: {{ lookup('file', 'static/images/envri-hub-next-color@4x.png') | b64encode }} +{% for f in "401.html", "egi-login.html", "page.html" %} + {{ f }}: + mountPath: /egi-notebooks-hub/templates/{{ f }} stringData: |- -{%- raw %} - {% extends "login.html" %} -{% endraw %} - 403.html: - mountPath: /usr/local/share/jupyterhub/templates/403.html - stringData: |- -{%- raw %} - {% extends "error.html" %} - {% block main %} - <div class="error"> - <h1>Unauthorized</h1> - <p>You don't have the correct entitlements to access this service.</p> - <p>If you think you should be granted access, please open an issue!</p> - </div> - {% endblock %} -{% endraw %} + {{ lookup('file', ('envri-templates', f) | path_join) | indent(8) }} +{% endfor %} diff --git a/envri-hub/deployments/envri-templates/401.html b/envri-hub/deployments/envri-templates/401.html new file mode 100644 index 0000000000000000000000000000000000000000..0e08469cc9bca968234c1e2441f76ae67b10e61c --- /dev/null +++ b/envri-hub/deployments/envri-templates/401.html @@ -0,0 +1,28 @@ +<!-- htmlhint doctype-first:false --> +{% extends "error.html" %} {% block main %} + +<div class="error"> + <h1>Unauthorized!</h1> + <p> + You are trying to access a restricted instance of the ENVRI-Hub VRE service. + </p> + <p> + Access requires a valid + <a href="https://docs.egi.eu/users/check-in/signup">ENVRI-Hub NEXT account</a> + and membership of one of the supported VOs. + </p> + <p> + If you think you should be granted access already, please open an issue in + <a href="https://ggus.eu">GGUS</a> + </p> + <p> + See + <a href="https://docs.egi.eu/users/dev-env/notebooks/#notebooks-for-researchers/"> + Documentation related to ENVRI-Hub VRE</a> about granting access. You can also + <a href="https://marketplace.eosc-portal.eu/services/egi-notebooks">place an + order in EOSC portal</a> + for the Notebooks service if you are interested in your own community deployment. + </p> +</div> + +{% endblock %} diff --git a/envri-hub/deployments/envri-templates/egi-login.html b/envri-hub/deployments/envri-templates/egi-login.html new file mode 100644 index 0000000000000000000000000000000000000000..aeaf116b3d37e3113c2f9656f85dbc9ccde3ccbb --- /dev/null +++ b/envri-hub/deployments/envri-templates/egi-login.html @@ -0,0 +1,87 @@ +<!-- htmlhint doctype-first:false --> +{% extends "page.html" %} +{% if announcement_login %} + {% set announcement = announcement_login %} +{% endif %} + +{% block nav_bar_right_items %} +<li> + <span id="user-guide"> + <a role="button" class="navbar-btn btn-sm btn btn-egi" href="https://docs.egi.eu/users/notebooks/"> + <i aria-hidden="true" class="fa fa-book"></i> User Guide</a> + </span> +</li> +{% endblock %} + +{% block main %} +{% block login %} +<div id="login-main" class="container"> +<div class="jumbotron"> + {% block main_intro %} + <h1><img alt="Notebooks Logo" src="{{ static_url('images/egi-icon-notebooks.svg') }}" height="100">Notebooks</h1> + <p> + Notebooks is an environment based on <a href="http://jupyter.org/">Jupyter</a> and + the <a href="https://www.egi.eu/services/cloud-compute/">EGI cloud service</a> that + offers a browser-based, scalable tool for interactive data analysis. The Notebooks + environment provides users with notebooks where they can combine text, mathematics, + computations and rich media output. + </p> + <p> + Access requires a valid <a href="https://docs.egi.eu/users/check-in/signup">EGI account</a> + and <a href="https://aai.egi.eu/registry/co_petitions/start/coef:111">enrolling to the + vo.notebooks.egi.eu VO</a>. + </p> + {% endblock main_intro %} + {% block checkin_button %} + <div class="spacer-sm"></div> + <p class="text-center"> + <a role="button" class="btn button-blue-background btn-lg" href="{{authenticator_login_url}}"> + Continue with EGI Check-in + </a> + </p> + <div class="spacer-sm"></div> + {% endblock checkin_button %} + {% block main_outro %} + <p> + User communities/advanced users can have their customised ENVRI-Hub VRE service + instance. ENVRI-Hub NEXT offers consultancy and support, as well as can operate the setup. + Order a <a href="https://marketplace.eosc-portal.eu/services/egi-notebooks">community + notebooks instance via the EOSC Marketplace</a>. + </p> + {% endblock main_outro %} +</div> + +</div> +{% endblock login %} + +{% block footer %} +<footer class="footer"> + <div class="container"> + <div class="row"> + <div class="col-sm-1"> + <img alt="EU logo" src="{{ static_url('images/eu-flag.png') }}" height="40"> + </div> + <div class="col-sm-1"> + <a href="https://www.egi.eu/projects/egi-ace/"> + <img alt="EGI-ACE logo" src="{{ static_url('images/egi-ace.png') }}" height="40"> + </a> + </div> + <div class="col-sm-1"> + <a href="https://www.cesnet.cz/?lang=en"> + <img alt="CESNET logo" src="{{ static_url('images/cesnet.png') }}" height="40"> + </a> + </div> + <div class="col-sm-5"> + {{ service_name }} is a service provided by <a href="https://www.cesnet.cz/?lang=en">CESNET</a>, + co-funded by <a href="https://www.egi.eu/projects/egi-ace/">EGI-ACE</a>. + </div> + <div class="col-sm-4 text-right"> + <a href="/policies/privacy-policy.html">Privacy Notice</a> | + <a href="/policies/terms-of-use.html">Terms of Use</a> + </div> + </div> + </div> +</footer> +{% endblock %} + +{% endblock %} diff --git a/envri-hub/deployments/envri-templates/page.html b/envri-hub/deployments/envri-templates/page.html new file mode 100644 index 0000000000000000000000000000000000000000..e0f595fadc7678ac16b1b070d5a5a55589ff9010 --- /dev/null +++ b/envri-hub/deployments/envri-templates/page.html @@ -0,0 +1,86 @@ +<!-- htmlhint doctype-first:false --> +{% extends "templates/page.html" %} + +{% set service_name = service_name|default('Notebooks') %} + +{% block stylesheet %} +{{ super() }} + +<link rel="stylesheet" + href="https://fonts.googleapis.com/css2?family=DM+Sans"> +<style> +.jumbotron { + background-color: transparent; +} +.btn-egi { + background-color: #0067b1; + color: #fff; +} +.btn-egi:hover { + color: #999999; +} +.spacer-lg { margin:0; padding:0; height:100px; } +.spacer-sm { margin:0; padding:0; height:50px; } + +/* Footer */ +html { + position: relative; + min-height: 100%; +} +body { + margin-bottom: 60px; /* Margin bottom by footer height */ + font-family: 'DM Sans', sans-serif; +} +.footer { + position: absolute; + bottom: 0; + width: 100%; + height: 60px; /* Set the fixed height of the footer here */ +} + +.egi-logo { + height: 60px; + margin-top: 5px; + margin-right: 20px; +} + +.navbar { + min-height: 70px; +} + +.button-blue-background { + margin: 20px 20px 0px 0px; + padding: 20px 30px 20px 80px; + border-style: solid; + border-width: 2px; + border-color: #005faa; + border-radius: 100vw; + background-color: #005faa; + background-image: url({{ static_url('images/egi-logo-white.svg') }}); + background-position: 30px 43%; + background-size: 36px; + background-repeat: no-repeat; + -webkit-transition: all 200ms ease-in-out; + transition: all 200ms ease-in-out; + font-family: ‘DM Sans’, sans-serif; + color: #fff; + font-size: 18px; + font-weight: 700; +} + +.button-blue-background:hover { + background-color: #fff; + background-image: url({{ static_url('images/egi-logo.svg') }}); + color: #005faa; +} +</style> +{% endblock %} + + +{% block title %}ENVRI-Hub NEXT {{ service_name }}{% endblock %} + +{% block logo %} +<span id="jupyterhub-logo" class="pull-left"> + <a href="https://envri.eu/envri-hub-next/"><img src="{{ static_url('images/envri-hub-next-color@4x.png') }}" alt="ENVRI-Hub NEXT {{ service_name }}" class="egi-logo" title="Home"></a> +</span> +{% endblock %} diff --git a/envri-hub/deployments/static/images/envri-hub-next-color@4x.png b/envri-hub/deployments/static/images/envri-hub-next-color@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0134338103544d376b3fa22f878562afedac95 Binary files /dev/null and b/envri-hub/deployments/static/images/envri-hub-next-color@4x.png differ