MeTube Loungesessel

Der MeTube Loungesessel ist ein Entwurf des Architekten Carsten Buhl.

Ein schöner Stuhl, der mit seiner attraktiven Rückenlehne aus Formholz und den Beinen aus Massivholz, die sich in einem A treffen, an den beliebten Mette Esszimmerstuhl erinnert.

Das Rückenpolster kann für optimalen Sitzkomfort nach oben und unten geschoben werden.

Holzarten

MeTube ist in Eiche erhältlich.

Polsterung

MeTube ist mit den Crisp-Stoffen 4011, 4125 und 4752 erhältlich.

Wird mit Rückenpolster geliefert.

 

3-D-KONFIGURATOR

 

Gestalten Sie mit dem Konfigurator von Hammel Ihren eigenen Findahl by Hammel Stuhl.

Der Konfigurator ist für iOS, Android und als Web-Anwendung verfügbar.

 

 

Unsere App für IOS- und Android-Geräte trägt die Bezeichnung „hammel“.

Denken Sie daran, die App regelmäßig zu aktualisieren, damit Sie immer die neueste Version nutzen.

 

Gehen Sie hier direkt zum Konfigurator auf Ihrem Computer

Mehr von Findahl

Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <div class="grid__col-lg-@item.Design.Size grid__col-md-@item.Design.Size grid__col-sm-12 grid__col-xs-12 @hidePadding @cssClass dw-mod" id="Block__@item.Id"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <div class="u-flex u-flex--align-items-center @settings.CssClass">@settings.Label <i class="@settings.Prefix @settings.Name u-margin-left" @color></i></div> 208 } 209 else 210 { 211 <div class="u-flex u-flex--align-items-center @settings.CssClass"><i class="@settings.Prefix @settings.Name u-margin-right--lg u-w20px" @color></i>@settings.Label</div> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <div class="@settings.CssClass dw-mod js-handlebars-root" id="@settings.Id" data-template="@settings.ScriptTemplate" data-json-feed="@settings.FeedUrl" data-init-onload="@settings.InitOnLoad.ToString()" data-preloader="@settings.Preloader" @preRender> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458
Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <div class="grid__col-lg-@item.Design.Size grid__col-md-@item.Design.Size grid__col-sm-12 grid__col-xs-12 @hidePadding @cssClass dw-mod" id="Block__@item.Id"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <div class="u-flex u-flex--align-items-center @settings.CssClass">@settings.Label <i class="@settings.Prefix @settings.Name u-margin-left" @color></i></div> 208 } 209 else 210 { 211 <div class="u-flex u-flex--align-items-center @settings.CssClass"><i class="@settings.Prefix @settings.Name u-margin-right--lg u-w20px" @color></i>@settings.Label</div> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <div class="@settings.CssClass dw-mod js-handlebars-root" id="@settings.Id" data-template="@settings.ScriptTemplate" data-json-feed="@settings.FeedUrl" data-init-onload="@settings.InitOnLoad.ToString()" data-preloader="@settings.Preloader" @preRender> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458
Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <div class="grid__col-lg-@item.Design.Size grid__col-md-@item.Design.Size grid__col-sm-12 grid__col-xs-12 @hidePadding @cssClass dw-mod" id="Block__@item.Id"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <div class="u-flex u-flex--align-items-center @settings.CssClass">@settings.Label <i class="@settings.Prefix @settings.Name u-margin-left" @color></i></div> 208 } 209 else 210 { 211 <div class="u-flex u-flex--align-items-center @settings.CssClass"><i class="@settings.Prefix @settings.Name u-margin-right--lg u-w20px" @color></i>@settings.Label</div> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <div class="@settings.CssClass dw-mod js-handlebars-root" id="@settings.Id" data-template="@settings.ScriptTemplate" data-json-feed="@settings.FeedUrl" data-init-onload="@settings.InitOnLoad.ToString()" data-preloader="@settings.Preloader" @preRender> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458

Dänische Handwerkskunst seit 1946

Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_878211fff5564c4eb582c65eeb9daf98.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2353
   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 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <div class="grid__col-lg-@item.Design.Size grid__col-md-@item.Design.Size grid__col-sm-12 grid__col-xs-12 @hidePadding @cssClass dw-mod" id="Block__@item.Id"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <div class="u-flex u-flex--align-items-center @settings.CssClass">@settings.Label <i class="@settings.Prefix @settings.Name u-margin-left" @color></i></div> 208 } 209 else 210 { 211 <div class="u-flex u-flex--align-items-center @settings.CssClass"><i class="@settings.Prefix @settings.Name u-margin-right--lg u-w20px" @color></i>@settings.Label</div> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <div class="@settings.CssClass dw-mod js-handlebars-root" id="@settings.Id" data-template="@settings.ScriptTemplate" data-json-feed="@settings.FeedUrl" data-init-onload="@settings.InitOnLoad.ToString()" data-preloader="@settings.Preloader" @preRender> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458

Anleitungen herunterladen