예제 #1
0
        public async Task <ActionResult> EditField(string id, string name, string returnUrl = null)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContentTypes))
            {
                return(Forbid());
            }

            var partViewModel = _contentDefinitionService.GetPart(id);

            if (partViewModel == null)
            {
                return(NotFound());
            }

            var partFieldDefinition = partViewModel.PartDefinition.Fields.FirstOrDefault(x => x.Name == name);

            if (partFieldDefinition == null)
            {
                return(NotFound());
            }

            var viewModel = new EditFieldViewModel
            {
                Name                = partFieldDefinition.Name,
                Editor              = partFieldDefinition.Editor(),
                DisplayMode         = partFieldDefinition.DisplayMode(),
                DisplayName         = partFieldDefinition.DisplayName(),
                PartFieldDefinition = partFieldDefinition,
                Shape               = await _contentDefinitionDisplayManager.BuildPartFieldEditorAsync(partFieldDefinition, _updateModelAccessor.ModelUpdater)
            };

            ViewData["ReturnUrl"] = returnUrl;
            return(View(viewModel));
        }
예제 #2
0
        public async Task <ActionResult> EditField(string id, string name)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContentTypes))
            {
                return(Unauthorized());
            }

            var partViewModel = _contentDefinitionService.GetPart(id);

            if (partViewModel == null)
            {
                return(NotFound());
            }

            var partFieldDefinition = partViewModel.PartDefinition.Fields.FirstOrDefault(x => x.Name == name);

            if (partFieldDefinition == null)
            {
                return(NotFound());
            }

            var viewModel = new EditFieldViewModel
            {
                Name                = partFieldDefinition.Name,
                DisplayName         = partFieldDefinition.DisplayName(),
                PartFieldDefinition = partFieldDefinition,
                Editor              = await _contentDefinitionDisplayManager.BuildPartFieldEditorAsync(partFieldDefinition, this)
            };

            return(View(viewModel));
        }
예제 #3
0
        public ActionResult Add(string reference = null)
        {
            var vm = new EditFieldViewModel {
                Reference = reference
            };

            vm.References = GetReferences();
            return(View(vm));
        }
예제 #4
0
 public void AlterField(EditPartViewModel partViewModel, EditFieldViewModel fieldViewModel)
 {
     _contentDefinitionManager.AlterPartDefinition(partViewModel.Name, partBuilder =>
     {
         partBuilder.WithField(fieldViewModel.Name, fieldBuilder =>
         {
             fieldBuilder.WithDisplayName(fieldViewModel.DisplayName);
         });
     });
 }
예제 #5
0
 public ActionResult Add(EditFieldViewModel vm)
 {
     if (ModelState.IsValid)
     {
         var field = Mapper.Map <DynamicField>(vm);
         _fieldService.Add(field);
         return(RedirectToAction("Index"));
     }
     return(View(vm));
 }
예제 #6
0
        public ActionResult EditField(EditFieldViewModel model)
        {
            var dto = new FieldDTO();

            dto.FieldId       = model.FieldId;
            dto.Name          = model.Name;
            dto.AllowFreeText = model.AllowFreeText;
            dto.IsMultiSelect = model.IsMultiSelect;
            dto.IsRequired    = model.IsRequired;
            DataAccess.UpdateField(dto);
            return(RedirectToAction("EditActivity", "Settings", new { activityId = DataAccess.GetField(model.FieldId).ActivityId }));
        }
예제 #7
0
        public ActionResult EditField(Guid fieldId)
        {
            ViewBag.BackLinkHtml = MenuConstructor.ConstructHtmlBackLink("EditField", fieldId);
            var model = new EditFieldViewModel();
            var dto   = DataAccess.GetField(fieldId);

            model.FieldId       = dto.FieldId;
            model.Name          = dto.Name;
            model.AllowFreeText = dto.AllowFreeText;
            model.IsMultiSelect = dto.IsMultiSelect;
            model.IsRequired    = dto.IsRequired;
            model.FieldOptions  = DataAccess.GetFieldOptions(fieldId);
            return(View(model));
        }
예제 #8
0
        public async Task <ActionResult> EditFieldPOST(string id, EditFieldViewModel viewModel)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContentTypes))
            {
                return(Unauthorized());
            }

            if (viewModel == null)
            {
                return(NotFound());
            }

            var partViewModel = _contentDefinitionService.GetPart(id);

            if (partViewModel == null)
            {
                return(NotFound());
            }

            var field = _contentDefinitionManager.GetPartDefinition(id).Fields.FirstOrDefault(x => x.Name == viewModel.Name);

            if (field == null)
            {
                return(NotFound());
            }

            if (field.DisplayName() != viewModel.DisplayName)
            {
                // prevent null reference exception in validation
                viewModel.DisplayName = viewModel.DisplayName?.Trim() ?? String.Empty;

                if (String.IsNullOrWhiteSpace(viewModel.DisplayName))
                {
                    ModelState.AddModelError("DisplayName", S["The Display Name name can't be empty."]);
                }

                if (_contentDefinitionService.GetPart(partViewModel.Name).PartDefinition.Fields.Any(t => t.Name != viewModel.Name && String.Equals(t.DisplayName().Trim(), viewModel.DisplayName.Trim(), StringComparison.OrdinalIgnoreCase)))
                {
                    ModelState.AddModelError("DisplayName", S["A field with the same Display Name already exists."]);
                }

                if (!ModelState.IsValid)
                {
                    _session.Cancel();
                    return(View(viewModel));
                }

                _contentDefinitionService.AlterField(partViewModel, viewModel);

                _notifier.Information(T["Display name changed to {0}.", viewModel.DisplayName]);
            }

            viewModel.Editor = await _contentDefinitionDisplayManager.UpdatePartFieldEditorAsync(field, this);

            if (!ModelState.IsValid)
            {
                _session.Cancel();
                return(View(viewModel));
            }
            else
            {
                _notifier.Success(T["The \"{0}\" field settings have been saved.", field.DisplayName()]);
            }

            // Redirect to the type editor if a type exists with this name
            var typeViewModel = _contentDefinitionService.GetType(id);

            if (typeViewModel != null)
            {
                return(RedirectToAction("Edit", new { id }));
            }

            return(RedirectToAction("EditPart", new { id }));
        }
예제 #9
0
        public async Task <ActionResult> EditFieldPOST(string id, EditFieldViewModel viewModel, string returnUrl = null)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContentTypes))
            {
                return(Forbid());
            }

            if (viewModel == null)
            {
                return(NotFound());
            }

            var partViewModel = _contentDefinitionService.LoadPart(id);

            if (partViewModel == null)
            {
                return(NotFound());
            }

            var field = _contentDefinitionManager.LoadPartDefinition(id).Fields.FirstOrDefault(x => x.Name == viewModel.Name);

            if (field == null)
            {
                return(NotFound());
            }

            viewModel.PartFieldDefinition = field;

            if (field.DisplayName() != viewModel.DisplayName)
            {
                // prevent null reference exception in validation
                viewModel.DisplayName = viewModel.DisplayName?.Trim() ?? String.Empty;

                if (String.IsNullOrWhiteSpace(viewModel.DisplayName))
                {
                    ModelState.AddModelError("DisplayName", S["The Display Name can't be empty."]);
                }

                if (_contentDefinitionService.LoadPart(partViewModel.Name).PartDefinition.Fields.Any(t => t.Name != viewModel.Name && String.Equals(t.DisplayName().Trim(), viewModel.DisplayName.Trim(), StringComparison.OrdinalIgnoreCase)))
                {
                    ModelState.AddModelError("DisplayName", S["A field with the same Display Name already exists."]);
                }

                if (!ModelState.IsValid)
                {
                    // Calls update to build editor shape with the display name validation failures, and other validation errors.
                    viewModel.Shape = await _contentDefinitionDisplayManager.UpdatePartFieldEditorAsync(field, _updateModelAccessor.ModelUpdater);

                    _documentStore.Cancel();

                    ViewData["ReturnUrl"] = returnUrl;
                    return(View(viewModel));
                }

                _notifier.Information(H["Display name changed to {0}.", viewModel.DisplayName]);
            }

            _contentDefinitionService.AlterField(partViewModel, viewModel);

            // Refresh the local field variable in case it has been altered
            field = _contentDefinitionManager.LoadPartDefinition(id).Fields.FirstOrDefault(x => x.Name == viewModel.Name);

            viewModel.Shape = await _contentDefinitionDisplayManager.UpdatePartFieldEditorAsync(field, _updateModelAccessor.ModelUpdater);

            if (!ModelState.IsValid)
            {
                _documentStore.Cancel();

                ViewData["ReturnUrl"] = returnUrl;
                return(View(viewModel));
            }
            else
            {
                _notifier.Success(H["The \"{0}\" field settings have been saved.", field.DisplayName()]);
            }

            if (!String.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
            {
                return(Redirect(returnUrl));
            }
            else
            {
                // Redirect to the type editor if a type exists with this name
                var typeViewModel = _contentDefinitionService.LoadType(id);
                if (typeViewModel != null)
                {
                    return(RedirectToAction("Edit", new { id }));
                }

                return(RedirectToAction("EditPart", new { id }));
            }
        }
 public void AlterField(EditPartViewModel partViewModel, EditFieldViewModel fieldViewModel) => throw new NotImplementedException();