예제 #1
0
        public void OnDefault(SynkContext context)
        {
            var entityClass = context.request.GetVariable("entity");
            var term        = context.request.GetVariable("term");
            var required    = context.request.GetVariable("required").Equals("true");

            List <Entity> entities = context.currentModule.Search(context, entityClass, term);

            var result = DataNode.CreateArray();

            if (!required)
            {
                var item = DataNode.CreateObject();
                item.AddField("value", "0");
                item.AddField("label", context.Translate("system_none"));
                result.AddNode(item);
            }

            if (entities != null)
            {
                foreach (var entity in entities)
                {
                    var item = DataNode.CreateObject();
                    item.AddField("value", entity.id.ToString());
                    item.AddField("label", entity.ToString());
                    result.AddNode(item);
                }
            }

            var json = JSONWriter.WriteToString(result);

            context.Echo(json);
        }
예제 #2
0
파일: API.cs 프로젝트: hedger/LunarServer
        private void APIResult(SynkContext context, DataNode content, bool error)
        {
            var result = DataNode.CreateObject();

            result.AddField("result", error ? "error" : "ok");
            result.AddNode(content);

            var json = JSONWriter.WriteToString(result);

            context.Echo(json);
        }
예제 #3
0
        public virtual void OnValidate(SynkContext context)
        {
            long id;

            long.TryParse(context.request.GetVariable("entity"), out id);

            var entity = context.database.FetchEntityByID(_entityClass, id);

            var obj = DataNode.CreateObject();

            foreach (var field in entity.fields)
            {
                if (context.request.HasVariable(field.name))
                {
                    var newValue = context.request.GetVariable(field.name);

                    var currentValue = entity.GetFieldValue(field);
                    var defaultValue = field.GetDefaultValue(context);

                    string error = null;

                    if (field.validator != null)
                    {
                        if (field.required || !string.IsNullOrEmpty(newValue))
                        {
                            entity.SetFieldValue(field, newValue);
                            error = field.validator(context, entity, field);
                            entity.SetFieldValue(field, currentValue);
                        }
                    }
                    else
                    if (field.required && (string.IsNullOrEmpty(newValue) || (newValue.Equals("0") && (field.entity != null || field.formType.Equals("file")))))
                    {
                        error = context.Translate("system_field_required");
                    }

                    if (error != null)
                    {
                        var result = DataNode.CreateObject(field.name);
                        result.AddField("label", entity.translateField(context, field));
                        result.AddField("error", error);
                        obj.AddNode(result);
                    }
                }
            }

            var json = JSONWriter.WriteToString(obj);

            context.Echo(json);
        }
예제 #4
0
        public void OnUpload(SynkContext context)
        {
            foreach (var upload in context.request.uploads)
            {
                var entity = context.UploadFile(upload.fileName, upload.bytes);

                var result = DataNode.CreateObject();
                result.AddField("id", entity.id.ToString());
                result.AddField("name", upload.fileName);
                result.AddField("hash", entity.GetFieldValue("hash"));

                var json = JSONWriter.WriteToString(result);
                context.Echo(json);
                break;
            }
        }