DoubleVerify has some old templates... Created Copado notes since I'm taking over the account. DataSnipper notes and todos.

This commit is contained in:
Norm Rasmussen
2024-04-29 17:08:37 -04:00
parent 4fbd8329f7
commit 3322549ca5
63 changed files with 5777 additions and 8 deletions

View File

@ -0,0 +1,24 @@
{% if current_school.filtering_enabled? and current_person.filterable_catalog_categories.count > 0 %}
<div class="uk-width-medium-1-6 uk-block uk-padding">
{% t .filter_by_category %}:
<ul class="uk-list uk-list-space">
<li class="uk-margin-top">
{% if query_parameter_value %}
{% capture reset_filters_route %}{{ routes.school_website_catalog_search_path }}?q={{ query_parameter_value }}{% endcapture %}
{% else %}
{% assign reset_filters_route = routes.school_website_catalog_path %}
{% endif %}
<a href="{{ reset_filters_route }}" class="{% unless filter_parameter_value %}uk-text-bold{% endunless %}" data-test="catalog-filter-all">
{% t .all %}
</a>
</li>
{% for filterable_category in current_person.filterable_catalog_categories %}
<li>
<a href="{{ filterable_category.catalog_link }}" class="{% if filterable_category.active? %}uk-text-bold{% endif %}" data-test="catalog-filter-category">
{{ filterable_category.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
{% endif %}

View File

@ -0,0 +1,19 @@
<div class="search-box uk-float-right">
<form class="uk-form search" action="{{ routes.school_website_catalog_search_path }}" accept-charset="UTF-8" method="get">
<input name="utf8" type="hidden" value="✓">
<input type="search" name="q" id="q" placeholder="{% t .search_placeholder %}"
class="search__input" autofocus="autofocus" pattern=".{3,}"
required title="{% t .search_title %}" value="{{ query_parameter_value }}"
data-test="search-input">
<input type="hidden" name="filter[categories_name]" id="filter" value="{{ filter_parameter_value }}">
<div id="search_results_count" class="search__results">
{% if search_result %}
{{ search_result.count }} {% pluralize search_result.count, .results %}
{% endif %}
</div>
<div class="search__submit">
<i class="uk-icon-search search__icon"></i>
<input type="submit" name="commit" value="" class="search__button">
</div>
</form>
</div>

View File

@ -0,0 +1,4 @@
<div class="col-xs-12 col-md-4 spacing-clear">
{% include "certificates_verification" %}
{% include "certificates_metadata" %}
</div>

View File

@ -0,0 +1,59 @@
<div class="np-card spacing-clear">
<div class="np-card-container padding-spacing-8">
<div class="row np-certificate-metadata-row">
<div class="col-xs-6 col-md-6">
<p class="np-certificate-metadata-title" >
{% t .learner %}
</p>
</div>
<div class="col-xs-6 col-md-6">
<p class="np-certificate-metadata-value">
{{certificate.learner_name}}
</p>
</div>
</div>
<div class="line"></div>
{% if certificate.issuer_name_enabled? %}
<div class="row np-certificate-metadata-row">
<div class="col-xs-6 col-md-6">
<p class="np-certificate-metadata-title">
{% t .issued_by %}
</p>
</div>
<div class="col-xs-6 col-md-6">
<p class="np-certificate-metadata-value">
{{ certificate.issuer_name }}
</p>
</div>
</div>
<div class="line"></div>
{% endif %}
<div class="row np-certificate-metadata-row">
<div class="col-xs-6 col-md-6">
<p class="np-certificate-metadata-title" >
{% t .issued_on %}
</p>
</div>
<div class="col-xs-6 col-md-6">
<p class="np-certificate-metadata-value">
{{ certificate.issue_date }}
</p>
</div>
</div>
<div class="line"></div>
<div class="row np-certificate-metadata-row">
<div class="col-xs-6 col-md-6">
<p class="np-certificate-metadata-title" >
{% t .expires_on %}
</p>
</div>
<div class="col-xs-6 col-md-6">
<p class="np-certificate-metadata-value">
{{ certificate.expiration_date_translation }}
</p>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,35 @@
<script type="text/javascript">
const resizeIframe = () => {
const combinedPadding = 16;
const previewIframe = document.getElementById("previewIframe");
const previewIFrameCard = document.getElementById("previewIFrameCard");
const templateInPreviewContainer = previewIframe.contentWindow.document.querySelector('.np-certificate-container');
const previewIframeContentHeight = templateInPreviewContainer.offsetHeight;
const previewIframeContentWidth = templateInPreviewContainer.offsetWidth;
const certificateRatio = previewIframeContentHeight / previewIframeContentWidth;
templateInPreviewContainer.style.margin = 0;
previewIFrameCard.style.height = `${previewIFrameCard.offsetWidth * certificateRatio}px`;
const scaledIframeWidth = previewIFrameCard.offsetWidth - combinedPadding;
const scaledIframeHeight = scaledIframeWidth * certificateRatio;
const scale = scaledIframeHeight / previewIframeContentHeight;
previewIframe.style.transform = `scale(${scale})`;
}
window.onresize = resizeIframe;
</script>
<div class="col-xs-12 col-md-8 np-certificate-iframe-container">
<div class="np-card spacing-clear">
<div id="previewIFrameCard" class="np-card-container np-certificate-card">
<iframe
id="previewIframe"
onload="resizeIframe()"
class="np-certificate-iframe-preview"
srcdoc="{{ certificate.certificate_template_html }}"
></iframe>
</div>
</div>
</div>

View File

@ -0,0 +1,60 @@
<div class="top-bar np-certificate-top-bar-spacing">
<div class="top-bar__container uk-container uk-container-center uk-padding-horizontal np-max-width">
<div class="top-bar__col">
<h2 class="np-certificate-title" >
{{certificate.certificate_name}}
</h2>
</div>
<div class="button-container np-certificate-button-container">
{% if certificate.linkedin_sharing_enabled and current_person.signed_in? and certificate.learner_uuid == current_person.id %}
<a
class="np-button np-certificate-button np-certificate-button-secondary"
href="{{certificate.linkedin_share_url}}"
target="_blank"
>
<i class="fab fa-linkedin np-certificate-share-icon"></i>
{% t .share %}
</a>
{% endif %}
<button
id="print"
type="button"
class="np-button np-certificate-button np-certificate-button-secondary np-certificate-button-print"
>
{% t .print %}
</button>
{% if certificate.generating_pdf %}
<div class="np-button np-certificate-button np-certificate-button-primary np-certificate-spinner-container np-load-button">
<i class="loader fad fa-spinner-third fa-spin np-certificate-spinner-icon np-button-font-color np-load-icon"></i>
</div>
{% else %}
<a
href="{{ certificate.download_url }}"
aria-label="{% t .download %}"
target="_blank"
rel="noopener noreferrer"
download
class="np-button np-certificate-button np-certificate-button-primary np-button-font-color np-download-button"
>
{% t .download %}
</a>
{% endif %}
</div>
</div>
</div>
<style>
.np-download-button
{
background-color: {{ color_palette.button_color }} !important;
color: {{ color_palette.button_font_color }} !important;
}
.np-load-button
{
background-color: {{ color_palette.button_color }} !important;
}
.np-load-icon
{
color: {{ color_palette.button_font_color }} !important;
}
</style>

View File

@ -0,0 +1,15 @@
<div class="np-card spacing-clear np-certificate-verification-card">
<div class="np-card-container np-certificate-verification-container">
<div class="np-certificate-verification-icon-container np-certificate-verification-icon-container-{{certificate.verification_status}}">
<i class="far fa-{{certificate.verification_icon}} np-certificate-verification-icon"></i>
</div>
<div class="np-certificate-verification-info-container">
<h2 class="np-certificate-verification-info-status spacing-clear">
{{certificate.verification_title}}
</h2>
<p class="np-certificate-verification-info-description spacing-clear">
{{certificate.verification_description}}
</p>
</div>
</div>
</div>

View File

@ -0,0 +1,67 @@
<li style="order: {{course.properties.order | round }}" class="uk-width-large-1-2 uk-width-medium-1-2 uk-width-small-1-1 uk-margin-large-bottom school-website-course-tile single-course" data-id="{{ course.id }}" data-progress="{{ course.progress }}">
<div class="uk-panel uk-panel-box uk-panel-box-secondary">
{% if course.ribbon %}
{% if course.properties.coming_soon %}
<div class="uk-panel-badge uk-badge custom-badge">
{% else %}
<div class="uk-panel-badge uk-badge">
{% endif %}
{{ course.ribbon }}
</div>
{% endif %}
<div class="uk-panel-teaser">
<span class="completed-badge {% if course.progress == 100 %}completed-active{% endif %}">Course Completed</span>
{% if current_person.enrolled_in_course? %}
{% if course.properties.coming_soon %}
<a style="background-image:url({{ course.list_image_url }}); cursor: default;" class="main-link ui-code-hack"></a>
{% else %}
<a href="{{ course.cover_path }}" style="background-image:url({{ course.list_image_url }})" class="main-link"></a>
{% endif %}
{% else %}
<a href="{{ course.details_path }}" style="background-image:url({{ course.list_image_url }})" class="main-link">
</a>
{% endif %}
</div>
{% if current_school.filtering_enabled? %}
<span>
{{ course.course_category_names }}
</span>
{% endif %}
<h3 class="custom-title">
{% if course.properties.coming_soon %}
{% if current_person.enrolled_in_course? %}
<a data-test="course-name" style="cursor: text;">{{ course.name }}</a>
{% else %}
<a data-test="course-name" style="cursor: text;">{{ course.name }}</a>
{% endif %}
{% else %}
{% if current_person.enrolled_in_course? %}
<a href="{{ course.cover_path }}" data-test="course-name">{{ course.name }}</a>
{% else %}
<a href="{{ course.details_path }}" data-test="course-name">{{ course.name }}</a>
{% endif %}
{% endif %}
</h3>
<p>{{ course.full_description | strip_html }}</p>
<div class="completed-icon {% if course.progress == 100 %}completed-active{% endif %}"><img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon"></div>
{% if current_person.enrolled_in_course? %}
{% unless course.properties.coming_soon %}
<a href="{{ course.cover_path }}" class="uk-button uk-button-primary school-website-course-tile-action uk-position-bottom-right" data-test="go-to-course-button">{% if course.progress == 100 %}START AGAIN{% else %}{% if course.progress > 0 %}RESUME COURSE{% else %}START COURSE{% endif %}{% endif %}<span>&raquo;</span></a>
{% endunless %}
{% else %}
<a href="{{ course.details_path }}" class="uk-button uk-button-outline school-website-course-tile-action uk-position-bottom-right">
{% if current_school.apps.commerce.active? %}
{{ course.formatted_price }}
{% else %}
{{ course.view_label }}
{% endif %}
</a>
{% endif %}
</div>
</li>

View File

@ -0,0 +1,7 @@
{% if courses.include_courses_to_restart? %}
<div role="alert" class="np-alert np-alert-global np-alert-info">
<div class="np-alert-container uk-container uk-container-center">
{% t .content %}
</div>
</div>
{% endif %}

View File

@ -0,0 +1,33 @@
<div class="np-course-version-outdated-popup np-popup">
<div class="np-popup-positioner">
<i
class="np-course-version-outdated-popup-trigger fas fa-exclamation-circle"
data-toggle-class-on-target="np-popup-tooltip--visible"
data-toggle-target-parent=".np-popup-tooltip"
data-toggle-outside
></i>
<div
class="np-popup-tooltip"
role="tooltip"
aria-hidden="true"
>
<header class="np-popup-header">
<i class="np-popup-header-icon fas fa-exclamation-circle"></i>
<h3 class="np-popup-header-title">
{% t .title %}
</h3>
</header>
<div class="np-popup-body">
<h4>{% t .body.header %}</h4>
<p>{% t .body.content %}</p>
<a
class="np-popup-body-button"
href="{{ path }}"
>
{% t .body.button %}
</a>
</div>
<div class="np-popup-tail"></div>
</div>
</div>
</div>

View File

@ -0,0 +1,22 @@
<div class="uk-width-1-1 uk-padding-large-vertical uk-padding-horizontal uk-border-bottom">
<h2>{% t .my_events %}</h2>
<ul class="uk-list event-list">
{% for event in current_person.upcoming_registered_events.sessions.head %}
{% include "events_list_item" event = event %}
{% endfor %}
{% for event in current_person.upcoming_registered_events.sessions.tail %}
<div class="uk-hidden hideable">
{% include "events_list_item" event = event %}
</div>
{% endfor %}
</ul>
{% if current_person.upcoming_registered_events.additional_sessions? %}
<div class="uk-width-1-1 uk-text-center">
<a href="#" data-uk-toggle="{target: '.hideable'}">
<span class="hideable">{% t .show_all_events %}</span>
<span class="hideable uk-hidden">{% t .show_fewer_events %}</span>
</a>
</div>
{% endif %}
</div>

View File

@ -0,0 +1,9 @@
<div class="uk-width-1-1 uk-padding-large-vertical uk-padding-horizontal uk-border-bottom">
<h2>{% t .title %}</h2>
<div class="uk-margin-bottom sk-text-link">
{% t .subtitle %}
</div>
<a href="/training_events" class="uk-button uk-button-primary">
{% t .button %}
</a>
</div>

View File

@ -0,0 +1,24 @@
<li class="event-list-item">
{% if event.external? %}
{% if event.pending? %}
<span class="sk-badge sk-badge__pending">Pending</span>
{% elsif event.waiting? %}
<span class="sk-badge sk-badge__waiting">Waiting</span>
{% endif %}
{{ event.starts_at }} {% t .is_your %} <span class="uk-text-primary event-list-item__title">{{ event.title }}</span> {% t .event_held_online %}
<div class="event-list-item__actions uk-float-right">
<a href="{{ event.join_url }}" target="_blank">{% t .join %}</a> <i class="actions-ellipsis-button"></i>
</div>
{% endif %}
{% if event.internal? %}
{{ event.starts_at }} {% t .is_your %} <span class="uk-text-primary event-list-item__title">{{ event.title }}</span>
{% if event.location_name %}
{% t .event_held_in %} {{ event.room_name }} {% t .at %} {{ event.location_name }}
{% endif %}
{% if event.session_url %}
<div class="event-list-item__actions uk-float-right">
<a href="{{ event.session_url }}" target="_blank">{% t .join %}</a> <i class="actions-ellipsis-button"></i>
</div>
{% endif %}
{% endif %}
</li>

View File

@ -0,0 +1,24 @@
{% if current_school.filtering_enabled? and current_person.filterable_categories.count > 0 %}
<div class="uk-width-medium-1-6 uk-block uk-padding">
{% t .filter_by_category %}:
<ul class="uk-list uk-list-space">
<li class="uk-margin-top">
{% if query_parameter_value %}
{% capture reset_filters_route %}{{ routes.school_website_search_path }}?q={{ query_parameter_value }}{% endcapture %}
{% else %}
{% assign reset_filters_route = routes.my_content_path %}
{% endif %}
<a href="{{ reset_filters_route }}" class="{% unless filter_parameter_value %}uk-text-bold{% endunless %}">
{% t .all %}
</a>
</li>
{% for filterable_category in current_person.filterable_categories %}
<li>
<a href="{{ filterable_category.link }}" class="{% if filterable_category.active? %}uk-text-bold{% endif %}">
{{ filterable_category.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
{% endif %}

View File

@ -0,0 +1,9 @@
<footer class="footer-main">
<div class="uk-container uk-container-center">
<div class="uk-grid uk-padding-large-left uk-padding-large-right">
<div class="uk-width-small-1-1 footer-logo">
<a href="https://doubleverify.com" class="logo-main"><img src="https://doubleverify.com/wp-content/uploads/2019/10/colour.svg" width="190" alt="image"></a>
</div>
</div>
</div>
</footer>

View File

@ -0,0 +1,146 @@
<style>
body > header > div > nav > div > ul > li:nth-child(1) > a,
body > header > div > nav > div > ul > li:nth-child(2) > a,
body > header > div > nav > div > ul > li:nth-child(3) > a,
body > div.main-content > div.uk-container.uk-container-center > div > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li > div > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a,
body > div.overlay.highlight-overlay > div > div > div > div > p,
body > div.overlay.highlight-overlay > div > div > div > div > p > a,
body > div.certificate-modal.fade-in.show > div > div > h2,
body > div.certificate-modal.fade-in.show > div > div > p,
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note,
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p {
text-indent: -99999px;
line-height: 0;
}
/* HEADER BUTTONS */
body > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*achievments*/
text-indent: 0;
display: block;
content: "CERTIFICATIONS";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "NOUS CONTACTER";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(3) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "Se déconnecter";
line-height: 0px;
}
/* SITE DECRIBTION */
body > div.main-content > div.uk-container.uk-container-center > div > div > p::after {
/*DoubleVerify's purpose is to power media quality and performance for the world's largest brands and agencies. Global advertisers leverage DV's solutions to drive campaign efficiency, protect brand reputation and maximize return on their digital investment. The DVU course curriculum is designed to give you the tools you need to fully realize the benefits of DV's Advertiser Suite. Each course will let you take a self-guided tour of our service offerings, and demonstrate ways to leverage DV's actionable insights in order to achieve your digital campaign objectives.*/
text-indent: 0;
display: block;
content: "L'objectif de DoubleVerify est d'optimiser la qualité et les performances médias pour les plus grandes marques et agences du monde. Les annonceurs globaux utilisent les solutions de DV pour améliorer l'efficacité des leurs campagnes, protéger la réputation de leur marque et maximiser le retour sur leur investissement digital. Le programme de cours DVU est conçu pour vous donner les outils dont vous avez besoin pour profiter pleinement des avantages de la suite publicitaire de DV. Chaque cours vous permettra de faire une visite autoguidée de nos différents services et vous montrera comment utiliser DV au mieux afin doptimiser et d'atteindre les objectifs de votre campagne digitale.";
line-height: 25px;
}
/* COURSE DESCRIBTIONS */
/* COURSE START BUTTONS */
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "COMMENCER LE COURS";
line-height: 45px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "NOUS CONTACTER";
line-height: 0px;
margin-top: -20px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "Se déconnecter";
line-height: 0px;
}
/* CONTACT BUTTON */
body > div.overlay.highlight-overlay > div > div > div > div > p > a::after {
/*dvusupport@doubleverify.com*/
text-indent: 0;
display: block;
content: "dvusupport@doubleverify.com";
line-height: 0px;
transform: translate(0%, 30px);
}
body > div.overlay.highlight-overlay > div > div > div > div > p::after {
/*For any questions about DV University or DoubleVerify, please contact*/
text-indent: 0;
display: block;
content: "Pour toute question concernant DV University ou DoubleVerify, veuillez contacter";
line-height: 25px;
padding-top: 40px;
margin-bottom: -10px;
margin-top: -70px;
font-size: 1.05em;
}
body > div.certificate-modal.fade-in.show > div > div > h2::after {
/*achievments*/
text-indent: 0;
display: block;
content: "Certifications";
line-height: 0px;
padding-bottom: 10px;
}
body > div.certificate-modal.fade-in.show > div > div > p::after {
/*To earn each certification, please complete the course requirements indicated for each badge on the right.*/
text-indent: 0;
display: block;
content: "Pour obtenir chaque certification, veuillez compléter les cours comme indiqué à droite de chaque badge.";
line-height: 32px;
}
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note::after {
/*Please note that shareable versions of your badges and certifications are delivered via email within one business day of completing your assigned courses. Please reach out to dvupport@doubleverify.com with any questions..*/
text-indent: 0;
display: block;
content: "Veuillez noter que les versions partageables de vos badges et certifications sont envoyées par e-mail dans un délai d'un jour ouvrable après la fin des cours. Veuillez contacter dvusupport@doubleverify.com pour toute question.";
line-height: 20px;
}
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p::after {
/*Complete the course requirements below each badge to unlock these achievements.*/
text-indent: 0;
display: block;
content: "Complete los requisitos del curso debajo de cada insignia para desbloquear estos logros.";
line-height: 30px;
padding-bottom: 10px;
padding-top: 20px;
}
</style>

View File

@ -0,0 +1,134 @@
<style>
body > header > div > nav > div > ul > li:nth-child(1) > a,
body > header > div > nav > div > ul > li:nth-child(2) > a,
body > header > div > nav > div > ul > li:nth-child(3) > a,
body > div.main-content > div.uk-container.uk-container-center > div > div > p,
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a,
body > div.overlay.highlight-overlay > div > div > div > div > p,
body > div.overlay.highlight-overlay > div > div > div > div > p > a,
body > div.certificate-modal.fade-in.show > div > div > h2,
body > div.certificate-modal.fade-in.show > div > div > p,
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note,
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p {
text-indent: -99999px;
line-height: 0;
}
/* HEADER BUTTONS */
body > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*achievments*/
text-indent: 0;
display: block;
content: "ERFOLGE";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "KONTAKT AUFNEHMEN";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(3) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "Sitzung beenden";
line-height: 0px;
}
/* SITE DECRIBTION */
body > div.main-content > div.uk-container.uk-container-center > div > div > p::after {
/*DoubleVerify's purpose is to power media quality and performance for the world's largest brands and agencies. Global advertisers leverage DV's solutions to drive campaign efficiency, protect brand reputation and maximize return on their digital investment. The DVU course curriculum is designed to give you the tools you need to fully realize the benefits of DV's Advertiser Suite. Each course will let you take a self-guided tour of our service offerings, and demonstrate ways to leverage DV's actionable insights in order to achieve your digital campaign objectives.*/
text-indent: 0;
display: block;
content: "Der Zweck von DoubleVerify besteht darin, die Medienqualität und -leistung für die weltweit größten Marken und Agenturen zu verbessern. Globale Werbetreibende nutzen die Lösungen von DV, um die Kampagneneffizienz zu steigern, den Ruf der Marke zu schützen und die Rendite ihrer digitalen Investition zu maximieren. Der Lehrplan des DVU-Kurses wurde entwickelt, um Ihnen die Werkzeuge an die Hand zu geben, die Sie benötigen, um die Vorteile der Advertiser Suite von DV voll auszuschöpfen. Jeder Kurs ermöglicht Ihnen eine selbst geführte Tour durch unsere Serviceangebote und zeigt Möglichkeiten auf, wie Sie die umsetzbaren Erkenntnisse von DV nutzen können, um Ihre digitalen Kampagnenziele zu erreichen.";
line-height: 25px;
}
/* COURSE START BUTTONS */
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "KONTAKT AUFNEHMEN";
line-height: 0px;
margin-top: -20px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "Sitzung beenden";
line-height: 0px;
}
/* CONTACT BUTTON */
body > div.overlay.highlight-overlay > div > div > div > div > p > a::after {
/*dvusupport@doubleverify.com*/
text-indent: 0;
display: block;
content: "dvusupport@doubleverify.com";
line-height: 0px;
transform: translate(0%, 30px);
}
body > div.overlay.highlight-overlay > div > div > div > div > p::after {
/*For any questions about DV University or DoubleVerify, please contact*/
text-indent: 0;
display: block;
content: "Bei Fragen zur DV University oder DoubleVerify wenden Sie sich bitte an";
line-height: 25px;
padding-top: 40px;
margin-bottom: -10px;
margin-top: -70px;
font-size: 1.05em;
}
body > div.certificate-modal.fade-in.show > div > div > h2::after {
/*achievments*/
text-indent: 0;
display: block;
content: "Erfolge";
line-height: 0px;
padding-bottom: 10px;
}
body > div.certificate-modal.fade-in.show > div > div > p::after {
/*To earn each certification, please complete the course requirements indicated for each badge on the right.*/
text-indent: 0;
display: block;
content: "Um die jeweilige Zertifizierung zu erhalten, absolvieren Sie bitte die Kurse, die für jedes Abzeichen auf der rechten Seite angegeben sind.";
line-height: 32px;
}
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note::after {
/*Please note that shareable versions of your badges and certifications are delivered via email within one business day of completing your assigned courses. Please reach out to dvupport@doubleverify.com with any questions..*/
text-indent: 0;
display: block;
content: "Bitte beachten Sie, dass teilbare Versionen Ihrer Abzeichen und Zertifizierungen innerhalb eines Werktages nach Abschluss Ihrer zugeteilten Kurse per E-Mail zugestellt werden. Bitte wenden Sie sich bei Fragen an dvusupport@doubleverify.com.";
line-height: 20px;
}
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p::after {
/*Complete the course requirements below each badge to unlock these achievements.*/
text-indent: 0;
display: block;
content: "Complete los requisitos del curso debajo de cada insignia para desbloquear estos logros.";
line-height: 30px;
padding-bottom: 10px;
padding-top: 20px;
}
</style>

View File

@ -0,0 +1,6 @@
<link rel="stylesheet" media="all" href="{{ routes.schoolkeep_v3_styles_url }}">
<link rel="stylesheet" media="all" href="{{ routes.color_scheme_path }}">
{% if current_school.has_custom_styles? %}
<link rel="stylesheet" media="all" href="{{ routes.custom_styles_path }}">
{% endif %}

View File

@ -0,0 +1,556 @@
<header class="school-website-header uk-z-4">
<div class="uk-container-expand">
<nav class="uk-navbar" data-behavior="dropdown">
<a href="{{ current_school.logo_navigation_url }}" class="uk-brand">
{% if current_school.logo_url %}
<img src="{{ current_school.logo_url }}" alt="{{ current_school.name }}">
{% else %}
<span class="uk-text-large uk-text-bold">{{ current_school.name }}</span>
{% endif %}
</a>
<div class="uk-navbar-flip">
<ul class="uk-navbar-nav uk-hidden-small">
{% for website_navigation in header_navigations %}
<!--<li>
<a href="{{ website_navigation.path }}" {% if website_navigation.external? %} target="_blank" {% endif %}>
{{ website_navigation.name }}
</a>
</li>-->
{% endfor %}
{% search %}
<li class="uk-padding-top">
{% include "search_form" with "" %}
</li>
{% endsearch %}
{% catalog_search %}
<li class="uk-padding-top">
{% include "catalog_search_form" with "" %}
</li>
{% endcatalog_search %}
{% if current_person.signed_in? %}
<!--<li>
<a class="menu-profile-link" href="{{ routes.my_profile_path }}">Profile</a>
</li>-->
{% if current_person.id == "94aeff78-0991-4853-a4d6-2419078ddced" %}{% endif %}
<li>
<a href="#" class="uk-button uk-button-primary get-in-touch-btn" id="achievement-btn">ACHIEVEMENTS</a></li>
</li>
<li>
<a href="#" class="uk-button uk-button-primary get-in-touch-btn" id="get-in-touch">GET IN TOUCH</a></li>
</li>
<li>
<a href="{{ routes.log_out_path }}" class="profile-icon" data-method="delete" rel="nofollow"> <span>{% t .log_out %}</span></a>
</li>
{% for group in current_person.groups %}
{% if group.name == "language dropdown test group" %}
<li class="uk-parent" data-uk-dropdown="{mode:'click'}">
<a href="#" class="uk-button uk-button-primary lang-btn">语Aa</a>
<div class="uk-dropdown uk-dropdown-flip uk-dropdown-navbar">
<ul class="uk-nav uk-nav-navbar">
<li><a onclick="setLang('English')">English</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('Russian')">Russian (Pусский)</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('Japanese')">Japanese (日本語)</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('Spanish')">Spanish (Español)</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('German')">German (Deutsch)</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('French')">French (Français)</a></li>
</ul>
</div>
</li>
{% else %}
<li class="uk-parent" data-uk-dropdown="{mode:'click'}">
<a href="#" class="uk-button uk-button-primary lang-btn">语Aa</a>
<div class="uk-dropdown uk-dropdown-flip uk-dropdown-navbar">
<ul class="uk-nav uk-nav-navbar">
<li><a onclick="setLang('English')">English</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('Spanish')">Spanish (Español)</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('Russian')">Russian (Pусский)</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('Japanese')">Japanese (日本語)</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('German')">German (Deutsch)</a></li>
<li class="uk-nav-divider"></li>
<li><a onclick="setLang('French')">French (Français)</a></li>
</ul>
</div>
</li>
{% endif %}
{% endfor %}
{% else %}
<li><a href="{{ routes.log_in_path }}">{% t .log_in %}</a></li>
{% endif %}
</ul>
<div class="uk-visible-small">
{% search %}
<button class="uk-button uk-button-link uk-navbar-toggle mobile-search-toggle mobile-navbar-toggle" data-uk-toggle="{target:'#mobile-search'}">
</button>
{% endsearch %}
{% catalog_search %}
<button class="uk-button uk-button-link uk-navbar-toggle mobile-search-toggle mobile-navbar-toggle" data-uk-toggle="{target:'#mobile-search'}">
</button>
{% endcatalog_search %}
<a href="#mobile-nav" class="mobile-navbar-toggle uk-navbar-toggle" data-uk-offcanvas></a>
</div>
</div>
</nav>
</div>
</header>
{% search %}
<div id="mobile-search" class="school-website-header uk-visible-small uk-position-top uk-padding uk-block-default uk-flex uk-border-bottom {% if hide_search_box %}uk-hidden {% endif %}">
{% include "search_form" with "" %}
<a class="uk-button uk-button-link" href="{{ routes.my_content_path }}">{% t .cancel %}</a>
</div>
{% endsearch %}
{% catalog_search %}
<div id="mobile-search" class="school-website-header uk-visible-small uk-position-top uk-padding uk-block-default uk-flex uk-border-bottom {% if hide_search_box %}uk-hidden {% endif %}">
{% include "catalog_search_form" with "" %}
<a class="uk-button uk-button-link" href="{{ routes.school_website_catalog_path }}">{% t .cancel %}</a>
</div>
{% endcatalog_search %}
<div id="mobile-nav" class="uk-offcanvas">
<div class="uk-offcanvas-bar uk-offcanvas-bar-flip">
<ul class="uk-nav uk-nav-offcanvas" data-uk-nav>
{% for website_navigation in header_navigations %}
<li>
<a href="{{ website_navigation.path }}" {% if website_navigation.external? %} target="_blank" {% endif %}>
{{ website_navigation.name }}
</a>
</li>
{% endfor %}
{% if current_person.signed_in? %}
<li><a href="{{ routes.my_content_path }}">{{ current_school.my_content_label }}</a></li>
<!--<li><a href="{{ routes.my_profile_path }}">{% t .my_profile %}</a></li>-->
<li class="uk-nav-divider"></li>
<li><a href="{{ routes.log_out_path }}" data-method="delete" rel="nofollow">{% t .log_out %}</a></li>
{% else %}
<li><a href="{{ routes.log_in_path }}">{% t .log_in %}</a></li>
{% endif %}
</ul>
</div>
</div>
<div class="overlay highlight-overlay" id="overlay">
<div class="overlay-table">
<div class="overlay-cell">
<div class="overlay-container">
<button class="overlay-close button-close" id="close-btn" type="button">Close Overlay</button>
<div class="overlay-main-content">
<p class="overlay-description">For any questions about DV University or DoubleVerify, please contact <a href="mailto:dvusupport@doubleverify.com">dvusupport@doubleverify.com</a></p>
</div>
</div>
</div>
</div>
</div>
<div class="certificate-modal fade-in" id="certificate-modal">
<div class="modal-content certificate-modal_content">
<button class="button-close" id="modal2-close-btn"></button>
<div class="modal-text modal-text_full">
<h2>Achievements</h2>
<p>To earn each certification, please complete the course requirements indicated for each badge on the right.</p>
<h3>Certificates</h3>
<div class="all-certificate_wrap">
<div class="all-certificate_list">
<ul class="certificate-list" id="certificate-list">
</ul>
<div class="completed-icon course-locked small-icon">
<img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon">
<img src="https://doubleverify.com/wp-content/uploads/2022/05/course-locked.svg" alt="locked">
</div>
</div>
</div>
<h3>Badges</h3>
<div class="all-course_list" data-current-language="{{current_person.properties.language}}">
<div class="cert-badge-block" data-cert-img="" data-cert-title="" data-cert-name="iq_blueprint" data-cert-id="234061">
<div class="cert-badge-logo">
<img src="https://doubleverify.com/wp-content/uploads/2021/03/DV_ELM_Badges_Blueprint.png" id="iq_blueprint_badge_logo" class="filter-gray iq-badge-logo" alt="Blueprint badge">
</div>
<div class="cert-badge-course iq_blueprint_badge">
{% if current_person.properties.language == 'English' %}
{% assign iq_blueprint_badge_ids = "189c66ba-9d61-4bf8-a2aa-f5a2ddccfa59, 1ec77a63-095e-4e83-adc3-75cb91d91af6, c320ea8c-35ba-4fab-b26c-a7733e719aa1" | split: ','%}
{% else if current_person.properties.language == 'Spanish' %}
{% assign iq_blueprint_badge_ids = "f340cd77-1c7b-49c1-b32d-9203a4b3c71f, d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f, 6b122483-99db-4a43-a200-153cba1698fd" | split: ','%}
{% else if current_person.properties.language == 'Russian' %}
{% assign iq_blueprint_badge_ids = "c57e0f78-0c7c-40a7-ad77-b693cd700745, eeb7f906-60ce-4b35-b76b-b596e284a8f7, 9042ed2e-72ee-4985-8e68-58e0b03f60b5" | split: ','%}
{% else if current_person.properties.language == 'Japanese' %}
{% assign iq_blueprint_badge_ids = "b4097773-a204-422e-819e-b5435aabb8aa, 78fe62de-ab86-4b06-a242-cfa8571dc7c4, 47bc0167-1c08-457d-b214-1eb97ee56279" | split: ','%}
{% else if current_person.properties.language == 'German' %}
{% assign iq_blueprint_badge_ids = "963d6292-388e-4df2-9c94-1e3d601704d7, 30717306-1d11-4183-8ed1-3fb14c8c5e6b, f9e92da3-8350-400f-a949-195cc0dfcb17" | split: ','%}
{% else if current_person.properties.language == 'French' %}
{% assign iq_blueprint_badge_ids = "07d0ae43-49ac-4183-9ef6-56541165b7e4, 2b4cb076-03e9-420a-b4fe-808a5d918452, 6ecc6f58-0379-48cc-af2d-47aea42136f4" | split: ','%}
{% endif %}
<ul class="cert-course-list" id="iq_blueprint_course-list">
{% for course in my_content.courses %}
<!-- {% if course.properties.language == current_person.properties.language %} -->
{% if iq_blueprint_badge_ids[0] contains course.id or iq_blueprint_badge_ids[1] contains course.id or iq_blueprint_badge_ids[2] contains course.id %}
<li data-progress="{{ course.progress }}" data-id="{{ course.id }}" class="{% if course.progress == 100 %}completed{% else %}{% if course.progress > 0 %}started{% endif %}{% endif %}">{{ course.name }}</li>
{% endif %}
<!-- {% endif %} -->
{% endfor %}
</ul>
<input type="hidden" class="iq-badge-total" id="iq_blueprint_badge_total" value="{{ iq_blueprint_badge_ids.size }}">
</div>
<div class="completed-icon course-locked small-icon">
<img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon">
<img src="https://doubleverify.com/wp-content/uploads/2022/05/course-locked.svg" alt="locked">
</div>
</div>
<div class="cert-badge-block" data-cert-img="" data-cert-title="" data-cert-name="iq_performance" data-cert-id="234076">
<div class="cert-badge-logo">
<img src="https://doubleverify.com/wp-content/uploads/2021/03/DV_ELM_Badges_Analytics.png" class="filter-gray iq-badge-logo" alt="Quality Analytics Badge">
</div>
<div class="cert-badge-course iq_performance_badge">
{% if current_person.properties.language == 'English' %}
{% assign iq_performance_badge_ids = "96f8474f-453e-416b-8d3f-0a0b8e9fbad1" | split: ','%}
{% else if current_person.properties.language == 'Spanish' %}
{% assign iq_performance_badge_ids = "55422640-285b-4a01-b46e-6a0fd65f52d7" | split: ','%}
{% else if current_person.properties.language == 'Russian' %}
{% assign iq_performance_badge_ids = "a97707dc-e565-4801-8315-703a7592a53e" | split: ','%}
{% else if current_person.properties.language == 'Japanese' %}
{% assign iq_performance_badge_ids = "ce417ba6-5284-4e2d-a315-84c4973ab2fd" | split: ','%}
{% else if current_person.properties.language == 'German' %}
{% assign iq_performance_badge_ids = "08c1c03b-0ecd-45d6-8025-4e27a957b412" | split: ','%}
{% else if current_person.properties.language == 'French' %}
{% assign iq_performance_badge_ids = "55bc6f97-47a8-4ebc-987f-799e782c3546" | split: ','%}
{% endif %}
<ul class="cert-course-list">
{% for course in my_content.courses %}
{% if iq_performance_badge_ids[0] contains course.id %}
<li data-progress="{{ course.progress }}" data-id="{{ course.id }}" class="{% if course.progress == 100 %}completed{% else %}{% if course.progress > 0 %}started{% endif %}{% endif %}">{{ course.name }}</li>
{% endif %}
{% endfor %}
</ul>
<input type="hidden" class="iq-badge-total" value="{{ iq_performance_badge_ids.size }}">
</div>
<div class="completed-icon course-locked small-icon">
<img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon">
<img src="https://doubleverify.com/wp-content/uploads/2022/05/course-locked.svg" alt="locked">
</div>
</div>
<div class="cert-badge-block" data-cert-img="" data-cert-title="" data-cert-name="tag_generator" data-cert-id="">
<div class="cert-badge-logo"><img src="https://doubleverify.com/wp-content/uploads/2024/02/DV_ELM_Badges_TaggingSolutions.png" class="filter-gray iq-badge-logo" alt="Tag Generator Badge"></div>
<div class="cert-badge-course tag_generator_badge">
{% if current_person.properties.language == 'English' %}
{% assign tag_generator_badge_ids = "f46d2369-dfcb-4108-8225-336c4759f877" | split: ','%}
{% else if current_person.properties.language == 'Spanish' %}
{% assign tag_generator_badge_ids = "22467135-ecc7-498f-b303-720487363bec" | split: ','%}
{% else if current_person.properties.language == 'Russian' %}
{% assign tag_generator_badge_ids = "512cd9c7-c884-422a-90ce-c499caaaf7bf" | split: ','%}
{% else if current_person.properties.language == 'Japanese' %}
{% assign tag_generator_badge_ids = "98f2eb27-bc93-4e86-be8d-a50b85cff70f" | split: ','%}
{% else if current_person.properties.language == 'German' %}
{% assign tag_generator_badge_ids = "85d8768b-a04b-452a-a553-a7627748bc7e" | split: ','%}
{% else if current_person.properties.language == 'French' %}
{% assign tag_generator_badge_ids = "f351cdf6-932f-4ed0-93ca-08b350f86f18" | split: ','%}
{% endif %}
<ul class="cert-course-list">
{% for course in my_content.courses %}
{% if tag_generator_badge_ids[0] contains course.id %}
<li data-progress="{{ course.progress }}" data-id="{{ course.id }}" class="{% if course.progress == 100 %}completed{% else %}{% if course.progress > 0 %}started{% endif %}{% endif %}">{{ course.name }}</li>
{% endif %}
{% endfor %}
</ul>
<input type="hidden" class="iq-badge-total" value="{{ tag_generator_badge_ids.size }}">
</div>
<div class="completed-icon course-ongoing small-icon">
<img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon">
<img src="https://doubleverify.com/wp-content/uploads/2022/05/course-locked.svg" alt="locked">
</div>
</div>
<div class="cert-badge-block" data-cert-img="" data-cert-title="" data-cert-name="social_solution" data-cert-id="">
<div class="cert-badge-logo"><img src="https://doubleverify.com/wp-content/uploads/2022/05/social-solutions.png" class="filter-gray iq-badge-logo" alt="Social Solutions Badge"></div>
<div class="cert-badge-course social_solution_badge">
{% if current_person.properties.language == 'English' %}
{% assign social_solution_badge_ids = "d97ef57a-b004-4459-88f5-9ae5ebdf2c2d" | split: ','%}
{% else if current_person.properties.language == 'Spanish' %}
{% assign social_solution_badge_ids = "8619c119-278b-4b9b-ab20-0de63daa91d8" | split: ','%}
{% else if current_person.properties.language == 'Russian' %}
{% assign social_solution_badge_ids = "d2f3225b-fc69-4958-a74e-158137b65146" | split: ','%}
{% else if current_person.properties.language == 'Japanese' %}
{% assign social_solution_badge_ids = "9c01dbd9-e5c5-4f76-97eb-7a09382d9035" | split: ','%}
{% else if current_person.properties.language == 'German' %}
{% assign social_solution_badge_ids = "312f7a71-81db-41e2-b8cb-89c7ef85a45e" | split: ','%}
{% else if current_person.properties.language == 'French' %}
{% assign social_solution_badge_ids = "dc8fc6e8-a8b9-4f63-92f4-0353782de173" | split: ','%}
{% endif %}
<ul class="cert-course-list">
{% for course in my_content.courses %}
{% if social_solution_badge_ids[0] contains course.id %}
<li data-progress="{{ course.progress }}" data-id="{{ course.id }}" class="{% if course.progress == 100 %}completed{% else %}{% if course.progress > 0 %}started{% endif %}{% endif %}">{{ course.name }}</li>
{% endif %}
{% endfor %}
</ul>
<input type="hidden" class="iq-badge-total" value="{{ social_solution_badge_ids.size }}">
</div>
<div class="completed-icon course-locked small-icon">
<img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon">
<img src="https://doubleverify.com/wp-content/uploads/2022/05/course-locked.svg" alt="locked">
</div>
</div>
<div class="cert-badge-block" data-cert-img="" data-cert-title="" data-cert-name="programmatic_solutions" data-cert-id="">
<div class="cert-badge-logo"><img src="https://doubleverify.com/wp-content/uploads/2022/05/programmatic-solutions.png" class="filter-gray iq-badge-logo" alt="programmatic Solutions Badge"></div>
<div class="cert-badge-course programmatic_solutions_badge">
{% if current_person.properties.language == 'English' %}
{% assign programmatic_solutions_badge_ids = "1ab6a178-6b95-486a-900c-9374c0773ae0" | split: ','%}
{% else if current_person.properties.language == 'Spanish' %}
{% assign programmatic_solutions_badge_ids = "10c0d8ab-33cd-4120-aa84-88de0fa1097c" | split: ','%}
{% else if current_person.properties.language == 'Russian' %}
{% assign programmatic_solutions_badge_ids = "8494a936-da9c-4c23-8ce4-dcb58dafbb52" | split: ','%}
{% else if current_person.properties.language == 'Japanese' %}
{% assign programmatic_solutions_badge_ids = "84ce2d71-8a15-49de-b21d-7475a1ef0fd6" | split: ','%}
{% else if current_person.properties.language == 'German' %}
{% assign programmatic_solutions_badge_ids = "538efded-8875-4e34-9592-a1e09e45bda7" | split: ','%}
{% else if current_person.properties.language == 'French' %}
{% assign programmatic_solutions_badge_ids = "d9c2de41-aa4f-4534-909b-2b0cbe4ceb15" | split: ','%}
{% endif %}
<ul class="cert-course-list">
{% for course in my_content.courses %}
{% if programmatic_solutions_badge_ids[0] contains course.id %}
<li data-progress="{{ course.progress }}" data-id="{{ course.id }}" class="{% if course.progress == 100 %}completed{% else %}{% if course.progress > 0 %}started{% endif %}{% endif %}">{{ course.name }}</li>
{% endif %}
{% endfor %}
</ul>
<input type="hidden" class="iq-badge-total" value="{{ programmatic_solutions_badge_ids.size }}">
</div>
<div class="completed-icon course-locked small-icon">
<img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon">
<img src="https://doubleverify.com/wp-content/uploads/2022/05/course-locked.svg" alt="locked">
</div>
</div>
<div class="cert-badge-block" data-cert-img="" data-cert-title="" data-cert-name="authentic_attention" data-cert-id="">
<div class="cert-badge-logo"><img src="https://doubleverify.com/wp-content/uploads/2022/06/DV_ELM_Badges__Authentic-Attention-1.png" class="filter-gray iq-badge-logo" alt="Authentic Attention Badge"></div>
<div class="cert-badge-course authentic_attention_badge">
{% if current_person.properties.language == 'English' %}
{% assign authentic_attention_badge_ids = "409a0308-924b-4d88-bdd8-aac3c226ffdf" | split: ','%}
{% else if current_person.properties.language == 'Spanish' %}
{% assign authentic_attention_badge_ids = "d8d32873-be1c-47a7-bf14-9f94f8705163" | split: ','%}
{% else if current_person.properties.language == 'Russian' %}
{% assign authentic_attention_badge_ids = "409a0308-924b-4d88-bdd8-aac3c226ffdf" | split: ','%}
{% else if current_person.properties.language == 'Japanese' %}
{% assign authentic_attention_badge_ids = "409a0308-924b-4d88-bdd8-aac3c226ffdf" | split: ','%}
{% else if current_person.properties.language == 'German' %}
{% assign authentic_attention_badge_ids = "409a0308-924b-4d88-bdd8-aac3c226ffdf" | split: ','%}
{% else if current_person.properties.language == 'French' %}
{% assign authentic_attention_badge_ids = "409a0308-924b-4d88-bdd8-aac3c226ffdf" | split: ','%}
{% endif %}
<ul class="cert-course-list">
{% for course in my_content.courses %}
{% if authentic_attention_badge_ids[0] contains course.id %}
<li data-progress="{{ course.progress }}" data-id="{{ course.id }}" class="{% if course.progress == 100 %}completed{% else %}{% if course.progress > 0 %}started{% endif %}{% endif %}">{{ course.name }}</li>
{% endif %}
{% endfor %}
</ul>
<input type="hidden" class="iq-badge-total" value="{{ authentic_attention_badge_ids.size }}">
</div>
<div class="completed-icon course-locked small-icon">
<img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon">
<img src="https://doubleverify.com/wp-content/uploads/2022/05/course-locked.svg" alt="locked">
</div>
</div>
<div class="cert-badge-block" data-cert-img="" data-cert-title="" data-cert-name="pinnacle_publishers" data-cert-id="">
<div class="cert-badge-logo"><img src="https://doubleverify.com/wp-content/uploads/2024/04/DV_ELM_Badge_PinnacleForPub.png" class="filter-gray iq-badge-logo" alt="DV Pinnacle Publishers Badge"></div>
<div class="cert-badge-course pinnacle_publishers_badge">
{% if current_person.properties.language == 'English' %}
{% assign pinnacle_publishers_badge_ids = "738021ce-297b-4397-84e6-a3b5ea68f168" | split: ','%}
{% else if current_person.properties.language == 'Spanish' %}
{% assign pinnacle_publishers_badge_ids = "738021ce-297b-4397-84e6-a3b5ea68f168" | split: ','%}
{% else if current_person.properties.language == 'Russian' %}
{% assign pinnacle_publishers_badge_ids = "738021ce-297b-4397-84e6-a3b5ea68f168" | split: ','%}
{% else if current_person.properties.language == 'Japanese' %}
{% assign pinnacle_publishers_badge_ids = "738021ce-297b-4397-84e6-a3b5ea68f168" | split: ','%}
{% else if current_person.properties.language == 'German' %}
{% assign pinnacle_publishers_badge_ids = "738021ce-297b-4397-84e6-a3b5ea68f168" | split: ','%}
{% else if current_person.properties.language == 'French' %}
{% assign pinnacle_publishers_badge_ids = "738021ce-297b-4397-84e6-a3b5ea68f168" | split: ','%}
{% endif %}
<ul class="cert-course-list">
{% for course in my_content.courses %}
{% if pinnacle_publishers_badge_ids[0] contains course.id %}
<li data-progress="{{ course.progress }}" data-id="{{ course.id }}" class="{% if course.progress == 100 %}completed{% else %}{% if course.progress > 0 %}started{% endif %}{% endif %}">{{ course.name }}</li>
{% endif %}
{% endfor %}
</ul>
<input type="hidden" class="iq-badge-total" value="{{ pinnacle_publishers_badge_ids.size }}">
</div>
<div class="completed-icon course-locked small-icon">
<img src="https://doubleverify.com/wp-content/uploads/2020/12/right-tick.png" alt="completed icon">
<img src="https://doubleverify.com/wp-content/uploads/2022/05/course-locked.svg" alt="locked">
</div>
</div>
</div>
<p class="shareable-note">Please note that shareable versions of your badges and certifications are delivered via email within one business day of completing your assigned courses. Please reach out to <a href="mailto:dvusupport@doubleverify.com">dvusupport@doubleverify.com</a> with any questions.</p>
<div class="modal-bg-shape">
<img src="https://doubleverify.com/wp-content/uploads/2019/11/purple-lines-hero-dark-no-shadow.svg" alt="image">
</div>
<!-- .modal-bg-shape -->
</div>
<!-- .modal-text -->
</div><!-- .modal-content -->
</div>
<script>
//get in touch btn
var closebtn = document.getElementById('close-btn');
var overlay = document.getElementById('overlay');
var getin_touch = document.getElementById('get-in-touch');
getin_touch.onclick = function(){
overlay.classList.add('active');
return false;
}
closebtn.onclick = function(){
overlay.classList.remove('active');
}
//achievement btn
var modal_closebtn = document.getElementById('modal2-close-btn');
var certificate_modal = document.getElementById('certificate-modal');
var achievement_btn = document.getElementById('achievement-btn');
achievement_btn.onclick = function(){
certificate_modal.classList.add('show');
return false;
}
modal_closebtn.onclick = function(){
certificate_modal.classList.remove('show');
}
//get query string
var querystring = window.location.search;
var urlparams = new URLSearchParams(querystring);
if(urlparams.has('certificate')){
if(urlparams.get('certificate') == 1){
if(certificate_modal.classList.contains('show') == false){
certificate_modal.classList.add('show');
}
}
}
//iq_blueprint_certificate
/*var iq_blueprint_badge_logo = document.getElementById('iq_blueprint_badge_logo');
var iq_blueprint_badge_total = document.getElementById('iq_blueprint_badge_total').value;
var iq_blueprint_course_list = document.getElementById('iq_blueprint_course-list');
var total_iq_blueprint_course_list = iq_blueprint_course_list.getElementsByTagName('li');
var total_marks = 0;
for(var i = 0; i < total_iq_blueprint_course_list.length; i++ ){
total_marks += parseInt(total_iq_blueprint_course_list[i].getAttribute('data-progress'));
}
if((iq_blueprint_badge_total * 100) % total_marks == 0){
iq_blueprint_badge_logo.classList.remove('filter-gray');
var li = '<li><img src="https://doubleverify.com/wp-content/uploads/2020/12/DV_ELM_Certificate.png" alt=""><h6>DV Pinnacle</h6></li>';
document.getElementById('certificate-list').innerHTML = li;
}
*/
/*var badge_completed = 0;
var badge_completed_list = Array();
var iq_cert_block = document.querySelectorAll('.cert-badge-block');
iq_cert_block.forEach(function (e,i){
var iq_cert_img = e.getAttribute('data-cert-img');
var iq_cert_name = e.getAttribute('data-cert-name');
var iq_cert_title = e.getAttribute('data-cert-title');
var iq_badge_logo = e.querySelectorAll('.iq-badge-logo')[0];
var iq_badge_total = e.querySelectorAll('.iq-badge-total')[0].value;
var iq_course_list = e.querySelectorAll('.cert-course-list');
var total_iq_course_list = e.querySelectorAll('li');
var course_status = e.querySelectorAll('.completed-icon')[0];
var total_marks = 0;
for(var i = 0; i < total_iq_course_list.length; i++ ){
total_marks += parseInt(total_iq_course_list[i].getAttribute('data-progress'));
}
if(total_marks > 0){
course_status.classList.remove('course-locked');
}
if(((iq_badge_total * 100) / total_marks) == 1){
iq_badge_logo.classList.remove('filter-gray');
course_status.classList.add('completed-active');
badge_completed += 1;
badge_completed_list.push(iq_cert_name);
}
});
//Pinnacle Certificate Codes
var li = "";
li += '<li class="filter-gray"><img src="https://doubleverify.com/wp-content/uploads/2021/03/DV_ELM_Certificate_FINAL.png" alt="DV Pinnacle"><h6>DV Pinnacle</h6></li>';
li += '<li class="filter-gray"><img src="https://doubleverify.com/wp-content/uploads/2021/03/DV_ELM_Badges_Analytics.png" class="iq-badge-logo" alt="Quality Analytics Badge"></li>';
li += '<li class="filter-gray"><img src="https://doubleverify.com/wp-content/uploads/2021/03/DV_ELM_Badges_Blueprint.png" class="iq-badge-logo" alt="Quality Analytics Badge"></li>';
document.getElementById('certificate-list').innerHTML= li;
var pinnacle_cert_badges = ["iq_blueprint", "iq_performance"]; //Badges for Pinnacle
if(pinnacle_cert_badges.every(i => badge_completed_list.includes(i))){
var certificate_list = certificate_modal.querySelectorAll('.certificate-list')[0].querySelectorAll('li');
for(var i = 0; i < certificate_list.length; i++ ){
certificate_modal.querySelectorAll('.certificate-list')[0].getElementsByTagName('li')[i].classList.remove('filter-gray');
}
var all_certificate_list = certificate_modal.querySelectorAll('.all-certificate_list')[0];
all_certificate_list.querySelectorAll('.completed-icon')[0].classList.remove('course-locked');
all_certificate_list.querySelectorAll('.completed-icon')[0].classList.add('completed-active');
}*/
</script>
<script>
function setLang(lang) {
var data = {
uuid : '{{current_person.id}}',
language : lang
};
$.ajax({
type : 'POST',
url : 'https://hooks.zapier.com/hooks/catch/8404380/b2oee3b/', //zapier link
data: JSON.stringify(data),
success:function (data) {
console.log(data);
setTimeout(location.reload.bind(location), 1000);
},
error: function(xhr, status, error) {
console.log(error)
}
});
}
</script>

View File

@ -0,0 +1,199 @@
<style>
body > header > div > nav > div > ul > li:nth-child(1) > a,
body > header > div > nav > div > ul > li:nth-child(2) > a,
body > header > div > nav > div > ul > li:nth-child(3) > a,
body > div.main-content > div.uk-container.uk-container-center > div > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(6) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(7) > div > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a,
body > div.overlay.highlight-overlay > div > div > div > div > p,
body > div.overlay.highlight-overlay > div > div > div > div > p > a,
body > div.certificate-modal.fade-in.show > div > div > h2,
body > div.certificate-modal.fade-in.show > div > div > p,
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note,
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p {
text-indent: -99999px;
line-height: 0;
}
/* HEADER BUTTONS */
body > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*achievments*/
text-indent: 0;
display: block;
content: "成績";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "連絡する";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(3) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "ログアウト";
line-height: 0px;
}
/* SITE DECRIBTION */
body > div.main-content > div.uk-container.uk-container-center > div > div > p::after {
/*DoubleVerify's purpose is to power media quality and performance for the world's largest brands and agencies. Global advertisers leverage DV's solutions to drive campaign efficiency, protect brand reputation and maximize return on their digital investment. The DVU course curriculum is designed to give you the tools you need to fully realize the benefits of DV's Advertiser Suite. Each course will let you take a self-guided tour of our service offerings, and demonstrate ways to leverage DV's actionable insights in order to achieve your digital campaign objectives.*/
text-indent: 0;
display: block;
content: "DoubleVerifyの目的は、世界のブランドおよび代理店のために、メディアの品質とパフォーマンスを強化することです。世界の広告主は、キャンペーンの効率性を高め、ブランドの評判を保護し、デジタル投資のリターンを最大化するためにDVのソリューションを活用しています。DVUコースのカリキュラムは、DVのアドバタイザースイートの利益をフルに実現するうえで必要なツールを提供するために考案されたものです。各コースは、私たちのサービスに関するセルフツアーを提供し、デジタルキャンペーンの目的を達成するために、DVの実用的なインサイトを活用する方法をデモンストレーションしながらサービス内容をご紹介しています。";
line-height: 25px;
}
/* COURSE START BUTTONS */
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "コースを開始する";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "コースを開始する";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "コースを開始する";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "コースを開始する";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "コースを開始する";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(6) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "コースを開始する";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(7) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "コースを開始する";
line-height: 45px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "連絡する";
line-height: 0px;
margin-top: -20px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "ログアウト";
line-height: 0px;
}
/* CONTACT BUTTON */
body > div.overlay.highlight-overlay > div > div > div > div > p > a::after {
/*dvusupport@doubleverify.com*/
text-indent: 0;
display: block;
content: "dvusupport@doubleverify.com";
line-height: 0px;
transform: translate(0%, 30px);
}
body > div.overlay.highlight-overlay > div > div > div > div > p::after {
/*For any questions about DV University or DoubleVerify, please contact*/
text-indent: 0;
display: block;
content: "DVユニバーシティまたはDoubleVerifyに関するご質問は、お問い合わせください";
line-height: 25px;
padding-top: 40px;
margin-bottom: -10px;
margin-top: -70px;
font-size: 1.05em;
}
body > div.certificate-modal.fade-in.show > div > div > h2::after {
/*achievments*/
text-indent: 0;
display: block;
content: "実績";
line-height: 0px;
padding-bottom: 10px;
}
body > div.certificate-modal.fade-in.show > div > div > p::after {
/*To earn each certification, please complete the course requirements indicated for each badge on the right.*/
text-indent: 0;
display: block;
content: "各認定を取得するには、右側の各バッジに示されているコース要件を完了してください。";
line-height: 32px;
}
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note::after {
/*Please note that shareable versions of your badges and certifications are delivered via email within one business day of completing your assigned courses. Please reach out to dvupport@doubleverify.com with any questions..*/
text-indent: 0;
display: block;
content: "バッジと認定の共有可能なバージョンは、割り当てられたコースを完了してから1営業日以内にメールで配信されることに注意してください。 ご不明な点がございましたら、dvupport @ doubleverify.comまでお問い合わせください。";
line-height: 20px;
}
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p::after {
/*Complete the course requirements below each badge to unlock these achievements.*/
text-indent: 0;
display: block;
content: "これらの成果のロックを解除するには、各バッジの下のコース要件を完了してください。";
line-height: 30px;
padding-bottom: 10px;
padding-top: 20px;
}
</style>

View File

@ -0,0 +1,38 @@
<li class="uk-width-large-1-3 uk-width-medium-1-2 uk-width-small-1-1 uk-margin-large-bottom school-website-course-tile my-dashboard__tile">
<div class="uk-panel uk-panel-box uk-panel-box-secondary uk-border">
<div class="uk-panel-teaser">
{% if current_person.enrolled_in_learning_path? %}
<a href="{{ learning_path.cover_path }}" class="main-link">
<img src="{{ learning_path.list_image_url }}" class="uk-responsive-width uk-width-1-1">
</a>
{% else %}
<a href="{{ learning_path.details_path }}" class="main-link">
<img src="{{ learning_path.list_image_url }}" class="uk-responsive-width uk-width-1-1">
</a>
{% endif %}
</div>
{% if current_school.filtering_enabled? and current_school.learning_paths_enabled? %}
<span>
{{ learning_path.learning_path_category_names }}
</span>
{% endif %}
<h3 class="uk-panel-title uk-margin-bottom-remove">
{% if current_person.enrolled_in_learning_path? %}
<a href="{{ learning_path.cover_path }}" data-test="learning-path-name">{{ learning_path.name }}</a>
{% else %}
<a href="{{ learning_path.details_path }}" data-test="learning-path-name">{{ learning_path.name }}</a>
{% endif %}
</h3>
<p class="uk-margin-small-top uk-margin-large-bottom">{{ learning_path.instructor_names }}</p>
<p class="uk-margin-small-bottom">{{ learning_path.progress_text }}</p>
{% if current_person.enrolled_in_learning_path? %}
<a href="{{ learning_path.cover_path }}" class="uk-button uk-button-primary my-dashboard__tile-action uk-position-bottom-right" data-test="go-to-path">
{{ learning_path.go_to_label }}
</a>
{% else %}
<a href="{{ learning_path.details_path }}" class="uk-button uk-button-outline my-dashboard__tile-action uk-position-bottom-right" data-test="go-to-path">
{{ learning_path.view_label }}
</a>
{% endif %}
</div>
</li>

View File

@ -0,0 +1,5 @@
{% if learning_path.new_content_available? %}
{% include "learning_path_new_content_banner" %}
{% else %}
{% include "learning_path_completed_banner" %}
{% endif %}

View File

@ -0,0 +1,17 @@
{% if learning_path.has_certificate? %}
{% if learning_path.certificate_completed? %}
<div class="np-learning-path-outline-bar np-hidden-mobile"></div>
<a
class="np-learning-path-certificate-link"
href="{{ learning_path.certificate_link }}"
>
<div class="np-learning-path-certificate">
{% include "learning_path_certificate_content" %}
</div>
</a>
{% else %}
<div class="np-learning-path-certificate np-learning-path-certificate--inactive">
{% include "learning_path_certificate_content" %}
</div>
{% endif %}
{% endif %}

View File

@ -0,0 +1,19 @@
<div class="np-learning-path-certificate-content">
<div class="np-learning-path-certificate-avatar" role="img">
<i class="np-learning-path-certificate-avatar-icon fal fa-award"></i>
<h5 class="np-learning-path-certificate-avatar-title">
{% t .avatar_title %}
</h5>
</div>
<h4 class="np-learning-path-certificate-name">
{{ learning_path.certificate_name }}
</h4>
{% if learning_path.certificate_completed? %}
<time
class="np-learning-path-certificate-issue-date"
datetime="{{ learning_path.certificate_issue_date }}"
>
{{ learning_path.certificate_issue_date | date: "%B %d, %Y" }}
</time>
{% endif %}
</div>

View File

@ -0,0 +1,13 @@
<div class="np-learning-path-completed-banner np-learning-path-banner">
<img class="np-learning-path-banner-image" src="https://s3.amazonaws.com/static.northpass.com/images/stars-completed.svg"/>
<div class="np-learning-path-banner-content">
<h3 class="np-learning-path-banner-headline">{% t .headline %}</h3>
<p class="np-learning-path-banner-description">{% t .description %}</p>
<div class="np-learning-path-banner-actions">
{% if learning_path.certificate_link %}
<a href="{{ learning_path.certificate_link }}" class="np-learning-path-banner-action np-learning-path-banner-action--primary">{% t .actions.certificate %}</a>
{% endif %}
<a href="/courses" class="np-learning-path-banner-action np-learning-path-banner-action--secondary">{% t .actions.more_courses %}</a>
</div>
</div>
</div>

View File

@ -0,0 +1,59 @@
<h4 class="uk-text-muted uk-margin-remove">{% t .title %}</h4>
{% learning_path_next_step_button learning_path, class: "uk-button uk-float-right completion-button" %}
<h1 class="uk-margin-remove" data-test="learning-path-name">{{ learning_path.name }}</h1>
<hr class="uk-article-divider uk-margin-top">
<div class="uk-grid uk-grid-large">
<div class="uk-width-medium-1-3 uk-margin-bottom uk-container-center">
<article class="uk-article">
<img src="{{ learning_path.featured_image_url }}" />
</article>
</div>
<div class="uk-width-medium-2-3">
<h3>{% t .about_label %}</h3>
<p>{{ learning_path.description }}</p>
{% if learning_path.has_instructors? %}
<h3>{{ learning_path.instructors_title }}</h3>
<div class="uk-grid uk-grid-large">
{% for instructor in learning_path.instructors %}
<div class="uk-width-medium-1-2 uk-margin-top">
<div class="uk-comment-header">
<img
src="{{ instructor.image_url }}"
alt="{{ instructor.name }}"
class="uk-comment-avatar"
width="80">
<h4 class="uk-comment-title">{{ instructor.name }}</h4>
<div class="uk-comment-meta">{{ instructor.title }}</div>
</div>
<div class="wysiwyg">{{ instructor.bio }}</div>
</div>
{% endfor %}
</div>
{% endif %}
</div>
<div class="uk-width-medium">
<h3>{{ learning_path.progress_text }}</h3>
{{ learning_path.progress_bar }}
<h3><strong>{% t .outline_label %}</strong></h3>
<ol class="uk-list cover-outline learning-path-items uk-margin-large-bottom" data-test="learning-path-items">
{% for item in learning_path.items %}
<li class="{% if item.completed? %}completed{% endif %} {% if item.locked? %}locked{% endif %}" data-test="learning-path-item">
{{ item.progress_icon }}
{% learning_path_item item %}
{{ item.type_icon }}
{{ item.name }}
{% if item.optional? %}
<span class="sk-badge uk-margin-small-left">optional</span>
{% endif %}
{% endlearning_path_item %}
</li>
{% endfor %}
</ol>
{% include "learning_path_certificate" %}
</div>
</div>

View File

@ -0,0 +1,16 @@
<header class="uk-navbar uk-navbar-attached uk-border-bottom learning-header slide">
<div class="uk-navbar-flip">
<ul class="uk-navbar-nav">
<li>
<a href="{{ routes.my_content_path }}" class="uk-border-left uk-button-small">{% t .exit %}</a>
</li>
</ul>
</div>
<div class="uk-navbar-content uk-text-center sk-float-remove">
{% if current_school.logo_url %}
<img src="{{ current_school.logo_url }}" class="uk-responsive-height">
{% else %}
{{ current_school.name }}
{% endif %}
</div>
</header>

View File

@ -0,0 +1,24 @@
{% if current_school.filtering_enabled? and current_school.learning_paths_enabled? and current_person.filterable_learning_path_categories.count > 0 %}
<div class="uk-width-medium-1-6 uk-block uk-padding">
{% t .filter_by_category %}:
<ul class="uk-list uk-list-space">
<li class="uk-margin-top">
{% if query_parameter_value %}
{% capture reset_filters_route %}{{ routes.school_website_search_path }}?q={{ query_parameter_value }}{% endcapture %}
{% else %}
{% assign reset_filters_route = routes.my_content_path %}
{% endif %}
<a href="{{ reset_filters_route }}" class="{% unless lp_filter_parameter_value %}uk-text-bold{% endunless %}">
{% t .all %}
</a>
</li>
{% for filterable_category in current_person.filterable_learning_path_categories %}
<li>
<a href="{{ filterable_category.learning_path_link }}" class="{% if filterable_category.lp_filter_active? %}uk-text-bold{% endif %}">
{{ filterable_category.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
{% endif %}

View File

@ -0,0 +1,12 @@
<div class="np-learning-path-new-content-banner np-learning-path-banner">
<div class="np-learning-path-banner-content">
<h3 class="np-learning-path-banner-headline">{% t .headline %}</h3>
<p class="np-learning-path-banner-description">{% t .description %}</p>
<div class="np-learning-path-banner-actions">
{% learning_path_next_step_button learning_path, class: "np-learning-path-banner-action np-learning-path-banner-action--primary" %}
{% if learning_path.certificate_link %}
<a href="{{ learning_path.certificate_link }}" class="np-learning-path-banner-action np-learning-path-banner-action--secondary">{% t .actions.view_certificate %}</a>
{% endif %}
</div>
</div>
</div>

View File

@ -0,0 +1,4 @@
<div class="uk-padding-large-vertical uk-padding-horizontal uk-border-bottom">
<h2>{{ my_content.headline }}</h2>
<h3 class="uk-margin-top-remove">{{ my_content.subheadline }}</h3>
</div>

View File

@ -0,0 +1,22 @@
<div class="uk-padding-horizontal uk-border-bottom" >
<h2 data-test="my-paths" style="display: none;">{{ my_content.learning_paths_headline }}</h2>
<h3 class="uk-margin-top-remove" style="display: none;">{{ my_content.learning_paths_subheadline }}</h3>
</div>
<div class="uk-grid uk-grid-flex uk-margin-left-remove">
{% include "learning_path_filters" with "" %}
{% if current_school.filtering_enabled? and current_school.learning_paths_enabled? and current_person.filterable_learning_path_categories.count > 0 %}
<div class="uk-width-medium-5-6 uk-padding">
{% else %}
<div class="uk-width-1-1 uk-padding">
{% endif %}
<ul class="uk-grid uk-grid-medium my-dashboard__list learning-paths__list uk-grid-match" data-uk-grid-match="{target:'.uk-panel'}">
{% if my_content.learning_paths.any? %}
{% for learning_path in my_content.learning_paths %}
{% include "learning_path" %}
{% endfor %}
{% else %}
<p style="display: none;">{{ my_content.empty_learning_paths }}</p>
{% endif %}
</ul>
</div>
</div>

View File

@ -0,0 +1,225 @@
<style>
body > header > div > nav > div > ul > li:nth-child(1) > a,
body > header > div > nav > div > ul > li:nth-child(2) > a,
body > header > div > nav > div > ul > li:nth-child(3) > a,
body > div.main-content > div.uk-container.uk-container-center > div > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a,
body > div.overlay.highlight-overlay > div > div > div > div > p,
body > div.overlay.highlight-overlay > div > div > div > div > p > a,
body > div.certificate-modal.fade-in.show > div > div > h2,
body > div.certificate-modal.fade-in.show > div > div > p,
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note,
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p {
text-indent: -99999px;
line-height: 0;
}
/* HEADER BUTTONS */
body > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*achievments*/
text-indent: 0;
display: block;
content: "Достижения";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "Связаться с нами";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(3) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "Выход";
line-height: 0px;
}
/* SITE DECRIBTION */
body > div.main-content > div.uk-container.uk-container-center > div > div > p::after {
/*DoubleVerify's purpose is to power media quality and performance for the world's largest brands and agencies. Global advertisers leverage DV's solutions to drive campaign efficiency, protect brand reputation and maximize return on their digital investment. The DVU course curriculum is designed to give you the tools you need to fully realize the benefits of DV's Advertiser Suite. Each course will let you take a self-guided tour of our service offerings, and demonstrate ways to leverage DV's actionable insights in order to achieve your digital campaign objectives.*/
text-indent: 0;
display: block;
content: "Цель DoubleVerify — повысить качество и эффективность медиарекламы для крупнейших мировых брендов и агентств. Специалисты по рекламе во всем мире используют разные решения DV для повышения эффективности рекламных кампаний, защиты репутации бренда и увеличения прибыли от инвестиций в цифровую рекламу. Учебный план DVU выстроен вокруг инструментов, работу которых необходимо понимать, чтобы использовать возможности Advertiser Suite DV в полном объеме. Каждый курс поможет вам самостоятельно изучить предлагаемые нами сервисы и продемонстрирует возможности использования различных аналитических сведений DV, которые характеризуются практической направленностью, для достижения целей и задач рекламной кампании в медийной сфере.";
line-height: 25px;
}
/* COURSE DESCRIBTIONS */
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > p:after {
/*In this course, you will learn the basics of ad verification and begin to visualize how DV's solutions can protect your brand and power improved advertising performance. (20 min)*/
text-indent: 0;
display: block;
content: "Из этого курса вы узнаете основные принципы верификации рекламных объявлений и получите лучшее представление о решениях DV по защиты бренда и повышения качества эффективности рекламы. (20 мин)";
line-height: 25px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > p:after {
/*In this course, you will learn how to customize and update the various controls available to you within DV Pinnacle®. We will guide you through the considerations needed to determine what configuration of settings best suits your unique brand needs. (45 min)*/
text-indent: 0;
display: block;
content: "Из этого курса вы узнаете, как выполнить индивидуальные настройки и обновить разные средства контроля, которые входят в DV Pinnacle®. Мы рассмотрим основные вопросы, которые требуется учесть для определения наилучшей конфигурации настроек, подходящей под уникальные потребности бренда. (45 мин)";
line-height: 25px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > p:after {
/*Here, you will learn to tie together the settings you have created to submit IQ Blueprints and see how DV tags are requested and implemented for various campaign needs. (30 min)*/
text-indent: 0;
display: block;
content: "Вы узнаете из него, как связать воедино все настройки, которые вы создали для подачи IQ Blueprint, и узнаете, как запрашиваются и внедряются теги DV для различных потребностей рекламной кампании. (30 мин)";
line-height: 25px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > p:after {
/*See how DV Pinnacle® enables you to analyze the quality of each ad across media buying platforms, devices and formats through dynamic campaign reporting. In this course, you will learn to navigate and use IQ Performance tools that allow you to optimize inventory, creatives and/or channels to meet your performance goals. (45 mins)*/
text-indent: 0;
display: block;
content: "Узнайте, как DV Pinnacle® дает возможность анализировать качество каждого рекламного объявления (и при этом поддерживает все платформы покупок медиарекламы, устройства и форматы) с применением динамического создания отчетов о ходе рекламной кампании. Из этого курса мы узнаем, как работать с инструментами IQ Performance, благодаря которым можно повысить качество рекламного инвентаря, графику и/или каналы для достижения целей по эффективности. (45 мин)";
line-height: 25px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > p:after {
/*In this course, we will explore the tools available that help advertisers authenticate their programmatic ads. Additionally you will learn how pre-bid buyers can use DoubleVerifys programmatic services to build a baseline of quality, and further drive performance using relevant segments.*/
text-indent: 0;
display: block;
content: "В этом курсе мы рассмотрим доступные инструменты, которые помогают специалистам по рекламе выполнять проверку программных рекламных объявлений. Вы также узнаете, как доконтрактные покупатели могут воспользоваться программными сервисами DoubleVerify для построения исходного уровня контроля качества и повысить эффективность с помощью соответствующих сегментов.";
line-height: 25px;
}
/* COURSE START BUTTONS */
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "Запустить курс";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "Запустить курс";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "Запустить курс";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "Запустить курс";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "Запустить курс";
line-height: 45px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "Связаться с нами";
line-height: 0px;
margin-top: -20px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "Выход";
line-height: 0px;
}
/* CONTACT BUTTON */
body > div.overlay.highlight-overlay > div > div > div > div > p > a::after {
/*dvusupport@doubleverify.com*/
text-indent: 0;
display: block;
content: "dvusupport@doubleverify.com";
line-height: 0px;
transform: translate(0%, 30px);
}
body > div.overlay.highlight-overlay > div > div > div > div > p::after {
/*For any questions about DV University or DoubleVerify, please contact*/
text-indent: 0;
display: block;
content: "При возникновении вопросово DV University, пожалуйста, обратитесь в поддержку";
line-height: 25px;
padding-top: 40px;
margin-bottom: -10px;
margin-top: -70px;
font-size: 1.05em;
}
body > div.certificate-modal.fade-in.show > div > div > h2::after {
/*achievments*/
text-indent: 0;
display: block;
content: "Достижения";
line-height: 0px;
padding-bottom: 10px;
}
body > div.certificate-modal.fade-in.show > div > div > p::after {
/*To earn each certification, please complete the course requirements indicated for each badge on the right.*/
text-indent: 0;
display: block;
content: "Для получения сертификатов, пожалуйста, завершите условия, указанные справа от каждого бейджика.";
line-height: 32px;
}
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note::after {
/*Please note that shareable versions of your badges and certifications are delivered via email within one business day of completing your assigned courses. Please reach out to dvupport@doubleverify.com with any questions..*/
text-indent: 0;
display: block;
content: "Обратите внимание на то, что сертификаты и бейджики о прохождении курсов будут высланы вам на почту в течении одного рабочего дня с момента прохождения курсов. Пожалуйста, обратитесь в dvusupport@doubleverify.com при возникновении вопросов.";
line-height: 20px;
}
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p::after {
/*Complete the course requirements below each badge to unlock these achievements.*/
text-indent: 0;
display: block;
content: "Выполните требования курса под каждым значком, чтобы разблокировать эти достижения.";
line-height: 30px;
padding-bottom: 10px;
padding-top: 20px;
}
</style>

View File

@ -0,0 +1,19 @@
<div class="search-box uk-float-right">
<form class="uk-form search" action="{{ routes.school_website_search_path }}" accept-charset="UTF-8" method="get">
<input name="utf8" type="hidden" value="✓">
<input type="search" name="q" id="q" placeholder="{% t .search_placeholder %}"
class="search__input" autofocus="autofocus" pattern=".{3,}"
required title="{% t .search_title %}" value="{{ query_parameter_value }}"
data-test="search-input">
<input type="hidden" name="filter[categories_name]" id="filter" value="{{ filter_parameter_value }}">
<div id="search_results_count" class="search__results">
{% if search_result %}
{{ search_result.count }} {% pluralize search_result.count, .results %}
{% endif %}
</div>
<div class="search__submit">
<i class="uk-icon-search search__icon"></i>
<input type="submit" name="commit" value="" class="search__button">
</div>
</form>
</div>

View File

@ -0,0 +1,226 @@
<style>
body > header > div > nav > div > ul > li:nth-child(1) > a,
body > header > div > nav > div > ul > li:nth-child(2) > a,
body > header > div > nav > div > ul > li:nth-child(3) > a,
body > div.main-content > div.uk-container.uk-container-center > div > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > a,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > p,
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a,
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a,
body > div.overlay.highlight-overlay > div > div > div > div > p,
body > div.overlay.highlight-overlay > div > div > div > div > p > a,
body > div.certificate-modal.fade-in.show > div > div > h2,
body > div.certificate-modal.fade-in.show > div > div > p,
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note,
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p {
text-indent: -99999px;
line-height: 0;
}
/* HEADER BUTTONS */
body > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*achievments*/
text-indent: 0;
display: block;
content: "LOGROS";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "PONERSE EN CONTACTO";
line-height: 0px;
margin-top: -20px;
}
body > header > div > nav > div > ul > li:nth-child(3) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "Cerrar sesión";
line-height: 0px;
}
/* SITE DECRIBTION */
body > div.main-content > div.uk-container.uk-container-center > div > div > p::after {
/*DoubleVerify's purpose is to power media quality and performance for the world's largest brands and agencies. Global advertisers leverage DV's solutions to drive campaign efficiency, protect brand reputation and maximize return on their digital investment. The DVU course curriculum is designed to give you the tools you need to fully realize the benefits of DV's Advertiser Suite. Each course will let you take a self-guided tour of our service offerings, and demonstrate ways to leverage DV's actionable insights in order to achieve your digital campaign objectives.*/
text-indent: 0;
display: block;
content: "El propósito de DoubleVerify es mejorar la calidad y el rendimiento de los medios para las marcas y agencias más grandes del mundo. Los anunciantes globales aprovechan las soluciones de DV para impulsar la eficiencia de las campañas, proteger la reputación de la marca y maximizar el rendimiento de su inversión digital. El plan de estudios del curso de DVU está diseñado para brindarle los recursos que necesita para disfrutar por completo de los beneficios del paquete para anunciantes de DV. Cada curso le permitirá hacer un recorrido autoguiado de nuestra oferta de servicios y le mostrará las maneras en que puede aprovechar la información de DV que puede poner en práctica para alcanzar sus objetivos de campaña digital.";
line-height: 25px;
}
/* COURSE DESCRIBTIONS */
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > p:after {
/*In this course, you will learn the basics of ad verification and begin to visualize how DV's solutions can protect your brand and power improved advertising performance. (20 min)*/
text-indent: 0;
display: block;
content: "En este curso, aprenderá los principios básicos de la verificación de anuncios y comenzará a ver cómo las soluciones de DV pueden proteger su marca y mejorar el rendimiento de sus anuncios. (20 min)";
line-height: 25px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > p:after {
/*In this course, you will learn how to customize and update the various controls available to you within DV Pinnacle®. We will guide you through the considerations needed to determine what configuration of settings best suits your unique brand needs. (45 min)*/
text-indent: 0;
display: block;
content: "En este curso, aprenderá cómo personalizar y actualizar los diferentes controles disponibles dentro de DV Pinnacle®. Lo guiaremos por las consideraciones necesarias para determinar qué configuración de ajustes se adapta mejor a las necesidades únicas de su marca. (45 min)";
line-height: 25px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > p:after {
/*Here, you will learn to tie together the settings you have created to submit IQ Blueprints and see how DV tags are requested and implemented for various campaign needs. (30 min)*/
text-indent: 0;
display: block;
content: "Aquí, aprenderá a unir los ajustes que diseñó para crear IQ Blueprints y ver cómo se solicitan e implementan los tags de DV para las diferentes necesidades de la campaña. (30 min)";
line-height: 25px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > p:after {
/*See how DV Pinnacle® enables you to analyze the quality of each ad across media buying platforms, devices and formats through dynamic campaign reporting. In this course, you will learn to navigate and use IQ Performance tools that allow you to optimize inventory, creatives and/or channels to meet your performance goals. (45 mins)*/
text-indent: 0;
display: block;
content: "Vea cómo DV Pinnacle® le permite analizar la calidad de cada anuncio, en todas las plataformas de compras de medios, dispositivos y formatos, a través de reportes de campaña dinámicos. En este curso, aprenderá a navegar y a utilizar las herramientas de IQ Performance que le permiten optimizar el inventario, los elementos creativos y/o los canales para alcanzar sus objetivos de rendimiento. (45 min)";
line-height: 25px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > p:after {
/*In this course, we will explore the tools available that help advertisers authenticate their programmatic ads. Additionally you will learn how pre-bid buyers can use DoubleVerifys programmatic services to build a baseline of quality, and further drive performance using relevant segments.*/
text-indent: 0;
display: block;
content: "En este curso, exploraremos las herramientas disponibles que ayudan a los anunciantes a autenticar sus anuncios programáticos. Además, aprenderá cómo los compradores de pre-bid pueden usar los servicios programáticos de DoubleVerify para desarrollar una línea base de calidad y aumentar el rendimiento usando los segmentos correspondientes.";
line-height: 25px;
}
/* COURSE START BUTTONS */
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(1) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "INICIAR CURSO";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(2) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "INICIAR CURSO";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(3) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "INICIAR CURSO";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(4) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "INICIAR CURSO";
line-height: 45px;
}
body > div.main-content > div.uk-container.uk-container-center.school-website-course-index-list.uk-margin-bottom.current-person > div > div > div > ul > li:nth-child(5) > div > a::after {
/*start course*/
text-indent: 0;
display: block;
content: "INICIAR CURSO";
line-height: 45px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(1) > a::after {
/*get in touch*/
text-indent: 0;
display: block;
content: "PONERSE EN CONTACTO";
line-height: 0px;
margin-top: -20px;
}
body > div > div > div > header > div > nav > div > ul > li:nth-child(2) > a::after {
/*log out*/
text-indent: 0;
display: block;
content: "Cerrar sesión";
line-height: 0px;
}
/* CONTACT BUTTON */
body > div.overlay.highlight-overlay > div > div > div > div > p > a::after {
/*dvusupport@doubleverify.com*/
text-indent: 0;
display: block;
content: "dvusupport@doubleverify.com";
line-height: 0px;
transform: translate(0%, 30px);
}
body > div.overlay.highlight-overlay > div > div > div > div > p::after {
/*For any questions about DV University or DoubleVerify, please contact*/
text-indent: 0;
display: block;
content: "Si tiene alguna pregunta sobre DV University o DoubleVerify, comuníquese al siguiente correo";
line-height: 25px;
padding-top: 40px;
margin-bottom: -10px;
margin-top: -70px;
font-size: 1.05em;
}
body > div.certificate-modal.fade-in.show > div > div > h2::after {
/*achievments*/
text-indent: 0;
display: block;
content: "Logros";
line-height: 0px;
padding-bottom: 10px;
}
body > div.certificate-modal.fade-in.show > div > div > p::after {
/*To earn each certification, please complete the course requirements indicated for each badge on the right.*/
text-indent: 0;
display: block;
content: "Para obtener cada certificación, complete los requisitos del curso indicados para cada insignia a la derecha.";
line-height: 32px;
}
body > div.certificate-modal.fade-in.show > div > div > p.shareable-note::after {
/*Please note that shareable versions of your badges and certifications are delivered via email within one business day of completing your assigned courses. Please reach out to dvupport@doubleverify.com with any questions..*/
text-indent: 0;
display: block;
content: "Tenga en cuenta que las versiones para compartir de sus insignias y certificaciones se envían por correo electrónico dentro de un día hábil después de completar los cursos asignados. Comuníquese al siguiente correo dvupport@doubleverify.com si tiene alguna pregunta.";
line-height: 20px;
}
body > div.certificate-modal.fade-in.show > div > div.modal-right-content > div > p::after {
/*Complete the course requirements below each badge to unlock these achievements.*/
text-indent: 0;
display: block;
content: "Complete los requisitos del curso debajo de cada insignia para desbloquear estos logros.";
line-height: 30px;
padding-bottom: 10px;
padding-top: 20px;
}
</style>

View File

@ -0,0 +1,43 @@
<li
id="training-event-{{training_event.id}}"
class="uk-width-large-1-3 uk-width-medium-1-2 uk-width-small-1-1 uk-margin-large-bottom"
>
<div
class="sk-event sk-event--border sk-event--height"
data-test="event-{{ training_event.title.parameterize }}"
>
<div class="sk-event__top uk-flex">
<div class="sk-event__header uk-width-4-4 uk-padding-large-left">
<div class="sk-event__title">{{ training_event.title }}</div>
<div class="sk-event__type-v2">{{ training_event.type }}</div>
</div>
</div>
<div class="uk-padding">
<div class="sk-event__sessions">
<ul style="list-style-type: none; margin-bottom: 15px; padding-left: 0;">
{% for session in training_event.sessions limit: 3 %}
{% include "training_session", session: session, offset: 0, class_name: "" %}
{% endfor %}
{% for session in training_event.sessions offset: 3 %}
{% include "training_session", session: session, offset: 3, class_name: "hideable uk-hidden" %}
{% endfor %}
</ul>
{% if training_event.sessions.size > 3 %}
<a
href="#"
data-uk-toggle="{target: '#training-event-{{training_event.id}} .hideable'}"
style="
cursor: pointer;
font-size: 12px;
margin: 15px 0;
outline: 0;"
>
<span class="hideable">{% t .view_more %}</span>
<span class="hideable uk-hidden">{% t .collapse %}</span>
</a>
{% endif %}
</div>
</div>
</div>
</li>

View File

@ -0,0 +1,24 @@
<li
class="de-session uk-flex uk-flex-middle uk-margin-bottom {{ class_name }}"
data-test="session-{{ forloop.index | plus: offset }}"
>
<i class="far fa-stopwatch de-session-icon uk-margin-horizontal uk-text-primary"/></i>
<div>
<span class="de-session-name">{% t .name %} {{ forloop.index | plus: offset }}</span>
<span
class="de-session-status uk-padding-small-left"
data-test="registration-status"
>
{{session.registration_status}}
</span>
<span class="de-session-date">
{{ session.session_date }}
</span>
</div>
<a
class="de-session-button uk-button uk-button-outline"
href="{{ session.self_url }}"
>
{% t .view %}
</a>
</li>

View File

@ -0,0 +1,379 @@
<header class="school-website-header uk-z-4">
<div class="uk-container-expand">
<nav class="uk-navbar" data-behavior="dropdown">
<a href="{{ current_school.logo_navigation_url }}" class="uk-brand">
{% if current_school.logo_url %}
<img src="{{ current_school.logo_url }}" alt="{{ current_school.name }}">
{% else %}
<span class="uk-text-large uk-text-bold">{{ current_school.name }}</span>
{% endif %}
</a>
<div class="uk-navbar-flip">
<ul class="uk-navbar-nav uk-hidden-small">
{% for website_navigation in header_navigations %}
<!--<li>
<a href="{{ website_navigation.path }}" {% if website_navigation.external? %} target="_blank" {% endif %}>
{{ website_navigation.name }}
</a>
</li>-->
{% endfor %}
{% search %}
<li class="uk-padding-top">
{% include "search_form" with "" %}
</li>
{% endsearch %}
{% catalog_search %}
<li class="uk-padding-top">
{% include "catalog_search_form" with "" %}
</li>
{% endcatalog_search %}
{% if current_person.signed_in? %}
<!--<li>
<a class="menu-profile-link" href="{{ routes.my_profile_path }}">Profile</a>
</li>-->
<li>
<a href="#" class="uk-button uk-button-primary get-in-touch-btn" id="get-in-touch">GET IN TOUCH</a></li>
</li>
<li>
<a href="{{ routes.log_out_path }}" class="profile-icon" data-method="delete" rel="nofollow"><img src="http://dvtemp.doubleverify.com/wp-content/uploads/2020/09/header-profile-icon.svg" alt="{{ current_person.name }}"> <span>{% t .log_out %}</span></a>
</li>
{% else %}
<li><a href="{{ routes.log_in_path }}">{% t .log_in %}</a></li>
{% endif %}
</ul>
<div class="uk-visible-small">
{% search %}
<button class="uk-button uk-button-link uk-navbar-toggle mobile-search-toggle mobile-navbar-toggle" data-uk-toggle="{target:'#mobile-search'}">
</button>
{% endsearch %}
{% catalog_search %}
<button class="uk-button uk-button-link uk-navbar-toggle mobile-search-toggle mobile-navbar-toggle" data-uk-toggle="{target:'#mobile-search'}">
</button>
{% endcatalog_search %}
<a href="#mobile-nav" class="mobile-navbar-toggle uk-navbar-toggle" data-uk-offcanvas></a>
</div>
</div>
</nav>
</div>
</header>
<div class="overlay highlight-overlay" id="overlay">
<div class="overlay-table">
<div class="overlay-cell">
<div class="overlay-container">
<button class="overlay-close button-close" id="close-btn" type="button">Close Overlay</button>
<div class="overlay-main-content">
<p class="overlay-description">For any questions about DV University or DoubleVerify, please contact <a href="mailto:dvusupport@doubleverify.com">dvusupport@doubleverify.com</a></p>
</div>
</div>
</div>
</div>
</div>
<script>
var closebtn = document.getElementById('close-btn');
var overlay = document.getElementById('overlay');
var getin_touch = document.getElementById('get-in-touch');
getin_touch.onclick = function(){
overlay.classList.add('active');
return false;
}
closebtn.onclick = function(){
overlay.classList.remove('active');
}
</script>
{% search %}
<div id="mobile-search" class="school-website-header uk-visible-small uk-position-top uk-padding uk-block-default uk-flex uk-border-bottom {% if hide_search_box %}uk-hidden {% endif %}">
{% include "search_form" with "" %}
<a class="uk-button uk-button-link" href="{{ routes.my_content_path }}">{% t .cancel %}</a>
</div>
{% endsearch %}
{% catalog_search %}
<div id="mobile-search" class="school-website-header uk-visible-small uk-position-top uk-padding uk-block-default uk-flex uk-border-bottom {% if hide_search_box %}uk-hidden {% endif %}">
{% include "catalog_search_form" with "" %}
<a class="uk-button uk-button-link" href="{{ routes.school_website_catalog_path }}">{% t .cancel %}</a>
</div>
{% endcatalog_search %}
<div id="mobile-nav" class="uk-offcanvas">
<div class="uk-offcanvas-bar uk-offcanvas-bar-flip">
<ul class="uk-nav uk-nav-offcanvas" data-uk-nav>
{% for website_navigation in header_navigations %}
<li>
<a href="{{ website_navigation.path }}" {% if website_navigation.external? %} target="_blank" {% endif %}>
{{ website_navigation.name }}
</a>
</li>
{% endfor %}
{% if current_person.signed_in? %}
<li><a href="{{ routes.my_content_path }}">{{ current_school.my_content_label }}</a></li>
<li><a href="{{ routes.my_profile_path }}">{% t .my_profile %}</a></li>
<li class="uk-nav-divider"></li>
<li><a href="{{ routes.log_out_path }}" data-method="delete" rel="nofollow">{% t .log_out %}</a></li>
{% else %}
<li><a href="{{ routes.log_in_path }}">{% t .log_in %}</a></li>
{% endif %}
</ul>
</div>
</div>
{% if preview_banner %}
{{ preview_banner }}
{% endif %}
<div class="my-course-banner"></div>
<div class="uk-container uk-container-center">
<div class="uk-padding-horizontal">
<div class="my-course-banner-content">
<h3 class="custom-title">{{ course.name }}</h3>
<p>{{ course.full_description }}</p>
{% if course.learner_can_retake? %}
<form action="{{ course.course_attempts_path }}" method="POST" onsubmit="retakeButton.disabled = true;">
<p class="course-continue-cta">
<button type="submit" class="uk-button completion-button continue-start-btn" data-test="retake-course-button" name="retakeButton">{{ course.retake_course }}</button>
</p>
</form>
{% else %}
<p class="course-continue-cta">
{% if course.progress == 0 %}
<a href="{{ course.outline_path }}" class="continue-start-btn uk-button uk-button-primary uk-position-bottom-right">Begin Course <span>&raquo;</span></a>
{% endif %}
{% if course.progress > 0 %}
<a href="{{ course.outline_path }}" class="continue-start-btn uk-button uk-button-primary uk-position-bottom-right">Resume Course <span>&raquo;</span></a>
{% endif %}
</p>
{% endif %}
<a href="/my_dashboard" class="course-back-btn">See All Courses</a>
</div>
</div>
</div>
<div class="uk-container course-outline-container uk-container-center uk-padding-large">
{% if current_school.filtering_enabled? %}
<h3 class="uk-margin-remove">{{ course.course_category_names }}</h3>
{% endif %}
<div{% if course.has_outline? %} class="uk-grid uk-grid-large"{% endif %}>
{% if course.has_outline? %}
<div class="uk-width-medium-1-1">
<h3 class="custom-title" id="h3-course-outline">{{ course.outline_label }}</h3>
<div class="course-progress-block">
{% if course.progress == 0 %}
<div class="not-started">
<span class="progress-text">Unstarted</span>
<div class="uk-progress uk-margin-small-top uk-margin-small-bottom"><div class="uk-progress-bar" style="width: 100%; max-width: 100%;"></div></div>
</div>
{% endif %}
{% if course.progress > 0 and course.progress < 100 %}
<div class="in-progress">
<span class="progress-text">In Progress</span>
<div class="uk-progress uk-margin-small-top uk-margin-small-bottom"><div class="uk-progress-bar" style="width: 100%; max-width: 100%;"></div></div>
</div>
{% endif %}
{% if course.progress == 100 %}
<div class="course-completed">
<span class="progress-text">Completed</span>
<div class="uk-progress uk-margin-small-top uk-margin-small-bottom"><div class="uk-progress-bar" style="width: 100%; max-width: 100%;"></div></div>
</div>
{% endif %}
</div>
<ol class="uk-list cover-outline">
{% for section in learner_syllabus.sections %}
<li class="course-activity-section">
<div class="uk-grid">
<div class="uk-width-small-1-1 uk-width-medium-1-2">
<h3 class="custom-title">{{ section.name }}</h3>
</div>
<div class="uk-width-small-1-1 uk-width-medium-1-2">
{% if section.will_be_published? %}
<div class="uk-margin-top">
{% t .scheduled_info %} {{ section.published_at }}
</div>
{% else %}
<ol class="uk-list cover-outline-section-activities">
{% for activity in section.activities %}
<li class="{% if activity.completed? %}completed {% endif %}{% if activity.locked? %}locked{% endif %}" >
{% if activity.locked? %}
<span>
{% if activity.milestone? %}
<i class="uk-icon-flag"></i>
{% endif %}
{{ activity.title }}
</span>
{% else %}
<a href="{{ activity.path }}">
{% if activity.milestone? %}
<i class="uk-icon-flag"></i>
{% endif %}
{{ activity.title }}
</a>
{% endif %}
</li>
{% endfor %}
</ol>
{% endif %}
</div>
</div>
</li>
{% endfor %}
</ol>
</div>
{% endif %}
</div>
</div>
<footer class="footer-main">
<div class="uk-container uk-container-center">
<div class="uk-grid uk-padding-large-left uk-padding-large-right">
<div class="uk-width-small-1-1 footer-logo">
<a href="https://doubleverify.com" class="logo-main"><img src="https://doubleverify.com/wp-content/uploads/2019/10/colour.svg" width="190" alt="image"></a>
</div>
</div>
</div>
</footer>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
let courseLang = "{{ current_person.properties.language | downcase }}";
const courseIdMap = {
"{{ course.id }}" : courseLang
};
const spanishLang = {
"Begin Course": "Empezar el curso",
"Unstarted": "Sin iniciar",
"Course Outline": "Descripción del curso",
"See All Courses": "Ver todos los cursos",
"Resume Course": "Reanudar el curso",
"Description": "En este curso, exploraremos las herramientas disponibles que ayudan a los anunciantes a autenticar sus anuncios programáticos. Además, aprenderá cómo los compradores de pre-bid pueden usar los servicios programáticos de DoubleVerify para desarrollar una línea base de calidad y aumentar el rendimiento usando los segmentos correspondientes."
};
const japaneseLang = {
"Begin Course": "コースを始める",
"Unstarted": "開始前",
"Course Outline": "学習パスの概要",
"See All Courses": "全てのコースを見る",
"Resume Course": "コースを再開する",
"Description": "ここでは、Blueprintを送信するために作成した各種設定を結びつけ、キャンペーンの様々なニーズに合わせてDVのタグがどのようにリクエストされ実装されるかを学びます。30分"
};
const russianLang = {
"Begin Course": "Начатькурс",
"Unstarted": "Неначат",
"Course Outline": "Описаниекурса",
"See All Courses": "Смотретьвсекурсы",
"Resume Course": "Возобновитькурс",
"Description": "Узнайте, как DV Pinnacle® дает возможность анализировать качество каждого рекламного объявления (и при этом поддерживает все платформы покупок медиарекламы, устройства и форматы) с применением динамического создания отчетов о ходе рекламной кампании. Из этого курса мы узнаем, как работать с инструментами IQ Performance, благодаря которым можно повысить качество рекламного инвентаря, графику и/или каналы для достижения целей по эффективности. (45 мин)"
};
const germanLang = {
"Begin Course": "Kurs Starten",
"Unstarted": "Nicht Angefangen",
"Course Outline": "Kursübersicht",
"See All Courses": "ALLE KURSE ANSEHEN",
"Resume Course": "Kurs fortsetzen"
};
const frenchLang = {
"Begin Course": "Commencer Le Cours",
"Unstarted": "Pas Commencé",
"Course Outline": "Plan de cours",
"See All Courses": "Voir tous les cours",
"Resume Course": "Reprendre le cours"
};
const englishLang = {
"Description": "In this course, you will learn to navigate and use IQ Performance tools that allow you to optimize inventory, creatives and/or channels to meet your performance goals. (45 mins)"
};
let activityID = window.location.href.split("/")[4];
let onCoverPage = window.location.href.indexOf("/cover") > -1;
$(document).ready(function() {
var beginButton = $("a.continue-start-btn.uk-button.uk-button-primary.uk-position-bottom-right");
var unstartedLabel = $("span.progress-text");
var outlineHeader = $("#h3-course-outline");
var seeAllCoursesHeader = $("a.course-back-btn");
var resumeButton = $("");
if(courseIdMap[activityID] === "spanish" && onCoverPage) {
$(beginButton).html(spanishLang["Begin Course"]);
$(unstartedLabel).html(spanishLang["Unstarted"]);
$(outlineHeader).html(spanishLang["Course Outline"]);
$(seeAllCoursesHeader).html(spanishLang["See All Courses"]);
$(resumeButton).html(spanishLang["Resume Course"]);
}
else if (courseIdMap[activityID] === "japanese" && onCoverPage) {
$(beginButton).html(japaneseLang["Begin Course"]);
$(unstartedLabel).html(japaneseLang["Unstarted"]);
$(outlineHeader).html(japaneseLang["Course Outline"]);
$(seeAllCoursesHeader).html(japaneseLang["See All Courses"]);
$(resumeButton).html(japaneseLang["Resume Course"]);
}
else if (courseIdMap[activityID] === "russian" && onCoverPage) {
$(beginButton).html(russianLang["Begin Course"]);
$(unstartedLabel).html(russianLang["Unstarted"]);
$(outlineHeader).html(russianLang["Course Outline"]);
$(seeAllCoursesHeader).html(russianLang["See All Courses"]);
$(resumeButton).html(russianLang["Resume Course"]);
}
else if (courseIdMap[activityID] === "german" && onCoverPage) {
$(beginButton).html(germanLang["Begin Course"]);
$(unstartedLabel).html(germanLang["Unstarted"]);
$(outlineHeader).html(germanLang["Course Outline"]);
$(seeAllCoursesHeader).html(germanLang["See All Courses"]);
$(resumeButton).html(germanLang["Resume Course"]);
}
else if (courseIdMap[activityID] === "french" && onCoverPage) {
$(beginButton).html(frenchLang["Begin Course"]);
$(unstartedLabel).html(frenchLang["Unstarted"]);
$(outlineHeader).html(frenchLang["Course Outline"]);
$(seeAllCoursesHeader).html(frenchLang["See All Courses"]);
$(resumeButton).html(frenchLang["Resume Course"]);
}
});
</script>
{% assign lang = current_person.properties.language %}
{% case lang %}
{% when "Spanish" %}
{% include "spanish_lang" %}
{% when "Japanese" %}
{% include "japanese_lang" %}
{% when "Russian"%}
{% include "russian_lang" %}
{% when "German"%}
{% include "german_lang" %}
{% when "French"%}
{% include "french_lang" %}
{% endcase %}

View File

@ -0,0 +1,97 @@
<div class="uk-container uk-container-center uk-margin-top uk-margin-bottom uk-padding-large-top">
<h1 class="uk-text-center page-header uk-padding-horizontal">{{ course.name }}</h1>
</div>
<div class="uk-block uk-block-muted uk-margin-large-bottom uk-border-top uk-border-bottom">
<div class="uk-container uk-container-center">
<div class="uk-grid uk-padding-horizontal">
<div class="uk-width-medium-6-10 uk-margin-bottom">
{% if course.promo_video_embed %}
<div class="video-container course-promo-video" data-behavior="scaleEmbed">
{{ course.promo_video_embed }}
</div>
{% else %}
<img src="{{ course.featured_image_url }}" alt="{{ course.name }}" class="course-image uk-responsive-width uk-width-1-1">
{% endif %}
</div>
<div class="uk-width-medium-4-10">
<div class="uk-margin-large-bottom uk-text-large uk-text-muted">
{{ course.short_description }}
</div>
{% if current_person.enrolled_in_course? %}
<a href="{{ course.cover_path }}" class="uk-button uk-button-primary uk-button-large">{{ course.go_to_label }}</a>
{% elsif course.payment_required? %}
<a href="{{ course.new_order_path }}" class="uk-button uk-button-primary uk-button-large">
{{ course.buy_label }} - {{ course.formatted_price }}
</a>
{% else %}
<form action="{{ course.enrollment_url }}" method="POST">
<button class="enroll-button uk-button uk-button-primary uk-button-large">
{% if current_school.apps.commerce.active? %}
{{ course.buy_label }} - {{ course.formatted_price }}
{% else %}
{% t .enroll %}
{% endif %}
</button>
</form>
{% endif %}
{% unless current_school.disable_social_share? %}
<div class="uk-padding-large-top uk-margin-top">
{{ course.social_links }}
</div>
{% endunless %}
</div>
</div>
</div>
</div>
<div class="uk-container uk-container-center uk-padding-large-bottom uk-pargin-large-bottom">
<div class="uk-grid uk-grid-reverse uk-padding-horizontal">
<div class="uk-width-medium-4-10 uk-push-6-10 school-website-course-meta">
<h2>{{ course.outline_label }}</h2>
<div class="course-syllabus uk-panel uk-panel-box uk-border uk-margin-large-bottom">
{% for section in course.published_sections %}
<div class="uk-margin-bottom">
<h4 class="uk-margin-small-bottom"><strong>{{ section.name }}</strong></h4>
<ol class="uk-list uk-margin-small-top">
{% for activity in section.activities %}
<li>
<i class="uk-icon-{{ activity.list_class }} uk-margin-small-right"></i> {{ activity.title }}
</li>
{% endfor %}
</ol>
</div>
{% endfor %}
</div>
</div>
<div class="uk-width-medium-6-10 uk-pull-4-10">
<h2>{{ course.about_label }}</h2>
<div class="school-website-course-description uk-margin-large-bottom uk-padding-large-right">
{{ course.full_description }}
</div>
{% if course.instructors.count > 0 %}
<h2>{% pluralize course.instructors.count, .instructor_bio_title %}</h2>
{% for instructor in course.instructors %}
<div class="uk-grid uk-grid-small uk-margin-large-bottom">
<div class="uk-width-medium-1-6 uk-width-1-3">
<figure class="uk-thumbnail">
<img src="{{ instructor.image_url }}" alt="{{ instructor.name }}">
</figure>
</div>
<div class="uk-width-medium-5-6 uk-width-2-3">
<div class="uk-padding-left">
{% if instructor.name or instructor.title %}
<h4 class="uk-margin-top-remove uk-margin-small-bottom">{% if instructor.name %}<strong>{{ instructor.name }}</strong>{% endif %}{% if instructor.title %}, <span class="uk-text-muted">{{ instructor.title }}</span>{% endif %}</h4>
{% endif %}
{{ instructor.bio }}
</div>
</div>
</div>
{% endfor %}
{% endif %}
</div>
</div>
</div>

View File

@ -0,0 +1,22 @@
<div class="uk-container uk-container-center uk-margin-top uk-margin-large-bottom">
{% if course_catalog.headline or course_catalog.subheadline %}
<div class="uk-text-center uk-padding-large-vertical uk-padding-horizontal">
{% if courses %}
<h2>{{ course_catalog.headline }}</h2>
<h3 class="page-header uk-margin-top-remove">{{ course_catalog.subheadline }}</h3>
{% else %}
<h1>{{ course_catalog.headline_empty_collection }}</h1>
<h2 class="page-header">
{{ course_catalog.subheadline_empty_collection }}
</h2>
{% endif %}
</div>
{% endif %}
<div class="uk-width-small-1-1 uk-width-medium-1-1 uk-padding-horizontal uk-container-center uk-padding-top uk-margin-large-bottom">
<ul class="uk-grid school-website-course-list" data-behavior="listResize">
{% for course in courses %}
{% include "course" %}
{% endfor %}
</ul>
</div>
</div>

View File

@ -0,0 +1,858 @@
<script>
$('header[data-test=lx-v3-header]').addClass('school-website-header uk-z-4 course-activities-header');
$('header[data-test=lx-v3-header]').removeClass('ewNlQR');
$('header[data-test=lx-v3-header]').html('<div class="uk-container-expand"><nav class="uk-navbar" data-behavior="dropdown"><a href="/" class="uk-brand"><img src="https://cdn.filestackcontent.com/security=policy:eyJleHBpcnkiOjQ4MjUzNDU5MDUsImNhbGwiOlsicmVhZCIsImNvbnZlcnQiLCJzdG9yZSIsInBpY2siLCJyZW1vdmUiXX0=,signature:e9774744380e18096fdbbafd5b0741a424bd52920dc99e2eabbbd516959598f9/TT5KfRwTh6BnWF8uV7eB" alt="DoubleVerify University"></a><div class="uk-navbar-flip"><ul class="uk-navbar-nav uk-hidden-small"><li><a href="#" class="uk-button uk-button-primary get-in-touch-btn" id="get-in-touch">GET IN TOUCH</a></li><li><a href="/learners/sign_out" class="profile-icon" data-method="delete" rel="nofollow"> <span>Log Out</span></a></li></ul><div class="uk-visible-small"><a href="#mobile-nav" class="mobile-navbar-toggle uk-navbar-toggle" data-uk-offcanvas=""><span></span></a></div></div></nav></div>');
$('header[data-test=lx-v3-header]').after('<div class="overlay highlight-overlay" id="overlay"><div class="overlay-table"><div class="overlay-cell"><div class="overlay-container"><button class="overlay-close button-close" id="close-btn" type="button">Close Overlay</button><div class="overlay-main-content"><p class="overlay-description">For any questions about DV University or DoubleVerify, please contact <a href="mailto:dvusupport@doubleverify.com">dvusupport@doubleverify.com</a></p></div></div></div></div></div>');
/*
$('header[data-test=lx-v3-header]').after('<div id="mobile-nav" class="uk-offcanvas" aria-hidden="true"><div class="uk-offcanvas-bar uk-offcanvas-bar-flip" mode="push"><ul class="uk-nav uk-nav-offcanvas" data-uk-nav=""><li><a href="#" class="uk-button uk-button-primary get-in-touch-btn" id="get-in-touch">GET IN TOUCH</a></li><li><a href="/learners/sign_out" class="profile-icon" data-method="delete" rel="nofollow"><img src="http://dvtemp.doubleverify.com/wp-content/uploads/2020/09/header-profile-icon.svg" alt="Khuram Noman"> <span>Log Out</span></a></li></ul></div></div>');
*/
$('header[data-test=lx-v3-header]').after('<div id="mobile-nav" class="uk-offcanvas" aria-hidden="true"><div class="uk-offcanvas-bar uk-offcanvas-bar-flip" mode="push"><ul class="uk-nav uk-nav-offcanvas" data-uk-nav=""><li><a href="/learning_paths">Discover Learning Paths</a></li><li><a href="/my_dashboard">My Dashboard</a></li><li><a href="/account/edit">My Profile</a></li><li class="uk-nav-divider"></li><li><a href="/learners/sign_out" data-method="delete" rel="nofollow">Log Out</a></li></ul></div></div>');
$('#service_learning_root .mobile-navbar-toggle').click(function(e){
e.preventDefault();
$('#mobile-nav').toggleClass('uk-active');
$('.uk-offcanvas-bar').toggleClass('uk-offcanvas-bar-show');
});
var closebtn = document.getElementById('close-btn');
var overlay = document.getElementById('overlay');
var getin_touch = document.getElementById('get-in-touch');
getin_touch.onclick = function(){
overlay.classList.add('active');
return false;
}
closebtn.onclick = function(){
overlay.classList.remove('active');
}
$('footer.Main-h8th5y-2 .NavigationWrapper-spz2cx-3 nav a').remove();
$('footer.Main-h8th5y-2 .NavigationWrapper-spz2cx-3 nav').prepend('<a class="LinkContainer-sc-1vqzw4y-3 iERBQs" data-test="back-button" href="/my_courses"><i class="chevron chevron--left far fa-chevron-left"></i><span class="Label-sc-1vqzw4y-0 lnSSzK">Back</span></a>');
</script>
<style>
#service_learning_root #mobile-nav {
width: 275px;
right: auto;
display: block;
transform: translateX(-300px);
transition: 500ms;
z-index: 999999;
}
#service_learning_root .uk-navbar-flip {
position: absolute;
top: 50%;
right: 15px;
transform: translateY(-50%);
}
#service_learning_root .uk-navbar-toggle {
position: absolute;
top: 50%;
right: 0;
height: 20px;
width: 24px;
transform: translateY(-50%);
}
#service_learning_root .uk-navbar-toggle span {
width: 100%;
height: 3px;
position: absolute;
top: 50%;
left: 0;
transform: translateY(-50%);
background: #000;
perspective: 1px;
}
#service_learning_root .uk-navbar-toggle:after,
#service_learning_root .uk-navbar-toggle:before {
position: absolute;
display: block;
left: 0;
width: 100%;
height: 3px;
background: #000;
content: "";
transition-duration: 0.3s, 0.3s;
transition-delay: 0.15s, 0s;
}
#service_learning_root .uk-navbar-toggle:after {
top: 0;
transition-property: top, transform;
-webkit-transition-property: top, transform;
-ms-transition-property: top, transform;
}
#service_learning_root .uk-navbar-toggle:before {
bottom: 0;
transition-property: bottom, transform;
-webkit-transition-property: bottom, transform;
-ms-transition-property: bottom, transform;
}
#service_learning_root .uk-offcanvas.uk-active {
transform: translateX(0px) !important;
}
#service_learning_root .uk-offcanvas.uk-active .uk-offcanvas-bar.uk-offcanvas-bar-show {
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
#service_learning_root .uk-nav {
list-style: none;
margin: 0;
padding-left: 0;
}
#service_learning_root .uk-nav-offcanvas>li>a {
display: block;
text-decoration: none;
}
#service_learning_root .uk-nav-offcanvas .uk-nav-divider {
border-top: 1px solid #1a1a1a;
margin: 8px 15px;
}
.school-website-header .uk-brand {
background: url(https://doubleverify.com/wp-content/uploads/2020/11/DV_University_logo.svg) 0 center no-repeat;
background-size: contain;
display: inline-block;
}
.school-website-header .uk-brand img {
opacity: 0;
}
.iERBQs {
-webkit-box-align: center;
align-items: center;
background-color: transparent;
border-width: 0px 0px 0px 1px;
border-top-style: initial;
border-right-style: initial;
border-bottom-style: initial;
border-top-color: initial;
border-right-color: initial;
border-bottom-color: initial;
border-image: initial;
border-left-style: solid;
border-left-color: rgb(229, 231, 235);
color: rgb(149, 45, 152);
cursor: pointer;
display: flex;
font-size: 11px;
font-weight: 400;
-webkit-box-pack: center;
justify-content: center;
letter-spacing: 1px;
line-height: 22px;
outline: 0px;
text-decoration: none;
text-transform: uppercase;
transition: color 0.3s ease 0s;
}
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
.iERBQs .chevron {
transition: transform 0.3s ease 0s;
}
.iERBQs .chevron--left {
margin: 0px 15px 0px 0px;
}
.lnSSzK {
padding-top: 2px;
}
@media screen and (max-width: 767px) {
#service_learning_root ul.uk-navbar-nav.uk-hidden-small {
display: none !important;
}
#service_learning_root .lkYzM .IframeContainer-ljslru-1 {
top: 81px;
}
}
@media screen and (min-width: 576px){
.iERBQs {
height: 100%;
min-width: 150px;
padding: 15px 35px;
}
}
</style>
<!-- SPANISH COURSES -->
<style>
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f a[data-test="exit-button"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="your-answers-row"]
strong,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="correct-answers-row"]
strong {
visibility: hidden;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f .hjOcEf,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f div[data-test="correct-answers-row"] strong,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f a[data-test="navigation-exit-button"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f button[data-test="retake-button"] span,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f .ikqwMI,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f a[data-test="back-to-incomplete-activity"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f a[data-test="back-button"] span,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="disabled-next-question-button"]
span,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="next-question-button"]
span,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="continue-button"]
span,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="disabled-continue-button"]
span,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="course-progress"]
.jjvmkA,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
a[data-test="go-back-to-course-button"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
a[data-test="primary-button"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f h2[data-test="summary-headline"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f div[data-test="summary-title"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f div[data-test="summary-subtitle"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="toggle-possible-answers"],
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="your-answers-row"]
strong {
text-indent: -99999px;
line-height: 0;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f a[data-test="back-to-incomplete-activity"]::after
{
text-indent: 0;
display: block;
content: "Volver a la actividad incompleta";
line-height: 12px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f button[data-test="retake-button"] span::after
{
text-indent: 0;
display: block;
content: "Repetir cuestionario";
line-height: 12px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f .hjOcEf::after {
text-indent: 0;
display: block;
content: "Tabla de contenido";
line-height: 36px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f .ikqwMI::after {
text-indent: 0;
display: block;
content: "Lista de actividades de este curso";
line-height: 36px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
a[data-test="back-button"]
span::after {
text-indent: 0;
display: block;
content: "Atrás";
line-height: 36px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="disabled-next-question-button"]
span::after,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="next-question-button"]
span::after {
text-indent: 0;
display: block;
content: "Próxima pregunta";
line-height: 30px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="continue-button"]
span::after,
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="disabled-continue-button"]
span::after {
text-indent: 0;
display: block;
content: "Continuar";
line-height: 30px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
a[data-test="navigation-exit-button"]::after {
text-indent: 0;
display: block;
content: "Salida";
line-height: 30px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
a[data-test="exit-button"]::after {
text-indent: 0;
display: block;
content: "Volver a Mis cursos";
line-height: 30px;
visibility: initial;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="course-progress"]
.jjvmkA::after {
text-indent: 0;
display: block;
content: "Progreso";
line-height: 12px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
a[data-test="go-back-to-course-button"]::after {
text-indent: 0;
display: block;
content: "Volver al curso";
line-height: 12px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
h2[data-test="summary-headline"]::after {
text-indent: 0;
display: block;
content: "Completaste la prueba";
line-height: 30px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
button[data-test="toggle-possible-answers"]::after {
text-indent: 0;
display: block;
content: "Ve todas las posibles respuestas";
line-height: 30px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="correct-answers-row"]
strong::after {
text-indent: 0;
display: block;
content: "Respuesta correcta:";
line-height: 12px;
visibility: visible;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="your-answers-row"]
strong::after {
text-indent: 0;
visibility: visible;
display: block;
content: "Tu respuesta:";
line-height: 12px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="summary-title"]::after {
text-indent: 0;
display: block;
content: "¡Felicidades!";
line-height: 36px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
div[data-test="summary-subtitle"]::after {
text-indent: 0;
display: block;
content: "Completaste este curso.";
line-height: 36px;
}
.course-f340cd77-1c7b-49c1-b32d-9203a4b3c71f
a[data-test="primary-button"]::after {
text-indent: 0;
display: block;
content: "Ir a Mis cursos";
line-height: 13px;
visibility: initial;
}
</style>
<style>
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f a[data-test="exit-button"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="your-answers-row"]
strong,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="correct-answers-row"]
strong {
visibility: hidden;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f .hjOcEf,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f div[data-test="correct-answers-row"] strong,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f a[data-test="navigation-exit-button"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f button[data-test="retake-button"] span,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f .ikqwMI,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f a[data-test="back-to-incomplete-activity"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f a[data-test="back-button"] span,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="disabled-next-question-button"]
span,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="next-question-button"]
span,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="continue-button"]
span,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="disabled-continue-button"]
span,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="course-progress"]
.jjvmkA,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
a[data-test="go-back-to-course-button"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
a[data-test="primary-button"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f h2[data-test="summary-headline"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f div[data-test="summary-title"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f div[data-test="summary-subtitle"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="toggle-possible-answers"],
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="your-answers-row"]
strong {
text-indent: -99999px;
line-height: 0;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f a[data-test="back-to-incomplete-activity"]::after
{
text-indent: 0;
display: block;
content: "Volver a la actividad incompleta";
line-height: 12px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f button[data-test="retake-button"] span::after
{
text-indent: 0;
display: block;
content: "Repetir cuestionario";
line-height: 12px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f .hjOcEf::after {
text-indent: 0;
display: block;
content: "Tabla de contenido";
line-height: 36px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f .ikqwMI::after {
text-indent: 0;
display: block;
content: "Lista de actividades de este curso";
line-height: 36px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
a[data-test="back-button"]
span::after {
text-indent: 0;
display: block;
content: "Atrás";
line-height: 36px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="disabled-next-question-button"]
span::after,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="next-question-button"]
span::after {
text-indent: 0;
display: block;
content: "Próxima pregunta";
line-height: 30px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="continue-button"]
span::after,
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="disabled-continue-button"]
span::after {
text-indent: 0;
display: block;
content: "Continuar";
line-height: 30px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
a[data-test="navigation-exit-button"]::after {
text-indent: 0;
display: block;
content: "Salida";
line-height: 30px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
a[data-test="exit-button"]::after {
text-indent: 0;
display: block;
content: "Volver a Mis cursos";
line-height: 30px;
visibility: initial;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="course-progress"]
.jjvmkA::after {
text-indent: 0;
display: block;
content: "Progreso";
line-height: 12px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
a[data-test="go-back-to-course-button"]::after {
text-indent: 0;
display: block;
content: "Volver al curso";
line-height: 12px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
h2[data-test="summary-headline"]::after {
text-indent: 0;
display: block;
content: "Completaste la prueba";
line-height: 30px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
button[data-test="toggle-possible-answers"]::after {
text-indent: 0;
display: block;
content: "Ve todas las posibles respuestas";
line-height: 30px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="correct-answers-row"]
strong::after {
text-indent: 0;
display: block;
content: "Respuesta correcta:";
line-height: 12px;
visibility: visible;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="your-answers-row"]
strong::after {
text-indent: 0;
visibility: visible;
display: block;
content: "Tu respuesta:";
line-height: 12px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="summary-title"]::after {
text-indent: 0;
display: block;
content: "¡Felicidades!";
line-height: 36px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
div[data-test="summary-subtitle"]::after {
text-indent: 0;
display: block;
content: "Completaste este curso.";
line-height: 36px;
}
.course-d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f
a[data-test="primary-button"]::after {
text-indent: 0;
display: block;
content: "Ir a Mis cursos";
line-height: 13px;
visibility: initial;
}
</style>
<style>
.course-6b122483-99db-4a43-a200-153cba1698fd a[data-test="exit-button"],
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="your-answers-row"]
strong,
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="correct-answers-row"]
strong {
visibility: hidden;
}
.course-6b122483-99db-4a43-a200-153cba1698fd .hjOcEf,
.course-6b122483-99db-4a43-a200-153cba1698fd div[data-test="correct-answers-row"] strong,
.course-6b122483-99db-4a43-a200-153cba1698fd a[data-test="navigation-exit-button"],
.course-6b122483-99db-4a43-a200-153cba1698fd button[data-test="retake-button"] span,
.course-6b122483-99db-4a43-a200-153cba1698fd .ikqwMI,
.course-6b122483-99db-4a43-a200-153cba1698fd a[data-test="back-to-incomplete-activity"],
.course-6b122483-99db-4a43-a200-153cba1698fd a[data-test="back-button"] span,
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="disabled-next-question-button"]
span,
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="next-question-button"]
span,
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="continue-button"]
span,
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="disabled-continue-button"]
span,
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="course-progress"]
.jjvmkA,
.course-6b122483-99db-4a43-a200-153cba1698fd
a[data-test="go-back-to-course-button"],
.course-6b122483-99db-4a43-a200-153cba1698fd
a[data-test="primary-button"],
.course-6b122483-99db-4a43-a200-153cba1698fd h2[data-test="summary-headline"],
.course-6b122483-99db-4a43-a200-153cba1698fd div[data-test="summary-title"],
.course-6b122483-99db-4a43-a200-153cba1698fd div[data-test="summary-subtitle"],
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="toggle-possible-answers"],
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="your-answers-row"]
strong {
text-indent: -99999px;
line-height: 0;
}
.course-6b122483-99db-4a43-a200-153cba1698fd a[data-test="back-to-incomplete-activity"]::after
{
text-indent: 0;
display: block;
content: "Volver a la actividad incompleta";
line-height: 12px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd button[data-test="retake-button"] span::after
{
text-indent: 0;
display: block;
content: "Repetir cuestionario";
line-height: 12px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd .hjOcEf::after {
text-indent: 0;
display: block;
content: "Tabla de contenido";
line-height: 36px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd .ikqwMI::after {
text-indent: 0;
display: block;
content: "Lista de actividades de este curso";
line-height: 36px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
a[data-test="back-button"]
span::after {
text-indent: 0;
display: block;
content: "Atrás";
line-height: 36px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="disabled-next-question-button"]
span::after,
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="next-question-button"]
span::after {
text-indent: 0;
display: block;
content: "Próxima pregunta";
line-height: 30px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="continue-button"]
span::after,
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="disabled-continue-button"]
span::after {
text-indent: 0;
display: block;
content: "Continuar";
line-height: 30px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
a[data-test="navigation-exit-button"]::after {
text-indent: 0;
display: block;
content: "Salida";
line-height: 30px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
a[data-test="exit-button"]::after {
text-indent: 0;
display: block;
content: "Volver a Mis cursos";
line-height: 30px;
visibility: initial;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="course-progress"]
.jjvmkA::after {
text-indent: 0;
display: block;
content: "Progreso";
line-height: 12px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
a[data-test="go-back-to-course-button"]::after {
text-indent: 0;
display: block;
content: "Volver al curso";
line-height: 12px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
h2[data-test="summary-headline"]::after {
text-indent: 0;
display: block;
content: "Completaste la prueba";
line-height: 30px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
button[data-test="toggle-possible-answers"]::after {
text-indent: 0;
display: block;
content: "Ve todas las posibles respuestas";
line-height: 30px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="correct-answers-row"]
strong::after {
text-indent: 0;
display: block;
content: "Respuesta correcta:";
line-height: 12px;
visibility: visible;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="your-answers-row"]
strong::after {
text-indent: 0;
visibility: visible;
display: block;
content: "Tu respuesta:";
line-height: 12px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="summary-title"]::after {
text-indent: 0;
display: block;
content: "¡Felicidades!";
line-height: 36px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
div[data-test="summary-subtitle"]::after {
text-indent: 0;
display: block;
content: "Completaste este curso.";
line-height: 36px;
}
.course-6b122483-99db-4a43-a200-153cba1698fd
a[data-test="primary-button"]::after {
text-indent: 0;
display: block;
content: "Ir a Mis cursos";
line-height: 13px;
visibility: initial;
}
</style>
<!-- END SPANISH -->
<script>
let translated = false;
let currentLanguage = "none";
let courseID = window.location.href.split("/")[4];
let courseMap = {
"f340cd77-1c7b-49c1-b32d-9203a4b3c71f" : "spanish",
"d8ffa29d-ae2b-494a-96fd-8ce24a40bd2f" : "spanish",
"6b122483-99db-4a43-a200-153cba1698fd" : "spanish"
}
</script>
<script>
$(window).bind("load", function() {
if (courseMap[courseID]) {
currentLanguage = courseMap[courseID];
console.log("Current Language: ", currentLanguage);
if ($("p[data-test='summary-paragraph']").length) {
translateContent();
}
listenToDom();
}
function listenToDom() {
const body = document.getElementsByTagName("body")[0];
const config = { attributes: true, childList: true, subtree: true };
const callback = function(mutationsList, observer) {
if ($("p[data-test='summary-paragraph']").length && !translated) {
translateContent();
//observer.disconnect();
} else {
translated = false;
}
};
const observer = new MutationObserver(callback);
observer.observe(body, config);
}
function translateContent() {
if (!translated) {
let summary = $("p[data-test='summary-paragraph']").html();
summary = summary.split(" ");
let translatedSummary;
// You scored 0% with 0 of 2 questions answered correctly.
if (currentLanguage === "spanish") {
//Obtuviste 0% con 0 de 2 preguntas respondidas correctamente.
translatedSummary = `Obtuviste ${summary[2]} con ${summary[4]} de ${summary[6]} preguntas respondidas correctamente.`;
}
else if (currentLanguage === "russian") {
//Вы набрали 0%, если правильно ответили на 0 из 2 вопросов.
translatedSummary = `Вы набрали ${summary[2]}, если правильно ответили на ${summary[4]} из ${summary[6]} вопросов.`;
}
else if (currentLanguage === "japanese") {
// 您在 X 问题中有 X 个回答正确,得分为 X%
translatedSummary = `您在 ${summary[4]} 问题中有 ${summary[6]} 个回答正确,得分为 ${summary[2]}`;
}
else if (currentLanguage === "german") {
//Вы набрали 0%, если правильно ответили на 0 из 2 вопросов.
translatedSummary = `Sie haben ${summary[2]} erreicht und insgesamt ${summary[4]} von ${summary[6]} Fragen richtig beantwortet.`;
}
else if (currentLanguage === "french") {
//Вы набрали 0%, если правильно ответили на 0 из 2 вопросов.
translatedSummary = `Vous avez obtenu un score de ${summary[2]} en répondant correctement à ${summary[4]} questions sur ${summary[6]}.`;
}
$("p[data-test='summary-paragraph']").html(translatedSummary);
translated = true;
}
}
});
</script>

View File

@ -0,0 +1,12 @@
<div class="uk-container uk-container-center uk-padding-horizontal uk-margin-large-top uk-margin-bottom">
<hgroup class="uk-text-center vertical-align uk-padding-large-top">
<h1>{{ custom_page.headline }}</h1>
<h2 class="uk-margin-top-remove uk-margin-large-bottom page-header">{{ custom_page.subheadline }}</h2>
</hgroup>
<div class="uk-width-small-8-10 uk-width-medium-2-3 uk-container-center uk-padding-large-vertical uk-margin-large-bottom">
<div class="school-website-custom-page-content">
{{ custom_page.content }}
</div>
</div>
</div>

View File

@ -0,0 +1,36 @@
<div class="uk-padding-horizontal uk-container uk-container-center">
<div class="uk-padding-large-vertical uk-padding-horizontal uk-border-bottom">
<h2>{% t .title %}</h2>
</div>
{% if discover_events.filter_options.any? %}
<div class="sk-events__filter uk-margin-large-top uk-margin-bottom uk-margin-horizontal">
<form class="uk-form uk-grid uk-width-large-2-3 uk-width-small-1-1">
<label class="uk-display-inline-block" for="filter">{% t .filter.label %}</label>
<div class="uk-display-inline-block uk-width-medium-4-10 uk-width-small-1-1 uk-margin-bottom">
{{ discover_events.filter }}
</div>
<div class="uk-display-inline-block">
<button class="uk-button uk-button-primary">{% t .filter.apply %}</button>
</div>
</form>
</div>
{% endif %}
{% if training_events.empty? %}
<div class="sk-margin-xlarge-top">
<h1 class="uk-text-center">{% t .no_events %}</h1>
<h1 class="uk-text-center uk-margin-top-remove">{% t .check_later %}</h1>
</div>
{% else %}
<div class="uk-grid uk-grid-flex uk-margin-left-remove">
<div class="uk-width-1-1 uk-padding">
<ul class="uk-grid uk-grid-medium school-website-course-list uk-grid-match">
{% for training_event in training_events %}
{% include "training_event" training_event = training_event %}
{% endfor %}
</ul>
</div>
</div>
{% endif %}
</div>

View File

@ -0,0 +1,41 @@
{% include "course_version_outdated_alert", courses: homepage.published_featured_courses %}
<div class="school-website-hero hero-tall uk-overlay uk-cover-background" style="background-image: url('{{ homepage.artwork_url }}');">
<div class="uk-overlay-panel uk-overlay-background uk-flex uk-flex-center uk-flex-middle uk-text-center">
<hgroup class="uk-container uk-container-center uk-padding-large-horizontal">
{% if homepage.headline %}
<h1 class="uk-text-center uk-heading-large uk-container-center">{{ homepage.headline }}</h1>
{% endif %}
{% if homepage.subheadline %}
<h2 class="uk-text-center uk-margin-large-bottom">{{ homepage.subheadline }}</h2>
{% endif %}
<a href="/courses" class="uk-button uk-button-primary uk-button-large uk-margin-large-top">{% t .discover_catalog %}</a>
</hgroup>
</div>
</div>
<div class="uk-container uk-container-center uk-padding-large-top uk-padding-large-bottom">
<hgroup class="banner uk-text-center uk-padding-large-top uk-padding-large-horizontal">
{% if homepage.published_featured_courses %}
{% if homepage.featured_courses_headline or homepage.featured_courses_subheadline %}
{% if homepage.featured_courses_headline %}
<h2>{{ homepage.featured_courses_headline }}</h2>
{% endif %}
{% if homepage.featured_courses_subheadline %}
<h3 class="uk-margin-remove uk-text-muted">{{ homepage.featured_courses_subheadline }}</h3>
{% endif %}
{% endif %}
{% endif %}
</hgroup>
{% if homepage.published_featured_courses %}
<div class="uk-width-small-1-1 uk-width-1-1 uk-padding-large-horizontal uk-container-center uk-padding-large-top uk-padding-large-bottom uk-margin-large-bottom">
<ul class="uk-grid school-website-course-list" data-behavior="listResize">
{% for course in homepage.published_featured_courses %}
{% include "course" %}
{% endfor %}
</ul>
</div>
{% endif %}
</div>

View File

@ -0,0 +1,9 @@
{% include "learning_path_cover_header" %}
{% if preview_banner %}
{{ preview_banner }}
{% endif %}
<div class="uk-container uk-container-center uk-padding-large uk-margin-large-top learning-path-cover">
{% include "learning_path_cover_content" %}
</div>

View File

@ -0,0 +1,64 @@
<div class="uk-container uk-container-center uk-margin-top uk-margin-bottom uk-padding-large-top">
<h1 class="uk-text-center page-header uk-padding-horizontal" data-test="learning-path-name">
{{ learning_path.name }}
</h1>
</div>
<div class="uk-block uk-block-muted uk-margin-large-bottom uk-border-top uk-border-bottom">
<div class="uk-container uk-container-center">
<div class="uk-grid uk-padding-horizontal">
<div class="uk-width-medium-6-10 uk-margin-bottom">
<img src="{{ learning_path.featured_image_url }}" alt="{{ learning_path.name }}" class="course-image uk-responsive-width uk-width-1-1">
</div>
<div class="uk-width-medium-4-10">
<div class="uk-margin-large-bottom uk-text-large uk-text-muted">
{{ learning_path.description }}
</div>
{% learning_path_next_step_button learning_path, class: "uk-button uk-button-primary uk-button-large" %}
</div>
</div>
</div>
</div>
<div class="uk-container uk-container-center uk-padding-large-bottom uk-pargin-large-bottom">
<div class="uk-grid uk-grid-reverse uk-padding-horizontal">
<div class="uk-width-medium-4-10 uk-push-6-10 school-website-course-meta">
<h2>{{ learning_path.outline_label }}</h2>
<div class="course-syllabus uk-panel uk-panel-box uk-border uk-margin-large-bottom">
{% for item in learning_path.items %}
<div class="uk-margin-bottom">
<h4 class="uk-margin-small-bottom"><strong>{{ item.name }}</strong></h4>
</div>
{% endfor %}
</div>
</div>
<div class="uk-width-medium-6-10 uk-pull-4-10">
<h2>{{ learning_path.about_label }}</h2>
<div class="school-website-course-description uk-margin-large-bottom uk-padding-large-right">
{{ learning_path.description }}
</div>
{% if learning_path.instructors.count > 0 %}
<h2>{% pluralize learning_path.instructors.count, .instructor_bio_title %}</h2>
{% for instructor in learning_path.instructors %}
<div class="uk-grid uk-grid-small uk-margin-large-bottom">
<div class="uk-width-medium-1-6 uk-width-1-3">
<figure class="uk-thumbnail">
<img src="{{ instructor.image_url }}" alt="{{ instructor.name }}">
</figure>
</div>
<div class="uk-width-medium-5-6 uk-width-2-3">
<div class="uk-padding-left">
{% if instructor.name or instructor.title %}
<h4 class="uk-margin-top-remove uk-margin-small-bottom">{% if instructor.name %}<strong>{{ instructor.name }}</strong>{% endif %}{% if instructor.title %}, <span class="uk-text-muted">{{ instructor.title }}</span>{% endif %}</h4>
{% endif %}
{{ instructor.bio }}
</div>
</div>
</div>
{% endfor %}
{% endif %}
</div>
</div>
</div>

View File

@ -0,0 +1,10 @@
{% include "learning_path_cover_header" %}
{% if preview_banner %}
{{ preview_banner }}
{% endif %}
<div class="uk-container uk-container-center uk-padding-large uk-margin-large-top learning-path-cover">
{% include "learning_path_banners" %}
{% include "learning_path_cover_content" %}
</div>

View File

@ -0,0 +1,16 @@
<div class="uk-container uk-container-center uk-margin-top uk-margin-large-bottom">
<div class="uk-width-small-1-1 uk-width-medium-1-1 uk-margin-vertical">
<h2 class="uk-padding-horizontal uk-margin-large-bottom" data-test="discover-learning-paths-header">
{% t .discover_learning_paths %}
</h2>
<hr/>
</div>
<div class="uk-width-small-1-1 uk-width-medium-1-1 uk-padding-horizontal uk-container-center uk-padding-top uk-margin-large-bottom">
<ul class="uk-grid school-website-course-list" data-behavior="listResize">
{% for learning_path in learning_paths %}
{% include "learning_path" %}
{% endfor %}
</ul>
</div>
</div>

View File

@ -0,0 +1,41 @@
<section class="uk-container uk-container-center uk-margin-large-top uk-padding-large-top uk-margin-large-bottom uk-padding-large-bottom">
<div class="uk-width-small-8-10 uk-width-medium-4-10 uk-container-center">
<h2 class="uk-text-center uk-margin-large-bottom">{% t .title %}</h2>
<div class="uk-panel uk-panel-box uk-panel-box-secondary uk-padding-large-top uk-padding-large-right uk-padding-large-bottom uk-padding-large-left uk-margin-large-bottom">
<form class="simple_form uk-form uk-form-stacked new_learner" id="new_learner" novalidate="novalidate" action="{{ routes.log_in_path }}" accept-charset="UTF-8" method="post">
{% form_authenticity_token %}
<div class="uk-form-row email optional learner_email">
<div class="uk-form-controls">
<input class="uk-width-1-1 string email optional" autofocus="autofocus" placeholder="{% t .placeholders.email %}" type="email" name="learner[email]" id="learner_email">
</div>
</div>
<div class="uk-form-row password optional learner_password">
<div class="uk-form-controls">
<input class="uk-width-1-1 password optional" placeholder="{% t .placeholders.password %}" type="password" name="learner[password]" id="learner_password">
</div>
</div>
<div class="uk-form-row uk-nbfc">
<input type="submit" name="commit" value="{% t .placeholders.submit %}" class="button uk-button uk-button-primary uk-width-1-1" data-disable-with="Create Person">
</div>
<div class="uk-form-row uk-nbfc">
<p class="uk-text-center">
<a class="forgot-pass" href="{{ routes.forgot_password_path }}">{% t .reset_password %}</a>
{% if current_school.account_creation_enabled? %}
<span class="uk-text-muted">&nbsp;|&nbsp;</span>
<a href="{{ routes.sign_up_path }}">{% t .create_account %}</a>
{% endif %}
</p>
</div>
<div class="uk-form-row uk-nbfc">
<p class="uk-text-center">
{% if current_school.request_access_enabled? %}
<a target="_blank" href="{{ current_school.request_access_link }}">{{ current_school.request_access_label }}</a>
{% endif %}
</p>
</div>
</form>
</div>
</div>
</section>

View File

@ -0,0 +1,353 @@
<div class="my-course-banner"></div>
<div class="uk-container uk-container-center">
<div class="uk-padding-horizontal">
<div class="my-course-banner-content">
<h3 class="custom-title"><img src="https://doubleverify.com/wp-content/uploads/2022/06/DV_University_Logo.png" width="130" alt="Double Verify University"></h3>
<p>DoubleVerify's purpose is to power media quality and performance for the world's largest brands and agencies. Global advertisers leverage DV's solutions to drive campaign efficiency, protect brand reputation and maximize return on their digital investment. The DVU course curriculum is designed to give you the tools you need to fully realize the benefits of DV's Advertiser Suite. Each course will let you take a self-guided tour of our service offerings, and demonstrate ways to leverage DV's actionable insights in order to achieve your digital campaign objectives.<br></p>
<div> <p style="font-weight: 500;">Lets build a better industry<sup style="font-size: 60%">&reg;</sup>.</p></div>
</div>
</div>
</div>
<div class="uk-container uk-container-center school-website-course-index-list uk-margin-bottom current-person" data-person-id="{{current_person.id}}" data-person-name="{{current_person.name}}" data-person-email="{{current_person.email}}">
<div class="uk-padding-horizontal">
{% if current_school.apps.instructor_led_training.active? %}
{% if current_person.upcoming_registered_events.any? %}
{% include "events" %}
{% else %}
{% include "events_empty" %}
{% endif %}
{% endif %}
{% if my_content.learning_paths? %}
{% include "my_paths" %}
{% endif %}
<div class="uk-grid uk-grid-flex uk-margin-left-remove">
{% include "filters" with "" %}
{% if current_school.filtering_enabled? and current_person.filterable_categories.count > 0 %}
<div class="uk-width-medium-5-6 uk-padding">
{% else %}
<div class="uk-width-1-1 uk-padding">
{% endif %}
<ul class="uk-grid uk-grid-medium school-website-course-list uk-grid-match" data-uk-grid-match="{target:'.uk-panel'}">
{% for course in my_content.courses %}
{% if course.properties.language == current_person.properties.language %}
{% include "course" %}
{% endif %}
{% endfor %}
</ul>
</div>
</div>
</div>
</div>
<script>
var learner_id = $('.current-person').attr('data-person-id');
var learner_name = encodeURI($('.current-person').attr('data-person-name'));
var learner_email = encodeURIComponent($('.current-person').attr('data-person-email'));
var current_language = $('.all-course_list').attr('data-current-language');
console.log(current_language);
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_api.php?callback=?&id="+learner_id+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {
console.log(data);
var course_list = document.querySelectorAll('.single-course');
course_list.forEach(function (e,i){
var course_id = e.getAttribute('data-id');
var course_progress = e.getAttribute('data-progress');
var completed_badge = e.querySelectorAll('.completed-badge')[0];
var completed_icon = e.querySelectorAll('.completed-icon')[0];
if(jQuery.inArray(course_id, data) !== -1){
if(completed_badge.classList.contains('completed-active') != true){
completed_badge.classList.add('completed-active');
}
if(completed_icon.classList.contains('completed-active') != true){
completed_icon.classList.add('completed-active');
}
}
});
//Programmatic solution single course
var programmatic_course_ids = {
'English' : '1ab6a178-6b95-486a-900c-9374c0773ae0',
'Spanish' : '10c0d8ab-33cd-4120-aa84-88de0fa1097c',
'Russian' : '8494a936-da9c-4c23-8ce4-dcb58dafbb52',
'Japanese' : '84ce2d71-8a15-49de-b21d-7475a1ef0fd6',
'German' : '538efded-8875-4e34-9592-a1e09e45bda7',
'French' : 'd9c2de41-aa4f-4534-909b-2b0cbe4ceb15'
};
var programmatic_course_id = programmatic_course_ids[current_language];
if(jQuery.inArray(programmatic_course_id, data) !== -1){
var single_batch_ID = 263429;
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_credential_api.php?callback=?&id="+single_batch_ID+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {}
});
}
//Tag Generator single course
var tag_generator_course_ids = {
'English' : 'f46d2369-dfcb-4108-8225-336c4759f877',
'Spanish' : '22467135-ecc7-498f-b303-720487363bec',
'Russian' : '512cd9c7-c884-422a-90ce-c499caaaf7bf',
'Japanese' : '98f2eb27-bc93-4e86-be8d-a50b85cff70f',
'German' : '85d8768b-a04b-452a-a553-a7627748bc7e',
'French' : 'f351cdf6-932f-4ed0-93ca-08b350f86f18'
};
var tag_generator_course_id = tag_generator_course_ids[current_language];
if(jQuery.inArray(tag_generator_course_id, data) !== -1){
var single_batch_ID = 362664;
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_credential_api.php?callback=?&id="+single_batch_ID+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {}
});
}
//Social Solutions single course
var social_solution_course_ids = {
'English' : 'd97ef57a-b004-4459-88f5-9ae5ebdf2c2d',
'Spanish' : '8619c119-278b-4b9b-ab20-0de63daa91d8',
'Russian' : 'd2f3225b-fc69-4958-a74e-158137b65146',
'Japanese' : '9c01dbd9-e5c5-4f76-97eb-7a09382d9035',
'German' : '312f7a71-81db-41e2-b8cb-89c7ef85a45e',
'French' : 'dc8fc6e8-a8b9-4f63-92f4-0353782de173'
};
var social_solution_course_id = social_solution_course_ids[current_language];
if(jQuery.inArray(social_solution_course_id, data) !== -1){
var single_batch_ID = 292471;
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_credential_api.php?callback=?&id="+single_batch_ID+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {}
});
}
//Authentic Attention single course
var authentic_attention_course_ids = {
'English' : '409a0308-924b-4d88-bdd8-aac3c226ffdf',
'Spanish' : 'd8d32873-be1c-47a7-bf14-9f94f8705163',
'Russian' : '409a0308-924b-4d88-bdd8-aac3c226ffdf',
'Japanese' : '409a0308-924b-4d88-bdd8-aac3c226ffdf',
'German' : '409a0308-924b-4d88-bdd8-aac3c226ffdf',
'French' : '409a0308-924b-4d88-bdd8-aac3c226ffdf',
};
var authentic_attention_course_id = authentic_attention_course_ids[current_language];
if(jQuery.inArray(authentic_attention_course_id, data) !== -1){
var single_batch_ID = 381870;
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_credential_api.php?callback=?&id="+single_batch_ID+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {}
});
}
//Pinnacle Publishers course
var pinnacle_publishers_badge_ids = {
'English' : '738021ce-297b-4397-84e6-a3b5ea68f168',
'Spanish' : '738021ce-297b-4397-84e6-a3b5ea68f168',
'Russian' : '738021ce-297b-4397-84e6-a3b5ea68f168',
'Japanese' : '738021ce-297b-4397-84e6-a3b5ea68f168',
'German' : '738021ce-297b-4397-84e6-a3b5ea68f168',
'French' : '738021ce-297b-4397-84e6-a3b5ea68f168',
};
var pinnacle_publishers_badge_id = pinnacle_publishers_badge_ids[current_language];
if(jQuery.inArray(pinnacle_publishers_badge_id, data) !== -1){
var single_batch_ID = 564645;
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_credential_api.php?callback=?&id="+single_batch_ID+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {}
});
}
var badge_completed = 0;
var badge_completed_list = Array();
var iq_cert_block = document.querySelectorAll('.cert-badge-block');
iq_cert_block.forEach(function (e,i){
var iq_cert_img = e.getAttribute('data-cert-img');
var iq_cert_name = e.getAttribute('data-cert-name');
var iq_cert_title = e.getAttribute('data-cert-title');
var iq_cert_ID = e.getAttribute('data-cert-id');
var iq_badge_logo = e.querySelectorAll('.iq-badge-logo')[0];
var iq_badge_total = e.querySelectorAll('.iq-badge-total')[0].value;
var iq_course_list = e.querySelectorAll('.cert-course-list');
var total_iq_course_list = e.querySelectorAll('li');
var course_status = e.querySelectorAll('.completed-icon')[0];
var total_marks = 0;
total_iq_course_list.forEach(function (e,i){
var course_id = e.getAttribute('data-id');
if(jQuery.inArray(course_id, data) !== -1){
e.setAttribute('data-progress', 100);
e.setAttribute('class', 'completed');
}
total_marks += parseInt(e.getAttribute('data-progress'));
});
if(total_marks > 0){
course_status.classList.remove('course-locked');
}
if(((iq_badge_total * 100) / total_marks) == 1){
iq_badge_logo.classList.remove('filter-gray');
course_status.classList.add('completed-active');
badge_completed += 1;
badge_completed_list.push(iq_cert_name);
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_credential_api.php?callback=?&id="+iq_cert_ID+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {}
});
}
});
//Pinnacle Certificate Codes
var li = "";
li += '<li class="filter-gray"><img src="https://doubleverify.com/wp-content/uploads/2021/03/DV_ELM_Certificate_FINAL.png" alt="DV Pinnacle"><h6>DV Pinnacle</h6></li>';
li += '<li class="filter-gray"><img src="https://doubleverify.com/wp-content/uploads/2021/03/DV_ELM_Badges_Analytics.png" class="iq-badge-logo" alt="Quality Analytics Badge"></li>';
li += '<li class="filter-gray"><img src="https://doubleverify.com/wp-content/uploads/2021/03/DV_ELM_Badges_Blueprint.png" class="iq-badge-logo" alt="Quality Analytics Badge"></li>';
document.getElementById('certificate-list').innerHTML= li;
var pinnacle_cert_badges = ["iq_blueprint", "iq_performance"]; //Badges for Pinnacle
if(pinnacle_cert_badges.every(i => badge_completed_list.includes(i))){
var certificate_list = certificate_modal.querySelectorAll('.certificate-list')[0].querySelectorAll('li');
for(var i = 0; i < certificate_list.length; i++ ){
certificate_modal.querySelectorAll('.certificate-list')[0].getElementsByTagName('li')[i].classList.remove('filter-gray');
}
var all_certificate_list = certificate_modal.querySelectorAll('.all-certificate_list')[0];
all_certificate_list.querySelectorAll('.completed-icon')[0].classList.remove('course-locked');
all_certificate_list.querySelectorAll('.completed-icon')[0].classList.add('completed-active');
var iq_cert_ID = 234077;
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_credential_api.php?callback=?&id="+iq_cert_ID+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {}
});
}
/*//document.getElementById('certificate-list').innerHTML= li;
if(badge_completed == 2){
//certificate_modal.getElementsByTagName('li')[0].classList.remove('filter-gray');
var iq_cert_ID = 234077;
$.ajax({
url: "https://xenopsigrowthpartners.com/dv_credential_api.php?callback=?&id="+iq_cert_ID+"&name="+learner_name+"&email="+learner_email,
type: "GET",
dataType: 'jsonp',
processData: false,
contentType: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Headers": "origin, content-type, accept"
},
success: function(data) {}
});
}
//document.getElementById('certificate-list').innerHTML= li;
*/
}
});
</script>
<style>
.ui-code-hack {
pointer-events: none;
filter: grayscale(1);
opacity: .8;
}
.custom-badge {
font-size: 21px !important;
font-weight: 700 !important;
}
</style>
{% assign lang = current_person.properties.language %}
{% case lang %}
{% when "Spanish" %}
{% include "spanish_lang" %}
{% when "Japanese" %}
{% include "japanese_lang" %}
{% when "Russian"%}
{% include "russian_lang" %}
{% when "German"%}
{% include "german_lang" %}
{% when "French"%}
{% include "french_lang" %}
{% endcase %}

View File

@ -0,0 +1,12 @@
<div class="uk-container uk-container-center uk-padding-large-horizontal uk-margin-large-top uk-margin-bottom">
<hgroup class="uk-text-center vertical-align uk-padding-large-top">
<h1 class="page-header">{% t .headline %}</h1>
</hgroup>
<div class="uk-width-small-1-1 uk-width-medium-1-2 uk-container-center uk-padding-large-top">
<div class="school-website-custom-page-content uk-text-center uk-padding-large-bottom uk-margin-large-bottom">
<h3 class="uk-margin-top-remove uk-margin-large-bottom">{% t .subheadline %}</h3>
<p><a href="/" class="uk-button uk-button-primary">{% t .home %}</a></p>
</div>
</div>
</div>

View File

@ -0,0 +1,9 @@
{% include "certificates_top_bar" %}
<main class="np-main np-certificate np-max-width np-page-container clear-main-spacings">
<section class="np-certificate-content-spacing">
<div class="row">
{% include "certificates_preview" %}
{% include "certificates_info_column" %}
</div>
</section>
</main>

View File

@ -0,0 +1,9 @@
{% include "certificates_top_bar" %}
<main class="np-main np-certificate np-max-width np-page-container clear-main-spacings">
<section class="np-certificate-content-spacing">
<div class="row">
{% include "certificates_preview" %}
{% include "certificates_info_column" %}
</div>
</section>
</main>

View File

@ -0,0 +1,12 @@
<div class="uk-container uk-container-center uk-padding-large-horizontal uk-margin-large-top uk-margin-bottom">
<hgroup class="uk-text-center vertical-align uk-padding-large-top">
<h1 class="page-head">{% t .headline %}</h1>
</hgroup>
<div class="uk-width-small-1-1 uk-width-medium-1-2 uk-container-center uk-padding-large-top">
<div class="school-website-custom-page-content uk-text-center uk-padding-large-bottom uk-margin-large-bottom">
<h3 class="uk-margin-top-remove uk-margin-large-bottom">{% t .subheadline %}</h3>
<p><a href="/" class="uk-button uk-button-primary">{% t .home %}</a></p>
</div>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,166 @@
<div class="top-bar">
<div class="top-bar__container uk-container uk-container-center uk-padding-horizontal">
<div class="top-bar__col">
<h2 class="top-bar__headline" data-test="session-name">{{ training_session.session_name }}</h2>
<div class="top-bar__attributes">
<div class="top-bar__attribute" data-test="event-title">
<div class="top-bar__attribute-label">
{% t .belongs_to %}
</div>
<div class="top-bar__attribute-value">
{{ training_session.title }}
</div>
</div>
<div class="top-bar__attribute">
<div class="top-bar__attribute-label">
{% t .type %}
</div>
<div class="top-bar__attribute-value">
{{ training_session.event_type_title }}
</div>
</div>
</div>
</div>
{% if training_session.instructor_assigned? %}
<div class="top-bar__col uk-hidden-small">
<div class="person" data-test="instructor-panel">
<div class="person__avatar">
<img src="{{ training_session.instructor_image_url }}" alt="avatar" />
</div>
<div class="person__details">
<div class="person__name">
{{ training_session.instructor_name }}
</div>
<div class="person__title">
{{ training_session.instructor_title }}
</div>
</div>
</div>
</div>
{% endif %}
</div>
</div>
<div class="uk-container uk-container-center uk-padding-horizontal">
<div class="uk-flex uk-flex-wrap">
<div class="uk-width-large-6-10 uk-visible-large">
<div class="session-description">
{{ training_session.description }}
</div>
</div>
<div class="uk-width-large-4-10">
<div class="session-sidebar">
<div class="session-sidebar__content">
<div class="session-dialog dialog">
<div class="dialog__body">
<div class="uk-flex">
<div class="uk-width-1-4">
<div class="calendar-card">
<div class="calendar-card__day">
{{ training_session.session_day }}
</div>
<div class="calendar-card__month">
{{ training_session.session_month }}
</div>
</div>
</div>
<div class="uk-width-3-4">
<h4 class="session-dialog__headline">
{{ training_session.title }}
</h4>
<p class="session-dialog__detail">
<i class="uk-icon-clock-o"></i>
{{ training_session.session_time }}
</p>
<p class="session-dialog__detail">
{% if training_session.location %}
<i class="uk-icon-map-marker"></i>
{{ training_session.location }}
{% endif %}
{% if training_session.registration_join_url %}
<i class="uk-icon-globe"></i>
<a class="truncate" href="{{ training_session.registration_join_url }}">{{ training_session.registration_join_url }}</a>
{% elsif training_session.session_url %}
<i class="uk-icon-globe"></i>
<a href="{{ training_session.session_url }}">{{ training_session.session_url }}</a>
{% endif %}
</p>
</div>
</div>
</div>
<div class="dialog__footer">
{{ training_session.registration_actions }}
</div>
</div>
</div>
<div class="session-description uk-hidden-large">
{{ training_session.description }}
</div>
<section class="other-sessions">
<header class="other-sessions__header">
<h4 class="other-sessions__headline">
{% t .other_sessions_headline %}
</h4>
</header>
<div class="other-sessions__body">
<ul class="other-sessions__list">
{% for other_session in training_session.other_sessions %}
<li class="other-session">
<div class="other-session__calendar-card-wrapper">
<div class="calendar-card calendar-card--small">
<div class="calendar-card__day">
{{ other_session.session_day }}
</div>
<div class="calendar-card__month">
{{ other_session.session_month }}
</div>
</div>
</div>
<div class="other-session__details">
<h5 class="other-session__name">
{{ other_session.session_name }}
</h5>
<div class="other-session__time">
<i class="uk-icon-clock-o"></i>
{{ other_session.session_time }}
</div>
</div>
<div class="other-session__buttons">
<a class="uk-button" href="{{ other_session.self_url }}">
{% t .attend %}
</a>
</div>
</li>
{% endfor %}
</ul>
</div>
<footer class="other-sessions__footer">
{% if training_session.other_sessions_count > 3 %}
<button class="other-sessions__more-button" onclick="findOutMore();">
{% t .find_out_more %}
</button>
{% endif %}
</footer>
</section>
</div>
</div>
</div>
</div>
</div>
<script>
var container = document.querySelector(".other-sessions__body");
var items = document.querySelectorAll(".other-session");
var containerHeight = 0;
for (var i = 0; i < Math.min(3, items.length); i++) {
containerHeight += items[i].offsetHeight;
}
container.style.height = containerHeight + "px";
function findOutMore() {
var button = document.querySelector(".other-sessions__more-button");
var list = document.querySelector(".other-sessions__list");
container.style.height = list.offsetHeight + "px";
button.style.display = "none";
}
</script>

View File

@ -13,7 +13,7 @@
<img src="https://i.imgur.com/TayoEHg.png" style="width: 500px">
</div>
<div class="np-homepage-subheadline np-header-font-color">
{{ homepage.subheadline }}
{{ nothing.subheadline }}
</div>
</div>
</div>

View File

@ -0,0 +1,22 @@
# Copado
## 04-29-2024
* Overview of organization:
* Juan Carrio --> Academy Admin (new)
* Peer of Gloria, split the team. Gloria taking community.
* Steve Simpson --> Starts next week, key stakeholder
* Academy team reporting to Steve.
* Juan is based out of Amsterdam
* Everything is also on hold because of this data transformation work that they are in.
* The data/SFDC integration piece is required for launch.
* The big effort is ripping out "opiniom"
* Data transformation needs to go live before ripping out opiniom and before plugging in northpass.
* 10:30 am EST Meeting with Juan and Gloria
* Overview of what has happened and what needs to happen.
* Offer task list before end of day Friday.
* Copado really needs a "restart". They need to be re-energized and reinvigorated. The "why".
* Bi-weekly meeting with the team.
* No one knows what's going on.

View File

@ -338,3 +338,7 @@ API Endpoint:
Issuer:
* https://login.microsoftonline.com/43f1ba74-0140-48d7-9ded-17e6e43a6ef6/wsfed
## 04-29-2024

View File

@ -38,3 +38,4 @@ DONE: We need quiz raw answer in Looker
a.
- Confirming - with a course block, if I show 10 courses but only have 2
enrolled, will the 8 other props be hidden?

View File

@ -231,10 +231,10 @@ message](https://northpasshq.slack.com/archives/C04RER4PH09/p1709147957374999?th
- [X] Papa - Header text on homepage.
- [X] DV - Submit CSQL for custom salesforce integration
- [X] Cin7 - Partner Academy Changes
- [ ] Cin7 - Test Mgr Permissions
- [ ] Can a manager create a course and retain management of it?
- [ ] Can a manager _clone_ a course and retain management of the new course?
- [ ] Can a manager create a group and retain management of it?
- [X] Cin7 - Test Mgr Permissions
- [X] Can a manager create a course and retain management of it? [YES]
- [X] Can a manager _clone_ a course and retain management of the new course? [ONLY COURSES THEY HAVE CREATED]
- [X] Can a manager create a group and retain management of it? [YES]
- [ ] Cin7 - Customer Academy, add multi-product group filtering --> Top priority
- [X] Cin7 - Employee Academy - remove progress for learning path for deep dive.
@ -244,8 +244,8 @@ message](https://northpasshq.slack.com/archives/C04RER4PH09/p1709147957374999?th
## 04-24-2024
- [ ] Luminate - End of April, launch of new Cert
- [ ] Fix Email formatting - is it only on Outlook?
- [X] Luminate - End of April, launch of new Cert
- [X] Fix Email formatting - is it only on Outlook?
- [ ] Luminate - Add "X" to Modal on homepage to click out of it.
- [ ] Cin7 Partners into Customer Academy:
- [ ] Add logic for partner property to Partner category --> Catalog
@ -256,4 +256,10 @@ message](https://northpasshq.slack.com/archives/C04RER4PH09/p1709147957374999?th
- [X] Chubb - Check if SSO logged in learner can get to admin view without logging in again?
- [X] Sandata - New sandata.com sender domain with different sectors
- [ ] Skuid/Nintex - Ask Charles about two selling points for Nintex --> Migration & eCommerce
- [X] Skuid/Nintex - Ask Charles about two selling points for Nintex --> Migration & eCommerce
## 04-29-2024
- [ ] G2 - Banner from another custom page --> is this possible?
- [ ] Cin7 - Partners in Customer Academy; all partners should see _all_ product courses, regardless if they are Omni or Core. Logic - if omni and core group, or if in partner group, show all courses. Then, if omni, or if core, show just those courses.
- [ ] Copado - Send meeting invite for Friday at 10:30 am.