예제 #1
0
        public ActionResult Create(int listId)
        {
            if (!CheckPermission(ListsPermissions.ManageLists))
            {
                return(new HttpUnauthorizedResult());
            }

            var list = listService.GetById(listId);

            WorkContext.Breadcrumbs.Add(T("Manage Lists"), Url.Action("Index", "List", new { area = Constants.Areas.Lists }));
            WorkContext.Breadcrumbs.Add(list.Name);
            WorkContext.Breadcrumbs.Add(T("Fields"), Url.Action("Index", new { area = Constants.Areas.Lists }));
            WorkContext.Breadcrumbs.Add(T("Create"));

            var model = new ListFieldModel {
                Title = "", ListId = listId
            };

            var result = new ControlFormResult <ListFieldModel>(model)
            {
                Title                = T("Create Field").Text,
                UpdateActionName     = "Update",
                ShowBoxHeader        = false,
                FormWrapperStartHtml = Constants.Form.FormWrapperStartHtml,
                FormWrapperEndHtml   = Constants.Form.FormWrapperEndHtml
            };

            var listFields = WorkContext.Resolve <IEnumerable <IListField> >();
            var fieldTypes = listFields.Select(x => new { x.FieldType, Type = GetFullTypeName(x.GetType()) }).OrderBy(x => x.FieldType).ToDictionary(x => x.Type, x => x.FieldType);

            result.RegisterExternalDataSource(x => x.FieldType, fieldTypes);

            return(result);
        }
예제 #2
0
        public override async Task <ListFieldModel> GetActiveFields(LookupModel request, ServerCallContext context)
        {
            var res = await _client.GetGrain <IFieldsMaintanceGrain>(Guid.NewGuid()).GetActiveFields();

            var list = new ListFieldModel();

            list.FieldList.AddRange(res.Select(z => z.MapFieldDto()).ToList());
            return(await Task.FromResult(list));
        }
예제 #3
0
        public ActionResult Update(ListFieldModel model)
        {
            if (!CheckPermission(ListsPermissions.ManageLists))
            {
                return(new HttpUnauthorizedResult());
            }

            var record = model.Id != 0 ? listFieldService.GetById(model.Id) : new ListField();

            record.Title    = model.Title.Trim();
            record.Name     = model.Name.Trim();
            record.ListId   = model.ListId;
            record.Position = model.Position;
            record.Required = model.Required;

            // Validate unique name
            if (model.Id == 0)
            {
                var name = Regex.Replace(record.Name, "[^0-9a-zA-Z]+", "");
                if (!model.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase))
                {
                    return(new AjaxResult().Alert(T("The field name contains invalid characters, please make sure field name can have only a-z and 0-9 characters.")));
                }

                var otherField = listFieldService.GetRecord(x => x.ListId == record.ListId && x.Name == record.Name);
                if (otherField != null || record.Name.Equals("Title", StringComparison.InvariantCultureIgnoreCase))
                {
                    return(new AjaxResult().Alert(T("Have other field with same name, please make sure unique name for field.")));
                }
            }

            var fieldType = Type.GetType(model.FieldType);
            var fields    = WorkContext.Resolve <IEnumerable <IListField> >();
            var field     = fields.First(x => x.GetType() == fieldType);

            TryUpdateModel(field, fieldType);

            var settings = new SharpSerializerXmlSettings
            {
                IncludeAssemblyVersionInTypeName = false,
                IncludeCultureInTypeName         = false,
                IncludePublicKeyTokenInTypeName  = false
            };

            var sharpSerializer = new SharpSerializer(settings);

            record.FieldProperties = sharpSerializer.Serialize(field);
            record.FieldType       = field.FieldType;

            listFieldService.Save(record);

            return(new AjaxResult().NotifyMessage("UPDATE_ENTITY_COMPLETE").CloseModalDialog());
        }
예제 #4
0
 public Task UpdateListField(ListFieldModel listField)
 {
     throw new System.NotImplementedException();
 }