示例#1
0
        /// <summary>
        /// Column alter method is not the best.
        /// </summary>
        /// <param name="relationshipId"></param>
        /// <param name="manyToMany"></param>
        /// <returns>Error message string or null for correctly edited</returns>
        public string EditRelationship(int relationshipId, ManyToManyRelationshipModel manyToMany)
        {
            var manyToManyRecord = _manyToManyRepository.Get(record => record.Relationship.Id == relationshipId);

            if (manyToManyRecord == null)
            {
                return("Invalid relashionship ID.");
            }
            var relationshipRecord = manyToManyRecord.Relationship;

            manyToManyRecord.ShowPrimaryList  = manyToMany.ShowPrimaryList;
            manyToManyRecord.PrimaryListLabel = manyToMany.PrimaryListLabel;
            manyToManyRecord.ShowRelatedList  = manyToMany.ShowRelatedList;
            manyToManyRecord.RelatedListLabel = manyToMany.RelatedListLabel;

            var primaryPart = _contentDefinitionManager.GetPartDefinition(relationshipRecord.Name + relationshipRecord.PrimaryEntity.Name + "Part");

            primaryPart.Settings["DisplayName"] = manyToMany.RelatedListLabel;
            _contentDefinitionManager.StorePartDefinition(primaryPart);
            var relatedPart = _contentDefinitionManager.GetPartDefinition(relationshipRecord.Name + relationshipRecord.RelatedEntity.Name + "Part");

            relatedPart.Settings["DisplayName"] = manyToMany.PrimaryListLabel;
            _contentDefinitionManager.StorePartDefinition(relatedPart);

            _manyToManyRepository.Update(manyToManyRecord);

            UpdateLayoutProperties(relationshipRecord.PrimaryEntity.Name,
                                   manyToManyRecord.PrimaryListProjection.LayoutRecord,
                                   manyToMany.PrimaryColumnList);

            UpdateLayoutProperties(relationshipRecord.RelatedEntity.Name,
                                   manyToManyRecord.RelatedListProjection.LayoutRecord,
                                   manyToMany.RelatedColumnList);
            return(null);
        }
示例#2
0
        private bool UpdateDependenySetting(string entityName, string controlFieldName, string dependentFieldName)
        {
            var part = _contentDefinitionManager.GetPartDefinition(entityName);

            if (part == null)
            {
                return(false);
            }
            var control = part.Fields.FirstOrDefault(x => x.Name == controlFieldName);

            if (control == null)
            {
                return(false);
            }
            control.Settings[control.FieldDefinition.Name + "Settings.DependencyMode"] = DependentType.Control.ToString();
            var dependent = part.Fields.FirstOrDefault(x => x.Name == dependentFieldName);

            if (dependent == null)
            {
                return(false);
            }
            dependent.Settings["OptionSetFieldSettings.DependencyMode"] = DependentType.Dependent.ToString();
            _contentDefinitionManager.StorePartDefinition(part);
            return(true);
        }
        public static void AlterPartDefinition(this IContentDefinitionManager manager, string name, Action <ContentPartDefinitionBuilder> alteration)
        {
            var partDefinition = manager.LoadPartDefinition(name) ?? new ContentPartDefinition(name);
            var builder        = new ContentPartDefinitionBuilder(partDefinition);

            alteration(builder);
            manager.StorePartDefinition(builder.Build());
        }
        public static async Task AlterPartDefinitionAsync(this IContentDefinitionManager manager, string name, Func <ContentPartDefinitionBuilder, Task> alterationAsync)
        {
            var partDefinition = manager.LoadPartDefinition(name) ?? new ContentPartDefinition(name);
            var builder        = new ContentPartDefinitionBuilder(partDefinition);

            await alterationAsync(builder);

            manager.StorePartDefinition(builder.Build());
        }
示例#5
0
        public ActionResult EditFieldPOST(string id, EditFieldNameViewModel viewModel)
        {
            if (!Services.Authorizer.Authorize(Permissions.EditContentTypes, T("Not allowed to edit a content type.")))
            {
                return(new HttpUnauthorizedResult());
            }

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

            var partViewModel = _contentDefinitionService.GetPart(id);

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

            // prevent null reference exception in validation
            viewModel.DisplayName = viewModel.DisplayName ?? String.Empty;

            // remove extra spaces
            viewModel.DisplayName = viewModel.DisplayName.Trim();

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

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

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

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

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

            field.DisplayName = viewModel.DisplayName;
            _contentDefinitionManager.StorePartDefinition(partViewModel._Definition);

            Services.Notifier.Information(T("Display name changed to {0}.", viewModel.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 }));
        }