Finalized WALMART screenshots! Maybe It can be productized.
BIN
Custom_Templates/customer_templates/.DS_Store
vendored
@ -0,0 +1,38 @@
|
|||||||
|
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
|
||||||
|
<div class="np-card course-card">
|
||||||
|
<a class="np-card-container" href="{{ course_path }}">
|
||||||
|
{% 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">
|
||||||
|
<div class="np-card-content-subtitle">
|
||||||
|
{{ course.instructor_names }} {% unless course.instructor_names == "" and course.properties.course_length == "none" %}|{% endunless %} {% unless course.properties.course_length == "none" %} 30 Minutes{% endunless %}
|
||||||
|
</div>
|
||||||
|
<h3 class="np-card-content-title">
|
||||||
|
{{ course.name }}
|
||||||
|
</h3>
|
||||||
|
<div class="np-card-content-subtitle card-description">
|
||||||
|
{{course.full_description}}
|
||||||
|
</div>
|
||||||
|
<div class="np-card-content-footer">
|
||||||
|
{% comment %} <div class="np-card-content-progress np-button-color">
|
||||||
|
{% t shared.progress, count: course.progress %}
|
||||||
|
</div> {% endcomment %}
|
||||||
|
|
||||||
|
{% if course.has_to_restart? %}
|
||||||
|
{% include "course_version_outdated_popup", path: course_path %}
|
||||||
|
{% endif %}
|
||||||
|
<div class="np-card-link">
|
||||||
|
{% t shared.view %} <i class="fas fa-arrow-right"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
{% if courses.in_catalog.any? %}
|
||||||
|
<div class="np-catalog-courses row row-with-thumbnails">
|
||||||
|
{% for course in courses.in_catalog %}
|
||||||
|
{% assign course_category_ids = "" %}
|
||||||
|
|
||||||
|
{% for cat in course.categories %}
|
||||||
|
{% assign course_category_ids = course_category_ids | append: cat.id %}
|
||||||
|
{% endfor %}
|
||||||
|
<div class="col-xs-12 col-md-6 col-lg-4 np-stretch-content course-column" data-id='{{course_category_ids}}'>
|
||||||
|
{% include "cards_course" with course %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% capture message %}
|
||||||
|
{% t shared.zero_state.courses.catalog,
|
||||||
|
key: current_school.course_vocabulary
|
||||||
|
%}
|
||||||
|
{% endcapture %}
|
||||||
|
{% include "courses_zero_state", message: message %}
|
||||||
|
{% endif %}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
{% styles default %}
|
||||||
|
{% styles colors %}
|
||||||
|
{% styles custom %}
|
||||||
|
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-3.6.3.min.js" integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script>
|
||||||
@ -0,0 +1,239 @@
|
|||||||
|
<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>
|
||||||
|
{% if current_school.logo_url %}
|
||||||
|
<h1 class="np-header-logo">
|
||||||
|
<a href="https://www.magiscenter.com">
|
||||||
|
<img
|
||||||
|
alt="{{ current_school.name }}"
|
||||||
|
class="np-header-logo-image"
|
||||||
|
src="{{ current_school.logo_url }}"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</h1>
|
||||||
|
{% else %}
|
||||||
|
<a href="https://www.magiscenter.com" 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">
|
||||||
|
{% for link in navigations.sub_navigation %}
|
||||||
|
<li class= "np-header-desktop-nav-item {{ link.active_class }}">
|
||||||
|
<a
|
||||||
|
href="{{ link.url }}"
|
||||||
|
class="np-header-desktop-nav-link np-header-font-color"
|
||||||
|
>
|
||||||
|
{{ link.label }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
{% 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>
|
||||||
|
|
||||||
|
{% 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
|
||||||
|
>
|
||||||
|
<i class="far fa-bars"></i>
|
||||||
|
</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 %}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<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 link in navigations.sub_navigation %}
|
||||||
|
<a
|
||||||
|
href="{{ link.url }}"
|
||||||
|
class="np-header-mobile-menu-content-button {{ link.active_class }}"
|
||||||
|
>
|
||||||
|
{{ link.label }}
|
||||||
|
</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>
|
||||||
|
|
||||||
|
{% include "messages" %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.np-header-logo-image {
|
||||||
|
height:30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-mobile-menu-nav-button {
|
||||||
|
font-size:24px;
|
||||||
|
color:#015893;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-mobile-menu-content { background: #eeedeb; }
|
||||||
|
|
||||||
|
.np-header-desktop-nav-list {
|
||||||
|
margin-right:32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-desktop-nav-link {
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform:uppercase;
|
||||||
|
color:#264c6f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-avatar-button {
|
||||||
|
color: #264c6f;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:768px) {
|
||||||
|
.np-header-content {
|
||||||
|
flex-wrap:wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-logo-image {
|
||||||
|
height:55px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-search-input {
|
||||||
|
background:transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-search-icon {
|
||||||
|
color: #264c6f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:768px) and (max-width:1100px) {
|
||||||
|
.np-header-logo {
|
||||||
|
width:100%;
|
||||||
|
margin-bottom:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-desktop-nav-list {
|
||||||
|
margin: 0 32px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,239 @@
|
|||||||
|
<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>
|
||||||
|
{% if current_school.logo_url %}
|
||||||
|
<h1 class="np-header-logo">
|
||||||
|
<a href="https://www.magiscenter.com">
|
||||||
|
<img
|
||||||
|
alt="{{ current_school.name }}"
|
||||||
|
class="np-header-logo-image"
|
||||||
|
src="{{ current_school.logo_url }}"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</h1>
|
||||||
|
{% else %}
|
||||||
|
<a href="https://www.magiscenter.com" 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">
|
||||||
|
{% for link in navigations.sub_navigation %}
|
||||||
|
<li class= "np-header-desktop-nav-item {{ link.active_class }}">
|
||||||
|
<a
|
||||||
|
href="{{ link.url }}"
|
||||||
|
class="np-header-desktop-nav-link np-header-font-color"
|
||||||
|
>
|
||||||
|
{{ link.label }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
{% 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>
|
||||||
|
|
||||||
|
{% 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
|
||||||
|
>
|
||||||
|
<i class="far fa-bars"></i>
|
||||||
|
</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 %}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<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 link in navigations.sub_navigation %}
|
||||||
|
<a
|
||||||
|
href="{{ link.url }}"
|
||||||
|
class="np-header-mobile-menu-content-button {{ link.active_class }}"
|
||||||
|
>
|
||||||
|
{{ link.label }}
|
||||||
|
</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>
|
||||||
|
|
||||||
|
{% include "messages" %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.np-header-logo-image {
|
||||||
|
height:30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-mobile-menu-nav-button {
|
||||||
|
font-size:24px;
|
||||||
|
color:#015893;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-mobile-menu-content { background: #eeedeb; }
|
||||||
|
|
||||||
|
.np-header-desktop-nav-list {
|
||||||
|
margin-right:32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-desktop-nav-link {
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform:uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-avatar-button {
|
||||||
|
color: #fff;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:768px) {
|
||||||
|
.np-header {
|
||||||
|
position:absolute;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-content {
|
||||||
|
flex-wrap:wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-logo-image {
|
||||||
|
height:55px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-search-input {
|
||||||
|
background:transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:768px) and (max-width:1100px) {
|
||||||
|
.np-header-logo {
|
||||||
|
width:100%;
|
||||||
|
margin-bottom:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-desktop-nav-list {
|
||||||
|
margin: 0 32px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
<main class="np-box-container np-open-access">
|
||||||
|
<div class="np-box">
|
||||||
|
{% include "header_minimal" %}
|
||||||
|
<div class="np-box-content-container">
|
||||||
|
<form class="np-form np-box-content" action="{{ form.url }}" method="get" novalidate>
|
||||||
|
{% form_authenticity_token %}
|
||||||
|
<div class="np-form-headline" style="width: 120%;margin-left: -40px;">
|
||||||
|
<p style="margin-bottom:0px;">Welcome to Magis Institute </p>
|
||||||
|
<p style="margin-top:0px;">for Teachers & Catechists </p>
|
||||||
|
</div>
|
||||||
|
<div class="np-form-subheadline">
|
||||||
|
Please fill out the form below to access your courses
|
||||||
|
</div>
|
||||||
|
<div class="np-form-field">
|
||||||
|
<label class="np-input-label" for="learner_first_name">
|
||||||
|
{% t shared.first_name %}
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
class="np-input"
|
||||||
|
autofocus="autofocus"
|
||||||
|
type="text"
|
||||||
|
name="first_name"
|
||||||
|
id="learner_first_name"
|
||||||
|
value="{{ form.first_name }}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="np-form-field">
|
||||||
|
<label class="np-input-label" for="learner_last_name">
|
||||||
|
{% t shared.last_name %}
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
class="np-input"
|
||||||
|
type="text"
|
||||||
|
name="last_name"
|
||||||
|
id="learner_last_name"
|
||||||
|
value="{{ form.last_name }}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="np-form-field">
|
||||||
|
<label class="np-input-label" for="learner_email">
|
||||||
|
{% t shared.email_address %}
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
class="np-input"
|
||||||
|
type="text"
|
||||||
|
name="email"
|
||||||
|
id="learner_email"
|
||||||
|
value="{{ form.email }}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
type="submit"
|
||||||
|
name="commit"
|
||||||
|
value="{% t shared.enter %}"
|
||||||
|
class="np-button np-button-big np-form-action"
|
||||||
|
/>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
@ -0,0 +1,80 @@
|
|||||||
|
{% include "header_absolute" %}
|
||||||
|
{% include "course_version_outdated_alert", courses: courses.in_catalog %}
|
||||||
|
<div class="basic-hero has-image">
|
||||||
|
<div class="hero-content">
|
||||||
|
<div class="np-resource-title">{{ catalog.headline }}</div>
|
||||||
|
<div class="np-resource-subtitle">{{ catalog.subheadline }}</div>
|
||||||
|
<form
|
||||||
|
class="np-header-search hero-search"
|
||||||
|
data-test="mobile-search"
|
||||||
|
method="get"
|
||||||
|
action="{% route search %}"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
aria-label="Search"
|
||||||
|
class="np-header-search-input hero-search-input"
|
||||||
|
type="text"
|
||||||
|
name="q"
|
||||||
|
placeholder="Search"
|
||||||
|
/>
|
||||||
|
<i class="np-header-search-icon far fa-search"></i>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="category-dropdown-section">
|
||||||
|
<div class="np-max-width">
|
||||||
|
<div class="category-dropdown">
|
||||||
|
<select id="categorySelect">
|
||||||
|
<option value="all">Show All</option>
|
||||||
|
{% for cat in categories.in_catalog %}
|
||||||
|
<option value="{{cat.id}}">{{cat.name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<main class="np-main np-catalog np-subpage-container np-max-width">
|
||||||
|
{% include "courses_catalog" %}
|
||||||
|
</main>
|
||||||
|
{% include "footer" %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
.category-dropdown-section {
|
||||||
|
background-color: #fafafa;
|
||||||
|
padding: 32px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category-dropdown {
|
||||||
|
max-width:400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category-dropdown select {
|
||||||
|
width: 100%;
|
||||||
|
height: 45px;
|
||||||
|
border-radius: 6px;
|
||||||
|
background: #f3f3f3;
|
||||||
|
padding: 6px;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 14px;
|
||||||
|
text-transform:uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$('#categorySelect').on('change', function() {
|
||||||
|
let selectedValue = this.value
|
||||||
|
|
||||||
|
if (selectedValue == "all") {
|
||||||
|
$(".course-column").show()
|
||||||
|
} else {
|
||||||
|
$(".course-column").hide()
|
||||||
|
$(".course-column").each(function() {
|
||||||
|
if ($(this).data("id").includes(selectedValue)) {
|
||||||
|
$(this).show()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
{% include "header" %}
|
||||||
|
<main class="np-main np-max-width np-page-container">
|
||||||
|
<div class="np-hidden-mobile" id="course-desktop">
|
||||||
|
{% include "course_desktop_view" %}
|
||||||
|
</div>
|
||||||
|
<div class="np-hidden-desktop" id="course-mobile">
|
||||||
|
{% include "course_mobile_view" %}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{% include "footer" %}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
{% include "header_absolute" %}
|
||||||
|
{% include "course_version_outdated_alert", courses: courses.enrolled %}
|
||||||
|
<div class="basic-hero has-image">
|
||||||
|
<div class="hero-content">
|
||||||
|
<div class="np-resource-title"> {% t shared.course_vocabulary.plural, key: current_school.course_vocabulary %}</div>
|
||||||
|
<div class="np-resource-subtitle">{% t .headline, key: current_school.course_vocabulary %}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<main class="np-main np-courses np-subpage-container np-max-width">
|
||||||
|
{% include "courses_index", class: "col-xs-12 col-sm-6 col-lg-4 np-stretch-content" %}
|
||||||
|
</main>
|
||||||
|
{% include "footer" %}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
{% include "header_absolute" %}
|
||||||
|
{% include "course_version_outdated_alert", courses: courses.enrolled %}
|
||||||
|
<div class="basic-hero has-image">
|
||||||
|
<div class="hero-content">
|
||||||
|
<div class="np-resource-title">Discover the intersection of science, reason, and faith</div>
|
||||||
|
<div class="np-resource-title" style="font-size:2.25em;">Magis Institute for Teachers & Catechists</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% comment %} {% include "sub_navigation" %} {% endcomment %}
|
||||||
|
<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">
|
||||||
|
{% t .upcoming_events %}
|
||||||
|
</div>
|
||||||
|
{% include "training_events_dashboard" %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{% include "footer" %}
|
||||||
|
|
||||||
@ -0,0 +1,94 @@
|
|||||||
|
{% include "header_absolute" %}
|
||||||
|
{% include "course_version_outdated_alert", courses: courses.featured %}
|
||||||
|
<main class="np-main np-homepage">
|
||||||
|
<div class="np-homepage-hero">
|
||||||
|
<img class="np-homepage-hero-image np-hidden-desktop"
|
||||||
|
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>
|
||||||
|
<a class="np-homepage-hero-cta np-button" href="{% route catalog %}">
|
||||||
|
{% t .discover %}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% comment %} {% include "sub_navigation" %} {% endcomment %}
|
||||||
|
<div class="np-homepage-featured np-max-width">
|
||||||
|
<div class="np-homepage-featured-text">
|
||||||
|
<div class="np-homepage-headline">
|
||||||
|
{{ homepage.featured_courses_headline }}
|
||||||
|
</div>
|
||||||
|
<div class="np-homepage-subheadline">
|
||||||
|
{{ homepage.featured_courses_subheadline }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% if courses.featured.any? %}
|
||||||
|
<div class="np-homepage-featured-courses row">
|
||||||
|
{% for course in courses.featured %}
|
||||||
|
<div class="col-xs-12 col-md-6 col-lg-4 np-stretch-content">
|
||||||
|
{% include "cards_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>
|
||||||
|
</main>
|
||||||
|
{% include "footer" %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
@media (min-width:768px) {
|
||||||
|
.np-homepage-hero {
|
||||||
|
padding-top: 90px;
|
||||||
|
padding-bottom:32px;
|
||||||
|
background-image: url({{homepage.artwork_url}});
|
||||||
|
background-size:cover;
|
||||||
|
background-position:center;
|
||||||
|
min-height: 550px;
|
||||||
|
position:relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-homepage-hero:after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
/*background: rgb(0,0,0);
|
||||||
|
background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, rgba(0,0,0,0) 30%);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-homepage-hero-content {
|
||||||
|
position:relative;
|
||||||
|
z-index:1;
|
||||||
|
max-width: 1300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-homepage-hero-cta {
|
||||||
|
margin-top:32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:1200px) {
|
||||||
|
.np-homepage-hero .np-homepage-headline {
|
||||||
|
font-size: 72px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
{% include "header_absolute" %}
|
||||||
|
<div class="basic-hero has-image">
|
||||||
|
<div class="hero-content">
|
||||||
|
<div class="np-resource-title">{% t shared.learning_paths %}</div>
|
||||||
|
<div class="np-resource-subtitle">{% t .subtitle %}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<main class="np-main np-learning-paths np-subpage-container np-max-width">
|
||||||
|
<div class="np-learning-paths-main">
|
||||||
|
{% comment %} <div class="np-resource-title">
|
||||||
|
{% t shared.learning_paths %}
|
||||||
|
</div>
|
||||||
|
<div class="np-resource-subtitle">
|
||||||
|
{% t .subtitle %}
|
||||||
|
</div> {% endcomment %}
|
||||||
|
{% include "learning_paths_index", items: learning_paths.available %}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{% include "footer" %}
|
||||||
@ -0,0 +1,215 @@
|
|||||||
|
/*
|
||||||
|
Put your custom overlay styles in here
|
||||||
|
You can use your northpass color palette in this file
|
||||||
|
|
||||||
|
{{ color_palette.button_font_color }}
|
||||||
|
{{ color_palette.button_color }}
|
||||||
|
{{ color_palette.button_hover_color }}
|
||||||
|
{{ color_palette.header_font_color }}
|
||||||
|
{{ color_palette.header_font_hover_color }}
|
||||||
|
{{ color_palette.header_color }}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* GLOBAL STYLES */
|
||||||
|
body,
|
||||||
|
html {
|
||||||
|
font-family: 'Poppins', 'Roboto', sans-serif;
|
||||||
|
background:#fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-dashboard,
|
||||||
|
.np-learning-paths {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-button { border-radius:6px; }
|
||||||
|
|
||||||
|
/* CARD STYLES */
|
||||||
|
.course-card { box-shadow:none; }
|
||||||
|
|
||||||
|
.course-card .np-card-container {
|
||||||
|
box-shadow:none;
|
||||||
|
border-radius:6px;
|
||||||
|
transition: all 0.4s;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.course-card .np-card-container:hover {
|
||||||
|
box-shadow: 0 20px 40px rgb(0 0 0 / 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-card-image {
|
||||||
|
border-top-left-radius: 6px;
|
||||||
|
border-top-right-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-card-content { background-color: #fafafa; }
|
||||||
|
|
||||||
|
.np-card-content {
|
||||||
|
border-bottom-left-radius: 6px;
|
||||||
|
border-bottom-right-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-card-content-title {
|
||||||
|
color:#000;
|
||||||
|
line-height: 1.8rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
margin-bottom:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-description {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height:24px;
|
||||||
|
flex:1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.course-card .np-card-content-footer {
|
||||||
|
margin-top:20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-card-link {
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #015893;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size:14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-card-link i {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:768px) {
|
||||||
|
.course-card {
|
||||||
|
padding: 0 16px 64px!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-with-thumbnails {
|
||||||
|
margin-left:-16px;
|
||||||
|
margin-right:-16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* BASIC HERO STYLING */
|
||||||
|
.basic-hero {
|
||||||
|
background-color:#eeedeb;
|
||||||
|
padding:64px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero.has-image {
|
||||||
|
background-image:url(https://cdn.filestackcontent.com/security=policy:eyJleHBpcnkiOjQ4MzA3OTc4NTIsImNhbGwiOlsicmVhZCIsImNvbnZlcnQiLCJzdG9yZSIsInBpY2siLCJyZW1vdmUiXX0=,signature:ec548cdaa252122149df9f83b63236e888dbe9f59deb76804fe9a7d2da31e35e/QEjCvV4rSOKuUj2quMsY);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size:cover;
|
||||||
|
background-position:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero .hero-content {
|
||||||
|
max-width: 1170px;
|
||||||
|
width:100%;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero .hero-content .np-resource-title,
|
||||||
|
.basic-hero .hero-content .np-resource-subtitle {
|
||||||
|
text-align:center;
|
||||||
|
color:#264c6f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero.has-image .hero-content .np-resource-title,
|
||||||
|
.basic-hero.has-image .hero-content .np-resource-subtitle {
|
||||||
|
color:#fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero .hero-content .np-resource-title {
|
||||||
|
font-size: 40px;
|
||||||
|
line-height:48px;
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-search.hero-search {
|
||||||
|
margin:60px auto 0;
|
||||||
|
max-width:900px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-search-input.hero-search-input {
|
||||||
|
width: 100%;
|
||||||
|
background: transparent;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
padding: 8px 16px;
|
||||||
|
border-radius:6px;
|
||||||
|
height:50px;
|
||||||
|
opacity:1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-header-search.hero-search .np-header-search-icon {
|
||||||
|
right:16px;
|
||||||
|
top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:768px) {
|
||||||
|
.basic-hero {
|
||||||
|
background-color:rgb(204, 204, 204);
|
||||||
|
padding:110px 24px 32px;
|
||||||
|
min-height:430px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero.has-image {
|
||||||
|
min-height:550px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero .hero-content .np-resource-title {
|
||||||
|
font-size: 48px;
|
||||||
|
line-height:56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero .hero-content .np-resource-subtitle {
|
||||||
|
font-size: 24px;
|
||||||
|
margin-top: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:1200px) {
|
||||||
|
.basic-hero .hero-content .np-resource-title {
|
||||||
|
font-size: 72px;
|
||||||
|
line-height:80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-hero .hero-content .np-resource-subtitle {
|
||||||
|
font-size: 30px;
|
||||||
|
line-height:36px;
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FOOTER STYLES */
|
||||||
|
.np-footer,
|
||||||
|
.np-footer+.np-powered-by,
|
||||||
|
.np-powered-by {
|
||||||
|
background: #264c6f!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-powered-by .np-powered-by-link {
|
||||||
|
color:#fff!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-footer-support-help,
|
||||||
|
.np-footer-support-item {
|
||||||
|
color:#fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-footer-navigation-link {
|
||||||
|
color: #fff;
|
||||||
|
font-weight:700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-footer-logo-image {
|
||||||
|
opacity:1;
|
||||||
|
filter: grayscale(1) brightness(1) invert(1);
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
{% include "header_absolute" %}
|
||||||
|
<div class="basic-hero has-image">
|
||||||
|
<div class="hero-content">
|
||||||
|
<div class="np-resource-title"> {% t .title %}</div>
|
||||||
|
<div class="np-resource-subtitle"> {% t .subtitle %}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<main class="np-main np-training-events np-subpage-container np-max-width">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 col-sm-10">
|
||||||
|
{% comment %} <div class="np-resource-title">
|
||||||
|
{% t .title %}
|
||||||
|
</div>
|
||||||
|
<div class="np-resource-subtitle">
|
||||||
|
{% t .subtitle %}
|
||||||
|
</div> {% endcomment %}
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-12 col-sm-2">
|
||||||
|
{% include "training_events_filter" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% include "training_events_index" %}
|
||||||
|
</main>
|
||||||
|
{% include "footer" %}
|
||||||
@ -155,3 +155,21 @@ Skuid's founder is retiring and joining the board and wants the RTE "beautified"
|
|||||||
|
|
||||||
How to use a prop email/secondary email as a recovery email?
|
How to use a prop email/secondary email as a recovery email?
|
||||||
FEAT: Notifications after a Learning Path - not at the last course!
|
FEAT: Notifications after a Learning Path - not at the last course!
|
||||||
|
|
||||||
|
## 02/02/2023
|
||||||
|
|
||||||
|
### Long list from Alexa
|
||||||
|
|
||||||
|
She has Figma file for cert page and will send it to me Friday/Monday for us to build.
|
||||||
|
TODO: Build Figma in Sandbox - tbd Skuid/Skuad
|
||||||
|
|
||||||
|
Synaps as favorite exam embedding software. They might be an LMS.
|
||||||
|
|
||||||
|
Salesforce no syncing. Support knows about it. All new customers that are coming in are not being synced.
|
||||||
|
TODO: get update on SFDC integration issue.
|
||||||
|
|
||||||
|
Lots of Skuid Users that try to go to Skuid instead of HR. Now they are resetting their password on Skuid, but not getting emails.
|
||||||
|
Users sometimes submit tickets others just don't say anything.
|
||||||
|
|
||||||
|
ERROR: Finding it strange that she can pull up a learning path report and everything is fine, but not with course.
|
||||||
|
She is concerned if someone claims they completed something how can she confirm?
|
||||||
|
|||||||
@ -369,4 +369,3 @@ TODO: Add first sentence from each description to the "additional information" f
|
|||||||
|
|
||||||
Joanna - add arrow on each activity to show the driver that it is clickable.
|
Joanna - add arrow on each activity to show the driver that it is clickable.
|
||||||
Northpass to wait until we have the official go ahead to make any changes.
|
Northpass to wait until we have the official go ahead to make any changes.
|
||||||
|
|
||||||
|
|||||||
BIN
Scripts/.DS_Store
vendored
|
Before Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 399 KiB |
|
Before Width: | Height: | Size: 439 KiB |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 69 KiB |
@ -11,10 +11,10 @@ def find_pictures():
|
|||||||
for file in listfiles:
|
for file in listfiles:
|
||||||
files.append(os.path.basename(file))
|
files.append(os.path.basename(file))
|
||||||
# Now file will only show the file name, not the entire path
|
# Now file will only show the file name, not the entire path
|
||||||
split_resources(files)
|
split_resources(files, currentdir)
|
||||||
|
|
||||||
|
|
||||||
def split_resources(files):
|
def split_resources(files, currentdir):
|
||||||
print(files)
|
print(files)
|
||||||
try:
|
try:
|
||||||
resource_title = files[0]
|
resource_title = files[0]
|
||||||
@ -26,21 +26,18 @@ def split_resources(files):
|
|||||||
new_list.append(file)
|
new_list.append(file)
|
||||||
for item in new_list:
|
for item in new_list:
|
||||||
files.remove(item)
|
files.remove(item)
|
||||||
split_resources(files)
|
split_resources(files, currentdir)
|
||||||
print(new_list)
|
process_pictures(new_list, resource_title, currentdir)
|
||||||
process_pictures(new_list, resource_title)
|
|
||||||
except IndexError as e:
|
except IndexError as e:
|
||||||
pass
|
pass
|
||||||
finally:
|
finally:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def process_pictures(new_list, resource_title):
|
def process_pictures(new_list, resource_title, currentdir):
|
||||||
today = date.today()
|
today = date.today()
|
||||||
today = today.strftime("%m.%d.%Y")
|
today = today.strftime("%m.%d.%Y")
|
||||||
image_list = []
|
image_list = []
|
||||||
print(new_list)
|
|
||||||
print(resource_title)
|
|
||||||
resource = Image.open(new_list[0])
|
resource = Image.open(new_list[0])
|
||||||
resource = resource.convert("RGB")
|
resource = resource.convert("RGB")
|
||||||
for picture in new_list[1:]:
|
for picture in new_list[1:]:
|
||||||
@ -49,35 +46,22 @@ def process_pictures(new_list, resource_title):
|
|||||||
image_list.append(converted)
|
image_list.append(converted)
|
||||||
# image_list.append(image)
|
# image_list.append(image)
|
||||||
resource.save(
|
resource.save(
|
||||||
rf"/Users/normrasmussen/Documents/Northpass/Scripts/Walmart_Screenshots/PDFs/{resource_title}_{today}.pdf",
|
currentdir + f"/PDFs/{resource_title}_{today}.pdf",
|
||||||
save_all=True,
|
save_all=True,
|
||||||
append_images=image_list,
|
append_images=image_list,
|
||||||
)
|
)
|
||||||
|
delete_originals(currentdir)
|
||||||
|
|
||||||
|
|
||||||
def notusable():
|
def delete_originals(currentdir):
|
||||||
image1 = Image.open(
|
path = glob.glob(currentdir + "*.png")
|
||||||
r"/Users/normrasmussen/Documents/Northpass/Scripts/Walmart_Screenshots/Branch Wallet FAQs_1.png"
|
for file in path:
|
||||||
)
|
try:
|
||||||
image2 = Image.open(
|
os.remove(file)
|
||||||
r"/Users/normrasmussen/Documents/Northpass/Scripts/Walmart_Screenshots/Branch Wallet FAQs_2.png"
|
except:
|
||||||
)
|
print("Error!")
|
||||||
image3 = Image.open(
|
finally:
|
||||||
r"/Users/normrasmussen/Documents/Northpass/Scripts/Walmart_Screenshots/Branch Wallet FAQs_3.png"
|
print("All Done")
|
||||||
)
|
|
||||||
|
|
||||||
im1 = image1.convert("RGB")
|
|
||||||
im2 = image2.convert("RGB")
|
|
||||||
im3 = image3.convert("RGB")
|
|
||||||
|
|
||||||
imagelist = [im1, im2, im3]
|
|
||||||
|
|
||||||
im1.save(
|
|
||||||
r"/Users/normrasmussen/Documents/Northpass/Scripts/Walmart_Screenshots/mergedImages.pdf",
|
|
||||||
save_all=True,
|
|
||||||
append_images=imagelist,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
find_pictures()
|
find_pictures()
|
||||||
|
|||||||
@ -29,6 +29,7 @@ const url = [
|
|||||||
]
|
]
|
||||||
*/
|
*/
|
||||||
const apiKey = "6hUfJdAartHTHhHc0WIRZYPWe"
|
const apiKey = "6hUfJdAartHTHhHc0WIRZYPWe"
|
||||||
|
|
||||||
const url = process.argv[2];
|
const url = process.argv[2];
|
||||||
if (!url) {
|
if (!url) {
|
||||||
throw "Please provide a URL as the first argument";
|
throw "Please provide a URL as the first argument";
|
||||||
|
|||||||
109
Scripts/Walmart_Screenshots/resources_api.js
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
const puppeteer = require('puppeteer');
|
||||||
|
const axios = require('axios')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
const apiKey = "6hUfJdAartHTHhHc0WIRZYPWe"
|
||||||
|
const uid = "/\?uid\=7b84eae4-fb34-4689-9f33-24071c3e5a41";
|
||||||
|
const groupIds = []
|
||||||
|
|
||||||
|
const getAllGroups = async (num) => {
|
||||||
|
if(num === 1){
|
||||||
|
}
|
||||||
|
|
||||||
|
let page = num;
|
||||||
|
|
||||||
|
await axios({
|
||||||
|
method: 'get',
|
||||||
|
url: `https://api.northpass.com/v2/courses?page=${page}&limit=100`,
|
||||||
|
headers: {
|
||||||
|
'accept': '*/*',
|
||||||
|
'x-api-key': apiKey,
|
||||||
|
'content-type': 'application/json'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (res.data.links.next != null) {
|
||||||
|
page++;
|
||||||
|
for (let i = 0; i < res.data.data.length; i++) {
|
||||||
|
if (res.data.data[i].attributes.status == "live") {
|
||||||
|
groupIds.push(res.data.data[i].id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await getAllGroups(page);
|
||||||
|
} else {
|
||||||
|
for (let i = 0; i < res.data.data.length; i++) {
|
||||||
|
if (res.data.data[i].attributes.status == "live") {
|
||||||
|
groupIds.push(res.data.data[i].id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
})
|
||||||
|
let i = 0
|
||||||
|
loopIds(i)
|
||||||
|
console.log(groupIds)
|
||||||
|
}
|
||||||
|
|
||||||
|
function loopIds(i) {
|
||||||
|
var num = 1
|
||||||
|
id = groupIds[i]
|
||||||
|
courseOverview(id, i, num)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function courseOverview(id, i, num) {
|
||||||
|
const activity = new Array();
|
||||||
|
const url = "https://walmart.northpass.com/app/courses/";
|
||||||
|
const browser = await puppeteer.launch();
|
||||||
|
const page = await browser.newPage();
|
||||||
|
const course = url+id+uid;
|
||||||
|
console.log(course)
|
||||||
|
await page.setViewport({ width:390, height:844 })
|
||||||
|
await page.goto(course, {
|
||||||
|
waitUntil: 'load',
|
||||||
|
timeout: 0 });
|
||||||
|
|
||||||
|
await page.title();
|
||||||
|
const [getXpath] = await page.$x('/html/body/div[2]/div/div');
|
||||||
|
const resourcetitle = await page.evaluate(name => name.innerText, getXpath);
|
||||||
|
const resource = resourcetitle.trim();
|
||||||
|
console.log(resource);
|
||||||
|
|
||||||
|
await page.screenshot({path: `${resource}_1.png`, fullPage:true, headless:false});
|
||||||
|
|
||||||
|
const hrefs = await page.$$eval('a', as => as.map(a => a.href));
|
||||||
|
var links = Object.entries(hrefs);
|
||||||
|
links.forEach(([key, value]) => {
|
||||||
|
var link = value;
|
||||||
|
if (link.includes("activities") && (link.includes(id))) {
|
||||||
|
console.log(link);
|
||||||
|
activity.push(link);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setTimeout(() => {
|
||||||
|
|
||||||
|
}, 5000);
|
||||||
|
uniqueLinks = [...new Set(activity)];
|
||||||
|
for (const link of uniqueLinks) {
|
||||||
|
num = num+1
|
||||||
|
const newlink = link+uid;
|
||||||
|
await page.setViewport({ width: 390, height: 844 })
|
||||||
|
await page.goto(newlink, {
|
||||||
|
waitUntil: 'load',
|
||||||
|
timeout: 0 });
|
||||||
|
await page.screenshot({path: `${resource}_${num}.png`, fullPage: true, headless: false});
|
||||||
|
//screenshots(newlink, resource, num, i);
|
||||||
|
}
|
||||||
|
await browser.close();
|
||||||
|
i++;
|
||||||
|
loopIds(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function screenshots(newlink, resource, num, i) {
|
||||||
|
const browser = await puppeteer.launch();
|
||||||
|
const page = await browser.newPage();
|
||||||
|
await browser.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
getAllGroups();
|
||||||