Error executing template "Designs/Kwpn/ItemPublisher/Details/NewsDetail.cshtml" System.IO.IOException: The process cannot access the file 'D:\inetpub\wwwroot\www.kwpn.nl\Files\Templates\Designs\Kwpn\Translations.xml' because it is being used by another process. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at Dynamicweb.Rendering.Translation.Source.WriteDocument(XmlDocument document) at Dynamicweb.Rendering.Translation.Source.Save() at Dynamicweb.Rendering.Translation.Source.UpdateTranslationSource(Source source, IEnumerable`1 newKeys, String designName, IEnumerable`1 cultures) at Dynamicweb.Rendering.Template.TranslateText(String text, String defaultValue, String cultureName) at Dynamicweb.Rendering.TemplateBase`1.Translate(String text, String defaultValue) at CompiledRazorTemplates.Dynamic.RazorEngine_ed10c6f01b1e48bab8483e58c10fe2fe.Execute() in D:\inetpub\wwwroot\www.kwpn.nl\Files\Templates\Designs\Kwpn\ItemPublisher\Details\NewsDetail.cshtml:line 106 at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using System.Globalization; 2 @using System.Linq; 3 @using Kwpn.Models.Constants; 4 @using Kwpn.Models.Enumerations; 5 @using Kwpn.Repository.Helpers; 6 @using System.Web.Mvc; 7 @using Kwpn.Core.Services.Abstract; 8 @using Kwpn.Core.Helpers; 9 10 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 11 12 @{ 13 var jumpVideoService = DependencyResolver.Current.GetService<IJumpPortalVideoService>(); 14 var videoIds = new List<string>(4); 15 16 for (int i = 1; i <= 4; i++) 17 { 18 if (int.TryParse(GetInteger($"ItemPublisher:Item.VideoId{i}.Value").ToString(), out int videoId)) 19 { 20 videoIds.Add(videoId.ToString()); 21 } 22 } 23 24 var collection = jumpVideoService.GetVideosByIds(videoIds.ToArray()); 25 26 var culture = GetGlobalValue("Global:Area.LongLang"); 27 var cultureInfo = new CultureInfo(GetGlobalValue("Global:Area.LongLang")); 28 var newsParagraphId = GetInteger("ItemPublisher:Global.ParagraphId"); 29 30 // news detail 31 var newsTitle = GetString("ItemPublisher:Item.NewsTitle.Value"); 32 var newsDate = GetDate("ItemPublisher:Item.NewsDate.Value"); 33 var newsDateTime = FormatHelpers.GetDateTime(newsDate, null, cultureInfo, Translate("EventDateDevider", "to")); 34 var newsText = GetString("ItemPublisher:Item.NewsText.Value"); 35 if (!string.IsNullOrEmpty(newsText) && !(newsText.IndexOf("<p>") >= 0 || newsText.IndexOf("<br>") >= 0)) 36 { 37 newsText = newsText.Replace("\n", "<br />"); 38 } 39 40 //image 41 var newsCategories = GetString("ItemPublisher:Item.NewsCategories.Value"); 42 var newsImage = GetString("ItemPublisher:Item.NewsImage.Value"); 43 if (string.IsNullOrWhiteSpace(newsImage) && !string.IsNullOrWhiteSpace(newsCategories)) 44 { 45 newsImage = ImageHelper.GetDefaultImageByCategory(ImageType.NewsCategoryImage, newsCategories.Split(',').FirstOrDefault().Trim()); 46 } 47 48 // extra 49 var noteText = GetString("ItemPublisher:Item.NoteText.Value"); 50 var newsRegion = KwpnNewsHelper.GetNewsRegion(GetString("ItemPublisher:Item.Regions"), culture, noteText); 51 if (!string.IsNullOrWhiteSpace(noteText)) { noteText = string.Format("<div class='note'>{0}</div>", noteText); } 52 var hightlightText = GetString("ItemPublisher:Item.HighlightText.Value"); 53 if (!string.IsNullOrWhiteSpace(hightlightText)) { hightlightText = string.Format("<div class='highlight'>{0}</div>", hightlightText); } 54 var notification = GetString("ItemPublisher:Item.Notification.Value"); 55 56 // linked horsed 57 var linkedHorses = HorseHelper.GetHorsesByAnimalCodes(GetString("ItemPublisher:Item.Horses.Value"), GetGlobalValue("Global:Area.LongLang")); 58 var iLinkedHorseCounter = 0; 59 60 // linked 61 var listOfEventItems = new List<Dynamicweb.Content.Items.Item>(); 62 var kwpnEvents = GetString("ItemPublisher:Item.KwpnEvents.Value"); 63 if (!string.IsNullOrWhiteSpace(kwpnEvents)) 64 { 65 var kwpnEventIdList = kwpnEvents.Split(',').ToList(); 66 foreach (var kwpnEventId in kwpnEventIdList) 67 { 68 var eventItem = Dynamicweb.Content.Items.ItemManager.Storage.GetById(StringConstants.ItemTypes.Event, kwpnEventId); 69 if (eventItem != null) 70 { 71 listOfEventItems.Add(eventItem); 72 } 73 } 74 } 75 76 var showAside = (listOfEventItems.Any() || linkedHorses.Any()); 77 78 var imageMdClass = "col-md-12"; 79 var contentMdClass = "col-md-7 col-md-pull-4"; 80 81 // social media share 82 var openGraphTitle = newsTitle; 83 var openGraphUrl = string.Format("{0}{1}", AreaHelper.GetHost(), System.Web.HttpContext.Current.Request.RawUrl); 84 var openGraphImage = newsImage; 85 var openGraphDefaultImage = string.Format("{0}/Files/Templates/Designs/Kwpn/Images/OpenGraph_NoImg.jpg", AreaHelper.GetHost()); 86 if (string.IsNullOrWhiteSpace(openGraphImage)) 87 { 88 var images = FormatHelpers.GetImagesInHTMLString(GetString("ItemPublisher:Item.NewsText.Value")); 89 var firstImage = ""; 90 if (images.Any()) 91 { 92 firstImage = images.FirstOrDefault(); 93 if (!string.IsNullOrWhiteSpace(firstImage)) 94 { 95 openGraphImage = System.Text.RegularExpressions.Regex.Match(firstImage, "<img.+?src=[\"'](.+?)[\"'].+?>", System.Text.RegularExpressions.RegexOptions.IgnoreCase).Groups[1].Value; 96 97 } 98 } 99 } 100 if (string.IsNullOrWhiteSpace(openGraphImage) || openGraphImage.Length < 10) // root directory left overs negeren: /Files/ 101 { 102 openGraphImage = openGraphDefaultImage; 103 } 104 var openGraphDescription = GetString("ItemPublisher:Item.NewsText.Value").HtmlRemove().ClipLength(100, true); 105 var openGraphLocale = GetGlobalValue("Global:Area.LongLang").Replace("-", "_"); 106 var openGraphSiteName = Translate("OpenGraph_SiteName", "KWPN Royal Dutch Sport Horse"); 107 108 // SEO: seoPage is used as base url for virtual pageviews 109 var seoPage = GetGlobalValue("Global:Pageview.Url"); 110 if (seoPage.Contains("?")) 111 { 112 seoPage = seoPage.Split('?')[0]; 113 } 114 seoPage = string.Format("{0}/{1}/{2}", seoPage, GetString("ItemPublisher:Item.Field.Id"), GetString("ItemPublisher:Item.NewsTitle.Value").Replace(" ", "-").ToLower().UrlEncode()); 115 116 <div class="break-grid content-container page-content-aside" id="news-detail"> 117 <div class="break-grid-background"> 118 <div class="in-grid news-content"> 119 <div class="row"> 120 <div class="background-head-aside-xs"> 121 <div class="background-head-xs"> 122 <div class="col-xs-12 page-header"> 123 <div class="row"> 124 <div class="col-xs-12 col-md-7"> 125 <div class="row"> 126 @if (!string.IsNullOrWhiteSpace(noteText)) 127 { 128 <div class="col-md-6 hidden-xs hidden-sm">@noteText</div> 129 } 130 @if (!string.IsNullOrWhiteSpace(hightlightText)) 131 { 132 <div class="col-md-6 hidden-xs hidden-sm">@hightlightText</div> 133 } 134 </div> 135 <div class="row"> 136 <div class="col-xs-12"> 137 <h1>@newsTitle</h1> 138 </div> 139 </div> 140 <div class="row"> 141 <div class="col-xs-12"> 142 @if (!string.IsNullOrWhiteSpace(newsDateTime)) 143 { 144 <span class="date"><i class="fa fa-clock-o"></i> @newsDateTime</span> 145 } 146 <div class="visible-xs"></div> 147 @if (!string.IsNullOrWhiteSpace(newsRegion)) 148 { 149 <span class="region"><i class="fa fa-location-arrow"></i> @newsRegion</span> 150 } 151 </div> 152 </div> 153 </div> 154 @if (!string.IsNullOrEmpty(newsImage)) 155 { 156 <div class="col-xs-12 hidden-md hidden-lg"> 157 <div class="news-image"><img src="@newsImage" alt="News image" /></div> 158 </div> 159 } 160 @if (!string.IsNullOrWhiteSpace(noteText)) 161 {<div class="col-xs-12 hidden-md hidden-lg">@noteText</div>} 162 @if (!string.IsNullOrWhiteSpace(hightlightText)) 163 {<div class="col-xs-12 hidden-md hidden-lg">@hightlightText</div>} 164 @if (!string.IsNullOrWhiteSpace(notification)) 165 { 166 <div class="col-xs-12 hidden-md hidden-lg"> 167 <div class="notification"> 168 @notification 169 </div> 170 </div> 171 } 172 </div> 173 </div> 174 </div> 175 <div class="background-aside-xs"> 176 <aside class="col-xs-12 col-md-4 col-md-push-8 news-detail-aside"> 177 178 <!-- /204473129/NieuwsDetail/Banner1 --> 179 <div id='div-gpt-ad-banner1-1' class="google-container google-container--size--b google-container--center google-container--margin-bottom google-container--margin-top-p"> 180 <script> 181 googletag.cmd.push(function () { googletag.display('div-gpt-ad-banner1-1'); }); 182 </script> 183 </div> 184 185 @if (showAside) 186 { 187 <div class="page-aside"> 188 @if (linkedHorses.Any()) 189 { 190 <h2 id="linkedhorses-aside-title" data-childId="linkedhorses-aside-content" class="notactive"><span>@Translate("LinkedHorses", "Linked horses")</span></h2> 191 <div id="linkedhorses-aside-content" class="aside-content notactive"> 192 <div class="linkedHorses"> 193 @foreach (var linkedHorse in linkedHorses) 194 { 195 // modulo for row color display 196 var mod = "0"; 197 if (iLinkedHorseCounter % 2 == 0) 198 { 199 mod = "1"; 200 } 201 202 // gender info 203 var genderClass = "fa-question"; 204 var genderAbbr = ""; 205 var gender = Kwpn.Models.Enumerations.Gender.UNKNOWN; 206 Enum.TryParse(linkedHorse.Gender.ToUpper(), out gender); 207 switch (gender) 208 { 209 case Kwpn.Models.Enumerations.Gender.HENGST: 210 genderClass = "fa-mars"; 211 genderAbbr = Translate("Stallion", "Stallion"); 212 break; 213 case Kwpn.Models.Enumerations.Gender.MERRIE: 214 genderClass = "fa-venus"; 215 genderAbbr = Translate("Mare", "Mare"); 216 break; 217 case Kwpn.Models.Enumerations.Gender.RUIN: 218 genderClass = "fa-mars"; //fa-mars-stroke-h 219 genderAbbr = Translate("Gelding", "Gelding"); 220 break; 221 } 222 223 // horse info 224 var horseName = HorseHelper.GetHorseName(linkedHorse.SportsName, linkedHorse.AnimalName, linkedHorse.DateOfBirth); 225 226 // father info 227 var fatherName = ""; 228 var father = linkedHorse.GetPredigreeByPrefix(Kwpn.Models.Constants.StringConstants.PedigreePrefixes.Father); 229 if (father != null) 230 { 231 fatherName = father.AnimalName; 232 } 233 else 234 { 235 fatherName = Translate("Unknown", "Unknown"); 236 } 237 var fatherNameAbbr = Translate("FathersName", "Fathers name").JsEncode(); 238 239 // mothers father info 240 var mothersFatherName = ""; 241 var mothersFather = linkedHorse.GetPredigreeByPrefix(Kwpn.Models.Constants.StringConstants.PedigreePrefixes.MothersFather); 242 if (mothersFather != null) 243 { 244 mothersFatherName = mothersFather.AnimalName; 245 } 246 else 247 { 248 mothersFatherName = Translate("Unknown", "Unknown"); 249 } 250 var mothersFatherNameAbbr = Translate("MothersFathersName", "Mothers fathers name").JsEncode(); 251 var databaseLink = HorseHelper.GetHorseInfoPageUrl(GetGlobalValue("Global:Area.LongLang"), linkedHorse.AnimalCode); 252 <a href="@databaseLink"> 253 <div class="row mod-@mod"> 254 <div class="col-xs-2"> 255 <span class="gender"><i class="fa @genderClass" title='@genderAbbr.JsEncode()'></i></span> 256 </div> 257 <div class="col-xs-10"> 258 <span class="name">@horseName</span> 259 <span class="parents"> 260 <abbr title='@fatherNameAbbr'>@fatherName</abbr> x <abbr title='@mothersFatherNameAbbr'>@mothersFatherName</abbr> 261 </span> 262 </div> 263 </div> 264 </a> 265 iLinkedHorseCounter++; 266 } 267 </div> 268 </div> 269 } 270 @if (listOfEventItems.Any()) 271 { 272 var kwpnEventCounter = 0; 273 var eventPageId = AreaHelper.GetAreaItemStringValueBySystemName(StringConstants.PageIdSystemNames.EventPageId); 274 275 if (!string.IsNullOrWhiteSpace(eventPageId)) 276 { 277 <h2 id="linkedevents-aside-title" data-childId="linkedevents-aside-content" class="notactive"><span>@Translate("LinkedEvents", "Linked events")</span></h2> 278 <div id="linkedevents-aside-content" class="aside-content notactive"> 279 <div class="linkedEvents"> 280 @foreach (var kwpnEvent in listOfEventItems) 281 { 282 // modulo for row color display 283 var mod = "0"; 284 if (kwpnEventCounter % 2 == 0) 285 { 286 mod = "1"; 287 } 288 var kwpnEventId = ItemHelper.GetItemValue<int>(kwpnEvent, StringConstants.ItemTypes.Event_Id); 289 var kwpnEventTitle = ItemHelper.GetItemValue<string>(kwpnEvent, StringConstants.ItemTypes.Event_Title); 290 var dateFrom = ItemHelper.GetItemValue<DateTime>(kwpnEvent, StringConstants.ItemTypes.Event_FromDate); 291 var dateTo = ItemHelper.GetItemValue<DateTime>(kwpnEvent, StringConstants.ItemTypes.Event_ToDate); 292 var eventDateTime = FormatHelpers.GetDateTime(dateFrom, dateTo, cultureInfo, Translate("EventDateDevider", "to")); 293 var kwpnEventLink = string.Format("/Default.aspx?ID={0}&itemId={1}:{2}", eventPageId, StringConstants.ItemTypes.Event, kwpnEventId); 294 var customPageLink = ItemHelper.GetItemValue<string>(kwpnEvent, StringConstants.ItemTypes.Event_CustomEventPage); 295 if (!string.IsNullOrEmpty(customPageLink)) 296 { 297 kwpnEventLink = customPageLink; 298 } 299 <a href="@kwpnEventLink"> 300 <div class="row mod-@mod"> 301 <div class="col-xs-2"> 302 <span class="clock"><i class="fa fa-clock-o"></i></span> 303 </div> 304 <div class="col-xs-10"> 305 <span class="date-time">@eventDateTime</span> 306 <span class="title">@kwpnEventTitle</span> 307 </div> 308 </div> 309 </a> 310 kwpnEventCounter++; 311 } 312 </div> 313 </div> 314 } 315 } 316 </div> 317 } 318 319 320 321 </aside> 322 </div> 323 </div> 324 325 <article class="col-xs-12 @contentMdClass page-content news-detail-output"> 326 @if (!string.IsNullOrWhiteSpace(notification)) 327 { 328 <div class="row"> 329 <div class="hidden-xs hidden-sm col-md-12"> 330 <div class="notification"> 331 @notification 332 </div> 333 </div> 334 </div> 335 } 336 337 @*IMAGE FOR LARGE VIEW*@ 338 @if (!string.IsNullOrEmpty(newsImage)) 339 { 340 // KWPN-1733 Use image handler because content managers upload huge images from the content section of the CMS, which causes them not to be scaled immediately on upload 341 newsImage = $"/Admin/Public/GetImage.ashx?Image={newsImage}&Crop={(int)Kwpn.Models.Enumerations.ImageCrop.KeepAspectRatio}&Format=jpg&Width=800&Height=600&Compression=75&fillcanvas=false"; 342 <div class="row hidden-xs hidden-sm"> 343 <div class="@imageMdClass"> 344 <div class="news-image" style="background-image: url('@newsImage');"> 345 </div> 346 </div> 347 </div> 348 } 349 350 @if (!string.IsNullOrWhiteSpace(newsText)) 351 { 352 <div class="row"> 353 <div class="col-xs-12 news-par"> 354 @newsText 355 </div> 356 </div> 357 } 358 @if (collection != null && collection.Any()) 359 { 360 <div class="row kwpntv"> 361 <div class="col-xs-12 kwpntv--category-topx"> 362 <div class="result-container kwpntv-news-video-results" id="kwpntv-news-video-results-@newsParagraphId"></div> 363 </div> 364 </div> 365 366 foreach (Kwpn.Models.Jump.VideoResponse video in collection) 367 { 368 369 <div class="col-xs-12 col-md-6"> 370 <a href="@video.Url" target="_blank"> 371 <div class="embed-responsive embed-responsive-16by9"> 372 <img src="@VideoHelper.ValidateThumbnail(video.Thumbnail)" /> 373 </div> 374 <div class="embed-title"> 375 376 @if (!string.IsNullOrEmpty(video.Title)) 377 { 378 <h3>@video.Title</h3> 379 } 380 381 </div> 382 383 @if (video.Duration != null && (int)video.Duration > 0) 384 { 385 <div class="duration">@TimeHelper.ConvertDuration((int)video.Duration)</div> 386 <div class="duration"><i class="fa fa-clock-o"></i></div> 387 } 388 389 </a> 390 </div> 391 } 392 } 393 </article> 394 </div> 395 </div> 396 </div> 397 @{ 398 var carouselId = $"related-news-{newsParagraphId}"; 399 var carouselInterval = "false"; // false or set interval in ms 400 var carouselPeakNext = false; 401 var carouselResponsiveness = carouselPeakNext ? "col-xs-11 col-md-10 " : "col-xs-12 col-centered"; 402 } 403 <div id="related-news-wrapper" class="hidden"> 404 <div class="in-grid news-content"> 405 <div class="row"> 406 <div class="col-xs-12"><h3>@Translate("RelatedNews", "Related news")</h3></div> 407 </div> 408 </div> 409 <div class="break-grid-extra"> 410 <div class="row"> 411 <div class="@carouselResponsiveness"> 412 <div id="@carouselId" class="carousel carousel-multi slide" data-ride="carousel" data-type="multi" data-interval="@carouselInterval"> 413 <div class="carousel-inner" id="horses-for-sale-results-@newsParagraphId"> 414 <!-- filled by javascript --> 415 </div> 416 <!-- Controls --> 417 <div class="left carousel-control"> 418 <a href="#@carouselId" role="button" data-slide="prev"> 419 <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 420 <span class="sr-only">Previous</span> 421 </a> 422 </div> 423 <div class="right carousel-control"> 424 <a href="#@carouselId" role="button" data-slide="next"> 425 <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 426 <span class="sr-only">Next</span> 427 </a> 428 </div> 429 </div> 430 </div> 431 </div> 432 </div> 433 </div> 434 435 <div class="break-grid-background"> 436 <div class="in-grid news-content"> 437 <div class="row"> 438 <div class="col-xs-12 col-md-6"> 439 <a href="javascript:history.back();" class="backlink"><i class="fa fa-chevron-left"></i>@Translate("BackToOverview", "Back to overview")</a> 440 </div> 441 <div class="col-xs-12 col-md-6"> 442 <div class="socialmediashare pull-right"> 443 <!-- AddToAny BEGIN --> 444 <div class="a2a_kit a2a_kit_size_32 a2a_default_style"> 445 <a class="a2a_dd" href="https://www.addtoany.com/share"></a> 446 <a class="a2a_button_facebook"></a> 447 <a class="a2a_button_twitter"></a> 448 <a class="a2a_button_google_plus"></a> 449 </div> 450 <script async src="https://static.addtoany.com/menu/page.js"></script> 451 <!-- AddToAny END --> 452 </div> 453 </div> 454 </div> 455 </div> 456 </div> 457 </div> 458 459 @SnippetStart("HeaderContent") 460 <meta property="og:title" content="@openGraphTitle" /> 461 <meta property="og:type" content="article" /> 462 <meta property="og:url" content="@openGraphUrl" /> 463 <meta property="og:image" content="@openGraphImage" /> 464 <meta property="og:description" content="@openGraphDescription" /> 465 <meta property="og:locale" content="@openGraphLocale" /> 466 <meta property="og:site_name" content="@openGraphSiteName" /> 467 <meta property="fb:app_id" content="234190117053664" /> 468 <script> 469 SEO.trackPageView("@seoPage"); 470 </script> 471 @SnippetEnd("HeaderContent") 472 473 @SnippetStart("JavascriptsBottom") 474 <script id="related-news-item" type="text/html"> 475 <div class="item"> 476 <div class="carousel-col"> 477 <div class="block clickable" data-url="/Default.aspx?ID=@GetString("ItemPublisher:Global.PageId")&itemId=@Kwpn.Models.Constants.StringConstants.ItemTypes.News:${id}"> 478 <div class="image" style="background-image:url('${image}')"> 479 <div class="date"><i class="fa fa-clock-o"></i> ${MarketplaceHelper.GetSinceDate(newsDate, "@Dynamicweb.Frontend.PageView.Current().Area.Culture.ToLower()")}</div> 480 </div> 481 <div class="bottom"> 482 <div class="text"> 483 <div class="truncate-overflow">${title}</div> 484 </div> 485 </div> 486 </div> 487 </div> 488 </div> 489 </script> 490 <script> 491 $(document).ready(function () { 492 // get related news 493 NewsHelper.GetRelatedNews('@culture', '@GetString("ItemPublisher:Item.Id.Value")', 6, 'related-news-wrapper', '@carouselId', 'horses-for-sale-results-@newsParagraphId', 'related-news-item'); 494 }); 495 </script> 496 @SnippetEnd("JavascriptsBottom") 497 } 498
Dan is JongKWPN vast en zeker iets voor jou! JongKWPN biedt een gevarieerd programma.
Word nu lid