public EditTypePartViewModel(int index, ContentTypePartDefinition part)
 {
     Index          = index;
     PartDefinition = new EditPartViewModel(part.PartDefinition);
     Settings       = part.Settings;
     _Definition    = part;
 }
예제 #2
0
 public EditTypePartViewModel(int index, ContentTypePartDefinition part) {
     Index = index;
     PartDefinition = new EditPartViewModel(part.PartDefinition);
     Settings = part.Settings;
     PartSettings = part.PartDefinition.Settings;
     _Definition = part;
 }
예제 #3
0
        public async Task<ActionResult> AddFieldToPOST(AddFieldViewModel viewModel, string id)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContentTypes))
                return Unauthorized();

            var partViewModel = _contentDefinitionService.GetPart(id);
            var typeViewModel = _contentDefinitionService.GetType(id);
            if (partViewModel == null)
            {
                // id passed in might be that of a type w/ no implicit field
                if (typeViewModel != null)
                {
                    partViewModel = new EditPartViewModel { Name = typeViewModel.Name };
                    _contentDefinitionService.AddPart(new CreatePartViewModel { Name = partViewModel.Name });
                    _contentDefinitionService.AddPartToType(partViewModel.Name, typeViewModel.Name);
                }
                else {
                    return NotFound();
                }
            }

            viewModel.DisplayName = viewModel.DisplayName ?? String.Empty;
            viewModel.DisplayName = viewModel.DisplayName.Trim();
            viewModel.Name = viewModel.Name ?? String.Empty;

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

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

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

            if (!String.IsNullOrWhiteSpace(viewModel.Name) && !viewModel.Name[0].IsLetter())
            {
                ModelState.AddModelError("Name", S["The technical name must start with a letter."]);
            }

            if (!String.Equals(viewModel.Name, viewModel.Name.ToSafeName(), StringComparison.OrdinalIgnoreCase))
            {
                ModelState.AddModelError("Name", S["The technical name contains invalid characters."]);
            }

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

            if (!ModelState.IsValid)
            {
                viewModel.Part = partViewModel;
                viewModel.Fields = _contentDefinitionService.GetFields();

                _session.Cancel();

                return View(viewModel);
            }

            try
            {
                _contentDefinitionService.AddFieldToPart(viewModel.Name, viewModel.DisplayName, viewModel.FieldTypeName, partViewModel.Name);
            }
            catch
            {
                //Services.Notifier.Information(T("The \"{0}\" field was not added. {1}", viewModel.DisplayName, ex.Message));
                _session.Cancel();
                return await AddFieldTo(id);
            }

            _notifier.Success(T["The \"{0}\" field has been added.", viewModel.DisplayName]);

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

            return RedirectToAction("EditPart", new { id });
        }
예제 #4
0
        public async Task<ActionResult> AddFieldTo(string id)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContentTypes))
                return Unauthorized();

            var partViewModel = _contentDefinitionService.GetPart(id);

            if (partViewModel == null)
            {
                //id passed in might be that of a type w/ no implicit field
                var typeViewModel = _contentDefinitionService.GetType(id);
                if (typeViewModel != null)
                    partViewModel = new EditPartViewModel(new ContentPartDefinition(id));
                else
                    return NotFound();
            }

            var viewModel = new AddFieldViewModel
            {
                Part = partViewModel,
                Fields = _contentDefinitionService.GetFields().OrderBy(x => x.FieldTypeName).ToList()
            };

            return View(viewModel);
        }
예제 #5
0
 public void AlterField(EditPartViewModel partViewModel, EditFieldNameViewModel fieldViewModel)
 {
     _contentDefinitionManager.AlterPartDefinition(partViewModel.Name, partBuilder =>
     {
         partBuilder.WithField(fieldViewModel.Name, fieldBuilder =>
         {
             fieldBuilder.WithDisplayName(fieldViewModel.DisplayName);
         });
     });
 }
예제 #6
0
        public EditPartViewModel GetPart(string name)
        {
            var contentPartDefinition = _contentDefinitionManager.GetPartDefinition(name);

            if (contentPartDefinition == null)
                return null;

            var viewModel = new EditPartViewModel(contentPartDefinition);

            return viewModel;
        }
예제 #7
0
        public async Task<ActionResult> EditPartPOST(string id, string[] orderedFieldNames)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContentTypes))
                return Unauthorized();

            var contentPartDefinition = _contentDefinitionManager.GetPartDefinition(id);

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

            var viewModel = new EditPartViewModel(contentPartDefinition);
            viewModel.Editor = await _contentDefinitionDisplayManager.UpdatePartEditorAsync(contentPartDefinition, this);

            if (!ModelState.IsValid)
            {
                _session.Cancel();
                return View(viewModel);
            }
            else
            {
                _contentDefinitionService.AlterPartFieldsOrder(contentPartDefinition, orderedFieldNames);
                _notifier.Success(T["The settings of \"{0}\" have been saved.", contentPartDefinition.Name]);
            }

            return RedirectToAction("EditPart", new { id });
        }
예제 #8
0
        public async Task<ActionResult> EditPart(string id)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContentTypes))
                return Unauthorized();

            var contentPartDefinition = _contentDefinitionManager.GetPartDefinition(id);

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

            var viewModel = new EditPartViewModel(contentPartDefinition);
            viewModel.Editor = await _contentDefinitionDisplayManager.BuildPartEditorAsync(contentPartDefinition, this);

            return View(viewModel);
        }
 public void AlterField(EditPartViewModel partViewModel, EditFieldNameViewModel fieldViewModel)
 {
     _contentDefinitionManager.AlterPartDefinition(partViewModel.Name, partBuilder =>
     {
         partBuilder.WithField(fieldViewModel.Name, fieldBuilder =>
         {
             _contentDefinitionEditorEvents.Invoke(x => x.PartFieldEditorUpdating(fieldBuilder), Logger);
             fieldBuilder.WithDisplayName(fieldViewModel.DisplayName);
             _contentDefinitionEditorEvents.Invoke(x => x.PartFieldEditorUpdated(fieldBuilder), Logger);
         });
     });
 }
 public void AlterPart(EditPartViewModel partViewModel, IUpdateModel updateModel)
 {
     _contentDefinitionManager.AlterPartDefinition(partViewModel.Name, partBuilder =>
     {
         _contentDefinitionEditorEvents.Invoke(x => x.PartEditorUpdating(partBuilder), Logger);
         partViewModel.Templates = _contentDefinitionEditorEvents.Invoke(x => x.PartEditorUpdate(partBuilder, updateModel), Logger);
         _contentDefinitionEditorEvents.Invoke(x => x.PartEditorUpdated(partBuilder), Logger);
     });
 }
        public EditPartViewModel GetPart(string name)
        {
            var contentPartDefinition = _contentDefinitionManager.GetPartDefinition(name);

            if (contentPartDefinition == null)
                return null;

            var viewModel = new EditPartViewModel(contentPartDefinition)
            {
                Templates = _contentDefinitionEditorEvents.Invoke(x => x.PartEditor(contentPartDefinition), Logger)
            };

            return viewModel;
        }