Northpass Academy
This commit is contained in:
11
2022-07-25_bpra.md
Normal file
11
2022-07-25_bpra.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Test page
|
||||
|
||||
This is a test page.
|
||||
|
||||
## Here is a list.
|
||||
* List item 1
|
||||
* List item 2
|
||||
* List item 3
|
||||
|
||||
** Bold **
|
||||
_ Italics _
|
||||
85
Crayon.md
Normal file
85
Crayon.md
Normal file
@ -0,0 +1,85 @@
|
||||
# Crayon
|
||||
|
||||
## Accelerator Launch
|
||||
As of tonight
|
||||
Crayon.co/Academy will no longer have a form
|
||||
Crayon.co/Academy/Activator-Course - Form to course url
|
||||
And then the same for architect
|
||||
|
||||
These should be course
|
||||
|
||||
Lets remove groups later
|
||||
|
||||
Current experience is press enroll and then start
|
||||
how to refresh and auto enroll
|
||||
look at pre-enroll populated links for post-launch
|
||||
|
||||
Conor to send sub head copy to update
|
||||
|
||||
Norm to send screenshot of home page with my name added
|
||||
|
||||
Can you look at group deletion? How can we enroll everyone in the group and delete the group
|
||||
|
||||
Send Conor how to find MCA and show only empty attempts
|
||||
|
||||
Conor off July 5-8
|
||||
Conor off this Friday
|
||||
|
||||
November Launch of Last Course - Conor's goal
|
||||
|
||||
## Meeting with Will regarding Data flow
|
||||
Everything flows into Hubspot
|
||||
But not really into Salesforce
|
||||
Salesforce is their main CRM
|
||||
- Reps go into SFDC & Outreach
|
||||
- Reps should know what course they have or haven't completed yet
|
||||
- But wants this to be on the campaign level
|
||||
How it is currently setup:
|
||||
- Hubspot form on website, someone fills out the form
|
||||
- Form fills associated with campaign in Salesforce
|
||||
- In SFDC, he only gets when someone is registered for a course, no completed
|
||||
- Campaign structure is based on course name
|
||||
-
|
||||
Registration page - embed a hubspot form?
|
||||
|
||||
|
||||
Hubspot is just for marketing
|
||||
|
||||
## Meeting with Sheila regarding Analytics and Hubspot
|
||||
- [ ] Pull single course analysis with all versions lumped into one
|
||||
- [ ] Can we pull all versions with date range?
|
||||
|
||||
|
||||
#Talkspace
|
||||
|
||||
Talkspace Call - 6/28/22
|
||||
Training Call for Madison & Marlene
|
||||
Invite Ummey
|
||||
Molly optional
|
||||
|
||||
Worse case in deleting and recreating the course
|
||||
Many people with 75% of the course
|
||||
416 tickets of people with errors
|
||||
52 people completed the learning path
|
||||
Rest of comments are around the harrasment and cyber course
|
||||
|
||||
Would new ones work better? Not guaranteed
|
||||
|
||||
Understanding from Norm:
|
||||
Who is in charge of all courses?
|
||||
|
||||
William Bell (Kipp)
|
||||
Cyber Security
|
||||
Harrasment showing 100% in NP
|
||||
Not in BBHR
|
||||
CS: still due
|
||||
Harrasment: Still due
|
||||
Contact Patrycja
|
||||
|
||||
Amanda Corriveau - she needs admin access to BBHR/NP but shouldn't be able to access Course Marketplace
|
||||
Both need BBHR to connect courses, Molly in 2nd instance
|
||||
Molly should not have access to course Marketplace
|
||||
|
||||
[ ] - Ratings for internal use only, once someone rates, the rating disappears
|
||||
[ ] - Can we bring in opensesame ratings as well?
|
||||
|
||||
156
CustomerNotes.md
156
CustomerNotes.md
@ -1,3 +1,11 @@
|
||||
# Table of Clients
|
||||
| Clients | | | |
|
||||
| ------- | -------| ------| ------|
|
||||
| [Crayon](Crayon.md) | [JJSV](JJSV.md) | DoubleVerify | Dept |
|
||||
| Swift | Wild Health | 4Pillars | STOPIT |
|
||||
|
||||
|
||||
|
||||
# GENERAL TODO
|
||||
|
||||
- Allyson Meeting:
|
||||
@ -17,19 +25,16 @@ What is required for launch?
|
||||
|
||||
# JJSV
|
||||
|
||||
|
||||
** Think Boutique when considering the style **
|
||||
|
||||
|
||||
## Todos
|
||||
|
||||
|
||||
- [X] Channel Cards should say 33% viewed not complete
|
||||
- [X] Add timing to activity titles (Melinda)
|
||||
- [X] Add timing to channel card (Northpass)
|
||||
- [ ] Challenging Case Content, split into different courses
|
||||
- [ ] Dont share SCORM course Phaco Funds with Dr. Sam Garg
|
||||
- [ ] My Topics - changing to what?
|
||||
- [X] My Topics - changing to what?
|
||||
- [ ] All Channels should be All Topics
|
||||
- [ ] Learning Paths >> Programs
|
||||
- [ ] All other topics >> Modules
|
||||
@ -41,20 +46,25 @@ What is required for launch?
|
||||
- [X] For non-logged in, Events and My Topics should not be availble
|
||||
- [X] Melinda to provide links to privacy policy, cookie, etc
|
||||
- [ ] Name, Email, Company Practice Name, City, State, Country, Role Section, ADDITIONAL: Specialty,
|
||||
- [ ] Ask Marek about newsletter communiciations and if we can segment by certain groups or people
|
||||
- [X] Ask Marek about newsletter communiciations and if we can segment by certain groups or people
|
||||
- [ ] See if we can expand the number of Properties
|
||||
- [ ] State, Region, City, are all needed Properties
|
||||
- [ ] If we need to back off on card content properties (course properties, such as time)
|
||||
[ ] Programs > Bummer, you're not part of any programs
|
||||
[ ] Other Topics > Yikes! You aren't accessing any any modules
|
||||
Events should be figured out by your demo -
|
||||
[ ] Other Topics > Yikes! You aren't accessing any any modules
|
||||
* [ ] Ping Tigue regarding [BPRA](2022-07-25_bpra.md)
|
||||
Events should be figured out by our demo -
|
||||
* [ ] Add featured content spotlight box that moves the 4 boxes down
|
||||
* [ ] Can we showcase videos on the main page with a little modal?
|
||||
* [ ]
|
||||
|
||||
|
||||
### Notes
|
||||
Customer base: residents, fellows, surgeons, optometrists, opthamologists
|
||||
Chapter Content
|
||||
Registrations will be a link that Melinda will manager
|
||||
|
||||
** 7/18/2022 **
|
||||
### 7/18/2022
|
||||
Role is what will decide what content they have more than region or location
|
||||
Content is by role
|
||||
Events is by State
|
||||
@ -262,7 +272,7 @@ Iorad was a decision factor
|
||||
|
||||
They need it for at least this year
|
||||
|
||||
# Unknown Notes
|
||||
## Unknown Notes
|
||||
|
||||
Pilot Courses: we are working on multiple pilots for training courses on a broad spectrum of topics. As an example, we've started building out a 'PowerBI & Data Insights Introductory course' in our Northpass environment already
|
||||
|
||||
@ -274,6 +284,18 @@ Learning paths and programs to support knowledge journeys, including New Hire On
|
||||
|
||||
Opportunity to host content & events for Employee Resource Communities; to have a shared space for learning and collaborating.
|
||||
|
||||
## Onboarding with BambooHR
|
||||
- Location is a filter in BBHR
|
||||
- Region is custom but not directly filterable, can pull analytics but can't filter
|
||||
- US employees have state-specific courses
|
||||
- Based on location tag in everfi system
|
||||
-
|
||||
Global > Dept > regional > role
|
||||
|
||||
Location based Onboarding
|
||||
Role/Dept based Onboarding
|
||||
|
||||
They have a mock up of their design for the page (Figma Mock up)
|
||||
|
||||
|
||||
|
||||
@ -530,13 +552,14 @@ ILT wont work because they have to do instructor led training within a course
|
||||
|
||||
## Tasks
|
||||
|
||||
[ ] - Create Implementation Plan
|
||||
[ ] - End of August Launch
|
||||
[ ] - Help Asia create course
|
||||
[ ] - Every Week Implementation, Wednesday @ 12:30pm (Tuesdays at 12:30 after next week)
|
||||
[ ] - SSO - Reach out to Chris ASAP
|
||||
[X] - Create Implementation Plan
|
||||
[X] - End of August Launch
|
||||
[X] - Help Asia create course
|
||||
[X] - Every Week Implementation, Wednesday @ 12:30pm (Tuesdays at 12:30 after next week)
|
||||
[X] - SSO - Reach out to Chris ASAP
|
||||
[ ] - Provide Burns with a deck on competitive analysis of why NP is superior
|
||||
[ ] Instructor page demo
|
||||
[ ] - Instructor page demo
|
||||
* [ ] Create categories for each OS List
|
||||
|
||||
## Notes from Kick off
|
||||
|
||||
@ -605,6 +628,17 @@ The rest comes from Experts - experts in certain fields (time management, podcas
|
||||
[ ] - Find examples of search within the page only
|
||||
[ ] - Submit ticket with Figma files for design changes
|
||||
[ ] - Activities in a course is a step in a how-to
|
||||
[ ] - See if circle button at bottom of image can be clickable
|
||||
[ ] - In terms of images, what format are they using? PNG -
|
||||
Iron out user experience
|
||||
Contact us and back to FCIB same as corporate site
|
||||
Create categories for the links
|
||||
Add the "active state" CSS for each link
|
||||
POS training falls on cash management
|
||||
Elisia handles the training cash management engagement
|
||||
She might need to connect with us to utilize the platform
|
||||
Andre in that meeting aswell
|
||||
|
||||
|
||||
# SPS Commerce
|
||||
|
||||
@ -695,6 +729,38 @@ Advised to start at the highest level and most broad groups, then add people to
|
||||
Figma file questions
|
||||
They need more training and enablement They will follow up for Figma files and setting those up for design
|
||||
|
||||
### Meeting with Simon & Timo
|
||||
Training and Content Team for Netherlands, Switzerland, Austria
|
||||
2nd biggest market with 65 hubspot. German is the biggest with 100+.
|
||||
Distribution/Hub manager for Netherlands
|
||||
Has some bottle necks:
|
||||
- MCA and 5000 entries
|
||||
- Learning Path Analysis
|
||||
|
||||
They manage everything from a google sheet
|
||||
Hub managers have access to this google sheet
|
||||
Currently manually sending emails and follow ups - NP communications are weak
|
||||
Looker account within Flink, how can we get the data into Looker? (Upsell a Secure Data Transfer)
|
||||
Scheduled Delivery would be great too
|
||||
This would be useless if the the values (of location) are not in there. Can we do a scheduled delivery of an analytic with property filtered
|
||||
Source of truth is Big Query or Looker for the country manager and job title (HUB)
|
||||
Can we API into the properties?
|
||||
Wants weekly analytics -
|
||||
|
||||
Other Hot topics in the Netherlands:
|
||||
- Frustrations with ILTs
|
||||
- People can register for multiple sessions within an event (they shouldn't be able to)
|
||||
- Can we prevent them from multiple sessions?
|
||||
- Simon doesn't have the admin possiblity to unregister people from sessions
|
||||
- He wants to register and unregister people
|
||||
- If Simon increases the number of seats, that person can't re-register because they have already been denied
|
||||
- Waiting list isn't good because a denial is a forever denial
|
||||
- Needs to create a custom notification for a confirmation. They have a confirmation that they have booked, but no confirmation of the dates, link, time etc.
|
||||
- In order for the people to get this on their agenda, they have to click add to calendar, it should be doing it automatically (this is what other LMS do)
|
||||
- Very frustrated with the manual work, so much so that they aren't going to use it at all anymore. Just using it on a calendar invite on their own.
|
||||
- Don't like that you need multiple courses per language.
|
||||
- Quizzes: needing multiple quiz for every language.
|
||||
|
||||
# Humly
|
||||
|
||||
## Technical People
|
||||
@ -731,14 +797,12 @@ Status is they are mapping out and deciding what Northpass involvment should be
|
||||
|
||||
# Omnisend
|
||||
|
||||
|
||||
## Tasks
|
||||
- [ ] Wistia Project, what access do they have?
|
||||
- [ ] Share button with /app/course within course viewer bright green 52 front
|
||||
- [ ] EXpert led categories url not working
|
||||
- [ ]
|
||||
[ ] Share button with /app/course within course viewer bright green 52 front
|
||||
- [X] EXpert led categories url not working
|
||||
|
||||
o## Notes
|
||||
## Notes
|
||||
|
||||
Can they embed a video from the Wistia Project video into Omnisend's product?
|
||||
|
||||
@ -752,7 +816,7 @@ The key is a single video
|
||||
|
||||
The logic should be if a single video exists skip cover page
|
||||
|
||||
#o## Video on overview page
|
||||
### Video on overview page
|
||||
|
||||
Course card, will also enroll person in course/activate them
|
||||
Bring in video from Wistia Project
|
||||
@ -797,8 +861,20 @@ Alison out week of July 11th
|
||||
Question: discussed during sales process, badges and points
|
||||
Back fill badges
|
||||
|
||||
* [ ] Test Todo
|
||||
|
||||
- [X] Send ticket for font changes
|
||||
[ ] Northpass ACademy Dashboard Personalized Copy, same as NP Academy
|
||||
[ ] Keep learning path card formatting, scroll left to right
|
||||
[ ] Calendar - does Recast have an embeddable calendar? Feed is okay instead of calendar replicate Northpass academy calendar
|
||||
Chris to provide blog feed
|
||||
DV featured courses should have description short description
|
||||
remove events leave or remove column
|
||||
main page links up top like swift
|
||||
|
||||
RTE within course viewer not picking up font change
|
||||
|
||||
|
||||
- [ ] Send ticket for font changes
|
||||
|
||||
# Talkspace
|
||||
|
||||
@ -824,6 +900,13 @@ Comms each group are necessary
|
||||
They shouldn't need to switch groups once in this
|
||||
Pre registrations
|
||||
|
||||
Non CA link, 740 attempted learning path
|
||||
And 500 complete (this is a good number)
|
||||
160 have completed 75% (top 3 courses)
|
||||
50% would be fraud & hippaa
|
||||
Molly wants to try... 500 people get a message saying "you're going to see messages, please ignore"
|
||||
160 get invited to a group with the remaining courses
|
||||
|
||||
# Mark43
|
||||
|
||||
We need Northapss to be able to parse the group id information in the JWT
|
||||
@ -849,6 +932,35 @@ If non-value users are allowed in, how do we keep out competitors?
|
||||
* Charlie Question: Is there a centralized place where all the information lives? With minor dev resources, we could set up API calls to constantly update their Northpass people and accounts
|
||||
* Whenever something is changed in their system, auto updated (i.e. someone changes departments)
|
||||
|
||||
## Meeting with Brian re: SSO
|
||||
They have a lot of clients without SSO
|
||||
They are not an IDP, but are a service provider
|
||||
|
||||
Non SSO users do a bulk upload into the Mark43 application which allows the user to sign in with an email/password and then sends them their 2FA code.
|
||||
|
||||
In their ideal world, how would Mark43 like to access Northpass?
|
||||
- Ideally, non-SSO customers will have a username and account without Mark43 having to manage the users.
|
||||
- Accounts are then managed by their users in their application (sounds like customer application)
|
||||
* There would need to be a second instance for non-SSO users.
|
||||
*
|
||||
|
||||
Last CSM said Michelle can't do groups with their current SSO, and a NP Manager will still see other companies and agency names.
|
||||
There are some internal issues with customer discussions - colby, brian, michelle, and someone else?
|
||||
Security review needed internally
|
||||
|
||||
Them setting up as an IDP is not out of the realm of possibilities, but they would have to have a discussion. They generally only handle the handshake one way, so this would be two way.
|
||||
They don't know if setting up an IDP is the "technological direction" they want to go in.
|
||||
|
||||
Renewal - they will be wanting an instance of partners as well. They will need different content.
|
||||
Professional services leadership - karim and calvin
|
||||
Mark43 does have a database with all their user information, but that's the short answer. Long answer is that it isn't easily accessible.
|
||||
Charlie suggesting that using the data in the DB we could auto-provision groups for each agency and client.
|
||||
|
||||
Michelle - meeting internally to discuss security for manager permissions
|
||||
Partner instance and SSO expectations
|
||||
|
||||
* [X] Provide Brian with Documentation on what's possible with SSO and what's required of them
|
||||
* [ ] Let Brian know if we integrate with B2C - Charlie replied saying we haven't had issues integrating with Azure or any Microsoft product
|
||||
|
||||
# Larson Texts
|
||||
|
||||
|
||||
BIN
NP_Custom_Templates/customer_templates/.DS_Store
vendored
BIN
NP_Custom_Templates/customer_templates/.DS_Store
vendored
Binary file not shown.
@ -0,0 +1,61 @@
|
||||
<div class="np-card">
|
||||
<div class="np-card-container">
|
||||
<div class="np-card-image-content-top" style="top: 0.75rem; left: 0.75rem">
|
||||
{% if course.ribbon %}
|
||||
<div class="np-card-ribbon">
|
||||
{{ course.ribbon }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<h3 class="np-card-content-title np-color-white">
|
||||
{{ course.name }}
|
||||
</h3>
|
||||
|
||||
<div class="np-card-content-progress np-button-color" style='color: white; font-size: 14px; font-weight: 600;'>
|
||||
{% t shared.progress, count: course.progress %}
|
||||
</div>
|
||||
</div>
|
||||
<img
|
||||
class="np-card-image"
|
||||
alt="{{ course.name }}"
|
||||
src="{{ course.image_url }}"
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="np-card-content np-card-content-vertical np-card-padding course-card-content" style='padding: 1.5rem;'>
|
||||
{% include "course_details_review" %}
|
||||
<div class="np-card-content-footer">
|
||||
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
|
||||
{% if course.has_to_restart? %}
|
||||
{% include "course_version_outdated_popup", path: course_path %}
|
||||
{% endif %}
|
||||
|
||||
<a
|
||||
class="np-top-button np-button-font-color np-button np-button-big" href="{% route course_enrollment, code: course.enrollment_code %}"
|
||||
style='background: linear-gradient(90deg, #089FB7 0%, #15824B 100%); border-radius: 8px;'
|
||||
>
|
||||
{% if course.enrolled? == false %}
|
||||
{% t shared.enroll %}
|
||||
{% elsif course.started? == false %}
|
||||
{% t shared.start, key: current_school.course_vocabulary %}
|
||||
{% elsif course.completed? %}
|
||||
{% t shared.course.view, key: current_school.course_vocabulary %}
|
||||
{% else %}
|
||||
{% t shared.continue %}
|
||||
{% endif %}
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.fas.fa-star {
|
||||
line-height: 1.15;
|
||||
}
|
||||
.course-card-content {
|
||||
border-radius: 0 0 8px 8px;
|
||||
}
|
||||
.np-card-content-title {
|
||||
text-shadow: 1px 1px black;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,97 @@
|
||||
<div class="np-card np-no-horizontal-padding">
|
||||
<div class="np-card-container">
|
||||
<div class="np-learning-path np-featured-course">
|
||||
<div class="np-featured-course-img-container">
|
||||
<div class="np-card-image-content-top">
|
||||
{% include "course_details" %}
|
||||
</div>
|
||||
<img
|
||||
class="np-card-image"
|
||||
alt="{{ course.name }}"
|
||||
src="{{ course.image_url }}"
|
||||
>
|
||||
</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">
|
||||
{{ course.name }}
|
||||
</h3>
|
||||
|
||||
<div class="np-card-content-description" style='font-size: 16px !important; line-height: 24px !important; color: #FFFFFF !important; font-family: Lexend !important;'>
|
||||
{{ course.full_description }}
|
||||
</div>
|
||||
|
||||
<div class="np-card-content-footer" style='display: flex; justify-content: space-between;'>
|
||||
<div class='np-card-content-footer-left'style='display: flex; justify-content: left;'>
|
||||
<a
|
||||
class="np-top-button np-button-font-color np-button" href="{% route course_enrollment, code: course.enrollment_code %}" style='background: linear-gradient(90deg, #089FB7 0%, #15824B 100%); font-weight: 800;
|
||||
border-radius: 8px; margin-right: 24px;'
|
||||
>
|
||||
{% if course.enrolled? == false %}
|
||||
{% t shared.enroll %}
|
||||
{% elsif course.started? == false %}
|
||||
{% t shared.start, key: current_school.course_vocabulary %}
|
||||
{% elsif course.completed? %}
|
||||
{% t shared.course.view, key: current_school.course_vocabulary %}
|
||||
{% else %}
|
||||
{% t shared.continue %}
|
||||
{% endif %}
|
||||
</a>
|
||||
<div class="np-card-progress np-button-color" style='color: #15824B; font-weight: 700; font-size: 12px; align-self: center; text-transform: uppercase;'>
|
||||
{% t shared.progress, count: course.progress %}
|
||||
</div>
|
||||
</div>
|
||||
<div class='course-detail-rating'>
|
||||
<div class='course-detail-rating-stars'>
|
||||
{% for i in (1..5) %}
|
||||
{% if course.properties.np_course_rating >= i %}
|
||||
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10 0L12.5863 6.44033L19.5106 6.90983L14.1846 11.3597L15.8779 18.0902L10 14.4L4.12215 18.0902L5.81535 11.3597L0.489435 6.90983L7.41374 6.44033L10 0Z" fill="#089FB7"/>
|
||||
</svg>
|
||||
{% else %}
|
||||
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path opacity="0.25" d="M10 0L12.5863 6.44033L19.5106 6.90983L14.1846 11.3597L15.8779 18.0902L10 14.4L4.12215 18.0902L5.81535 11.3597L0.489435 6.90983L7.41374 6.44033L10 0Z" fill="#089FB7"/>
|
||||
</svg>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<span class="np-details-label" style= 'display: flex;'>
|
||||
{{course.properties.np_course_rating}} <div style='font-weight: 500; padding-left: 5px;'>({{course.properties.np_course_rating_count}}) </div>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.np-card-content.np-card-padding.np-card-content-vertical {
|
||||
border-radius: 0 8px 8px 0;
|
||||
}
|
||||
@media screen and (max-width: 1024px) {
|
||||
.np-card-content.np-card-padding.np-card-content-vertical {
|
||||
border-radius: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.np-card-image {
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-left-radius: 8px;
|
||||
}
|
||||
@media screen and (max-width: 1024px) {
|
||||
.np-card-image {
|
||||
border-top-right-radius: 8px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(".np-card-content-description").css('font-size','16px !important')
|
||||
$(".np-card-content-description").css('color','white !important')
|
||||
$(".np-card-content-description").css('font-family', 'Lexend !important')
|
||||
</script>
|
||||
@ -0,0 +1,96 @@
|
||||
{% assign is_ghost_lp = "" %}
|
||||
|
||||
{% for category in learning_path.categories %}
|
||||
{% if category.name == "Ghost Learning Path" %}
|
||||
{% assign is_ghost_lp = "display:none" %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<div class="np-card np-no-horizontal-padding" style="{{is_ghost_lp}}">
|
||||
<div class="np-card-container" style="border-radius: 8px;">
|
||||
<div class="np-learning-path">
|
||||
<img
|
||||
alt="{{ learning_path.name }}"
|
||||
class="np-card-image np-learning-path-image"
|
||||
src="{{ learning_path.image_url }}"
|
||||
/>
|
||||
<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>
|
||||
|
||||
<div class="np-hidden-mobile np-card-content-description">
|
||||
{{ learning_path.description }}
|
||||
</div>
|
||||
|
||||
<div class="np-hidden-mobile np-card-content-progress
|
||||
np-button-color" style='color: #15824B;'>
|
||||
{% t shared.progress, count: learning_path.progress %}
|
||||
</div>
|
||||
|
||||
<div class="np-hidden-mobile np-card-progress-bar-container" style='border-radius: 40px;'>
|
||||
<div
|
||||
style="width: {{ learning_path.progress }}%; background: #15824B; border-radius: 40px;"
|
||||
class="np-button-background-color np-card-progress-bar">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="np-card-content-footer">
|
||||
<a
|
||||
class="np-button"
|
||||
{% if learning_path.enrolled? %}
|
||||
{% if learning_path.current_item.course? %}
|
||||
href="{% route 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 %}
|
||||
style='background: linear-gradient(90deg, #089FB7 0%, #15824B 100%); font-weight: 800; border-radius: 8px;'
|
||||
>
|
||||
{% if learning_path.enrolled? == false %}
|
||||
{% t shared.enroll %}
|
||||
{% elsif learning_path.started? == false %}
|
||||
{% t shared.learning_path.start %}
|
||||
{% elsif learning_path.completed? %}
|
||||
{% t shared.learning_path.view %}
|
||||
{% else %}
|
||||
{% t shared.continue %}
|
||||
{% endif %}
|
||||
</a>
|
||||
<span class="np-hidden-mobile np-learning-path-items">
|
||||
<span class="np-learning-path-items-count">
|
||||
{{ learning_path.items.count }} {% t shared.course_vocabulary.plural, key: current_school.course_vocabulary %}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.np-learning-path .np-card-content.np-card-padding.np-card-content-vertical {
|
||||
border-radius: 0 8px 8px 0;
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
.np-learning-path .np-card-content.np-card-padding.np-card-content-vertical {
|
||||
border-radius: 8px;
|
||||
}
|
||||
}
|
||||
.np-learning-path .np-card-image {
|
||||
border-top-left-radius: 8px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-left-radius: 8px;
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
.np-learning-path .np-card-image {
|
||||
border-top-right-radius: 8px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,46 @@
|
||||
<div class="np-card np-event-card">
|
||||
<div class="np-card-container">
|
||||
<div class="np-card-content-training-event">
|
||||
<h3 class="np-card-content-title">
|
||||
{{ training_event.title }}
|
||||
</h3>
|
||||
<div class="np-card-content-subtitle">
|
||||
{% t shared.event_types, key: training_event.event_type %}
|
||||
</div>
|
||||
<div class="np-card-training-session">
|
||||
<span class="np-card-content-label" style='border-radius: 4px; opacity: 0.15;'>
|
||||
{% t .next_session %}
|
||||
</span>
|
||||
<div class="np-card-training-session-date">
|
||||
<div>
|
||||
<div class="np-card-training-session-date-month">
|
||||
{{ training_event.sessions.first.month }}
|
||||
</div>
|
||||
<div class="np-card-training-session-date-year np-opacity-50">
|
||||
{{ training_event.sessions.first.year }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-card-training-session-date-day">
|
||||
{% if training_event.sessions.first.day < 10 %}0{% endif %}{{ training_event.sessions.first.day }}
|
||||
</div>
|
||||
<div class="np-button-background-color np-card-training-session-date-bar" style='border-right: 16px solid #089FB7;'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-card-content np-card-content-vertical np-card-padding">
|
||||
<div class="np-card-training-sessions">
|
||||
<span class="np-card-training-sessions-label">
|
||||
{% t .sessions, count: training_event.sessions.size %}
|
||||
</span>
|
||||
<a
|
||||
class="np-button"
|
||||
href="{% route training_session, id: training_event.sessions.first.id %}"
|
||||
style='background: linear-gradient(90deg, #089FB7 0%, #15824B 100%); border-radius: 8px;'
|
||||
|
||||
>
|
||||
{% t shared.view %}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,62 @@
|
||||
{% assign topic_classname = topic | split: " " %}
|
||||
|
||||
<div class="courses-carousel np-carousel" data-topic="{{ topic_classname | join: '-' | downcase }}">
|
||||
{% if items.any? %}
|
||||
{% assign sorted_items =items | sort: "name" %}
|
||||
{% for course in sorted_items %}
|
||||
|
||||
{% comment %} USED FOR PROGRESS FILTER {% endcomment %}
|
||||
{% assign course_status = "" %}
|
||||
|
||||
{% if course.started? == false %}
|
||||
{% assign course_status = "not-started" %}
|
||||
{% elsif course.completed? %}
|
||||
{% assign course_status = "completed" %}
|
||||
{% elsif course.started? %}
|
||||
{% assign course_status = "in-progress" %}
|
||||
{% endif %}
|
||||
|
||||
{% if topic == "Not Categorized" %}
|
||||
<div class="np-carousel-card {{course_status}}"> {% include "cards_course" with course %}</div>
|
||||
{% else %}
|
||||
{% for category in course.categories %}
|
||||
{% if category.name == topic %}
|
||||
<div class="np-carousel-card {{course_status}}"> {% include "cards_course" with course %}</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
$(".courses-carousel").not('.slick-initialized').slick({
|
||||
slidesToShow: 3,
|
||||
cssEase: 'linear',
|
||||
prevArrow: '<i class="fal fa-chevron-left"></i>',
|
||||
nextArrow: '<i class="fal fa-chevron-right"></i>',
|
||||
infinite: false,
|
||||
responsive: [
|
||||
{
|
||||
breakpoint: 1170,
|
||||
settings: {
|
||||
slidesToShow: 2,
|
||||
}
|
||||
},
|
||||
{
|
||||
breakpoint: 768,
|
||||
settings: {
|
||||
slidesToShow: 1,
|
||||
slidesToScroll: 1,
|
||||
dots: false,
|
||||
arrows: true,
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
@ -0,0 +1,37 @@
|
||||
<div class="events-carousel np-carousel np-carousel-bg-blue" id="events-carousel">
|
||||
{% if items.any? %}
|
||||
{% for training_event in items %}
|
||||
<div class="np-carousel-card"> {% include "cards_training_event" with training_event %}</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
$(".events-carousel").slick({
|
||||
slidesToShow: 3,
|
||||
prevArrow: '<i class="fal fa-chevron-left"></i>',
|
||||
nextArrow: '<i class="fal fa-chevron-right"></i>',
|
||||
infinite: false,
|
||||
dots: false,
|
||||
arrows: true,
|
||||
responsive: [
|
||||
{
|
||||
breakpoint: 1170,
|
||||
settings: {
|
||||
slidesToShow: 2,
|
||||
}
|
||||
},
|
||||
{
|
||||
breakpoint: 768,
|
||||
settings: {
|
||||
slidesToShow: 1,
|
||||
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
@ -0,0 +1,100 @@
|
||||
{% assign used_instructor_names = "" %}
|
||||
|
||||
<div class="instructors-carousel np-carousel" id="instructors-carousel">
|
||||
<div class="np-carousel-card">
|
||||
<div class="instructor-slide">
|
||||
<div class="instructor-image" style='height:160px; width: 160px;'>
|
||||
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/charlie+1.png" />
|
||||
</div>
|
||||
<div class="instructor-info">
|
||||
<div class="instructor-name">Charlie Bencivenga</div>
|
||||
<a href="mailto:cbencivenga@northpass.com" target="_blank" class="instructor-email" style='color: #089FB7;'>cbencivenga@northpass.com</a>
|
||||
<div class="instructor-joined">Senior Manager, Solutions Engineering</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-carousel-card">
|
||||
<div class="instructor-slide">
|
||||
<div class="instructor-image" style='height:160px; width: 160px;'>
|
||||
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/norm-headshot.png" />
|
||||
</div>
|
||||
<div class="instructor-info">
|
||||
<div class="instructor-name">Norm Rasmussen</div>
|
||||
<a href="mailto:norm@northpass.com" target="_blank" class="instructor-email" style='color: #089FB7;'>norm@northpass.com</a>
|
||||
<div class="instructor-joined">Enterprise Customer Success Manager</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-carousel-card">
|
||||
<div class="instructor-slide">
|
||||
<div class="instructor-image" style='height:160px; width: 160px;'>
|
||||
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/nergis2.png" />
|
||||
</div>
|
||||
<div class="instructor-info">
|
||||
<div class="instructor-name">Nergis Tepeli</div>
|
||||
<a href="mailto:ntepeli@northpass.com" target="_blank" class="instructor-email" style='color: #089FB7;'>ntepeli@northpass.com</a>
|
||||
<div class="instructor-joined">Customer Success Manager</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="np-carousel-card">
|
||||
<div class="instructor-slide">
|
||||
<div class="instructor-image" style='height:160px; width: 160px;'>
|
||||
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/brian.png" />
|
||||
</div>
|
||||
<div class="instructor-info">
|
||||
<div class="instructor-name">Brian Bastante</div>
|
||||
<a href="mailto:bbastante@northpass.com" target="_blank" class="instructor-email" style='color: #089FB7;'>support@northpass.com</a>
|
||||
<div class="instructor-joined">Technical Support Specialist</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-carousel-card">
|
||||
<div class="instructor-slide">
|
||||
<div class="instructor-image" style='height:160px; width: 160px;'>
|
||||
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/headshot_3.png" />
|
||||
</div>
|
||||
<div class="instructor-info">
|
||||
<div class="instructor-name">Kasia Cholewa</div>
|
||||
<a href="mailto:paula@northpass.com" target="_blank" class="instructor-email" style='color: #089FB7;'>support@northpass.com</a>
|
||||
<div class="instructor-joined">Technical Support Specialist</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
$(".instructors-carousel").slick({
|
||||
slidesToShow: 2.5,
|
||||
prevArrow: '<i class="fal fa-chevron-left"></i>',
|
||||
nextArrow: '<i class="fal fa-chevron-right"></i>',
|
||||
infinite: false,
|
||||
dots: false,
|
||||
arrows: true,
|
||||
responsive: [
|
||||
{
|
||||
breakpoint: 1170,
|
||||
settings: {
|
||||
slidesToShow: 2,
|
||||
}
|
||||
},
|
||||
{
|
||||
breakpoint: 768,
|
||||
settings: {
|
||||
slidesToShow: 1,
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.instructors-carousel .fa-chevron-right:before {
|
||||
right: -7px !important;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,4 @@
|
||||
{% comment %} <i class="far fa-lock-alt np-course-outline-content-activity-icon-locked"></i> {% endcomment %}
|
||||
<span class="np-course-outline-content-activity-link">
|
||||
{{ activity.title }}
|
||||
</span>
|
||||
@ -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="{{ class }}"
|
||||
>
|
||||
{{ activity.title }}
|
||||
</a>
|
||||
@ -0,0 +1,21 @@
|
||||
<div class="col-xs-12 np-top-image-spacing np-course-banner">
|
||||
<div class="np-course-banner-overlay"></div>
|
||||
<img
|
||||
src="{{ course.image_url }}"
|
||||
class="np-course-banner-image"
|
||||
alt="{{ course.name }}"
|
||||
/>
|
||||
<div class="np-course-info np-course-banner-info">
|
||||
<div class="np-course-title">{{ course.name }}</div>
|
||||
{% include "course_details_review" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.fas.fa-star {
|
||||
color: white;
|
||||
}
|
||||
.fas.fa-star {
|
||||
line-height: 1.15;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,60 @@
|
||||
<div class="np-card-container">
|
||||
<div class="row np-course-content np-card-padding-dynamic" style='background: #00283D;'>
|
||||
{% include "course_banner" %}
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
{% include "course_description" %}
|
||||
|
||||
{% comment %} {% if course.categories.any? %}
|
||||
<div class="np-card-content-divider">
|
||||
{% include "course_categories" %}
|
||||
</div>
|
||||
{% endif %} {% endcomment %}
|
||||
|
||||
{% if course.instructors.any? %}
|
||||
<div class="np-card-content-divider">
|
||||
{% include "course_instructors" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if course.events.any? %}
|
||||
<div class="np-card-content-divider">
|
||||
{% include "course_events" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="np-grid-spacing col-xs-12 col-sm-6">
|
||||
<div class="np-top-cta">
|
||||
{% include "course_progress_and_cta" %}
|
||||
</div>
|
||||
{% include "course_outline" %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
@media only screen and (min-width: 768px) {
|
||||
body {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-areas: "header" "nav" "main" "footer" "powered";
|
||||
grid-template-rows: 120px 50px 1fr 160px 60px;
|
||||
}
|
||||
header {
|
||||
grid-area: header;
|
||||
}
|
||||
nav {
|
||||
grid-area: nav;
|
||||
margin-bottom: 17px;
|
||||
}
|
||||
main {
|
||||
grid-area: main;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
footer {
|
||||
grid-area: footer;
|
||||
}
|
||||
.np-powered-by {
|
||||
grid-area: powered;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,36 @@
|
||||
{% 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-course-details">
|
||||
<div class="np-course-detail">
|
||||
<strong>{{ activities_count }}</strong>
|
||||
<span class="np-details-label">
|
||||
{% if activities_count == 1 %}Activity{% else %}Activities{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
<div class="np-course-detail">
|
||||
</div>
|
||||
<div class="np-course-detail">
|
||||
{% if course.properties.course_length contains 'missing property' %}
|
||||
missing property: course.properties.course_length
|
||||
{% else %}
|
||||
{% if course.properties.course_length %}
|
||||
{% if course.properties.course_length > 0 %}
|
||||
<strong>{{course.properties.course_length}}</strong> mins<span class="np-details-label">Duration</span>
|
||||
{% else %}
|
||||
<div> </div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.np-course-details {
|
||||
text-shadow: 1px 1px black;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,60 @@
|
||||
{% 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-course-details">
|
||||
<div class="np-course-detail" id='hideable'>
|
||||
<strong>{{ activities_count }}</strong>
|
||||
<span class="np-details-label">
|
||||
{% if activities_count == 1 %}Activity{% else %}Activities{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
<div class="np-course-detail">
|
||||
{% if course.properties.course_length contains 'missing property' %}
|
||||
missing property: course.properties.course_length
|
||||
{% else %}
|
||||
{% if course.properties.course_length %}
|
||||
{% if course.properties.course_length > 0 %}
|
||||
<strong>{{course.properties.course_length}}</strong> mins<span class="np-details-label">Duration</span>
|
||||
{% else %}
|
||||
<div> </div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="np-course-detail course-detail-rating">
|
||||
<div class='course-detail-rating-stars' style='display: flex; flex-wrap: nowrap;'>
|
||||
{% for i in (1..5) %}
|
||||
{% if course.properties.np_course_rating >= i %}
|
||||
<svg width="20" height="19" viewBox="0 0 20 19" preserveAspectRatio fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10 0L12.5863 6.44033L19.5106 6.90983L14.1846 11.3597L15.8779 18.0902L10 14.4L4.12215 18.0902L5.81535 11.3597L0.489435 6.90983L7.41374 6.44033L10 0Z" fill="#089FB7"/>
|
||||
</svg>
|
||||
{% else %}
|
||||
<svg width="20" height="19" viewBox="0 0 20 19" preserveAspectRatio fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path opacity="0.25" d="M10 0L12.5863 6.44033L19.5106 6.90983L14.1846 11.3597L15.8779 18.0902L10 14.4L4.12215 18.0902L5.81535 11.3597L0.489435 6.90983L7.41374 6.44033L10 0Z" fill="#089FB7"/>
|
||||
</svg>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<span class="np-details-label" style= 'display: flex;'>
|
||||
{{course.properties.np_course_rating}} <div style='font-weight: 500; padding-left: 5px;'>({{course.properties.np_course_rating_count}}) </div>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.course-detail-rating {
|
||||
align-self: flex-end;
|
||||
}
|
||||
.course-detail-rating-stars {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
.course-detail-rating-stars {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,52 @@
|
||||
<h3 class="np-card-heading">
|
||||
Meet the Instructor
|
||||
</h3>
|
||||
<div class='np-flex'>
|
||||
{% for instructor in course.instructors limit: 2 %}
|
||||
<div class="np-content-instructors-content-item">
|
||||
<div class="instructor-image">
|
||||
<img
|
||||
src="{{ instructor.avatar_url }}"
|
||||
class="np-content-instructors-content-image"
|
||||
alt="{{ instructor.name }}"
|
||||
style='border-radius: 50%;'
|
||||
/>
|
||||
</div>
|
||||
<div class="np-content-instructors-content-description" style='margin: auto 1rem;'>
|
||||
<div class="np-content-instructors-content-name">
|
||||
{{ instructor.name }}
|
||||
</div>
|
||||
<div class="np-content-instructors-content-info">
|
||||
{{ instructor.title }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<style>
|
||||
.instructor-image {
|
||||
background: #001E2E;
|
||||
border-radius: 50%;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-width: 100px;
|
||||
}
|
||||
.instructor-image img {
|
||||
border-radius: 50%;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
@media only screen and (min-width: 768px) and ( max-width: 920px) {
|
||||
.np-flex {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
@media only screen and ( max-width: 630px) {
|
||||
.np-flex {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,73 @@
|
||||
<div class="np-card-container np-card-padding-large">
|
||||
{% include "course_banner" %}
|
||||
<div class="np-top-cta">
|
||||
{% include "course_progress_and_cta" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if course.progress == 0 %}
|
||||
<div class="np-card-container np-card-padding np-card-spacing">
|
||||
{% include "course_description" %}
|
||||
</div>
|
||||
<div class="np-card-container np-card-padding np-card-spacing">
|
||||
{% include "course_outline" %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="np-card-container np-card-padding np-card-spacing">
|
||||
{% include "course_outline" %}
|
||||
</div>
|
||||
<div class="np-card-container np-card-padding np-card-spacing">
|
||||
{% include "course_description" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} {% if course.categories.any? %}
|
||||
<div class="np-card-container np-card-padding np-card-spacing">
|
||||
{% include "course_categories" %}
|
||||
</div>
|
||||
{% endif %} {% endcomment %}
|
||||
|
||||
{% if course.instructors.any? %}
|
||||
<div class="np-card-container np-card-padding np-card-spacing">
|
||||
{% include "course_instructors" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if course.events.any? %}
|
||||
<div class="np-card-container np-card-padding np-card-spacing">
|
||||
{% include "course_events" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<style>
|
||||
.np-card-container {
|
||||
background: #00283D !important;
|
||||
}
|
||||
@media only screen and (max-width: 630px) {
|
||||
.np-course-info.np-course-banner-info {
|
||||
position: absolute;
|
||||
bottom: 1.5rem;
|
||||
left: 1.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
width: 90%;
|
||||
height: 80%;
|
||||
}
|
||||
}
|
||||
@media only screen and (max-width: 360px) {
|
||||
#hideable {
|
||||
display: none;
|
||||
}
|
||||
.np-course-details {
|
||||
justify-content: space-between;
|
||||
}
|
||||
.np-course-info.np-course-banner-info {
|
||||
left: 0;
|
||||
margin: auto 1rem;
|
||||
}
|
||||
.np-course-banner .np-course-title {
|
||||
margin-bottom: 2.5rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,38 @@
|
||||
<div class="np-course-outline">
|
||||
<div class="np-text-title np-course-outline-title" style='color: #FFFFFF; opacity: 0.5;'>
|
||||
{% t .header, key: current_school.course_vocabulary %}
|
||||
</div>
|
||||
<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 np-text-title-bold np-text-title-bold">
|
||||
{{ section.name }}
|
||||
</div>
|
||||
<ol class="np-course-outline-content-activity">
|
||||
{% for activity in section.activities %}
|
||||
|
||||
<li class="np-course-outline-content-activity-list">
|
||||
{% if activity.completed? %}
|
||||
<i class="fas fa-check np-course-outline-content-activity-icon"></i>
|
||||
{% if activity.locked? %}
|
||||
{% include "course_activity_locked" %}
|
||||
{% else %}
|
||||
{% include "course_activity_unlocked", class: "np-course-outline-content-activity-link-completed" %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<i class="icon-course-not-started np-course-outline-content-activity-icon"></i>
|
||||
{% if activity.locked? %}
|
||||
{% include "course_activity_locked" %}
|
||||
{% else %}
|
||||
{% include "course_activity_unlocked", class: "np-course-outline-content-activity-link" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,47 @@
|
||||
<div class="np-top-cta-progress-content">
|
||||
<div class="np-top-cta-progress-title np-text-title">
|
||||
{% t .header %}
|
||||
</div>
|
||||
<div class="np-progress-bar-container" style='border-radius: 40px;'>
|
||||
<div
|
||||
style="width: {{ course.progress }}%; background: #15824B; border-radius: 40px;"
|
||||
class="np-button-background-color np-card-progress-bar">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="np-top-cta-progress-text
|
||||
{% if course.completed? %} np-color-success {% else %} np-button-color {% endif %}
|
||||
"
|
||||
style='color: #15824B;'>
|
||||
{% t shared.progress, count: course.progress %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% 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" style='background: linear-gradient(90deg, #089FB7 0%, #15824B 100%); font-weight: 800; border-radius: 8px;'>
|
||||
{% t .retake, key: current_school.course_vocabulary %}
|
||||
</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<a
|
||||
class="np-top-button np-button-font-color np-button np-button-big"
|
||||
style='background: linear-gradient(90deg, #089FB7 0%, #15824B 100%); font-weight: 800; border-radius: 8px; margin-right: 24px;'
|
||||
{% 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 %}
|
||||
>
|
||||
{% 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 %}
|
||||
</a>
|
||||
{% endif %}
|
||||
@ -0,0 +1,78 @@
|
||||
{% assign rating = course.properties.np_course_rating %}
|
||||
|
||||
{% if isButton %}
|
||||
<div class="np-ratings-container np-ratings-button" onclick='showPopup("ratingsModal")'>
|
||||
{% else %}
|
||||
<div class="np-ratings-container">
|
||||
{% endif %}
|
||||
<div class="rating-group-static">
|
||||
<div class="fas fa-star-half {% if rating >= 0.5 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star {% if rating >= 1.0 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star-half {% if rating >= 1.5 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star {% if rating >= 2.0 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star-half {% if rating >= 2.5 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star {% if rating >= 3.0 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star-half {% if rating >= 3.5 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star {% if rating >= 4.0 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star-half {% if rating >= 4.5 %}star-gold{% endif %}"></div>
|
||||
<div class="fas fa-star {% if rating == 5.0 %}star-gold{% endif %}"></div>
|
||||
</div>
|
||||
<div class="np-course-rating">{{ course.properties.np_course_rating }}</div>
|
||||
<div class="np-course-rating-count">({{course.properties.np_course_rating_count}})</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
|
||||
.np-ratings-container {
|
||||
display:flex;
|
||||
align-items:center;
|
||||
font-size:0.75rem;
|
||||
color:#fff;
|
||||
font-weight:500;
|
||||
}
|
||||
|
||||
.np-ratings-button {
|
||||
background:transparent;
|
||||
outline:none;
|
||||
border: 2px solid transparent;
|
||||
transition:border-color 0.2s;
|
||||
border-radius:4px;
|
||||
cursor:pointer;
|
||||
padding: 1px 6px;
|
||||
}
|
||||
|
||||
.np-ratings-button:hover { border: 2px solid #E6E9EA; }
|
||||
|
||||
.np-course-rating-count {
|
||||
color:#bec2c6;
|
||||
margin-left:3px;
|
||||
}
|
||||
|
||||
.rating-group-static {
|
||||
margin-right:8px;
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.rating-group-static .fa-star,
|
||||
.rating-group-static .fa-star-half {
|
||||
color: #EBECED;
|
||||
font-size: 1.15rem;
|
||||
margin: 0 1px 3px;
|
||||
}
|
||||
|
||||
.rating-group-static .fa-star-half {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
}
|
||||
|
||||
.rating-group-static .fa-star{
|
||||
margin-left: -22px;
|
||||
}
|
||||
|
||||
.rating-group-static .star-gold{ color: #F7BB17; }
|
||||
|
||||
@media (min-width:768px) {
|
||||
.np-ratings-button { margin-right:24px; }
|
||||
}
|
||||
|
||||
</style>
|
||||
@ -0,0 +1,112 @@
|
||||
{% assign topic_classname = topic | split: " " %}
|
||||
|
||||
<div class="np-progress-filter-wrapper">
|
||||
{% if label %}
|
||||
<div class="np-progress-filter-label">{{ label }}</div>
|
||||
{% endif %}
|
||||
<div class="progress-filter filter-select-wrapper select-wrapper np-button" data-topic="{{ topic_classname | join: '-' | downcase }}" style="border-radius: 8px;">
|
||||
<select >
|
||||
<option selected disabled hidden>{{ default_option}}</option>
|
||||
<option value="a">All Courses</option>
|
||||
<option value="n">Not Started</option>
|
||||
<option value="i">In Progress</option>
|
||||
<option value="c">Completed</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.np-progress-filter-label {
|
||||
color: rgba(255, 255, 255, 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;
|
||||
align-items: center;
|
||||
}
|
||||
.filter-select-wrapper {
|
||||
position: relative;
|
||||
padding:0;
|
||||
border: 2px solid rgba(255, 255, 255, 0.25);
|
||||
color: #fff;
|
||||
height:auto;
|
||||
text-transform: none;
|
||||
background: transparent;
|
||||
border-radius:0;
|
||||
}
|
||||
.filter-select-wrapper:hover {
|
||||
background:transparent;
|
||||
color:#fff;
|
||||
}
|
||||
.select-items {
|
||||
position: absolute;
|
||||
background-color: #062531;
|
||||
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: rgba(255, 255, 255, 0.5);
|
||||
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: 9px 66px 9px 20px;
|
||||
position: relative;
|
||||
color:#fff;
|
||||
}
|
||||
.select-selected::after {
|
||||
content:"\f078";
|
||||
font-family: "Font Awesome 5 Pro";
|
||||
position: absolute;
|
||||
width:20px;
|
||||
height:100%;
|
||||
color:rgba(255, 255, 255, 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(255, 255, 255, 0.25);
|
||||
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: #062531;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -0,0 +1,118 @@
|
||||
<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 %}
|
||||
{% if website_navigation.external? %}
|
||||
<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 %}
|
||||
style='color: white;opacity: 0.5;''
|
||||
>
|
||||
{{ website_navigation.name }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% 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 }}"
|
||||
>
|
||||
{% if social_media_link.name == 'linkedin' %}
|
||||
<i class="np-footer-social-links-icon
|
||||
fab fa-linkedin-in"
|
||||
style='color: #089FB7;'
|
||||
></i>
|
||||
{% else %}
|
||||
<i class="np-footer-social-links-icon
|
||||
fab fa-{{ social_media_link.name }}"
|
||||
style='color: #089FB7;'
|
||||
></i>
|
||||
{% endif %}
|
||||
</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 np-fc-white np-opacity-50">
|
||||
{% t .need_help %}
|
||||
</div>
|
||||
<div class="np-footer-support-item np-footer-support-email np-fc-white np-opacity-50">
|
||||
{% t .email %}
|
||||
</div>
|
||||
<a
|
||||
class="np-footer-support-item np-footer-support-link np-button-color"
|
||||
href="mailto:{{ website_footer.school_customer_service_email }}"
|
||||
>
|
||||
{% comment %} {{ website_footer.school_customer_service_email }} {% endcomment %}
|
||||
support@northpass.com
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<style>
|
||||
.np-footer {
|
||||
background: #001e2e !important;
|
||||
}
|
||||
.np-powered-by {
|
||||
background: #001e2e !important;
|
||||
text-transform: uppercase !important;
|
||||
font-size: 12px !important;
|
||||
font-weight: bold;
|
||||
}
|
||||
.np-powered-by-link {
|
||||
color: rgba(256,256,256,0.25) !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$(".np-footer-navigation-link[href='https://change_to_mail.com'").attr("href", "mailto:support@northpass.com")
|
||||
</script>
|
||||
<script>
|
||||
window.intercomSettings = {
|
||||
api_base: "https://api-iam.intercom.io",
|
||||
app_id: "xocco3tv"
|
||||
};
|
||||
</script>
|
||||
<script>
|
||||
// We pre-filled your app ID in the widget URL: 'https://widget.intercom.io/widget/xocco3tv'
|
||||
(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/xocco3tv';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(document.readyState==='complete'){l();}else if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();
|
||||
</script>
|
||||
@ -0,0 +1,11 @@
|
||||
{% 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=Lexend:wght@100;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.css" integrity="sha512-wR4oNhLBHf7smjy0K4oqzdWumd+r5/+6QO/vDda76MW5iug4PT7v86FoEkySIJft3XA0Ae6axhIvHrqwm793Nw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js" type="text/javascript"></script>
|
||||
@ -0,0 +1,294 @@
|
||||
<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"
|
||||
>
|
||||
<img
|
||||
alt="{{ current_person.name }}"
|
||||
class="np-header-avatar-image"
|
||||
src="{{ current_person.avatar_url }}"
|
||||
/>
|
||||
</button>
|
||||
{% endif %}
|
||||
</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 %}
|
||||
|
||||
<div class="np-hidden-mobile np-header-desktop-nav">
|
||||
<ul class="np-header-desktop-nav-list">
|
||||
{% 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 %}
|
||||
|
||||
{% if current_person.signed_in? %}
|
||||
{% if current_person.properties.language_test == true %}
|
||||
<div class="dropdown">
|
||||
<div onclick="myFunction()" class="dropbtn">Language<i onclick="myFunction()" class="far fa-angle-down" style="padding-left:5px;"></i></div>
|
||||
<div id="myDropdown" class="dropdown-content">
|
||||
<a onclick="setLang('Spanish')">ES</a>
|
||||
<hr class="divider">
|
||||
<a onclick="setLang('English')">EN</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
</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
|
||||
>
|
||||
<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">
|
||||
<a class="np-header-avatar-tooltip-navigation-link" onclick="buildURL(window.location.pathname)" style="cursor:pointer">
|
||||
Default
|
||||
</a>
|
||||
{% 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"
|
||||
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 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>
|
||||
|
||||
{% include "messages" %}
|
||||
|
||||
<script>
|
||||
if (window.location.pathname === "/app") {
|
||||
const headerTag = document.querySelector(".np-header");
|
||||
headerTag.classList.add("np-header-absolute");
|
||||
}
|
||||
|
||||
$(".np-header-desktop-nav-link[href='https://change_to_mail.com'").attr("href", "mailto:support@northpass.com")
|
||||
/*
|
||||
function buildURL(path) {
|
||||
const url = "https://academy.getpixel.io" + path + "?first_name={{current_person.first_name}}&last_name={{current_person.last_name}}&email={{current_person.email}}"
|
||||
window.location.href = url
|
||||
}
|
||||
*/
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
/* When the user clicks on the button,
|
||||
toggle between hiding and showing the dropdown content */
|
||||
function myFunction() {
|
||||
document.getElementById("myDropdown").classList.toggle("show");
|
||||
}
|
||||
|
||||
// Close the dropdown if the user clicks outside of it
|
||||
window.onclick = function(event) {
|
||||
if (!event.target.matches('.dropbtn')) {
|
||||
var dropdowns = document.getElementsByClassName("dropdown-content");
|
||||
var i;
|
||||
for (i = 0; i < dropdowns.length; i++) {
|
||||
var openDropdown = dropdowns[i];
|
||||
if (openDropdown.classList.contains('show')) {
|
||||
openDropdown.classList.remove('show');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.hr.divider {
|
||||
border-top: 4px solid black;
|
||||
border-radius: 5px;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.dropbtn {
|
||||
color: white;
|
||||
padding: 13px;
|
||||
font-size: 16px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
margin-right: 20px;
|
||||
border-radius: 5px;
|
||||
max-height: 44px;
|
||||
font-weight: 500;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
text-align: center;
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #001e2e;
|
||||
min-width: 120px;
|
||||
overflow: auto;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
|
||||
z-index: 1000;
|
||||
border-radius: 4px;
|
||||
font-weight: 500;
|
||||
border-radius: 10px;
|
||||
border: 1px solid rgba(255, 255, 255, .5);
|
||||
-webkit-background-clip: padding-box; /* for Safari */
|
||||
background-clip: padding-box; /* for IE9+, Firefox 4+, Opera, Chrome */
|
||||
}
|
||||
|
||||
.dropdown-content a {
|
||||
color: white;
|
||||
opacity: 0.5;
|
||||
padding: 12px 16px;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown a:hover {
|
||||
opacity: 1;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.show {display: block;}
|
||||
</style>
|
||||
@ -0,0 +1,28 @@
|
||||
{% if learning_path.instructors.any? %}
|
||||
<div class="np-card-content-divider">
|
||||
<h3 class="np-card-heading">
|
||||
{% t shared.instructors %}
|
||||
</h3>
|
||||
<div class="np-content-instructors-content row">
|
||||
{% for instructor in learning_path.instructors %}
|
||||
<div class="np-content-instructors-content-item col-xs-12 col-lg">
|
||||
<div class='instructor-image'>
|
||||
<img
|
||||
src="{{ instructor.avatar_url }}"
|
||||
class="np-content-instructors-content-image"
|
||||
alt="{{ instructor.name }}"
|
||||
>
|
||||
</div>
|
||||
<div class="np-content-instructors-content-description">
|
||||
<div class="np-content-instructors-content-name">
|
||||
{{ instructor.name }}
|
||||
</div>
|
||||
<div class="np-content-instructors-content-info np-text-light">
|
||||
{{ instructor.title }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@ -0,0 +1,43 @@
|
||||
{% if learning_path.enrolled? %}
|
||||
<div class="np-top-cta-progress-content">
|
||||
<div class="np-top-cta-progress-title np-text-title">
|
||||
{% t .progress %}
|
||||
</div>
|
||||
<div class="np-progress-bar-container" style='border-radius: 40px;'>
|
||||
<div
|
||||
style="width: {{ learning_path.progress }}%; background: #15824B; border-radius: 40px;"
|
||||
class="np-button-background-color np-card-progress-bar">
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-top-cta-progress-text
|
||||
{% if learning_path.completed? %} np-color-success {% else %} np-button-color {% endif %}
|
||||
"
|
||||
style='color:#15824B'>
|
||||
{% t shared.progress, count: learning_path.progress %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<a
|
||||
class="np-top-button np-button-font-color np-button np-button-big"
|
||||
style='background: linear-gradient(90deg, #089FB7 0%, #15824B 100%); border-radius: 8px;'
|
||||
{% 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 %}
|
||||
{% t shared.learning_path.start %}
|
||||
{% elsif learning_path.completed? %}
|
||||
{% t shared.learning_path.view %}
|
||||
{% else %}
|
||||
{% t shared.continue %}
|
||||
{% endif %}
|
||||
</a>
|
||||
@ -0,0 +1,80 @@
|
||||
<div class="np-progress-ring-wrapper">
|
||||
<svg
|
||||
class="progress-ring"
|
||||
width="{{ size }}"
|
||||
height="{{ size }}">
|
||||
<circle
|
||||
class="progress-ring__circle circle-{{name}}"
|
||||
stroke="#15824B"
|
||||
stroke-width="10"
|
||||
fill="transparent"
|
||||
r="52"
|
||||
cx="60"
|
||||
cy="60"/>
|
||||
<circle
|
||||
class="progress-ring__circle circle-bg"
|
||||
stroke="{{ stroke_color_bg }}"
|
||||
stroke-width="10"
|
||||
fill="transparent"
|
||||
r="52"
|
||||
cx="60"
|
||||
cy="60"/>
|
||||
<text x="50%" y="50%" text-anchor="middle" stroke="t#fff" stroke-width="1px" fill="#fff" dy=".3em">{{count}}</text>
|
||||
</svg>
|
||||
<h3 class="np-card-content-title np-progress-circle-label">
|
||||
{{name}}
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
var circle = document.getElementsByClassName("circle-{{name}}")[0];
|
||||
var radius = circle.r.baseVal.value;
|
||||
var circumference = radius * 2 * Math.PI;
|
||||
|
||||
circle.style.strokeDasharray = `${circumference} ${circumference}`;
|
||||
circle.style.strokeDashoffset = `${circumference}`;
|
||||
|
||||
function setProgress(percent) {
|
||||
const offset = circumference - percent * circumference;
|
||||
circle.style.strokeDashoffset = offset;
|
||||
}
|
||||
setProgress('{{ count | divided_by: total }}')
|
||||
})
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.np-progress-ring-wrapper {
|
||||
flex: 0;
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
padding: 1.5rem 1rem 1rem 1rem;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.progress-ring circle { stroke-linecap: round; }
|
||||
.progress-ring text { font-size:2rem; }
|
||||
.progress-ring__circle {
|
||||
transition: stroke-dashoffset 0.35s;
|
||||
transform: rotate(-90deg);
|
||||
transform-origin: center;
|
||||
}
|
||||
|
||||
.np-progress-circle-label {
|
||||
color:#fff;
|
||||
text-transform: uppercase;
|
||||
opacity:0.35;
|
||||
font-size:0.875rem;
|
||||
margin-top:1rem;
|
||||
}
|
||||
|
||||
@media (min-width:768px) {
|
||||
.np-progress-ring-wrapper { padding: 1.5rem 0.4rem 1rem 0.4rem;}
|
||||
}
|
||||
|
||||
@media (min-width:1170px) {
|
||||
.progress-ring text { font-size:2.5rem; }
|
||||
.np-progress-ring-wrapper { padding: 1.5rem 1rem 1rem 1rem;}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,106 @@
|
||||
<div class="np-homepage-featured np-faq np-max-width">
|
||||
<div class="np-homepage-featured-text">
|
||||
<div class="np-homepage-headline">
|
||||
Frequently Asked Questions
|
||||
</div>
|
||||
</div>
|
||||
<div class="row np-faqs" style='margin:0;'>
|
||||
<div class="col-md-6">
|
||||
<div class="np-accordion">
|
||||
<div class="accordion-btn">
|
||||
<i class="fal fa-plus"></i>
|
||||
<div class="accordion-title"><strong>Q:</strong> Do I need to be a customer before creating a course on Northpass?</div>
|
||||
</div>
|
||||
<div class="accordion-panel">
|
||||
<div class="accordion-panel-content">
|
||||
<p><strong>A:</strong> Absolutely not! We often set up trials for folks shopping for an LMS. To set up your trial, click the following link and you’ll be intro’d to the correct reps to get started.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-accordion">
|
||||
<div class="accordion-btn">
|
||||
<i class="fal fa-plus"></i>
|
||||
<div class="accordion-title"><strong>Q:</strong> Do I need to sign up for an advanced package option?</div>
|
||||
</div>
|
||||
<div class="accordion-panel">
|
||||
<div class="accordion-panel-content">
|
||||
<p><strong>A:</strong> No, Northpass product packages have a variety of services. Our Essentials package is great to get started, especially with internal training. Looking for something more, both our Premium and Enterprise packages allow for advanced options including custom design and data connections via webhooks and API. To learn more, please contact your rep or support@northpass.com.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-accordion">
|
||||
<div class="accordion-btn">
|
||||
<i class="fal fa-plus"></i>
|
||||
<div class="accordion-title"><strong>Q:</strong> There are a lot of courses, which one should I start with as a new admin?</div>
|
||||
</div>
|
||||
<div class="accordion-panel">
|
||||
<div class="accordion-panel-content">
|
||||
<p><strong>A:</strong> We recommend starting with the Getting Started with Northpass Learning Path. It has all the foundational information needed to become familiar with our platform. Even more, you can pick and choose which information you’d like to view in the Learning Path.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="np-accordion">
|
||||
<div class="accordion-btn">
|
||||
<i class="fal fa-plus"></i>
|
||||
<div class="accordion-title"><strong>Q:</strong> I cannot find a course on a topic, how should I share this feedback?</div>
|
||||
</div>
|
||||
<div class="accordion-panel">
|
||||
<div class="accordion-panel-content">
|
||||
<p><strong>A:</strong> Thank you for letting us know that you’d like to learn something more. Please reach out to our support team at support@northpass.com and our service team is happy to assist.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-accordion">
|
||||
<div class="accordion-btn">
|
||||
<i class="fal fa-plus"></i>
|
||||
<div class="accordion-title"><strong>Q:</strong> I'm having a billing issue, who should I contact?</div>
|
||||
</div>
|
||||
<div class="accordion-panel">
|
||||
<div class="accordion-panel-content">
|
||||
<p><strong>A:</strong> Great question and happy to help! For all billing inquiries, please reach out to billing@northpass.com, and our finance and operations team is happy to assist.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-accordion">
|
||||
<div class="accordion-btn">
|
||||
<i class="fal fa-plus"></i>
|
||||
<div class="accordion-title"><strong>Q:</strong> I'm interested in setting up an integration that's not listed. What should I do?</div>
|
||||
</div>
|
||||
<div class="accordion-panel">
|
||||
<div class="accordion-panel-content">
|
||||
<p><strong>A:</strong> Excellent, we always look forward to new integrations. Please reach out to support@northpass.com and your assigned rep when applicable. They will be happy to help further and loop in the respective folks to scope out the integration further.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.clicked {
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
.accordion-panel {
|
||||
border-radius: 0 0 8px 8px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
let accordions = document.getElementsByClassName("accordion-btn");
|
||||
|
||||
for (let i = 0; i < accordions.length; i++) {
|
||||
accordions[i].addEventListener("click", function() {
|
||||
this.querySelector('.fal').classList.toggle("fa-plus");
|
||||
this.querySelector('.fal').classList.toggle("fa-minus");
|
||||
this.classList.toggle("clicked");
|
||||
let panel = this.nextElementSibling;
|
||||
panel.classList.toggle("panel-open");
|
||||
if (panel.style.maxHeight) {
|
||||
panel.style.maxHeight = null;
|
||||
} else {
|
||||
panel.style.maxHeight = panel.scrollHeight + "px";
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@ -0,0 +1,27 @@
|
||||
<div class="np-homepage-featured np-homepage-topics np-max-width">
|
||||
<div class="np-homepage-featured-text">
|
||||
<div class="np-homepage-headline">
|
||||
Popular Topics
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-topics-list row">
|
||||
<div class="col-xs-12 np-stretch-content">
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/5119428-course-publishing">Course Publishing</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3725263-northpass-course-marketplace">Course Marketplace</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/5469361-iorad-integration">Interactive Content</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3310302-what-is-a-learning-path-and-how-do-i-use-it">Learning Paths</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3310269-overview-of-authentication-options">Authentication</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3310239-edit-domain-name">Edit Domain Name</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/collections/1919694-analytics">Analytics</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3310282-instructor-led-training">Instructor Led Training</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/collections/2428172-apps-integrations">Integrations</a>
|
||||
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/collections/1919697-advanced-options">Advanced Options</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.topic-button {
|
||||
border-radius: 8px;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,76 @@
|
||||
{% capture quotes %}
|
||||
<svg width="52" height="40" viewBox="0 0 52 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.656 39.76C9.072 39.76 6.048 38.3787 3.584 35.616C1.19467 32.7787 0 29.12 0 24.64C0 21.056 0.858667 17.584 2.576 14.224C4.29333 10.864 6.68267 7.91467 9.744 5.376C12.0458 3.46723 14.5797 1.98056 17.3458 0.916004C19.0264 0.269172 20.8915 0.900303 22.0271 2.29798C23.9806 4.70233 22.9585 8.2866 20.493 10.1624C19.6235 10.8239 18.8405 11.5431 18.144 12.32C16.2027 14.4853 15.232 16.3147 15.232 17.808C15.232 18.48 15.3813 19.2267 15.68 20.048C16.0533 20.7947 16.9493 21.5787 18.368 22.4C20.2347 23.5947 21.5413 24.9013 22.288 26.32C23.0347 27.664 23.408 29.232 23.408 31.024C23.408 33.712 22.4 35.84 20.384 37.408C18.368 38.976 15.792 39.76 12.656 39.76ZM40.32 39.76C36.736 39.76 33.712 38.3787 31.248 35.616C28.8587 32.7787 27.664 29.12 27.664 24.64C27.664 21.056 28.5227 17.584 30.24 14.224C31.9573 10.864 34.3467 7.91467 37.408 5.376C39.7098 3.46723 42.2437 1.98056 45.0098 0.916003C46.6904 0.269172 48.5555 0.900303 49.6911 2.29797C51.6446 4.70233 50.6225 8.2866 48.157 10.1624C47.2875 10.8239 46.5045 11.5431 45.808 12.32C43.8667 14.4853 42.896 16.3147 42.896 17.808C42.896 18.48 43.0453 19.2267 43.344 20.048C43.7173 20.7947 44.6133 21.5787 46.032 22.4C47.8987 23.5947 49.2053 24.9013 49.952 26.32C50.6987 27.664 51.072 29.232 51.072 31.024C51.072 33.712 50.064 35.84 48.048 37.408C46.032 38.976 43.456 39.76 40.32 39.76Z" fill="url(#paint0_linear_2_541)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_2_541" x1="1.24909e-07" y1="19.88" x2="53.648" y2="19.88" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#089FB7"/>
|
||||
<stop offset="1" stop-color="#15824B"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
{% endcapture %}
|
||||
|
||||
<div class="np-homepage-featured np-homepage-tips-tricks np-max-width">
|
||||
<div class="np-homepage-featured-text">
|
||||
<div class="np-homepage-headline">
|
||||
Testimonials From Our Customers
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tips-tricks-carousel np-carousel" id="tips-tricks-carousel">
|
||||
<div class="np-carousel-card">
|
||||
<div class="quote-block np-carousel-bg-blue">
|
||||
<i class="quotes-left"> {{quotes}} </i>
|
||||
<div class="quote">
|
||||
Northpass is an easy-to-manage LMS with the freedom to create and scale learning programs the way we want. Ultra-fast authoring and intelligent administration, along with integrated learning experiences. Plus, responsive support.
|
||||
</div>
|
||||
</div>
|
||||
<div class="quote-author-info">
|
||||
Administrator in Real Estate<br>
|
||||
<span>> 1000 employees</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-carousel-card">
|
||||
<div class="quote-block np-carousel-bg-blue">
|
||||
<i class="quotes-left"> {{quotes}} </i>
|
||||
<div class="quote ">
|
||||
Northpass is an LMS with the learner experience front and center. Their UI principles lead to a clean and focused learner experience that removes the typical distractions of finding and beginning courses in an LMS. They have over the years made significant investments into the admin experience and platform integrations which have helped it grow into areas where other established players would have had a leg up. Their customer success management approach is excellent and one that I routinely use as the bar with other software vendors we utilize.
|
||||
</div>
|
||||
</div>
|
||||
<div class="quote-author-info">
|
||||
Executive Sponsor in Retail<br>
|
||||
<span>> 1000 employees</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="np-carousel-card">
|
||||
<div class="quote-block np-carousel-bg-blue">
|
||||
<i class="quotes-left"> {{quotes}} </i>
|
||||
<div class="quote ">
|
||||
The ability to build a learning management for both internal employees and external clients is harder to find than I would have thought. Because Northpass is focused solely on the ability to build on-demand training, it's simplicity allows you to use those courses in whatever way you want/need.
|
||||
</div>
|
||||
</div>
|
||||
<div class="quote-author-info">
|
||||
Client Enablement Manager Mid-Market<br>
|
||||
<span>51-1000 employees</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
$("#tips-tricks-carousel").slick({
|
||||
slidesToShow: 1,
|
||||
slidesToScroll: 1,
|
||||
cssEase: 'linear',
|
||||
prevArrow: '<i class="fal fa-chevron-left"></i>',
|
||||
nextArrow: '<i class="fal fa-chevron-right"></i>',
|
||||
infinite: true,
|
||||
adaptiveHeight: true
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
@ -0,0 +1,25 @@
|
||||
<nav class="np-sub-navigation">
|
||||
<div class="np-sub-navigation-content">
|
||||
{% for link in navigations.sub_navigation %}
|
||||
<div class="np-sub-navigation-content-item {{ link.active_class }}">
|
||||
<div class="np-sub-navigation-content-item-bar np-button-background-color"></div>
|
||||
<a class="np-sub-navigation-content-item-link" href="{{ link.url }}">
|
||||
{{ link.label }}
|
||||
</a>
|
||||
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</nav>
|
||||
<style>
|
||||
.np-sub-navigation {
|
||||
background: #00283D;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
$(".np-sub-navigation-content-item-link[href='/app/catalog']").parent().remove()
|
||||
$(".np-sub-navigation-content-item-link:contains('Home')").attr('href', '/app/homepage')
|
||||
$(".np-sub-navigation-content-item-link:contains('Courses')").attr('href', '/app/new-dashboard')
|
||||
$(".np-sub-navigation-content-item-link:contains('Courses')").text('Dashboard')
|
||||
|
||||
</script>
|
||||
@ -0,0 +1,60 @@
|
||||
{% if training_session.approved? %}
|
||||
<div class="np-training-session-cta-note">
|
||||
<i class="far fa-check np-training-session-icon"></i>
|
||||
{% t .registered %}
|
||||
</div>
|
||||
{% elsif training_session.pending? %}
|
||||
<div class="np-training-session-cta-note np-training-session-cta-note-error">
|
||||
{% t .pending %}
|
||||
</div>
|
||||
{% elsif training_session.denied? %}
|
||||
<div class="np-training-session-cta-note np-training-session-cta-note-error">
|
||||
{% t .denied %}
|
||||
</div>
|
||||
{% elsif training_session.too_late? %}
|
||||
<div class="np-training-session-cta-note np-training-session-cta-note-error">
|
||||
{% t .too_late %}
|
||||
</div>
|
||||
{% elsif training_session.no_seats? %}
|
||||
<div class="np-training-session-cta-note np-training-session-cta-note-error">
|
||||
{% t .no_seats %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<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-top-button np-button np-button-big np-button-secondary">
|
||||
{% t .unregister %}
|
||||
</button>
|
||||
{% else %}
|
||||
<button type="submit" class="np-top-button np-button-font-color np-button np-button-big">
|
||||
{% t .unregister %}
|
||||
</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">
|
||||
{% t .register %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.np-button-big {
|
||||
background: linear-gradient(90deg, #089FB7 0%, #15824B 100%) !important;
|
||||
border-radius: 8px !important;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,14 @@
|
||||
<div class="np-card-training-session-date">
|
||||
<div class="np-button-background-color np-card-training-session-date-bar"></div>
|
||||
<div class="np-card-training-session-date-day" style='margin-right: 5px;'>
|
||||
{{ training_session.day }}
|
||||
</div>
|
||||
<div>
|
||||
<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>
|
||||
</div>
|
||||
@ -0,0 +1,6 @@
|
||||
{%comment%}<h3 class="np-card-heading">
|
||||
{% t .header %}
|
||||
</h3>{%endcomment%}
|
||||
<div class="np-card-text">
|
||||
{{ training_event.description }}
|
||||
</div>
|
||||
@ -0,0 +1,24 @@
|
||||
<div class="np-card-spacing-large">
|
||||
{% include "training_session_date" %}
|
||||
|
||||
<div class="np-training-session-time">
|
||||
<i class="fal fa-clock np-button-color np-training-session-icon" style='color: #089FB7;'></i>
|
||||
{{ training_session.time_period }} {{ training_session.time_zone }}
|
||||
</div>
|
||||
|
||||
{% if training_session.location %}
|
||||
<div class="np-training-session-location">
|
||||
<i class="fal fa-map-marker-alt np-button-color np-training-session-icon"></i>
|
||||
{{ training_session.location }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if training_session.session_url %}
|
||||
<div class="np-training-session-location">
|
||||
<i class="fal fa-map-marker-alt np-button-color np-training-session-icon"></i>
|
||||
<a href="{{ training_session.session_url }}" class="np-button-color" target="_blank" >
|
||||
{{ training_session.session_url }}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
@ -0,0 +1,10 @@
|
||||
<div class="np-top-vocabulary np-text-title">
|
||||
{% t shared.event_types, key: training_event.event_type %}
|
||||
<i class="fal fa-users-class np-button-color np-training-session-icon" style='color: #089FB7;'></i>
|
||||
</div>
|
||||
<div class="np-top-title">
|
||||
<a href="{% route home %}" class="np-back-button" aria-label="{% t shared.go_back %}">
|
||||
<i class="far fa-arrow-left np-hidden-mobile np-icon-back"></i>
|
||||
</a>
|
||||
{{ training_event.title }}
|
||||
</div>
|
||||
@ -0,0 +1,88 @@
|
||||
<div class="np-dashboard-resources progress-card" style="padding-bottom: 0;">
|
||||
<div class="np-card" style="display:inline-flex; margin: auto; padding: 0px !important;">
|
||||
<div class="np-card-container np-card-content" style="border-radius: 8px; display: inline-block; margin: auto;">
|
||||
{% if courses.enrolled.any? %}
|
||||
{% assign countComplete = 0 %}
|
||||
{% assign countInProgress = 0 %}
|
||||
{% assign countNotStarted = 0 %}
|
||||
{% assign countTotal = 0 | times: 1.0 %}
|
||||
{% for course in courses.enrolled %}
|
||||
{% assign countTotal = countTotal | plus: 1 %}
|
||||
{% if course.progress == 100 %}
|
||||
{% assign countComplete = countComplete | plus: 1 %}
|
||||
{% endif %}
|
||||
{% if course.progress > 0 and course.progress < 100 %}
|
||||
{% assign countInProgress = countInProgress | plus: 1 %}
|
||||
{% endif %}
|
||||
{% if course.progress == 0 %}
|
||||
{% assign countNotStarted = countNotStarted | plus: 1 %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<ul class="progress-circle-list">
|
||||
<li>
|
||||
{%
|
||||
include "progress_circle",
|
||||
name:'Completed' ,
|
||||
count: countComplete ,
|
||||
total: countTotal,
|
||||
size: "120",
|
||||
stroke_color: "rgba(43, 178, 76, 1)",
|
||||
stroke_color_bg: "rgba(255, 255, 255, 0.15)"
|
||||
%}
|
||||
</li>
|
||||
<li>
|
||||
{%
|
||||
include "progress_circle",
|
||||
name:'In Progress' ,
|
||||
count: countInProgress ,
|
||||
total: countTotal,
|
||||
size: "120",
|
||||
stroke_color: "rgba(43, 178, 76, 1)",
|
||||
stroke_color_bg: "rgba(255, 255, 255, 0.15)"
|
||||
%}
|
||||
</li>
|
||||
</ul>
|
||||
{% else %}
|
||||
{% capture message %}
|
||||
{% t shared.zero_state.courses.index,
|
||||
key: current_school.course_vocabulary
|
||||
%}
|
||||
{% endcapture %}
|
||||
{% include "courses_zero_state", message: message %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<style>
|
||||
.progress-circle-list {
|
||||
padding: 0;
|
||||
list-style-type: none !important;
|
||||
justify-content: space-around;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
max-width: 400px;
|
||||
margin: auto;
|
||||
}
|
||||
.progress-card {
|
||||
border-radius: 8px;
|
||||
background: #001E2E;
|
||||
height: 260px;
|
||||
padding: 0;
|
||||
display: inline-flex;
|
||||
}
|
||||
.np-progress-ring-wrapper {
|
||||
padding: 0 0.5rem;
|
||||
}
|
||||
@media screen and (max-width: 1023px) {
|
||||
.progress-card {
|
||||
height: 190px;
|
||||
margin-bottom: 2.187rem;
|
||||
display: flex;
|
||||
}
|
||||
.progress-circle-list {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,53 @@
|
||||
{% include "header" %}
|
||||
{% include "sub_navigation" %}
|
||||
<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" %}
|
||||
|
||||
<style>
|
||||
.course-detail-rating-stars svg > * {
|
||||
fill: white;
|
||||
}
|
||||
.course-detail-rating-stars svg {
|
||||
scale: 1.2;
|
||||
margin: 0 3px;
|
||||
}
|
||||
.course-detail-rating-stars {
|
||||
margin-bottom: 9px;
|
||||
}
|
||||
.np-course-banner-image {
|
||||
border-radius: 8px;
|
||||
}
|
||||
.np-course-banner-overlay {
|
||||
border-radius: 8px;
|
||||
}
|
||||
.np-top-cta {
|
||||
border-radius: 8px;
|
||||
}
|
||||
@media screen and (max-width: 1170px) {
|
||||
.course-detail-rating-stars {
|
||||
margin-bottom: 5px;
|
||||
margin-left: -2px;
|
||||
}
|
||||
.course-detail-rating-stars svg {
|
||||
scale: 1;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
.course-detail-rating-stars {
|
||||
margin-bottom: 3px;
|
||||
margin-left: -1px;
|
||||
}
|
||||
.course-detail-rating-stars svg {
|
||||
scale: 0.8;
|
||||
margin: 0 -1px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,3 @@
|
||||
<script>
|
||||
window.location.replace('/app/homepage');
|
||||
</script>
|
||||
@ -0,0 +1,62 @@
|
||||
{% include "header" %}
|
||||
{% 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"
|
||||
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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% include "sub_navigation" %}
|
||||
<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" style='opacity: 50%'>
|
||||
{{ homepage.featured_courses_subheadline }}
|
||||
</div>
|
||||
</div>
|
||||
{% if courses.in_catalog.any? %}
|
||||
<div class="np-homepage-featured-courses row">
|
||||
{% for course in courses.in_catalog %}
|
||||
{% if course.properties.featured %}
|
||||
<div class="col-xs-12 col-sm-8 col-md-12" style="margin:auto;">
|
||||
{% include "cards_featured_course" with course %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% 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>
|
||||
|
||||
{% include "section_popular_topics" %}
|
||||
|
||||
{% include "section_tips_tricks" %}
|
||||
|
||||
{% include "section_faqs" %}
|
||||
|
||||
</main>
|
||||
{% include "footer" %}
|
||||
<script>
|
||||
$(".np-sub-navigation-content-item-link:contains('Home')").parent().addClass("np-sub-navigation-content-item-active")
|
||||
</script>
|
||||
@ -0,0 +1,54 @@
|
||||
{% include "header" %}
|
||||
{% include "sub_navigation" %}
|
||||
<main class="np-main np-max-width np-page-container">
|
||||
<div class="np-hidden-mobile" id="learning-path-desktop">
|
||||
{% include "learning_path_desktop_view" %}
|
||||
</div>
|
||||
<div class="np-hidden-desktop" id="learning-path-mobile">
|
||||
{% include "learning_path_mobile_view" %}
|
||||
</div>
|
||||
</main>
|
||||
{% include "footer" %}
|
||||
|
||||
<style>
|
||||
.np-top-image, .np-learning-path-outline-course-image {
|
||||
border-radius: 8px;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.np-top-image, .np-learning-path-outline-course-image {
|
||||
border-radius: 8px 8px 0 0;
|
||||
}
|
||||
body {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-areas: "header" "nav" "main" "footer" "powered";
|
||||
grid-template-rows: 120px 50px 1fr 160px 60px;
|
||||
}
|
||||
nav {
|
||||
grid-area: nav;
|
||||
margin-bottom: 17px;
|
||||
}
|
||||
header {
|
||||
grid-area: header;
|
||||
}
|
||||
main {
|
||||
grid-area: main;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
footer {
|
||||
grid-area: footer;
|
||||
}
|
||||
.np-powered-by {
|
||||
grid-area: powered;
|
||||
}
|
||||
}
|
||||
.np-top-cta {
|
||||
border-radius: 8px;
|
||||
}
|
||||
.np-card-container, .np-card-container-training-session {
|
||||
border-radius: 8px;
|
||||
}
|
||||
.np-card-content {
|
||||
border-radius: 8px;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,41 @@
|
||||
{% include "header" %}
|
||||
{% include "sub_navigation" %}
|
||||
<main class="np-main np-learning-paths np-subpage-container np-max-width">
|
||||
<div class="np-learning-paths-main">
|
||||
<div class="np-resource-title">
|
||||
{% t shared.learning_paths %}
|
||||
</div>
|
||||
<div class="np-resource-subtitle">
|
||||
{% t .subtitle %}.
|
||||
</div>
|
||||
{% include "learning_paths_index", items: learning_paths.available %}
|
||||
</div>
|
||||
</main>
|
||||
{% include "footer" %}
|
||||
|
||||
<style>
|
||||
@media only screen and (min-width: 768px) {
|
||||
body {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-areas: "header" "subnav" "main" "footer" "powered";
|
||||
grid-template-rows: 120px 50px 1fr 160px 60px;
|
||||
}
|
||||
header {
|
||||
grid-area: header;
|
||||
}
|
||||
nav {
|
||||
grid-area: subnav;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
main {
|
||||
grid-area: main;
|
||||
}
|
||||
footer {
|
||||
grid-area: footer;
|
||||
}
|
||||
.np-powered-by {
|
||||
grid-area: powered;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,230 @@
|
||||
|
||||
{% include "header" %}
|
||||
{% include "course_version_outdated_alert", courses: courses.enrolled %}
|
||||
{% include "sub_navigation" %}
|
||||
<main class="np-main np-dashboard np-subpage-container np-max-width" style='background: #00283D;'>
|
||||
<div class="np-dashboard-header">
|
||||
<div class="np-resource-title">Hi {{current_person.first_name}}! 👋</div>
|
||||
<div class="np-resource-subtitle">This is what's relevant to you right now in Northpass Academy.</div>
|
||||
</div>
|
||||
<div class="row np-flex-center">
|
||||
<div class="col-xs-12 col-md-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>
|
||||
<div class="np-grid-spacing col-xs-12 col-md-4 progress-section">
|
||||
<div class="np-dashboard-resources-title">Course Progress</div>
|
||||
{% include "widget_course_progress" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row dashboard-section-courses">
|
||||
<div class="col-xs-12">
|
||||
{% if courses.enrolled.any? %}
|
||||
{% if categories.enrolled.any? %}
|
||||
{% assign all_categories = categories.enrolled | map: "name" %}
|
||||
{% for enrolled_category in all_categories %}
|
||||
<div class="np-md-flex-wrapper">
|
||||
<div>
|
||||
<div class="np-dashboard-resources-title">
|
||||
Topic
|
||||
</div>
|
||||
<div class="np-dashboard-resources-category">
|
||||
{{ enrolled_category }}
|
||||
</div>
|
||||
</div>
|
||||
{%
|
||||
include "filter_by_progress",
|
||||
label: "Filter by Progress:",
|
||||
default_option: "All Courses",
|
||||
topic: enrolled_category,
|
||||
%}
|
||||
</div>
|
||||
{%
|
||||
include "carousel_courses",
|
||||
items: courses.enrolled,
|
||||
topic: enrolled_category,
|
||||
%}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% assign enrolled_category = "Not Categorized" %}
|
||||
<div class="np-md-flex-wrapper">
|
||||
<div>
|
||||
<div class="np-dashboard-resources-title">
|
||||
Topic
|
||||
</div>
|
||||
<div class="np-dashboard-resources-category">
|
||||
{{ enrolled_category }}
|
||||
</div>
|
||||
</div>
|
||||
{%
|
||||
include "filter_by_progress",
|
||||
label: "Filter by Progress:",
|
||||
default_option: "All Courses",
|
||||
topic: enrolled_category,
|
||||
%}
|
||||
</div>
|
||||
{%
|
||||
include "carousel_courses",
|
||||
items: courses.enrolled,
|
||||
topic: enrolled_category,
|
||||
%}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="np-dashboard-resources-title" style="margin-bottom:19px;">
|
||||
Courses
|
||||
</div>
|
||||
{% capture message %}
|
||||
{% t shared.zero_state.courses.index,
|
||||
key: current_school.course_vocabulary
|
||||
%}
|
||||
{% endcapture %}
|
||||
<div style="margin-bottom:3rem;">
|
||||
{% include "courses_zero_state", message: message %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row dashboard-section-events">
|
||||
<div class="col-xs-12">
|
||||
<div class="np-dashboard-resources-title" style="margin-bottom: 5px;">
|
||||
Training Events
|
||||
</div>
|
||||
<div class="np-dashboard-resources-category" style="margin-bottom: 19px;">
|
||||
Discover online events to maximize your learning
|
||||
</div>
|
||||
{% if training_events.enrolled.any? %}
|
||||
{%
|
||||
include "carousel_events",
|
||||
items: training_events.enrolled,
|
||||
%}
|
||||
{% else %}
|
||||
<div style="margin-bottom:3rem;">
|
||||
{% include "training_events_zero_state" %}
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row dashboard-section-instructors">
|
||||
<div class="col-xs-12">
|
||||
<div class="np-dashboard-resources-title">
|
||||
Meet the Team
|
||||
</div>
|
||||
{%
|
||||
include "carousel_instructors",
|
||||
%}
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
{% include "footer" %}
|
||||
|
||||
<style>
|
||||
@media screen and (max-width: 1024px) {
|
||||
.progress-section {
|
||||
padding-left: 0.5rem
|
||||
}
|
||||
}
|
||||
</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 = $('.courses-carousel[data-topic="' + filterGroup + '"]');
|
||||
|
||||
carouselGroup.slick('slickUnfilter');
|
||||
|
||||
if (selectedFilter != "all-courses") {
|
||||
carouselGroup.slick('slickFilter', `.${selectedFilter}`);
|
||||
}
|
||||
|
||||
}
|
||||
$(".np-sub-navigation-content-item-link:contains('Dashboard')").parent().addClass("np-sub-navigation-content-item-active")
|
||||
</script>
|
||||
@ -0,0 +1,27 @@
|
||||
{% 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 np-results-term">"{{ 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" %}
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,46 @@
|
||||
{% include "header" %}
|
||||
{% include "sub_navigation" %}
|
||||
<main class="np-main np-training-events np-subpage-container np-max-width">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-10">
|
||||
<div class="np-resource-title">
|
||||
{% t .title %}
|
||||
</div>
|
||||
<div class="np-resource-subtitle">
|
||||
{% t .subtitle %}.
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-2">
|
||||
{% include "training_events_filter" %}
|
||||
</div>
|
||||
</div>
|
||||
{% include "training_events_index" %}
|
||||
</main>
|
||||
{% include "footer" %}
|
||||
|
||||
<style>
|
||||
@media only screen and (min-width: 768px) {
|
||||
body {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-areas: "header" "subnav" "main" "footer" "powered";
|
||||
grid-template-rows: 120px 50px 1fr 160px 60px;
|
||||
}
|
||||
header {
|
||||
grid-area: header;
|
||||
}
|
||||
nav {
|
||||
grid-area: subnav;
|
||||
}
|
||||
main {
|
||||
grid-area: main;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
footer {
|
||||
grid-area: footer;
|
||||
}
|
||||
.np-powered-by {
|
||||
grid-area: powered;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,34 @@
|
||||
{% include "header" %}
|
||||
<main class="np-main np-training-session np-max-width np-page-container">
|
||||
<div class="np-hidden-mobile" id="training-session-desktop">
|
||||
{% include "training_session_desktop_view" %}
|
||||
</div>
|
||||
<div class="np-hidden-desktop" id="training-session-mobile">
|
||||
{% include "training_session_mobile_view" %}
|
||||
</div>
|
||||
</main>
|
||||
{% include "footer" %}
|
||||
|
||||
<style>
|
||||
@media only screen and (min-width: 768px) {
|
||||
body {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-areas: "header" "main" "footer" "powered";
|
||||
grid-template-rows: 120px 1fr 160px 60px;
|
||||
}
|
||||
header {
|
||||
grid-area: header;
|
||||
}
|
||||
main {
|
||||
grid-area: main;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
footer {
|
||||
grid-area: footer;
|
||||
}
|
||||
.np-powered-by {
|
||||
grid-area: powered;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user