Updated Harri Script from Charlie, a bunch of notes and todos for clients.

This commit is contained in:
Norm Rasmussen
2023-05-16 16:27:25 -04:00
parent 5c8b9a7a3b
commit 654a924ce9
66 changed files with 6241 additions and 6 deletions

Binary file not shown.

View File

@ -0,0 +1,59 @@
<div class="row additional-resources">
<a class="col-sm-12 col-md-4 additional-resource" href="https://terminus.com/blog/">
<div class="additional-resource-container">
<img class="resource-image" src="https://s3.amazonaws.com/static.northpass.com/Terminus/LMS-TERMINUS-blog-1200x768.jpg" alt="">
<div class="resource-title">Visit the Terminus Blog</div>
<div class="resource-subtitle">Hear the latest news and insights from the go-to-market experts</div>
</div>
</a>
<a class="col-sm-12 col-md-4 additional-resource" href="https://terminus.com/terminus-rock-stars/">
<div class="additional-resource-container">
<img class="resource-image" src="https://s3.amazonaws.com/static.northpass.com/Terminus/LMS-TERMINUS-rockstars-1200x768.jpg" alt="">
<div class="resource-title">Visit the Terminus Rockstars</div>
<div class="resource-subtitle">Lorem ipsum</div>
</div>
</a>
<a class="col-sm-12 col-md-4 additional-resource" href="https://support.terminus.com/hc/en-us">
<div class="additional-resource-container">
<img class="resource-image" src="https://s3.amazonaws.com/static.northpass.com/Terminus/LMS-TERMINUS-knowledge-base-1200x768.jpg" alt="">
<div class="resource-title">Visit the Knowledge Base</div>
<div class="resource-subtitle">Hear the latest news and insights from the go-to-market experts</div>
</div>
</a>
</div>
<style>
.additional-resources * {
text-decoration: none;
}
.additional-resource {
margin-bottom: 10px;
}
.additional-resource-container {
background-color: #025589;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
border-radius: 10px;
}
.resource-image {
width: 100%;
margin-bottom: 15px;
border-top-right-radius: 10px;
border-top-left-radius: 10px;
}
.resource-title, .resource-subtitle {
color: #fff;
margin-bottom: 20px;
}
.resource-title {
font-weight: 600;
font-size: 20px;
}
</style>

View File

@ -0,0 +1,52 @@
{% assign activities_count = 0 %}
{% for course_section in course.sections %}
{% for course_activity in course_section.activities %}
{% assign activities_count = activities_count | plus: 1 %}
{% endfor %}
{% endfor %}
<div class="np-card">
<div class="np-card-container">
{% if course.ribbon %}
<div class="np-card-ribbon">
{{ course.ribbon }}
</div>
{% endif %}
<img
class="np-card-image"
alt="{{ course.name }}"
src="{{ course.image_url }}"
>
<div class="np-card-content np-card-content-vertical np-card-padding">
<h3 class="np-card-content-title">
{{ course.name }}
</h3>
<div class="np-card-content-subtitle">
{{ course.instructor_names }}
</div>
<div class="np-card-content-footer">
<div class="np-card-content-progress np-button-color">
{% t shared.progress, count: course.progress %}
<div class="np-progress-bar-container">
<div
style="width: {{ course.progress }}%"
class="np-button-background-color np-card-progress-bar">
</div>
</div>
</div>
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
{% if course.has_to_restart? %}
{% include "course_version_outdated_popup", path: course_path %}
{% endif %}
<div class="course-button-container">
<a class="np-button np-button-wide" href="{{ course_path }}">
{% t shared.view %}
</a>
<span>
{{ activities_count }} {% if activities_count == 1 %}Activity{% else %}Activities{% endif %}
</span>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,19 @@
<div class="np-card">
<div class="np-card-container">
<img
class="np-card-image"
src="{{ image_url }}"
>
<div class="np-card-content np-card-content-vertical np-card-padding">
<h3 class="np-card-content-title">
{{ school_name }}
</h3>
<div class="np-card-content-footer">
<a class="cards-school-button" href="{{ school_url }}">
Start Path
<i class="arrow-in-button far fa-long-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,166 @@
<header class="np-header np-header-color">
<div class="np-header-content">
<div class="np-hidden-desktop np-header-mobile-menu-nav">
{% comment %} {% if current_person.signed_in? %}
<button
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button fal fa-times np-hidden np-header-font-color"
data-toggle-target=".np-header-mobile-avatar-menu,
.np-header-mobile-menu-content, .np-main, .np-footer"
></button>
<button
data-test="open-mobile-menu"
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button np-header-mobile-avatar-menu"
data-toggle-target=".fa-times, .np-header-mobile-menu-content, .np-main, .np-footer"
>
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}"
/>
</button>
{% endif %} {% endcomment %}
</div>
{% if current_school.logo_url %}
<h1 class="np-header-logo">
<a href="{% route home %}">
<img
alt="{{ current_school.name }}"
class="np-header-logo-image"
src="{{ current_school.logo_url }}"
/>
</a>
</h1>
{% else %}
<a href="{% route home %}" class="np-school-name np-header-font-color">
{{ current_school.name }}
</a>
{% endif %}
{% comment %}
{% if current_person.signed_in? %}
<div class="np-hidden-mobile np-header-search np-header-search-expanded">
<form action="{% route search %}" method="get" data-test="desktop-search">
<input
aria-label="{% t .search %}"
class="np-header-search-input np-header-font-background-color"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search"></i>
</form>
</div>
<div class="np-hidden-mobile np-header-avatar">
<button
class="np-header-avatar-button"
data-test="open-desktop-menu"
data-toggle-class-on-target="np-hidden"
data-toggle-target=".np-header-avatar-tooltip"
data-toggle-outside
>
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}"
>
</button>
<div class="np-header-avatar-tooltip np-hidden" role="tooltip">
<span class="np-header-avatar-tooltip-arrow-up"></span>
<div class="np-header-avatar-tooltip-learner">
<div class="np-header-avatar-tooltip-learner-name">
{{ current_person.name }}
</div>
<div class="np-header-avatar-tooltip-learner-email">
{{ current_person.email }}
</div>
</div>
<nav class="np-header-avatar-tooltip-navigation">
{% unless current_school.sso_active? %}
<a
class="np-header-avatar-tooltip-navigation-link"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-avatar-tooltip-navigation-link np-danger"
href="{% route logout %}"
>
{% t .sign_out %}
</a>
</nav>
</div>
</div>
{% else %}
<a
class="np-header-sign-in np-header-desktop-nav-link np-header-font-color"
aria-label="{% t shared.sign_in %}"
href="{% route login %}"
>
{% t shared.sign_in %}
</div>
{% endif %} {% endcomment %}
</div>
</header>
{% comment %}
<div class="np-hidden-desktop">
<div class="np-header-mobile-menu-content np-hidden">
{% if current_person.signed_in? %}
<img
alt="{{ current_person.name }}"
class="np-header-mobile-menu-content-avatar"
src="{{ current_person.avatar_url }}"
/>
<div class="np-header-mobile-menu-content-name">
{{ current_person.name }}
</div>
{% endif %}
<div class="np-header-mobile-menu-content-nav">
<form
class="np-header-search"
data-test="mobile-search"
method="get"
action="{% route search %}"
>
<input
aria-label="{% t .search %}"
class="np-header-search-input"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search"></i>
</form>
{% for website_navigation in navigations.header_navigations %}
<a
href="{{ website_navigation.path }}"
class="np-header-mobile-menu-content-button"
{% if website_navigation.external? %} target="_blank" {% endif %}
>
{{ website_navigation.name }}
</a>
{% endfor %}
<div class="np-header-mobile-menu-content-line"></div>
{% unless current_school.sso_active? %}
<a
class="np-header-mobile-menu-content-button"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-mobile-menu-content-button np-danger"
href="{% route logout %}"
>
{% t .sign_out %}
</a>
</div>
</div>
</div> {% endcomment %}
{% include "messages" %}

View File

@ -0,0 +1,40 @@
<div class="row popular-topics">
<div class="col-xs-12 col-sm-6 col-md-3 popular-topic">
<a href="">
Certifications
</a>
</div>
<div class="col-xs-12 col-sm-6 col-md-3 popular-topic">
<a href="">
Account Based Marketing Strategy
</a>
</div>
<div class="col-xs-12 col-sm-6 col-md-3 popular-topic">
<a href="">
Platform Training
</a>
</div>
<div class="col-xs-12 col-sm-6 col-md-3 popular-topic">
<a href="">
ABM Playbooks
</a>
</div>
</div>
<style>
.popular-topics a {
padding: 0 10px;
text-decoration: none;
color: #5087c7;
font-weight: 500;
border: 2px solid #bac4ca;
border-radius: 10px;
height: 60px;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
margin-bottom: 10px;
}
</style>

View File

@ -0,0 +1,96 @@
<main class="np-main np-homepage">
<div class="np-homepage-hero">
<img class="np-homepage-hero-image"
src="{{ homepage.artwork_url }}"
alt="{{ homepage.headline }}"
/>
<div class="np-homepage-hero-content">
<div class="np-homepage-headline np-header-font-color">
{{ homepage.headline }}
</div>
<div class="np-homepage-subheadline np-header-font-color">
{{ homepage.subheadline }}
</div>
{% comment %} <a class="np-homepage-hero-cta np-button" href="{% route catalog %}">
DISCOVER CATALOG
</a> {% endcomment %}
</div>
</div>
<div class="np-homepage-featured np-max-width">
<div class="np-homepage-featured-text">
<div class="np-homepage-headline">
A Curated Learning Experience
</div>
<div class="np-homepage-subheadline" style="font-weight:300">
Terminus Academy is more than just an e-learning platform. We've designed curated learning experiences for our unique audiences to help you build, operate, and measure go-to-market strategies at scale, and allow you to level up your expertise at your own pace.
<br><br>
To get started in the Academy, please choose the appropriate sign in option below.
</div>
</div>
{% capture login_path %}{% route login %}{% endcapture %}
<div class="np-homepage-featured-courses row">
<div class="col-xs-12 col-md-6 col-lg-4 np-stretch-content">
{%
include "cards_school",
image_url: "https://s3.amazonaws.com/static.northpass.com/Terminus/Customer+Login+Image.jpg",
school_name: "Customer Login",
school_url: "https://cherrill-hartman-s-school-8121.northpass.com/learners/sign_in"
%}
</div>
<div class="col-xs-12 col-md-6 col-lg-4 np-stretch-content">
{%
include "cards_school",
image_url: "https://s3.amazonaws.com/static.northpass.com/Terminus/Employee+Login+Image.jpg",
school_name: "Employee Login",
school_url: login_path
%}
</div>
<div class="col-xs-12 col-md-6 col-lg-4 np-stretch-content">
{%
include "cards_school",
image_url: "https://s3.amazonaws.com/static.northpass.com/Terminus/Partner+Login+Image.jpg",
school_name: "Partners Login",
school_url: "https://cherrill-hartman-s-school.northpass.com/learners/sign_in"
%}
</div>
</div>
</div>
</main>
<style>
.np-sub-navigation {
margin-bottom: 0;
}
.np-card-image {
height: 250px;
object-fit: cover;
object-position: 25% 25%;
}
.arrow-in-button {
margin-left: 5px;
}
.cards-school-button {
color: #1b3e4f;
font-size: 16px;
font-weight: 500;
text-decoration: none;
}
.np-homepage-featured .np-homepage-headline,
.np-homepage-featured .np-homepage-subheadline {
color: #000;
font-weight: 500;
}
.np-homepage-featured .np-homepage-subheadline {
line-height: 1.75rem;
}
.np-homepage-featured .np-homepage-headline {
font-size: 3rem;
margin-bottom: 20px;
}
</style>

View File

@ -0,0 +1,34 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.in_catalog %}
<div class="np-homepage-hero">
<img class="np-homepage-hero-image"
src="https://s3.amazonaws.com/static.northpass.com/Terminus/terminus-LMS-learn-without-limits+Catalog+Header.jpg"
/>
</div>
{% include "sub_navigation" %}
<main class="np-main np-catalog np-subpage-container np-max-width">
<div class="np-catalog-header-wrapper">
<div class="np-catalog-header">
<div class="np-resource-title">{{ catalog.headline }}</div>
<div class="np-resource-subtitle">{{ catalog.subheadline }}</div>
</div>
{% capture label %}{% t shared.filters.by_category %}{% endcapture %}
{% if courses.in_catalog.any? %}
{%
include "filter_dropdown",
filters: courses.filters,
key: "category_uuid",
label: label
%}
{% endif %}
</div>
{% include "courses_catalog" %}
</main>
{% include "footer" %}
<style>
.np-sub-navigation {
margin-bottom: 0;
}
</style>

View File

@ -0,0 +1,40 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.featured %}
<div class="np-homepage-hero">
<img class="np-homepage-hero-image"
src="https://s3.amazonaws.com/static.northpass.com/Terminus/terminus-LMS-academy-3+Dashboard+Header.jpg"
/>
</div>
{% include "sub_navigation" %}
<main class="np-main np-dashboard np-subpage-container np-max-width">
<div class="row np-flex-center">
<div class="col-xs-12 col-sm-8">
{% if features.learning_paths? %}
<div class="np-dashboard-resources-title">
{% t shared.learning_paths %}
</div>
{% include "learning_paths_index", items: learning_paths.enrolled %}
{% endif %}
<div class="np-dashboard-resources-title">
{% t shared.course_vocabulary.plural, key: current_school.course_vocabulary %}
</div>
{% include "courses_index", class: "col-xs-12 col-sm-6 np-stretch-content" %}
</div>
{% if features.training_events? %}
<div class="np-grid-spacing col-xs-12 col-sm-4">
<div class="np-dashboard-resources-title">
UPCOMING EVENTS
</div>
{% include "training_events_dashboard" %}
</div>
{% endif %}
</div>
</main>
{% include "footer" %}
<style>
.np-sub-navigation {
margin-bottom: 0;
}
</style>

View File

@ -0,0 +1,143 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.enrolled %}
{% if current_person.signed_in? %}
<div class="np-homepage-hero">
<img class="np-homepage-hero-image"
src="https://s3.amazonaws.com/static.northpass.com/Terminus/terminus-LMS-academy-3+Homepage+Header.jpg"
/>
</div>
{% include "sub_navigation" %}
<main class="np-main np-dashboard np-subpage-container np-max-width">
<div class="row np-flex-center">
<div class="col-xs-12 col-sm-8">
<div class="np-dashboard-resources-title">
FEATURED COURSES
</div>
{% if courses.featured.any? %}
<div class="np-homepage-featured-courses row">
{% for course in courses.featured %}
<div class="col-xs-12 np-stretch-content">
{% include "cards_featured_course" with course %}
</div>
{% endfor %}
</div>
{% else %}
<div class="np-homepage-featured-empty">
<div class="np-zero-state-text">
{% t .empty, key: current_school.course_vocabulary %}
</div>
<img
class="np-zero-state-courses"
alt="{% t .empty, key: current_school.course_vocabulary %}"
/>
</div>
{% endif %}
</div>
{% if features.training_events? %}
<div class="np-grid-spacing col-xs-12 col-sm-4">
<div class="np-dashboard-resources-title">
UPCOMING EVENTS
</div>
{% include "training_events_dashboard" %}
</div>
{% endif %}
<div class="col-xs-12">
<div class="np-dashboard-resources-title">
POPULAR TOPICS
</div>
{% include 'popular_topics' %}
</div>
<div class="col-xs-12">
<div class="np-dashboard-resources-title" style="margin-top: 20px;">
ADDITIONAL RESOURCES
</div>
{% include 'additional_resources' %}
</div>
</div>
</main>
{% else %}
{% include 'public_homepage' %}
{% endif %}
{% include "footer" %}
{% if current_person.signed_in? %}
<style>
.np-sub-navigation {
margin-bottom: 0;
}
.np-homepage-featured-courses .np-card-content {
background: #fff;
border-top-right-radius: 0;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
}
.np-homepage-featured-courses .np-card {
padding: 0;
}
.np-homepage-featured-courses .np-card-image {
object-fit: cover;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-left-radius: 0;
}
.np-homepage-featured-courses .np-card-container {
flex-direction: row;
min-height: 260px;
box-shadow: none;
border-radius: 10px;
border: 2px solid #bac4ca;
}
.np-homepage-featured-courses .np-card-content-title {
color: #5087c7;
}
.np-homepage-featured-courses .np-card-content-footer {
flex-direction: column;
align-items: normal;
}
.np-homepage-featured-courses .np-button {
width: 40%;
margin-right: 10px;
background-color: #feac1a;
border-radius: 10px;
}
.course-button-container {
margin-top: 15px;
display: flex;
justify-content: center;
align-items: center;
}
.course-button-container > span {
font-size: 1rem;
font-weight: 700;
white-space: nowrap;
color: #000;
}
@media (min-width: 768px) {
.np-homepage-featured-courses .np-card-image {
width: 40%;
}
.np-homepage-featured-courses .np-card-content {
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 0;
}
.np-homepage-featured-courses .np-card-image {
border-top-left-radius: 10px;
border-top-right-radius: 0;
border-bottom-left-radius: 10px;
}
}
</style>
{% endif %}

View File

@ -0,0 +1,81 @@
{% assign course_ribbon = course.ribbon | downcase %}
<div class="np-card">
<div class="np-card-container">
<div class="card__image" style="background-image: url({{ course.image_url }})">
{% unless course.properties.course_image == "NULL" or course.properties.course_image == "" %}
<img class="course-img-static" src="{{course.properties.course_image}}" />
{% endunless %}
{% if course.ribbon and course.ribbon.size > 0 %}
<div class="np-card-ribbon">
{{ course.ribbon }}
</div>
{% endif %}
</div>
<div class="np-card-content np-card-content-vertical np-card-padding">
<h3 class="np-card-content-title">
{{ course.name }}
</h3>
{% if course.instructor_names and course.instructor_names.size > 0 %}
<div class="np-card-content-subtitle">
{{ course.instructor_names }}
</div>
{% endif %}
{% if course.short_description and course.short_description.size > 0 %}
<div class="np-card-content-description">
{{ course.short_description | split: " --- " | last }}
</div>
{% endif %}
<div class="np-card-content-footer">
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
{% if course_ribbon == "hochladen" or course_ribbon == "upload" %}
<a class="np-button np-button-wide" href="{{ course_path }}">
<span data-lang="DE">Hochladen</span>
<span data-lang="EN">Upload</span>
</a>
{% else %}
<a class="np-button np-button-wide" href="{{ course_path }}">
<span data-lang="DE">{% t shared.view %}</span>
<span data-lang="EN">View</span>
</a>
{% endif %}
{% if course.enrolled? %}
{% unless course_ribbon == "demnächst" or course.name == "Neue Lerninhalte" or course_ribbon == "coming soon" or course_ribbon == "New learning content" %}
{% if course.has_to_restart? %}
{% include "course_version_outdated_popup", path: course_path %}
{% endif %}
<div class="np-card-content-progress np-button-color">
{% if course.completed? %}
<span data-lang="DE">Abgeschlossen</span>
<span data-lang="EN">Completed</span>
{% elsif course.started? == false %}
<span data-lang="DE">0% abgeschlossen</span>
<span data-lang="EN">0% completed</span>
{% else %}
<span data-lang="DE">{% t shared.progress, count: course.progress %}</span>
<span data-lang="EN">{{course.progress}}% completed</span>
{% endif %}
</div>
{% endunless %}
{% endif %}
</div>
</div>
</div>
</div>
<style>
.card__image {
overflow:hidden;
}
.course-img-static {
max-width: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>

View File

@ -0,0 +1,89 @@
{% assign learning_path_lang = "DE" %}
{% for cat in learning_path.categories %}
{% if cat.name == "English" %}
{% assign learning_path_lang = "EN" %}
{% endif %}
{% endfor %}
<div class="np-card np-no-horizontal-padding card-learning-path" data-lang="{{learning_path_lang}}">
<div class="np-card-container">
<div class="np-learning-path">
<div class="image-wrapper">
<img
alt="{{ learning_path.name }}"
class="np-card-image np-learning-path-image"
src="{{ learning_path.image_url }}"
/>
<div class="np-card-ribbon np-hidden-mobile">
<i class="fa fa-book-open" aria-hidden="true"></i>
<span data-lang="DE">{{ learning_path.items.count }} Inhalte</span>
<span data-lang="EN">{{ learning_path.items.count }} Items</span>
</div>
</div>
<div class="np-card-text-wrapper">
<div class="np-card-content np-card-padding np-card-content-vertical">
<h3 class="np-card-content-title">
{{ learning_path.name }}
</h3>
{% include "learning_path_description" %}
{% if learning_path.has_instructors? %}
<div class="np-card-content-subtitle">
{{ learning_path.instructor_names }}
</div>
{% endif %}
<div class="np-card-ribbon np-hidden-desktop">
<i class="fa fa-book-open" aria-hidden="true"></i>
<span data-lang="DE">{{ learning_path.items.count }} Inhalte</span>
<span data-lang="EN">{{ learning_path.items.count }} Items</span>
</div>
<div class="np-card-content-footer">
<a class="np-button"
{% if learning_path.enrolled? %}
href="{% route learning_path, id: learning_path.id %}"
{% else %}
href="{% route learning_path_enrollment, code: learning_path.enrollment_code %}"
{% endif %}
>
<span data-lang="DE">Weiter</span>
<span data-lang="EN">View</span>
</a>
{% if learning_path.enrolled? %}
<div class="np-card-content-progress
np-button-color">
<span data-lang="DE">
{% if learning_path.completed? %}
Abgeschlossen
{% elsif learning_path.started? == false %}
0% abgeschlossen
{% else %}
{% t shared.progress, count: learning_path.progress %}
{% endif %}
</span>
<span data-lang="EN">
{% if learning_path.completed? %}
Completed
{% elsif learning_path.started? == false %}
0% completed
{% else %}
{{learning_path.progress}}% cmopleted
{% endif %}
</span>
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
<div class="np-card-stack">
<div class="np-card-stack-level-1"></div>
<div class="np-card-stack-level-2"></div>
</div>
</div>

View File

@ -0,0 +1,61 @@
<div class="np-card card--training-event {{ card_classes }}">
<div class="np-card-container">
<div class="np-card-content np-card-padding np-card-content-vertical">
<h3 class="np-card-content-title">
{{ training_event.title }}
</h3>
<div class="np-card-content-subtitle">
{% case training_event.event_type %}
{% when "online" %}
<span data-lang="DE">{% t shared.event_types, key: training_event.event_type %}</span>
<span data-lang="EN">Online Event</span>
{% when "in_person" %}
<span data-lang="DE">{% t shared.event_types, key: training_event.event_type %}</span>
<span data-lang="EN">In-Person Event</span>
{% endcase %}
</div>
{% if training_event.description and training_event.description.size > 0 %}
<div class="np-card-content-description">
{{ training_event.description | strip }}
</div>
{% endif %}
<div class="np-card-training-session-date">
{% comment %} Fallback to the first session {% endcomment %}
{% assign session_to_display = training_event.sessions | first %}
{% comment %} Check for an enrolled session and preferrably display that {% endcomment %}
{% assign enrolled_sessions = training_event.sessions | where: "registered?", true %}
{% if enrolled_sessions and enrolled_sessions.size > 0 %}
{% assign session_to_display = enrolled_sessions | first %}
{% endif %}
{% include "training_session_date", training_session: session_to_display %}
{% if training_event.sessions and training_event.sessions.size > 1 %}
<div class="session-date__other-info-container">
<div class="session-date__other-info-wrapper">
<i class="np-card-training-sessions-icon far fa-calendar-star" aria-hidden="true"></i>
<span class="np-card-training-sessions-label">
{{ training_event.sessions.size | minus: 1 }}
{% if training_event.sessions.size == 2 %}
Other Session
{% else %}
Other Sessions
{% endif %}
</span>
</div>
</div>
{% endif %}
</div>
<div class="np-card-content-footer">
<a
class="np-button np-button-wide"
href="{% route training_session, id: session_to_display.id %}"
>
{% t shared.view %} Event
</a>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,4 @@
<span class="np-course-outline-content-activity-title">
{{ activity.title }}
</span>

View File

@ -0,0 +1,9 @@
<a
href="{% route activity_viewer,
id: activity.id,
course_id: params.course_id,
learning_path_id: params.learning_path_id
%}" class="{{ activity_classes }}"
>
{{ activity.title }}
</a>

View File

@ -0,0 +1,50 @@
{% if course.learner_can_retake? %}
<form action="{% route course_retake, id: course.id %}" method="POST">
{% form_authenticity_token %}
<button type="submit" class="np-top-button np-button-font-color np-button np-button-big">
<span data-lang="DE">Training wiederholen</span>
<span data-lang="EN">Retake Course</span>
</button>
</form>
{% else %}
<a
class="np-top-button np-button-font-color np-button np-button-big {% if course.ribbon == 'Demnächst' or course.ribbon == 'Coming soon' %}disabled{% endif %}"
{% unless course.ribbon == 'Demnächst' or course.ribbon == 'Coming soon' %}
{% if course.enrolled? %}
href="{% route course_viewer, course_id: course.id, learning_path_id: params.learning_path_id %}"
{% else %}
href="{% route course_enrollment, code: course.enrollment_code %}"
{% endif %}
{% endunless %}
>
{% assign course_ribbon = course.ribbon | downcase %}
{% if course_ribbon == "hochladen" or course_ribbon == "upload" %}
<span data-lang="DE">Hochladen</span>
<span data-lang="EN">Upload</span>
{% else %}
<span data-lang="DE">
{% if course.enrolled? == false %}
{% t shared.enroll %}
{% elsif course.started? == false %}
{% t shared.course.start, key: current_school.course_vocabulary %}
{% elsif course.completed? %}
{% t shared.course.view, key: current_school.course_vocabulary %}
{% else %}
{% t shared.continue %}
{% endif %}
</span>
<span data-lang="EN">
{% if course.enrolled? == false %}
Enroll
{% elsif course.started? == false %}
Start
{% elsif course.completed? %}
Review
{% else %}
Continue
{% endif %}
</span>
{% endif %}
</a>
{% endif %}

View File

@ -0,0 +1,7 @@
<h3 class="np-card-heading">
<span data-lang="DE">Über diesen Kurs</span>
<span data-lang="EN">About this Course</span>
</h3>
<div class="np-card-text">
{{ course.full_description }}
</div>

View File

@ -0,0 +1,26 @@
<h3 class="np-card-heading">
{% t .header %}
</h3>
{% for event in course.events %}
<div class="np-course-events-content-item">
<div class="np-course-events-content-date">
<div class="np-course-events-content-month">
{{ event.sessions.first.abbreviated_month }}
</div>
<div class="np-course-events-content-day">
{{ event.sessions.first.day }}
</div>
</div>
<div class="np-course-events-content-details">
<div class="np-course-events-content-name">
{{ event.title }}
</div>
<div class="np-course-events-content-type np-text-light">
{% t shared.event_types, key: event.event_type %}
</div>
<div class="np-course-events-content-time">
{{ event.sessions.first.time_period | replace: "AM", "am" | replace: "PM", "pm" | replace: "-", "" }} {{ event.sessions.first.time_zone }}
</div>
</div>
</div>
{% endfor %}

View File

@ -0,0 +1,6 @@
<div class="np-top-title">
{{ course.name }}
</div>
<div>
{% comment %} {% include "course_cta_button" %} {% endcomment %}
</div>

View File

@ -0,0 +1,26 @@
<h3 class="np-card-heading">
Instructors
</h3>
<div class="instructors-list__container">
{% for instructor in course.instructors %}
<div class="np-content-instructors-content-item">
<img
src="{{ instructor.avatar_url }}"
class="np-content-instructors-content-image"
alt="{{ instructor.name }}"
/>
<div class="np-content-instructors-content-description">
<div class="np-content-instructors-content-name">
{{ instructor.name }}
</div>
{% if instructor.title and instructor.title.size > 0 %}
<div class="np-content-instructors-content-info">
{{ instructor.title }}
</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>

View File

@ -0,0 +1,34 @@
<div class="np-course-outline np-card-content-divider">
<h3 class="np-card-heading">
<span data-lang="DE">Inhalt</span>
<span data-lang="EN">Content</span>
</h3>
<div class="np-course-outline-content">
<ol class="np-course-outline-content-section">
{% for section in course.sections %}
<li class="np-course-outline-content-section-list">
<div class="np-course-outline-content-section-name">
{{ section.name }}
{% assign section_completed = true %}
{% for activity in section.activities %}
{% unless activity.completed? %}
{% assign section_completed = false %}
{% endunless %}
{% endfor %}
{% if section_completed %}
<span class="section-status-icon"><i class="fas fa-check-circle"></i></span>
{% endif %}
</div>
</li>
{% endfor %}
</ol>
</div>
</div>
<style>
.section-status-icon {
margin-left:8px;
color:#7625f7;
}
</style>

View File

@ -0,0 +1,25 @@
<div class="np-top-cta">
<div class="np-hidden-mobile">
{% include "course_cta_button" %}
</div>
<div class="np-top-cta-progress-content">
<div class="np-top-cta-progress-title np-text-title">
<span data-lang="DE">Lernfortschritt</span>
<span data-lang="EN">Progress</span>
</div>
<div class="np-progress-bar-container">
<div
style="width: {{ course.progress }}%"
class="np-progress-background-color np-card-progress-bar">
</div>
</div>
<div class="np-top-cta-progress-text">
<span data-lang="DE">{% t shared.progress, count: course.progress %}</span>
<span data-lang="EN">{{course.progress}}% complete</span>
</div>
</div>
</div>
<div class="np-hidden-desktop">
{% include "course_cta_button" %}
</div>

View File

@ -0,0 +1,49 @@
<div class="np-course-version-outdated-popup np-popup">
<div class="np-popup-positioner">
<i
class="np-course-version-outdated-popup-trigger fas fa-exclamation-circle"
data-toggle-class-on-target="np-popup-tooltip--visible"
data-toggle-target-parent=".np-popup-tooltip"
data-toggle-outside
aria-label="New Version Available"
tabindex="0"
></i>
<div
class="np-popup-tooltip"
role="tooltip"
aria-hidden="true"
>
<header class="np-popup-header">
<i class="np-popup-header-icon fas fa-exclamation-circle" aria-hidden="true"></i>
<h3 class="np-popup-header-title">
{% t .title %}
</h3>
</header>
<div class="np-popup-body">
<h4>
{% capture header_text %}
{% t .body.header %}
{% endcapture %}
{{ header_text | replace: "course", "course" }}
</h4>
<p>
{% capture body_text %}
{% t .body.content %}
{% endcapture %}
{{ body_text | replace: "course", "course" }}
</p>
<a
class="np-popup-body-button"
href="{{ path }}"
>
{% capture button_text %}
{% t .body.button %}
{% endcapture %}
{{ button_text | replace: "Course", "Course" }}
</a>
</div>
<div class="np-popup-tail"></div>
</div>
</div>
</div>

View File

@ -0,0 +1,183 @@
{% if courses.in_catalog.any? %}
<div class="category-header">
{% include "filter_by_progress" %}
</div>
<div class="np-catalog-courses row row-with-thumbnails">
{% for course in courses.in_catalog %}
{% assign is_on_the_job_video = false %}
{% for category in course.categories %}
{% if category.id == "40b1f3d7-6faf-4d54-a74f-92d330831728" or category.name contains "On-The-Job" %}
{% assign is_on_the_job_video = true %}
{% endif %}
{% endfor %}
{% unless is_on_the_job_video %}
{% assign progress_status_en = "jetzt-starten" %}
{% assign progress_status_de = "not-started" %}
{% if course.progress > 0 and course.progress < 100 %}
{% assign progress_status_de = "angefangen" %}
{% assign progress_status_en = "in-progress" %}
{% elsif course.progress == 100 %}
{% assign progress_status_de = "abgeschlossen" %}
{% assign progress_status_en = "completed" %}
{% endif %}
<div class="col-xs-12 col-md-6 col-lg-4 np-stretch-content course-column {{progress_status_de}} {{progress_status_en}}" data-lang="{{course.properties.course_language}}">
{% include "cards_course" with course %}
</div>
{% endunless %}
{% endfor %}
</div>
{% else %}
{% capture message %}
{% t shared.zero_state.courses.index,
key: current_school.course_vocabulary
%}
{% endcapture %}
{% assign message = message | replace: "Courses", "Courses" %}
{% include "courses_zero_state", message: message, filters_applied: false %}
{% endif %}
<style>
.np-progress-filter-wrapper {
margin-bottom: 0px;
}
.category-header {
display: flex;
justify-content: end;
margin-bottom:16px;
margin-top:24px;
}
.course-img-static {
transition:opacity 0.1s;
}
.course-img-static:hover {
opacity:0;
}
@media (min-width:768px) {
.np-catalog-courses {
margin-top: 0;
}
}
</style>
<script>
// Creates the custom dropdown and dropdown functionality
var x,
i,
j,
l,
ll,
selElmnt,
a,
b,
c;
/* Look for any elements with the class “select-wrapper”: */
x = document.getElementsByClassName("progress-filter");
l = x.length;
for (i = 0; i < l; i++) {
selElmnt = x[i].getElementsByTagName("select")[0];
ll = selElmnt.length;
a = document.createElement("DIV");
a.setAttribute("class", "select-selected");
a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
x[i].appendChild(a);
b = document.createElement("DIV");
b.setAttribute("class", "select-items select-hide");
for (j = 1; j < ll; j++) {
c = document.createElement("DIV");
c.innerHTML = selElmnt.options[j].innerHTML;
c.addEventListener("click", function(e) {
var y,
i,
k,
s,
h,
sl,
yl;
s = this.parentNode.parentNode.getElementsByTagName("select")[0];
sl = s.length;
h = this.parentNode.previousSibling;
for (i = 0; i < sl; i++) {
if (s.options[i].innerHTML == this.innerHTML) {
s.selectedIndex = i;
h.innerHTML = this.innerHTML;
y = this.parentNode.getElementsByClassName("same-as-selected");
yl = y.length;
for (k = 0; k < yl; k++) {
y[k].removeAttribute("class");
}
this.setAttribute("class", "same-as-selected");
break;
}
}
filterCourses(this);
h.click();
});
b.appendChild(c);
}
x[i].appendChild(b);
a.addEventListener("click", function(e) {
e.stopPropagation();
closeAllSelect(this);
this.nextSibling.classList.toggle("select-hide");
this.classList.toggle("select-arrow-active");
});
}
function closeAllSelect(elmnt) {
var x,
y,
i,
xl,
yl,
arrNo = [];
x = document.getElementsByClassName("select-items");
y = document.getElementsByClassName("select-selected");
xl = x.length;
yl = y.length;
for (i = 0; i < yl; i++) {
if (elmnt == y[i]) {
arrNo.push(i)
} else {
y[i].classList.remove("select-arrow-active");
}
}
for (i = 0; i < xl; i++) {
if (arrNo.indexOf(i)) {
x[i].classList.add("select-hide");
}
}
}
/* If the user clicks anywhere outside the select box,
then close all select boxes: */
document.addEventListener("click", closeAllSelect);
$(".select-items div").each(function() {
if ($(this).text() == $(".select-selected").text()) {
$(this).addClass("same-as-selected");
}
});
function filterCourses(selectedItem) {
let selectedFilter = $(selectedItem).text().replace(" ", "-").toLowerCase();
if (selectedFilter == "0%-abgeschlossen") {
selectedFilter = "jetzt-starten"
}
$(".np-catalog-courses").find('.course-column').removeClass('np-hidden')
if (selectedFilter != "alle-kurse" && selectedFilter != "all-courses") {
$(".np-catalog-courses").find(`.course-column:not(.${selectedFilter})`).addClass('np-hidden')
}
}
</script>

View File

@ -0,0 +1,200 @@
{% if courses.enrolled and courses.enrolled.any? %}
{%- assign all_categories = "" -%}
{%- for category in categories.enrolled -%}
{% comment %} <div class="np-resource-subtitle">Rolle</div> {% endcomment %}
{% unless category.id == "087ea56d-888b-4e0f-af1f-68627318c841" or category.id == "9be55234-19c5-4df4-bd1d-03e93f0faf83" or category.id == "6580e10e-eacf-402d-a330-51d202721cce" or category.id == "a63019c7-0a46-40bd-bc1b-935c887a4380" or category.id == "40b1f3d7-6faf-4d54-a74f-92d330831728" %}
<div class="category-header">
<div class="category-title" style="">
{{category.name}}
</div>
{% assign topic = category.id %}
{%
include "filter_by_progress",
label: "Nach Fortschritt filtern:",
default_option: "Alle Kurse",
topic: topic,
%}
</div>
<div class="row" data-topic="{{category.id}}">
{%- for course in courses.enrolled -%}
{% assign all_categories = course.categories | map: "id" %}
{%- if all_categories contains category.id -%}
{% assign course_status = "" %}
{% if course.started? == false %}
{% assign course_status = "jetzt-starten" %}
{% elsif course.completed? %}
{% assign course_status = "abgeschlossen" %}
{% elsif course.started? %}
{% assign course_status = "angefangen" %}
{% endif %}
<div class="cards-course-wrapper col-xs-12 col-sm-6 col-lg-4 np-stretch-content {{course_status}}">
{% include 'cards_course' %}
</div>
{%- endif -%}
{%- endfor -%}
</div>
{% endunless %}
{%- endfor -%}
{%- comment -%} <div class="blocks-layout">
{% for course in courses.enrolled %}
{% include "cards_course", course: course, card_classes: card_classes %}
{% endfor %}
</div> {%- endcomment -%}
{% else %}
{% capture message %}
{% t shared.zero_state.courses.index,
key: current_school.course_vocabulary
%}
{% endcapture %}
{% assign message = message | replace: "Courses", "Courses" %}
{% include "courses_zero_state", message: message, filters_applied: false %}
{% endif %}
<style>
.np-progress-filter-wrapper {
margin-bottom: 0px;
}
.category-header {
margin-bottom: 1rem;
}
.category-title {
font-size: 18px;
line-height: 18px;
font-weight: bold;
}
@media (min-width:768px) {
.category-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.category-title {
font-size: 24px;
line-height: 24px;
font-weight: bold;
}
}
</style>
<script>
// Creates the custom dropdown and dropdown functionality
var x,
i,
j,
l,
ll,
selElmnt,
a,
b,
c;
/* Look for any elements with the class “select-wrapper”: */
x = document.getElementsByClassName("progress-filter");
l = x.length;
for (i = 0; i < l; i++) {
selElmnt = x[i].getElementsByTagName("select")[0];
ll = selElmnt.length;
a = document.createElement("DIV");
a.setAttribute("class", "select-selected");
a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
x[i].appendChild(a);
b = document.createElement("DIV");
b.setAttribute("class", "select-items select-hide");
for (j = 1; j < ll; j++) {
c = document.createElement("DIV");
c.innerHTML = selElmnt.options[j].innerHTML;
c.addEventListener("click", function(e) {
var y,
i,
k,
s,
h,
sl,
yl;
s = this.parentNode.parentNode.getElementsByTagName("select")[0];
sl = s.length;
h = this.parentNode.previousSibling;
for (i = 0; i < sl; i++) {
if (s.options[i].innerHTML == this.innerHTML) {
s.selectedIndex = i;
h.innerHTML = this.innerHTML;
y = this.parentNode.getElementsByClassName("same-as-selected");
yl = y.length;
for (k = 0; k < yl; k++) {
y[k].removeAttribute("class");
}
this.setAttribute("class", "same-as-selected");
break;
}
}
filterCourses(this);
h.click();
});
b.appendChild(c);
}
x[i].appendChild(b);
a.addEventListener("click", function(e) {
e.stopPropagation();
closeAllSelect(this);
this.nextSibling.classList.toggle("select-hide");
this.classList.toggle("select-arrow-active");
});
}
function closeAllSelect(elmnt) {
var x,
y,
i,
xl,
yl,
arrNo = [];
x = document.getElementsByClassName("select-items");
y = document.getElementsByClassName("select-selected");
xl = x.length;
yl = y.length;
for (i = 0; i < yl; i++) {
if (elmnt == y[i]) {
arrNo.push(i)
} else {
y[i].classList.remove("select-arrow-active");
}
}
for (i = 0; i < xl; i++) {
if (arrNo.indexOf(i)) {
x[i].classList.add("select-hide");
}
}
}
/* If the user clicks anywhere outside the select box,
then close all select boxes: */
document.addEventListener("click", closeAllSelect);
$(".select-items div").each(function() {
if ($(this).text() == $(".select-selected").text()) {
$(this).addClass("same-as-selected");
}
});
function filterCourses(selectedItem) {
let filterGroup = $(selectedItem).closest(".progress-filter").data("topic");
let selectedFilter = $(selectedItem).text().replace(" ", "-").toLowerCase();
let carouselGroup = $('.row[data-topic="' + filterGroup + '"]');
console.log(filterGroup, selectedFilter, carouselGroup)
carouselGroup.find('.cards-course-wrapper').removeClass('np-hidden')
if (selectedFilter != "alle-kurse") {
carouselGroup.find(`.cards-course-wrapper:not(.${selectedFilter})`).addClass('np-hidden')
}
}
</script>

View File

@ -0,0 +1,9 @@
<div class="np-dashboard-resources-container">
<div class="np-zero-state-text">
<p>{{ message }}</p>
{% if filters_applied %}
<button class="np-button np-button-wide js-clear-filter-button js-filter-type__all">Clear All Filters</button>
{% endif %}
</div>
<img class="np-zero-state-courses" alt="{{ message }}" />
</div>

View File

@ -0,0 +1,11 @@
<div class="english-banner">
<p>
Switch your app to German to find all training and materials (some jobs require a certain level of German).
</p>
</div>
<style>
.english-banner {
height: 80px;
width: 100%;
}
</style>

View File

@ -0,0 +1,147 @@
<div class="np-progress-filter-wrapper">
<div class="np-progress-filter-label">
<span data-lang="DE">Nach Fortschritt filtern:</span>
<span data-lang="EN">Filter by progress:</span>
</div>
<div class="progress-filter filter-select-wrapper select-wrapper np-button" style="border-radius: 8px;" data-lang="DE">
<select>
<option selected disabled hidden>Alle Kurse</option>
<option value="all">Alle Kurse</option>
<option value="not-started">0% abgeschlossen</option>
<option value="in-progress">Angefangen</option>
<option value="completed">Abgeschlossen</option>
</select>
</div>
<div class="progress-filter filter-select-wrapper select-wrapper np-button" style="border-radius: 8px;" data-lang="EN">
<select>
<option selected disabled hidden>All Courses</option>
<option value="all">All Courses</option>
<option value="not-started">Not Started</option>
<option value="in-progress">In progress</option>
<option value="completed">Completed</option>
</select>
</div>
</div>
<style>
body[data-lang='EN'] .progress-filter[data-lang='DE'],
body[data-lang='DE'] .progress-filter[data-lang='EN'] {
display: none !important;
}
body[data-lang='EN'] .progress-filter[data-lang='EN'],
body[data-lang='DE'] .progress-filter[data-lang='DE'] {
display: block !important;
}
.progress-filter[data-lang='DE'] {display:block;}
.progress-filter[data-lang='EN'] {display:none;}
.np-progress-filter-label {
color: rgba(0, 0, 0, 0.5);
padding-right: 7px;
text-transform: none;
font-weight:500;
font-size:0.812rem;
}
.np-progress-filter-wrapper {
display: flex;
justify-content: flex-end;
margin-bottom: 1rem;
margin-top:12px;
align-items: center;
}
.filter-select-wrapper {
position: relative;
padding:0;
border: 2px solid rgba(0, 0, 0, 0.5);
color: #fff;
height:auto;
text-transform: none;
background: transparent;
border-radius:0;
font-size:14px;
}
.filter-select-wrapper:hover {
background:transparent;
color:#fff;
}
.select-items {
position: absolute;
background-color: #E1E2E5;
top: 105%;
left: -2px;
z-index: 99;
width: 102%;
border: 2px solid rgba(255, 255, 255, 0.25);
border-top:none;
}
.select-items div {
color: #707483;
border-top:none;
cursor: pointer;
width:100%;
padding: 12px 16px;
}
.select-items div:hover { color: rgba(255, 255, 255, 1); }
.select-selected {
width: 100%;
height: 100%;
padding: 6px 50px 6px 15px;
position: relative;
color:rgb(0, 0, 0);
}
.select-selected::after {
content:"\f078";
font-family: "Font Awesome 5 Pro";
position: absolute;
width:20px;
height:100%;
color:rgba(0, 0, 0, 0.5);
right:10px;
top:0;
display: flex;
justify-content: center;
align-items: center;
font-size:1rem;
}
.select-selected::before {
content:"";
position: absolute;
width:20px;
height:100%;
border-left:2px solid rgba(0, 0, 0, 0.5);
right:20px;
top:0;
}
.select-selected.select-arrow-active::after { transform: rotate(180deg); }
.same-as-selected,
.filter-select-wrapper select,
.select-hide {
display: none;
}
.mo-filter-wrapper {
display: flex;
justify-content: center;
list-style: none;
margin: 0;
padding: 0;
}
.select-items div:hover,
.same-as-selected {
background-color: #707483;
}
@media (min-width:768px) {
.np-progress-filter-wrapper {
margin-top:0;
font-size:16px;
}
.select-selected {
padding: 9px 66px 9px 20px;
}
}
</style>

View File

@ -0,0 +1,81 @@
{% comment %}
<footer class="np-footer">
<div class="np-footer-top">
{% if website_footer.show_navigation_links? %}
<div class="np-footer-navigation">
<ul class="np-footer-navigation-list">
{% for website_navigation in navigations.footer_navigations %}
<li class="np-footer-navigation-item">
<a
class="np-footer-navigation-link np-button-color"
href="{{ website_navigation.path }}"
{% if website_navigation.external? %} target="_blank" {% endif %}
>
{{ website_navigation.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% if current_school.logo_url %}
<h2 class="np-footer-logo">
<a href="{% route home %}">
<img
alt="{{ current_school.name }}"
class="np-footer-logo-image"
src="{{ current_school.logo_url }}"
/>
</a>
</h2>
{% else %}
<div class="np-school-name np-header-font-color">
{{ current_school.name }}
</div>
{% endif %}
</div>
<div class="np-footer-bottom">
<nav class="np-footer-social-links">
{% if website_footer.show_social_media_links? %}
<ul class="np-footer-social-links-list">
{% for social_media_link in website_footer.social_media_links %}
<li class="np-footer-social-links-item">
<a
class="np-footer-social-links-link np-button-color"
href="{{ social_media_link.link }}"
target="_blank" title="{{ social_media_link.name }}"
>
<i class="np-footer-social-links-icon
np-button-color
fab fa-{{ social_media_link.name }}"
aria-label="{{ social_media_linke.name }}"
></i>
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</nav>
{% if website_footer.show_customer_service_email? and
website_footer.school_customer_service_email
%}
<div class="np-footer-support">
<div class="np-footer-support-item np-footer-support-help">
{% t .need_help %}
</div>
<div class="np-footer-support-item np-footer-support-email">
{% t .email %}
</div>
<a
class="np-footer-support-item np-footer-support-link np-button-color"
href="mailto:{{ website_footer.school_customer_service_email }}"
>
{{ website_footer.school_customer_service_email }}
</a>
</div>
{% endif %}
</div>
</footer>
{% endcomment %}

View File

@ -0,0 +1,8 @@
{% styles default %}
{% styles colors %}
{% styles custom %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/freezeframe@3.0.10/build/css/freezeframe_styles.min.css">
<script type="text/javascript" src="https://unpkg.com/freezeframe@3.0.10/build/js/freezeframe.pkgd.min.js"></script>

View File

@ -0,0 +1,602 @@
{% assign is_in_authenticated_group = false %}
{% for group in current_person.groups %}
{% if group.name == "All Users" or group.id == "6331d115-ea74-418a-99b2-af5c81208fe1" %}
{% assign is_in_authenticated_group = true %}
{% endif %}
{% endfor %}
{% if current_person.email contains "+preview" %}
{% assign is_in_authenticated_group = true %}
{% endif %}
{% unless is_in_authenticated_group %}
<script>
console.log(window.location.pathname)
if (window.location.pathname != "/app") {
window.location.replace("/app")
}
</script>
{% endunless %}
<header class="np-header np-header-color">
<div class="np-header-content">
<div class="np-hidden-desktop np-header-mobile-menu-nav">
{% if current_person.signed_in? %}
<button
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button fal fa-times np-hidden np-header-font-color"
data-toggle-target=".np-header-mobile-avatar-menu,
.np-header-mobile-menu-content, .np-main, .np-footer"
></button>
<button
data-test="open-mobile-menu"
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button np-header-mobile-avatar-menu"
data-toggle-target=".fa-times, .np-header-mobile-menu-content, .np-main, .np-footer"
>
<i class="far fa-bars"></i>
</button>
{% endif %}
</div>
<div class="language-dropdown-wrapper np-hidden-desktop">
<div class="header-language-selection">
{{current_person.properties.user_language}}
</div>
<ul class="languages-dropdown">
<li data-lang="DE" onclick="changeLanguage(this.getAttribute('data-lang'))">Deutsch</li>
<li data-lang="EN" onclick="changeLanguage(this.getAttribute('data-lang'))">English</li>
</ul>
</div>
{% if current_school.logo_url %}
<h1 class="np-header-logo">
<a href="/app/catalog">
<img
alt="{{ current_school.name }}"
class="np-header-logo-image"
src="{{ current_school.logo_url }}"
/>
</a>
</h1>
{% else %}
<a href="/app/catalog" class="np-school-name np-header-font-color">
{{ current_school.name }}
</a>
{% endif %}
<div class="np-hidden-mobile np-header-desktop-nav">
<ul class="np-header-desktop-nav-list">
<li class="np-header-desktop-nav-item">
<a href="/app/catalog" class="np-header-desktop-nav-link trainings-link">
<span data-lang="DE">Trainings</span>
<span data-lang="EN">Trainings</span>
</a>
</li>
<li class="np-header-desktop-nav-item">
<a href="/app/learning_paths" class="np-header-desktop-nav-link learning-paths-link">
<span data-lang="DE">Lernwege</span>
<span data-lang="EN">Learning Paths</span>
</a>
</li>
<li class="np-header-desktop-nav-item">
<a href="/app/zertifikate" class="np-header-desktop-nav-link certs-link">
<span data-lang="DE">Auszeichnungen</span>
<span data-lang="EN">Awards</span>
</a>
</li>
<li class="np-header-desktop-nav-item">
<a href="/app/on-the-job" class="np-header-desktop-nav-link videos-link">
<span data-lang="DE">On-The-Job Videos</span>
<span data-lang="EN">On-The-Job Videos</span>
</a>
</li>
{% for website_navigation in navigations.header_navigations_external %}
<li class= "np-header-desktop-nav-item">
<a
href="{{ website_navigation.path }}"
class="np-header-desktop-nav-link np-header-font-color"
target="_blank"
>
{{ website_navigation.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
<div class="language-dropdown-wrapper np-hidden-mobile">
<div class="header-language-selection">
{{current_person.properties.user_language}}
</div>
<ul class="languages-dropdown">
<li data-lang="DE" onclick="changeLanguage(this.getAttribute('data-lang'))">Deutsch</li>
<li data-lang="EN" onclick="changeLanguage(this.getAttribute('data-lang'))">English</li>
</ul>
</div>
{% if current_person.signed_in? %}
<div class="np-hidden-mobile np-header-search np-header-search-expanded">
<form action="{% route search %}" method="get" data-test="desktop-search">
<input
aria-label="{% t .search %}"
class="np-header-search-input np-header-font-background-color"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search" aria-label="Search"></i>
</form>
</div>
<div class="np-hidden-mobile np-header-avatar">
<button
class="np-header-avatar-button"
data-test="open-desktop-menu"
data-toggle-class-on-target="np-hidden"
data-toggle-target=".np-header-avatar-tooltip"
data-toggle-outside
>
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}"
>
</button>
<div class="np-header-avatar-tooltip np-hidden" role="tooltip">
<span class="np-header-avatar-tooltip-arrow-up"></span>
<div class="np-header-avatar-tooltip-learner">
<div class="np-header-avatar-tooltip-learner-name">
{{ current_person.name }}
</div>
<div class="np-header-avatar-tooltip-learner-email">
{{ current_person.email }}
</div>
</div>
<nav class="np-header-avatar-tooltip-navigation">
{% unless current_school.sso_active? %}
<a
class="np-header-avatar-tooltip-navigation-link"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-avatar-tooltip-navigation-link np-danger"
href="{% route logout %}"
>
<span data-lang="DE">{% t .sign_out %}</span>
<span data-lang="DE">Logout</span>
</a>
</nav>
</div>
</div>
{% else %}
<a
class="np-header-sign-in np-header-desktop-nav-link np-header-font-color"
href="{% route login %}"
>
{% t shared.sign_in %}
</div>
{% endif %}
</div>
</header>
<div class="np-hidden-desktop">
<div class="np-header-mobile-menu-content np-hidden">
<div class="np-header-mobile-menu-content-nav">
<a href="/app/catalog" class="np-header-mobile-menu-content-button">Trainings</a>
<a href="/app/learning_paths" class="np-header-mobile-menu-content-button">
<span data-lang="DE">Lernwege</span>
<span data-lang="EN">Learning Paths</span>
</a>
<a href="/app/zertifikate" class="np-header-mobile-menu-content-button">
<span data-lang="DE">Auszeichnungen</span>
<span data-lang="EN">Awards</span>
</a>
<a href="/app/on-the-job" class="np-header-mobile-menu-content-button">On-The-Job Videos</a>
<form
class="np-header-search"
data-test="mobile-search"
method="get"
action="{% route search %}"
>
<input
aria-label="{% t .search %}"
class="np-header-search-input"
type="text"
name="q"
placeholder=""
/>
<i class="np-header-search-icon far fa-search" aria-label="search"></i>
</form>
</div>
</div>
</div>
{% include "messages" %}
<style>
body.mobile-menu-open main.np-main.np-hidden {
display: block!important;
}
.np-header {
height: auto;
padding-top: 12px;
transition:transform 0.3s, background-color 0.2s;
top:0;
}
.np-header.sticky {
position: sticky;
background-color:#3e1191;
}
.np-header.sticky-hide {
transform: translateY(-100px);
}
.np-header.sticky-show {
transform: translateY(0);
}
body.mobile-menu-open .np-header {
background-color:#3e1191;
}
.np-header-logo {
padding: 0.75rem 0;
justify-content:flex-start;
}
.np-header-logo-image {
height:30px;
}
.np-header .fa-bars {
font-size: 28px;
color: #fff;
}
.np-header-mobile-menu-nav {
position:relative;
}
.np-header-mobile-menu-content {
background-color: #3e1191;
top:66px;
left:unset;
bottom:unset;
width:50%;
padding: 0 0 8px;
}
.np-header-mobile-menu-content .np-header-mobile-menu-content-nav {
padding: 0 10px;
}
.np-header-mobile-menu-content .np-header-mobile-menu-content-button {
background: transparent;
color: #fff;
box-shadow: none;
border: 1px solid #fff;
height: auto;
font-size: 15px;
padding: 3px;
font-weight: 700;
margin-top:10px;
}
.np-header-mobile-menu-content .np-header-search-input,
.np-header-mobile-menu-content .np-header-search-input:focus {
background: transparent;
border: 1px solid #fff;
color: #fff;
padding: 8px 30px 8px 10px;
font-size:14px;
height:auto;
border-radius:4px;
}
.np-header-mobile-menu-content .np-header-search { padding-top:10px; }
.np-header-mobile-menu-content .np-header-search-icon,
.np-header-mobile-menu-content .np-header-search-input:hover + .np-header-search-icon {
color: #fff;
font-size: 16px;
pointer-events: none;
position: absolute;
right: 12px;
top: 19px;
}
.np-header-mobile-menu-nav-button.np-header-font-color,
.np-header-mobile-menu-content-name { color:#fff;}
@media screen and ( min-width: 48rem ) {
.np-header-logo {
padding: 1.25rem 0;
}
}
/* --- Navigation --- */
.np-header-desktop-nav-list {
justify-content: end;
margin: 1rem;
padding-left: 0;
}
.np-header-desktop-nav-link {
padding: 0.1rem 0.75rem 0.15rem;
border: transparent 2px solid;
border-radius: 3rem;
color:#fff;
font-size:18px;
margin-right:12px;
}
.np-header-desktop-nav-item {
padding: 0;
margin: 2px;
}
.np-header-desktop-nav-link:focus,
.np-header-desktop-nav-link:hover {
border-color: #7625f7;
color:#fff;
outline: none;
}
.np-header-desktop-nav-link.is-active {
background-color: #8b78fa;
}
.np-header-desktop-nav-link.is-active:focus {
border-color: #275cb8;
}
.np-header-search-input:hover + .np-header-search-icon {
color: #bfe4ff;
}
.np-header-search-input:focus {
border-color: #275cb8;
outline: none;
border-radius: 3rem;
padding: 0 1.25rem 0 2.5rem;
}
.np-header-search-input:focus + .np-header-search-icon {
color: #304780;
}
.np-header-mobile-menu-content-button.np-danger {
border-color: #ff5773;
color: #E52242;
}
/* LANGUAGE DROPDOWN */
.language-dropdown-wrapper {
position:relative;
}
.header-language-selection {
display: flex;
gap: 8px;
padding:20px;
font-size:20px;
cursor:pointer;
color:#fff;
align-items:center;
position:relative;
margin-right:8px;
}
.header-language-selection:after {
content: "\f078";
font-family: "Font Awesome 5 Pro";
position: absolute;
font-size: 14px;
top: 50%;
right: 4px;
color: #fff;
transition: transform 0.2s;
transform: translateY(-50%) rotate(0deg);
}
.header-language-selection.active:after {
transform: translateY(-50%) rotate(180deg);
}
.languages-dropdown {
position:absolute;
top: 66px;
left:50%;
transform: translateX(-50%);
background-color: #3e1191;
color:#fff;
margin:0;
height:0;
opacity:0;
min-width:170px;
list-style:none;
transition: opacity 0.2s;
z-index: 1;
}
.languages-dropdown:not(.show) {
visibility: hidden;
}
.languages-dropdown.show {
height:auto;
opacity:1;
padding:12px;
}
.languages-dropdown li {
cursor: pointer;
width:100%;
padding: 3px;
font-size:16px;
border-radius:3px;
text-align:center;
border: 1px solid #fff;
margin-bottom:10px;
}
/* END LANGUAGE DROPDOWN */
@media (min-width:768px) {
.np-header-search-input {
opacity: unset;
border-radius: 3rem;
background-color: #304780;
}
.np-header-search-icon {
right: unset;
left: 0.75rem;
}
.header-language-selection {
margin-right:20px;
}
}
</style>
<script>
const currentPath = window.location.pathname;
if (currentPath == "/app/courses") {
$(".trainings-link").addClass("is-active")
} else if (currentPath.includes("/app/learning_paths")) {
$(".learning-paths-link").addClass("is-active")
} else if (currentPath == "/app/zertifikate") {
$(".certs-link").addClass("is-active")
} else if (currentPath == "/app/on-the-job") {
$(".videos-link").addClass("is-active")
} else if (currentPath.includes("/app/training_events")) {
$(".events-link").addClass("is-active")
}
$("button[data-test='open-mobile-menu']").click(function() {
console.log($(this))
$("body").addClass("mobile-menu-open")
})
$(".np-header-mobile-menu-nav-button:not([data-test='open-mobile-menu'])").click(function() {
$("body").removeClass("mobile-menu-open")
})
window.onscroll = function() {detectScroll()};
var header = document.querySelector(".np-header");
var lastScrollTop = 0;
function detectScroll() {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
if (window.pageYOffset > 0) {
header.classList.add("sticky");
} else {
header.classList.remove("sticky");
}
if (window.pageYOffset > 150) {
if (scrollTop > lastScrollTop) {
header.classList.remove("sticky-show");
header.classList.add("sticky-hide");
if (!$(".np-header-mobile-menu-content").hasClass("np-hidden")) {
$(".np-header-mobile-menu-nav-button.fa-times").click()
}
} else if (scrollTop < lastScrollTop) {
header.classList.add("sticky-show");
header.classList.remove("sticky-hide");
}
lastScrollTop = scrollTop <= 0 ? 0 : scrollTop;
}
}
// Languages dropdown hover effect
$(".header-language-selection").click((e) => {
if ($(e.target).hasClass("active")) {
$(".languages-dropdown").removeClass('show');
$(e.target).removeClass('active');
} else {
$(".languages-dropdown").addClass('show');
$(e.target).addClass('active');
}
})
function changeLanguage(lang) {
const userPropertyLang = '{{current_person.properties.user_language}}'
const localStorageLang = localStorage.getItem('lang', lang)
console.log(`Selected language: ${lang} | language set in property: ${userPropertyLang} | language in local storage: ${localStorageLang}`)
// hide dropdown
$(".languages-dropdown").removeClass('show');
$(".header-language-selection").removeClass("active")
// if no local storage,
if (localStorageLang == null) {
localStorage.setItem('lang', lang);
}
if (userPropertyLang != lang) {
$(".header-language-selection").text(lang);
$("body").attr("data-lang", lang)
// make workato call here
setLanguageWorkflow(lang)
} else {
$(".header-language-selection").text(lang);
$("body").attr("data-lang", lang)
}
}
$(document).ready(function() {
console.log('Property {{current_person.properties.user_language}}')
console.log(localStorage.getItem('lang'))
const userPropertyLang = '{{current_person.properties.user_language}}'
const localStorageLang = localStorage.getItem('lang')
if (localStorageLang == null) {
console.log("no local storage, use property to set lang")
$("body").attr("data-lang", userPropertyLang)
$(".header-language-selection").text(userPropertyLang );
} else {
if (localStorageLang == userPropertyLang) {
console.log("delete local storage and use property lang")
$("body").attr("data-lang", userPropertyLang)
$(".header-language-selection").text(userPropertyLang );
localStorage.removeItem('lang');
} else {
console.log("use local storage lang")
$("body").attr("data-lang", localStorageLang)
$(".header-language-selection").text(localStorageLang );
}
}
})
function setLanguageWorkflow(lang) {
console.log("calling workato workflow")
var data = {
learner_uuid : '{{current_person.id}}',
language : lang
};
const schoolID = '{{current_school.id}}'
let workatoEndpoint = ""
if (schoolID == "d4f9d06b-bbe9-4e0a-85ee-eadc10f17914") {
workatoEndpoint = 'https://webhooks.workato.com/webhooks/rest/ccd1cbb2-59bc-4590-852a-a0d217d198b1/user-changes-language'
} else if (schoolID == "6e96bbdd-7818-4920-b79c-e46132939929") {
workatoEndpoint = 'https://webhooks.workato.com/webhooks/rest/0cb722cd-39ae-4754-9c37-380e6672cdbf/user-changes-language'
}
$.ajax({
type : 'POST',
url : workatoEndpoint,
data: JSON.stringify(data),
success:function (data) {
console.log(data);
},
error: function(xhr, status, error) {
console.log(error)
}
});
}
</script>

View File

@ -0,0 +1,243 @@
{% comment %} Determine if the item should be a link or not {% endcomment %}
{% if learning_path.enrolled? and course.unlocked? %}
{% assign element_type = "a" %}
{% else %}
{% assign element_type = "div" %}
{% endif %}
{% assign lp_course_required = 1 %}
{% if course.optional? %}
{% assign lp_course_required = 0 %}
{% endif %}
<div class="lp-course" data-required="{{lp_course_required}}">
<{{ element_type }}
class="np-learning-path-outline-item np-card card--horizontal"
{% if element_type == "a" %}
href="{% route learning_path_course, learning_path_id: learning_path.id, id: course.id %}"
{% endif %}
>
<div class="np-card-container">
<div class="card__image">
{% assign lp_image_not_cropped = item.image | replace: ',fit:crop/', '/' %}
<img src="{{lp_image_not_cropped}}">
{% unless course.optional? %}
<div class="np-card-ribbon">
<span data-lang="DE">Erforderlich</span>
<span data-lang="EN">Required</span>
</div>
{% else %}
<div class="np-card-ribbon">
Optional
</div>
{% endunless %}
</div>
<div class="np-card-content np-learning-path-outline-content np-card-padding">
<div class="text-wrapper">
<h3 class="np-card-content-title">
{{ course.name }}
</h3>
<div class="np-hidden-mobile">
{% if course.completed? %}
<div class="outline-card__icon-container outline-card__icon-complete np-hidden-desktop">
<i class="fas fa-check np-learning-path-outline-icon" aria-label="Course Completed"></i>
</div>
{% elsif element_type == "div" %}
<div class="outline-card__icon-container outline-card__icon-locked np-hidden-desktop">
<i class="fas fa-lock np-learning-path-outline-icon" aria-label="Course Locked"></i>
</div>
{% else %}
<div class="outline-card__icon-container outline-card__icon-link np-hidden-desktop">
{% if course.optional? %}
{% if course.name == "Servicetraining" or course.name == "Kassentraining" %}
<span data-lang="DE">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Fortsetzen
{% else %}
Anzeigen
{% endif %}
</span>
<span data-lang="EN">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Continue
{% else %}
Review
{% endif %}
</span>
{% else %}
<span data-lang="DE">Heft öffnen</span>
<span data-lang="EN">Open booklet</span>
{% endif %}
{% else %}
<span data-lang="DE">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Fortsetzen
{% else %}
Anzeigen
{% endif %}
</span>
<span data-lang="EN">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Continue
{% else %}
Review
{% endif %}
</span>
{% endif %}
</div>
{% endif %}
</div>
{% if course.instructors and course.instructors.size > 0 %}
<div class="np-card-content-subtitle">
{{ course.instructors }}
</div>
{% endif %}
<div class="np-card-content-footer">
<div class="np-card-content-progress">
<span data-lang="DE">
{% if course.completed? %}
Vollständig
{% else %}
{{ course.progress }}% Vollständig
{% endif %}
</span>
<span data-lang="EN">
{% if course.completed? %}
Complete
{% else %}
{{ course.progress }}% complete
{% endif %}
</span>
</div>
<div class="np-hidden-desktop">
{% if course.completed? %}
<div class="outline-card__icon-container outline-card__icon-complete np-hidden-desktop">
<i class="fas fa-check np-learning-path-outline-icon" aria-label="Course Completed"></i>
</div>
{% elsif element_type == "div" %}
<div class="outline-card__icon-container outline-card__icon-locked np-hidden-desktop">
<i class="fas fa-lock np-learning-path-outline-icon" aria-label="Course Locked"></i>
</div>
{% else %}
<div class="outline-card__icon-container outline-card__icon-link np-hidden-desktop">
{% if course.optional? %}
{% if course.name == "Servicetraining" or course.name == "Kassentraining" %}
<span data-lang="DE">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Fortsetzen
{% else %}
Anzeigen
{% endif %}
</span>
<span data-lang="EN">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Continue
{% else %}
Review
{% endif %}
</span>
{% else %}
<span data-lang="DE">Heft öffnen</span>
<span data-lang="EN">Open booklet</span>
{% endif %}
{% else %}
<span data-lang="DE">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Fortsetzen
{% else %}
Anzeigen
{% endif %}
</span>
<span data-lang="EN">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Continue
{% else %}
Review
{% endif %}
</span>
{% endif %}
</div>
{% endif %}
</div>
</div>
</div>
{% comment %} Use a different icon based on the state of the learning path and course {% endcomment %}
{% if course.completed? %}
<div class="outline-card__icon-container outline-card__icon-complete np-hidden-mobile">
<i class="fas fa-check np-learning-path-outline-icon" aria-label="Course Completed"></i>
</div>
{% elsif element_type == "div" %}
<div class="outline-card__icon-container outline-card__icon-locked np-hidden-mobile">
<i class="fas fa-lock np-learning-path-outline-icon" aria-label="Course Locked"></i>
</div>
{% else %}
<div class="outline-card__icon-container outline-card__icon-link np-hidden-mobile">
{% if course.optional? %}
{% if course.name == "Servicetraining" or course.name == "Kassentraining" %}
<span data-lang="DE">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Fortsetzen
{% else %}
Anzeigen
{% endif %}
</span>
<span data-lang="EN">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Continue
{% else %}
Review
{% endif %}
</span>
{% else %}
<span data-lang="DE">Heft öffnen</span>
<span data-lang="EN">Open booklet</span>
{% endif %}
{% else %}
<span data-lang="DE">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Fortsetzen
{% else %}
Anzeigen
{% endif %}
</span>
<span data-lang="EN">
{% if course.progress == 0 %}
Start
{% elsif course.progress > 0 and course.progress < 100 %}
Continue
{% else %}
Review
{% endif %}
</span>
{% endif %}
</div>
{% endif %}
</div>
</div>
</{{ element_type }}>
</div>

View File

@ -0,0 +1,22 @@
<a
class="np-top-button np-button-font-color np-button np-button-big"
{% if learning_path.enrolled? %}
{% if learning_path.current_item.course? %}
href="{% route learning_path_course, id: learning_path.current_item.id, learning_path_id: learning_path.id %}"
{% elsif learning_path.current_item.training_event? %}
href="{% route training_session, id: learning_path.current_item.id %}"
{% endif %}
{% else %}
href="{% route learning_path_enrollment, code: learning_path.enrollment_code %}"
{% endif %}
>
{% if learning_path.enrolled? == false %}
{% t shared.enroll %}
{% elsif learning_path.started? == false %}
Weiter
{% elsif learning_path.completed? %}
{% t shared.learning_path.view %}
{% else %}
Weiter
{% endif %}
</a>

View File

@ -0,0 +1,3 @@
<div class="np-card-text">
{{ learning_path.description }}
</div>

View File

@ -0,0 +1,27 @@
<h3 class="np-card-heading">
Instructors
</h3>
<div class="np-content-instructors-content row">
{% for instructor in learning_path.instructors %}
<div class="np-content-instructors-content-item">
<img
src="{{ instructor.avatar_url }}"
class="np-content-instructors-content-image"
alt="{{ instructor.name }}"
>
<div class="np-content-instructors-content-description">
<div class="np-content-instructors-content-name">
{{ instructor.name }}
</div>
{% assign instructor_title_size = instructor.title | size %}
{% if instructor.title and instructor.title.size > 0 %}
<div class="np-content-instructors-content-info">
{{ instructor.title }}
</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>

View File

@ -0,0 +1,160 @@
{% assign lp_contains_ilt = false %}
<div class="np-learning-path-outline blocks-layout">
{% for item in learning_path.items %}
{% if item.course? %}
{% include "learning_path_course", course: item %}
{% elsif item.training_event? %}
{% assign lp_contains_ilt = true %}
{% include "learning_path_training_session", training_session: item %}
{% endif %}
{% endfor %}
</div>
<style>
.outline-card__icon-link {
background-color: #3E1191;
color: #ffffff;
}
.outline-card__icon-link:hover {
background-color: #7625F7;;
}
.np-learning-path-session-card .np-card-content {
flex-direction:column;
padding:16px;
}
.np-learning-path-session-card .np-events-content-date-wrapper {
height:185px;
margin-bottom:20px;
}
.np-learning-path-session-card .np-events-content-date {
min-width: auto;
width: 100%;
padding: 8px 16px;
height: 100%;
margin: 0 auto 16px;
}
.np-learning-path-session-card .np-events-content-month,
.np-learning-path-session-card .np-events-content-day {
font-size: 32px;
}
.np-learning-path-session-card .np-events-content-time { font-size:16px;}
.np-learning-path-session-card .np-optional-ribbon {
background-color: #B6B9C2;
padding: 0.25rem 1rem;
border-radius: 1.5rem;
line-height: 1.1;
text-transform: none;
font-size: 0.75rem;
text-align: center;
color: #fff;
right: 22px;
top: 22px;
bottom: unset;
}
.np-learning-path-session-card .np-learning-path-outline-name {
font-size:18px;
}
.np-learning-path-session-card .register-button {
width: auto;
border-radius: 30px;
padding: 6px 16px;
min-width: 115px;
text-align: center;
margin-right: 0;
background-color: #3E1191;
color: #ffffff;
margin-left:auto;
}
@media (min-width:768px) {
.np-learning-path-session-card .np-card-content {
flex-direction:row;
align-items: center;
}
.np-learning-path-session-card .np-events-content-date-wrapper {
width: 40%;
max-width: 300px;
height: calc(100% + 32px);
margin: -16px 0;
padding: 16px;
border-right: 1px solid #e0f3ff;
position:relative;
left: -16px;
flex:1;
}
.np-learning-path-session-card .np-events-content-date {
margin: 0 8px;
width:auto;
}
.np-learning-path-session-card .np-events-content-day {
font-size: 30px;
line-height: normal;
}
.np-learning-path-session-card .np-learning-path-outline-content {
flex-direction:column;
padding: 6px 16px 0 0;
height:100%;
flex: 1;
}
.np-learning-path-session-card .np-optional-ribbon {
right: 22px;
top: 22px;
}
.np-learning-path-session-card .np-learning-path-outline-name {
font-size: 16px;
}
}
</style>
<script>
buttons = document.getElementsByClassName("np-learning-path-outline-item");
for (i = 0; i < buttons.length; i++) {
buttons[i].href = buttons[i].href.replace('/app','');
}
const lpContainsILT = {{lp_contains_ilt}}
//if (!lpContainsILT) {
if (!$(".cta__container.cta--outline").hasClass('all-optional-items')) {
console.log("reorder lp.")
reorderLpCoursesByRequirement()
}
//}
function reorderLpCoursesByRequirement() {
var indexes = document.querySelectorAll(".lp-course");
var indexesArray = Array.from(indexes);
const sortByRequirementAttr = arr => {
const sorter = (a, b) => {
return b.dataset.required - a.dataset.required;
}
arr.sort(sorter);
};
sortByRequirementAttr(indexesArray);
$(".np-learning-path-outline").empty()
indexesArray.forEach(e =>
document.querySelector(".np-learning-path-outline").appendChild(e));
}
</script>

View File

@ -0,0 +1,32 @@
<div class="np-top-cta">
<div class="np-top-cta-progress-content">
<div class="np-top-cta-progress-title np-text-title">
<span data-lang="DE">Lernfortschritt</span>
<span data-lang="EN">Study progress</span>
</div>
<div class="np-progress-bar-container">
<div
style="width: {{ learning_path.progress }}%"
class="np-progress-background-color np-card-progress-bar">
</div>
</div>
<div class="np-top-cta-progress-text">
<span data-lang="DE">
{% if learning_path.progress > 0 %}
{% t shared.progress, count: learning_path.progress %}
{% else %}
nicht angefangen
{% endif %}
</span>
<span data-lang="EN">
{% if learning_path.progress > 0 %}
{{learning_path.progress}}% complete
{% else %}
not started
{% endif %}
</span>
</div>
</div>
</div>

View File

@ -0,0 +1,104 @@
{% assign session_element_type = "a" %}
{% if learning_path.enrolled? and training_session.unlocked? %}
{% assign session_element_type = "a" %}
{% else %}
{% assign session_element_type = "div" %}
{% endif %}
{% assign lp_session_required = 1 %}
{% if training_session.optional? %}
{% assign lp_session_required = 0 %}
{% endif %}
{% assign training_session_time = training_session.time | split: " - " %}
{% assign start_time = training_session_time | slice: 0 | join: "" %}
{% if start_time contains "PM" %}
{% assign start_time = start_time | remove: " PM" %}
{% assign split_start_time = start_time | split: ":" %}
{% assign start_time_hour = split_start_time | slice: 0 | join: "" | abs | plus: 12 %}
{% assign start_time_mins = split_start_time | slice: 1 | join: "" %}
{% elsif start_time contains "AM" %}
{% assign start_time = start_time | remove: " AM" %}
{% endif %}
{% assign end_time = training_session_time | slice: 1 | join: "" %}
{% if end_time contains "PM" %}
{% assign end_time = end_time | remove: " PM" %}
{% assign split_end_time = end_time | split: ":" %}
{% assign end_time_hour = split_end_time | slice: 0 | join: "" | abs | plus: 12 %}
{% assign end_time_mins = split_end_time | slice: 1 | join: "" %}
{% elsif end_time contains "AM" %}
{% assign end_time = end_time | remove: " AM" %}
{% endif %}
{% if learning_path.enrolled? and training_session.unlocked? %}
<div class="np-learning-path-outline-bar np-hidden-mobile" style='display: none;'></div>
<div class="np-card np-learning-path-session-card lp-course" data-required="{{lp_session_required}}">
<a
class="np-learning-path-outline-item np-card-container"
href="{% route training_session, id: training_session.id %}"
>
<div class="np-card-content np-card-padding">
<div class="np-events-content-date-wrapper">
<div class="np-events-content-date np-button-background-color">
<div class="np-events-content-month">
{{ training_session.month }}
</div>
<div class="np-events-content-day">
{{ training_session.day }}
</div>
</div>
{% if training_session.optional? %}
<div class="np-optional-ribbon">
{% t shared.optional %}
</div>
{% endif %}
</div>
<div class="np-learning-path-outline-content">
<div class="np-learning-path-outline-name np-top-title">{{ training_session.name }}</div>
<div class="np-learning-path-outline-caption">
{% assign instructor_name = training_session.instructors | split: " " %}
{{ instructor_name | slice: 0 }}
</div>
<div class="np-events-content-time np-learning-path-outline-time np-button-color">
{{start_time_hour}}:{{start_time_mins}} - {{end_time_hour}}:{{end_time_mins}} Uhr
</div>
</div>
<div class="register-button">
<span data-lang="DE">Registrieren</span>
<span data-lang="EN">Register</span>
</div>
</div>
</a>
</div>
{% else %}
<div class="np-card np-learning-path-session-card lp-course">
<div class="np-learning-path-outline-item np-card-container np-learning-path-outline-inactive-item">
<div class="np-card-content np-card-padding">
<div class="np-events-content-date-wrapper">
<div class="np-events-content-date np-button-background-color">
<div class="np-events-content-month">
{{ training_session.month }}
</div>
<div class="np-events-content-day">
{{ training_session.day }}
</div>
</div>
{% if training_session.optional? %}
<div class="np-optional-ribbon">
{% t shared.optional %}
</div>
{% endif %}
</div>
<div class="np-learning-path-outline-content">
<div class="np-learning-path-outline-name np-top-title">{{ training_session.name }}</div>
<div class="np-learning-path-outline-caption">{{ training_session.caption }}</div>
</div>
</div>
</div>
</div>
{% endif %}

View File

@ -0,0 +1,13 @@
<div class="np-card np-search-zero-state">
<div class="np-card-container">
<div class="np-card-content np-card-content-vertical np-search-zero-state-card">
<h3 class="np-search-zero-state-title">
Nichts gefunden
</h3>
<div class="np-search-zero-state-subtitle">
Entschuldigung, wir konnten keine Übereinstimmungen finden. Bitte versuchen Sie es mit einem anderen Begriff.
</div>
<div class="np-search-zero-state-image"></div>
</div>
</div>
</div>

View File

@ -0,0 +1,37 @@
<nav class="np-sub-navigation">
<div class="np-sub-navigation-content">
<div class="np-sub-navigation-content-item trainings-sub-link np-sub-navigation-content-item-inactive">
<a class="np-sub-navigation-content-item-link subnav-item" href="/app/courses">
<i class="far fa-home-lg-alt np-button-color np-sub-navigation-content-item-icon" aria-hidden="true"></i>
<div class="oa-sub-navigation-content-item-label">
Trainings
</div>
</a>
<div class="np-sub-navigation-content-item-bar np-button-background-color"></div>
</div>
<div class="np-sub-navigation-content-item learning-paths-sub-link np-sub-navigation-content-item-inactive">
<a class="np-sub-navigation-content-item-link subnav-item" href="/app/learning_paths/a528e5fd-cd1c-4323-865e-db795895e2a3">
<i class="fa fa-tasks np-button-color np-sub-navigation-content-item-icon" aria-hidden="true"></i>
<div class="oa-sub-navigation-content-item-label">
Lernwege
</div>
</a>
<div class="np-sub-navigation-content-item-bar np-button-background-color"></div>
</div>
</div>
</nav>
<script>
const currentSubPath = window.location.pathname;
if (currentSubPath == "/app/courses") {
$(".trainings-sub-link").addClass("np-sub-navigation-content-item-active")
$(".trainings-sub-link").removeClass("np-sub-navigation-content-item-inactive")
} else if (currentSubPath.includes("/app/learning_paths")) {
$(".learning-paths-sub-link").addClass("np-sub-navigation-content-item-active")
$(".learning-paths-sub-link").removeClass("np-sub-navigation-content-item-inactive")
}
</script>

View File

@ -0,0 +1,11 @@
<div>
{% if training_events.available and training_events.available.any? %}
<div class="blocks-layout">
{% for training_event in training_events.available %}
{% include "cards_training_event", training_event: training_event, card_classes: "col-x-sm-6 col-sm-6 col-md-4" %}
{% endfor %}
</div>
{% else %}
{% include "training_events_zero_state" %}
{% endif %}
</div>

View File

@ -0,0 +1,45 @@
<div class="dropdown dropdown-calendar">
<button
class="np-button np-button-big dropdown-calendar-button"
data-toggle-class="is-open"
data-toggle-escape
data-toggle-outside
data-toggle-target-next
type="button"
>
<span data-lang="DE">{% t .add_to_calendar %}</span>
<span data-lang="EN">Add to calendar</span>
<i class="fas fa-chevron-down dropdown-calendar-button-chevron" aria-hidden="true"></i>
</button>
<ul class="dropdown-calendar-menu">
<li class="dropdown-calendar-item">
<a
class="dropdown-calendar-item-element np-button-background-color-on-hover np-button-font-color-on-hover"
href="{{ training_session.google_calendar_url }}"
target="_blank"
>
{% t .google_calendar %}
</a>
</li>
<li class="dropdown-calendar-item">
<a
class="dropdown-calendar-item-element np-button-background-color-on-hover np-button-font-color-on-hover"
href="{{ training_session.outlook_calendar_url }}"
target="_blank"
>
<span data-lang="DE">{% t .outlook_calendar %}</span>
<span data-lang="EN">Calendar for Outlook.com</span>
</a>
</li>
<li class="dropdown-calendar-item">
<a
class="dropdown-calendar-item-element np-button-background-color-on-hover np-button-font-color-on-hover"
href="{{ training_session.ical_calendar_url }}"
target="_blank"
>
{% t .ical_calendar %}
</a>
</li>
</ul>
</div>

View File

@ -0,0 +1,34 @@
<div class="np-training-session-cta">
<div class="np-training-session-cta-buttons">
<form
action="{% route training_session_registration, id: training_session.id %}"
method="post"
>
{% form_authenticity_token %}
{% if training_session.internal? and training_session.approved? %}
{% if features.training_events_google_calendar? %}
{% include "training_session_calendars" %}
<button type="submit" class="np-button np-button-big np-button-secondary">
<span data-lang="DE">{% t .unregister %}</span>
<span data-lang="EN">Unregister</span>
</button>
{% else %}
<button type="submit" class="np-button-font-color np-button np-button-big">
<span data-lang="DE">{% t .unregister %}</span>
<span data-lang="EN">Unregister</span>
</button>
{% endif %}
<input type="hidden" name="_method" value="delete" />
{% endif %}
{% if training_session.not_registered? %}
<button type="submit" class="np-top-button np-button np-button-big">
<span data-lang="DE">{% t .register %}</span>
<span data-lang="EN">Register</span>
</button>
{% endif %}
</form>
</div>
</div>

View File

@ -0,0 +1,12 @@
<div class="np-card-training-session-date-bar"></div>
<div class="np-card-training-session-date-day">
{{ training_session.day }}
</div>
<div class="card__month-year-container">
<div class="np-card-training-session-date-month">
{{ training_session.month }}
</div>
<div class="np-card-training-session-date-year">
{{ training_session.year }}
</div>
</div>

View File

@ -0,0 +1,77 @@
{% include "header", current_page_orgin: "training_events" %}
<main class="np-main np-page-container np-training-session">
<div class="blocks-layout">
<div class="col-md-8">
<div class="np-card">
<div class="np-card-container details-card__card-container">
<div class="np-resource-header details-card__header np-card-padding-dynamic">
<div class="np-top-title">
{{ training_event.title }}
</div>
<div class="np-top-vocabulary">
{% case training_event.event_type %}
{% when "online" %}
<i class="fa fa-laptop np-training-session-icon" aria-hidden="true"></i>
<span data-lang="DE">{% t shared.event_types, key: training_event.event_type %}</span>
<span data-lang="EN">Online Event</span>
{% when "in_person" %}
<i class="fa fa-users-class np-training-session-icon" aria-hidden="true"></i>
<span data-lang="DE">{% t shared.event_types, key: training_event.event_type %}</span>
<span data-lang="EN">In-Person Event</span>
{% endcase %}
</div>
</div>
<div class="np-divider"></div>
<div class="np-card-padding-dynamic details-card__card-content">
{% if training_event.description and training_event.description.size > 0 %}
{% include "training_session_description" %}
{% endif %}
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="blocks-layout">
<div class="np-card col-sm-6 col-md-12">
<div class="np-card-container">
<div class="np-card-content np-card-content-vertical np-card-padding">
{% include "training_session_details" %}
{% include "training_session_cta" %}
</div>
</div>
</div>
<div class="col-sm-6 col-md-12">
<div class="np-training-session-sessions-title">
<span data-lang="DE">{% t shared.more_sessions %}</span>
<span data-lang="EN">More sessions</span>
</div>
{% if training_event.sessions and training_event.sessions.size > 1 %}
{% include "training_session_more_sessions" %}
{% else %}
<div class="np-training-session-zero-state">
<img
alt="{% t .empty %}"
class="np-zero-state-training-sessions"
/>
<div class="np-training-session-zero-state-text">
<span data-lang="DE">{% t .empty %}</span>
<span data-lang="EN">There are currently no other sessions for this event.</span>
</div>
</div>
{% endif %}
</div>
</div>
</div>
</div>
</main>
{% include "footer" %}

View File

@ -0,0 +1,83 @@
{% assign training_session_time = training_session.time_period | split: " - " %}
{% assign start_time = training_session_time | slice: 0 | join: "" %}
{% if start_time contains "PM" %}
{% assign start_time = start_time | remove: " PM" %}
{% assign split_start_time = start_time | split: ":" %}
{% assign start_time_hour = split_start_time | slice: 0 | join: "" | abs | plus: 12 %}
{% assign start_time_mins = split_start_time | slice: 1 | join: "" %}
{% elsif start_time contains "AM" %}
{% assign start_time = start_time | remove: " AM" %}
{% endif %}
{% assign end_time = training_session_time | slice: 1 | join: "" %}
{% if end_time contains "PM" %}
{% assign end_time = end_time | remove: " PM" %}
{% assign split_end_time = end_time | split: ":" %}
{% assign end_time_hour = split_end_time | slice: 0 | join: "" | abs | plus: 12 %}
{% assign end_time_mins = split_end_time | slice: 1 | join: "" %}
{% elsif end_time contains "AM" %}
{% assign end_time = end_time | remove: " AM" %}
{% endif %}
<div class="np-card-training-session-date">
{% include "training_session_date", training_session: training_session %}
{% if training_session.approved? %}
<div class="session-date__other-info-container np-training-session-cta-note np-alert-success">
<div class="session-date__other-info-wrapper">
<i class="far fa-check np-training-session-icon" aria-hidden="true"></i>
<span>You're registered!</span>
</div>
</div>
{% elsif training_session.pending? %}
<div class="session-date__other-info np-training-session-cta-note np-alert-error">
<div class="session-date__other-info-wrapper">
<span>Pending waiting approval</span>
</div>
</div>
{% elsif training_session.denied? %}
<div class="session-date__other-info np-training-session-cta-note np-alert-error">
<div class="session-date__other-info-wrapper">
<span>Denied contact your academy admin</span>
</div>
</div>
{% elsif training_session.too_late? %}
<div class="session-date__other-info np-training-session-cta-note np-alert-error">
<div class="session-date__other-info-wrapper">
<span>Too late meeting started</span>
</div>
</div>
{% elsif training_session.no_seats? %}
<div class="session-date__other-info np-training-session-cta-note np-alert-error">
<div class="session-date__other-info-wrapper">
<span>No seats available</span>
</div>
</div>
{% endif %}
</div>
<div class="training-session__details">
<div class="np-training-session-time">
<i class="fa fa-clock np-training-session-icon" aria-label="Event Time"></i>
{{start_time_hour}}:{{start_time_mins}} - {{end_time_hour}}:{{end_time_mins}} Uhr
</div>
<div class="np-training-session-location">
{% if training_session.location %}
<i class="fa fa-map-marker-alt np-training-session-icon" aria-label="Event Location"></i>
{{ training_session.location }}
{% elsif training_session.session_url %}
<i class="fa fa-globe np-training-session-icon" aria-label="Event URL"></i>
<a href="{{ training_session.session_url }}" class="np-button-color" target="_blank" >
{{ training_session.session_url }}
</a>
{% endif %}
</div>
{% if training_session.instructor and training_session.instructor.size > 0 %}
<div>
<i class="fa fa-chalkboard-teacher np-training-session-icon" aria-label="Instructor"></i>
{% assign instructor_name = training_session.instructor | split: " " %}
{{ instructor_name | slice: 0 }}
</div>
{% endif %}
</div>

View File

@ -0,0 +1,26 @@
{% include "header" %}
{% include "english_banner" %}
<main class="np-main np-courses np-subpage-container">
<h1 class="np-resource-title">
<span data-lang="DE">Deine Trainings für mehr Jobauswahl</span>
<span data-lang="EN">Your training for more job choices</span>
</h1>
{% comment %} <br>
{% capture label %}{% t shared.filters.by_category %}{% endcapture %}
{% if courses.in_catalog.any? %}
{%
include "filter_dropdown",
filters: courses.filters,
key: "category_uuid",
label: label
%}
{% endif %} {% endcomment %}
{% include "courses_catalog" %}
</main>
{% include "footer" %}
<style>
.np-resource-title {
text-transform:none;
}
</style>

View File

@ -0,0 +1,75 @@
{% comment %} Skip cover page is course contains on the job category {% endcomment %}
{% for cat in course.categories %}
{% assign cat_name = cat.name | downcase %}
{% if cat_name == "on-the-job" or cat.id == "40b1f3d7-6faf-4d54-a74f-92d330831728" %}
{% if course.enrolled? %}
<script>window.location.replace("{% route course_viewer, course_id: course.id, learning_path_id: params.learning_path_id %}")</script>
{% else %}
<script>window.location.replace("{% route course_enrollment, code: course.enrollment_code %}")</script>
{% endif %}
{% endif %}
{% endfor %}
{% if course.properties.skip_course_cover_page == true %}
{% if course.enrolled? %}
<script>window.location.replace("{% route course_viewer, course_id: course.id, learning_path_id: params.learning_path_id %}")</script>
{% else %}
<script>window.location.replace("{% route course_enrollment, code: course.enrollment_code %}")</script>
{% endif %}
{% endif %}
{% include "header", current_page_orgin: "catalog" %}
<main class="np-main np-page-container page--course-overview">
{% comment %} Get the full size background image by removing the modifier from the URL {% endcomment %}
{% assign course_image_full_size = course.image_url | replace: '/resize=width:820,height:500,fit:crop/', '/' %}
<div class="np-card">
<div class="np-card-container">
<div class="np-resource-header details-card__header np-card-padding-dynamic">
{% include "course_header" %}
</div>
<div class="np-divider"></div>
<div class="details-card__card-content np-card-padding-dynamic">
{% if course.full_description and course.full_description.size > 0 %}
{% include "course_description" %}
{% endif %}
{% if course.instructors and course.instructors.any? %}
<div class="np-card-content-divider">
{% include "course_instructors" %}
</div>
{% endif %}
{% include "course_outline" %}
{% if course.events and course.events.any? %}
<div class="np-card-content-divider">
{% include "course_events" %}
</div>
{% endif %}
{% if course.enrolled? and course.started? %}
{% include "course_progress_and_cta" %}
{% else %}
{% include "course_cta_button" %}
{% endif %}
</div>
</div>
</div>
</main>
{% include "footer" %}
<style>
.np-main {
background:#8B78FA;
}
.np-top-button.disabled {
background-color: #ddd;
cursor: text;
}
</style>

View File

@ -0,0 +1,20 @@
{% include "header" %}
{% comment %} {% include "sub_navigation", current_page: "/app/courses" %} {% endcomment %}
<main class="np-main np-courses np-subpage-container">
<h1 class="np-resource-title">
Deine Trainings für mehr Jobauswahl
</h1>
<br>
{% include "courses_index", card_classes: "col-xs-12 col-sm-6 col-lg-4 np-stretch-content" %}
</main>
{% include "footer" %}
<style>
.np-resource-title {
text-transform:none;
}
</style>
{% comment %} <script>
$('.np-card-image').freezeframe({'animation_play_duration': 2500, 'non_touch_device_trigger_event': 'hover'})
</script> {% endcomment %}

View File

@ -0,0 +1,3 @@
<script>
window.location.replace("/app/courses")
</script>

View File

@ -0,0 +1,393 @@
{% assign isAuthenticatedUser = false %}
{% for group in current_person.groups %}
{% if group.name == "All Users" or group.id == "6331d115-ea74-418a-99b2-af5c81208fe1" or group.name == "Internal
Zenjob Testing" or group.id == "940a5d24-32af-45f1-8ed4-8a6b4689d9c9" %}
{% assign isAuthenticatedUser = true %}
{% endif %}
{% endfor %}
{% if current_person.email contains "+preview" %}
{% assign isAuthenticatedUser = true %}
{% endif %}
{% unless isAuthenticatedUser %}
<main class="np-main np-homepage unauthorized">
<div class="np-homepage-content">
<div class="np-homepage-hero-content">
<div class="np-homepage-headline" style="color: #fff">
{{ homepage.headline }}
</div>
<div class="np-homepage-subheadline">
Entschuldigung! Es scheint, dass deine E-Mail-Adresse {{current_person.email}} nicht den richtigen Zugang erhalten hat. Es kann nach der Registrierung bis zu 24h dauern, bis du freigeschalten wirst. Sollte das Problem danach weiterhin bestehen, wende dich an talents@zenjob.com, um den Zugang zu den vollständigen Lerninhalten anzufragen.
</div>
</div>
</div>
</main>
{% endunless %}
{% if isAuthenticatedUser %}
{% assign catalog_courses = courses.in_catalog %}
{% include "header", current_page_orgin: "false" %}
<main class="np-main np-homepage">
<div class="np-homepage-content">
<div class="np-homepage-hero-content">
<div class="np-homepage-headline" style="color: #fff">
<span data-lang="DE">{{ homepage.headline }}</span>
<span data-lang="EN">Welcome to our Zenjob Online Campus!</span>
</div>
<div class="np-homepage-subheadline">
<span data-lang="DE">Hallo {{ current_person.first_name }}, hier bereiten wir dich auf alles vor, was du für deine erste Schicht als
<div class="dropdown homepage-content-dropdown">
<button class="dropbtn">Job auswählen</button>
<div class="dropdown-content">
<a href="#kassierer-in" data-category-name="Kassierer/in">Kassierer*in</a>
<a href="#kellner-in" data-category-name="Kellner/in">Kellner*in</a>
<a href="#warenverräumer-in" data-category-name="Warenverräumer/in">Warenverräumer*in</a>
</div>
</div>
wissen musst.
</span>
<span data-lang="EN">Hello {{ current_person.first_name }}, here we prepare you for everything you need to know for your first shift as a
<div class="dropdown homepage-content-dropdown">
<button class="dropbtn">select job</button>
<div class="dropdown-content">
<a href="#kassierer-in" data-category-name="Kassierer/in">Cashier</a>
<a href="#kellner-in" data-category-name="Kellner/in">Waitress</a>
<a href="#warenverräumer-in" data-category-name="Warenverräumer/in">Goods mover</a>
</div>
</div>
</span>
</div>
</div>
<div class="homepage-cards-section row np-max-width">
{% for course in catalog_courses %}
{% if course.properties.homepage_course %}
{% for cat in course.categories %}
{% if cat.id == "087ea56d-888b-4e0f-af1f-68627318c841" or cat.id == "9be55234-19c5-4df4-bd1d-03e93f0faf83" or cat.id == "6580e10e-eacf-402d-a330-51d202721cce" or cat.id == "a63019c7-0a46-40bd-bc1b-935c887a4380" or cat.name == "Warenverräumer/in" or cat.name == "Kellner/in" or cat.name == "Kassierer/in" %}
<div class="col-xs-12 col-sm-6 col-md-3 homepage-card-column" style="display:none;" data-category="{{cat.id}}" data-category-name="{{cat.name}}" data-lang="{{course.properties.course_language}}">
<a href="{% route course, id: course.id %}" class="homepage-card">
<div class="homepage-card-content">
<div class="homepage-card-img">
<img src="https://s3.amazonaws.com/static.northpass.com/zenjob/FINAL+-+Zenjob+(Purple+Cashier).png" alt="">
</div>
<div class="homepage-card-title-wrapper">
<div>{{course.name}}</div>
</div>
</div>
</a>
</div>
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% for learning_path in learning_paths.available %}
{% assign learning_path_lang = "DE" %}
{% for learning_path_cat in learning_path.categories %}
{% if learning_path_cat.name == "English" %}
{% assign learning_path_lang = "EN" %}
{% endif %}
{% endfor %}
{% for learning_path_cat in learning_path.categories %}
{% if learning_path_cat.id == "087ea56d-888b-4e0f-af1f-68627318c841" or learning_path_cat.id == "9be55234-19c5-4df4-bd1d-03e93f0faf83" or learning_path_cat.id == "6580e10e-eacf-402d-a330-51d202721cce" or learning_path_cat.id == "a63019c7-0a46-40bd-bc1b-935c887a4380" or learning_path_cat.name == "Warenverräumer/in" or learning_path_cat.name == "Kellner/in" or learning_path_cat.name == "Kassierer/in" %}
<div class="col-xs-12 col-sm-6 col-md-3 homepage-card-column" style="display:none;" data-category="{{learning_path_cat.id}}" data-category-name="{{learning_path_cat.name}}" data-lang="{{learning_path_lang}}">
<a href="{% route learning_path, id: learning_path.id %}" class="homepage-card">
<div class="homepage-card-content">
<div class="homepage-card-img">
<img src="https://s3.amazonaws.com/static.northpass.com/zenjob/opened-book.png" alt="">
</div>
<div class="homepage-card-title-wrapper">
<div>{{learning_path.name}} <span>(optional)</span></div>
</div>
</div>
</a>
</div>
{% endif %}
{% endfor %}
{% endfor %}
</div>
</div>
</div>
</main>
{% include "footer" %}
{% endif %}
<style>
.np-header {
background: transparent;
}
main.np-homepage {
background-color: rgba(118,37,247,1);
background: linear-gradient(90deg, rgba(62,17,145,1) 0%, rgba(118,37,247,1) 50%, rgba(139,120,250,1) 100%);
background-size: cover;
animation: gradient 15s ease-in-out infinite;
height: 100%;
padding-top: 100px;
margin-bottom:0;
position: absolute;
width: 100%;
top: 0;
left: 0;
}
main.np-homepage.unauthorized {
padding-top:0;
}
.np-homepage-content {
align-items: center;
display: flex;
position: relative;
height: 100%;
flex-direction: column;
padding-bottom: 60px;
}
.unauthorized .np-homepage-content {
justify-content:center;
}
.np-homepage-hero-content {
position: unset;
padding-bottom: 2.5rem;
text-align: center;
}
.np-homepage-content .np-homepage-headline {
font-size: 1.75rem;
color: #fff;
line-height: 1.1;
}
.np-homepage-content .np-homepage-subheadline {
font-size: 1.25rem;
line-height: 1.1;
color: #fff;
opacity: 100%;
}
@keyframes gradient {
0% {
background-position: 0% 79%;
}
50% {
background-position: 100% 22%;
}
100% {
background-position: 0% 79%;
}
}
.homepage-content-dropdown {
margin-right: 13px;
}
.dropbtn {
background-color: transparent;
color: #fff;
border: black;
text-decoration: underline;
font-weight: 700;
position:relative;
cursor:pointer;
padding: 0 4px 0 0;
}
.dropbtn:after {
content:"▼";
position:absolute;
right: -13px;
top: 8px;
font-size: 14px;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #E1E2E5;
color:#707483;
min-width: 100%;
box-shadow: 0px 8px 8px 0px rgba(0,0,0,0.2);
z-index: 100;
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdown:hover .dropdown-content {display: block;}
.dropdown:hover .dropbtn {background-color: #635bff60;}
/* CARDS SECTION */
.homepage-cards-section {
padding: 0 24px;
width:100%;
}
.homepage-card {
margin: 0 auto 24px;
max-width: 350px;
text-decoration:none;
display:block;
}
.homepage-card-content {
display:flex;
align-items:center;
background-color: #fff;
border-radius: 16px;
box-shadow: rgb(141 148 158 / 30%) 0px 4px 12px;
}
.homepage-card-title-wrapper {
width:65%;
color: #3E1191;
font-weight:700;
text-align:center;
padding:16px;
transition:all 0.2s;
}
.homepage-card:hover .homepage-card-title-wrapper {
color:#7625F7;
}
.homepage-card-img {
width:45%;
border-right: 1px solid #e0f3ff;
padding:24px 16px;
text-align:center;
}
.homepage-card-img img {
max-width: 90px;
width: 100%;
height: auto;
}
@media (min-width:768px) {
.np-homepage-hero-content {
padding-top: 5rem;
padding-bottom: 3rem;
max-width:1170px;
}
.np-homepage-content .np-homepage-headline {
font-size: 2.5rem;
}
.np-homepage-content .np-homepage-subheadline {
font-size: 2rem;
}
.homepage-content-dropdown {
margin-right: 22px;
}
.dropbtn:after {
right: -21px;
top: 12px;
font-size: 20px;
}
.homepage-cards-section {
margin-top: 16px;
}
.homepage-card {
max-width: 275px;
height: 100%;
margin-bottom: 0;
}
.homepage-card-content {
flex-direction: column-reverse;
height: 100%;
}
.homepage-card-title-wrapper {
font-size: 18px;
line-height: 22px;
width:100%;
border-bottom:1px solid #e0f3ff;
flex: 1;
}
.homepage-card-img {
width: 100%;
border: none;
padding: 40px 16px;
}
.homepage-card-img img {
width: 120px;
height:120px;
max-width:120px;
}
}
</style>
<script>
$("document").ready(function() {
if (window.location.hash) {
filterCoursesByHash(window.location.hash)
} else {
//$(".homepage-card-column[data-category='087ea56d-888b-4e0f-af1f-68627318c841']").show()
if ($("body").attr("data-lang") == "DE") {
$(".homepage-card-column[data-category-name='Kassierer/in'][data-lang='DE']").show()
} else if ($("body").attr("data-lang") == "EN") {
$(".homepage-card-column[data-category-name='Kassierer/in'][data-lang='EN']").show()
}
}
})
$(".dropdown-content a").click(function() {
$(".dropbtn").text($(this).text())
filterCoursesBySelectedJob($(this))
})
function filterCoursesBySelectedJob(selection) {
const selectedCategory = $(selection).data("category-name")
$(".homepage-card-column").hide()
if ($("body").attr("data-lang") == "DE") {
$(`.homepage-card-column[data-category-name='${selectedCategory}'][data-lang='DE']`).show()
} else if ($("body").attr("data-lang") == "EN") {
$(`.homepage-card-column[data-category-name='${selectedCategory}'][data-lang='EN']`).show()
}
}
function filterCoursesByHash(urlHash) {
if ($("body").attr("data-lang") == "DE") {
$("span[data-lang='DE'] .dropdown-content a").each(function() {
if ($(this).attr('href') == urlHash) {
$("span[data-lang='DE'] .dropbtn").text($(this).text())
filterCoursesBySelectedJob($(this))
}
})
} else if ($("body").attr("data-lang") == "EN") {
$("span[data-lang='EN'] .dropdown-content a").each(function() {
if ($(this).attr('href') == urlHash) {
$("span[data-lang='EN'] .dropbtn").text($(this).text())
filterCoursesBySelectedJob($(this))
}
})
}
}
</script>

View File

@ -0,0 +1,157 @@
{% include "header", current_page_orgin: "learning_paths" %}
{% assign lp_items_all_optional = true %}
{% for item in learning_path.items %}
{% unless item.optional? %}
{% assign lp_items_all_optional = false %}
{% endunless %}
{% endfor %}
<main class="np-main np-page-container page--learning-path-overview">
{% assign learning_path_image_full_size = learning_path.image_url | replace: '/resize=width:820,height:500,fit:crop/', '/' %}
<div class="blocks-layout">
<div class="col-md-5 col-lg-6">
<div class="np-card">
<div class="details-card__card-container np-card-container">
<div class="np-resource-header details-card__header np-card-padding-dynamic">
<div class="np-top-title">
{{ learning_path.name }}
</div>
</div>
<div class="np-divider"></div>
<div class="details-card__card-content np-card-padding-dynamic">
{% if learning_path.description and learning_path.description.size > 0 %}
{% include "learning_path_description" %}
{% endif %}
{% if learning_path.instructors and learning_path.instructors.any? %}
<div class="np-card-content-divider">
{% include "learning_path_instructors" %}
</div>
{% endif %}
</div>
</div>
</div>
</div>
<div class="col-md-7 col-lg-6">
<div class="cta__container cta--outline {% if lp_items_all_optional %}all-optional-items{% endif %}">
{% include "learning_path_progress_and_cta" %}
</div>
{% include "learning_path_outline" %}
</div>
</div>
</main>
{% include "footer" %}
<style>
.cta__container.cta--outline.all-optional-items {
display:none;
}
.page--learning-path-overview {
background: #8B78FA;
}
.np-learning-path-outline-item .np-card-container {
flex-direction: column;
overflow: hidden;
}
.np-learning-path-outline-item .card__image {
width:100%;
padding:16px;
text-align:center;
}
.np-learning-path-outline-item .card__image > img {
max-width:100%;
max-height:200px;
}
.np-learning-path-outline-item .card__image .np-card-ribbon {
right:22px;
top:22px;
}
.np-learning-path-outline-content {
margin-left: 0;
padding: 0 16px 16px;
}
.np-learning-path-outline-item .np-card-content-title {
font-size:18px;
margin-bottom: 12px;
}
.outline-card__icon-container {
width: auto;
border-radius: 30px;
padding: 6px 16px;
min-width: 115px;
text-align: center;
margin-right:0;
}
.np-learning-path-outline-item .np-card-content-progress {
font-size:14px;
}
@media (min-width:768px) {
.np-learning-path-outline-item .np-card-container {
flex-direction: row;
align-items: stretch;
}
.np-learning-path-outline-item .card__image {
width:40%;
max-width: 300px;
}
.np-learning-path-outline-item .card__image > img {
max-height:130px;
}
.np-learning-path-outline-content {
padding: 16px;
display:flex;
flex-direction:row;
justify-content: space-between;
height:auto;
}
.np-learning-path-outline-content .text-wrapper {
display:flex;
flex-direction:column;
}
.np-learning-path-outline-item .np-card-content-title {
font-size:16px;
flex:1;
}
.outline-card__icon-container {
margin-left:16px;
}
}
@media (min-width:1400px) {
.np-learning-path-outline-item .np-card-content-title,
.np-learning-path-session-card .np-learning-path-outline-name {
font-size:18px;
}
.np-learning-path-outline-item .np-card-content-progress {
font-size: 16px;
}
}
</style>

View File

@ -0,0 +1,74 @@
{% include "header" %}
<main class="np-main np-learning-paths np-subpage-container">
{% include "learning_paths_index", items: learning_paths.available %}
</main>
{% include "footer" %}
<style>
body[data-lang='EN'] .card-learning-path[data-lang='DE'],
body[data-lang='DE'] .card-learning-path[data-lang='EN'] {
display: none !important;
}
body[data-lang='EN'] .card-learning-path[data-lang='EN'],
body[data-lang='DE'] .card-learning-path[data-lang='DE'] {
display: block !important;
}
.card-learning-path[data-lang='DE'] {display:block;}
.card-learning-path[data-lang='EN'] {display:none;}
.np-learning-paths {
background: #8B78FA;
}
.np-resource-title {
color:#fff;
}
.np-learning-paths-resources {
max-width: 1200px;
}
.np-learning-paths-resources .np-card-container {
overflow:hidden;
}
.np-learning-paths-resources .image-wrapper {
position: relative;
}
.np-learning-paths-resources .image-wrapper img {
width:100%;
height:100%;
}
.np-learning-paths-resources .np-card-ribbon {
position: absolute;
right: 16px;
top: 12px;
}
.np-learning-paths-resources .np-card-content-title {
font-size:18px;
}
@media screen and (min-width: 768px) {
.np-learning-paths .np-learning-path-image {
min-height: 300px;
}
.np-learning-paths-resources .image-wrapper {
width: 35%;
}
.np-learning-paths-resources .np-card-text-wrapper {
width:65%;
}
.np-learning-paths-resources .np-card-content-title {
font-size:24px;
}
}
</style>

View File

@ -0,0 +1,57 @@
{% include "header" %}
<main class="np-main np-courses np-subpage-container">
<h1 class="np-resource-title">
On-The-Job Videos
</h1>
<br>
{% assign num_of_video_courses = 0 %}
{% if courses.in_catalog.any? %}
<div class="np-catalog-courses row row-with-thumbnails">
{% for course in courses.in_catalog %}
{% for cat in course.categories %}
{% if cat.id == "40b1f3d7-6faf-4d54-a74f-92d330831728" or cat.name == "On-The-Job" %}
<div class="col-xs-12 col-md-6 col-lg-4 np-stretch-content video-column" data-lang="{{course.properties.course_language}}">
{% include "cards_course" with course %}
</div>
{% assign num_of_video_courses = num_of_video_courses | plus: 1 %}
{% endif %}
{% endfor %}
{% endfor %}
</div>
{% else %}
{% comment %} {% capture message %}
{% t shared.zero_state.courses.catalog,
key: current_school.course_vocabulary
%}
{% endcapture %} {% endcomment %}
<div class="np-dashboard-resources-container">
<div class="np-zero-state-text">
<p> {% t shared.zero_state.courses.catalog,
key: current_school.course_vocabulary
%}</p>
</div>
<img class="np-zero-state-courses" />
</div>
{% endif %}
{% if num_of_video_courses == 0 %}
<div class="np-dashboard-resources-container">
<div class="np-zero-state-text">
<p> {% t shared.zero_state.courses.catalog,
key: current_school.course_vocabulary
%}</p>
</div>
<img class="np-zero-state-courses" />
</div>
{% endif %}
</main>
{% include "footer" %}
<style>
.np-resource-title {
text-transform:none;
}
</style>

View File

@ -0,0 +1,58 @@
{% include "header" %}
<main class="np-main np-search np-subpage-container np-max-width">
<div class="np-resource-title">
{% t .title %}
</div>
<div class="np-search-header">
<div class="np-resource-subtitle">
{% t .showing %}
<span class="np-resource-subtitle-number">{{ results.count }}</span>
{% t .results_for %}
<span class="np-button-color">"{{ results.term }}"</span>
</div>
{% capture label %}{% t shared.filters.by_type %}{% endcapture %}
{%
include "filter_dropdown",
filters: results.filters,
key: "type",
label: label
%}
</div>
{% if results.items.any? %}
{% render "search_result" for results.items as result %}
{% else %}
{% include "search_zero_state" %}
{% endif %}
</main>
{% include "footer" %}
<style>
.np-search-result {
height: auto;
min-height: auto;
}
.np-search-result a {
text-decoration: none;
}
.np-search-result .np-card-content {
flex-direction: row;
padding:0;
}
.np-search-result-snippet {
overflow: hidden;
font-size: 1rem;
line-height: 1.5rem;
}
.np-search-result-image {
margin-right:12px;
}
@media (min-width:768px) {
.np-search-result-image {
margin-right:24px;
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,15 @@
{% include "header", current_page_orgin: "training_events" %}
<main class="np-main np-training-events np-subpage-container">
<div class="page__header-wrapper">
<h1 class="np-resource-title">
<span data-lang="DE">{% t .title %}</span>
<span data-lang="EN">Training Events</span>
</h1>
<div class="np-resource-subtitle">
<span data-lang="DE">{% t .subtitle %}</span>
<span data-lang="EN">Discover face-to-face and online events that help you maximize your learning success</span>
</div>
</div>
{% include "training_events_index" %}
</main>
{% include "footer" %}

View File

@ -0,0 +1 @@
{% include "training_session_desktop_view" %}

View File

@ -0,0 +1,89 @@
{% include "header" %}
<main class="np-main np-certificates np-subpage-container">
<h1 class="np-resource-title">
<span data-lang="DE">{{custom_page.headline}}</span>
<span data-lang="EN">Awards</span>
</h1>
<div class="np-resource-subtitle"></div>
<div class="badges-section">
<div class="row">
{% assign number_of_badges = 0 %}
{% for course in courses.in_catalog %}
{% unless course.properties.course_badge == "none" or course.properties.course_badge == "" %}
<div class="col-xs-12 col-sm-6 col-md-3 badge-column" data-lang="{{course.properties.course_language}}">
<a href="{% route course, id: course.id %}" class="badge-container">
<img src="{{course.properties.course_badge}}" class="{% if course.progress < 100 %}inactive{% endif %}" />
<div class="badge-course-title">{{course.name}}</div>
</a>
</div>
{% assign number_of_badges = number_of_badges | plus: 1 %}
{% endunless %}
{% endfor %}
{% if number_of_badges == 0 %}
<div class="np-dashboard-resources-container">
<img class="np-zero-state-courses" alt="" />
</div>
{% endif %}
</div>
</div>
</main>
{% include "footer" %}
<style>
body[data-lang='EN'] .badge-column[data-lang='DE'],
body[data-lang='DE'] .badge-column[data-lang='EN'] {
display: none !important;
}
body[data-lang='EN'] .badge-column[data-lang='EN'],
body[data-lang='DE'] .badge-column[data-lang='DE'] {
display: block !important;
}
.badge-column[data-lang='DE'] {display:block;}
.badge-column[data-lang='EN'] {display:none;}
.np-resource-title {
text-transform:none;
}
.badges-section {
margin-top:32px;
}
.badge-container {
text-align:center;
padding: 32px;
background: #fff;
box-shadow: rgb(141 148 158 / 80%) 0px 4px 12px;
border-radius: 16px;
margin: 0 16px 32px;
display: block;
text-decoration:none;
}
.badge-container img {
max-width:100%;
}
.badge-container img.inactive {
opacity: 0.4;
}
.badge-course-title {
line-height: 1.3;
color: #333333;
font-weight:700;
font-size: 20px;
}
@media (min-width:768px) {
.badge-course-title {
font-size: 24px;
}
}
</style>

View File

@ -112,7 +112,7 @@ page, etc.
## 04/06/2023
TODO: Ask if we can invite KC to their Wistia Project
DONE: Ask if we can invite KC to their Wistia Project
TODO: Create ExcelSheet for what Northpass needs to accurately update the SRT file.
WARN: Wants to start uploading within the week

View File

@ -125,7 +125,7 @@ Feedback:
- They need rich search (find across multiple platforms) and community functionality with experts and asking people for information.
- Taylor: challenges with reporting
TODO: Send extension contract for one-two months.
DONE: Send extension contract for one-two months.
Time line Needs (3 primary things):
@ -134,9 +134,9 @@ Time line Needs (3 primary things):
- Can Fuse transfer over progress data?
- Export CSVs per course? or Group?
DONE: Ask what the data set should be.
TODO: Ask Charlie for Course CSV (Just like Walmart) - Do it for BOTH academies, internal & external
DONE: Ask Charlie for Course CSV (Just like Walmart) - Do it for BOTH academies, internal & external
## 03/02/2023
### Data Extract Inquiry
TODO: Can we export all quiz data - questions and answers?
DONE: Can we export all quiz data - questions and answers?

View File

@ -315,4 +315,4 @@ DONE: Send Katlin and Erin examples of customized login pages, forms, learning p
## 04/04/2023
TODO: Reach out to Katlin regarding admin/embedded.
DONE: Reach out to Katlin regarding admin/embedded.

View File

@ -22,3 +22,19 @@ Actually start on 27th. 23rd is 100% ready and QA done. 27th are real people.
TODO: Confirm dates with Matt for Sales conference.
Matt to collect the rest of the videos etc for the course.
## 05/16/2023
### Running Launch
Greg - West Region Sales Manager
Matt - East ? Region Sales Manager
Diamond - Project Manager that will be building content. Originally from Japan.
Launch Date: June 5th.
Action items:
* NP Register & Homepage - Patrycja
* Courses from Norm and Matt
* Style Guide from Greg
* Certificate Creation - Greg/Matt

View File

@ -221,3 +221,11 @@ The only way to fix it its a requesting the user to clean cache in his browse
to app/courses, we will redirect him to sign_in page with 301. The browser will cache sign_in page, and the user will be automatically redirected to sign_in page when the user tries visit app/courses. This will cause a loop.
301 makes sense if the website they are accessing was permanently moved to other location. In this case they are trying to access courses list but are redirected to sign in page because they have to be authenticated before they can access it. If we redirected them from courses to sign in page with 301 the users browser would save the redirect location (sign in page) and whenever the user tried to access courses web page their browser would move them automatically to sign in page making courses page inaccessible for the user. The only way out of it is cleaning browsers cache. However once they cleared the cache they would remove the cookies as well. The cookies keep the information about users identity. This is helpful because with that they dont have to log in each time they visit our platform. But once the cookies are removed they would be again redirected to sign in page keeping them in this vicious circle. The reason to use 301 is to tell the browser “forget about this old location of the page you are accessing, this page is now here, also store this location and use it whenever you try to access this old location”.
## 05/16/2023
Search results - can't click enough Northpass
Only the title can be clicked when search results are returned. We need to be able to click the icon or description as well Not a problem - will get this started ASAP
DONE: Directly ask Chloe about the technical complications.

View File

@ -29,3 +29,17 @@ Campaign process, controlled by pre-sales marketing.
Gainsight could be a great option, but people have to meet "criteria" to send emails.
They use LeanData for checking for duplicates in their various systems. That's where Webhooks would be created.
## 05/16/2023
DONE: Remove Discover Catalog
TODO: Add new header image that Cherrill will send.
TODO: Make Footer similar to Terminus.com - at least the background as blue and text as white.
DONE: Remove sign in in header.
DONE: Move sub-nav to under header image
TODO: minimize padding around logo. Mimic sign-in/main page.
TODO: Addtl. Resources boxes same height
TODO: Feature course, view button align left
TODO: If no events, link saying "checkout upcoming events!" and link to /app/training_events
TODO: Filter Button to Terminus Green or Orange
TODO: Catalog: Sections divided by categories with headings at each section.

View File

@ -84,4 +84,4 @@ function csvReader(someArray, filePath) {
})
}
csvReader(array, "Untitled spreadsheet - harri-academy-people.csv")
csvReader(array, "Harri Activation Report - 2023.05.15.csv")