Error executing template "Designs/Kwpn/ItemPublisher/Details/EventDetail.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_2468c57ed90e404ab17124154d0fe78d.Execute() in D:\inetpub\wwwroot\www.kwpn.nl\Files\Templates\Designs\Kwpn\ItemPublisher\Details\EventDetail.cshtml:line 10
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 Kwpn.Repository.Helpers
3 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
4
5 @{
6 var culture = GetGlobalValue("Global:Area.LongLang");
7 var cultureInfo = new CultureInfo(culture);
8
9 // get animal code from querystring or form post, sample value: p - 000306
10 var animalCode = System.Web.HttpContext.Current.Request.QueryString.Get(Translate("Horse", "Horse"));
11 if (string.IsNullOrWhiteSpace(animalCode)) { animalCode = System.Web.HttpContext.Current.Request.Form.Get(Translate("Horse", "Horse")); }
12
13 //EVENT INFO
14 var eventCode = GetString("ItemPublisher:Item.EventCode.Value");
15 var eventTitle = GetString("ItemPublisher:Item.EventTitle.Value");
16 var eventType = GetInteger("ItemPublisher:Item.EventType.Value");
17 //var eventCategories = GetString("ItemPublisher:Item.EventCategories.Value");
18
19 var eventId = GetString("ItemPublisher:Item.Field.Id");
20 var eventDescription = GetString("ItemPublisher:Item.EventDescription.Value");
21 var eventDateFrom = GetDate("ItemPublisher:Item.EventDateFrom.Value");
22 var eventDateTo = GetDate("ItemPublisher:Item.EventDateTo.Value");
23 var eventDateTime = FormatHelpers.GetDateTime(eventDateFrom, eventDateTo, cultureInfo, Translate("EventDateDevider", "to"));
24
25 // REGISTRATION INFO
26 var eventRegistrationDateFrom = GetDate("ItemPublisher:Item.RegistrationDateFrom.Value");
27 var eventRegistrationDateTo = GetDate("ItemPublisher:Item.RegistrationDateTo.Value");
28 var currentParticipations = GetInteger("ItemPublisher:Item.CountOfParticipations");
29 var maxParticipations = GetInteger("ItemPublisher:Item.MaximumCountOfParticipations");
30
31 // LOCATION INFO
32 var googleMapsApiKey = Kwpn.Models.Config.ExtraConfig.ExtraConfiguration.GoogleSettings.GoogleApiKey;
33 var eventStableName = GetString("ItemPublisher:Item.EventStableOrCompanyName.Value");
34 var eventAddress = GetString("ItemPublisher:Item.EventAddress.Value");
35 var eventPostalcode = GetString("ItemPublisher:Item.EventPostalCode.Value");
36 var eventPlace = GetString("ItemPublisher:Item.EventPlace.Value");
37 if (!string.IsNullOrWhiteSpace(eventPlace)) { eventTitle = string.Format("{0}, {1}", eventTitle, eventPlace); }
38 var eventCountry = GetString("ItemPublisher:Item.EventCountry.Value");
39 var eventGeoLocation = GetValue("ItemPublisher:Item.EventGeoLocation.Value");
40 var latitude = GetDouble("ItemPublisher:Item.EventGeoLocation.Value.Lat");
41 var longtitude = GetDouble("ItemPublisher:Item.EventGeoLocation.Value.Lng");
42 var showMap = (!string.IsNullOrWhiteSpace(googleMapsApiKey) && eventGeoLocation != null && (latitude != 0.0) && longtitude != 0.0);
43
44 // CONTACT INFO
45 var secretaryCode = GetString("ItemPublisher:Item.SecretaryCode.Value");
46 var secretaryName = GetString("ItemPublisher:Item.SecretaryName.Value");
47 var secretaryPhone = GetString("ItemPublisher:Item.SecretaryPhone.Value");
48 var secretaryEmail = GetString("ItemPublisher:Item.SecretaryEmail.Value");
49 var secretaryWebsite = GetString("ItemPublisher:Item.SecretaryWebsite.Value");
50 var secretaryFacebook = GetString("ItemPublisher:Item.SecretaryFacebook.Value");
51
52 // DOWNLOADS
53 var startList = GetString("ItemPublisher:Item.StartList.Value");
54 var results = GetString("ItemPublisher:Item.Results.Value");
55 var showParticipantList = KwpnEventHelper.ShowParticipantList(culture, startList, eventType);
56
57 // EXTRA
58 var notification = GetString("ItemPublisher:Item.Notification.Value");
59
60 string noteText = KwpnEventHelper.CreateEventNoteText(
61 culture,
62 GetString("ItemPublisher:Item.NoteText.Value"),
63 eventCode,
64 currentParticipations,
65 maxParticipations,
66 eventDateTo,
67 eventRegistrationDateFrom,
68 eventRegistrationDateTo
69 );
70
71 // SEO: seoPage is used as base url for virtual pageviews
72 var seoPage = GetGlobalValue("Global:Pageview.Url");
73 if (seoPage.Contains("?"))
74 {
75 seoPage = seoPage.Split('?')[0];
76 }
77 seoPage = string.Format("{0}/{1}/{2}", seoPage, GetString("ItemPublisher:Item.Field.Id"), GetString("ItemPublisher:Item.EventTitle.Value").Replace(" ", "-").ToLower().UrlEncode());
78
79 var isCupEvent = GetBoolean("ItemPublisher:Item.IsCupEvent") && GetDouble("ItemPublisher:Item.RegistrationFee") > 0;
80
81 <div class="break-grid content-container page-content-aside event-detail">
82 <div class="break-grid-background">
83 <div class="in-grid">
84 <div class="row">
85 <div class="background-head-aside-xs">
86 <div class="background-head-xs">
87 <div class="page-header">
88 <div class="col-xs-12">
89 <div class="row">
90 <div class="col-xs-12" style="min-height: 86px">
91 <h1>@eventTitle</h1>
92 </div>
93 </div>
94 <div class="row">
95 @if (!string.IsNullOrWhiteSpace(noteText))
96 {
97 <div class="col-xs-6 note hidden-xs hidden-sm">
98 @noteText
99 </div>
100 }
101 </div>
102 <div class="row">
103 @if (!string.IsNullOrWhiteSpace(noteText))
104 {
105 <div class="col-xs-12 hidden-md hidden-lg note">
106 @noteText
107 </div>
108 }
109 </div>
110 @if (!string.IsNullOrWhiteSpace(notification))
111 {
112 <div class="row hidden-md hidden-lg">
113 <div class="col-xs-12">
114 <div class="notification">
115 @notification
116 </div>
117 </div>
118 </div>
119 }
120 </div>
121 </div>
122 </div>
123
124 <div class="background-aside-xs">
125 <aside class="col-xs-12 col-md-4 col-md-push-8 event-detail-aside">
126
127 <div class="page-aside">
128 @{
129 if (
130 !string.IsNullOrWhiteSpace(startList) ||
131 !string.IsNullOrWhiteSpace(results) ||
132 (!eventRegistrationDateFrom.Equals(DateTime.MinValue) && !eventRegistrationDateTo.Equals(DateTime.MinValue)))
133 {
134 <h2 id="actionsanddownloads-aside-title"
135 data-childId="actionsanddownloads-aside-content"
136 class="notactive">
137 <span>@Translate("ActionsAndDownloads", "Actions and downloads")</span>
138 </h2>
139
140 <ul id="actionsanddownloads-aside-content" class="aside-content notactive">
141 @if (!string.IsNullOrWhiteSpace(eventCode))
142 {
143 if (showParticipantList && !isCupEvent)
144 {
145 <li><a href='javascript:void(0);' id="showparticipantlist">@Translate("Participants", "Ingeschreven deelnemers")</a></li>
146 }
147 if (eventRegistrationDateFrom != null && eventRegistrationDateFrom.Year > 1900)
148 {
149 if (
150 maxParticipations > 0 &&
151 currentParticipations >= maxParticipations &&
152 eventDateTo >= DateTime.Now.Date &&
153 eventRegistrationDateTo.Date >= DateTime.Now.Date)
154 {
155 <li>@Translate("RegistrationFull", "Registration full")</li>
156 }
157 else
158 {
159 if (eventRegistrationDateFrom.Date < DateTime.Now.Date &&
160 eventRegistrationDateTo.Date < DateTime.Now.Date &&
161 eventDateTo >= DateTime.Now.Date)
162 {
163 <li>@Translate("RegistrationClosed", "Registration closed")</li>
164 }
165 else if (eventRegistrationDateFrom.Date <= DateTime.Now.Date &&
166 eventRegistrationDateTo.Date >= DateTime.Now.Date &&
167 eventDateTo >= DateTime.Now.Date)
168 {
169 if (isCupEvent)
170 {
171 <li class="no-bullet">
172 <a class="orange_balloon_link" href="@HorseHelper.GetHorseInfoPageUrl(
173 GetGlobalValue("Global:Area.LongLang"),
174 animalCode,
175 Translate("ActionLink_SignUp_CupEvent", "CupEventSignUp"),
176 eventId)">@Translate("SignUp", "Sign up")<i class="fa fa-chevron-right"></i></a>
177 </li>
178 }
179 else
180 {
181 if (Kwpn.Repository.Repositories.KwpnUsers.CurrentUser() == null)
182 {
183 <li>@Translate("LogInToRegister", "Log in to register")</li>
184 }
185 else if (Kwpn.Repository.Repositories.KwpnUsers.CurrentUser().IsMember)
186 {
187 <li class="no-bullet">
188 <a class="orange_balloon_link" href="@HorseHelper.GetHorseInfoPageUrl(
189 GetGlobalValue("Global:Area.LongLang"),
190 animalCode,
191 Translate("ActionLink_SignUp_InspectionEvent", "EventSignUp"),
192 eventId)">@Translate("SignUp", "Sign up")<i class="fa fa-chevron-right"></i></a>
193 </li>
194 }
195 else
196 {
197 <li>@Translate("RegistrationForMembersOnly", "Registration for full members only")</li>
198 }
199 }
200
201
202
203 }
204 }
205 }
206 }
207
208 @if (!string.IsNullOrWhiteSpace(startList))
209 {
210 <li><a href='@startList' target="_blank">@Translate("StartList", "Start list")</a></li>
211 }
212
213 @if (!string.IsNullOrWhiteSpace(results))
214 {
215 <li><a href='@results' target="_blank">@Translate("Results", "Results")</a></li>
216 }
217 </ul>
218 }
219
220 if (!string.IsNullOrWhiteSpace(secretaryName) || !string.IsNullOrWhiteSpace(secretaryWebsite))
221 {
222 <h2 id="contactinfo-aside-title" data-childId="contactinfo-aside-content" class="notactive"><span>@Translate("ContactInformation", "Contact information")</span></h2>
223 <ul id="contactinfo-aside-content" class="aside-content notactive">
224 @if (!string.IsNullOrWhiteSpace(secretaryName))
225 {
226 <li class="contact-name">@secretaryName</li>
227 }
228 @if (!string.IsNullOrWhiteSpace(secretaryPhone))
229 {
230 <li class="contact-phone"><a href='tel:@secretaryPhone'>@secretaryPhone</a></li>
231 }
232 @if (!string.IsNullOrWhiteSpace(secretaryEmail))
233 {
234 <li class="contact-email"><a href='mailto:@secretaryEmail'>@secretaryEmail</a></li>
235 }
236 @if (!string.IsNullOrWhiteSpace(secretaryWebsite))
237 {
238 <li class="contact-website"><a href='@secretaryWebsite' target="_blank">@secretaryWebsite</a></li>
239 }
240 @if (!string.IsNullOrWhiteSpace(secretaryFacebook))
241 {
242 <li class="contact-facebook"><a href='@secretaryFacebook' target="_blank">@secretaryFacebook</a></li>
243 }
244 </ul>
245 }
246 }
247 </div>
248
249 <!-- /204473129/AgendaDetail/Banner1 -->
250 <div id='div-gpt-ad-banner1-1' class="google-container google-container--size--b google-container--center google-container--margin-top">
251 <script>
252 googletag.cmd.push(function () { googletag.display('div-gpt-ad-banner1-1'); });
253 </script>
254 </div>
255
256 </aside>
257 </div>
258 </div>
259
260 <article class="col-xs-12 col-md-7 col-md-pull-4 page-content event-detail-output">
261
262 <div class="row">
263 <div class="col-xs-12 event-info">
264 <i class="fa fa-clock-o"></i> @eventDateTime
265 @*todo: region information, not available at the moment*@
266 </div>
267 </div>
268
269 @if (!string.IsNullOrWhiteSpace(notification))
270 {
271 <div class="row hidden-xs hidden-sm">
272 <div class="col-xs-12 well notification">
273 @notification
274 </div>
275 </div>
276 }
277
278 @if (!string.IsNullOrWhiteSpace(eventDescription))
279 {
280 <div class="row">
281 <div class="col-xs-12 description">
282 @eventDescription
283 </div>
284 </div>
285 }
286
287
288 @if (!string.IsNullOrWhiteSpace(eventAddress) || showMap)
289 {
290 var mapsImage = "";
291
292 if (showMap)
293 {
294 latitude = GetDouble("ItemPublisher:Item.EventGeoLocation.Value.Lat") / 10000000;
295 longtitude = GetDouble("ItemPublisher:Item.EventGeoLocation.Value.Lng") / 10000000;
296
297 mapsImage = string.Format("<img src='https://maps.googleapis.com/maps/api/staticmap?center={1},{2}&zoom=15&size=800x800&markers=color:blue%7C{1},{2}&key={0}' style='width:100%;' />",
298 googleMapsApiKey,
299 latitude,
300 longtitude);
301 }
302
303 <div class="row">
304
305 <div class="col-xs-12 geolocation">
306
307 @if (!string.IsNullOrWhiteSpace(eventAddress))
308 {
309 var address = eventAddress;
310 var googleDirectionLink = address;
311
312 if (!string.IsNullOrWhiteSpace(eventStableName))
313 {
314 address = string.Format("<b>{0}</b><br />{1}", eventStableName, address);
315 }
316
317 if (!string.IsNullOrWhiteSpace(eventPlace))
318 {
319 var place = eventPlace;
320 if (!string.IsNullOrWhiteSpace(eventPostalcode))
321 {
322 place = string.Format("{0} {1}", eventPostalcode, place);
323 googleDirectionLink = string.Format("{0}+{1}", googleDirectionLink, eventPostalcode);
324 }
325 address = string.Format("{0}<br />{1}", address, place);
326 googleDirectionLink = string.Format("{0}+{1}", googleDirectionLink, place);
327 }
328 googleDirectionLink = string.Format("https://maps.google.com?daddr={0}", googleDirectionLink);
329
330 if (!string.IsNullOrWhiteSpace(eventCountry))
331 {
332 address = string.Format("{0}<br />{1}", address, eventCountry);
333 }
334
335 <div class="location @if (showMap)
336 {<text>well</Text>}">
337
338 <h3>@Translate("Location", "Location")</h3>
339
340 <p>@address</p>
341
342 <p>
343 <a href='@googleDirectionLink' target="_blank" class="orange_arrow_link">@Translate("Navigate", "Navigate")</a>
344 </p>
345
346 </div>
347 }
348 @mapsImage
349 </div>
350 </div>
351 }
352
353 <div class="row hidden" id="participantsList">
354 <div class="col-xs-12">
355
356 <h2>@Translate("Participants", "Participants")</h2>
357
358 @{
359 var participantsIntro = GetString("ItemPublisher:Item.ParticipantListIntro");
360 if (!string.IsNullOrWhiteSpace(participantsIntro))
361 {
362 @participantsIntro
363 }
364 }
365
366 <div class="table-responsive">
367 <a name="participants"></a>
368 <table id="participantsTable">
369 <thead>
370 <tr>
371 <th data-sortOn="HorseName" data-sortBy="Asc">@Translate("MyInspections_HorseName", "Horse name")<i class="fa"></i></th>
372 <th data-sortOn="Rider" data-sortBy="Asc">@Translate("MyInspections_Rider", "Rider")<i class="fa"></i></th>
373 <th data-sortOn="Father" data-sortBy="Asc">@Translate("MyInspections_SireDamSire", "Sire x Dam Sire")<i class="fa"></i></th>
374 <th data-sortOn="CatalogueNumber" data-sortBy="Asc">@Translate("MyInspections_CatalogueNumberShort", "Cat. No.")<i class="fa"></i></th>
375 </tr>
376 <tr>
377 <td colspan="4"><i class="fa fa-spinner fa-spin"></i></td>
378 </tr>
379 </thead>
380 </table>
381 </div>
382
383 </div>
384 </div>
385
386 <div class="row">
387 <div class="col-xs-12">
388 <a href="javascript:history.back();" class="backlink"><i class="fa fa-chevron-left"></i>@Translate("BackToOverview", "Back to overview")</a>
389 </div>
390 </div>
391
392 </article>
393
394 </div>
395 </div>
396 </div>
397 </div>
398
399 if (showParticipantList)
400 {
401 @SnippetStart("JavascriptsBottom")
402
403 <script id="participantRowTemplate" type="text/html">
404 <tr>
405 <td>${Animalname}</td>
406 <td>${AmazoneRuiter}</td>
407 <td><span class="nowrap">${Father}</span> x <span class="nowrap">${MothersFather}</span></td>
408 <td>${Cataloguenumber}</td>
409 </tr>
410 </script>
411
412 <script id="noParticipantsTemplate" type="text/html">
413 <tr>
414 <td colspan="4">@Translate("Participants_NoParticipantsFound", "No registered participants.")</td>
415 </tr>
416 </script>
417
418 <script>
419
420 var sortOn = "HorseName";
421 var sortBy = "Asc";
422
423 function scrollToAnchor(aid) {
424 var aTag = $("a[name='" + aid + "']");
425 $('html,body').animate({ scrollTop: aTag.offset().top }, 'slow');
426 }
427
428 function GetParticipants(refresh) {
429 var participantsApi = "/kwpnwebapi/inspections/getparticipants/@culture/@eventCode/" + sortOn + "/" + sortBy + "/" + refresh;
430 $.getJSON(participantsApi).done(function (result, status, metaData) {
431 if (result == null || result.length <= 0) {
432 ShowNoData();
433 } else {
434 FillTable(result);
435 }
436 }).fail(function (jqxhr, textStatus, error) {
437 var err = textStatus + ", " + error;
438 console.error("Request GetParticipants Failed: " + err);
439 });
440 return false;
441 }
442
443 function ShowNoData() {
444 $('#participantsTable tr:gt(0)').remove();
445 $("#noParticipantsTemplate").tmpl().appendTo("#participantsTable");
446 }
447
448 function FillTable(data) {
449 $('#participantsTable th.sorted').removeClass("sorted").find('i').removeClass("fa-chevron-circle-down fa-chevron-circle-up");
450 var directionClass = "fa-chevron-circle-down";
451 if (sortBy === "Desc") { directionClass = "fa-chevron-circle-up"; }
452 $('#participantsTable th[data-sortOn="' + sortOn + '"]').addClass("sorted").find('i').addClass(directionClass);
453 $('#participantsTable tr:gt(0)').remove();
454 $("#participantRowTemplate").tmpl(data).appendTo("#participantsTable");
455 }
456
457 $(document).ready(function() {
458
459 $("#showparticipantlist").off("click").on("click", function() {
460 GetParticipants("false");
461 $("#participantsList").removeClass("hidden");
462 scrollToAnchor("participants");
463 });
464
465 $("#participantsTable th")
466 .off("click")
467 .on("click", function() {
468 if (sortOn === $(this).data("sorton")) {
469 //reverse direction when same sortOn click again
470 if ($(this).data("sortby") === "Asc") {
471 $(this).data("sortby", "Desc")
472 } else {
473 $(this).data("sortby", "Asc")
474 }
475 }
476 sortOn = $(this).data("sorton");
477 sortBy = $(this).data("sortby");
478 GetParticipants("false");
479 });
480
481 SEO.trackPageView("@seoPage");
482
483 });
484 </script>
485 @SnippetEnd("JavascriptsBottom")
486 }
487 }