Error executing template "Designs/Blogtheme/_parsed/BlogFront.parsed.cshtml"
System.IO.IOException: The process cannot access the file 'E:\dynamicweb.net\Solutions\Dynamicweb\cboll.net.dynamicweb-cms.com\Files\Templates\Designs\Blogtheme\json\AllEntitiesTest.json' 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, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
   at System.IO.File.InternalReadAllText(String path, Encoding encoding, Boolean checkHost)
   at CompiledRazorTemplates.Dynamic.RazorEngine_7bdc96204c884e8dae96fdc7bcda1d3d.Execute() in E:\dynamicweb.net\Solutions\Dynamicweb\cboll.net.dynamicweb-cms.com\Files\Templates\Designs\Blogtheme\_parsed\BlogFront.parsed.cshtml:line 85
   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.b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @using System.Web; 2 @using System.Net; 3 @using Newtonsoft.Json; 4 @using Newtonsoft.Json.Linq; 5 6 @functions { 7 public class RootObject 8 { 9 public string tableName { get; set; } 10 public List<Entity> entityList { get; set; } 11 } 12 13 public class Entity 14 { 15 public string Id { get; set; } 16 public int Sort { get; set; } 17 public string ItemInstanceType { get; set; } 18 public string Title { get; set; } 19 public string Type { get; set; } 20 public string Description { get; set; } 21 public string Image { get; set; } 22 public string Culture { get; set; } 23 public string Greek_Subcultures { get; set; } 24 public string Roman_Republican_Subcultures { get; set; } 25 public string Roman_Imperial_Subcultures { get; set; } 26 public string Celtic_Subcultures { get; set; } 27 public string Roman_Provincial_Subcultures { get; set; } 28 public string Islamic_Subcultures { get; set; } 29 public string Eastern_Subcultures { get; set; } 30 public string European_Medieval_Subcultures { get; set; } 31 public string Indian_Subcultures { get; set; } 32 public string Byzantine_Subcultures { get; set; } 33 public string Phoenician_Subcultures { get; set; } 34 public string Chinese_Subcultures { get; set; } 35 public string Zone { get; set; } 36 public string Region { get; set; } 37 public string Location { get; set; } 38 public string Modern_Location { get; set; } 39 public string Ruler_Title { get; set; } 40 public string Ruler_Title_English { get; set; } 41 public string Epithet { get; set; } 42 public string EpithetEnglish { get; set; } 43 public string Domain { get; set; } 44 public string Doman_English { get; set; } 45 public string StartOf_Rule { get; set; } 46 public string EndOf_Rule { get; set; } 47 public string OwnerID { get; set; } 48 public string OwnerName { get; set; } 49 public string ShortDescription { get; set; } 50 public string Focus { get; set; } 51 public string IsPatron { get; set; } 52 public string IsFolder { get; set; } 53 public string IsDeleted { get; set; } 54 public string MetalsList { get; set; } 55 public string MintedByList { get; set; } 56 public string IncludeInMenu { get; set; } 57 public string NameReadable { get; set; } 58 public string PreviousText { get; set; } 59 public string NextText { get; set; } 60 public string RelevantPageID { get; set; } 61 public string RelevantParagraphID { get; set; } 62 public string RelevantAreaID { get; set; } 63 } 64 65 } 66 67 68 <!DOCTYPE html> 69 <html lang="en"> 70 71 72 73 @{ 74 string[] stringSeparators = new string[] { ", ", " and ", "|", "," }; 75 string User = @GetGlobalValue("Global:Extranet.UserID"); 76 string SortValue = "CustomSortValue"; 77 string CollectionLink = @GetGlobalValue("Global:Request.Host") + "/Categories?BelongsToUser=" + @GetGlobalValue("Global:Extranet.UserID") + "&SortBy=" + @SortValue; 78 79 string Username = ""; 80 string SearchString = System.Web.HttpContext.Current.Request.QueryString["Search"]; 81 } 82 83 @{ 84 85 string AllEntitiesRaw = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("/Files/Templates/Designs/Blogtheme/json/AllEntitiesTest.json")); 86 int AllEntitiesRawLength = AllEntitiesRaw.Length; 87 88 var AllEntitiesJSON = JsonConvert.DeserializeObject<List<Entity>>(@AllEntitiesRaw.Substring(49, @AllEntitiesRawLength - 55)); 89 90 } 91 92 93 @if (!string.IsNullOrWhiteSpace(GetGlobalValue("Global:Extranet.UserName"))) 94 { 95 Username = GetGlobalValue("Global:Extranet.UserName"); 96 } 97 else 98 { 99 Username = ""; 100 } 101 102 <head> 103 104 <meta charset="utf-8"> 105 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 106 <meta name="viewport" content="width=device-width, initial-scale=1"> 107 @RenderSnippet("OGData") 108 109 <!-- CSS --> 110 <link href="/Files/Templates/Designs/Blogtheme/vendor/bootstrap-4.4.1/css/bootstrap.css" rel="stylesheet"> 111 <link href="/Files/Templates/Designs/Blogtheme/css/clean-blog.css" rel="stylesheet"> 112 <link href="/Files/Templates/Designs/Blogtheme/css/CoinSiteStyles.css" rel="stylesheet"> 113 <link href="/Files/Templates/Designs/Blogtheme/css/easy-autocomplete.css" rel="stylesheet"> 114 115 <!-- Custom Fonts --> 116 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous"> 117 <link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'> 118 <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'> 119 120 <!-- jQuery & JavaScript --> 121 <script src="/Files/Templates/Designs/Blogtheme/vendor/jquery/jquery.min.js"></script> 122 <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 123 <script src="/Files/Templates/Designs/Blogtheme/vendor/bootstrap-4.4.1/js/bootstrap.min.js"></script> 124 <script src="/Files/Templates/Designs/Blogtheme/js/jquery.easy-autocomplete.js"></script> 125 126 <!-- New Menu --> 127 <style> 128 .dropdown-submenu { 129 position: static; 130 font-size:14px; 131 } 132 133 .dropdown-submenu a::after { 134 transform: rotate(-90deg); 135 } 136 137 .dropdown-submenu .dropdown-menu { 138 top: 0; 139 left: 100%; 140 margin-left: .1rem; 141 margin-right: .1rem; 142 font-size:14px; 143 } 144 </style> 145 146 147 <!-- Google Analytics --> 148 <script> 149 (function (i, s, o, g, r, a, m) { 150 i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { 151 (i[r].q = i[r].q || []).push(arguments) 152 }, i[r].l = 1 * new Date(); a = s.createElement(o), 153 m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) 154 })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); 155 156 ga('create', 'UA-88475304-1', 'auto'); 157 ga('send', 'pageview'); 158 </script> 159 160 161 162 <!-- CollectionLink to copy --> 163 @*<input class="form-control input-lg" style="opacity:0;" type="text" id="copy-input" value='@CollectionLink'>*@ 164 165 @GetValue("CopyRightNotice") 166 @GetValue("MetaTags") 167 @GetValue("Stylesheets") 168 @GetValue("Javascripts") 169 </head> 170 171 <body> 172 173 <!-- Google Tag Manager (noscript) --> 174 <noscript> 175 <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5SVNCFK" height="0" width="0" style="display:none;visibility:hidden"></iframe> 176 </noscript> 177 178 179 <!-- Navigation --> 180 181 182 <div class="navbar navbar-expand-xl navbar-light fixed-top bg-white"> 183 <div class="container"> 184 <a class="navbar-brand" title="ancientcoingallery.net"><img src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Blogtheme/img/Antoninianus.jpg&Format=jpg&Width=0&Height=60&Resolution=300&Compression=99&Crop=0"></a> 185 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> 186 <span class="navbar-toggler-icon"></span> 187 </button> 188 189 <div class="navbar-collapse collapse" id="navbarSupportedContent"> 190 <ul class="navbar-nav mr-auto mt-2 mt-lg-0"> 191 <!-- Home --> 192 <li class="nav-item font-menu"> 193 <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> 194 </li> 195 <!-- Authorities --> 196 <li class="nav-item dropdown"> 197 <a class="nav-link dropdown-toggle font-menu" href="" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Authority<span class="caret"></span></a> 198 <ul class="dropdown-menu"> 199 @foreach (var entity in AllEntitiesJSON.OrderBy(x => x.Title)) 200 { 201 if (@entity.Type == "Category") 202 { 203 string[] CategoryTitleList = entity.Title.Split(stringSeparators, StringSplitOptions.None); 204 string CategoryTitle = CategoryTitleList[0].Replace("_", " "); 205 206 <li class="dropdown-submenu"> 207 <a class="dropdown-item dropdown-toggle" href="#">@CategoryTitle</a> 208 <ul class="dropdown-menu"> 209 <li><a class="dropdown-item" href="/Default.aspx?ID=8&Category=@CategoryTitleList[0]"><b>All @CategoryTitle</b></a></li> 210 @foreach (var subentity in AllEntitiesJSON.OrderBy(x => x.Sort)) 211 { 212 if (@subentity.Culture == CategoryTitleList[0] && @subentity.Type == "Subcategory") 213 { 214 string[] SubcategoryTitleList = subentity.Title.Split(stringSeparators, StringSplitOptions.None); 215 string SubcategoryTitle = SubcategoryTitleList[0].Replace("_", " "); 216 <li class="dropdown-submenu"> 217 <a class="dropdown-item dropdown-toggle" href="#">@SubcategoryTitle</a> 218 <ul class="dropdown-menu"> 219 <li><a class="dropdown-item" href='/Default.aspx?ID=8&Subcategory=@SubcategoryTitleList[0]&Category=@subentity.Culture'><b>All @SubcategoryTitle</b></a></li> 220 @foreach (var authority in AllEntitiesJSON.OrderBy(x => x.Sort)) 221 { 222 223 if (authority.Type == "Ruler" & authority.Roman_Republican_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 224 authority.Type == "Ruler" & authority.Roman_Imperial_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 225 authority.Type == "Ruler" & authority.Celtic_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 226 authority.Type == "Ruler" & authority.Roman_Provincial_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 227 authority.Type == "Ruler" & authority.Islamic_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 228 authority.Type == "Ruler" & authority.Eastern_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 229 authority.Type == "Ruler" & authority.European_Medieval_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 230 authority.Type == "Ruler" & authority.Indian_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 231 authority.Type == "Ruler" & authority.Byzantine_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 232 authority.Type == "Ruler" & authority.Phoenician_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] || 233 authority.Type == "Ruler" & authority.Chinese_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0]|| 234 authority.Type == "Ruler" & authority.Greek_Subcultures == SubcategoryTitleList[0] && authority.Culture == CategoryTitleList[0] 235 ) 236 { 237 if (authority.Culture == "Roman_Imperial" || authority.Culture == "Roman_Provincial") 238 { 239 <li><a class="dropdown-item" href="/Default.aspx?ID=8&Ruler=@authority.Title">@authority.Title</a></li> 240 } 241 else 242 { 243 <li><a class="dropdown-item" href="/Default.aspx?ID=8&Ruler=@authority.Title&Category=@authority.Culture">@authority.Title</a></li> 244 } 245 246 } 247 } 248 </ul> 249 </li> 250 } 251 } 252 </ul> 253 </li> 254 } 255 } 256 257 258 </ul> 259 </li> 260 <!-- Geography --> 261 <li class="dropdown"> 262 <a class="nav-link dropdown-toggle font-menu" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Geography<span class="caret"></span></a> 263 <ul class="dropdown-menu"> 264 @foreach (var zone in AllEntitiesJSON.OrderBy(x => x.Title)) 265 { 266 if (zone.Type == "Zone") 267 { 268 string[] ZoneTitleList = zone.Title.Split(stringSeparators, StringSplitOptions.None); 269 string ZoneTitle = ZoneTitleList[0].Replace("_", " "); 270 271 <li class="dropdown-submenu"> 272 <a class="dropdown-item dropdown-toggle" href="#">@ZoneTitle</a> 273 <ul class="dropdown-menu"> 274 <li><a class="dropdown-item" href="/Default.aspx?ID=8&Zone=@ZoneTitleList[0]"><b>All @ZoneTitle</b></a></li> 275 @foreach (var region in AllEntitiesJSON.OrderBy(x => x.Title)) 276 { 277 if (region.Zone == @ZoneTitleList[0] && region.Type == "Region") 278 { 279 string[] RegionTitleList = region.Title.Split(stringSeparators, StringSplitOptions.None); 280 string RegionTitle = RegionTitleList[0]; 281 <li> 282 <a class="dropdown-item dropdown-toggle" href="#">@region.Title</a> 283 <ul class="dropdown-menu"> 284 <li><a class="dropdown-item" href='/Default.aspx?ID=8&Region=@RegionTitleList[0]'><b>All @RegionTitle</b></a></li> 285 @foreach (var mint in AllEntitiesJSON.OrderBy(x => x.Title)) 286 { 287 string[] MintTitleList = mint.Title.Split(stringSeparators, StringSplitOptions.None); 288 string MintTitle = MintTitleList[0].Replace("_", " "); 289 if (mint.Region == @RegionTitleList[0] && mint.Type == "Mint") 290 { 291 <li><a class="dropdown-item" href="/Default.aspx?ID=8&Mint=@mint.Title">@MintTitle</a></li> 292 } 293 } 294 </ul> 295 </li> 296 } 297 } 298 </ul> 299 </li> 300 } 301 } 302 303 304 </ul> 305 </li> 306 <!-- Denominations --> 307 <li class="dropdown"> 308 <a class="nav-link dropdown-toggle font-menu" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Denominations<span class="caret"></span></a> 309 <ul class="dropdown-menu"> 310 @foreach (var entity in AllEntitiesJSON.OrderBy(x => x.Title)) 311 { 312 if (@entity.Type == "Category") 313 { 314 string[] CategoryTitleList = entity.Title.Split(stringSeparators, StringSplitOptions.None); 315 string CategoryTitle = CategoryTitleList[0].Replace("_", " "); 316 317 if (CategoryTitle == "Greek" || @CategoryTitle == "Roman Imperial") 318 { 319 <li class="dropdown-submenu"> 320 <a class="dropdown-item dropdown-toggle" href="#">@CategoryTitle </a> 321 <ul class="dropdown-menu"> 322 @foreach (var subentity in AllEntitiesJSON.OrderBy(x => x.Title)) 323 { 324 if (@subentity.Type == "Metal" && subentity.IncludeInMenu == "yes") 325 { 326 string title2 = subentity.Title; 327 <li> 328 <a class="dropdown-item dropdown-toggle" href="#">@subentity.NameReadable </a> 329 <ul class="dropdown-menu"> 330 <li><a class="dropdown-item" href='/Default.aspx?ID=8&Metal=@title2.Replace(" ","_")'><b>All @title2</b></a></li> 331 @foreach (var subsubentity in AllEntitiesJSON.OrderBy(x => x.Title)) 332 { 333 if (@subsubentity.Type == "Denomination" && subentity.MintedByList != null) 334 { 335 string[] metalsList; 336 string rawMetals = @subsubentity.MetalsList; 337 metalsList = rawMetals.Split(stringSeparators, StringSplitOptions.None); 338 string[] mintedByList; 339 string rawmintedBy = @subsubentity.MintedByList; 340 mintedByList = rawmintedBy.Split(stringSeparators, StringSplitOptions.None); 341 <span></span> 342 if (@metalsList.Contains(@title2.Replace(" ", "_")) && @mintedByList.Contains(@CategoryTitleList[0])) 343 { 344 <li><a class="dropdown-item" href='/Default.aspx?ID=8&Denomination=@subsubentity.Title&Category=@CategoryTitleList[0]&Metal=@title2.Replace(" ","_")'>@subsubentity.Title</a></li> 345 } 346 347 } 348 } 349 </ul> 350 </li> 351 } 352 } 353 </ul> 354 </li> 355 } 356 else 357 { 358 <li class="dropdown-submenu"> 359 <a class="dropdown-item dropdown-toggle" href="#">@CategoryTitle</a> 360 <ul class="dropdown-menu"> 361 @foreach (var denomination in AllEntitiesJSON.OrderBy(x => x.Title)) 362 { 363 if (denomination.Type == "Denomination" && denomination.MintedByList != null) 364 { 365 string[] mintedByList; 366 string rawmintedBy = denomination.MintedByList; 367 mintedByList = rawmintedBy.Split(stringSeparators, StringSplitOptions.None); 368 <span></span> 369 string[] DenominationTitleList = denomination.Title.Split(stringSeparators, StringSplitOptions.None); 370 string DenominationTitle = DenominationTitleList[0].Replace("_", " "); 371 if (@mintedByList.Contains(@CategoryTitleList[0])) 372 { 373 <li><a class="dropdown-item" href='/Default.aspx?ID=8&Denomination=@denomination.Title&Category=@CategoryTitleList[0]'>@DenominationTitle</a></li> 374 } 375 } 376 } 377 </ul> 378 </li> 379 380 } 381 } 382 } 383 384 </ul> 385 </li> 386 387 <!-- Other --> 388 <li class="dropdown"> 389 <a class="nav-link dropdown-toggle font-menu" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Other<span class="caret"></span></a> 390 <ul class="dropdown-menu"> 391 392 <li class="dropdown-submenu"> 393 <a class="dropdown-item dropdown-toggle" href="#">Collections</a> 394 <ul class="dropdown-menu"> 395 <li><a class="dropdown-item" href="/Default.aspx?ID=1095"><b>All Collections</b></a></li> 396 @foreach (var entity in AllEntitiesJSON.OrderBy(x => x.Title)) 397 { 398 if (@entity.Type == "Collection" && @entity.IsPatron == "true") 399 { 400 string title1 = entity.Title; 401 <li><a class="dropdown-item" href='/Default.aspx?ID=8&BelongsToUser=@entity.OwnerID&SortBy=CustomSortValue'><i class="fab fa-patreon fa-1" aria-hidden="true"></i> @entity.Title</a></li> 402 } 403 } 404 </ul> 405 </li> 406 <li class="divider"></li> 407 <li><a class="dropdown-item" href="Default.aspx?ID=55"> About </a></li> 408 409 </ul> 410 </li> 411 412 </ul> 413 <!-- Login --> 414 <ul class="navbar navbar-nav navbar-right"> 415 <li> 416 417 <form action="/Search"> 418 <div class="search-container"> 419 @if (!string.IsNullOrWhiteSpace(@SearchString)) 420 { 421 <input class="font-menu" type="text" placeholder="@SearchString" name="Search"> 422 } 423 else 424 { 425 <input class="font-menu" type="text" placeholder="Search.." name="Search"> 426 } 427 <button class="btn" type="submit"><i class="fas fa-search"></i></button> 428 </div> 429 </form> 430 431 </li> 432 <li class="dropdown"> 433 <a class="nav-link dropdown-toggle font-menu" href="#" data-toggle="dropdown" class="dropdown-toggle font-subtitle"><i class="fa fa-user" aria-hidden="true"></i> @Username </a> 434 <ul class="dropdown-menu"> 435 @if (!string.IsNullOrWhiteSpace(GetGlobalValue("Global:Extranet.UserName"))) 436 { 437 <li><a class="dropdown-item" tabindex="-1" href="/Default.aspx?ID=12">Profile</a></li> 438 <li><a class="dropdown-item" tabindex="-1" href="/Default.aspx?ID=8&BelongsToUser=@User&SortBy=CustomSortValue">Collection </a></li> 439 440 <li class="divider"></li> 441 <li><a class="dropdown-item" tabindex="-1" href="/Admin/Public/ExtranetLogoff.aspx">Log out</a></li> 442 } 443 else 444 { 445 <li><a class="dropdown-item" tabindex="-1" href="/Default.aspx?ID=64">Register</a></li> 446 <li class="divider"></li> 447 <li><a class="dropdown-item" tabindex="-1" href="/Default.aspx?ID=12">Login</a></li> 448 449 } 450 451 </ul> 452 </li> 453 454 </ul> 455 </div> 456 457 </div> 458 </div> 459 460 461 <!-- Main Content --> 462 <div class="container" style="margin-top:100px;padding-top:25px;box-shadow: 10px 10px 160px 10px rgba(219,216,219,0.58);"> 463 464 465 466 467 <!-- Main Content --> 468 469 <div class="col-lg-12 col-md-12 row" style="margin-bottom:20px;" id="maincontent">@GetValue("DwContent(maincontent)")</div> 470 471 472 </div> 473 474 475 476 477 <!-- Footer --> 478 <footer> 479 <div class="container"> 480 481 <div class="row"> 482 <div class="col-lg-12 col-md-12"> 483 <ul class="text-center"> 484 <li class="list-inline-item"> 485 <a href="https://www.facebook.com/groups/ancientcoingallery.net/"> 486 <span class="fa-stack fa-lg"> 487 <i class="fa fa-circle fa-stack-2x"></i> 488 <i class="fab fa-facebook-f fa-stack-1x fa-inverse"></i> 489 </span> 490 </a> 491 </li> 492 <li class="list-inline-item"> 493 <a href="https://www.patreon.com/bePatron?u=15445754"> 494 <span class="fa-stack fa-lg"> 495 <i class="fa fa-circle fa-stack-2x" title="Become a Patron!"></i> 496 <i class="fab fa-patreon fa-stack-1x fa-inverse"></i> 497 </span> 498 </a> 499 </li> 500 </ul> 501 </div> 502 </div> 503 </div> 504 </footer> 505 506 507 <script> 508 $('.dropdown-menu a.dropdown-toggle').on('click', function (e) { 509 if (!$(this).next().hasClass('show')) { 510 $(this).parents('.dropdown-menu').first().find('.show').removeClass("show"); 511 } 512 var $subMenu = $(this).next(".dropdown-menu"); 513 $subMenu.toggleClass('show'); 514 515 516 $(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function (e) { 517 $('.dropdown-submenu .show').removeClass("show"); 518 }); 519 520 521 return false; 522 }); 523 </script> 524 525 </body> 526 527 </html> 528 529