Exception in template (Designs/Outwell/_parsed/ModulePageItem.parsed.cshtml): System.NullReferenceException: Object reference not set to an instance of an object.
at OaseOutdoors.Core.Extensions.GroupExtenstion.GetAncestors(Group group, List`1 ancestors) in C:\projects\oase\src\Core\Extensions\GroupExtenstion.cs:line 26
at OaseOutdoors.Core.Extensions.GroupExtenstion.GetAncestors(Group group) in C:\projects\oase\src\Core\Extensions\GroupExtenstion.cs:line 12
at OaseOutdoors.Services.NavigationService.NavigationService.GetGroupStatus(String groupId) in C:\projects\oase\src\Services\NavigationService\NavigationService.cs:line 171
at OaseOutdoors.Services.NavigationService.NavigationService.GetNavigationForGroups(IEnumerable`1 groups, Int32 level) in C:\projects\oase\src\Services\NavigationService\NavigationService.cs:line 109
at OaseOutdoors.Services.NavigationService.NavigationService.GetNavigationLevel(IEnumerable`1 pages) in C:\projects\oase\src\Services\NavigationService\NavigationService.cs:line 80
at OaseOutdoors.Components.Shared.Layout.Master.ModelBuilders.MasterViewModelBuilder.GetViewModel(Int32 areaId) in C:\projects\oase\src\Components\Shared\Layout\Master\ModelBuilders\MasterModelBuilder.cs:line 79
at CompiledRazorTemplates.Dynamic.cbaaaaaefe.Execute()
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context) in c:\Users\abbottm\Documents\GitHub\RazorEngine\src\Core\RazorEngine.Core\Templating\TemplateBase.cs:line 126
at RazorEngine.Templating.TemplateService.Run(ITemplate template, DynamicViewBag viewBag) in c:\Users\abbottm\Documents\GitHub\RazorEngine\src\Core\RazorEngine.Core\Templating\TemplateService.cs:line 608
at RazorEngine.Templating.TemplateService.Parse(String razorTemplate, Object model, DynamicViewBag viewBag, String cacheName) in c:\Users\abbottm\Documents\GitHub\RazorEngine\src\Core\RazorEngine.Core\Templating\TemplateService.cs:line 439
at RazorEngine.Razor.Parse[T](String razorTemplate, T model, DynamicViewBag viewBag, String cacheName) in c:\Users\abbottm\Documents\GitHub\RazorEngine\src\Core\RazorEngine.Core\Razor.cs:line 290
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
@using System.Linq
@using System.Web
@using System.Web.Hosting
@using Dynamicweb.Extensibility
@using Dynamicweb.Frontend
@using Dynamicweb.Security.UserManagement
@using OaseOutdoors.Components.Shared.Layout.Master.ModelBuilders
@using OaseOutdoors.Services.StaticResourceService.Initialization
@using OaseOutdoors.Components.Shared.Layout.Master.Models
@using OaseOutdoors.Components.Shared.Modules.Ecom.ModelBuilders
@using OaseOutdoors.Core.Extensions
@using OaseOutdoors.Services.MiniCartService.Initialization
@using OaseOutdoors.Services.NavigationService.Models
@using OaseOutdoors.Services.StaticResourceService.Interfaces
@using OaseOutdoors.Services.ImageService.Enums
@using OaseOutdoors.Services.EcomUrlService.Initialization
@using OaseOutdoors.Services.UrlParserService.Initialization;
@inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel>
@{
var area = PageView.Current().Area;
var areas = Dynamicweb.Services.Areas.GetAreas().Where(x => x.Active && x.Item["ShopPublished"] != null && (bool)x.Item["ShopPublished"] && x.Name.ToLower().Contains(area.Name.Split(':')[0].Trim().ToLower())).ToList();
var masterStaticResourceService = ServiceLocator.Current.GetStaticResourceService();
var masterViewModelService = new MasterViewModelBuilder();
var masterViewModel = masterViewModelService.GetViewModel(area.ID);
var productViewModelService = new ProductViewModelBuilder();
var urlService = ServiceLocator.Current.GetEcomUrlService();
var urlParserService = ServiceLocator.Current.GetUrlParserService();
var miniCartService = ServiceLocator.Current.GetMiniCartService();
var miniCartProductsCount = miniCartService.GetProductsCount(area);
var valutaSelector = HttpContext.Current.Request.Cookies["currencySelector"];
var userId = HttpContext.Current.Request["userid"] != null ? HttpContext.Current.Request["userid"] : "";
var currentDatetime = DateTime.Now;
var googleId = area.Item["GoogleManagerId"];
var trustlanguage = "da-DK";
var trusturl = " ";
var currentUser = User.GetCurrentUser(PagePermissionLevels.Frontend);
masterStaticResourceService.ActivityId = masterViewModel.NewsletterPopup.ActivityId;
}
@helper RenderChildren(NavigationViewModel entity, string gotoTranslation, IStaticResourceService masterStaticResourceService)
{
var currentDatetime = DateTime.Now;
if (entity.Children == null || !entity.Children.Any())
{
return;
}
var callToAction = (entity.CallToAction == null) ? "navigation__submenu-links--big" : "";
<ul class="navigation__submenu-links @callToAction">
@foreach (var child in entity.Children.Where(x => x.PublishedDateFrom <= currentDatetime && x.PublishedDateTo >= currentDatetime))
{
if (child.Children != null && child.Children.Any())
{
var childIsCurrent = (child.LinkStatus.ToString() == "IsCurrent") ? "active" : "";
<li class="@child.LinkStatus.GetDescription() parent">
<div class="navigation__submenu-links-main">
<a href="@child.Link" class="navigation__submenu-links-main-link @childIsCurrent">
<span>@child.LinkTitle @(child.IsEcommerce && child.ProductCount > 0 ? "(" + child.ProductCount + ")" : string.Empty)</span>
</a>
@if (child.Children != null && child.Children.Any())
{
<ul class="navigation__submenu-sublinks">
@foreach (var subChild in child.Children.Where(x => x.PublishedDateFrom <= currentDatetime && x.PublishedDateTo >= currentDatetime))
{
var subChildIsCurrent = (subChild.LinkStatus.ToString() == "IsCurrent") ? "active" : "";
<li>
<a href="@subChild.Link" class="@subChildIsCurrent">
<span>@subChild.LinkTitle @(subChild.IsEcommerce && subChild.ProductCount > 0 ? "(" + subChild.ProductCount + ")" : string.Empty)</span>
</a>
</li>
}
</ul>
}
<div></div>
@if (child.IsEcommerce)
{
<a href="@child.Link" class="btn--cta">
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-right"></use>
</svg>
@if (Pageview.AreaID == 6)
{
<span class="btn__textnav">@Translate("See all", "See all") @child.LinkTitle</span>
}
else
{
<span class="btn__textnav">@Translate("See all", "See all") @child.LinkTitle.ToLower()</span>
}
</a>
}
</div>
<div class="navigation__submenu">
<div class="container">
<div class="navigation__submenu-nav">
<div class="navigation__submenu-title">
<span><span class="navigation__submenu-name">@child.LinkTitle</span> @(child.IsEcommerce && child.ProductCount > 0 ? "(" + child.ProductCount + ")" : string.Empty)</span>
</div>
<ul class="navigation__submenu-links navigation__submenu-links--highlighted">
<li>
<a href="@child.Link">@gotoTranslation @child.LinkTitle.ToLower()</a>
</li>
</ul>
<div class="navigation__submenu-level">
@RenderChildren(child, gotoTranslation, masterStaticResourceService)
</div>
</div>
</div>
</div>
</li>
}
else
{
var childIsCurrent = (child.LinkStatus.ToString() == "IsCurrent") ? "active" : "";
var fontclr = "";
if (child.LinkTitle == "Resale")
{fontclr = "red";}
else
{fontclr = "";}
<li class="@child.LinkStatus.GetDescription()">
<div class="navigation__submenu-links-main">
<a style="color:@fontclr" href="@child.Link" class="navigation__submenu-links-main-link @childIsCurrent">
<span>@child.LinkTitle @(child.IsEcommerce && child.ProductCount > 0 ? "(" + child.ProductCount + ")" : string.Empty)</span>
</a>
</div>
</li>
}
}
</ul>
}
<!DOCTYPE html>
<html lang="@masterViewModel.TwoLetterIsoLanguageName" class="no-js">
<head data-settings="disableparsing:true;">
@using Dynamicweb.Extensibility
@using Dynamicweb.Frontend
@using OaseOutdoors.Services.StaticResourceService.Initialization
@inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel>
@{
var headStaticResourceService = ServiceLocator.Current.GetStaticResourceService();
var modernizerPath = "~/static/dist/js/modernizr.js";
var modernizerContent = headStaticResourceService.GetFileContent(modernizerPath);
}
@* todo: !!! REMOVE THIS LINE WHEN GOING LIVE !!! *@
@*<meta name="robots" content="noindex, nofollow">*@
<meta charset="utf-8">
@* Add to web.config *@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
@if (!string.IsNullOrEmpty(PageView.Current().Page.MetaTitle))
{
@PageView.Current().Page.MetaTitle
}
else
{
@(PageView.Current().Page.MenuText + " - Outwell")
}
</title>
@*
Use this format for CSS instead if you want to use preloading:
<link rel="preload" href="/static/dist/css/main.min.css" as="style" onload="this.rel='stylesheet'">
Remember to *inline* polyfills for preload-format in page footer:
https://github.com/filamentgroup/loadCSS
*@
<link rel="stylesheet" href="https://use.typekit.net/ykp5ilf.css">
<link rel="stylesheet" href="@headStaticResourceService.AddTimeStamp("/static/dist/css/outwell.min.css")" type="text/css">
<meta name="description" content="@Pageview.Page.Description">
<meta name="keywords" content="@Pageview.Page.Keywords">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="format-detection" content="telephone=no">
<link rel="icon" href="@headStaticResourceService.AddTimeStamp("/static/dist/media/favicon_ow.ico")" type="image/x-icon" />
<link rel="stylesheet" href="https://use.typekit.net/dnh4wpj.css">
@if (!headStaticResourceService.IsProduction)
{
<meta name="robots" content="noindex, nofollow">
}
@RenderSnippet("canonical")
@if (headStaticResourceService.IsProduction)
{
<script type="text/javascript" charset="UTF-8" src="//cdn.cookie-script.com/s/67eb1e7e76199dfcfddcd855be5a81f5.js"></script>
var googleManagerId = PageView.Current().Area.Item["GoogleManagerId"];
<!-- Google Tag Manager -->
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', '@googleManagerId');</script>
<!-- End Google Tag Manager -->
if (Pageview.AreaID == 5)
{
<!-- Bing -->
<script>
(function (w, d, t, r, u) { var f, n, i; w[u] = w[u] || [], f = function () { var o = { ti: "25049519" }; o.q = w[u], w[u] = new UET(o), w[u].push("pageLoad") }, n = d.createElement(t), n.src = r, n.async = 1, n.onload = n.onreadystatechange = function () { var s = this.readyState; s && s !== "loaded" && s !== "complete" || (f(), n.onload = n.onreadystatechange = null) }, i = d.getElementsByTagName(t)[0], i.parentNode.insertBefore(n, i) })(window, document, "script", "//bat.bing.com/bat.js", "uetq");
</script>
<!-- End Bing -->
}
<!-- Meta Pixel Code -->
<script>
!function (f, b, e, v, n, t, s) {
if (f.fbq) return; n = f.fbq = function () {
n.callMethod ?
n.callMethod.apply(n, arguments) : n.queue.push(arguments)
};
if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0';
n.queue = []; t = b.createElement(e); t.async = !0;
t.src = v; s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t, s)
}(window, document, 'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '347679100934725');
fbq('track', 'PageView');
</script>
<noscript>
<img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=347679100934725&ev=PageView&noscript=1" />
</noscript>
<!-- End Meta Pixel Code -->
<script type="text/javascript">
(function (c, l, a, r, i, t, y) {
c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments) };
t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i;
y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);
})(window, document, "clarity", "script", "q54f5m90gf");
</script>
}
<style>
.mdc-checkbox input {
pointer-events: unset !important;
}
</style>
<!-- Start of Sleeknote signup and lead generation tool - www.sleeknote.com -->
<script id="sleeknoteScript" type="text/javascript">
(function () {
var sleeknoteScriptTag = document.createElement("script");
sleeknoteScriptTag.type = "text/javascript";
sleeknoteScriptTag.charset = "utf-8";
sleeknoteScriptTag.src = ("//sleeknotecustomerscripts.sleeknote.com/165047.js");
var s = document.getElementById("sleeknoteScript");
s.parentNode.insertBefore(sleeknoteScriptTag, s);
})();
</script>
<!-- End of Sleeknote signup and lead generation tool - www.sleeknote.com -->
<!-- TrustBox script -->
<script type="text/javascript" src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script>
<!-- End TrustBox script -->
@* You can use "prefetch" to preload all important assets if you're not using HTTP/2 push *@
<link rel="prefetch" href="@headStaticResourceService.AddTimeStamp("/static/dist/js/main.min.js")">
<script>
@if (!string.IsNullOrWhiteSpace(modernizerContent))
{
@modernizerContent
}
</script>
@*<script type="text/javascript" src="//fast.fonts.net/jsapi/435e879a-fed1-4494-b286-69490b465a2f.js"></script>*@
@SnippetStart("canonical")
@if (PageView.Current().Page.NavigationTag != "ecommerce")
{
<link rel="canonical" href="@masterViewModel.Canonical" />
foreach (var hrefLang in masterViewModel.HrefLangs)
{
<link rel="alternate" hreflang="@hrefLang.HrefLang" href="@hrefLang.Href" />
}
}
@SnippetEnd("canonical")
</head>
<body data-area-id="@Pageview.AreaID"
data-area-currencyCode="@Pageview.Area.EcomCurrencyId"
data-search-see-all="@Translate("SearchSeeAll", "See all")"
data-search-results="@Translate("SearchResults", "search results")">
@if (masterStaticResourceService.IsProduction)
{
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=@googleId"
height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
}
@if (HttpContext.Current.IsDebuggingEnabled)
{
<script id="__bs_script__">
document.write("<script async src='https://localhost:3000/browser-sync/browser-sync-client.js?v=2.18.13'><\/script>");
</script>
}
<input type="checkbox" name="header__expand-search" id="header__expand-search" class="hidden" />
<div class="header" data-module="header">
<div class="header__info">
@if (masterViewModel.TopMessage != null && (!string.IsNullOrEmpty(masterViewModel.TopMessage.ShortText) || !string.IsNullOrEmpty(masterViewModel.TopMessage.LongText)))
{
if (valutaSelector == null || PageView.Current().AreaID != 1)
{
if (!string.IsNullOrEmpty(masterViewModel.TopMessage.ShortText))
{
<div class="header__info-content header__info-content--short">
<p>@masterViewModel.TopMessage.ShortText</p>
</div>
}
if (!string.IsNullOrEmpty(masterViewModel.TopMessage.LongText))
{
<div class="header__info-content header__info-content--long">
<p>@masterViewModel.TopMessage.LongText</p>
</div>
}
}
}
</div>
<div class="oo-search-wrap">
<style>
.oo-search-wrap {
padding: 0 45px;
background: transparent;
width: 29%;
left: 28%;
right: 20%;
margin-top: 25px;
margin-bottom: 15px;
font-family: myriad-pro,Candara,sans-serif;
font-weight: 400;
position: absolute;
z-index: 5;
}
.oo-search-results-wrap {
position: absolute;
left: -100%;
right: 0;
z-index: 10;
width: 100vw;
overflow-y: auto;
box-shadow: 0 .125rem .25rem rgba(0,0,0,.075);
}
#oo-search-input {
width: 100%;
font-size: 22px;
height: 40px;
background: #f5f5f5;
color: #9e9b97;
text-align: center;
border-radius: 5px;
border: 0;
outline: none;
font-family: myriad-pro,Candara,sans-serif;
font-weight: 300;
}
#oo-search-results {
display: none;
max-height: 90vh;
min-height: 200px;
max-width: 1200px;
list-style: none;
padding: 0;
margin: 0 auto;
}
#oo-search-results li {
cursor: pointer;
}
#oo-search-results li.selected {
background-color: #dddddd;
}
#oo-search-results #NoProductResults {
height: 200px;
display: flex;
justify-content: center;
align-items: center;
}
#oo-search-results mark {
background-color: transparent;
padding: 0;
font-weight: bold;
}
.d-block {
display: block !important;
}
.d-inline {
display: inline !important;
}
@@media only screen and (max-width: 992px) {
.oo-search-wrap {
position: absolute;
top: 90px;
left: 0;
right: 0;
width: 100vw;
padding: 0;
z-index: 50;
font-family: myriad-pro,Candara,sans-serif;
font-weight: 400;
}
.oo-search-results-wrap {
left: 0;
}
.oo-search-inner svg {
fill: #fff;
}
#oo-search-input {
color: #f8f8f8;
background-color: #2a3075;
border-radius: 0px;
}
}
</style>
@if(Pageview.ID == 278)
{
<div class="oo-search-container w-100" data-test="@Pageview.ID">
<div class="position-relative" style="position:relative;">
<div class="oo-search-inner">
<svg style="position:absolute;right:10%;top:10px;width:20px;height:20px;">
<use xlink:href="/static/dist/svg/_bundle.svg?ts=638348596703749537#search-simple"></use>
</svg>
<input type="text" id="oo-search-input" class="form-control w-100 rounded-pill py-2 ps-5 pe-3" placeholder="@Translate("SearchFindLabel", "Find what you are looking for")" autocomplete="off" data-currency="@Pageview.Area.EcomCurrencyId" data-user="@Dynamicweb.Analytics.VisitorCookie.Current.VisitorID" data-language="@Pageview.Area.CultureInfo.Name.ToLower()" data-url="/@(Pageview.Area.CultureInfo.Name)/search-relewise">
</div>
</div>
<div class="oo-search-results-wrap">
<div class="" style="background-color:#ffffff;">
<ul id="oo-search-results" class="pt-5 search-overlay__results"></ul>
</div>
<div class="oo-search-container-close" style="background-color:rgba(0,0,0,.5)"></div>
</div>
</div>
}
</div>
<div class="header__main">
<div class="container-fluid">
<div class="header__main-content">
<div class="header__expand-menu">
<button style="font-size:8px;"><span><span></span></span></button>
<div class="header__expand-menu-title">MENU</div>
</div>
@if(Pageview.ID != 278)
{
<div onclick="activatesearch();" id="search-overlay" class="search-overlay" data-search-url="@masterViewModel.SearchResultsPageLink" data-no-results="@Translate("SearchNoResults", "Sorry no results were found")" data-products-title="@Translate("SearchProducts", "Products")" data-categories-title="@Translate("SearchCategories", "Categories")" data-pages-title="@Translate("SearchPages", "Information pages")">
<div class="container-fluid">
<div class="search-overlay__input">
<input type="search" name="search" id="search" placeholder="@Translate("SearchFindLabel", "Find what you are looking for")" />
<svg class="searchinputicon">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#search-simple"></use>
</svg>
</div>
<div id="search-overlay__container" class="search-overlay__container">
<div class="container" style="background: #efeeed;">
<div id="search-overlay__results" class="search-overlay__results"></div>
</div>
</div>
</div>
</div>
}
@if (masterViewModel.FriendsIsActive)
{
if (currentUser != null)
{
<a href="/@masterViewModel.FriendsLoginPage" class="header__friends"><img src="@masterStaticResourceService.AddTimeStamp("/static/dist/img/outwell/login-icon-mobile.jpg")" alt="@Translate("Outwell Friends", "Outwell Friends")" /></a>
}
else
{
<a href="/@masterViewModel.FriendsLoginPage" class="header__friends"><img src="@masterStaticResourceService.AddTimeStamp("/static/dist/img/outwell/login-icon-mobile.jpg")" alt="@Translate("Outwell Friends", "Outwell Friends")" /></a>
}
}
<div class="header__dealer">
@{
var dealerlink = (area.ID == 1) ? "/en-gb/find-outwell-dealer" : (area.ID == 5) ? "/da-dk/find-outwell-forhandler" : (area.ID == 6) ? "/de-de/outwell-handler-finden" : (area.ID == 2) ? "/fr-fr/trouver-un-outwell-revendeur" : (area.ID == 3) ? "/nl-nl/zoek-een-outwell-dealer" : (area.ID == 4) ? "/sv-se/hitta-outwell-aaterforsaljare" : "/en-gb/find-outwell-dealer-1";
}
<a href="@dealerlink" class="service-menu__finddealer">
<img src="/static/dist/svg/Robens_finddealer.svg">
</a>
</div>
<a href="/@area.Culture.ToLower()/favorites" class="header__favorites" data-module="cookiefavoriteheader">
<svg xmlns="https://www.w3.org/2000/svg" width="34" height="34" fill="#000000" class="" viewBox="0 0 20 20">
<path d="m8 2.748-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01L8 2.748zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143c.06.055.119.112.176.171a3.12 3.12 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15z" />
</svg>
<span class="header__favorites__badge">0</span>
</a>
@if (!string.IsNullOrWhiteSpace(masterViewModel.CheckoutPageLink) && !string.IsNullOrWhiteSpace(masterViewModel.CartContext))
{
if (valutaSelector == null || PageView.Current().AreaID != 1)
{
<a href="@masterViewModel.CheckoutPageLink" class="header__cart">
<svg role="img" aria-label="Kurv"><use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#cart"></use></svg>
<div class="header__cart-amount">
<div>@miniCartProductsCount</div>
</div>
</a>
}
}
<div class="header__logo">
<a href="@Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(masterViewModel.Logo.LogoLink).TrimEnd('/')">
<div class="header__logo-icon header__logo-icon--detailed">
<svg aria-hidden="true"><use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#outwell-logo"></use></svg>
</div>
<div class="header__logo-icon header__logo-icon--simple">
<svg aria-hidden="true"><use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#outwell-logo"></use></svg>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="header__menus">
<div class="header__menus-inside">
<div class="navigation">
<div class="container">
<button class="navigation__back">
<svg aria-hidden="true"><use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-left"></use></svg>
<span>@Translate("MainMenu", "Main menu")</span>
</button>
@if (masterViewModel.Navigation.Any())
{
<ul class="navigation__mainmenu">
@foreach (var item in masterViewModel.Navigation.Where(x => x.PublishedDateFrom <= currentDatetime && x.PublishedDateTo >= currentDatetime))
{
if (item.Children.Any())
{
<li class="navigation__mainmenu-item @item.LinkStatus.GetDescription() parent">
<div class="navigation__mainmenu-link">
<a href="@item.Link">@item.LinkTitle</a>
<div></div>
</div>
<div class="navigation__submenu @(item.IsEcommerce && item.CallToAction != null ? string.Empty : "navigation__submenu--no-detail")">
<div class="container">
<div class="navigation__submenu-nav">
<div class="navigation__submenu-title">
<span><span class="navigation__submenu-name">@item.LinkTitle</span> @(item.IsEcommerce && item.ProductCount > 0 ? "(" + item.ProductCount + ")" : string.Empty)</span>
</div>
<div class="navigation__submenu-nav--flex">
@RenderChildren(item, Translate("NavigationGoToTranslation", "Go to"), masterStaticResourceService)
@if (item.CallToAction != null)
{
@RenderParagraphContent(item.CallToAction.Id);
}
</div>
@if (item.IsEcommerce)
{
<a href="@item.Link" class="btn--cta-bg">
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-right"></use>
</svg>
@if (Pageview.AreaID == 6)
{
<span class="btn__textnav">@Translate("See all", "See all") @item.LinkTitle</span>
}
else
{
<span class="btn__textnav">@Translate("See all", "See all") @item.LinkTitle.ToLower()</span>
}
</a>
}
</div>
</div>
</div>
</li>
}
else
{
<li class="navigation__mainmenu-item @item.LinkStatus.GetDescription()">
<div class="navigation__mainmenu-link @item.LinkStatus.GetDescription()">
<a href="@item.Link">@item.LinkTitle</a>
</div>
</li>
}
}
</ul>
}
</div>
@if (masterViewModel.Languages.Any())
{
<div class="country-picker">
<header>
<div class="container">
<span>@Translate("ChooseAnotherCountry", "Choose another country")</span>
<button class="country-picker__close">
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#close"></use>
</svg>
</button>
</div>
</header>
<div class="container">
<div class="country-picker__list">
<h3><span>@Translate("ChooseCountry", "Choose country")</span></h3>
@RenderSnippet("languageSelector")
@SnippetStart("languageSelector")
@if (PageView.Current().Page.NavigationTag != "ecommerce")
{
<ul>
@foreach (var languageArea in areas)
{
var hrefLang = masterViewModel.HrefLangs.FirstOrDefault(x => x.HrefAreaId == languageArea.ID);
if (hrefLang == null || hrefLang.Href.ToLower().Contains("page-not-found"))
{
hrefLang = new HrefLangViewModel();
hrefLang.HrefName = languageArea.Item["ShopLanguageName"].ToString() ?? string.Empty;
hrefLang.HrefLang = languageArea.CultureInfo.Name;
hrefLang.Href = "/Default.aspx?areaid=" + languageArea.ID;
hrefLang.HrefAreaId = languageArea.ID;
}
if (hrefLang != null && hrefLang.HrefLang != "x-default")
{
<li class="country-picker__item @(hrefLang.HrefAreaId == Pageview.AreaID ? "country-picker__item--current" : string.Empty)">
<a href="@hrefLang.Href.TrimEnd('/')">
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-right"></use>
</svg>
<span>@hrefLang.HrefName</span>
</a>
</li>
}
}
</ul>
}
@SnippetEnd("languageSelector")
</div>
</div>
</div>
}
</div>
@{
var noBasket = "service-menu--no-basket";
if (!string.IsNullOrWhiteSpace(masterViewModel.CheckoutPageLink) && !string.IsNullOrWhiteSpace(masterViewModel.CartContext))
{
if (valutaSelector == null || Pageview.AreaID != 1)
{
noBasket = "";
}
}
}
<div class="service-menu @noBasket">
<div class="container">
<ul class="service-menu__navigation">
@foreach (PageLinkItem linkItem in masterViewModel.ServiceMenu.MenuItems)
{
<li>
<a href="@linkItem.PageLink">@linkItem.PageLinkTitle</a>
</li>
}
@if (masterViewModel.FriendsIsActive)
{
<li>
@if (currentUser != null)
{
<button onclick="javascript:window.location='/@masterViewModel.FriendsLoginPage'" class="service-menu__friends"><img src="@masterStaticResourceService.AddTimeStamp("/static/dist/img/outwell/login-icon-known.jpg")" alt="@Translate("Outwell Friends", "Outwell Friends")" /><span>@Translate("Go to", "Go to")</span></button>
}
else
{
<button class="service-menu__friends"><img src="@masterStaticResourceService.AddTimeStamp("/static/dist/img/outwell/login-icon-unknown.jpg")" alt="@Translate("Outwell Friends", "Outwell Friends")" /><span>@Translate("Login", "Login")</span></button>
}
</li>
}
@if (masterViewModel.Languages.Any())
{
var languageName = masterViewModel.Languages.First(x => x.IsCurrent).Name;
var languageCode = (area.ID == 31) ? "eu" : masterViewModel.Languages.First(x => x.IsCurrent).ISOCode;
<li>
<div class="service-menu__language">
<span class="service-menu__language-flag"><svg aria-hidden="true"><use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#flag-@languageCode"></use></svg></span>
<span class="service-menu__language-title">@Translate("Language", "Language")</span>
<span class="service-menu__language-value">@masterViewModel.Languages.First(x => x.IsCurrent).Name</span>
</div>
</li>
}
</ul>
<div class="service-menu__info">
<div class="service-menu__logo">
<svg aria-hidden="true"><use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#outwell-logo-simple"></use></svg>
</div>
@if (!string.IsNullOrEmpty(masterViewModel.Footer.ContactUsPhone))
{
<a href="tel:@masterViewModel.Footer.ContactUsPhone">@masterViewModel.Footer.ContactUsPhone</a>
}
<dl class="service-menu__opening-hours">
@foreach (var hoursItem in masterViewModel.Footer.OpeningHours)
{
<dt>@hoursItem.DaysLocalized</dt>
<dd class="opening__hours">@hoursItem.StartTime-@hoursItem.EndTime</dd>
}
</dl>
</div>
</div>
</div>
</div>
</div>
</div>
<main>
@using Dynamicweb.Frontend;
@using Dynamicweb.Rendering;
@using OaseOutdoors.Components.Shared.Layout.Master.ModelBuilders;
@inherits ViewModelTemplate<PageViewModel>
@Title("Content page template")
@{
var masterService = new MasterViewModelBuilder();
var masterModel = masterService.GetViewModel(PageView.Current().Area.ID);
}
@Model.Placeholder("Body", "Body", "items-allowed:EcomRibbonItem;unwrap:true")
@RenderParagraphContent(masterModel.NewsletterAndConsentSubscriptionPargraphId)
@if (masterViewModel.FriendsIsActive && currentUser == null)
{
if (masterViewModel.FriendsLoginParagraphId > 0 && masterViewModel.FriendsSignupParagraphId > 0)
{
<div id="LoginPopupModal" class="login-popup" data-module="loginPopup">
<div class="modal-content-html">
<span class="login-popup-modal__close">×</span>
<section class="login-popup-modal__content">
<ul class="login-popup-modal__headers">
<li class="login-popup-modal__login-button active">@Translate("Login", "Login")</li>
<li class="login-popup-modal__signup-button">@Translate("I want to join the club", "I want to join the club")</li>
</ul>
<div class="login-popup-modal__login-area active">@RenderParagraphContent(masterViewModel.FriendsLoginParagraphId)</div>
<div class="login-popup-modal__signup-area">@RenderParagraphContent(masterViewModel.FriendsSignupParagraphId)</div>
</section>
</div>
</div>
}
}
</main>
<footer class="footer container-fluid">
<div class="footer__logo--container">
<svg aria-hidden="true" class="footer__logo--icon">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#outwell-logo-simple"></use>
</svg>
</div>
<div class="container">
<div class="footer__content">
<input type="checkbox" id="footer-toggle" checked>
<div class="footer__navigation">
@if (!string.IsNullOrEmpty(masterViewModel.Footer.CallToActionLink) && !string.IsNullOrEmpty(masterViewModel.Footer.CallToActionLinkTitle))
{
<a href="@masterViewModel.Footer.CallToActionLink" class="btn btn--filled" style="color:#2A3075;">
<span class="btn__text">@masterViewModel.Footer.CallToActionLinkTitle</span>
</a>
}
<br />
@if (!string.IsNullOrEmpty(masterViewModel.Footer.FindDealerLinkTitle) && !string.IsNullOrEmpty(masterViewModel.Footer.FindDealerLink))
{
<a href="@masterViewModel.Footer.FindDealerLink" class="btn btn--filled" style="color:#b3c500;">
<span class="btn__text">@masterViewModel.Footer.FindDealerLinkTitle</span>
</a>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.ContactUsMobileButtonText))
{
<label for="footer-toggle" class="btn btn--filled footer-toggle-btn">
<span class="btn__icon">
<svg role="img">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-right"></use>
</svg>
</span>
<span class="btn__text">@masterViewModel.Footer.ContactUsMobileButtonText</span>
</label>
}
</div>
<div class="footer__information">
<div class="footer__information-inner">
<div class="footer__information-column footer__information-column--desktop">
@if (!string.IsNullOrEmpty(masterViewModel.Footer.CustomerServiceLink) && !string.IsNullOrEmpty(masterViewModel.Footer.CustomerServiceLinkTitle))
{
<div class="footerH3">
<a href="@masterViewModel.Footer.CustomerServiceLink">
<span class="footer__heading-icon">
<svg role="img">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-right"></use>
</svg>
</span>
<span class="footer__heading-text">@masterViewModel.Footer.CustomerServiceLinkTitle</span>
</a>
</div>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.CallToActionLink) && !string.IsNullOrEmpty(masterViewModel.Footer.CallToActionLinkTitle))
{
<a style="color: #2A3075; min-width: 250px;" href="@masterViewModel.Footer.CallToActionLink" class="btn btn--filled footer-toggle-btn footer__information-btn">
<span class="btn__icon">
<svg role="img">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-right"></use>
</svg>
</span>
<span class="btn__text">@masterViewModel.Footer.CallToActionLinkTitle</span>
</a>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.CallToActionLink) && !string.IsNullOrEmpty(masterViewModel.Footer.CallToActionLinkTitle))
{
<br /><br />
<a style="min-width:250px;color:#b3c500;" href="@masterViewModel.Footer.FindDealerLink" class="btn btn--filled footer-toggle-btn footer__information-btn">
<span class="btn__icon">
<svg role="img">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-right"></use>
</svg>
</span>
<span class="btn__text">@masterViewModel.Footer.FindDealerLinkTitle</span>
</a>
}
</div>
<div class="footer__information-column" itemscope itemtype="https://schema.org/LocalBusiness">
<div>
@if (!string.IsNullOrEmpty(masterViewModel.Footer.AddressTitle))
{
<div class="footerH3">
@masterViewModel.Footer.AddressTitle
</div>
}
<link itemprop="image" content="@masterStaticResourceService.GetAbsoluteUrl("~/static/dist/svg/outwell-logo.svg")">
<div itemprop="name">@masterViewModel.Footer.AddressCompany</div>
<ul itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
<li itemprop="streetAddress">@masterViewModel.Footer.AddressStreet</li>
<li> <span itemprop="postalCode">@masterViewModel.Footer.AddressPostcode</span> <span itemprop="addressLocality">@masterViewModel.Footer.AddressCity</span></li>
<li itemprop="addressCountry">Denmark@* TODO: add country to viewmodel @masterViewModel.Footer.AddressCountry*@</li>
</ul>
<ul>
<li><a href="mailto:@masterViewModel.Footer.ContactUsEmail" itemprop="email">@masterViewModel.Footer.ContactUsEmail</a></li>
@if (!string.IsNullOrEmpty(masterViewModel.Footer.ContactUsFax))
{
<li itemprop="faxNumber">Fax: @masterViewModel.Footer.ContactUsFax</li>
}
</ul>
<meta itemprop="telephone" name="phone" content="@masterViewModel.Footer.ContactUsPhone">
</div>
<div>
@if (!string.IsNullOrEmpty(masterViewModel.Footer.OpeningHoursTitle))
{
<div class="footerH3">
@masterViewModel.Footer.OpeningHoursTitle
</div>
}
<ul>
@foreach (var hoursItem in masterViewModel.Footer.OpeningHours)
{
<li><span class="opening-days">@hoursItem.DaysLocalized</span> <span class="opening-hours">@hoursItem.StartTime-@hoursItem.EndTime</span></li>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.ContactUsPhone))
{
<li class="opening-hours">@masterViewModel.Footer.ContactUsPhone</li>
}
</ul>
@foreach (var hoursViewModel in masterViewModel.Footer.OpeningHours)
{
<meta itemprop="openingHours" content="@hoursViewModel.StartDay-@hoursViewModel.EndDay @hoursViewModel.StartTime-@hoursViewModel.EndTime" />
}
</div>
</div>
<div class="footer__information-column">
@if (!string.IsNullOrEmpty(masterViewModel.Footer.AboutLinkTitle) && !string.IsNullOrEmpty(masterViewModel.Footer.AboutLink))
{
<div class="footerH3">
<a href="@masterViewModel.Footer.AboutLink">
<span class="footer__heading-icon">
<svg role="img">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#arrow-right"></use>
</svg>
</span>
<span class="footer__heading-text">@masterViewModel.Footer.AboutLinkTitle</span>
</a>
</div>
}
@if (masterViewModel.Footer.AboutLinks.Any())
{
<ul>
@foreach (var link in masterViewModel.Footer.AboutLinks)
{
<li><a href="@link.PageLink">@link.PageLinkTitle</a></li>
}
</ul>
}
</div>
<div class="footer__information-column">
@if (!string.IsNullOrEmpty(masterViewModel.Footer.ShippingTitle))
{
<div class="footerH3">
@masterViewModel.Footer.ShippingTitle
</div>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.ShippingBodyText))
{
@masterViewModel.Footer.ShippingBodyText
}
@if (masterViewModel.Footer.ShippingLinks.Any())
{
<ul>
@foreach (var link in masterViewModel.Footer.ShippingLinks)
{
<li><a href="@link.PageLink">@link.PageLinkTitle</a></li>
}
</ul>
}
</div>
</div>
</div>
<div class="footer__social">
@if (!string.IsNullOrEmpty(masterViewModel.Footer.SocialMediaTitle))
{
<div class="footerH3">
@masterViewModel.Footer.SocialMediaTitle
</div>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.SocialMediaFacebookLink))
{
<a href="@Translate("SoMeFacebookLink", "https://www.facebook.com/outwell/")" target="_blank" class="footer__social-icon" title="@masterViewModel.Footer.SocialMediaFacebookLinkTitle">
<span>
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#some-facebook"></use>
</svg>
</span>
</a>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.SocialMediaInstagramLink))
{
<a href="@Translate("SoMeInstagramLink", "https://www.instagram.com/outwelltents/")" target="_blank" class="footer__social-icon" title="@masterViewModel.Footer.SocialMediaInstagramLinkTitle">
<span>
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#some-instagram"></use>
</svg>
</span>
</a>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.SocialMediaTwitterLink))
{
<a href="@Translate("SoMeTwitterLink", "https://twitter.com/Outwelltents")" target="_blank" class="footer__social-icon" title="@masterViewModel.Footer.SocialMediaTwitterLinkTitle">
<span>
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#some-twitter"></use>
</svg>
</span>
</a>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.SocialMediaYoutubeLink))
{
<a href="@Translate("SoMeYoutubeLink", "https://www.youtube.com/user/Outwelltents")" target="_blank" class="footer__social-icon" title="@masterViewModel.Footer.SocialMediaYoutubeLinkTitle">
<span>
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#some-youtube"></use>
</svg>
</span>
</a>
}
<!-- TrustBox widget - Mini -->
@if (Pageview.AreaID == 5)
{
trustlanguage = "da-DK";
trusturl = "https://dk.trustpilot.com/review/www.outwell.com";
}
@if (Pageview.AreaID == 1 || Pageview.AreaID == 31)
{
trustlanguage = "en-GB";
trusturl = "https://uk.trustpilot.com/review/www.outwell.com";
}
@if (Pageview.AreaID == 2)
{
trustlanguage = "fr-FR";
trusturl = "https://fr.trustpilot.com/review/www.outwell.com";
}
@if (Pageview.AreaID == 6)
{
trustlanguage = "de-DE";
trusturl = "https://de.trustpilot.com/review/www.outwell.com";
}
@if (Pageview.AreaID == 3)
{
trustlanguage = "nl-NL";
trusturl = "https://nl.trustpilot.com/review/www.outwell.com";
}
@if (Pageview.AreaID == 4)
{
trustlanguage = "sv-SE";
trusturl = "https://se.trustpilot.com/review/www.outwell.com";
}
<div style="margin-top:20px;">
<div class="trustpilot-widget" data-locale="@trustlanguage" data-template-id="53aa8807dec7e10d38f59f32" data-businessunit-id="4853f9a2000064000502b56f" data-style-height="150px" data-style-width="100%" data-theme="dark">
<a href="@trusturl" target="_blank" rel="noopener">Trustpilot</a>
</div>
</div>
<!-- End TrustBox widget -->
</div>
</div>
</div>
<div class="footer__bottom">
@if (!string.IsNullOrEmpty(masterViewModel.Footer.BottomDesignText))
{
<div class="footer__bottom-column">
<span class="outwell-flag">
<svg aria-hidden="true">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#flag-da"></use>
</svg>
</span>
<span>@masterViewModel.Footer.BottomDesignText</span>
</div>
}
@if (masterViewModel.Footer.BottomPaymentLogos != null && masterViewModel.Footer.BottomPaymentLogos.Any())
{
<div class="footer__bottom-column">
@foreach (var paymentName in masterViewModel.Footer.BottomPaymentLogos)
{
<span class="footer__payment-icon">
@if (paymentName.ToLower() == "visa")
{
<img src="@masterStaticResourceService.AddTimeStamp("/static/dist/img/visa_blue.png")" alt="Visa" style="height:25px;" />
}
else
{
<svg aria-hidden="true" style="@(paymentName.ToLower() == "mobilepay" ? "width: 80px;" : "")">
<use xlink:href="@masterStaticResourceService.AddTimeStamp("/static/dist/svg/_bundle.svg")#pay-@paymentName.ToLower()"></use>
</svg>
}
</span>
}
</div>
}
<div class="footer__bottom-column">
<p>
@if (!string.IsNullOrEmpty(masterViewModel.Footer.BottomPolicyLink) && !string.IsNullOrEmpty(masterViewModel.Footer.BottomPolicyLinkTitle))
{
<a href="@masterViewModel.Footer.BottomPolicyLink">@masterViewModel.Footer.BottomPolicyLinkTitle</a>
}
@if (!string.IsNullOrEmpty(masterViewModel.Footer.BottomCopyrightText))
{
@masterViewModel.Footer.BottomCopyrightText
}
</p>
</div>
</div>
</footer>
@SnippetStart("jarvis")
@{
var raptorArea = PageView.Current().Area;
var settingsRaptorApiKey = raptorArea.Item["SettingsRaptorApiKey"];
}
@if (settingsRaptorApiKey != null)
{
if (PageView.Current().Page.NavigationTag != "ecommerce" && PageView.Current().Device == Dynamicweb.Frontend.Devices.DeviceType.Desktop && !string.IsNullOrEmpty(settingsRaptorApiKey.ToString()))
{
var jarvis = (HttpContext.Current.Request.Cookies["jarvis"] != null) ? HttpContext.Current.Request.Cookies["jarvis"].Value : "1";
var jarvisBoxStatus = (jarvis == "1") ? "jarvis--open" : string.Empty;
var jarvisBtnStatus = (jarvis == "1") ? "" : "jarvis-btn--open";
var raptorAreaId = raptorArea.ID;
var raptorBrandId = (raptorArea.Item["SettingsRaptorUserId"] != null) ? raptorArea.Item["SettingsRaptorUserId"].ToString() : string.Empty;
var raptorCookieId = (HttpContext.Current.Request.Cookies[raptorBrandId + "rsa"] != null) ? HttpContext.Current.Request.Cookies[raptorBrandId + "rsa"].Value : "";
var raptorContent1 = masterViewModel.JarvisHistory;
var raptorContent2 = masterViewModel.JarvisRecommendations;
var settingsShopId = raptorArea.Item["SettingsShopId"].ToString();
var ecomPageId = urlParserService.GetPageId(settingsShopId);
if (!string.IsNullOrEmpty(raptorCookieId))
{
<div data-module="jarvis">
<div class="jarvis @jarvisBoxStatus">
<div class="jarvis__header">
<span class="your">@Translate("Your", "Your")</span>
<span class="guide">@Translate("Guide", "Guide")</span>
<span class="logo"></span>
</div>
<div class="jarvis__guide">
<button class="jarvis__close"><span class="round"><svg viewBox="0 0 100 100"><path d="M 10,50 L 60,100 L 70,90 L 30,50 L 70,10 L 60,0 Z" class="arrow"></path></svg></span> @Translate("Hide the wizard", "Hide the wizard")</button>
<div class="jarvis__text">
<p>
@Translate("The guide follows you around and finds new recommendations based on what you're looking at.", "The guide follows you around and finds new recommendations based on what you're looking at.")
</p>
</div>
</div>
<div id="GetCookieRecommendations" class="jarvis__alternatives">
<section class="featured-products container-ribbon ribbon">
<h3>@Translate("Good alternatives", "Good alternatives")</h3>
<div class="featured-products__container" data-url="/webservices/jarvis.ashx?areaId=@raptorAreaId&raptorFunction=GetCookieRecommendations">
@foreach (var raptorProduct in raptorContent2)
{
var raptorProductView = productViewModelService.GetViewModel(raptorProduct);
if (raptorProductView.MainImage != null)
{
raptorProductView.RaptorImage = raptorProductView.MainImage.SetWidth(500).SetHeight(300).SetCrop(CropType.KeepAspectRatio).SetCompression(50).GetCrop();
}
raptorProductView.RaptorUrl = urlService.GetUrl(raptorProductView.GroupId, raptorProductView.Id, ecomPageId.GetValueOrDefault());
<article itemscope itemtype="https://schema.org/Product\" class="product-item">
<a itemprop="url" href="@raptorProductView.RaptorUrl" data-raptorrecommendation="productId:@raptorProductView.ProductNumber">
<div class="product-item__header">
<figure>
<img src="@raptorProductView.RaptorImage" itemprop="image" content="OaseOutdoors.Services.ImageService.ImageService" alt="@raptorProductView.Name">
</figure>
</div>
<div class="product-item__body">
<div class="product-item__headline">
<h3 itemprop="name" class="h-1">@raptorProductView.Name</h3>
</div>
<div itemprop="offers" itemscope itemtype="https://schema.org/Offer" class="product-item__price">
<div class="price"><span itemprop=\"priceCurrency\" content="@raptorProductView.Currency">@raptorProductView.CurrencySymbol</span> <span itemprop="price" content="@raptorProductView.UnformatedPrice">@raptorProductView.Price</span></div>
</div>
</div>
</a>
</article>
}
</div>
</section>
</div>
<div id="GetCookieHistory" class="jarvis__suggest">
<section class="featured-products container-ribbon ribbon">
<h3>@Translate("You have previously looked at", "You have previously looked at")</h3>
<div class="featured-products__container" data-url="/webservices/jarvis.ashx?areaId=@raptorAreaId&raptorFunction=GetCookieHistory">
@foreach (var raptorProduct in raptorContent1)
{
var raptorProductView = productViewModelService.GetViewModel(raptorProduct);
if (raptorProductView.MainImage != null)
{
raptorProductView.RaptorImage = raptorProductView.MainImage.SetWidth(500).SetHeight(300).SetCrop(CropType.KeepAspectRatio).SetCompression(50).GetCrop();
}
raptorProductView.RaptorUrl = urlService.GetUrl(raptorProductView.GroupId, raptorProductView.Id, ecomPageId.GetValueOrDefault());
<article itemscope itemtype="https://schema.org/Product\" class="product-item">
<a itemprop="url" href="@raptorProductView.RaptorUrl" data-raptorrecommendation="productId:@raptorProductView.ProductNumber">
<div class="product-item__header">
<figure>
<img src="@raptorProductView.RaptorImage" itemprop="image" content="OaseOutdoors.Services.ImageService.ImageService" alt="@raptorProductView.Name">
</figure>
</div>
<div class="product-item__body">
<div class="product-item__headline">
<h3 itemprop="name" class="h-1">@raptorProductView.Name</h3>
</div>
<div itemprop="offers" itemscope itemtype="https://schema.org/Offer" class="product-item__price">
<div class="price"><span itemprop=\"priceCurrency\" content="@raptorProductView.Currency">@raptorProductView.CurrencySymbol</span> <span itemprop="price" content="@raptorProductView.UnformatedPrice">@raptorProductView.Price</span></div>
</div>
</div>
</a>
</article>
}
</div>
</section>
</div>
</div>
<div class="jarvis-btn @jarvisBtnStatus">
<img src="/static/dist/img/jarvis/jarvis-small.png">
</div>
</div>
}
}
}
@SnippetEnd("jarvis")
@RenderSnippet("jarvis")
<script>
function activatesearch() {
var element = document.getElementById("search-overlay");
element.className += " active";
}
const parent = document.getElementById('search-overlay__results');
window.addEventListener('click', e => {
let elem = e.target;
for (; elem && elem !== document; elem = elem.parentNode) {
if (elem === parent) {
return false;
}
}
document.getElementById('search-overlay__results').innerHTML = "";
document.getElementById('search').value = "";
});
</script>
<script>
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "/static/dist/js/main.min.js?v=15";
document.body.appendChild(s);
</script>
<script>
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "/static/dist/relewise/relewise-custom.js?v=15";
document.body.appendChild(s);
</script>
</body>
</html>