Error executing template "Designs/Swift-v2/Swift-v2_Page.cshtml"
System.IO.IOException: The configured user limit (128) on the number of inotify instances has been reached, or the per-process limit on the number of open file descriptors has been reached.
   at System.IO.FileSystemWatcher.StartRaisingEvents()
   at Dynamicweb.Caching.FileChangeMonitor.InitializeMonitor(String path)
   at Dynamicweb.Caching.FileChangeMonitor..ctor(IEnumerable`1 paths, Boolean includeSubdirectories)
   at Dynamicweb.Caching.MemoryCacheManager.ConvertCachePolicy(CacheItemPolicy policy)
   at Dynamicweb.Caching.MemoryCacheManager.Set(String key, Object cacheItem, CacheItemPolicy policy)
   at Dynamicweb.Rendering.Translation.Source.GetTranslationSource(String designName, String moduleName, String cultureName)
   at Dynamicweb.Rendering.Template.TranslateText(String text, String defaultValue, String cultureName)
   at CompiledRazorTemplates.Dynamic.RazorEngine_25110594e629463dbb87617c4c2aca29.ExecuteAsync()
   at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 2 @using System 3 @using Dynamicweb 4 @using Dynamicweb.Environment 5 @using Dynamicweb.Frontend 6 @using Dynamicweb.Frontend.Devices 7 @using Dynamicweb.Rendering 8 9 @{ 10 Pageview.Meta.AddTag("fb:app_id", Model.Area?.Item?.GetString("FacebookAppId")); 11 Pageview.Meta.AddTag("google-site-verification", Model.Area?.Item?.GetString("GoogleSiteVerification")); 12 Pageview.Meta.AddTag("site_name", Model.Area?.Item?.TryGetString("MetaSiteName", out string? siteName) is true ? siteName : Model.Area?.Name); 13 Pageview.Meta.AddTag("url", Pageview.Meta.Canonical?.ToString()); 14 Pageview.Meta.AddTag("twitter:site", Model.Area?.Item?.GetString("TwitterSite")); 15 Pageview.Meta.AddOpenGraphTag("type", "website"); 16 Pageview.Meta.AddOpenGraphTag("url", Pageview.Meta.Canonical?.ToString()); 17 Pageview.Meta.AddOpenGraphTag("title", Model.Title); 18 Pageview.Meta.AddOpenGraphTag("description", Model.Description); 19 20 if (Model.Area?.Item?.TryGetImageFile("MetaImage", out ImageFileViewModel? image) ?? false) { 21 Pageview.Meta.AddOpenGraphTag("image", image.Path); 22 Pageview.Meta.AddOpenGraphTag("image:alt", Model.Area?.Item?.GetString("MetaImageALT")); 23 } 24 25 string? googleTagManagerID = string.Empty; 26 if (Model.Area?.Item?.TryGetString("GoogleTagManagerID", out googleTagManagerID) ?? false) 27 { 28 googleTagManagerID = googleTagManagerID.Trim(); 29 } 30 31 @* Stylesheets *@ 32 AddStylesheet("/Files/Templates/Designs/Swift-v2/Assets/css/swift.css"); 33 34 @* Color schemes stylesheet *@ 35 @if (Model.TryGetColorSchemeStyle(out string? colorSchemeStyle)) 36 { 37 AddStylesheet(colorSchemeStyle); 38 } 39 @* Button stylesheet *@ 40 @if (Model.TryGetButtonStyle(out string? buttonStyle)) { 41 AddStylesheet(buttonStyle); 42 } 43 @* Typography stylesheet *@ 44 @if (Model.TryGetTypographyStyle(out string? typographyStyle)) { 45 AddStylesheet(typographyStyle); 46 } 47 48 @* Scripts *@ 49 AddScript("/Files/Templates/Designs/Swift-v2/Assets/lib/bootstrap/dist/js/bootstrap.bundle.min.js"); 50 AddScript("/Files/Templates/Designs/Swift-v2/Assets/lib/htmx.org/dist/htmx.min.js"); 51 AddScript("/Files/Templates/Designs/Swift-v2/Assets/lib/alpinejs/dist/cdn.min.js", true); 52 AddScript("/Files/Templates/Designs/Swift-v2/Assets/js/swift.js"); 53 54 @* Custom <head> include *@ 55 if (Model.Area?.Item?.TryGetFile("CustomHeadInclude", out FileViewModel? customHeadInclude) ?? false) 56 { 57 @RenderPartial($"Designs/Swift-v2/Custom/{customHeadInclude?.Name}") 58 } 59 } 60 61 <!doctype html> 62 <html lang="@Pageview.Area.CultureInfo.TwoLetterISOLanguageName" data-swift-version="@(ReadFile("/Files/Templates/Designs/Swift-v2/swift_version.txt")?.Trim())" data-swift-openlinksinnewtab="@Model.Area?.Item?.GetBoolean("OpenLinksInNewTab")"> 63 <head> 64 @* Required meta tags *@ 65 <meta charset="utf-8"> 66 <meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0"> 67 68 @* MetaTags *@ 69 @Model.MetaTags 70 71 @if (Model.Area?.Item?.TryGetImageFile("Favicon", out ImageFileViewModel? faviconImage) ?? false) 72 { 73 <link rel="shortcut icon" href="@faviconImage?.Path"> 74 } 75 @if (Model.Area?.Item?.TryGetImageFile("AppleTouchIcon", out ImageFileViewModel? appleTouchIconImage) ?? false) 76 { 77 <link rel="apple-touch-icon" href="@appleTouchIconImage?.Path"> 78 } 79 80 @* Pageview Meta *@ 81 <title>@Model.Title</title> 82 83 @* Get stylesheets *@ 84 @Model.GetStylesheetsMarkup() 85 86 @* Media Query Limit *@ 87 @if(Model.Area?.Item?.TryGetString("MediaQueryLimit", out string? mediaQueryLimit) ?? false) { 88 <style> 89 @@media screen and (min-width: @(mediaQueryLimit)px) { 90 [data-swift-container] { 91 --dw-container-limit: @(mediaQueryLimit)px; 92 } 93 94 [data-swift-container], 95 [data-dw-container-width="3"] { 96 --dw-container-width: calc(var(--dw-container-limit) * .8); 97 } 98 99 [data-dw-container-width="1"] { 100 --dw-container-width: var(--swift-text-width); 101 } 102 103 [data-dw-container-width="2"] { 104 --dw-container-width: calc(var(--dw-container-limit) * .65); 105 } 106 } 107 </style> 108 } 109 110 @* Get scripts *@ 111 @Model.GetScriptsMarkup() 112 113 @* Google gtag method - always include even if it is not used for anything *@ 114 <script> 115 window.dataLayer = window.dataLayer || []; 116 function gtag() { dataLayer.push(arguments); } 117 </script> 118 @* Google tag manager *@ 119 @if (!string.IsNullOrWhiteSpace(googleTagManagerID) && !Pageview.IsVisualEditorMode) 120 { 121 <script> 122 gtag('consent', 'default', { 123 'ad_storage': 'denied', 124 'ad_user_data': 'denied', 125 'ad_personalization': 'denied', 126 'analytics_storage': 'denied' 127 }); 128 </script> 129 <script> 130 (function (w, d, s, l, i) { 131 w[l] = w[l] || []; w[l].push({ 132 'gtm.start': 133 new Date().getTime(), event: 'gtm.js' 134 }); var f = d.getElementsByTagName(s)[0], 135 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 136 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 137 })(window, document, 'script', 'dataLayer', '@(googleTagManagerID)'); 138 </script> 139 if (AllowTracking()) 140 { 141 <script> 142 gtag('consent', 'update', { 143 'ad_storage': '@(CookieManager.IsCookieOptInGranted("Marketing") ? "granted" : "denied")', 144 'ad_user_data': '@(CookieManager.IsCookieOptInGranted("Marketing") ? "granted" : "denied")', 145 'ad_personalization': '@(CookieManager.IsCookieOptInGranted("Marketing") ? "granted" : "denied")', 146 'analytics_storage': '@(CookieManager.IsCookieOptInGranted("Statistical") ? "granted" : "denied")' 147 }); 148 </script> 149 } 150 } 151 </head> 152 <body data-dw-page-id="@(Model.ID)" data-dw-itemtype="@Model.Item?.SystemName?.ToLower()"> 153 154 @* Google tag manager *@ 155 @if (!string.IsNullOrWhiteSpace(googleTagManagerID) && AllowTracking()) 156 { 157 <noscript> 158 <iframe src="https://www.googletagmanager.com/ns.html?id=@(googleTagManagerID)" height="0" width="0" style="display:none;visibility:hidden"></iframe> 159 </noscript> 160 } 161 162 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 163 @using System 164 @using Dynamicweb.Frontend 165 @using Dynamicweb.Frontend.Devices 166 @using Dynamicweb.Ecommerce.ProductCatalog 167 @using Dynamicweb.Ecommerce.Products 168 169 170 @{ 171 bool isContentOnly = Dynamicweb.Core.Converter.ToBoolean(Dynamicweb.Context.Current?.Request.QueryString.Get("ContentOnly") ?? "false"); 172 // Page headers 173 LinkViewModel headerLink; 174 if (!isContentOnly && ((Pageview.Device == DeviceType.Desktop && (Model.Area?.Item?.TryGetLink("HeaderDesktop", out headerLink) ?? false)) || 175 !isContentOnly && (Pageview.Device == DeviceType.Mobile || Pageview.Device == DeviceType.Tablet) && (Model.Area?.Item?.TryGetLink("HeaderMobile", out headerLink) ?? false))) 176 { 177 string? headerCss = null; 178 var headerPage = ContentViewModelFactory.CreatePageInfoViewModel(Dynamicweb.Content.Services.Pages.GetPage(headerLink.PageId)); 179 if ((headerPage.Item?.TryGetString("HeaderPosition", out string headerPosition) ?? false) && !headerPosition.Equals("static", StringComparison.OrdinalIgnoreCase)) 180 { 181 headerCss = headerPosition; 182 } 183 <header data-swift-page-header="@(headerLink.PageId)" class="@headerCss d-print-none" data-dw-colorscheme="@headerPage.ColorScheme?.Id"> 184 @RenderGrid(headerLink.PageId) 185 </header> 186 } 187 } 188 189 <main id="content" data-dw-colorscheme="@(Model.ColorScheme?.Id ?? Model.Area?.ColorScheme?.Id)"> 190 191 @Model.Grid("Grid", "Grid", "default:true;sort:1", "Page") 192 193 </main> 194 195 @{ // Page footers 196 LinkViewModel footerLink; 197 if (!isContentOnly && ((Pageview.Device == DeviceType.Desktop) && (Model.Area?.Item?.TryGetLink("FooterDesktop", out footerLink) ?? false)) || 198 !isContentOnly && ((Pageview.Device == DeviceType.Mobile || Pageview.Device == DeviceType.Tablet) && (Model.Area?.Item?.TryGetLink("FooterMobile", out footerLink) ?? false))) 199 { 200 var footerPage = ContentViewModelFactory.CreatePageInfoViewModel(Dynamicweb.Content.Services.Pages.GetPage(footerLink.PageId)); 201 <footer class="d-print-none" data-swift-page-footer="@(footerLink.PageId)" data-dw-colorscheme="@footerPage.ColorScheme?.Id"> 202 @RenderGrid(footerLink.PageId) 203 </footer> 204 } 205 } 206 207 @if (isContentOnly) 208 { 209 return; 210 } 211 212 @* Favorite toast *@ 213 <div aria-live="polite" aria-atomic="true" data-dw-colorscheme="@(Model.Area?.ColorScheme?.Id ?? "light")"> 214 <div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11"> 215 <div id="favoriteNotificationToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true"> 216 <div class="toast-header"> 217 <strong class="me-auto">@Translate("Favorite list updated")</strong> 218 <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button> 219 </div> 220 <div class="toast-body d-flex gap-3"> 221 <div id="favoriteNotificationToast_Image"></div> 222 <div id="favoriteNotificationToast_Text"></div> 223 </div> 224 </div> 225 </div> 226 </div> 227 228 @* Modal for dynamic content *@ 229 <div class="modal fade js-product" id="DynamicModal" tabindex="-1" aria-hidden="true"> 230 <div class="modal-dialog modal-dialog-centered modal-md"> 231 <div class="modal-content" id="DynamicModalContent" data-dw-colorscheme="@(Model.Area?.ColorScheme?.Id ?? "light")"> 232 @* The content here comes from an external request *@ 233 </div> 234 </div> 235 </div> 236 237 @* Offcanvas for dynamic content *@ 238 <div class="offcanvas offcanvas-end border-0" tabindex="-1" id="DynamicOffcanvas" data-dw-colorscheme="@(Model.Area?.ColorScheme?.Id ?? "light")"> 239 @* The content here comes from an external request *@ 240 </div> 241 242 </body> 243 244 </html> 245 246 @functions { 247 bool AllowTracking() 248 { 249 bool allowTracking = true; 250 if (CookieManager.IsCookieManagementActive) 251 { 252 var cookieOptInLevel = CookieManager.GetCookieOptInLevel(); 253 var cookieOptInCategories = CookieManager.GetCookieOptInCategories(); 254 bool consentEither = (cookieOptInCategories.Contains("Statistical") || cookieOptInCategories.Contains("Marketing")); 255 bool consentFunctional = cookieOptInLevel == CookieOptInLevel.Functional; 256 bool consentAtLeastOne = cookieOptInLevel == CookieOptInLevel.All || (consentFunctional && consentEither); 257 allowTracking = consentAtLeastOne; 258 } 259 return allowTracking; 260 } 261 } 262