Garantie für Qualität, Sicherheit und Komfort

Bringen Sie Ihre Botschaft mit professioneller Folierung von Kofferanhängern heraus

Nutzen Sie die großen weißen Flächen der Anhänger als effektive Werbefläche für Ihr Unternehmen. Mit einer Vollfolierung aller 4 Seiten unserer Kofferanhänger erhalten Sie maximale Aufmerksamkeit und Sichtbarkeit im Straßenverkehr. Folierung ist eine hervorragende Möglichkeit, Ihre Marke zu promoten und ein breites Publikum im ganzen Land zu erreichen.

Wir bieten professionelle Folierung an, bei der Sie eine druckfertige Datei von Ihrer Werbeagentur liefern können oder die Designarbeit unserem erfahrenen Team überlassen. Wir sorgen dafür, dass die Folie vor der Montage des Anhängers angebracht wird, sodass die Folienenden unter den Aluminiumleisten für optimale Haltbarkeit und Ästhetik verborgen sind. Unsere Expertise in der Folierung gewährleistet eine langlebige und auffällige Lösung, die die Botschaft Ihres Unternehmens hervorhebt.

Skizzen mit genauen Maßen und Positionen von Scharnieren usw. sind verfügbar, damit Sie Ihr Design bis ins kleinste Detail planen können. 

Sie haben sicherlich schon einen Variant-Anhänger mit Werbebotschaften auf den Straßen gesehen, da sie unter anderem als Mietanhänger in u.a. Dänemark, Norwegen, Schweden und Deutschland unterwegs sind. Freetrailer hat über 1.200 Standorte, an denen Sie Anhänger ausleihen können – erfahren Sie mehr auf freetrailer.com/de.

Kontaktieren Sie Ihren lokalen Händler für weitere Informationen darüber, wie Sie diese mobile Werbeplattform nutzen können, um Ihr Marketing zu stärken.
Ein folierter Anhänger macht nicht nur Ihre Botschaft im Verkehr sichtbar, sondern schützt auch die Oberfläche des Anhängers vor Abnutzung und Witterungseinflüssen.

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

Anleitung zur Vorbereitung druckfertiger Dateien

 

Trykklar PDF fil

Vi modtager som udgangspunkt kun færdige trykklare PDF filer fremstillet efter europæisk prepress standard.

Format: Dokumenterne som ligger til grund for PDF filerne skal være lavet i 1:1 altså skal trim-boksen være den størrelse vi skal renskære efter.

Opløsning: PDF-filen skal være 150 dpi i 1:1 hvis muligt, ellers lav PDF filer i 50% eller 25% med tilsvarende højere opløsning (dpi).

Farver: CMYK og Pantone farver. Fremstillet efter Prepress Europa standarden.

Udfald/beskæring: Der skal være 5 mm udfald/beskæring hele vejen rundt om dokumentet og skæremærker.

Konturskæring: Hvis vi skal renskære efter en stansetegning/skærestreg skal der stadig være 5 mm beskæring, og stansetegningen/skærestregen skal være lavet i en spot/staffage farve (helst med navnet CUT). Den må gerne være synlig. Hvis der skal laves bukkestreger eller v-cut mv. skal stregerne også være lavet i spot/staffagefarver og med navne som buk, vcut, wcut osv. Alle skærestreger skal være lavet som vektor streg med en streg farve ikke fyld.

Skrifter/ fonte: Alle skrifter/fonte skal være indlagt i PDF filen.

ICC profil: Euroscale Coated v2 

Skizzenzeichnungen herunterladen

Cargo model Variant
​ C2 Tür
​ C2 Rampe
​ C2 Basic Tür
​ C2 HT Tür
​ C2 HT Rampe
​ C3 Tür
​ C3 Rampe
​ C4 Tür
​ C4 Rampe