예제 #1
0
        public IEnumerable<dynamic> GetFields(int appId, string staticName)
        {
            SetAppIdAndUser(appId);

            var fields =
                CurrentContext.ContentType.GetContentTypeConfiguration(staticName)
                    .OrderBy(ct => ((AttributeBase)ct.Item1).SortOrder);

            var appDef = new BetaFullApi(null, appId, CurrentContext);
            var appInputTypes = appDef.GetInputTypes(true).ToList();
            var noTitleCount = 0;
            string fldName = "";

            // assemble a list of all input-types (like "string-default", "string-wysiwyg..."
            Dictionary<string, IEntity> inputTypesDic;
            try
            {
                inputTypesDic =
                    appInputTypes.ToDictionary(
                        a => (fldName = a.GetBestValue("EntityTitle")?.ToString() ?? "error-no-title" + noTitleCount++),
                        a => a);
            }
            catch (Exception ex)
            {
                throw new Exception("Error on " + fldName + "; note: noTitleCount " + noTitleCount, ex);
            }

            var ser = new Serializer();
            return fields.Select(a =>
            {
                var inputtype = findInputType(a.Item2);
                return new
                {
                    Id = a.Item1.AttributeId,
                    ((AttributeBase)a.Item1).SortOrder,
                    a.Item1.Type,
                    InputType = inputtype,
                    StaticName = a.Item1.Name,
                    a.Item1.IsTitle,
                    a.Item1.AttributeId,
                    Metadata = a.Item2.ToDictionary(e => e.Key, e => ser.Prepare(e.Value)),
                    InputTypeConfig =
                        inputTypesDic.ContainsKey(inputtype) ? ser.Prepare(inputTypesDic[inputtype]) : null
                };
            });
        }
예제 #2
0
        public IEnumerable<Dictionary<string, object>> GetAllOfTypeForAdmin(int appId, string contentType)
        {
            SetAppIdAndUser(appId);
            Serializer.ConfigureForAdminUse();

            var api = new BetaFullApi(null, appId, CurrentContext);
            var list = Serializer.Prepare(api.GetEntitiesOfType(contentType));

            var newList = list.Select(li => li.ToDictionary(x1 => x1.Key, x2 => TruncateIfString(x2.Value, 50))).ToList();

            return newList;
        }
예제 #3
0
        public IEnumerable<Dictionary<string, object>> InputTypes(int appId)
        {
            SetAppIdAndUser(appId);
            var appDef = new BetaFullApi(null, appId, CurrentContext);
            var appInputTypes = appDef.GetInputTypes(true).ToList();

            return Serializer.Prepare(appInputTypes);
        }