Mapa plastic reciclat cu elastic A4 13 compartimente interioare Q-Connect

Cod produs: MPA095

Mapa din plastic multifunctionala.
13 compartimente interioare transparente.
Realizata din materiale plastice reciclabile.
Rezistenta ridicata la uzura.
Porteticheta din plastic pe coperta.
Inchidere cu elastice la colturi.
Latime cotor: 37 mm
Grosime coperta: 650 microni
Grosime buzunare interioare: 175 microni
Greutate mapa: 323 g
Dimensiuni mapa: 33 x 24,5 cm

Culoare

* Imaginile si informatiile prezentate au caracter informativ, iar in unele cazuri pot contine inadvertente cauzate de actualizarea datelor de catre furnizor. Pentru orice neclaritati sau intrebari te rugam sa ne contactezi.

Descriere

Mapa din plastic multifunctionala, cu 13 compartimente interioare transparente pentru stocarea documentelor A4. Este realizata din materiale plastice reciclabile, care-i confera o rezistenta ridicata la uzura. Inchiderea se realizeaza cu elastice la colturi, iar pe coperta beneficiaza de o porteticheta generoasa din plastic.

Latime cotor: 37 mm
Grosime coperta: 650 microni
Grosime buzunare interioare: 175 microni
Greutate mapa: 323 g
Dimensiuni mapa: 33 x 24,5 cm

Error executing template "/Designs/Swift/Paragraph/AUS_ProductSpecification.cshtml"
System.ArgumentException: An item with the same key has already been added.
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.GetFieldDisplayGroupValues(ProductViewModelSettings settings, Product product, String languageID, Lazy`1 productIds)
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.<>c__DisplayClass3_1.<BulkCreateView>b__51()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at CompiledRazorTemplates.Dynamic.RazorEngine_4b0f26245f154bdebd02ffdf7d1b746f.Execute() in C:\Sites\www.austral.ro\Files\Templates\Designs\Swift\Paragraph\AUS_ProductSpecification.cshtml:line 65
   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.Ecommerce.ProductCatalog 3 4 5 @functions{ 6 7 public Dictionary<string, FieldValueViewModel> TransformNODSpecifications(string fieldJSON) 8 { 9 Dictionary<string, FieldValueViewModel> options = new Dictionary<string, FieldValueViewModel>(); 10 dynamic s = Newtonsoft.Json.JsonConvert.DeserializeObject(fieldJSON); 11 foreach(var option in s) 12 { 13 string systemName = option.Label; 14 FieldValueViewModel fieldOption = new FieldValueViewModel(); 15 fieldOption.Name = option.Label; 16 fieldOption.SystemName = systemName; 17 fieldOption.Type = "String"; 18 fieldOption.Value = option.Value; 19 fieldOption.ListType = 1; 20 options.Add(systemName, fieldOption); 21 } 22 return options; 23 } 24 } 25 @{ 26 bool isVisualEditor = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("VisualEdit")) ? Convert.ToBoolean(Dynamicweb.Context.Current.Request.QueryString.Get("VisualEdit")) : false; 27 28 ProductViewModel product = new ProductViewModel(); 29 30 ProductViewModelSettings productSetting = new ProductViewModelSettings 31 { 32 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID, 33 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code, 34 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2, 35 ShopId = Pageview.Area.EcomShopId 36 }; 37 38 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 39 { 40 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 41 } else if (Pageview.Item["DummyProduct"] != null) { 42 43 string dummyProductId = ""; 44 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 45 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 46 if (productList.Products != null) 47 { 48 foreach (var p in productList.Products) { dummyProductId = p.Id; } 49 ProductViewModel dummyProduct = dummyProductId != "" ? ViewModelFactory.CreateView(productSetting, dummyProductId) : new ProductViewModel(); 50 product = dummyProduct; 51 } else { 52 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault().Id); 53 } 54 } else if (Pageview.Item["DummyProduct"] == null) { 55 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault().Id); 56 } 57 } 58 59 @if (product?.Id != null) { 60 IEnumerable<string> selectedDisplayGroupIds = Model.Item.GetRawValueString("DisplayGroups").Split(',').ToList(); 61 List<CategoryFieldViewModel> displayGroups = new List<CategoryFieldViewModel>(); 62 63 foreach (var selection in selectedDisplayGroupIds) 64 { 65 foreach (CategoryFieldViewModel group in product.FieldDisplayGroups.Values) 66 { 67 if (selection == group.Id) 68 { 69 displayGroups.Add(group); 70 } 71 } 72 } 73 74 bool showProductFields = Model.Item.GetBoolean("ProductFields"); 75 76 bool hideTitle = Model.Item.GetBoolean("HideTitle"); 77 78 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 79 80 string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "display-4"); 81 82 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 83 contentPadding = contentPadding == "small" ? "p-2 p-md-3" : contentPadding; 84 contentPadding = contentPadding == "large" ? "p-4 p-md-5" : contentPadding; 85 86 string layout = Model.Item.GetRawValueString("Layout", "list"); 87 string size = Model.Item.GetRawValueString("Size", "full"); 88 89 bool anonymousUser = Pageview.User == null; 90 91 if (Pageview.IsVisualEditorMode && displayGroups.Count() == 0) 92 { 93 product.ProductFields.Clear(); 94 product.ProductFields.Add(Translate("Width"), new FieldValueViewModel { Name = Translate("Width"), Value = "99cm" }); 95 product.ProductFields.Add(Translate("Height"), new FieldValueViewModel { Name = Translate("Height"), Value = "195cm" }); 96 showProductFields = true; 97 } 98 99 100 <div class="@(theme) h-100 item_@Model.Item.SystemName.ToLower()"> 101 <div class="@contentPadding"> 102 @if ((product.ProductFields != null && Model.Item.GetBoolean("ProductFields")) || (product.ProductCategories != null && Model.Item.GetBoolean("CategoryFields")) || (displayGroups.Count != 0)) { 103 if (!hideTitle && product.ProductCategories.Count > 0) 104 { 105 <div class="text-start pb-2 pb-lg-4"> 106 <h2 class="@titleFontSize">@Model.Item.GetString("Title")</h2> 107 </div> 108 } 109 } 110 111 @if (displayGroups.Count != 0) { 112 foreach (var group in displayGroups) { 113 bool hideHeader = Model.Item.GetBoolean("HideGroupHeaders"); 114 115 if (!hideHeader) { 116 <h4 class="h4 mb-4">@group.Name</h4> 117 } 118 //check if we have NOD specifications 119 if(group.Id == "Specificatii_NOD") 120 { 121 //separate Properties from other fields 122 var nodProperties = group.Fields["Properties"]; 123 var nodSpecifications = group.Fields.Where(i => i.Key != "Properties").ToDictionary(i => i.Key, i => i.Value); 124 if(nodSpecifications.Any()) 125 { 126 @RenderFieldsFromList(nodSpecifications, layout); 127 } 128 if(nodProperties != null) 129 { 130 var properties = TransformNODSpecifications(nodProperties.Value.ToString()); 131 @RenderFieldsFromList(properties, layout); 132 } 133 } else { 134 @RenderFieldsFromList(group.Fields, layout); 135 } 136 } 137 } 138 139 @if (product.ProductFields != null && showProductFields) { 140 if (product.ProductFields.Count > 0) { 141 @RenderFieldsFromList(product.ProductFields, layout); 142 } 143 } 144 145 @if (product.ProductCategories != null && Model.Item.GetBoolean("CategoryFields")) { 146 bool hideHeader = Model.Item.GetBoolean("HideGroupHeaders"); 147 if (product.ProductCategories.Count > 0) { 148 foreach (var group in product.ProductCategories) { 149 CategoryFieldViewModel category = group.Value; 150 151 if (!hideHeader) { 152 <h4 class="h4 mb-4">@group.Value.Name</h4> 153 } 154 155 @RenderFieldsFromList(category.Fields, layout); 156 157 } 158 } 159 } 160 @if(!anonymousUser) { 161 <div class="fs-7 opacity-85 fst-italic mt-4 mb-3">@Translate("Disclaimer msg")</div> 162 } 163 </div> 164 </div> 165 } else if (Pageview.IsVisualEditorMode) { 166 <div class="alert alert-warning m-0">@Translate("No products available")</div> 167 } 168 169 170 @helper RenderFieldsFromList(Dictionary<string, FieldValueViewModel> fields, string layout) { 171 string size = Model.Item.GetRawValueString("Size", "full"); 172 string extraMargin = size == "full" ? "mb-3" : ""; 173 bool hideFieldLabels = Model.Item.GetBoolean("HideFieldLabels"); 174 string propertiesFieldName = "Properties"; 175 //remove fields used for filtering. 176 fields = fields.Where(x=>!x.Key.Contains("f_")).ToDictionary(item => item.Key, item => item.Value); 177 178 179 <div class="@extraMargin"> 180 @if (layout == "columns") { 181 string gaps = size == "full" ? "gap-0" : "gap-2"; 182 183 <div class="grid @gaps"> 184 @foreach (var field in fields) { 185 @RenderField(field.Value, layout) 186 } 187 </div> 188 } 189 @if (layout == "list") { 190 <dl class="grid gap-0"> 191 @foreach (var field in fields) { 192 @RenderField(field.Value, layout) 193 } 194 </dl> 195 } 196 @if (layout == "table") { 197 string tableSize = size == "full" ? "" : "table-sm"; 198 199 <table class="table table-striped @tableSize"> 200 @foreach (var field in fields) { 201 @RenderField(field.Value, layout) 202 } 203 </table> 204 } 205 @if (layout == "bullets") { 206 string listSize = size == "full" ? "" : "m-0 p-0 lh-1 fs-7 opacity-75"; 207 string listStyle = size == "full" ? "" : "style=\"list-style-position: inside\""; 208 209 <ul class="@listSize" @listStyle> 210 @foreach (var field in fields) { 211 @RenderField(field.Value, layout) 212 } 213 </ul> 214 } 215 @if (layout == "commas") { 216 List<string> featuresList = new List<string>(); 217 218 foreach (var field in fields) 219 { 220 if (field.Value.Value.GetType() == typeof(System.Collections.Generic.List<FieldOptionValueViewModel>)) { 221 List<string> options = new List<string>(); 222 foreach (FieldOptionValueViewModel option in field.Value.Value as System.Collections.Generic.List<FieldOptionValueViewModel>) { 223 if (!string.IsNullOrWhiteSpace(option.Value)) { 224 if (option.Value.ToString().Contains("#") && (Translate(field.Value.Name) == Translate("Color") || Translate(field.Value.Name) == Translate("Colour"))) { 225 string colorSpan = "<span class=\"colorbox-sm\" style=\"background-color: " + option.Value + "\"></span>"; 226 options.Add(colorSpan); 227 } else if (!string.IsNullOrEmpty(option.Value)) { 228 options.Add(option.Name); 229 } 230 } 231 } 232 string optionsString = (string.Join(", ", options.Select(x => x.ToString()).ToArray())); 233 if ((Translate(field.Value.Name) == Translate("Color") || Translate(field.Value.Name) == Translate("Colour"))) { 234 optionsString = (string.Join(" ", options.Select(x => x.ToString()).ToArray())); 235 } 236 237 if (!hideFieldLabels) { 238 featuresList.Add(field.Value.Name + ": " + optionsString); 239 } else { 240 featuresList.Add(optionsString); 241 } 242 } else { 243 if (!string.IsNullOrWhiteSpace(field.Value.Value.ToString())) { 244 if (field.Value.Value.ToString().Contains("#") && (Translate(field.Value.Name) == Translate("Color") || Translate(field.Value.Name) == Translate("Colour"))) { 245 string colorSpan = "<span class=\"colorbox-sm\" style=\"background-color: " + field.Value.Value + "\"></span>"; 246 247 if (!hideFieldLabels) { 248 featuresList.Add(field.Value.Name + ": " + colorSpan); 249 } else { 250 featuresList.Add(colorSpan); 251 } 252 } else { 253 if (!hideFieldLabels) { 254 featuresList.Add(field.Value.Name + ": " + field.Value.Value.ToString()); 255 } else { 256 featuresList.Add(field.Value.Value.ToString()); 257 } 258 } 259 } 260 } 261 } 262 263 string featuresString = (string.Join(", ", featuresList.Select(x => x.ToString()).ToArray())); 264 265 <div class="opacity-75 fs-7">@featuresString</div> 266 } 267 </div> 268 } 269 270 @helper RenderField(FieldValueViewModel field, string layout) { 271 string size = Model.Item.GetRawValueString("Size", "full"); 272 string fieldValue = field?.Value != null ? field.Value.ToString() : ""; 273 bool hideFieldLabels = Model.Item.GetBoolean("HideFieldLabels"); 274 bool noValues = false; 275 276 if (!string.IsNullOrEmpty(fieldValue)) { 277 if (field.Value.GetType() == typeof(System.Collections.Generic.List<FieldOptionValueViewModel>)) { 278 System.Collections.Generic.List<FieldOptionValueViewModel> values = field.Value as System.Collections.Generic.List<FieldOptionValueViewModel>; 279 noValues = values.Count > 0 ? false : true; 280 } 281 } 282 283 if (!string.IsNullOrEmpty(fieldValue) && noValues == false) { 284 if (layout == "columns") { 285 <div class="grid g-col-6 g-col-lg-4"> 286 @if(!hideFieldLabels) 287 { 288 <dt class="g-col-4 py-2 fw-bold">@field.Name</dt> 289 } 290 <dd class="g-col-8 py-2 mb-0">@RenderFieldValue(field)</dd> 291 </div> 292 } 293 if (layout == "list") { 294 string extraPadding = size == "full" ? "py-2" : ""; 295 296 if (!hideFieldLabels) 297 { 298 <dt class="g-col-4 @extraPadding fw-bold">@field.Name</dt> 299 } 300 <dd class="g-col-8 @extraPadding mb-0"> 301 @RenderFieldValue(field) 302 </dd> 303 } 304 if (layout == "table") { 305 <tr> 306 @if (!hideFieldLabels) 307 { 308 <th class="fw-bold" scope="row">@field.Name</th> 309 } 310 <td>@RenderFieldValue(field)</td> 311 </tr> 312 } 313 if (layout == "bullets") { 314 <li> 315 @if (!hideFieldLabels) 316 { 317 <strong>@field.Name</strong> 318 } 319 <span>@RenderFieldValue(field)</span> 320 </li> 321 } 322 } 323 } 324 325 @helper RenderFieldValue(FieldValueViewModel field) { 326 string fieldValue = field?.Value != null ? field.Value.ToString() : ""; 327 328 bool isLink = field?.Type == "Link"; 329 bool isColor = false; 330 bool isBrandName = field?.SystemName == "Brand_name"; 331 332 fieldValue = fieldValue == "False" ? Translate("No") : fieldValue; 333 fieldValue = fieldValue == "True" ? Translate("Yes") : fieldValue; 334 335 336 if (field.Value.GetType() == typeof(System.Collections.Generic.List<Dynamicweb.Ecommerce.ProductCatalog.FieldOptionValueViewModel>)) 337 { 338 int valueCount = 0; 339 System.Collections.Generic.List<FieldOptionValueViewModel> values = field.Value as System.Collections.Generic.List<FieldOptionValueViewModel>; 340 int totalValues = values.Count; 341 342 foreach (FieldOptionValueViewModel option in values) 343 { 344 if (option.Value.Substring(0,1) == "#") { 345 isColor = true; 346 } 347 348 if (!isColor) { 349 @option.Name 350 } else { 351 <span class="colorbox-sm" style="background-color: @option.Value" title="@option.Name"></span> 352 } 353 354 if (valueCount != totalValues && valueCount < (totalValues - 1)) { 355 if (isColor) { 356 <text> </text> 357 } else { 358 <text>, </text> 359 } 360 } 361 valueCount++; 362 } 363 } 364 else 365 { 366 if (fieldValue.Substring(0,1) == "#") { 367 isColor = true; 368 } 369 370 if (!isColor) { 371 if(isLink) 372 { 373 string linktTitle = !fieldValue.Contains("aspx") ? fieldValue : Translate("Go to link"); 374 string target = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && fieldValue.Contains("http") ? "target=\"_blank\"" : string.Empty; 375 string rel = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && fieldValue.Contains("http") ? "rel=\"noopener\"" : string.Empty; 376 377 <a href="@field.Value" title="@field.Name" @target @rel>@linktTitle</a> 378 } 379 else if (isBrandName) 380 { 381 <span itemprop="brand" itemtype="https://schema.org/Brand" itemscope> 382 <span itemprop="name">@fieldValue</span> 383 </span> 384 } 385 else 386 { 387 @fieldValue 388 } 389 390 } else { 391 <span class="colorbox-sm" style="background-color: @fieldValue" title="@fieldValue"></span> 392 } 393 } 394 } 395
Austral.ro folosește cookies, navigarea pe site implică acceptarea politicilor acestora.