protected override DriverResult Editor(ThemeSkinsPart part, dynamic shapeHelper) { return(ContentShape("Parts_ThemeSkinsPart_Edit", () => { var vm = new ThemeSkinsPartEditViewModel(); vm.SelectedSkinName = part.SkinName; PopulateVMOptions(vm); PopulateVMVariables(part, vm); return shapeHelper.EditorTemplate( TemplateName: "Parts/ThemeSkinsPart", Model: vm, Prefix: Prefix); })); }
private void PopulateVMVariables(ThemeSkinsPart part, ThemeSkinsPartEditViewModel vm) { var variables = _themeSkinsService.GetSkinVariables(); foreach (var savedVariable in part.Variables) { var fromTheme = variables.FirstOrDefault(v => v.Name.Equals(savedVariable.Name)); if (fromTheme != null) { fromTheme.Value = savedVariable.Value; } } vm.Variables = variables.ToArray(); }
protected override DriverResult Editor(ThemeSkinsPart part, IUpdateModel updater, dynamic shapeHelper) { var vm = new ThemeSkinsPartEditViewModel(); if (updater.TryUpdateModel(vm, Prefix, null, null)) { // TODO validate variables in the vm part.SkinName = vm.SelectedSkinName; part.Variables = vm.Variables; } return(ContentShape("Parts_ThemeSkinsPart_Edit", () => { PopulateVMOptions(vm); return shapeHelper.EditorTemplate( TemplateName: "Parts/ThemeSkinsPart", Model: vm, Prefix: Prefix); })); }
private void PopulateVMOptions(ThemeSkinsPartEditViewModel vm) { vm.AvailableSkinNames = _themeSkinsService.GetSkinNames(); var options = new List <SelectListItem>(); // the manifest may have a skin named Default, that would then be the one // that should be used when nothing is selected. var exclude = new List <string>(); var defaultSkin = vm.AvailableSkinNames.FirstOrDefault(s => s.Equals("default", StringComparison.OrdinalIgnoreCase)); if (!string.IsNullOrWhiteSpace(defaultSkin)) { options.Add(new SelectListItem { Text = defaultSkin, Value = defaultSkin, Selected = string.IsNullOrWhiteSpace(vm.SelectedSkinName) || defaultSkin.Equals(vm.SelectedSkinName, StringComparison.OrdinalIgnoreCase) }); exclude.Add(defaultSkin); } else { options.Add(new SelectListItem { Text = T("Default").Text, Value = string.Empty, Selected = string.IsNullOrWhiteSpace(vm.SelectedSkinName) }); } if (vm.AvailableSkinNames != null) { options.AddRange(vm.AvailableSkinNames .Except(exclude) .Select(x => new SelectListItem { Text = x, Value = x, Selected = string.Equals(x, vm.SelectedSkinName) })); } vm.Options = options; }